4

デスクトップ アプリケーションとモバイル デバイスの間で小さなバイナリ メッセージ (長さ 1 または 2 KB) を転送するタスクがあります。メッセージは非対称に暗号化する必要があります (RSA など)。私が学んだことから、この種のタスクにはハイブリッド暗号システムを使用する必要があります。

  1. ランダムな対称鍵を生成
  2. プレーンテキストを対称鍵で暗号化 (たとえば AES を使用)
  3. 対称鍵を公開鍵で暗号化する
  4. 暗号文と暗号化された対称鍵を送信する

暗号文と暗号化された対称鍵を格納するための独自の形式を発明したくありません。そこで、CMS 標準 (暗号化メッセージ構文) に出くわしました。一見すると、私が必要としているものとまったく同じように見えます。標準を正しく理解していれば、暗号文と暗号化された対称鍵、および使用されているアルゴリズムに関する情報が埋め込まれています。

概説されたタスクに CMS 標準を使用する必要があるかどうか、誰にも言えませんか? OpenSSL の CMS サポートは私のニーズに十分ですか?

乾杯、クリスチャン

4

1 に答える 1

6

CMS は、お探しの操作シーケンスを確実にサポートします。欠点としては、CMS 形式自体とそのための OpenSSL API の両方がかなり複雑です。

マイナーな問題の 1 つは、CMS が主に公開鍵ではなく X.509 証明書に関して動作することです。システムでこれに対処するには、実際に PKI を展開するか、自己署名証明書を使用するだけです (これは、基本的に裸の RSA キーを渡すのと同じですが、キーとメタデータをバインドするための汎用形式であるという利点があります)。とにかく持っていると非常に便利な場合があります)。

OpenSSL には、CMS API のドキュメントがほとんどありません。私が見つけた最良のリファレンスは、OpenSSL ソース配布の apps/ ディレクトリにある cms.c です。コードは 1000 行のメイン関数として構成されているため、少し気になりますが、公開鍵を使用して暗号化を実行するため、おそらくガイドとして使用できます。

于 2009-10-15T04:25:53.767 に答える