web-dev-qa-db-ja.com

暗号スイートと証明書キー間のリンク

SSL/TLSプロトコルを理解しようとしていますが、特定の点で迷っています。

公開サーバーキー(「EC 256ビット」または「RSA 2048ビット」など)と暗号スイートの間のリンクは何ですか?

この投稿は答えを出します: SSL証明書と暗号スイートの対応 しかし、 https://www.wikipedia.org の暗号スイートを分析しようとすると、何か非論理的なことがあります私。 wikipedia.orgにはEC 256ビットの鍵があり、TLS_RSA_WITH_AES_128_CBC_SHAは承認された暗号スイートです。この投稿によると SSL証明書と暗号スイートの対応 (私が正しく理解していれば)それは不可能であるべきです。

"TLS_RSA_ *暗号スイートの場合、キー交換では、クライアントが選択したランダム値の暗号化をサーバーのRSA公開鍵で使用するため、サーバーの公開鍵のタイプはRSAであり、暗号化に適している必要があります(サーバーの証明書には、 「署名のみ」というキー使用法の拡張機能。」

では、なぜウィキペディアでTLS_RSA_WITH_AES_128_CBC_SHAを使用できるのでしょうか。

3
Secu Noob

wikipedia.orgにはEC 256ビットの鍵があり、TLS_RSA_WITH_AES_128_CBC_SHAは承認された暗号スイートです。この投稿によると、SSL証明書と暗号スイートの対応(正しく理解していれば)は不可能です。

実際、wikipedia.orgにはECDSAとRSAの両方の証明書があり、クライアントが提供する暗号に応じてこれらを使用します。クライアントがECDSA暗号をサポートする場合、EC256証明書を取得します。

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'ECDSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: id-ecPublicKey
            Public-Key: (256 bit)

代わりに、RSA認証で暗号を適用している場合は、RSA 2048キーを使用する別の証明書を取得します。

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'RSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)

ECDSAは同じセキュリティでより優れたパフォーマンスを提供しますが、すべてのクライアントがまだECDSAをサポートしているわけではないため、このようなセットアップは珍しくありません。デュアル証明書を使用したセットアップは、すべてのWebサーバーでサポートされているわけではありませんが、 nginxApache などの広く使用されているサーバーでサポートされています。

2
Steffen Ullrich

TLS_RSA_WITH_AES_128_CBC_SHA ciphersuiteは、認証と鍵交換の両方にRSAを使用します。キーの長さは指定されていませんが、現在の標準は2048ビットのRSAキーなので、この場合に使用される可能性が高いです。

他の暗号スイートについては、鍵交換アルゴリズムと認証アルゴリズムを区別するコンポーネントが表示される場合があります。 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256はこの例です。この場合、ECDHE(楕円曲線差分ヘルマンエフェメラル)は鍵交換アルゴリズムですが、証明書の鍵は楕円曲線デジタル署名アルゴリズム用です。

したがって、TLSセッションに使用されている暗号スイートがTLS_RSA_WITH_AES_128_CBC_SHA、これはECDSA証明書ではなく、RSA証明書用でした。その場合は、別の暗号スイートを使用する必要がありました。

2
Xander

コメントが長すぎるので、ここに投稿してください。

私はこれをやっただけなので、あなたが何を言っているのかわかりません:

$ openssl s_client -connect www.wikipedia.org:443

---                                                                                                                        │ SSL handshake has read 3278 bytes and written 441 bytes             

│[12]で:(1072759 + 626961)* 8

---│New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
│Out[12]:13597760サーバーの公開鍵は256ビットです
│安全な再交渉ISサポート
│[13]の場合:marathon_testからの圧縮:なし
│marathon_test展開:なし
│ALPN交渉なし
│[13]内:SSLセッション:

サーバーが互換性をさまざまなプロトコル(強調表示するRSAなど)にアドバタイズする可能性があることに注意してください。合意されたプロトコルは、クライアントとサーバーの両方がサポートするいくつかのプロトコルの1つです。

1
sandyp