[要約] RFC 8422は、Transport Layer Security (TLS) バージョン1.2およびそれ以前のための楕円曲線暗号 (ECC) サイファースイートに関するものです。この文書の目的は、インターネット通信のセキュリティを強化するために、ECCを使用したTLSの実装を標準化することにあります。ECCは、鍵交換、デジタル署名、および暗号化に利用され、効率的かつ強力なセキュリティを提供します。関連するRFCには、TLSの基本を定義するRFC 5246 (TLS 1.2) や、ECCの使用を拡張するRFC 4492などがあります。RFC 8422は、より安全なインターネット通信を実現するために、ECCを利用するTLSの実装を促進します。

Internet Engineering Task Force (IETF)                            Y. Nir
Request for Comments: 8422                                   Check Point
Obsoletes: 4492                                             S. Josefsson
Category: Standards Track                                         SJD AB
ISSN: 2070-1721                                      M. Pegourie-Gonnard
                                                                     ARM
                                                             August 2018
        

Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and Earlier

Elliptic Curve Cryptography(ECC)Cipher Suites for Transport Layer Security(TLS)バージョン1.2以前

Abstract

概要

This document describes key exchange algorithms based on Elliptic Curve Cryptography (ECC) for the Transport Layer Security (TLS) protocol. In particular, it specifies the use of Ephemeral Elliptic Curve Diffie-Hellman (ECDHE) key agreement in a TLS handshake and the use of the Elliptic Curve Digital Signature Algorithm (ECDSA) and Edwards-curve Digital Signature Algorithm (EdDSA) as authentication mechanisms.

このドキュメントでは、トランスポート層セキュリティ(TLS)プロトコル用の楕円曲線暗号(ECC)に基づく鍵交換アルゴリズムについて説明します。特に、TLSハンドシェイクでのエフェメラル楕円曲線Diffie-Hellman(ECDHE)鍵合意の使用、および認証メカニズムとしての楕円曲線デジタル署名アルゴリズム(ECDSA)とエドワーズ曲線デジタル署名アルゴリズム(EdDSA)の使用を指定しています。

This document obsoletes RFC 4492.

このドキュメントはRFC 4492を廃止します。

Status of This Memo

本文書の状態

This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 7841のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8422.

このドキュメントの現在のステータス、エラータ、およびフィードバックの提供方法に関する情報は、https://www.rfc-editor.org/info/rfc8422で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2018 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

この文書は、BCP 78およびIETF文書に関するIETFトラストの法的規定(https://trustee.ietf.org/license-info)の対象であり、この文書の発行日に有効です。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents

目次

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   4
     1.1.  Conventions Used in This Document . . . . . . . . . . . .   4
   2.  Key Exchange Algorithm  . . . . . . . . . . . . . . . . . . .   4
     2.1.  ECDHE_ECDSA . . . . . . . . . . . . . . . . . . . . . . .   6
     2.2.  ECDHE_RSA . . . . . . . . . . . . . . . . . . . . . . . .   7
     2.3.  ECDH_anon . . . . . . . . . . . . . . . . . . . . . . . .   7
     2.4.  Algorithms in Certificate Chains  . . . . . . . . . . . .   7
   3.  Client Authentication . . . . . . . . . . . . . . . . . . . .   8
     3.1.  ECDSA_sign  . . . . . . . . . . . . . . . . . . . . . . .   8
   4.  TLS Extensions for ECC  . . . . . . . . . . . . . . . . . . .   9
   5.  Data Structures and Computations  . . . . . . . . . . . . . .  10
     5.1.  Client Hello Extensions . . . . . . . . . . . . . . . . .  10
       5.1.1.  Supported Elliptic Curves Extension . . . . . . . . .  11
       5.1.2.  Supported Point Formats Extension . . . . . . . . . .  13
       5.1.3.  The signature_algorithms Extension and EdDSA  . . . .  13
     5.2.  Server Hello Extension  . . . . . . . . . . . . . . . . .  14
     5.3.  Server Certificate  . . . . . . . . . . . . . . . . . . .  15
     5.4.  Server Key Exchange . . . . . . . . . . . . . . . . . . .  16
       5.4.1.  Uncompressed Point Format for NIST Curves . . . . . .  19
     5.5.  Certificate Request . . . . . . . . . . . . . . . . . . .  20
     5.6.  Client Certificate  . . . . . . . . . . . . . . . . . . .  21
     5.7.  Client Key Exchange . . . . . . . . . . . . . . . . . . .  22
     5.8.  Certificate Verify  . . . . . . . . . . . . . . . . . . .  23
     5.9.  Elliptic Curve Certificates . . . . . . . . . . . . . . .  24
     5.10. ECDH, ECDSA, and RSA Computations . . . . . . . . . . . .  24
     5.11. Public Key Validation . . . . . . . . . . . . . . . . . .  26
   6.  Cipher Suites . . . . . . . . . . . . . . . . . . . . . . . .  26
   7.  Implementation Status . . . . . . . . . . . . . . . . . . . .  27
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  27
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  28
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  29
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  29
     10.2.  Informative References . . . . . . . . . . . . . . . . .  31
   Appendix A.  Equivalent Curves (Informative)  . . . . . . . . . .  32
   Appendix B.  Differences from RFC 4492  . . . . . . . . . . . . .  33
   Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .  34
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  34
        
1. Introduction
1. はじめに

This document describes additions to TLS to support ECC that are applicable to TLS versions 1.0 [RFC2246], 1.1 [RFC4346], and 1.2 [RFC5246]. The use of ECC in TLS 1.3 is defined in [TLS1.3] and is explicitly out of scope for this document. In particular, this document defines:

このドキュメントでは、TLSバージョン1.0 [RFC2246]、1.1 [RFC4346]、および1.2 [RFC5246]に適用可能なECCをサポートするためのTLSへの追加について説明します。 TLS 1.3でのECCの使用は[TLS1.3]で定義されており、このドキュメントの範囲外であることは明白です。特に、このドキュメントでは次のことを定義しています。

o the use of the ECDHE key agreement scheme with ephemeral keys to establish the TLS premaster secret, and

o TLSプリマスターシークレットを確立するための一時鍵を含むECDHE鍵合意スキームの使用、および

o the use of ECDSA and EdDSA signatures for authentication of TLS peers.

o TLSピアの認証のためのECDSAおよびEdDSA署名の使用。

The remainder of this document is organized as follows. Section 2 provides an overview of ECC-based key exchange algorithms for TLS. Section 3 describes the use of ECC certificates for client authentication. TLS extensions that allow a client to negotiate the use of specific curves and point formats are presented in Section 4. Section 5 specifies various data structures needed for an ECC-based handshake, their encoding in TLS messages, and the processing of those messages. Section 6 defines ECC-based cipher suites and identifies a small subset of these as recommended for all implementations of this specification. Section 8 discusses security considerations. Section 9 describes IANA considerations for the name spaces created by this document's predecessor. Appendix B provides differences from [RFC4492], the document that this one replaces.

このドキュメントの残りの部分は、次のように構成されています。セクション2では、TLSのECCベースのキー交換アルゴリズムの概要を説明します。セクション3では、クライアント認証のためのECC証明書の使用について説明します。クライアントが特定の曲線とポイント形式の使用をネゴシエートできるようにするTLS拡張については、セクション4で説明します。セクション5では、ECCベースのハンドシェイクに必要なさまざまなデータ構造、TLSメッセージでのエンコード、およびそれらのメッセージの処理を指定します。セクション6では、ECCベースの暗号スイートを定義し、この仕様のすべての実装に推奨されるこれらの小さなサブセットを識別します。セクション8では、セキュリティの考慮事項について説明します。セクション9では、このドキュメントの前身によって作成された名前空間に関するIANAの考慮事項について説明します。付録Bは、これが置き換えるドキュメント[RFC4492]との違いを提供します。

Implementation of this specification requires familiarity with TLS, TLS extensions [RFC4366], and ECC.

この仕様の実装には、TLS、TLS拡張[RFC4366]、およびECCの知識が必要です。

1.1. Conventions Used in This Document
1.1. このドキュメントで使用される規則

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

キーワード「MUST」、「MUST NOT」、「REQUIRED」、「SHALL」、「SHALL NOT」、「SHOULD」、「SHOULD NOT」、「RECOMMENDED」、「NOT RECOMMENDED」、「MAY」、「OPTIONALこのドキュメントの「」は、BCP 14 [RFC2119] [RFC8174]で説明されているように解釈されます。

2. Key Exchange Algorithm
2. 鍵交換アルゴリズム

This document defines three new ECC-based key exchange algorithms for TLS. All of them use Ephemeral ECDH (ECDHE) to compute the TLS premaster secret, and they differ only in the mechanism (if any) used to authenticate them. The derivation of the TLS master secret from the premaster secret and the subsequent generation of bulk encryption/MAC keys and initialization vectors is independent of the key exchange algorithm and not impacted by the introduction of ECC.

このドキュメントでは、TLS用の3つの新しいECCベースのキー交換アルゴリズムを定義しています。それらはすべて、Ephemeral ECDH(ECDHE)を使用してTLSプレマスターシークレットを計算し、それらを認証するために使用されるメカニズム(存在する場合)のみが異なります。プリマスターシークレットからのTLSマスターシークレットの派生、およびその後のバルク暗号化/ MACキーと初期化ベクトルの生成は、キー交換アルゴリズムに依存せず、ECCの導入による影響を受けません。

Table 1 summarizes the new key exchange algorithms. All of these key exchange algorithms provide forward secrecy if and only if fresh ephemeral keys are generated and used, and also destroyed after use.

表1は、新しい鍵交換アルゴリズムの要約です。これらのすべての鍵交換アルゴリズムは、新しい一時鍵が生成されて使用され、使用後に破棄された場合にのみ、前方機密を提供します。

     +-------------+------------------------------------------------+
     | Algorithm   | Description                                    |
     +-------------+------------------------------------------------+
     | ECDHE_ECDSA | Ephemeral ECDH with ECDSA or EdDSA signatures. |
     | ECDHE_RSA   | Ephemeral ECDH with RSA signatures.            |
     | ECDH_anon   | Anonymous ephemeral ECDH, no signatures.       |
     +-------------+------------------------------------------------+
        

Table 1: ECC Key Exchange Algorithms

表1:ECC鍵交換アルゴリズム

These key exchanges are analogous to DHE_DSS, DHE_RSA, and DH_anon, respectively.

これらの鍵交換は、それぞれDHE_DSS、DHE_RSA、およびDH_anonに類似しています。

With ECDHE_RSA, a server can reuse its existing RSA certificate and easily comply with a constrained client's elliptic curve preferences (see Section 4). However, the computational cost incurred by a server is higher for ECDHE_RSA than for the traditional RSA key exchange, which does not provide forward secrecy.

ECDHE_RSAを使用すると、サーバーは既存のRSA証明書を再利用し、制約されたクライアントの楕円曲線の設定に簡単に準拠できます(セクション4を参照)。ただし、サーバーが負担する計算コストは​​、転送秘密を提供しない従来のRSA鍵交換よりもECDHE_RSAの方が高くなります。

The anonymous key exchange algorithm does not provide authentication of the server or the client. Like other anonymous TLS key exchanges, it is subject to man-in-the-middle attacks. Applications using TLS with this algorithm SHOULD provide authentication by other means.

匿名キー交換アルゴリズムは、サーバーまたはクライアントの認証を提供しません。他の匿名TLS鍵交換と同様に、中間者攻撃の対象になります。このアルゴリズムでTLSを使用するアプリケーションは、他の方法で認証を提供する必要があります(SHOULD)。

          Client                                        Server
          ------                                        ------
          ClientHello          -------->
                                                   ServerHello
                                                  Certificate*
                                            ServerKeyExchange*
                                          CertificateRequest*+
                               <--------       ServerHelloDone
          Certificate*+
          ClientKeyExchange
          CertificateVerify*+
          [ChangeCipherSpec]
          Finished             -------->
                                            [ChangeCipherSpec]
                               <--------              Finished
          Application Data     <------->      Application Data
        

* message is not sent under some conditions + message is not sent unless client authentication is desired

* 一部の条件ではメッセージは送信されません+クライアント認証が必要でない限りメッセージは送信されません

Figure 1: Message Flow in a Full TLS 1.2 Handshake

図1:完全なTLS 1.2ハンドシェイクでのメッセージフロー

Figure 1 shows all messages involved in the TLS key establishment protocol (aka full handshake). The addition of ECC has direct impact only on the ClientHello, the ServerHello, the server's Certificate message, the ServerKeyExchange, the ClientKeyExchange, the CertificateRequest, the client's Certificate message, and the CertificateVerify. Next, we describe the ECC key exchange algorithm in greater detail in terms of the content and processing of these messages. For ease of exposition, we defer discussion of client authentication and associated messages (identified with a '+' in Figure 1) until Section 3 and of the optional ECC-specific extensions (which impact the Hello messages) until Section 4.

図1は、TLSキー確立プロトコル(フルハンドシェイク)に関係するすべてのメッセージを示しています。 ECCの追加は、ClientHello、ServerHello、サーバーの証明書メッセージ、ServerKeyExchange、ClientKeyExchange、CertificateRequest、クライアントの証明書メッセージ、およびCertificateVerifyにのみ直接影響します。次に、これらのメッセージの内容と処理の観点から、ECC鍵交換アルゴリズムについて詳しく説明します。説明を簡単にするために、セクション3まではクライアント認証と関連メッセージ(図1で「+」で識別)の説明を、セクション4まではオプションのECC固有の拡張(Helloメッセージに影響を与える)の説明を延期します。

2.1. ECDHE_ECDSA
2.1. ECDHE_ECDSA

In ECDHE_ECDSA, the server's certificate MUST contain an ECDSA- or EdDSA-capable public key.

ECDHE_ECDSAでは、サーバーの証明書にECDSAまたはEdDSA対応の公開鍵が含まれている必要があります。

The server sends its ephemeral ECDH public key and a specification of the corresponding curve in the ServerKeyExchange message. These parameters MUST be signed with ECDSA or EdDSA using the private key corresponding to the public key in the server's Certificate.

サーバーは、短命ECDH公開鍵と、ServerKeyExchangeメッセージ内の対応する曲線の仕様を送信します。これらのパラメーターは、サーバーの証明書の公開鍵に対応する秘密鍵を使用して、ECDSAまたはEdDSAで署名する必要があります。

The client generates an ECDH key pair on the same curve as the server's ephemeral ECDH key and sends its public key in the ClientKeyExchange message.

クライアントは、サーバーの一時的なECDHキーと同じ曲線でECDHキーペアを生成し、その公開キーをClientKeyExchangeメッセージで送信します。

Both client and server perform an ECDH operation (see Section 5.10) and use the resultant shared secret as the premaster secret.

クライアントとサーバーの両方がECDH操作(セクション5.10を参照)を実行し、結果の共有シークレットをプリマスターシークレットとして使用します。

2.2. ECDHE_RSA
2.2. ECDHE_RSA

This key exchange algorithm is the same as ECDHE_ECDSA except that the server's certificate MUST contain an RSA public key authorized for signing and the signature in the ServerKeyExchange message must be computed with the corresponding RSA private key.

この鍵交換アルゴリズムはECDHE_ECDSAと同じですが、サーバーの証明書には署名が許可されたRSA公開鍵が含まれている必要があり、ServerKeyExchangeメッセージの署名は対応するRSA秘密鍵で計算する必要があります。

2.3. ECDH_anon
2.3. ECDH_anon

NOTE: Despite the name beginning with "ECDH_" (no E), the key used in ECDH_anon is ephemeral just like the key in ECDHE_RSA and ECDHE_ECDSA. The naming follows the example of DH_anon, where the key is also ephemeral but the name does not reflect it.

注: "ECDH_"(Eなし)で始まる名前にもかかわらず、ECDH_anonで使用されるキーは、ECDHE_RSAおよびECDHE_ECDSAのキーと同様に一時的なものです。名前はDH_anonの例に従っています。キーも一時的なものですが、名前はそれを反映していません。

In ECDH_anon, the server's Certificate, the CertificateRequest, the client's Certificate, and the CertificateVerify messages MUST NOT be sent.

ECDH_anonでは、サーバーの証明書、CertificateRequest、クライアントの証明書、およびCertificateVerifyメッセージを送信してはなりません(MUST NOT)。

The server MUST send an ephemeral ECDH public key and a specification of the corresponding curve in the ServerKeyExchange message. These parameters MUST NOT be signed.

サーバーは、短命ECDH公開鍵と、ServerKeyExchangeメッセージ内の対応する曲線の仕様を送信する必要があります。これらのパラメータは署名してはいけません。

The client generates an ECDH key pair on the same curve as the server's ephemeral ECDH key and sends its public key in the ClientKeyExchange message.

クライアントは、サーバーの一時的なECDHキーと同じ曲線でECDHキーペアを生成し、その公開キーをClientKeyExchangeメッセージで送信します。

Both client and server perform an ECDH operation and use the resultant shared secret as the premaster secret. All ECDH calculations are performed as specified in Section 5.10.

クライアントとサーバーの両方がECDH操作を実行し、結果の共有シークレットをプリマスターシークレットとして使用します。すべてのECDH計算は、セクション5.10で指定されているように実行されます。

2.4. Algorithms in Certificate Chains
2.4. 証明書チェーンのアルゴリズム

This specification does not impose restrictions on signature schemes used anywhere in the certificate chain. The previous version of this document required the signatures to match, but this restriction, originating in previous TLS versions, is lifted here as it had been in RFC 5246.

この仕様は、証明書チェーンのどこかで使用される署名方式に制限を課しません。このドキュメントの以前のバージョンでは、署名を一致させる必要がありましたが、以前のTLSバージョンで発生していたこの制限は、RFC 5246にあったため、ここで解除されます。

3. Client Authentication
3. クライアント認証

This document defines a client authentication mechanism named after the type of client certificate involved: ECDSA_sign. The ECDSA_sign mechanism is usable with any of the non-anonymous ECC key exchange algorithms described in Section 2 as well as other non-anonymous (non-ECC) key exchange algorithms defined in TLS.

このドキュメントでは、関係するクライアント証明書のタイプにちなんで名付けられたクライアント認証メカニズムを定義します:ECDSA_sign。 ECDSA_signメカニズムは、セクション2で説明する非匿名のECC鍵交換アルゴリズム、およびTLSで定義されている他の非匿名(非ECC)鍵交換アルゴリズムで使用できます。

Note that client certificates with EdDSA public keys also use this mechanism.

EdDSA公開鍵を持つクライアント証明書もこのメカニズムを使用することに注意してください。

The server can request ECC-based client authentication by including this certificate type in its CertificateRequest message. The client must check if it possesses a certificate appropriate for the method suggested by the server and is willing to use it for authentication.

サーバーは、CertificateRequestメッセージにこの証明書タイプを含めることにより、ECCベースのクライアント認証を要求できます。クライアントは、サーバーが提案した方法に適した証明書を所有しており、それを認証に使用する意思があるかどうかを確認する必要があります。

If these conditions are not met, the client SHOULD send a client Certificate message containing no certificates. In this case, the ClientKeyExchange MUST be sent as described in Section 2, and the CertificateVerify MUST NOT be sent. If the server requires client authentication, it may respond with a fatal handshake failure alert.

これらの条件が満たされない場合、クライアントは証明書を含まないクライアント証明書メッセージを送信する必要があります(SHOULD)。この場合、セクション2の説明に従ってClientKeyExchangeを送信する必要があり、CertificateVerifyを送信してはなりません(MUST NOT)。サーバーがクライアント認証を必要とする場合、致命的なハンドシェイク失敗アラートで応答することがあります。

If the client has an appropriate certificate and is willing to use it for authentication, it must send that certificate in the client's Certificate message (as per Section 5.6) and prove possession of the private key corresponding to the certified key. The process of determining an appropriate certificate and proving possession is different for each authentication mechanism and is described below.

クライアントに適切な証明書があり、それを認証に使用する場合は、その証明書をクライアントの証明書メッセージで送信し(セクション5.6に従って)、認証されたキーに対応する秘密キーの所有を証明する必要があります。適切な証明書を決定して所持を証明するプロセスは、認証メカニズムごとに異なり、以下で説明します。

NOTE: It is permissible for a server to request (and the client to send) a client certificate of a different type than the server certificate.

注:サーバーがサーバー証明書とは異なるタイプのクライアント証明書を要求する(およびクライアントが送信する)ことは許可されます。

3.1. ECDSA_sign
3.1. ECDSA_sign

To use this authentication mechanism, the client MUST possess a certificate containing an ECDSA- or EdDSA-capable public key.

この認証メカニズムを使用するには、クライアントはECDSAまたはEdDSA対応の公開鍵を含む証明書を所有している必要があります。

The client proves possession of the private key corresponding to the certified key by including a signature in the CertificateVerify message as described in Section 5.8.

クライアントは、セクション5.8で説明されているように、CertificateVerifyメッセージに署名を含めることにより、認証されたキーに対応する秘密キーの所有を証明します。

4. TLS Extensions for ECC
4. ECCのTLS拡張

Two TLS extensions are defined in this specification: (i) the Supported Elliptic Curves Extension and (ii) the Supported Point Formats Extension. These allow negotiating the use of specific curves and point formats (e.g., compressed vs. uncompressed, respectively) during a handshake starting a new session. These extensions are especially relevant for constrained clients that may only support a limited number of curves or point formats. They follow the general approach outlined in [RFC4366]; message details are specified in Section 5. The client enumerates the curves it supports and the point formats it can parse by including the appropriate extensions in its ClientHello message. The server similarly enumerates the point formats it can parse by including an extension in its ServerHello message.

この仕様では、2つのTLS拡張が定義されています。(i)サポートされる楕円曲線拡張と(ii)サポートされるポイント形式拡張です。これらにより、新しいセッションを開始するハンドシェイク中に、特定の曲線とポイント形式(たとえば、それぞれ圧縮と非圧縮)の使用について交渉できます。これらの拡張機能は、限られた数の曲線またはポイント形式のみをサポートする可能性がある制約のあるクライアントに特に関連しています。それらは[RFC4366]で概説されている一般的なアプローチに従います。メッセージの詳細はセクション5で指定されています。クライアントは、ClientHelloメッセージに適切な拡張機能を含めることにより、サポートする曲線と解析できるポイント形式を列挙します。サーバーも同様に、ServerHelloメッセージに拡張機能を含めることで、解析できるポイント形式を列挙します。

A TLS client that proposes ECC cipher suites in its ClientHello message SHOULD include these extensions. Servers implementing ECC cipher suites MUST support these extensions, and when a client uses these extensions, servers MUST NOT negotiate the use of an ECC cipher suite unless they can complete the handshake while respecting the choice of curves specified by the client. This eliminates the possibility that a negotiated ECC handshake will be subsequently aborted due to a client's inability to deal with the server's EC key.

ClientHelloメッセージでECC暗号スイートを提案するTLSクライアントには、これらの拡張を含める必要があります(SHOULD)。 ECC暗号スイートを実装するサーバーはこれらの拡張をサポートする必要があり、クライアントがこれらの拡張を使用する場合、サーバーは、クライアントが指定した曲線の選択を尊重しながらハンドシェイクを完了できない限り、ECC暗号スイートの使用をネゴシエートしてはなりません。これにより、クライアントがサーバーのECキーを処理できないために、ネゴシエートされたECCハンドシェイクが後で中止される可能性がなくなります。

The client MUST NOT include these extensions in the ClientHello message if it does not propose any ECC cipher suites. A client that proposes ECC cipher suites may choose not to include these extensions. In this case, the server is free to choose any one of the elliptic curves or point formats listed in Section 5. That section also describes the structure and processing of these extensions in greater detail.

クライアントは、ECC暗号スイートを提案しない場合、ClientHelloメッセージにこれらの拡張を含めてはなりません(MUST NOT)。 ECC暗号スイートを提案するクライアントは、これらの拡張を含めないことを選択できます。この場合、サーバーはセクション5にリストされている楕円曲線またはポイント形式のいずれかを自由に選択できます。このセクションでは、これらの拡張の構造と処理についても詳しく説明しています。

In the case of session resumption, the server simply ignores the Supported Elliptic Curves Extension and the Supported Point Formats Extension appearing in the current ClientHello message. These extensions only play a role during handshakes negotiating a new session.

セッション再開の場合、サーバーは、現在のClientHelloメッセージに表示されるサポートされる楕円曲線拡張とサポートされるポイント形式拡張を単に無視します。これらの拡張機能は、新しいセッションをネゴシエートするハンドシェイク中にのみ役割を果たします。

5. Data Structures and Computations
5. データ構造と計算

This section specifies the data structures and computations used by ECC-based key mechanisms specified in the previous three sections. The presentation language used here is the same as that used in TLS. Since this specification extends TLS, these descriptions should be merged with those in the TLS specification and any others that extend TLS. This means that enum types may not specify all possible values, and structures with multiple formats chosen with a select() clause may not indicate all possible cases.

このセクションでは、前の3つのセクションで指定したECCベースのキーメカニズムで使用されるデータ構造と計算を指定します。ここで使用されるプレゼンテーション言語は、TLSで使用されるものと同じです。この仕様はTLSを拡張しているため、これらの説明は、TLS仕様やTLSを拡張するその他の説明とマージする必要があります。これは、列挙型がすべての可能な値を指定するわけではなく、select()句で選択された複数の形式の構造がすべての可能なケースを示すとは限らないことを意味します。

5.1. Client Hello Extensions
5.1. クライアントのHello拡張

This section specifies two TLS extensions that can be included with the ClientHello message as described in [RFC4366]: the Supported Elliptic Curves Extension and the Supported Point Formats Extension.

このセクションでは、[RFC4366]で説明されているように、ClientHelloメッセージに含めることができる2つのTLS拡張を指定します。サポートされる楕円曲線拡張とサポートされるポイント形式拡張です。

When these extensions are sent:

これらの拡張機能が送信されると:

The extensions SHOULD be sent along with any ClientHello message that proposes ECC cipher suites.

拡張機能は、ECC暗号スイートを提案するClientHelloメッセージとともに送信する必要があります(SHOULD)。

Meaning of these extensions:

これらの拡張の意味:

These extensions allow a client to enumerate the elliptic curves it supports and/or the point formats it can parse.

これらの拡張機能により、クライアントは、サポートする楕円曲線や解析可能なポイント形式を列挙できます。

Structure of these extensions:

これらの拡張の構造:

The general structure of TLS extensions is described in [RFC4366], and this specification adds two types to ExtensionType.

TLS拡張の一般的な構造は[RFC4366]で説明されており、この仕様はExtensionTypeに2つのタイプを追加します。

      enum {
          elliptic_curves(10),
          ec_point_formats(11)
      } ExtensionType;
        

o elliptic_curves (Supported Elliptic Curves Extension): Indicates the set of elliptic curves supported by the client. For this extension, the opaque extension_data field contains NamedCurveList. See Section 5.1.1 for details.

o elliptic_curves(サポートされる楕円曲線拡張):クライアントがサポートする楕円曲線のセットを示します。この拡張の場合、不透明なextension_dataフィールドにはNamedCurveListが含まれます。詳細については、セクション5.1.1を参照してください。

o ec_point_formats (Supported Point Formats Extension): Indicates the set of point formats that the client can parse. For this extension, the opaque extension_data field contains ECPointFormatList. See Section 5.1.2 for details.

o ec_point_formats(サポートされているポイント形式の拡張):クライアントが解析できるポイント形式のセットを示します。この拡張の場合、不透明なextension_dataフィールドにECPointFormatListが含まれています。詳細については、セクション5.1.2を参照してください。

Actions of the sender:

送信者のアクション:

A client that proposes ECC cipher suites in its ClientHello message appends these extensions (along with any others), enumerating the curves it supports and the point formats it can parse. Clients SHOULD send both the Supported Elliptic Curves Extension and the Supported Point Formats Extension. If the Supported Point Formats Extension is indeed sent, it MUST contain the value 0 (uncompressed) as one of the items in the list of point formats.

ClientHelloメッセージでECC暗号スイートを提案するクライアントは、これらの拡張を(他の拡張とともに)追加し、サポートする曲線と解析できるポイント形式を列挙します。クライアントは、サポートされる楕円曲線拡張とサポートされるポイント形式拡張の両方を送信する必要があります(SHOULD)。サポートされているポイントフォーマット拡張が実際に送信される場合、ポイントフォーマットのリストの項目の1つとして値0(非圧縮)が含まれている必要があります。

Actions of the receiver:

レシーバーのアクション:

A server that receives a ClientHello containing one or both of these extensions MUST use the client's enumerated capabilities to guide its selection of an appropriate cipher suite. One of the proposed ECC cipher suites must be negotiated only if the server can successfully complete the handshake while using the curves and point formats supported by the client (cf. Sections 5.3 and 5.4).

これらの拡張の1つまたは両方を含むClientHelloを受信するサーバーは、クライアントの列挙された機能を使用して、適切な暗号スイートの選択をガイドする必要があります。提案されたECC暗号スイートの1つは、サーバーがクライアントがサポートする曲線と点の形式を使用してハンドシェイクを正常に完了できる場合にのみネゴシエートする必要があります(セクション5.3および5.4を参照)。

NOTE: A server participating in an ECDHE_ECDSA key exchange may use different curves for the ECDSA or EdDSA key in its certificate and for the ephemeral ECDH key in the ServerKeyExchange message. The server MUST consider the extensions in both cases.

注:ECDHE_ECDSAキー交換に参加しているサーバーは、証明書のECDSAキーまたはEdDSAキーと、ServerKeyExchangeメッセージの一時ECDHキーに異なる曲線を使用する場合があります。サーバーは、どちらの場合も拡張機能を考慮する必要があります。

If a server does not understand the Supported Elliptic Curves Extension, does not understand the Supported Point Formats Extension, or is unable to complete the ECC handshake while restricting itself to the enumerated curves and point formats, it MUST NOT negotiate the use of an ECC cipher suite. Depending on what other cipher suites are proposed by the client and supported by the server, this may result in a fatal handshake failure alert due to the lack of common cipher suites.

サーバーがサポートされている楕円曲線拡張を理解していない、サポートされているポイント形式拡張を理解していない、または列挙された曲線とポイント形式に制限されているときにECCハンドシェイクを完了できない場合は、ECC暗号の使用について交渉してはなりませんスイート。クライアントによって提案され、サーバーによってサポートされる他の暗号スイートによっては、一般的な暗号スイートがないために、致命的なハンドシェイク失敗アラートが発生する場合があります。

5.1.1. Supported Elliptic Curves Extension
5.1.1. サポートされる楕円曲線拡張

RFC 4492 defined 25 different curves in the NamedCurve registry (now renamed the "TLS Supported Groups" registry, although the enumeration below is still named NamedCurve) for use in TLS. Only three have seen much use. This specification is deprecating the rest (with numbers 1-22). This specification also deprecates the explicit curves with identifiers 0xFF01 and 0xFF02. It also adds the new curves defined in [RFC7748]. The end result is as follows:

RFC 4492は、TLSで使用するためにNamedCurveレジストリに25の異なる曲線を定義しました(現在の名前は「TLSでサポートされるグループ」レジストリに名前が変更されましたが、以下の列挙はまだNamedCurveです)たった3つしか使用されていません。この仕様は、残りを廃止します(番号1〜22)。この仕様では、識別子0xFF01および0xFF02の明示的な曲線も非推奨になりました。また、[RFC7748]で定義された新しい曲線を追加します。最終結果は次のとおりです。

           enum {
               deprecated(1..22),
               secp256r1 (23), secp384r1 (24), secp521r1 (25),
               x25519(29), x448(30),
               reserved (0xFE00..0xFEFF),
               deprecated(0xFF01..0xFF02),
               (0xFFFF)
           } NamedCurve;
        

Note that other specifications have since added other values to this enumeration. Some of those values are not curves at all, but finite field groups. See [RFC7919].

他の仕様では、この列挙に他の値が追加されていることに注意してください。これらの値の一部は、まったく曲線ではなく、有限のフィールドグループです。 [RFC7919]を参照してください。

secp256r1, etc: Indicates support of the corresponding named curve or groups. The named curves secp256r1, secp384r1, and secp521r1 are specified in SEC 2 [SECG-SEC2]. These curves are also recommended in ANSI X9.62 [ANSI.X9-62.2005] and FIPS 186-4 [FIPS.186-4]. The rest of this document refers to these three curves as the "NIST curves" because they were originally standardized by the National Institute of Standards and Technology. The curves x25519 and x448 are defined in [RFC7748]. Values 0xFE00 through 0xFEFF are reserved for private use.

secp256r1など:対応する名前付き曲線またはグループのサポートを示します。名前付き曲線secp256r1、secp384r1、およびsecp521r1は、SEC 2 [SECG-SEC2]で指定されています。これらの曲線は、ANSI X9.62 [ANSI.X9-62.2005]およびFIPS 186-4 [FIPS.186-4]でも推奨されています。この文書の残りの部分では、これらの3つの曲線を「NIST曲線」と呼びます。これは、国立標準技術研究所によって最初に標準化されたためです。曲線x25519とx448は[RFC7748]で定義されています。 0xFE00〜0xFEFFの値は、私的使用のために予約されています。

The predecessor of this document also supported explicitly defined prime and char2 curves, but these are deprecated by this specification.

このドキュメントの前身は、明示的に定義された素数曲線とchar2曲線もサポートしていましたが、これらはこの仕様では非推奨です。

The NamedCurve name space (now titled "TLS Supported Groups") is maintained by IANA. See Section 9 for information on how new value assignments are added.

NamedCurve名前空間(現在は「TLSでサポートされるグループ」というタイトル)は、IANAによって管理されています。新しい値の割り当てを追加する方法については、セクション9を参照してください。

           struct {
               NamedCurve named_curve_list<2..2^16-1>
           } NamedCurveList;
        

Items in named_curve_list are ordered according to the client's preferences (favorite choice first).

named_curve_listの項目は、クライアントの設定に従って並べられます(最初にお気に入りを選択)。

As an example, a client that only supports secp256r1 (aka NIST P-256; value 23 = 0x0017) and secp384r1 (aka NIST P-384; value 24 = 0x0018) and prefers to use secp256r1 would include a TLS extension consisting of the following octets. Note that the first two octets indicate the extension type (Supported Elliptic Curves Extension):

例として、secp256r1(別名NIST P-256;値23 = 0x0017)およびsecp384r1(別名NIST P-384;値24 = 0x0018)のみをサポートし、secp256r1を使用することを好むクライアントは、以下で構成されるTLS拡張を含みますオクテット。最初の2つのオクテットは拡張タイプ(サポートされる楕円曲線拡張)を示すことに注意してください。

00 0A 00 06 00 04 00 17 00 18

00 0A 00 06 00 04 00 17 00 18

5.1.2. Supported Point Formats Extension
5.1.2. サポートされているポイント形式の拡張機能
           enum {
               uncompressed (0),
               deprecated (1..2),
               reserved (248..255)
           } ECPointFormat;
           struct {
               ECPointFormat ec_point_format_list<1..2^8-1>
           } ECPointFormatList;
        

Three point formats were included in the definition of ECPointFormat above. This specification deprecates all but the uncompressed point format. Implementations of this document MUST support the uncompressed format for all of their supported curves and MUST NOT support other formats for curves defined in this specification. For backwards compatibility purposes, the point format list extension MAY still be included and contain exactly one value: the uncompressed point format (0). RFC 4492 specified that if this extension is missing, it means that only the uncompressed point format is supported, so interoperability with implementations that support the uncompressed format should work with or without the extension.

上記のECPointFormatの定義には、3つのポイント形式が含まれていました。この仕様では、非圧縮ポイント形式を除くすべてが廃止されます。このドキュメントの実装は、サポートされているすべての曲線の非圧縮形式をサポートする必要があり、この仕様で定義されている曲線の他の形式をサポートしてはなりません。下位互換性を保つために、ポイント形式リストの拡張機能は引き続き含まれている場合があり、値を1つだけ含めることができます:非圧縮ポイント形式(0)。 RFC 4492は、この拡張子が欠落している場合、非圧縮ポイント形式のみがサポートされることを意味しているため、非圧縮形式をサポートする実装との相互運用性は、拡張子の有無に関係なく機能するはずです。

If the client sends the extension and the extension does not contain the uncompressed point format, and the client has used the Supported Groups extension to indicate support for any of the curves defined in this specification, then the server MUST abort the handshake and return an illegal_parameter alert.

クライアントが拡張を送信し、拡張に非圧縮ポイント形式が含まれておらず、クライアントがサポートグループ拡張を使用して、この仕様で定義されている曲線のサポートを示している場合、サーバーはハンドシェイクを中止し、illegal_parameterを返す必要があります。警告。

The ECPointFormat name space (now titled "TLS EC Point Formats") is maintained by IANA. See Section 9 for information on how new value assignments are added.

ECPointFormat名前空間(現在は「TLS ECポイント形式」というタイトル)は、IANAによって管理されています。新しい値の割り当てを追加する方法については、セクション9を参照してください。

A client compliant with this specification that supports no other curves MUST send the following octets; note that the first two octets indicate the extension type (Supported Point Formats Extension):

他の曲線をサポートしないこの仕様に準拠するクライアントは、次のオクテットを送信する必要があります。最初の2つのオクテットは拡張タイプ(サポートされているポイント形式の拡張)を示しています。

00 0B 00 02 01 00

00 0B 00 02 01 00

5.1.3. The signature_algorithms Extension and EdDSA
5.1.3. signature_algorithms拡張とEdDSA

The signature_algorithms extension, defined in Section 7.4.1.4.1 of [RFC5246], advertises the combinations of signature algorithm and hash function that the client supports. The pure (non-prehashed) forms of EdDSA do not hash the data before signing it. For this reason, it does not make sense to combine them with a hash function in the extension.

[RFC5246]のセクション7.4.1.4.1で定義されているsignature_algorithms拡張は、クライアントがサポートする署名アルゴリズムとハッシュ関数の組み合わせを通知します。 EdDSAの純粋な(プリハッシュされていない)フォームは、データに署名する前にハッシュしません。このため、これらを拡張機能のハッシュ関数と組み合わせても意味がありません。

For bits-on-the-wire compatibility with TLS 1.3, we define a new dummy value in the "TLS HashAlgorithm" registry that we call "Intrinsic" (value 8), meaning that hashing is intrinsic to the signature algorithm.

TLS 1.3とのビット・オン・ザ・ワイヤー互換性のために、「TLS HashAlgorithm」レジストリーに新しいダミー値を定義します。これは、「組み込み」(値8)と呼ばれ、ハッシュは署名アルゴリズムに固有のものです。

To represent ed25519 and ed448 in the signature_algorithms extension, the value shall be (8,7) and (8,8), respectively.

ed25519およびed448をsignature_algorithms拡張で表すには、値をそれぞれ(8,7)および(8,8)にする必要があります。

5.2. Server Hello Extension
5.2. サーバーHello拡張機能

This section specifies a TLS extension that can be included with the ServerHello message as described in [RFC4366], the Supported Point Formats Extension.

このセクションでは、[RFC4366]で説明されているように、ServerHelloメッセージに含めることができるTLS拡張を指定します。これは、サポートされるポイント形式の拡張です。

When this extension is sent:

この拡張子が送信されると:

The Supported Point Formats Extension is included in a ServerHello message in response to a ClientHello message containing the Supported Point Formats Extension when negotiating an ECC cipher suite.

ECC暗号スイートのネゴシエーション時に、サポートされるポイントフォーマット拡張を含むClientHelloメッセージへの応答として、サポートされるポイントフォーマット拡張がServerHelloメッセージに含まれます。

Meaning of this extension:

この拡張子の意味:

This extension allows a server to enumerate the point formats it can parse (for the curve that will appear in its ServerKeyExchange message when using the ECDHE_ECDSA, ECDHE_RSA, or ECDH_anon key exchange algorithm.

この拡張機能により、サーバーは解析できるポイント形式を列挙できます(ECDHE_ECDSA、ECDHE_RSA、またはECDH_anonキー交換アルゴリズムを使用するときに、ServerKeyExchangeメッセージに表示される曲線について)。

Structure of this extension:

この拡張の構造:

The server's Supported Point Formats Extension has the same structure as the client's Supported Point Formats Extension (see Section 5.1.2). Items in ec_point_format_list here are ordered according to the server's preference (favorite choice first). Note that the server MAY include items that were not found in the client's list. However, without extensions, this specification allows exactly one point format, so there is not really any opportunity for mismatches.

サーバーのサポートされるポイント形式の拡張機能は、クライアントのサポートされるポイント形式の拡張機能と同じ構造です(セクション5.1.2を参照)。ここのec_point_format_listの項目は、サーバーの設定に従って並べられます(最初にお気に入りの選択)。サーバーには、クライアントのリストにないアイテムが含まれる場合があります。ただし、拡張機能がない場合、この仕様では正確に1つのポイント形式が許可されるため、実際に不一致が発生する可能性はありません。

Actions of the sender:

送信者のアクション:

A server that selects an ECC cipher suite in response to a ClientHello message including a Supported Point Formats Extension appends this extension (along with others) to its ServerHello message, enumerating the point formats it can parse. The Supported Point Formats Extension, when used, MUST contain the value 0 (uncompressed) as one of the items in the list of point formats.

サポートされているポイントフォーマット拡張を含むClientHelloメッセージに応答してECC暗号スイートを選択するサーバーは、この拡張を(他の拡張と共に)ServerHelloメッセージに追加し、解析できるポイントフォーマットを列挙します。サポートされるポイント形式の拡張機能を使用する場合、ポイント形式のリストの項目の1つとして値0(非圧縮)を含める必要があります。

Actions of the receiver:

レシーバーのアクション:

A client that receives a ServerHello message containing a Supported Point Formats Extension MUST respect the server's choice of point formats during the handshake (cf. Sections 5.6 and 5.7). If no Supported Point Formats Extension is received with the ServerHello, this is equivalent to an extension allowing only the uncompressed point format.

サポートされているポイントフォーマット拡張を含むServerHelloメッセージを受信するクライアントは、ハンドシェイク中にサーバーが選択したポイントフォーマットを尊重する必要があります(セクション5.6および5.7を参照)。 ServerHelloでサポートされているポイントフォーマット拡張が受信されない場合、これは非圧縮ポイントフォーマットのみを許可する拡張と同等です。

5.3. Server Certificate
5.3. サーバー証明書

When this message is sent:

このメッセージが送信されると:

This message is sent in all non-anonymous, ECC-based key exchange algorithms.

このメッセージは、すべての非匿名のECCベースの鍵交換アルゴリズムで送信されます。

Meaning of this message:

このメッセージの意味:

This message is used to authentically convey the server's static public key to the client. The following table shows the server certificate type appropriate for each key exchange algorithm. ECC public keys MUST be encoded in certificates as described in Section 5.9.

このメッセージは、サーバーの静的公開鍵をクライアントに認証するために使用されます。次の表は、各鍵交換アルゴリズムに適したサーバー証明書のタイプを示しています。セクション5.9で説明するように、ECC公開鍵は証明書にエンコードする必要があります。

NOTE: The server's Certificate message is capable of carrying a chain of certificates. The restrictions mentioned in Table 2 apply only to the server's certificate (first in the chain).

注:サーバーの証明書メッセージは、証明書のチェーンを運ぶことができます。表2に記載されている制限は、サーバーの証明書(チェーンの最初)にのみ適用されます。

   +-------------+-----------------------------------------------------+
   | Algorithm   | Server Certificate Type                             |
   +-------------+-----------------------------------------------------+
   | ECDHE_ECDSA | Certificate MUST contain an ECDSA- or EdDSA-capable |
   |             | public key.                                         |
   | ECDHE_RSA   | Certificate MUST contain an RSA public key.         |
   +-------------+-----------------------------------------------------+
        

Table 2: Server Certificate Types

表2:サーバー証明書の種類

Structure of this message:

このメッセージの構造:

Identical to the TLS Certificate format.

TLS証明書形式と同じです。

Actions of the sender:

送信者のアクション:

The server constructs an appropriate certificate chain and conveys it to the client in the Certificate message. If the client has used a Supported Elliptic Curves Extension, the public key in the server's certificate MUST respect the client's choice of elliptic curves. A server that cannot satisfy this requirement MUST NOT choose an ECC cipher suite in its ServerHello message.)

サーバーは適切な証明書チェーンを構築し、それを証明書メッセージでクライアントに伝えます。クライアントがサポートされている楕円曲線拡張を使用している場合、サーバーの証明書の公開鍵は、クライアントが選択した楕円曲線を尊重する必要があります。この要件を満たせないサーバーは、ServerHelloメッセージでECC暗号スイートを選択してはなりません。)

Actions of the receiver:

レシーバーのアクション:

The client validates the certificate chain, extracts the server's public key, and checks that the key type is appropriate for the negotiated key exchange algorithm. (A possible reason for a fatal handshake failure is that the client's capabilities for handling elliptic curves and point formats are exceeded; cf. Section 5.1.)

クライアントは証明書チェーンを検証し、サーバーの公開鍵を抽出し、鍵タイプがネゴシエートされた鍵交換アルゴリズムに適していることを確認します。 (致命的なハンドシェイクの失敗の考えられる理由は、楕円曲線とポイント形式を処理するクライアントの能力を超えていることです。セクション5.1を参照してください。)

5.4. Server Key Exchange
5.4. サーバーキー交換

When this message is sent:

このメッセージが送信されると:

This message is sent when using the ECDHE_ECDSA, ECDHE_RSA, and ECDH_anon key exchange algorithms.

このメッセージは、ECDHE_ECDSA、ECDHE_RSA、およびECDH_anon鍵交換アルゴリズムを使用するときに送信されます。

Meaning of this message:

このメッセージの意味:

This message is used to convey the server's ephemeral ECDH public key (and the corresponding elliptic curve domain parameters) to the client.

このメッセージは、サーバーの一時的なECDH公開鍵(および対応する楕円曲線ドメインパラメータ)をクライアントに伝えるために使用されます。

The ECCurveType enum used to have values for explicit prime and for explicit char2 curves. Those values are now deprecated, so only one value remains:

ECCurveType列挙型は、明示的な素数と明示的なchar2曲線の値を持つために使用されていました。これらの値は廃止されたため、残りの値は1つだけです。

Structure of this message:

このメッセージの構造:

           enum {
               deprecated (1..2),
               named_curve (3),
               reserved(248..255)
           } ECCurveType;
        

The value named_curve indicates that a named curve is used. This option is now the only remaining format.

値named_curveは、名前付き曲線が使用されることを示します。現在、このオプションは唯一の残りのフォーマットです。

Values 248 through 255 are reserved for private use.

248〜255の値は、私的使用のために予約されています。

The ECCurveType name space (now titled "TLS EC Curve Types") is maintained by IANA. See Section 9 for information on how new value assignments are added.

ECCurveType名前空間(現在は「TLS EC Curve Types」というタイトル)は、IANAによって維持されています。新しい値の割り当てを追加する方法については、セクション9を参照してください。

RFC 4492 had a specification for an ECCurve structure and an ECBasisType structure. Both of these are omitted now because they were only used with the now deprecated explicit curves.

RFC 4492には、ECCurve構造とECBasisType構造の仕様がありました。これらは、現在非推奨の明示的なカーブでのみ使用されていたため、ここでは省略されています。

           struct {
               opaque point <1..2^8-1>;
           } ECPoint;
        

point: This is the byte string representation of an elliptic curve point following the conversion routine in Section 4.3.6 of [ANSI.X9-62.2005]. This byte string may represent an elliptic curve point in uncompressed, compressed, or hybrid format, but this specification deprecates all but the uncompressed format. For the NIST curves, the format is repeated in Section 5.4.1 for convenience. For the X25519 and X448 curves, the only valid representation is the one specified in [RFC7748], a 32- or 56-octet representation of the u value of the point. This structure MUST NOT be used with Ed25519 and Ed448 public keys.

point:これは、[ANSI.X9-62.2005]のセクション4.3.6の変換ルーチンに従う楕円曲線ポイントのバイト文字列表現です。このバイト文字列は、非圧縮、圧縮、またはハイブリッド形式の楕円曲線ポイントを表す場合がありますが、この仕様では非圧縮形式を除くすべてが非推奨になっています。 NIST曲線の場合、形式はセクション5.4.1でも繰り返されています。 X25519およびX448曲線の場合、唯一の有効な表現は、[RFC7748]で指定されているもの、つまりポイントのu値の32または56オクテット表現です。この構造は、Ed25519およびEd448公開鍵で使用してはなりません(MUST NOT)。

           struct {
               ECCurveType    curve_type;
               select (curve_type) {
                   case named_curve:
                       NamedCurve namedcurve;
               };
           } ECParameters;
        

curve_type: This identifies the type of the elliptic curve domain parameters.

curve_type:楕円曲線ドメインパラメータのタイプを識別します。

namedCurve: Specifies a recommended set of elliptic curve domain parameters. All those values of NamedCurve are allowed that refer to a curve capable of Diffie-Hellman. With the deprecation of the explicit curves, this now includes all of the NamedCurve values.

namedCurve:楕円曲線領域パラメーターの推奨されるセットを指定します。 Diffie-Hellmanが可能な曲線を参照するNamedCurveのすべての値が許可されます。明示的な曲線の廃止により、これにはすべてのNamedCurve値が含まれるようになりました。

           struct {
               ECParameters    curve_params;
               ECPoint         public;
           } ServerECDHParams;
        

curve_params: Specifies the elliptic curve domain parameters associated with the ECDH public key.

curve_params:ECDH公開鍵に関連付けられた楕円曲線ドメインパラメータを指定します。

public: The ephemeral ECDH public key.

public:エフェメラルECDH公開キー。

The ServerKeyExchange message is extended as follows.

ServerKeyExchangeメッセージは、次のように拡張されています。

           enum {
               ec_diffie_hellman
           } KeyExchangeAlgorithm;
        

o ec_diffie_hellman: Indicates the ServerKeyExchange message contains an ECDH public key.

o ec_diffie_hellman:ServerKeyExchangeメッセージにECDH公開鍵が含まれていることを示します。

      select (KeyExchangeAlgorithm) {
          case ec_diffie_hellman:
              ServerECDHParams    params;
              Signature           signed_params;
      } ServerKeyExchange;
        

o params: Specifies the ECDH public key and associated domain parameters.

o params:ECDH公開鍵と関連するドメインパラメータを指定します。

o signed_params: A hash of the params, with the signature appropriate to that hash applied. The private key corresponding to the certified public key in the server's Certificate message is used for signing.

o signed_pa​​rams:paramsのハッシュ。そのハッシュに適した署名が適用されます。サーバーの証明書メッセージで認証された公開鍵に対応する秘密鍵が署名に使用されます。

        enum {
            ecdsa(3),
            ed25519(7)
            ed448(8)
        } SignatureAlgorithm;
        select (SignatureAlgorithm) {
           case ecdsa:
                digitally-signed struct {
                    opaque sha_hash[sha_size];
                };
           case ed25519,ed448:
                digitally-signed struct {
                    opaque rawdata[rawdata_size];
                };
        } Signature;
      ServerKeyExchange.signed_params.sha_hash
          SHA(ClientHello.random + ServerHello.random +
                                 ServerKeyExchange.params);
      ServerKeyExchange.signed_params.rawdata
          ClientHello.random + ServerHello.random +
                                 ServerKeyExchange.params;
        

NOTE: SignatureAlgorithm is "rsa" for the ECDHE_RSA key exchange algorithm and "anonymous" for ECDH_anon. These cases are defined in TLS. SignatureAlgorithm is "ecdsa" or "eddsa" for ECDHE_ECDSA.

注:ECDHE_RSA鍵交換アルゴリズムの場合、SignatureAlgorithmは「rsa」であり、ECDH_anonの場合は「anonymous」です。これらのケースはTLSで定義されています。 ECDHE_ECDSAの場合、SignatureAlgorithmは「ecdsa」または「eddsa」です。

ECDSA signatures are generated and verified as described in Section 5.10. SHA, in the above template for sha_hash, may denote a hash algorithm other than SHA-1. As per ANSI X9.62, an ECDSA signature consists of a pair of integers, r and s. The digitally-signed element is encoded as an opaque vector <0..2^16-1>, the contents of which are the DER encoding corresponding to the following ASN.1 notation.

ECDSA署名は、セクション5.10の説明に従って生成および検証されます。上記のsha_hashのテンプレートのSHAは、SHA-1以外のハッシュアルゴリズムを表す場合があります。 ANSI X9.62に従い、ECDSA署名は整数のペアrとsで構成されています。デジタル署名された要素は、不透明なベクトル<0..2 ^ 16-1>としてエンコードされます。その内容は、次のASN.1表記に対応するDERエンコードです。

              Ecdsa-Sig-Value ::= SEQUENCE {
                  r       INTEGER,
                  s       INTEGER
              }
        

EdDSA signatures in both the protocol and in certificates that conform to [RFC8410] are generated and verified according to [RFC8032]. The digitally-signed element is encoded as an opaque vector <0..2^16-1>, the contents of which include the octet string output of the EdDSA signing algorithm.

プロトコルと証明書の[RFC8410]に準拠するEdDSA署名は、[RFC8032]に従って生成および検証されます。デジタル署名された要素は、不透明なベクトル<0..2 ^ 16-1>としてエンコードされます。その内容には、EdDSA署名アルゴリズムのオクテット文字列出力が含まれます。

Actions of the sender:

送信者のアクション:

The server selects elliptic curve domain parameters and an ephemeral ECDH public key corresponding to these parameters according to the ECKAS-DH1 scheme from IEEE 1363 [IEEE.P1363]. It conveys this information to the client in the ServerKeyExchange message using the format defined above.

サーバーは、IEEE 1363 [IEEE.P1363]のECKAS-DH1スキームに従って、楕円曲線ドメインパラメータと、これらのパラメータに対応する一時ECDH公開鍵を選択します。上記で定義されたフォーマットを使用して、ServerKeyExchangeメッセージでこの情報をクライアントに伝えます。

Actions of the receiver:

レシーバーのアクション:

The client verifies the signature (when present) and retrieves the server's elliptic curve domain parameters and ephemeral ECDH public key from the ServerKeyExchange message. (A possible reason for a fatal handshake failure is that the client's capabilities for handling elliptic curves and point formats are exceeded; cf. Section 5.1.)

クライアントは署名(存在する場合)を検証し、サーバーの楕円曲線ドメインパラメータと一時的なECDH公開鍵をServerKeyExchangeメッセージから取得します。 (致命的なハンドシェイクの失敗の考えられる理由は、楕円曲線とポイント形式を処理するクライアントの能力を超えていることです。セクション5.1を参照してください。)

5.4.1. Uncompressed Point Format for NIST Curves
5.4.1. NIST曲線の非圧縮ポイント形式

The following represents the wire format for representing ECPoint in ServerKeyExchange records. The first octet of the representation indicates the form, which may be compressed, uncompressed, or hybrid. This specification supports only the uncompressed format for these curves. This is followed by the binary representation of the X value in "big-endian" or "network" format, followed by the binary representation of the Y value in "big-endian" or "network" format. There are no internal length markers, so each number representation occupies as many octets as implied by the curve parameters. For P-256 this means that each of X and Y use 32 octets, padded on the left by zeros if necessary. For P-384, they take 48 octets each, and for P-521, they take 66 octets each.

以下は、ServerKeyExchangeレコードでECPointを表すためのワイヤー形式を表しています。表現の最初のオクテットは、圧縮、非圧縮、またはハイブリッドの形式を示します。この仕様は、これらの曲線の非圧縮形式のみをサポートしています。この後に、「ビッグエンディアン」または「ネットワーク」形式のX値のバイナリ表現が続き、その後に「ビッグエンディアン」または「ネットワーク」形式のY値のバイナリ表現が続きます。内部長さマーカーはないため、各数値表現は、曲線パラメーターによって暗示されるのと同じ数のオクテットを占有します。 P-256の場合、これはXとYのそれぞれが32オクテットを使用し、必要に応じて左側にゼロが埋め込まれることを意味します。 P-384の場合は、それぞれ48オクテットを使用し、P-521の場合は、それぞれ66オクテットを使用します。

Here's a more formal representation:

これはより正式な表現です:

             enum {
                 uncompressed(4),
                 (255)
               } PointConversionForm;
        
             struct {
                 PointConversionForm  form;
                 opaque               X[coordinate_length];
                 opaque               Y[coordinate_length];
             } UncompressedPointRepresentation;
        
5.5. Certificate Request
5.5. 証明書リクエスト

When this message is sent:

このメッセージが送信されると:

This message is sent when requesting client authentication.

このメッセージは、クライアント認証を要求するときに送信されます。

Meaning of this message:

このメッセージの意味:

The server uses this message to suggest acceptable client authentication methods.

サーバーはこのメッセージを使用して、受け入れ可能なクライアント認証方法を提案します。

Structure of this message:

このメッセージの構造:

The TLS CertificateRequest message is extended as follows.

TLS CertificateRequestメッセージは次のように拡張されます。

           enum {
               ecdsa_sign(64),
               deprecated1(65),  /* was rsa_fixed_ecdh */
               deprecated2(66),  /* was ecdsa_fixed_ecdh */
               (255)
           } ClientCertificateType;
        

o ecdsa_sign: Indicates that the server would like to use the corresponding client authentication method specified in Section 3.

o ecdsa_sign:サーバーが、セクション3で指定された対応するクライアント認証方法を使用したいことを示します。

Note that RFC 4492 also defined RSA and ECDSA certificates that included a fixed ECDH public key. These mechanisms saw very little implementation, so this specification is deprecating them.

RFC 4492では、固定ECDH公開鍵を含むRSAおよびECDSA証明書も定義されていることに注意してください。これらのメカニズムはほとんど実装されていなかったため、この仕様では非推奨になっています。

Actions of the sender:

送信者のアクション:

The server decides which client authentication methods it would like to use and conveys this information to the client using the format defined above.

サーバーは、使用するクライアント認証方法を決定し、上記で定義されたフォーマットを使用してこの情報をクライアントに伝えます。

Actions of the receiver:

レシーバーのアクション:

The client determines whether it has a suitable certificate for use with any of the requested methods and whether to proceed with client authentication.

クライアントは、要求されたメソッドのいずれかで使用するための適切な証明書があるかどうか、およびクライアント認証を続行するかどうかを決定します。

5.6. Client Certificate
5.6. クライアント証明書

When this message is sent:

このメッセージが送信されると:

This message is sent in response to a CertificateRequest when a client has a suitable certificate and has decided to proceed with client authentication. (Note that if the server has used a Supported Point Formats Extension, a certificate can only be considered suitable for use with the ECDSA_sign authentication method if the public key point specified in it is uncompressed, as that is the only point format still supported.

このメッセージは、クライアントに適切な証明書があり、クライアント認証を続行することを決定したときに、CertificateRequestへの応答として送信されます。 (サーバーがサポートされているポイントフォーマット拡張機能を使用している場合、証明書がECDSA_sign認証方法での使用に適していると見なされるのは、サーバーで指定されている公開キーポイントが圧縮されていない場合のみです。

Meaning of this message:

このメッセージの意味:

This message is used to authentically convey the client's static public key to the server. ECC public keys must be encoded in certificates as described in Section 5.9. The certificate MUST contain an ECDSA- or EdDSA-capable public key.

このメッセージは、クライアントの静的公開鍵をサーバーに確実に伝えるために使用されます。セクション5.9で説明されているように、ECC公開鍵は証明書にエンコードする必要があります。証明書には、ECDSAまたはEdDSA対応の公開鍵が含まれている必要があります。

NOTE: The client's Certificate message is capable of carrying a chain of certificates. The restrictions mentioned above apply only to the client's certificate (first in the chain).

注:クライアントの証明書メッセージは、証明書のチェーンを運ぶことができます。上記の制限は、クライアントの証明書(チェーンの最初)にのみ適用されます。

Structure of this message:

このメッセージの構造:

Identical to the TLS client Certificate format.

TLSクライアント証明書形式と同じです。

Actions of the sender:

送信者のアクション:

The client constructs an appropriate certificate chain and conveys it to the server in the Certificate message.

クライアントは適切な証明書チェーンを構築し、それを証明書メッセージでサーバーに伝えます。

Actions of the receiver:

レシーバーのアクション:

The TLS server validates the certificate chain, extracts the client's public key, and checks that the key type is appropriate for the client authentication method.

TLSサーバーは証明書チェーンを検証し、クライアントの公開鍵を抽出し、鍵のタイプがクライアント認証方式に適していることを確認します。

5.7. Client Key Exchange
5.7. クライアントキー交換

When this message is sent:

このメッセージが送信されると:

This message is sent in all key exchange algorithms. It contains the client's ephemeral ECDH public key.

このメッセージは、すべての鍵交換アルゴリズムで送信されます。クライアントの一時的なECDH公開鍵が含まれています。

Meaning of the message:

メッセージの意味:

This message is used to convey ephemeral data relating to the key exchange belonging to the client (such as its ephemeral ECDH public key).

このメッセージは、クライアントに属する鍵交換に関連する一時的なデータ(その一時的なECDH公開鍵など)を伝えるために使用されます。

Structure of this message:

このメッセージの構造:

The TLS ClientKeyExchange message is extended as follows.

TLS ClientKeyExchangeメッセージは、次のように拡張されています。

           enum {
               implicit,
               explicit
           } PublicValueEncoding;
        

o implicit, explicit: For ECC cipher suites, this indicates whether the client's ECDH public key is in the client's certificate ("implicit") or is provided, as an ephemeral ECDH public key, in the ClientKeyExchange message ("explicit"). The implicit encoding is deprecated and is retained here for backward compatibility only.

o 暗黙的、明示的:ECC暗号スイートの場合、これは、クライアントのECDH公開鍵がクライアントの証明書にある(「暗黙的」)か、一時的なECDH公開鍵としてClientKeyExchangeメッセージで提供される(「明示的」)かを示します。暗黙的なエンコーディングは非推奨であり、下位互換性のためにのみここに保持されています。

           struct {
               ECPoint ecdh_Yc;
           } ClientECDiffieHellmanPublic;
        

ecdh_Yc: Contains the client's ephemeral ECDH public key as a byte string ECPoint.point, which may represent an elliptic curve point in uncompressed format.

ecdh_Yc:クライアントのエフェメラルECDH公開キーをバイト文字列ECPoint.pointとして含みます。これは、圧縮されていない形式で楕円曲線ポイントを表す場合があります。

           struct {
               select (KeyExchangeAlgorithm) {
                   case ec_diffie_hellman: ClientECDiffieHellmanPublic;
               } exchange_keys;
           } ClientKeyExchange;
        

Actions of the sender:

送信者のアクション:

The client selects an ephemeral ECDH public key corresponding to the parameters it received from the server. The format is the same as in Section 5.4.

クライアントは、サーバーから受信したパラメーターに対応する一時的なECDH公開鍵を選択します。形式はセクション5.4と同じです。

Actions of the receiver:

レシーバーのアクション:

The server retrieves the client's ephemeral ECDH public key from the ClientKeyExchange message and checks that it is on the same elliptic curve as the server's ECDH key.

サーバーは、ClientKeyExchangeメッセージからクライアントの一時的なECDH公開鍵を取得し、それがサーバーのECDH鍵と同じ楕円曲線上にあることを確認します。

5.8. Certificate Verify
5.8. 証明書の確認

When this message is sent:

このメッセージが送信されると:

This message is sent when the client sends a client certificate containing a public key usable for digital signatures.

このメッセージは、クライアントがデジタル署名に使用できる公開鍵を含むクライアント証明書を送信したときに送信されます。

Meaning of the message:

メッセージの意味:

This message contains a signature that proves possession of the private key corresponding to the public key in the client's Certificate message.

このメッセージには、クライアントの証明書メッセージの公開鍵に対応する秘密鍵の所持を証明する署名が含まれています。

Structure of this message:

このメッセージの構造:

The TLS CertificateVerify message and the underlying signature type are defined in the TLS base specifications, and the latter is extended here in Section 5.4. For the "ecdsa" and "eddsa" cases, the signature field in the CertificateVerify message contains an ECDSA or EdDSA (respectively) signature computed over handshake messages exchanged so far, exactly similar to CertificateVerify with other signing algorithms:

TLS CertificateVerifyメッセージと基礎となる署名タイプはTLS基本仕様で定義されており、後者はここでセクション5.4で拡張されます。 「ecdsa」および「eddsa」の場合、CertificateVerifyメッセージの署名フィールドには、これまでに交換されたハンドシェイクメッセージで計算されたECDSAまたはEdDSA(それぞれ)の署名が含まれ、他の署名アルゴリズムによるCertificateVerifyとまったく同じです。

           CertificateVerify.signature.sha_hash
               SHA(handshake_messages);
           CertificateVerify.signature.rawdata
               handshake_messages;
        

ECDSA signatures are computed as described in Section 5.10, and SHA in the above template for sha_hash accordingly may denote a hash algorithm other than SHA-1. As per ANSI X9.62, an ECDSA signature consists of a pair of integers, r and s. The digitally-signed element is encoded as an opaque vector <0..2^16-1>, the contents of which are the DER encoding [X.690] corresponding to the following ASN.1 notation [X.680].

ECDSA署名は、セクション5.10で説明されているように計算されます。したがって、上記のテンプレートのsha_hashのSHAは、SHA-1以外のハッシュアルゴリズムを示す場合があります。 ANSI X9.62に従い、ECDSA署名は整数のペアrとsで構成されています。デジタル署名された要素は、不透明なベクトル<0..2 ^ 16-1>としてエンコードされます。その内容は、次のASN.1表記[X.680]に対応するDERエンコード[X.690]です。

           Ecdsa-Sig-Value ::= SEQUENCE {
               r       INTEGER,
               s       INTEGER
           }
        

EdDSA signatures are generated and verified according to [RFC8032]. The digitally-signed element is encoded as an opaque vector <0..2^16-1>, the contents of which include the octet string output of the EdDSA signing algorithm.

EdDSA署名は[RFC8032]に従って生成および検証されます。デジタル署名された要素は、不透明なベクトル<0..2 ^ 16-1>としてエンコードされます。その内容には、EdDSA署名アルゴリズムのオクテット文字列出力が含まれます。

Actions of the sender:

送信者のアクション:

The client computes its signature over all handshake messages sent or received starting at client hello and up to but not including this message. It uses the private key corresponding to its certified public key to compute the signature, which is conveyed in the format defined above.

クライアントは、クライアントhelloからこのメッセージまで(ただしこのメッセージを含まない)に送受信されたすべてのハンドシェイクメッセージの署名を計算します。認定された公開鍵に対応する秘密鍵を使用して署名を計算します。署名は上記で定義された形式で伝達されます。

Actions of the receiver:

レシーバーのアクション:

The server extracts the client's signature from the CertificateVerify message and verifies the signature using the public key it received in the client's Certificate message.

サーバーは、CertificateVerifyメッセージからクライアントの署名を抽出し、クライアントの証明書メッセージで受け取った公開鍵を使用して署名を検証します。

5.9. Elliptic Curve Certificates
5.9. 楕円曲線証明書

X.509 certificates containing ECC public keys or signed using ECDSA MUST comply with [RFC3279] or another RFC that replaces or extends it. X.509 certificates containing ECC public keys or signed using EdDSA MUST comply with [RFC8410]. Clients SHOULD use the elliptic curve domain parameters recommended in ANSI X9.62, FIPS 186-4, and SEC 2 [SECG-SEC2], or in [RFC8032].

ECC公開鍵を含む、またはECDSAを使用して署名されたX.509証明書は、[RFC3279]またはそれを置換または拡張する別のRFCに準拠する必要があります。 ECC公開鍵を含む、またはEdDSAを使用して署名されたX.509証明書は、[RFC8410]に準拠する必要があります。クライアントは、ANSI X9.62、FIPS 186-4、SEC 2 [SECG-SEC2]、または[RFC8032]で推奨されている楕円曲線ドメインパラメータを使用する必要があります(SHOULD)。

EdDSA keys using the Ed25519 algorithm MUST use the ed25519 signature algorithm, and Ed448 keys MUST use the ed448 signature algorithm. This document does not define use of Ed25519ph and Ed448ph keys with TLS. Ed25519, Ed25519ph, Ed448, and Ed448ph keys MUST NOT be used with ECDSA.

Ed25519アルゴリズムを使用するEdDSAキーはed25519署名アルゴリズムを使用する必要があり、Ed448キーはed448署名アルゴリズムを使用する必要があります。このドキュメントでは、TLSでのEd25519phおよびEd448phキーの使用を定義していません。 Ed25519、Ed25519ph、Ed448、およびEd448phキーは、ECDSAで使用してはなりません。

5.10. ECDH, ECDSA, and RSA Computations
5.10. ECDH、ECDSA、およびRSA計算

All ECDH calculations for the NIST curves (including parameter and key generation as well as the shared secret calculation) are performed according to [IEEE.P1363] using the ECKAS-DH1 scheme with the identity map as the Key Derivation Function (KDF) so that the premaster secret is the x-coordinate of the ECDH shared secret elliptic curve point represented as an octet string. Note that this octet string (Z in IEEE 1363 terminology), as output by FE2OSP (Field Element to Octet String Conversion Primitive), has constant length for any given field; leading zeros found in this octet string MUST NOT be truncated.

NIST曲線のすべてのECDH計算(パラメーターとキーの生成、および共有秘密計算を含む)は、[IEEE.P1363]に従ってECKAS-DH1スキームを使用し、アイデンティティマップをキー導出関数(KDF)として使用して、プリマスターシークレットは、オクテット文字列として表されるECDH共有シークレット楕円曲線ポイントのx座標です。このオクテット文字列(IEEE 1363用語ではZ)は、FE2OSP(フィールド要素からオクテット文字列への変換プリミティブ)の出力として、指定されたフィールドに対して一定の長さを持つことに注意してください。このオクテット文字列で見つかった先行ゼロは切り詰めてはいけません。

(Note that this use of the identity KDF is a technicality. The complete picture is that ECDH is employed with a non-trivial KDF because TLS does not directly use the premaster secret for anything other than for computing the master secret. In TLS 1.0 and 1.1, this means that the MD5- and SHA-1-based TLS Pseudorandom Function (PRF) serves as a KDF; in TLS 1.2, the KDF is determined by ciphersuite, and it is conceivable that future TLS versions or new TLS extensions introduced in the future may vary this computation.)

(ID KDFのこの使用は技術的であることに注意してください。完全な状況は、TLSがマスターシークレットの計算以外の目的でプリマスターシークレットを直接使用しないため、ECDHが重要なKDFと共に使用されることです。TLS1.0および1.1、これは、MD5-およびSHA-1ベースのTLS擬似ランダム機能(PRF)がKDFとして機能することを意味します。TLS1.2では、KDFは暗号スイートによって決定され、将来のTLSバージョンまたはに導入された新しいTLS拡張が考えられます将来はこの計算が変わる可能性があります。)

An ECDHE key exchange using X25519 (curve x25519) goes as follows: (1) each party picks a secret key d uniformly at random and computes the corresponding public key x = X25519(d, G); (2) parties exchange their public keys and compute a shared secret as x_S = X25519(d, x_peer); and (3), if either party obtains all-zeroes x_S, it MUST abort the handshake (as required by definition of X25519 and X448). ECDHE for X448 works similarly, replacing X25519 with X448 and x25519 with x448. The derived shared secret is used directly as the premaster secret, which is always exactly 32 bytes when ECDHE with X25519 is used and 56 bytes when ECDHE with X448 is used.

X25519(曲線x25519)を使用するECDHE鍵交換は次のようになります。(1)各当事者が秘密鍵dをランダムに一様に選び、対応する公開鍵x = X25519(d、G)を計算します。 (2)当事者は公開鍵を交換し、x_S = X25519(d、x_peer);として共有秘密を計算します。 (3)いずれかのパーティがすべてゼロのx_Sを取得した場合、ハンドシェイクを中止する必要があります(X25519およびX448の定義で要求されているとおり)。 X448のECDHEも同様に機能し、X25519をX448に、x25519をx448に置き換えます。派生した共有シークレットは、プリマスターシークレットとして直接使用されます。これは、X25519でECDHEを使用する場合は常に正確に32バイト、X448でECDHEを使用する場合は56バイトです。

All ECDSA computations MUST be performed according to ANSI X9.62 or its successors. Data to be signed/verified is hashed, and the result runs directly through the ECDSA algorithm with no additional hashing. A secure hash function such as SHA-256, SHA-384, or SHA-512 from [FIPS.180-4] MUST be used.

すべてのECDSA計算は、ANSI X9.62またはその後継に従って実行する必要があります。署名/検証されるデータはハッシュされ、結果は追加のハッシュなしでECDSAアルゴリズムを介して直接実行されます。 [FIPS.180-4]のSHA-256、SHA-384、SHA-512などの安全なハッシュ関数を使用する必要があります。

All EdDSA computations MUST be performed according to [RFC8032] or its successors. Data to be signed/verified is run through the EdDSA algorithm with no hashing (EdDSA will internally run the data through the "prehash" function PH). The context parameter for Ed448 MUST be set to the empty string.

すべてのEdDSA計算は、[RFC8032]またはその後継に従って実行する必要があります。署名/検証されるデータは、ハッシュなしのEdDSAアルゴリズムを介して実行されます(EdDSAは、「プリハッシュ」関数PHを介して内部的にデータを実行します)。 Ed448のコンテキストパラメータは空の文字列に設定する必要があります。

RFC 4492 anticipated the standardization of a mechanism for specifying the required hash function in the certificate, perhaps in the parameters field of the subjectPublicKeyInfo. Such standardization never took place, and as a result, SHA-1 is used in TLS 1.1 and earlier (except for EdDSA, which uses identity function). TLS 1.2 added a SignatureAndHashAlgorithm parameter to the DigitallySigned struct, thus allowing agility in choosing the signature hash. EdDSA signatures MUST have HashAlgorithm of 8 (Intrinsic).

RFC 4492は、おそらくsubjectPublicKeyInfoのパラメータフィールドで、証明書に必要なハッシュ関数を指定するためのメカニズムの標準化を予想していました。このような標準化は行われなかったため、TLS 1.1以前ではSHA-1が使用されています(ID関数を使用するEdDSAを除く)。 TLS 1.2は、SignatureAndHashAlgorithmパラメーターをDigitallySigned構造体に追加しました。これにより、署名ハッシュを選択する際の俊敏性が可能になります。 EdDSA署名は、8(組み込み)のHashAlgorithmを持つ必要があります。

All RSA signatures must be generated and verified according to Section 7.2 of [RFC8017].

すべてのRSA署名は、[RFC8017]のセクション7.2に従って生成および検証する必要があります。

5.11. Public Key Validation
5.11. 公開鍵の検証

With the NIST curves, each party MUST validate the public key sent by its peer in the ClientKeyExchange and ServerKeyExchange messages. A receiving party MUST check that the x and y parameters from the peer's public value satisfy the curve equation, y^2 = x^3 + ax + b mod p. See Section 2.3 of [Menezes] for details. Failing to do so allows attackers to gain information about the private key to the point that they may recover the entire private key in a few requests if that key is not really ephemeral.

NISTカーブでは、各当事者は、ClientKeyExchangeおよびServerKeyExchangeメッセージでピアが送信した公開鍵を検証する必要があります。受信側は、ピアの公開値からのxおよびyパラメータが曲線方程式y ^ 2 = x ^ 3 + ax + b mod pを満たすことを確認する必要があります。詳細については、[Menezes]のセクション2.3を参照してください。そうしないと、攻撃者が秘密鍵に関する情報を取得して、秘密鍵が実際に短命でない場合、いくつかの要求で秘密鍵全体を回復できる可能性があります。

With X25519 and X448, a receiving party MUST check whether the computed premaster secret is the all-zero value and abort the handshake if so, as described in Section 6 of [RFC7748].

[RFC7748]のセクション6で説明されているように、X25519とX448では、受信者は計算されたプリマスターシークレットがすべてゼロの値であるかどうかを確認し、そうである場合はハンドシェイクを中止する必要があります。

Ed25519 and Ed448 internally do public key validation as part of signature verification.

Ed25519およびEd448は、署名検証の一部として内部的に公開鍵検証を行います。

6. Cipher Suites
6. 暗号スイート

The table below defines ECC cipher suites that use the key exchange algorithms specified in Section 2.

以下の表は、セクション2で指定された鍵交換アルゴリズムを使用するECC暗号スイートを定義しています。

       +-----------------------------------------+----------------+
       | CipherSuite                             | Identifier     |
       +-----------------------------------------+----------------+
       | TLS_ECDHE_ECDSA_WITH_NULL_SHA           | { 0xC0, 0x06 } |
       | TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA   | { 0xC0, 0x08 } |
       | TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA    | { 0xC0, 0x09 } |
       | TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA    | { 0xC0, 0x0A } |
       | TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | { 0xC0, 0x2B } |
       | TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | { 0xC0, 0x2C } |
       |                                         |                |
       | TLS_ECDHE_RSA_WITH_NULL_SHA             | { 0xC0, 0x10 } |
       | TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA     | { 0xC0, 0x12 } |
       | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA      | { 0xC0, 0x13 } |
       | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA      | { 0xC0, 0x14 } |
       | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256   | { 0xC0, 0x2F } |
       | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384   | { 0xC0, 0x30 } |
       |                                         |                |
       | TLS_ECDH_anon_WITH_NULL_SHA             | { 0xC0, 0x15 } |
       | TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA     | { 0xC0, 0x17 } |
       | TLS_ECDH_anon_WITH_AES_128_CBC_SHA      | { 0xC0, 0x18 } |
       | TLS_ECDH_anon_WITH_AES_256_CBC_SHA      | { 0xC0, 0x19 } |
       +-----------------------------------------+----------------+
        

Table 3: TLS ECC Cipher Suites

表3:TLS ECC暗号スイート

The key exchange method, cipher, and hash algorithm for each of these cipher suites are easily determined by examining the name. Ciphers (other than AES ciphers) and hash algorithms are defined in [RFC2246] and [RFC4346]. AES ciphers are defined in [RFC5246], and AES-GCM ciphersuites are in [RFC5289].

これらの各暗号スイートの鍵交換方法、暗号、およびハッシュアルゴリズムは、名前を調べることで簡単に判別できます。暗号(AES暗号以外)とハッシュアルゴリズムは、[RFC2246]と[RFC4346]で定義されています。 AES暗号は[RFC5246]で定義されており、AES-GCM暗号スイートは[RFC5289]で定義されています。

Server implementations SHOULD support all of the following cipher suites, and client implementations SHOULD support at least one of them:

サーバー実装は、以下のすべての暗号スイートをサポートする必要があり(SHOULD)、クライアント実装は、それらの少なくとも1つをサポートする必要があります(SHOULD)。

o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

o TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

o TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

o TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

o TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

o TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

o TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA

7. Implementation Status
7. 実施状況

Both ECDHE and ECDSA with the NIST curves are widely implemented and supported in all major browsers and all widely used TLS libraries. ECDHE with Curve25519 is by now implemented in several browsers and several TLS libraries including OpenSSL. Curve448 and EdDSA have working interoperable implementations, but they are not yet as widely deployed.

EISTHEとECDSAとNIST曲線の両方が広く実装され、すべての主要なブラウザーと広く使用されているすべてのTLSライブラリーでサポートされています。 Curve25519を使用したECDHEは、OpenSSLを含むいくつかのブラウザーといくつかのTLSライブラリに実装されています。 Curve448とEdDSAには相互運用可能な実装が機能していますが、まだ広く展開されていません。

8. Security Considerations
8. セキュリティに関する考慮事項

Security issues are discussed throughout this memo.

セキュリティの問題は、このメモ全体で議論されています。

For TLS handshakes using ECC cipher suites, the security considerations in Appendix D of each of the three TLS base documents apply accordingly.

ECC暗号スイートを使用するTLSハンドシェイクの場合、3つのTLSベースドキュメントのそれぞれの付録Dのセキュリティに関する考慮事項がそれに応じて適用されます。

Security discussions specific to ECC can be found in [IEEE.P1363] and [ANSI.X9-62.2005]. One important issue that implementers and users must consider is elliptic curve selection. Guidance on selecting an appropriate elliptic curve size is given in Table 1. Security considerations specific to X25519 and X448 are discussed in Section 7 of [RFC7748].

ECCに固有のセキュリティに関する議論は、[IEEE.P1363]と[ANSI.X9-62.2005]にあります。実装者とユーザーが考慮しなければならない1つの重要な問題は、楕円曲線の選択です。適切な楕円曲線サイズの選択に関するガイダンスを表1に示します。X25519およびX448に固有のセキュリティに関する考慮事項は、[RFC7748]のセクション7で説明されています。

Beyond elliptic curve size, the main issue is elliptic curve structure. As a general principle, it is more conservative to use elliptic curves with as little algebraic structure as possible. Thus, random curves are more conservative than special curves such as Koblitz curves, and curves over F_p with p random are more conservative than curves over F_p with p of a special form, and curves over F_p with p random are considered more conservative than curves over F_2^m as there is no choice between multiple fields of similar size for characteristic 2.

楕円曲線のサイズを超えて、主な問題は楕円曲線の構造です。一般的な原則として、代数的構造ができるだけ少ない楕円曲線を使用するほうが保守的です。したがって、ランダムカーブはKoblitzカーブなどの特別なカーブよりも保守的であり、pランダムなF_p上のカーブは、特別な形式のpを持つF_p上のカーブよりも保守的であり、pランダムなF_p上のカーブは、カーブ上のカーブよりも保守的であると見なされます。 F_2 ^ mは、特性2の類似したサイズの複数のフィールド間の選択肢がないためです。

Another issue is the potential for catastrophic failures when a single elliptic curve is widely used. In this case, an attack on the elliptic curve might result in the compromise of a large number of keys. Again, this concern may need to be balanced against efficiency and interoperability improvements associated with widely used curves. Substantial additional information on elliptic curve choice can be found in [IEEE.P1363], [ANSI.X9-62.2005], and [FIPS.186-4].

もう1つの問題は、単一の楕円曲線が広く使用されている場合の壊滅的な障害の可能性です。この場合、楕円曲線への攻撃により、多数の鍵が危険にさらされる可能性があります。繰り返しになりますが、この懸念は、広く使用されている曲線に関連する効率と相互運用性の改善とのバランスを取る必要がある場合があります。楕円曲線の選択に関する実質的な追加情報は、[IEEE.P1363]、[ANSI.X9-62.2005]、および[FIPS.186-4]にあります。

The Introduction of [RFC8032] lists the security, performance, and operational advantages of EdDSA signatures over ECDSA signatures using the NIST curves.

[RFC8032]の紹介では、NIST曲線を使用したECDSA署名に対するEdDSA署名のセキュリティ、パフォーマンス、および運用上の利点を示しています。

All of the key exchange algorithms defined in this document provide forward secrecy. Some of the deprecated key exchange algorithms do not.

このドキュメントで定義されているすべてのキー交換アルゴリズムは、前方秘密性を提供します。廃止された鍵交換アルゴリズムの一部ではサポートされていません。

9. IANA Considerations
9. IANAに関する考慮事項

[RFC4492], the predecessor of this document, defined the IANA registries for the following:

このドキュメントの前身である[RFC4492]は、次のIANAレジストリを定義しました。

o Supported Groups (Section 5.1)

o サポートされるグループ(5.1節)

o EC Point Format (Section 5.1)

o ECポイント形式(5.1節)

o EC Curve Type (Section 5.4)

o EC曲線タイプ(セクション5.4)

IANA has prepended "TLS" to the names of these three registries.

IANAはこれら3つのレジストリの名前に「TLS」を付加しました。

For each name space, this document defines the initial value assignments and defines a range of 256 values (NamedCurve) or eight values (ECPointFormat and ECCurveType) reserved for Private Use. The policy for any additional assignments is "Specification Required". (RFC 4492 required IETF review.)

このドキュメントでは、名前空間ごとに初期値の割り当てを定義し、個人用に予約された256の値(NamedCurve)または8つの値(ECPointFormatおよびECCurveType)の範囲を定義します。追加の割り当てのポリシーは「指定が必要」です。 (RFC 4492はIETFレビューを必要としました。)

All existing entries in the "ExtensionType Values", "TLS ClientCertificateType Identifiers", "TLS Cipher Suites", "TLS Supported Groups", "TLS EC Point Format", and "TLS EC Curve Type" registries that referred to RFC 4492 have been updated to refer to this document.

RFC 4492を参照した「ExtensionType値」、「TLS ClientCertificateType識別子」、「TLS暗号スイート」、「TLSサポートグループ」、「TLS ECポイント形式」、および「TLS EC曲線タイプ」レジストリの既存のエントリはすべて、このドキュメントを参照するように更新されました。

IANA has assigned the value 29 to x25519 and the value 30 to x448 in the "TLS Supported Groups" registry.

IANAは、「TLSでサポートされているグループ」レジストリの値29をx25519に、値30をx448に割り当てています。

IANA has assigned two values in the "TLS SignatureAlgorithm" registry for ed25519 (7) and ed448 (8) with this document as reference. This keeps compatibility with TLS 1.3.

IANAは、ed25519(7)およびed448(8)の「TLS SignatureAlgorithm」レジストリに、このドキュメントを参照として2つの値を割り当てています。これにより、TLS 1.3との互換性が維持されます。

IANA has assigned one value from the "TLS HashAlgorithm" registry for Intrinsic (8) with DTLS-OK set to true (Y) and this document as reference. This keeps compatibility with TLS 1.3.

IANAは、DTLS-OKをtrue(Y)に設定した組み込み(8)の「TLS HashAlgorithm」レジストリから1つの値を割り当て、このドキュメントを参照として割り当てました。これにより、TLS 1.3との互換性が維持されます。

10. References
10. 参考文献
10.1. Normative References
10.1. 引用文献

[ANSI.X9-62.2005] American National Standards Institute, "Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)", ANSI X9.62, November 2005.

[ANSI.X9-62.2005] American National Standards Institute、「金融サービス業界の公開鍵暗号化:楕円曲線デジタル署名アルゴリズム(ECDSA)」、ANSI X9.62、2005年11月。

[FIPS.186-4] National Institute of Standards and Technology, "Digital Signature Standard (DSS)", FIPS PUB 186-4, DOI 10.6028/NIST.FIPS.186-4, July 2013, <http://nvlpubs.nist.gov/nistpubs/FIPS/ NIST.FIPS.186-4.pdf>.

[FIPS.186-4]国立標準技術研究所、「デジタル署名標準(DSS)」、FIPS PUB 186-4、DOI 10.6028 / NIST.FIPS.186-4、2013年7月、<http:// nvlpubs。 nist.gov/nistpubs/FIPS/ NIST.FIPS.186-4.pdf>。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] Bradner、S。、「要件レベルを示すためにRFCで使用するキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<https://www.rfc-editor.org/info/ rfc2119>。

[RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC 2246, DOI 10.17487/RFC2246, January 1999, <https://www.rfc-editor.org/info/rfc2246>.

[RFC2246] Dierks、T。およびC. Allen、「The TLS Protocol Version 1.0」、RFC 2246、DOI 10.17487 / RFC2246、1999年1月、<https://www.rfc-editor.org/info/rfc2246>。

[RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 3279, DOI 10.17487/RFC3279, April 2002, <https://www.rfc-editor.org/info/rfc3279>.

[RFC3279] Bassham、L.、Polk、W。、およびR. Housley、「インターネットX.509公開鍵インフラストラクチャ証明書および証明書失効リスト(CRL)プロファイルのアルゴリズムと識別子」、RFC 3279、DOI 10.17487 / RFC3279、 2002年4月、<https://www.rfc-editor.org/info/rfc3279>。

[RFC4346] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, DOI 10.17487/RFC4346, April 2006, <https://www.rfc-editor.org/info/rfc4346>.

[RFC4346] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocol Version 1.1」、RFC 4346、DOI 10.17487 / RFC4346、2006年4月、<https://www.rfc-editor.org/info / rfc4346>。

[RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D., Mikkelsen, J., and T. Wright, "Transport Layer Security (TLS) Extensions", RFC 4366, DOI 10.17487/RFC4366, April 2006, <https://www.rfc-editor.org/info/rfc4366>.

[RFC4366] Blake-Wilson、S.、Nystrom、M.、Hopwood、D.、Mikkelsen、J。、およびT. Wright、「Transport Layer Security(TLS)Extensions」、RFC 4366、DOI 10.17487 / RFC4366、2006年4月、<https://www.rfc-editor.org/info/rfc4366>。

[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS) Protocol Version 1.2", RFC 5246, DOI 10.17487/RFC5246, August 2008, <https://www.rfc-editor.org/info/rfc5246>.

[RFC5246] Dierks、T。およびE. Rescorla、「The Transport Layer Security(TLS)Protocol Version 1.2」、RFC 5246、DOI 10.17487 / RFC5246、2008年8月、<https://www.rfc-editor.org/info / rfc5246>。

[RFC5289] Rescorla, E., "TLS Elliptic Curve Cipher Suites with SHA-256/384 and AES Galois Counter Mode (GCM)", RFC 5289, DOI 10.17487/RFC5289, August 2008, <https://www.rfc-editor.org/info/rfc5289>.

[RFC5289] Rescorla、E。、「SHA-256 / 384およびAES Galois Counter Mode(GCM)を使用したTLS楕円曲線暗号スイート」、RFC 5289、DOI 10.17487 / RFC5289、2008年8月、<https://www.rfc- editor.org/info/rfc5289>。

[RFC7748] Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves for Security", RFC 7748, DOI 10.17487/RFC7748, January 2016, <https://www.rfc-editor.org/info/rfc7748>.

[RFC7748]ラングレー、A。、ハンブルク、M。、およびS.ターナー、「セキュリティのための楕円曲線」、RFC 7748、DOI 10.17487 / RFC7748、2016年1月、<https://www.rfc-editor.org/info / rfc7748>。

[RFC8017] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, "PKCS #1: RSA Cryptography Specifications Version 2.2", RFC 8017, DOI 10.17487/RFC8017, November 2016, <https://www.rfc-editor.org/info/rfc8017>.

[RFC8017] Moriarty、K.、Ed。、Kaliski、B.、Jonsson、J。、およびA. Rusch、「PKCS#1:RSA Cryptography Specifications Version 2.2」、RFC 8017、DOI 10.17487 / RFC8017、2016年11月、< https://www.rfc-editor.org/info/rfc8017>。

[RFC8032] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI 10.17487/RFC8032, January 2017, <https://www.rfc-editor.org/info/rfc8032>.

[RFC8032] Josefsson、S。およびI. Liusvaara、「Edwards-Curve Digital Signature Algorithm(EdDSA)」、RFC 8032、DOI 10.17487 / RFC8032、2017年1月、<https://www.rfc-editor.org/info/ rfc8032>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba、B。、「RFC 2119キーワードの大文字と小文字のあいまいさ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、<https://www.rfc-editor.org/info/ rfc8174>。

[RFC8410] Josefsson, S. and J. Schaad, "Algorithm Identifiers for Ed25519, Ed448, X25519 and X448 for Use in the Internet X.509 Public Key Infrastructure", RFC 8410, DOI 10.17487/RFC8410, August 2018, <https://www.rfc-editor.org/info/rfc8410>.

[RFC8410] Josefsson、S。およびJ. Schaad、「インターネットX.509公開鍵インフラストラクチャで使用するためのEd25519、Ed448、X25519およびX448のアルゴリズム識別子」、RFC 8410、DOI 10.17487 / RFC8410、2018年8月、<https: //www.rfc-editor.org/info/rfc8410>。

[SECG-SEC2] Certicom Research, "SEC 2: Recommended Elliptic Curve Domain Parameters", Standards for Efficient Cryptography 2 (SEC 2), Version 2.0, January 2010, <http://www.secg.org/sec2-v2.pdf>.

[SECG-SEC2] Certicom Research、「SEC 2:Recommended Elliptic Curve Domain Parameters」、Standards for Efficient Cryptography 2(SEC 2)、Version 2.0、2010年1月、<http://www.secg.org/sec2-v2。 pdf>。

[X.680] ITU-T, "Abstract Syntax Notation One (ASN.1): Specification of basic notation", ITU-T Recommendation X.680, ISO/IEC 8824-1, August 2015.

[X.680] ITU-T、「Abstract Syntax Notation One(ASN.1):Specification of basic notation」、ITU-T Recommendation X.680、ISO / IEC 8824-1、2015年8月。

[X.690] ITU-T, "Information technology-ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)", ITU-T Recommendation X.690, ISO/IEC 8825-1, August 2015.

[X.690] ITU-T、「Information technology-ASN.1 encoding rules:Specification of Basic Encoding Rules(BER)、Canonical Encoding Rules(CER)and Distinguished Encoding Rules(DER)」、ITU-T勧告X.690 、ISO / IEC 8825-1、2015年8月。

10.2. Informative References
10.2. 参考引用

[FIPS.180-4] National Institute of Standards and Technology, "Secure Hash Standard (SHS)", FIPS PUB 180-4, DOI 10.6028/NIST.FIPS.180-4, August 2015, <http://nvlpubs.nist.gov/nistpubs/FIPS/ NIST.FIPS.180-4.pdf>.

[FIPS.180-4]米国国立標準技術研究所、「Secure Hash Standard(SHS)」、FIPS PUB 180-4、DOI 10.6028 / NIST.FIPS.180-4、2015年8月、<http:// nvlpubs。 nist.gov/nistpubs/FIPS/ NIST.FIPS.180-4.pdf>。

[IEEE.P1363] IEEE, "Standard Specifications for Public Key Cryptography", IEEE Std P1363, <http://ieeexplore.ieee.org/document/891000/>.

[IEEE.P1363] IEEE、「公開キー暗号化の標準仕様」、IEEE Std P1363、<http://ieeexplore.ieee.org/document/891000/>。

[Menezes] Menezes, A. and B. Ustaoglu, "On reusing ephemeral keys in Diffie-Hellman key agreement protocols", International Journal of Applied Cryptography, Vol. 2, Issue 2, DOI 10.1504/IJACT.2010.038308, January 2010.

[メネゼス] Menezes、A。およびB. Ustaoglu、「Diffie-Hellman鍵合意プロトコルでの短命鍵の再利用について」、International Journal of Applied Cryptography、Vol。 2、発行2、DOI 10.1504 / IJACT.2010.038308、2010年1月。

[RFC4492] Blake-Wilson, S., Bolyard, N., Gupta, V., Hawk, C., and B. Moeller, "Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS)", RFC 4492, DOI 10.17487/RFC4492, May 2006, <https://www.rfc-editor.org/info/rfc4492>.

[RFC4492] Blake-Wilson、S.、Bolyard、N.、Gupta、V.、Hawk、C。、およびB. Moeller、「Elliptic Curve Cryptography(ECC)Cipher Suites for Transport Layer Security(TLS)」、RFC 4492 、DOI 10.17487 / RFC4492、2006年5月、<https://www.rfc-editor.org/info/rfc4492>。

[RFC7919] Gillmor, D., "Negotiated Finite Field Diffie-Hellman Ephemeral Parameters for Transport Layer Security (TLS)", RFC 7919, DOI 10.17487/RFC7919, August 2016, <https://www.rfc-editor.org/info/rfc7919>.

[RFC7919] Gillmor、D。、「トランスポート層セキュリティ(TLS)の交渉済み有限フィールドDiffie-Hellman一時パラメータ」、RFC 7919、DOI 10.17487 / RFC7919、2016年8月、<https://www.rfc-editor.org/ info / rfc7919>。

[TLS1.3] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", Work in Progress, draft-ietf-tls-tls13-28, March 2018.

[TLS1.3] Rescorla、E。、「The Transport Layer Security(TLS)Protocol Version 1.3」、Work in Progress、draft-ietf-tls-tls13-28、2018年3月。

Appendix A. Equivalent Curves (Informative)

付録A.等価曲線(参考)

All of the NIST curves [FIPS.186-4] and several of the ANSI curves [ANSI.X9-62.2005] are equivalent to curves listed in Section 5.1.1. The following table displays the curve names chosen by different standards organizations; multiple names in one row represent aliases for the same curve.

すべてのNIST曲線[FIPS.186-4]およびいくつかのANSI曲線[ANSI.X9-62.2005]は、セクション5.1.1にリストされている曲線と同等です。次の表は、さまざまな標準化団体が選択した曲線の名前を示しています。 1つの行にある複数の名前は、同じ曲線のエイリアスを表します。

                  +-----------+------------+------------+
                  | SECG      | ANSI X9.62 | NIST       |
                  +-----------+------------+------------+
                  | sect163k1 |            | NIST K-163 |
                  | sect163r1 |            |            |
                  | sect163r2 |            | NIST B-163 |
                  | sect193r1 |            |            |
                  | sect193r2 |            |            |
                  | sect233k1 |            | NIST K-233 |
                  | sect233r1 |            | NIST B-233 |
                  | sect239k1 |            |            |
                  | sect283k1 |            | NIST K-283 |
                  | sect283r1 |            | NIST B-283 |
                  | sect409k1 |            | NIST K-409 |
                  | sect409r1 |            | NIST B-409 |
                  | sect571k1 |            | NIST K-571 |
                  | sect571r1 |            | NIST B-571 |
                  | secp160k1 |            |            |
                  | secp160r1 |            |            |
                  | secp160r2 |            |            |
                  | secp192k1 |            |            |
                  | secp192r1 | prime192v1 | NIST P-192 |
                  | secp224k1 |            |            |
                  | secp224r1 |            | NIST P-224 |
                  | secp256k1 |            |            |
                  | secp256r1 | prime256v1 | NIST P-256 |
                  | secp384r1 |            | NIST P-384 |
                  | secp521r1 |            | NIST P-521 |
                  +-----------+------------+------------+
        

Table 4: Equivalent Curves Defined by SECG, ANSI, and NIST

表4:SECG、ANSI、およびNISTによって定義される同等の曲線

Appendix B. Differences from RFC 4492
付録B. RFC 4492との違い

o Renamed EllipticCurveList to NamedCurveList.

o EllipticCurveListの名前をNamedCurveListに変更しました。

o Added TLS 1.2.

o TLS 1.2を追加しました。

o Merged errata.

o エラッタをマージしました。

o Removed the ECDH key exchange algorithms: ECDH_RSA and ECDH_ECDSA

o ECDHキー交換アルゴリズムを削除:ECDH_RSAおよびECDH_ECDSA

o Deprecated a bunch of ciphersuites:

o 多数の暗号スイートの廃止:

TLS_ECDH_ECDSA_WITH_NULL_SHA

TLS_ECDH_ECDSA_WITH_NULL_SHA

TLS_ECDH_ECDSA_WITH_RC4_128_SHA

TLS_ECDH_ECDSA_WITH_RC4_128_SHA

TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA

TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA

TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA

TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA

TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA

TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA

TLS_ECDH_RSA_WITH_NULL_SHA

TLS_ECDH_RSA_WITH_NULL_SHA

TLS_ECDH_RSA_WITH_RC4_128_SHA

TLS_ECDH_RSA_WITH_RC4_128_SHA

TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA

TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA

TLS_ECDH_RSA_WITH_AES_128_CBC_SHA

TLS_ECDH_RSA_WITH_AES_128_CBC_SHA

TLS_ECDH_RSA_WITH_AES_256_CBC_SHA

TLS_ECDH_RSA_WITH_AES_256_CBC_SHA

All the other RC4 ciphersuites

他のすべてのRC4暗号スイート

o Removed unused curves and all but the uncompressed point format.

o 未使用の曲線と、圧縮されていないポイント形式以外のすべてを削除しました。

o Added X25519 and X448.

o X25519とX448を追加しました。

o Deprecated explicit curves.

o 非推奨の明示的な曲線。

o Removed restriction on signature algorithm in certificate.

o 証明書の署名アルゴリズムの制限を削除しました。

Acknowledgements

謝辞

Most of the text in this document is taken from [RFC4492], the predecessor of this document. The authors of that document were:

このドキュメントのテキストのほとんどは、このドキュメントの前身である[RFC4492]からのものです。その文書の著者は次のとおりです。

o Simon Blake-Wilson o Nelson Bolyard o Vipul Gupta o Chris Hawk o Bodo Moeller

o サイモンブラック-ウィルソン&ネルソンブルバード&ビプルグプタ&クリスホーク&バートモール

In the predecessor document, the authors acknowledged the contributions of Bill Anderson and Tim Dierks.

以前の文書では、著者はビル・アンダーソンとティム・ディアクスの貢献を認めた。

The authors would like to thank Nikos Mavrogiannopoulos, Martin Thomson, and Tanja Lange for contributions to this document.

著者は、この文書への貢献に対して、Nikos Mavrogiannopoulos、Martin Thomson、およびTanja Langeに感謝します。

Authors' Addresses

著者のアドレス

Yoav Nir Check Point Software Technologies Ltd. 5 Hasolelim st. Tel Aviv 6789735 Israel

Yoav Nir ​​Check Point Software Technologies Ltd. 5 Hasolelim st。テルアビブ6789735イスラエル

   Email: ynir.ietf@gmail.com
        

Simon Josefsson SJD AB

サイモン・ジョセフソンSJD AB

   Email: simon@josefsson.org
        

Manuel Pegourie-Gonnard ARM

マヌエルペゴリーゴナードアーム

   Email: mpg@elzevir.fr