Azureサポートケース#116120515025419によると、パブリックデータセンターは以下のみをサポートしています
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
私の目標は、Perfect Forward SecrecyでECCを使用することなので、これらが私の最良のオプションだと思います。
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
私が見つけることができる最も安いEV証明書はNamecheap/Comodoにあり、次の曲線をサポートしています。
prime256r1, secp256t1, secp384r1, secp521r1.
このガイド を使用して証明書を生成していますが、次のどれから選択するべきかわかりません
ECDSA_P256 Microsoft Software Key Storage Provider
ECDSA_secP256r1 Microsoft Key Storage provider
ECDSA_secP256k1 Microsoft Key Storage provider
ECDSA_nistP256, Microsoft Key Storage provider
ECDSA 256を必要とする根拠
P256証明書を使用するという私の選択により、開発者はGCMに加えてCBCを使用できるようになります。より長いビット長を選択することもできますが、より安全なECDSA CSPはCBCをサポートしません。 CBCをサポートすることは賢明ですか?
重要な場合は、私のターゲットクライアントはモバイルアプリ、ブラウザー、IoTデバイスです。
質問
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
のような暗号スイートには、2つの関係する曲線があります。
ServerKeyExchange
メッセージ。 ECDSAは、楕円曲線の計算を使用する署名アルゴリズムです。両方の曲線が同じである必要はありません。彼らはほとんど無関係で、異なる世界に住んでいます。概念的なレベルでは、ECDHEに使用されるものはより重要です。これは、ネットワークを介して交換されるデータの存続期間のセキュリティを確保する必要があるためです(つまり、データが10年後も重要である場合、曲線は依然として10年後に頑健になること);署名で使用されているのは今のところのみであり、明日壊れてもかまいません。
forward secrecy はすべての鍵交換、つまりECDHE部分に関するものであることに注意してください。これは同じ考えです。署名システムのセキュリティは今のところ重要です。したがって、TLS_ECDHE_RSA_*
暗号スイートを使用して、つまり証明書にRSAキーを使用して、ECCを使用した転送秘密を完全に実現できます。
通常、CSPの選択(技術的には「CNGキーストレージプロバイダー」)は、実際に保存される秘密キーのタイプに関するものです。つまり、証明書とECDSA(またはRSA)署名に対応しています。 ECDHEの曲線は、クライアントとサーバー間で独立して(*)選択され、秘密はRAM=のみに保持されます(したがって、決して保存されず、転送秘密のポイントです)。
そうは言っても、どこでもサポートされている1つの曲線はNISTの曲線P-256であり、「secp256r1」または「prime256r1」とも呼ばれます(別個の曲線である「secp256k1」と混同しないでください)。 NIST曲線P-384も、P-256ほどではないかもしれませんが、幅広いサポートをかなり共有しています。また、P-384は少し計算量が多い(約3倍)ことを意味します。これは、一部の制約された組み込みシステム(スマートフォンではない;は本当にが関係する場合を除いて、実際には重要ではありません)小さなシステム)。追加のポイントは、P-256は、技術的な改善に関しても、十分なセキュリティをすでに確保しているということです。私たちが知る限り、P-256 ECDHE鍵交換が故障した場合、それはasの使用によるものです。まだ神話的な 量子コンピューター 、そしてそのような獣がこれまでに構築された場合、それはほとんど同じくらい簡単にP-384を切り刻みます。その意味では、P-256の代わりにP-384を使用するセキュリティ上の利点はありません。
概要:相互運用性を最大にするには、P-256を使用します。クライアントおよびサーバーのSSL実装は、ECDHE部分に別の曲線を使用することを決定する場合があります。特定のガイダンスが適用されない限り、そのその他の曲線は通常P-256、または(関連する実装に応じて)Curve25519になります。これもセキュリティに最適です。
(*)主に。一部のOpenSSLバージョンはECDHE曲線サイズをECDSAで使用される曲線と一致させようとします。これは、特に将来の技術的改善に関して、異なるセキュリティ特性を持つ異なる操作に関連しているため、意味がない場合があります。
可能であれば、どれも。このページの最後の表を参照して、[安全な曲線]を選択します。 https://safecurves.cr.yp.to/index.html SSL Labs、ベストアドバイス: https:// github。 com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices
安全でない曲線:
完全に安全な曲線は次のとおりです:
私の推奨事項:
グループポリシー「Ecc Curve Order」にコピーして貼り付けます
Curve25519
この構成では、P曲線暗号は必要ありませんP = Nist; ECDHE/ECDSA = ECC! ECC曲線の順序グループポリシーで「curve25519」を決定できるようにします
完全転送秘密のみ:
グループポリシーにコピー/貼り付けSSL暗号スイートの順序:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
Wireshark:
Nist Pカーブを有効にして優先順位を付けた場合:sls.update.Microsoft.com.nsatc.netが提供されます:TLS_ECDHE_RSA_WITH_AES128_GCM_SHA256名前付きカーブ:secp256r1(0x0017)(安全でないNIST/NSAカーブ、安全でない)
fe2.update.Microsoft.com.nsatc.netはTLS_ECDHE_RSA_WITH_AES128_GCM_SHA384 secp256r1を提供しました(安全でないNIST/NSA曲線、安全でない)
X25519カーブのみ、有効:fe2.update.Microsoft.com.nsatc.netは、TLS_ECDHE_RSA_WITH_AES128_GCM_SHA384名前付きカーブを提供:x25519([〜#〜] safe [〜#〜])
Schannel = Windows Update、CryptoAPI、IIS(おそらく他の人))