0

Webサービスに暗号化されたデータを送信するWinFormsクライアントがあります。 WinFormsクライアントは、Symmetric RijndaelManagedSessionKeyを作成し、また、「ハードコードされたRSA非対称公開鍵」を持ちます。対称キーの交換

私は本当にデータをパッケージ化しやすくするEncryptedXmlクラスを使用しています。

Webサービスには、「ハードコードされた」プライベートキーと公開キーの両方があり、SessionKeyを正常に復号化し、それを使用して送信している実際のデータを復号化できます。

これは、EncryptedDataクラスによって自動的に処理されます。

私が抱えている問題は、Webサービスの終了時に返信したいときに、送信されたSessionKeyを取得する方法がわからないということです。

Webサービス側で復号化する前に、暗号化されたセッションキーが表示されますが、XMLを復号化した後は消えてしまったため、返信用のセッションキーはありません。

私はこの暗号化されていない鍵をどのように入手できますか?

+0

「It's gone」よりも少し詳しい情報が必要です。コードスニペット? RSAキーをハードコードするのも良い習慣ではありません。なぜWindowsのキーストアから証明書を読んで、それらを暗号化/復号化に使うのでしょうか? –

+0

MSDNのコードとほぼ同じです:http://msdn.microsoft.com/en-us/library/ms229746.aspx Decrypt()メソッドでは、DecryptDocumentを呼び出した後で自分のデータを見ることができますが、送信者に返信できるように、SessionKey(Encrypt()メソッドで使用されていた)を取得しますか? – Tim

+0

あなたは単にSSLを使用していませんか? – CodesInChaos

答えて

0

セッションキーが表示されないのは、自動的に復号化されて使用されるためです。通常、これはXMLの一部とみなされます。あなたはそれを取得したい場合は、単に

encryptedxml.decryptencryptedkey

を使用して、あなたは大丈夫でなければなりません。それほど重要でないすべてのセキュリティ警告について、ここに表示されているコードは中間攻撃の人とパッディング・オラクル攻撃の程度が低いことの両方に対して脆弱であることに注意してください。それはほとんどの盗聴の試みにも役立ちます。

最後に、セッションキーを再使用することは、あまりにもセキュリティ上の悪い習慣とみなされます。あなたがそれを再使用する場合、少なくともIVを使用することを検討してください。各フォローアップメッセージのカウンタ。

関連する問題