まったく同じ質問への回答が必要です...
128ビットの鍵で物事を暗号化するのにこれほど苦労した後、頭字語の判読不能な混乱の中を歩き回り、私のクレジットカードの残高と同じくらい大きな素数を使用するなど、ばかげているようです...秘密鍵をすべてのクライアント マシンにエクスポートし、証明書ファイルの (安全でない可能性がある) パスワードによってのみ保護します。バカバカしく。無意味。
覚えておくべきことの 1 つは、サーバーとクライアントの両方がメッセージを復号化する必要があり、復号化には明らかに秘密鍵が必要であることです。
したがって、サーバーの秘密鍵をすべての人に配布するのを避けるために私が見ることができる唯一の方法は、サーバー用とクライアント用の2つの無関係な証明書を用意することです。
メッセージがクライアントからサーバーに送信されるとき、クライアントはサーバーの公開鍵のみを使用して暗号化します。次に、サーバーは秘密鍵を使用して復号化します。
メッセージがサーバーからクライアントに送信される (または返信に似ている) 場合、サーバーはクライアントの公開鍵を使用して暗号化し、クライアントは独自の秘密鍵を使用して復号化します。出来上がり?
少なくとも、サーバーの秘密鍵がサーバーの外部に公開されることはありません。ただし、クライアントの秘密鍵は引き続きどこにでも出荷されます。
要約すると、さまざまな満足度で処理される 4 つのシナリオに要約されると思います。
1) クライアントからサーバーに送信されるメッセージ- サーバーの公開鍵を使用して暗号化されたメッセージ。サーバー証明書がクライアントで利用可能である必要があります。サーバーの秘密鍵が存在する必要はありません。サーバーの公開鍵に簡単にアクセスできるため、不正なクライアントがメッセージを暗号化してサーバーに送信するのは比較的簡単です。
2) サーバーで受信したメッセージ- メッセージはサーバーの秘密鍵を使用して復号化されます。この秘密鍵はサーバー上にのみ存在するため、非常に安全です (物理的なセキュリティ?)。秘密鍵を含むサーバー証明書は、公開 FTP フォルダーにコピーを配置するか、リモート アクセスを有効にするか、何か馬鹿なことをしない限り、他のユーザーがアクセスできないようにする必要があります。誰かがサーバー証明書を取得したとしても、あなたの素晴らしいパスワードを推測する必要がありますか? 余談ですが、パスワードで保護された証明書ファイルが「クラック」される可能性があるとは思いもしません。
3) サーバーからクライアントに送信される応答- メッセージはクライアントの公開鍵を使用して暗号化されます。したがって、サーバーにはクライアント証明書が必要です (秘密鍵は必要ありません)。クライアントの公開鍵は再びどこでも簡単に利用できるため、クライアントからサーバーへの元のメッセージを傍受し、その内容を無視して (サーバーの秘密鍵なしでは暗号化を解除できないため)、何らかの暗号化された応答を送信するのは非常に簡単です。クライアントがそれをどのように解釈するかを確認するためだけに、クライアントに戻ります。楽しい。
4) クライアントが受信したサーバーからの応答- クライアントの秘密鍵を使用して復号化されたメッセージ。この秘密鍵はすべてのクライアント マシンの証明書ファイルにあり、パスワードでのみ保護されているため、比較的安全ではありません。
もちろん、セキュリティについてあまり心配していない場合は、サーバー証明書をどこにでも(サーバーの秘密鍵を含めて)出荷し、それをサーバー証明書とクライアント証明書の両方として使用するという別のオプションがあります。多くの人がそうしていると確信しています。
明確な説明が見つからないため、この回答にはかなりの推測とドット結合が含まれています。私が近づいたかどうかを知りたいです。
================================================== ===============================
更新: そこに着く - http://msdn.microsoft.com/en-us/library/ms733102.aspx