WCF を使用してクライアントとサーバー間のメッセージを暗号化する方法を探しています。WCF には、クライアントとサーバー間のトラフィックを暗号化するための組み込みのセキュリティ メカニズムが多数用意されていますが、私の要件に適合するものはないようです。
証明書は複雑すぎるので使いたくないので、証明書の使用を勧めないでください。機密性は必要ないので、プレーンな RSA を使用するのが最善です。
ハードコードされたキーなどは必要ありません。サーバーが起動するたびに公開鍵と秘密鍵のペアを生成することを考えていました。両方のキーは RAM にのみ保存されます。その後、クライアントが接続すると、SSL とまったく同じように動作するはずです。ここで説明したとおりです。
1.何らかの形式の秘密鍵と公開鍵のペアを交換します。サーバーはキー ペアを生成し、秘密キーをそれ自体に保持し、公開キーをクライアントと共有します (たとえば、WCF メッセージを介して)。
2.その秘密鍵と公開鍵のペアを使用して、メッセージを対称的に暗号化する「暗号化鍵」などの共通の共有秘密を交換します(対称であるため、サーバーは同じ鍵を使用してメッセージを復号化できます)
3. クライアントにインフラストラクチャをセットアップする (例: 動作と呼ばれる WCF 拡張機能)。メッセージが送信される前に検査し、共有シークレットで暗号化します。
それは安全ですよね?
私が説明したものをアーカイブする既存のソリューションはありますか? 無ければ自分で作ります。どこから始めればよいですか?どの種類の WCF カスタム動作を実装するのが最適ですか?
編集: これは安全ではないため、次のアプローチをとります。
サーバー コンポーネントをインストールすると、新しい X509 証明書が生成され、(サーバーの) 証明書ストアに自動的に追加されます。この生成された証明書の公開部分は、クライアントのセットアップに動的に含まれます。クライアント マシンでクライアント セットアップを実行すると、証明書はクライアントの trustet Windows 証明書ストアにインストールされます。
そのため、製品をインストールする際に余分な作業は必要なく、すべてが安全である必要があります。