.NET の SslStream は常に、私が持っている最も安全性の低い暗号にネゴシエートします。これを変更するにはどうすればよいですか?
-
01-07-2019 - |
質問
SslStream は、暗号タイプ、キーの長さ、ハッシュ アルゴリズムなどをネゴシエートすることになっています。ピア SSL スタックと接続します。コードで使用すると、ネゴシエーションが常にデフォルトで RC4 および MD5 になることがわかります。セキュリティを強化するために 3DES または AES を使用したいと考えています。
Web を見回しても、この問題に関する言及がいくつか見つかるだけで、解決策は見つかりません。ある投稿者は、2 つのスタック間の最小公倍数が安全でありながら、より高速で CPU リソースの使用量が少ないという追加の利点があるため、これは実際に理にかなっていると主張しています。これは技術的には正しいかもしれませんが、複雑さとコストの間の私の特別なトレードオフは別の場所にあります (私は長いキーで AES を使用することを好みます)。
誰かが助けてくれれば幸いです。
解決
簡単なレジストリ変更を行うことで、選択可能なプロトコルを選択できます。たとえば、RC4 を選択する機能を削除します。クライアントとサーバーは共通にサポートされるアルゴリズムを見つけるためにネゴシエートするため、接続の一方の端 (サーバーなど) でのみ変更を行う必要があります。
http://msdn.microsoft.com/en-us/library/ms925716.aspx
ジェームズのご多幸をお祈り申し上げます
他のヒント
SSLStream は、オペレーティング システムに付属の Schannel を使用します。スイートは、Microsoft Schannel プロバイダーによって選択されたデフォルトの順序でリストされます。
Windows Vista:
AES_128 CBC SHA を使用した RSA
AES_256 CBC SHA を使用した RSA
RSA と RC4_128 SHA...
Windows XP:
RC4 128 MD5 付き RSA
RSA と RC4 128 SHARSA と 3DES CBC SHA
....
暗号スイートのリストを変更するには、 SSL暗号スイートの順序 Microsoft 管理コンソールのグループ ポリシー オブジェクト スナップインを使用したグループ ポリシー設定 (Windows Vista)
しかし、問題は Windows XP です。 AESは含まれていません SSLStream で使用できる暗号のリストにあります。ただし、Windows XP ではレジストリ設定を変更することができます。HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy 1 を取得するための 3DES 暗号。
両方のリストにある最も安全なアルゴリズムのセットを使用する必要があります。SslStream が SChannel SSPI をラップしているため、そうでないとは信じがたいのですが、これが壊れると Internet Explorer、IIS、その他 Windows 上のすべてのものも壊れることになります。
SChannel.dll/Secur32.dll のバージョンが古い可能性があります。インストールされている OS と Internet Explorer のバージョンは何ですか?
可能です SCHANNEL でプロトコルを無効にする. 。これが行われていないことを確認していただけますか?
XP SP3 と IE7 をすべてアップデートして使用しています。レジストリはすべてが有効になっているように構成されているようです。
Java では、ニーズや好みに応じてさまざまなアルゴリズム/暗号を注文できます。.NET にも同様の API があるかもしれません...