どのルートを取るべきか、長所と短所は何ですか、より安全です。
AESキーを生成し、それでデータを暗号化してから、RSAでAESキーを暗号化し、暗号化されたデータと暗号化されたAESキーをファイルに保存し、RSAキーペアをKeyContainerに保存します。
または、DPAPI ProtectedDataクラスを使用してデータを暗号化し、ファイルに保存してから、ProtectedData.Protect()で使用したエントロピーをどこかに格納します。(RSAで暗号化したり、RSAキーペアをKeyContainerに格納したり、データを含むファイルへの暗号化されたエントロピー?)
アルゴリズムを自分で選択すると、おそらくより強力な暗号化が得られる可能性がありますが(3DESを使用するためにDPAPIが使用されていますが、それでも7の場合は不明です)、暗号化システムの最も弱い部分はほとんど常に鍵管理になります。 (まともなアルゴリズムを使用しており、3DESでも完全に壊れていないと仮定します)。
DPAPIを使用すると、キーの管理についてまったく心配する必要がなくなります(そもそもDPAPIでキーを保護する以外は)。 @Thomasは詳細な応答でジャンプすることを確信していますが、通常、私の答えはDPAPIで行くことです。
AES、それともDPAPI?それはあなたのアーキテクチャに依存します。
たとえば、ステートレスで販売可能な、負荷分散されたWebサイトが必要な場合は、Cookie /セッションの暗号化にDPAPIを使用しないでください。その場合、ユースケースに応じて、ユーザーセッションを単一のホストに効果的に制限しています。
DPAPIとRSAに関しては、これに興味があるかもしれません MSDN記事 、 ホワイトペーパー そしてこれ DPAPIの秘密鍵に関する質問