私の調査では、このテーマに関するさまざまなメッセージを見つけたので、可変量のデータを暗号化するための最良のアプローチを説明する専門知識を探しています。
要件:
[編集:コメントに応じて要件#3を追加]
公開鍵/秘密鍵の暗号化スキームにRSAを使用したいので、データを暗号化する必要があるが、データを復号化する方法を知らないアプリケーションに公開鍵を配布できます。
16文字(クレジットカード番号)からキロバイト(シリアル化されたオブジェクト)以上のデータ長をサポートする必要があります。私が暗号化するデータのほとんどは小さいでしょう(クレジットカード、住所など)。
これは、保存データを暗号化するためのものです。
私が知っているオプション:
RSAのみ:
RSACryptoServiceProvider
公開鍵を使用してすべてのデータを暗号化するために使用します。キーサイズからパディングを差し引いたサイズよりも小さいブロックでデータを反復処理します。HYBRID:
AesCryptoServiceProvider
データの暗号化、呼び出し.GenerateKey()
、および.GenerateIV()
ランダムキーとIVの生成に使用します。次に、RSACryptoServiceProviderを使用して、上記のキーとIVを暗号化し、それをデータに追加または追加します。
私のハイブリッドアプローチは、私に両方の長所を与えてくれるようです。強力なブロック暗号(AES)と分散公開鍵(RSA)。
これらのアプローチの長所と短所は何ですか?標準は何ですか?驚いたことに、私はこの主題に関する多くの意見や情報を見つけていません。あなたが持っているかもしれない参考文献をいただければ幸いです。
ボーナス: 私は企業のライセンス制限を含むさまざまな理由で自分自身を転がしていますが、C#用の優れた標準のオープンソースアプローチがあるかどうか興味があります。