1

VB.Net RijndaelManaged(RM) を使用してファイルを暗号化し、 メソッドRM.GenerateKeyRM.GenerateIVメソッドを使用してキーと IV を生成し、CryptoStreamクラスを使用してファイルを暗号化しています。このキーと IV をファイルに保存することを計画しており、正しい方法で行っていることを確認したいと考えています。IV + キーを組み合わせて、RSA 公開キーで暗号化し、ファイルに書き出しています。次に、復号化するために、このファイルの RSA 秘密鍵を使用して IV+Key を取得し、分割して RM.Key と RM.IV をこれらの値に設定し、復号化プログラムを実行します。

これはこれを達成するための最良の方法ですか、それとも IV とキーを保存するための推奨される方法はありますか?

4

1 に答える 1

1

それが一般的な考え方です。ただし、IV を秘密にしておく必要はありません。「秘密鍵」だけが秘密です。

ファイル形式に S/MIME (またはその基礎となる暗号化メッセージ構文) などの標準を使用することを検討してください。Bouncycastle が S/MIME (または PGP) ライブラリを .NET に移植したのか、.NET に S/MIME サポートが組み込まれているかどうかはわかりませんが、お使いのプラットフォームで利用できる無料のライブラリがある可能性があります。このような広く使用されているオープン ソース ライブラリは、おそらく、あなたが自分でできるよりも綿密にテストおよび精査されており、暗号化の専門家によって設計されたプロトコルを実装しているため、見落とした落とし穴について考える必要はありません。

あなたが説明したモデルは、鍵交換のための S/MIME の「KeyTransRecipientInfo」メソッドに似ています。データを暗号化するために対称鍵が生成され、その鍵は各受信者の公開鍵で暗号化されます。暗号化されたキーと IV (この標準では暗号化されていません) は、CMS 構造で使用されるアルゴリズムに関する情報にバンドルされています。暗号化されたデータは、同じバンドルに含めることも、別のファイルに含めることもできます。

PGP には、本質的に同等のモードがあります。

于 2010-05-17T18:21:47.697 に答える