web-dev-qa-db-ja.com

openssl暗号:Au = ECDHとはどういう意味ですか?

SSLのさまざまな段階を理解しようとしています。私は SSL/TLSのしくみ について、特に 認証メカニズム についてのいくつかの素晴らしい回答、および他の多数のソースを参照しました。

しかし、これについてはまだ混乱しています。ECDH-ECDSA-AES256-SHAなどの暗号に対して_Au=ECDH_は何を意味しますか。 cmd行から:

ECDH-ECDSA-AES256-SHA SSLv3 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA1

私が理解しているのは、サーバーの証明書にDH公開鍵が含まれることです(これは固定DHであるため)。証明書はCAによって署名されます。 DSS(aka DSA)キーがここで果たす役割は何ですか?証明書にDSS署名がありますか?

次に、認証はDSSなので、なぜ_Au=ECDH_と言うのですか?

EDIT:SSLの認証メカニズムについて具体的に読むための優れたリソースの提案がある場合は、よろしくお願いします。

2
sandyp

静的/固定ECDHまたは静的DHの場合、プレーンRSA(akRSA)のように、server proof-of-possessionは、keyexchangeが正しくFinishedを生成することにより暗黙的です。認証に使用される特定のアルゴリズムは実際には存在しないため、OpenSSLは、Au =アルゴリズムにKXアルゴリズムを使用してこれを明らかに示しています。注OpenSSLが実装した静的(非EC)DHはごく最近です。2015/ 01の1.0.2以降、Au = DHのケースは見られなかった可能性があります。

また、TLSv1.2では、ciphersuiteまたはCertReqメッセージ(使用されている場合)と一致するCA証明書のキータイプに対する以前の制限が削除され、代わりに新しいSignatureAlgorithms拡張がこれを制御することにも注意してください。以前のバージョンと比較した rfc5246 7.4.2 の表の後のテキスト、および 7.4.6 およびECCについては rfc4492への変更 を参照してください。

1

RFC4492セクション2.1 から取得

2.1。 ECDH_ECDSA

ECDH_ECDSAでは、サーバーの証明書にECDH対応の公開鍵が含まれ、ECDSAで署名されている必要があります。

ServerKeyExchangeを送信してはなりません(サーバーの証明書には、クライアントがプリマスターシークレットに到達するために必要なすべての必要なキー情報が含まれています)。

クライアントは、サーバーの長期公開鍵と同じ曲線でECDH鍵ペアを生成し、その公開鍵をClientKeyExchangeメッセージで送信します(クライアント認証アルゴリズムECDSA_fixed_ECDHまたはRSA_fixed_ECDHを使用する場合を除く)。この場合、セクション3.2またはセクション3.3からの変更適用)。

したがって、この場合、サーバーは、ECDSAで署名されたECDH対応の公開鍵を含むDSA証明書を提供します。したがって、最初の質問に答えるには、サーバーがECDSAで署名されている必要があります。鍵交換の認証(Au)は引き続きECDSAで検証されます。私は間違っている可能性がありますが、これはOpenSSLの解析のエラーにすぎないと思われます。

1
RoraΖ