RSACryptoServiceProviderがKeySizeより大きいデータを暗号化できない場合、 RsaProtectedConfigurationProviderは.Netフレームワークにどのように実装されますか?
私はいくつかの機密情報を暗号化/復号化するために使用されるユーティリティに取り組んでいます。私の2つの暗号化プロバイダーオプションはDPAPIとRSAですが、DPAPIはWebファームのような環境には適していませんが、KeyContainerのエクスポート/インポートオプションがあるため、RSAは適しています。これは、ワークステーションで実行されるスタンドアロンアプリケーションです。
非対称アルゴリズムは大きなデータ用に設計されていないことを知っているので、以下のコードを使用して400Kを超える長さの文字列を暗号化しようとしましたが、うまく機能します。
if (!section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
間違いなく、これは、aspnet_regiis.exeのエクスポートインポートキーオプションとは別に、舞台裏でより多くのことが起こっていることを意味します。
私の理解:
myapp.exe.configをRsaProtectedConfigurationProviderで暗号化し、キーコンテナ名myrsakeycontainerを指定し、公開キーと秘密キーをxmlファイルmyrsakeyfile.xmlにエクスポートします。
myapp.exe.configを別のコンピューターで復号化する場合は、myrsakeycontainerという名前のコンテナーを使用してmyrsakeyfile.xmlからキーペアをインポートします。
これはうまく機能します。RSACryptoServiceProviderを使用して、プロジェクトで同じことを実現できます。new RSACryptoServiceProvider(cspParameters)
ただし、生成されたキーサイズよりも大きいデータを処理することはできませ
ん。
- RsaProtectedConfigurationProviderと同じように、(万が一の場合に備えて)巨大なデータを復号化できるようにしたいと考えて います。
- はい、実際の暗号化にはRijndaelManaged(私のお気に入り)を使用でき、対称鍵転送(エクスポート/インポート)にはRSACryptoServiceProviderを使用できます。これにより、対称鍵をエクスポート/インポートする場合は、最初に公開鍵またはRSAで暗号化し、別のマシンにインポートし、RSAの秘密鍵で復号化する必要があります。これは、暗号化された対称鍵と一緒にRSA鍵ペアをエクスポートします。
しかし、aspnet_regiis.exeを介してRsaProtectedConfigurationProviderによって使用されるRSAキーペアをエクスポートする と、xmlファイル内の公開/プライベートキーペアのみがエクスポートされ、他の情報(対称キー情報など)はエクスポートされないと思います。
では、RSAキーのペアだけで、 RsaProtectedConfigurationProviderは、別のコンピューターで暗号化された情報(私の場合は40万文字を超える巨大な文字)をどのように復号化できるのでしょうか。対称アルゴリズム(おそらく?!)を使用して情報を暗号化する場合、その対称鍵は復号化のために別のコンピューターにどのようにエクスポート/インポートされますか?RSAキーコンテナのその対称キー部分はaspnet_regiis.exeを介してエクスポートされますか、それとも対称キーはアルゴリズムに基づいて動的に考案されていますか?
キーがRSAキーペアで暗号化されているRijndaelを使用して、RSAキーペアとRijndael対称キーの両方を別のコンピューターにエクスポート/インポートすることができます。(私は過去にやったことがあります)
RsaProtectedConfigurationProvider内で何が使用されているのか知りたいです 。
何か理論はありますか?コンセプト?リンク?推奨事項?お願いします..
同様の質問-web.configencyrptionでRSAProtectedConfigurationProviderによって使用されるアルゴリズムは何ですか?