0

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のエクスポートインポートキーオプションとは別に、舞台裏でより多くのことが起こっていることを意味します。

私の理解:

  1. myapp.exe.configRsaProtectedConfigurationProviderで暗号化し、キーコンテナ名myrsakeycontainerを指定し、公開キーと秘密キーをxmlファイルmyrsakeyfile.xmlにエクスポートします。

  2. 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によって使用されるアルゴリズムは何ですか?

4

1 に答える 1

1

暗号化された対称鍵は、対称鍵が暗号化した暗号化された構成情報とともにXMLに格納されます。

Reflectorを使用してコードを確認する場合、XMLノードをロードし、非対称RSA秘密鍵を使用して、XMLノード自体に格納されている対称鍵を復号化します。

この魔法を実際に行う関数は次のとおりです。

public virtual SymmetricAlgorithm GetDecryptionKey(EncryptedData cryptoData、string symmetricAlgorithmUri);

宣言タイプ:System.Security.Cryptography.Xml.EncryptedXmlアセンブリ:System.Security、Version = 2.0.0.0

周りのコードを参照してください

this.m_document.SelectNodes("//enc:EncryptedKey", nsmgr);

このブログ投稿には、実際の実践で非対称アルゴリズムと対称アルゴリズムを組み合わせる方法についての素晴らしい記事があります:http: //pages.infinit.net/ctech/20031101-0151.html

于 2012-12-12T23:44:41.493 に答える