このタスクには暗号メッセージ構文 (CMS) を使用する必要がありますか?
-
09-09-2019 - |
質問
デスクトップ アプリケーションとモバイル デバイス間で小さなバイナリ メッセージ (長さ 1 または 2 kb) を転送するというタスクがあります。メッセージは非対称的に暗号化される必要があります (RSA など)。私が学んだことから、この種のタスクにはハイブリッド暗号システムを使用する必要があります。
- ランダムな対称キーを生成する
- 対称キーを使用してプレーン テキストを暗号化します (たとえば、AES を使用)
- 対称キーを公開キーで暗号化する
- 暗号文と暗号化された対称鍵を送信する
暗号文と暗号化された対称キーを保存するための独自の形式を発明したくないのです。そこで私は CMS 標準 (暗号メッセージ構文) でつまづきました。一見すると、私が必要としているものとまったく同じように見えます。この標準を正しく理解していれば、暗号文と暗号化された対称キー、および使用されているアルゴリズムに関する情報が埋め込まれています。
概要を説明したタスクに CMS 標準を使用する必要があるかどうか、誰かが言えるでしょうか?OpenSSL の CMS サポートは私のニーズに十分ですか?
乾杯、クリスチャン
解決
CMSは間違いなくあなたが探している動作シーケンスをサポートしています。下がり気味で、CMSフォーマット自体やそのためのOpenSSL APIの両方はかなり複雑です。
一つのマイナーなしわは、CMSは、ほとんどがX.509証明書ではなく、公開鍵の面で動作しています。あなたは、あなたのシステムでこの問題に対処できたのいずれか基本的に周りの裸のRSA鍵を渡すことと同じですが、キーとメタデータを結合するための汎用的なフォーマットであるという利点を持っている自己署名証明書を(実際にPKIを展開、または単に使用することにより、これは)時々、とにかく持っていることは非常に便利です。
OpenSSLは、CMSのAPIのドキュメントがないの隣にあり、私は見つけることができるそれのための最高の基準は、OpenSSLのソース配布のアプリケーション/ディレクトリにcms.cです。コードは少し不安である1千行主な機能として構成、それはあなたがおそらくガイドとしてそれを使用できるように公開鍵で暗号化を実行している。