問題タブ [ecdhe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP CURL で ECDHE 暗号を使用するには?
以前nmap
はスキャンしていましたが、結果は次のとおりです。
の出力から、ECDHE のみをサポートしているように見えますがopenssl_get_cipher_methods()
、ECDHE 暗号はありません! 私の質問は、PHP CURL クライアントを使用してリモート サーバーに接続するにはどうすればよいですか?
これは、メッセージとともにfalseが返される私のサンプル PHP コードです。
「リスト内の不明な暗号: ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256: ECDHE-RSA-AES128-SHA"、curl エラー番号コードは59 (指定された暗号を使用できませんでした。)
PHP 5.3.29、openssl 1.0.1e-fips 2013 年 2 月 11 日を使用しています
c# - ECDiffieHellmanCng を使用して鍵を交換する
ECDHE アルゴリズムを使用してクライアントとサーバー間で鍵を交換し、両方がメッセージを暗号化するための共通の秘密鍵を導出できるようにする予定です。
私が読んだことに基づいて、ECDHEアルゴリズムを使用するには、両方の当事者(クライアントとサーバー)が最初に「共通の」値(p、g)のペアに同意する必要があります。次に、各当事者は秘密鍵を使用して共有鍵を生成します。つまり、クライアントは秘密鍵 (P1) を使用して共有鍵 (S1) を生成し、サーバーは秘密鍵 (P2) を使用して共有鍵 (S2) を生成します。https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange#説明]
ここでの共通値は、共通ペイントを指します。これらは実際には、共有キーを生成するために両当事者が使用する mod 値 (p) と base 値 (g) です。
次に、両当事者が共有鍵 (S1 および S2) を交換し、それを独自の秘密鍵 (P1 または P2) と共に使用して、共通の秘密 (K) を導出します。
ECDiffieHellmanCng を使用してキーを生成するサンプルを見ると、これらの「共通の」値を指定するオプションがどこにもありません。私たちの場合、クライアントとサーバーの両方が p と g に同意し、それらの値を「ECDiffieHellmanCng」で使用して共通の共有キーを生成することを期待していました。
Alice と Bob が ECDiffieHellmanCng の新しいインスタンスを作成しているように見えますが、どちらも同じ共通の値 (p と g) を内部的に使用していますか?
ssl - openssl 1.0.2j、サーバーに強制的に ECDH* 暗号を選択させる方法
opensl 1.0.2j を使用し、RSA:4096 キーと証明書を使用するクライアント サーバーがあり、サーバーが次の暗号のみを使用するように強制したいと考えています。
私のサーバー側のコードは以下のようになります。
クライアント側のコードは次のようになります
サーバー上の最後のステップ ssl_accept() は失敗します
クライアント側でECDHE*RSA*
or ciphers を使用すると、正常に動作します。DHE*RSA*
不足しているものを教えてください。
編集:サーバーの証明書(certFilePath)には、ECDH公開鍵ではなくRSA公開鍵が含まれています。
java - OpenSSL とサポートされているグループ (楕円曲線) を使用した Netty tcnative
JRE8、netty 4.1.x、および netty-tcnative 2.0.36 を使用するサーバーがあります。デフォルトSslProvider.OPENSSL
では設定されています。
サーバーは、TLS 1.2 および TLS_ECDHE_RSA* 暗号スイートで構成されています。
SSL ハンドシェイク中の ECDHE 一時キー交換に使用される楕円曲線 (supported_groups 拡張子) を制限 (ホワイトリスト) できるようにする必要があります。ただし、 ではSslProvider.OPENSSL
、サーバーはシステム プロパティを尊重していないようです-Djdk.tls.namedGroups
。代わりに、サーバーは一時的な鍵交換に常に P-256 を使用します。
に切り替えるとSslProvider.JDK
、上記のシステム プロパティ ( -Djdk.tls.namedGroups
) は ECDHE の一時キー交換中に反映されます。ただし、JDK プロバイダーを使用するように本番アプリケーションを切り替えることはできません。
私はhttps://github.com/netty/netty-tcnative/issues/567に出くわしました - これに基づいて、 supported_groups 拡張機能を制限するサポートはないと思います。しかし、代替アプローチがあるかどうかはわかりません。
私のクエリ:
SslProvider.OPENSSL
netty-tcnative で使用する場合、鍵交換に使用する楕円曲線 (サポートされるグループ/名前付きグループ) を制限できますか?- はいの場合、同じように構成する方法は?