3

デスクトップアプリケーションとモバイルデバイスの間に小さいバイナリメッセージ(1または2 kbの長さ)を転送する作業があります。メッセージは非対称に暗号化する必要があります(例:RSA)。 (例えばAESを使用して)対称鍵 このタスクに暗号メッセージ構文(CMS)を使用する必要がありますか?

  • 暗号化対称鍵とランダム対称鍵
  • 暗号化プレーンテキストを生成

    1. :私が学んだことから、1は、タスクのこの種のハイブリッド暗号システムを使用する必要があります
    2. 公開鍵は、暗号文と暗号化された対称鍵

    を送信し、私は、暗号文と暗号化された対称鍵を格納するために独自のフォーマットを発明したいと思います。だから私はCMS標準(暗号メッセージの構文)を見つけた。一見すると、私は必要なものとまったく同じように見えます。標準を正しく理解していれば、暗号文と暗号化された対称鍵と、使用されているアルゴリズムに関する情報が埋め込まれています。

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

    乾杯、キリスト教

  • 答えて

    4

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

    CMSはほとんどが公開鍵ではなくX.509証明書で動作します。実際にPKIを展開するか、または自己署名証明書を使用するだけで、システムでこれを処理できます(基本的なRSAキーを渡すのと基本的には同じですが、キーとメタデータをバインドする一般的な形式であるという利点がありますいずれにしても非常に便利な場合があります)。

    OpenSSLには、CMS APIのドキュメントがありません。 OpenSSLのソースディストリビューションのapps /ディレクトリにcms.cがあります。コードは1つの1000行のメイン関数として構成されていますが、これは少し混乱しますが、公開鍵を使用して暗号化を実行するので、おそらくそれをガイドとして使用できます。

    +0

    一方、私はOpenSSLを使ってCMSを実装しました。それはチャーミーのように働く。 –

    +0

    ここに 'openssl cms'の文書があります:http://www.openssl.org/docs/apps/cms.html。 BouncyCastleを使用したJavaのサンプルコード:http://security.stackexchange.com/questions/1453/whats-the-standard-way-to-encrypt-a-file-with-a-public-key-in-java –