]>
ECC Brainpool Curves for Transport Layer Security (TLS) Version 1.3secunet Security NetworksAmmonstr. 7401067 DresdenGermany+49 201 5454 3819leonie.bruckert@secunet.comsecunet Security NetworksMergenthaler Allee 7765760 EschbornGermany+49 201 5454 3091johannes.merkle@secunet.comBSIPostfach 20036353133 BonnGermany+49 228 9582 5643manfred.lochter@bsi.bund.deTLS, Elliptic Curve CryptographyECC Brainpool curves were an option for authentication and key exchange in the Transport Layer Security (TLS) protocol version 1.2, but were deprecated by the IETF for use with TLS version 1.3 because they had little usage. However, these curves have not been shown to have significant cryptographical weaknesses, and there is some interest in using several of these curves in TLS 1.3.This document provides the necessary protocol mechanisms for using ECC Brainpool curves in TLS 1.3. This approach is not endorsed by the IETF. specifies a new set of elliptic curve groups over finite prime fields for use in cryptographic applications. These groups, denoted as ECC Brainpool curves, were generated in a verifiably pseudo-random way and comply with the security requirements of relevant standards from ISO , ANSI , NIST , and SecG . defines the usage of elliptic curves for authentication and key agreement in TLS 1.2 and earlier versions, and defines the usage of the ECC Brainpool curves for authentication and key exchange in TLS. The latter is applicable to TLS 1.2 and earlier versions, but not to TLS 1.3 that deprecates the ECC Brainpool Curve IDs defined in due to the lack of widespread deployment However, there is some interest in using these curves in TLS 1.3.The negotiation of ECC Brainpool Curves for key exchange in TLS 1.3 according to requires the definition and assignment of additional NamedGroup IDs. This document provides the necessary definition and assignment of additional SignatureScheme IDs for using three ECC Brainpool Curves from .This approach is not endorsed by the IETF. Implementers and deployers need to be aware of the strengths and weaknesses of all security mechanisms that they use.The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 . According to , the "supported_groups" extension is used for the negotiation of Diffie-Hellman groups and elliptic curve groups for key exchange during a handshake starting a new TLS session. This document adds new named groups for three elliptic curves defined in to the "supported_groups" extension as follows.The encoding of ECDHE parameters for sec256r1, secp384r1, and secp521r1 as defined in section 4.2.8.2 of also applies to this document. Test vectors for a Diffie-Hellman key exchange using these elliptic curves are provided in .According to , the name space SignatureScheme is used for the negotiation of elliptic curve groups for authentication via the "signature_algorithms" extension. Besides, it is required to specify the hash function that is used to hash the message before signing. This document adds new SignatureScheme types for three elliptic curves defined in as follows. IANA is requested to update the references for the ECC Brainpool curves listed in the Transport Layer Security
(TLS) Parameters registry "TLS Supported Groups" to this document. ValueDescriptionDTLS-OKRecommendedReference0x001fbrainpoolP256r1tls13YNThis doc0x0020brainpoolP384r1tls13YNThis doc0x0021brainpoolP512r1tls13YNThis doc IANA is requested to update the references for the ECC Brainpool curves in the Transport Layer Security
(TLS) Parameters registry "TLS SignatureScheme" to this document. ValueDescriptionDTLS-OKRecommendedReference0x081Aecdsa_brainpoolP256r1tls13_sha256YNThis doc 0x081Becdsa_brainpoolP384r1tls13_sha384YNThis doc 0x081Cecdsa_brainpoolP512r1tls13_sha512YNThis doc The security considerations of apply accordingly. The confidentiality, authenticity and integrity of the TLS communication is limited by the weakest cryptographic primitive applied. In order to achieve a maximum security level when using one of the elliptic curves from for key exchange and / or one of the signature algorithms from for authentication in TLS, the key derivation function, the algorithms and key lengths of symmetric encryption and message authentication as well as the algorithm, bit length and hash function used for signature generation should be chosen at commensurate strengths, for example according to the recommendations of and . Furthermore, the private Diffie-Hellman keys should be generated from a random keystream with a length equal to the length of the order of the group E(GF(p)) defined in . The value of the private Diffie-Hellman keys should be less than the order of the group E(GF(p)).When using ECDHE key agreement with the curves brainpoolP256r1tls13, brainpoolP384r1tls13 or brainpoolP512r1tls13, the peers MUST validate each other's public value Q by ensuring that the point is a valid point on the elliptic curve. If this check is not conducted, an attacker can force the key exchange into a small subgroup, and the resulting shared secret can be guessed with significantly less effort. Implementations of elliptic curve cryptography for TLS may be susceptible to side-channel attacks. Particular care should be taken for implementations that internally transform curve points to points on the corresponding "twisted curve", using the map (x',y') = (x*Z^2, y*Z^3) with the coefficient Z specified for that curve in , in order to take advantage of an an efficient arithmetic based on the twisted curve's special parameters (A = -3): although the twisted curve itself offers the same level of security as the corresponding random curve (through mathematical equivalence), arithmetic based on small curve parameters may be harder to protect against side-channel attacks. General guidance on resistence of elliptic curve cryptography implementations against side-channel-attacks is given in and .Transport Layer Security (TLS) ParametersInternet Assigned Numbers AuthorityKey words for use in RFCs to Indicate Requirement LevelsHarvard University1350 Mass. Ave.CambridgeMA 02138- +1 617 495 3864sob@harvard.edu
General
keywordElliptic Curve Cryptography (ECC) Brainpool Standard Curves and Curve GenerationThis memo proposes several elliptic curve domain parameters over finite prime fields for use in cryptographic applications. The domain parameters are consistent with the relevant international standards, and can be used in X.509 certificates and certificate revocation lists (CRLs), for Internet Key Exchange (IKE), Transport Layer Security (TLS), XML signatures, and all applications or protocols based on the cryptographic message syntax (CMS). This document is not an Internet Standards Track specification; it is published for informational purposes.Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS) Versions 1.2 and EarlierThis 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.This document obsoletes RFC 4492.Elliptic Curve Cryptography (ECC) Brainpool Curves for Transport Layer Security (TLS)This document specifies the use of several Elliptic Curve Cryptography (ECC) Brainpool curves for authentication and key exchange in the Transport Layer Security (TLS) protocol.The Transport Layer Security (TLS) Protocol Version 1.3This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.
Public Key Cryptography For The Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)
American National Standards InstituteMinimum Requirements for Evaluating Side-Channel Attack Resistance of Elliptic Curve Implementations
Bundesamt fuer Sicherheit in der InformationstechnikDigital Signature Standard (DSS)National Institute of Standards and Technology
Guide to Elliptic Curve Cryptography
Information Technology - Security Techniques - Digital Signatures with Appendix - Part 3: Discrete Logarithm Based Mechanisms
International Organization for Standardization
Information Technology - Security Techniques - Cryptographic Techniques Based on Elliptic Curves - Part 2: Digital signatures
International Organization for Standardization
Recommendation for Key Management - Part 1: General (Revised)
National Institute of Standards and Technology
Elliptic Curve Cryptography
Certicom Research
Recommended Elliptic Curve Domain Parameters
Certicom Research
This non-normative Appendix provides some test vectors for example Diffie-Hellman
key exchanges using each of the curves defined in . In all
of the following sections the following notation is used:
d_A: the secret key of party A x_qA: the x-coordinate of the public key of party A y_qA: the y-coordinate of the public key of party A d_B: the secret key of party B x_qB: the x-coordinate of the public key of party B y_qB: the y-coordinate of the public key of party B x_Z: the x-coordinate of the shared secret that results from
completion of the Diffie-Hellman computation, i.e. the hex representation of the pre-master secret y_Z: the y-coordinate of the shared secret that results from
completion of the Diffie-Hellman computation
The field elements x_qA, y_qA, x_qB, y_qB, x_Z, y_Z are represented as hexadecimal values using the FieldElement-to-OctetString conversion method specified in .
Curve brainpoolP256r1
dA = 81DB1EE100150FF2EA338D708271BE38300CB54241D79950F77B063039804F1D x_qA = 44106E913F92BC02A1705D9953A8414DB95E1AAA49E81D9E85F929A8E3100BE5 y_qA = 8AB4846F11CACCB73CE49CBDD120F5A900A69FD32C272223F789EF10EB089BDC dB = 55E40BC41E37E3E2AD25C3C6654511FFA8474A91A0032087593852D3E7D76BD3 x_qB = 8D2D688C6CF93E1160AD04CC4429117DC2C41825E1E9FCA0ADDD34E6F1B39F7B y_qB = 990C57520812BE512641E47034832106BC7D3E8DD0E4C7F1136D7006547CEC6A x_Z = 89AFC39D41D3B327814B80940B042590F96556EC91E6AE7939BCE31F3A18BF2B y_Z = 49C27868F4ECA2179BFD7D59B1E3BF34C1DBDE61AE12931648F43E59632504DE Curve brainpoolP384r1
dA = 1E20F5E048A5886F1F157C74E91BDE2B98C8B52D58E5003D57053FC4B0BD65D6F15EB5D1EE1610DF870795143627D042 x_qA = 68B665DD91C195800650CDD363C625F4E742E8134667B767B1B476793588F885AB698C852D4A6E77A252D6380FCAF068 y_qA = 55BC91A39C9EC01DEE36017B7D673A931236D2F1F5C83942D049E3FA20607493E0D038FF2FD30C2AB67D15C85F7FAA59 dB = 032640BC6003C59260F7250C3DB58CE647F98E1260ACCE4ACDA3DD869F74E01F8BA5E0324309DB6A9831497ABAC96670 x_qB = 4D44326F269A597A5B58BBA565DA5556ED7FD9A8A9EB76C25F46DB69D19DC8CE6AD18E404B15738B2086DF37E71D1EB4 y_qB = 62D692136DE56CBE93BF5FA3188EF58BC8A3A0EC6C1E151A21038A42E9185329B5B275903D192F8D4E1F32FE9CC78C48 x_Z = 0BD9D3A7EA0B3D519D09D8E48D0785FB744A6B355E6304BC51C229FBBCE239BBADF6403715C35D4FB2A5444F575D4F42 y_Z = 0DF213417EBE4D8E40A5F76F66C56470C489A3478D146DECF6DF0D94BAE9E598157290F8756066975F1DB34B2324B7BD Curve brainpoolP512r1
dA = 16302FF0DBBB5A8D733DAB7141C1B45ACBC8715939677F6A56850A38BD87BD59B09E80279609FF333EB9D4C061231FB26F92EEB04982A5F1D1764CAD57665422 x_qA = 0A420517E406AAC0ACDCE90FCD71487718D3B953EFD7FBEC5F7F27E28C6149999397E91E029E06457DB2D3E640668B392C2A7E737A7F0BF04436D11640FD09FD y_qA = 72E6882E8DB28AAD36237CD25D580DB23783961C8DC52DFA2EC138AD472A0FCEF3887CF62B623B2A87DE5C588301EA3E5FC269B373B60724F5E82A6AD147FDE7 dB = 230E18E1BCC88A362FA54E4EA3902009292F7F8033624FD471B5D8ACE49D12CFABBC19963DAB8E2F1EBA00BFFB29E4D72D13F2224562F405CB80503666B25429 x_qB = 9D45F66DE5D67E2E6DB6E93A59CE0BB48106097FF78A081DE781CDB31FCE8CCBAAEA8DD4320C4119F1E9CD437A2EAB3731FA9668AB268D871DEDA55A5473199F y_qB = 2FDC313095BCDD5FB3A91636F07A959C8E86B5636A1E930E8396049CB481961D365CC11453A06C719835475B12CB52FC3C383BCE35E27EF194512B71876285FA x_Z = A7927098655F1F9976FA50A9D566865DC530331846381C87256BAF3226244B76D36403C024D7BBF0AA0803EAFF405D3D24F11A9B5C0BEF679FE1454B21C4CD1F y_Z = 7DB71C3DEF63212841C463E881BDCF055523BD368240E6C3143BD8DEF8B3B3223B95E0F53082FF5E412F4222537A43DF1C6D25729DDB51620A832BE6A26680A2