RFC 9588: Kerberos Simple Password-Authenticated Key Exchange (SPAKE) Pre-authentication
- N. McCallum,
- S. Sorce,
- R. Harwood,
- G. Hudson
Abstract
This document defines a new pre
Status of This Memo
This is an Internet Standards Track document.¶
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.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
The Kerberos protocol [RFC4120] commonly uses
password
This document defines a pre
1.1. Properties of PAKE
Password
These properties of PAKE allow us to establish high-entropy encryption keys resistant to offline brute-force attacks, even when the passwords used are weak (low entropy).¶
1.2. PAKE Algorithm Selection
The SPAKE algorithm (defined in [SPAKE]) works by
encrypting the public keys of a Diffie-Hellman (DH) key exchange with a
shared secret. SPAKE is selected for this pre
1.3. PAKE and Two-Factor Authentication
Using PAKE in a pre
In "One-Time Password (OTP) Pre
For these reasons, this document departs from the advice given in
Section 1 of [RFC6113], which states:
"Mechanism designers should design FAST factors, instead of new
pre
1.4. SPAKE Overview
The SPAKE algorithm can be broadly described in a series of four steps:¶
In this mechanism, key verification happens implicitly by a successful decryption of the 2FA data or of a placeholder value when no second factor is required. This mechanism uses a tailored method of deriving encryption keys from the calculated shared secret K, for several reasons:¶
2. Document Conventions
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.¶
This document refers to numerous terms and protocol messages defined in [RFC4120].¶
The terms "encryption type", "key generation seed length", and "random-to-key" are defined in [RFC3961].¶
The terms "FAST", "PA-FX-COOKIE", "KDC
[SPAKE] defines SPAKE as a family of two key-exchange algorithms differing only in derivation of the final key. This mechanism uses a derivation similar to the second algorithm (SPAKE2). For simplicity, this document refers to the algorithm as "SPAKE".¶
The terms "Abstract Syntax Notation One (ASN.1)" and "Distinguished Encoding Rules (DER)" are defined in [ITU-T.X680.2021] and [ITU-T.X690.2021], respectively.¶
When discussing operations within algebraic groups, this document uses additive notation (as described in Section 2.2 of [RFC6090]). Group elements are denoted with uppercase letters, while scalar multiplier values are denoted with lowercase letters.¶
3. Prerequisites
3.1. PA-ETYPE-INFO2
This mechanism requires the initial KDC pre
3.2. Cookie Support
KDCs that implement SPAKE pre
3.3. More Pre-authentication Data Required
Both KDCs and clients that implement SPAKE pre
4. SPAKE Pre-authentication Message Protocol
This mechanism uses the reply key and provides the client
authentication and strengthening reply key pre
This mechanism negotiates a choice of group for the SPAKE algorithm. Groups are defined in the "Kerberos SPAKE Groups" registry created by this document (see Section 12.2). Each group definition specifies an associated hash function, which will be used for transcript protection and key derivation. Clients and KDCs MUST implement the edwards25519 group, but they MAY choose not to offer or accept it by default.¶
The subsections that follow will describe the flow of messages when performing SPAKE
pre
Mechanism messages are communicated using PA-DATA elements within the padata field of KDC-REQ messages or within the METHOD-DATA in the e-data field of KRB-ERROR messages. All PA-DATA elements for this mechanism MUST use the following padata-type:¶
- PA-SPAKE
- 151¶
The padata-value for all PA-SPAKE PA-DATA values MUST be empty or contain a DER encoding for the ASN.1 type PA-SPAKE.¶
4.1. First Pass
The SPAKE pre
4.2. Second Pass
Once the client knows that the KDC supports SPAKE pre
Upon receipt of the support message, the KDC will select a
group. The KDC SHOULD choose a group from the groups provided by the
support message. However, if the support message does not contain any
group that is supported by the KDC, the KDC MAY select another group in
hopes that the client might support it. Otherwise, the KDC MUST respond
with a KDC
The group selection determines the group order, which shall be a large prime p multiplied by a small cofactor h (possibly 1), a generator P of a prime-order subgroup, and two masking points M and N. The KDC selects a random integer x in the range 0 <= x < h*p, which MUST be divisible by h. The KDC computes a public key T=x*P+w*M, where w is computed from the initial reply key according to Section 5.¶
The KDC will reply to the client with a
KDC
The group field indicates the KDC-selected group used for all SPAKE calculations as defined in the "Kerberos SPAKE Groups" registry (see Section 12.2).¶
The pubkey field indicates the KDC's public key T, serialized according to Section 5.¶
The factors field contains an unordered list of second factors,
which can be used to complete the authentication. Each second factor
is represented by a SPAKESecond
The type field is a unique integer that identifies the second-factor type. The factors field of SPAKEChallenge MUST NOT contain more than one SPAKESecond
The data field contains optional challenge data. The contents in this field will depend upon the second-factor type chosen. Note that this challenge is initially transmitted as unauthenticated plaintext; see Section 10.2.¶
The client and KDC will each initialize a transcript hash (Section 6) using the hash function associated with the chosen group and update it with the concatenation of the DER-encoded PA-SPAKE messages sent by the client and the KDC.¶
4.3. Third Pass
Upon receipt of the challenge message, the client observes which group was selected by the KDC and deserializes the KDC's public key T. The client selects a random integer y in the range 0 <= x < h*p, which MUST be divisible by h. The client computes a public key S=y*P+w*N, where w is computed from the initial reply key according to Section 5. The client computes a shared group element K=y*(T-w*M).¶
The client will then choose one of the second-factor types listed in the factors field of the challenge message and gather whatever data is required for the chosen second-factor type, possibly using the associated challenge data. Finally, the client will send an AS-REQ containing a PA-SPAKE PA-DATA element using the response choice.¶
The client and KDC will update the transcript hash with the pubkey value and use the resulting hash for all encryption key derivations.¶
The pubkey field indicates the client's public key S, serialized according to Section 5.¶
The factor field indicates the client's chosen second-factor data.
The key for this field is K'[1] (specified in Section 7). The kvno field of the EncryptedData sequence is
omitted. The key usage number for the encryption is
KEY
When the KDC receives the response message from the client, it
deserializes the client's public key S, and computes the shared group
element K=x*(S-w*N). The KDC derives K'[1] and decrypts the factors
field. If decryption is successful, the first factor is successfully
validated. The KDC then validates the second factor. If either factor
fails to validate, the KDC MUST respond with a KDC
If validation of the second factor requires further round trips, the
KDC MUST reply to the client with a KDC
4.4. Subsequent Passes
Any number of additional round trips may occur using the encdata choice. The contents of the plaintexts are specific to the second-factor type. If a client receives a PA-SPAKE PA-DATA element using the encdata choice from the KDC, it MUST reply with a subsequent AS-REQ with a PA-SPAKE PA-DATA element using the encdata choice or abort the AS exchange.¶
The key for client
4.5. Reply Key Strengthening
When the KDC has successfully validated both factors, the reply key is strengthened and the mechanism is complete. The strengthening of the reply key is accomplished by the client and KDC replacing it with K'[0] (as specified in Section 7). The KDC then replies with a KDC-REP message or continues on to the next mechanism in the authentication set. There is no final PA-SPAKE PA-DATA message from the KDC to the client.¶
Reply key strengthening occurs only once: at the end of the exchange. The client and KDC MUST use the initial reply key as the base key for all K'[n] derivations.¶
4.6. Optimizations
The full protocol has two possible optimizations.¶
First, the KDC MAY reply to the initial AS-REQ (containing no
pre
Second, clients MAY skip the first pass and send an AS-REQ with a
PA-SPAKE PA-DATA element using the support choice. If the KDC accepts
the support message and generates a challenge, it MUST include a
PA-ETYPE-INFO2 value within the METHOD-DATA of the
KDC
5. SPAKE Parameters and Conversions
Group elements are converted to and from octet strings using the serialization method defined in the "Kerberos SPAKE Groups" registry (see Section 12.2).¶
The SPAKE algorithm requires constants M and N for each group. These constants are defined in the "Kerberos SPAKE Groups" registry (see Section 12.2).¶
The SPAKE algorithm requires a shared secret input w to be used as a scalar multiplier. This value MUST be produced from the initial reply key as follows:¶
The KDC chooses a secret scalar value x and the client chooses a secret scalar value y. As required by the SPAKE algorithm, these values are chosen randomly and uniformly. The KDC and client MUST NOT reuse x or y values for authentications involving different initial reply keys (see Section 10.4).¶
6. Transcript Hash
The transcript hash is an octet string of length equal to the output length of the hash function associated with the selected group. All bits are set to zero in the initial value.¶
When the transcript hash is updated with an octet string input, the new value is the hash function computed over the concatenation of the old value and the input.¶
In the normal message flow or with the second optimization described in Section 4.6, the transcript hash is:¶
Therefore, it incorporates the client's supported groups, the KDC's chosen group, the KDC's initial second-factor messages, and the client and KDC public values. Once the transcript hash is finalized, it is used without change for all key derivations (Section 7). In particular, encrypted second-factor messages are not included in the transcript hash.¶
If the first optimization described in Section 4.6 is used successfully, the transcript hash is first updated with the KDC's challenge message and updated a second time with the client's pubkey value.¶
If the first optimization is used unsuccessfully (i.e., the client does not accept the KDC's selected group), the transcript hash is computed as in the normal message flow, without including the KDC's optimistic challenge.¶
7. Key Derivation
Implementations MUST NOT use the shared group element (denoted by K) directly for any cryptographic operation. Instead, the SPAKE result is used to derive keys K'[n] (defined in this section).¶
First, compute the hash function associated with the selected group over the concatenation of the following values:¶
If the hash output is too small for the encryption type's key generation seed length, the block counter value is incremented and the hash function is recomputed to produce as many blocks as are required. The result is truncated to the key generation seed length, and the random-to-key function is used to produce an intermediate key with the same encryption type as the initial reply key.¶
The key K'[n] has the same encryption type as the initial reply key,
and has the value KRB
8. Second-Factor Types
This document defines one second-factor type:¶
- SF-NONE
- 1¶
This second-factor type indicates that no second factor is used.
Whenever a SPAKESecond
9. Hint for Authentication Sets
If a KDC offers SPAKE pre
The groups field indicates the KDC's supported groups. The factors field indicates the KDC's supported second factors. The KDC MAY omit the data field of values in the factors list.¶
A KDC MUST NOT include a PA-SPAKE-HINT message directly in a pa-value
field; hints must only be provided within authentication sets. A KDC
SHOULD include a hint if SPAKE pre
The PA-SPAKE-HINT message is not part of the transcript, and it does not replace any part of the SPAKE message flow.¶
10. Security Considerations
10.1. SPAKE Computations
The deserialized public keys S and T MUST be verified to be elements of the group to prevent invalid curve attacks. It is not necessary to verify that they are members of the prime-order subgroup; the computation of K by both parties involves a multiplication by the cofactor h.¶
The aforementioned cofactor multiplication is accomplished by choosing private scalars x and y, which are divisible by the cofactor. If the client or KDC chooses a scalar that might not be divisible by the cofactor, an attacker might be able to coerce values of K that are not members of the prime-order subgroup and deduce a limited amount of information about w from the order of K.¶
The scalars x and y MUST be chosen uniformly. They MUST NOT be reused
for different initial reply keys. If an x or y value is reused for
pre
The M and N values for a group MUST NOT have known discrete logs. An attacker who knows the discrete log of M or N can perform an offline dictionary attack on passwords. Therefore, it is important to demonstrate that the M and N values for each group were computed without multiplying a known value by the generator P.¶
10.2. Unauthenticated Plaintext
This mechanism includes unauthenticated plaintext in the support and challenge messages. Beginning with the third pass, the integrity of this plaintext is ensured by incorporating the transcript hash into the derivation of the final reply key and second-factor encryption keys. Downgrade attacks on support and challenge messages will result in the client and KDC deriving different reply keys and EncryptedData keys. The KDC-REQ-BODY contents are also incorporated into key derivation, ensuring their integrity. The unauthenticated plaintext in the KDC-REP message is not protected by this mechanism.¶
Unless FAST is used, the factors field of a challenge message is not integrity protected until the response is verified. Second-factor types MUST account for this when specifying the semantics of the data field. In particular, second-factor data in the challenge should not be included in user prompts: it could be modified by an attacker to contain misleading or offensive information.¶
Unless FAST is used, the factors field of a challenge message is visible to an attacker, who can use it to determine whether a second factor is required for the client.¶
Subsequent factor data, including the data in the response, are
encrypted in a derivative of the shared secret K. Therefore, it is not
possible to exploit the untrustworthine
Unless FAST is used, any PA-SPAKE-HINT messages are unauthenticated and are not protected by the transcript hash if they are included when SPAKE is advertised in authentication sets. Since hints do not replace any part of the message flow, manipulation of hint messages can only affect the client's decision to use or not use an authentication set, which could more easily be accomplished by removing authentication sets entirely.¶
10.3. Side Channels
An implementation of the SPAKE pre
Both the size of the EncryptedData and the number of EncryptedData messages used for second-factor data (including the factor field of the SPAKEResponse message and messages using the encdata PA-SPAKE choice) may reveal information about the second factor used in an authentication. Care should be taken to keep second-factor messages as small and as few as possible.¶
Any side channels in the creation of the shared secret input w, or in the multiplications wM and wN, could allow an attacker to recover the client long-term key. Implementations MUST take care to avoid side channels, particularly timing channels. Generation of the secret scalar values x and y need not take constant time, but the amount of time taken MUST NOT provide information about the resulting value.¶
The conversion of the scalar multiplier for the SPAKE w parameter may produce a multiplier that is larger than the order of the group. Some group implementations may be unable to handle such a multiplier. Others may silently accept such a multiplier but proceed to perform multiplication that is not constant time. This is only a minor risk in most commonly used groups, but it is a more serious risk for P-521 due to the extra seven high bits in the input octet string. A common solution to this problem is achieved by reducing the multiplier modulo the group order, taking care to ensure constant time operation.¶
10.4. KDC State
A stateless KDC implementation generally must use a PA-FX-COOKIE
value to remember its private scalar value x and the transcript hash.
The KDC MUST maintain confidentiality and integrity of the cookie
value, perhaps by encrypting it in a key known only to the realm's
KDCs. Cookie values may be replayed by attackers, perhaps by splicing them
into different SPAKE exchanges. The KDC SHOULD limit the time window of
replays using a timestamp, and it SHOULD prevent cookie values from being
applied to other pre
The SPAKE pre
10.5. Dictionary Attacks
Although the SPAKE pre
If the user enters the wrong password, the client might fall back
to the encrypted timestamp mechanism after receiving a
KDC
Like any other pre
10.6. Brute-Force Attacks
The selected group's resistance to offline brute-force attacks may not correspond to the size of the reply key. For performance reasons, a KDC MAY select a group whose brute-force work factor is less than the reply key length. A passive attacker who solves the group discrete logarithm problem after the exchange will be able to conduct an offline attack against the client long-term key. Although the use of password policies and costly, salted string-to-key functions may increase the cost of such an attack, the resulting cost will likely not be higher than the cost of solving the group discrete logarithm.¶
10.7. Denial-of-Service Attacks
Elliptic curve group operations are more computationally expensive
than secret-key operations. As a result, the use of this mechanism may
affect the KDC's performance under normal load and its resistance to
denial
10.8. Reflection Attacks
The encdata choice of PA-SPAKE can be used in either direction;
the factor-specific plaintext does not necessarily indicate a
direction. However, each encdata message is encrypted using a derived
key K'[n], with client
10.9. Reply Key Encryption Type
This mechanism does not upgrade the encryption type of the initial
reply key and relies on that encryption type for confidentiality
10.10. KDC Authentication
This mechanism does not directly provide the KDC Authentication
pre
11. Assigned Constants
The following key usage values are assigned for this mechanism:¶
- KEY_USAGE_SPAKE
- 65¶
12. IANA Considerations
IANA has assigned the following number for PA-SPAKE in the
"Pre
This document establishes two registries (see Sections 12.1 and 12.2) with the following procedure, in accordance with [RFC8126]:¶
Registry entries are to be evaluated using the Specification
Required method. All specifications must be published prior
to entry inclusion in the registry. Once published, they can be
submitted directly to the krb5
The designated experts ensure that the specification is publicly available. They may provide additional in-depth reviews, but their approval should not be taken as endorsement of the specification.¶
Prior to the end of the review period, the designated experts must approve or deny the request. This decision is conveyed to both IANA and the submitter. Since the mailing list archives are not public, it should include both a reasonably detailed explanation in the case of a denial as well as whether the request can be resubmitted.¶
IANA must only accept registry updates from the designated experts and should direct all requests for registration to the review mailing list.¶
12.1. Kerberos Second-Factor Types
This section specifies the "Kerberos Second-Factor Types" registry, which records the number, name, and reference for each second-factor protocol.¶
12.1.1. Registration Template
- ID Number:
- A value that uniquely identifies this entry. It is a signed integer in the range -2147483648 to 2147483647, inclusive. Positive values must be assigned only for algorithms specified in accordance with these rules for use with Kerberos and related protocols. Negative values should be used for private and experimental algorithms only. Zero is reserved and must not be assigned. Values should be assigned in increasing order.¶
- Name:
- A brief, unique, human-readable name for this algorithm.¶
- Reference:
- A URI or otherwise unique identifier for where the details of this algorithm can be found. It should be as specific as reasonably possible.¶
12.1.2. Initial Registry Contents
12.2. Kerberos SPAKE Groups
This section specifies the "Kerberos SPAKE Groups" registry, which records the number, name, specification, serialization, multiplier length, multiplier conversion, SPAKE M and N constants, and associated hash function for each SPAKE Group.¶
12.2.1. Registration Template
- ID Number:
- A value that uniquely identifies this entry. It is a signed integer in the range -2147483648 to 2147483647, inclusive. Positive values must be assigned only for algorithms specified in accordance with these rules for use with Kerberos and related protocols. Negative values should be used for private and experimental use only. Zero is reserved and must not be assigned. Values should be assigned in increasing order.¶
- Name:
- A brief, unique, human-readable name for this entry.¶
- Specification:
- A reference to the definition of the group parameters and operations.¶
- Serialization:
- A reference to the definition of the method used to serialize and deserialize group elements.¶
- Multiplier Length:
- The length of the input octet string to multiplication operations.¶
- Multiplier Conversion:
- A reference to the definition of the method used to convert an octet string to a multiplier scalar.¶
- SPAKE M Constant:
- The serialized value of the SPAKE M constant in hexadecimal notation.¶
- SPAKE N Constant:
- The serialized value of the SPAKE N constant in hexadecimal notation.¶
- Hash Function:
- The group's associated hash function.¶
12.2.2. Initial Registry Contents
12.2.2.1. Edwards 25519
- ID Number:
- 1¶
- Name:
- edwards25519¶
- Specification:
- Section 4.1 of [RFC7748] (edwards25519)¶
- Serialization:
- Section 3.1 of [RFC8032]¶
- Multiplier Length:
- 32¶
- Multiplier Conversion:
- Section 3.1 of [RFC8032]¶
- SPAKE M Constant:
- d048032c6ea0b6d6
97ddc2e86bda85a3 3adac920f1bf18e1 b0c6d166a5cecdaf ¶ - SPAKE N Constant:
- d3bfb518f44f3430
f29d0c92af503865 a1ed3281dc69b35d d868ba85f886c4ab ¶ - Hash function:
- SHA-256 [RFC6234]¶
12.2.2.2. P-256
- ID Number:
- 2¶
- Name:
- P-256¶
- Specification:
- Section 2.4.2 of [SEC2]¶
- Serialization:
- Section 2.3.3 of [SEC1] (compressed format)¶
- Multiplier Length:
- 32¶
- Multiplier Conversion:
- Section 2.3.8 of [SEC1]¶
- SPAKE M Constant:
- 02886e2f97ace46e
55ba9dd7242579f2 993b64e16ef3dcab 95afd497333d8fa1 2f ¶ - SPAKE N Constant:
- 03d8bbd6c639c629
37b04d997f38c377 0719c629d7014d49 a24b4f98baa1292b 49 ¶ - Hash function:
- SHA-256 [RFC6234]¶
12.2.2.3. P-384
- ID Number:
- 3¶
- Name:
- P-384¶
- Specification:
- Section 2.5.1 of [SEC2]¶
- Serialization:
- Section 2.3.3 of [SEC1] (compressed format)¶
- Multiplier Length:
- 48¶
- Multiplier Conversion:
- Section 2.3.8 of [SEC1]¶
- SPAKE M Constant:
- 030ff0895ae5ebf6
187080a82d82b42e 2765e3b2f8749c7e 05eba366434b363d 3dc36f1531473907 4d2eb8613fceec28 53 ¶ - SPAKE N Constant:
- 02c72cf2e390853a
1c1c4ad816a62fd1 5824f56078918f43 f922ca21518f9c54 3bb252c5490214cf 9aa3f0baab4b665c 10 ¶ - Hash function:
- SHA-384 [RFC6234]¶
12.2.2.4. P-521
- ID Number:
- 4¶
- Name:
- P-521¶
- Specification:
- Section 2.6.1 of [SEC2]¶
- Serialization:
- Section 2.3.3 of [SEC1] (compressed format)¶
- Multiplier Length:
- 48¶
- Multiplier Conversion:
- Section 2.3.8 of [SEC1]¶
- SPAKE M Constant:
- 02003f06f38131b2
ba2600791e82488e 8d20ab889af753a4 1806c5db18d37d85 608cfae06b82e4a7 2cd744c719193562 a653ea1f119eef93 56907edc9b569799 62d7aa ¶ - SPAKE N Constant:
- 0200c7924b9ec017
f3094562894336a5 3c50167ba8c59638 76880542bc669e49 4b2532d76c5b53df b349fdf69154b9e0 048c58a42e8ed04c ef052a3bc349d955 75cd25 ¶ - Hash function:
- SHA-512 [RFC6234]¶
13. References
13.1. Normative References
- [ITU
-T .X680 .2021] - ITU-T, "Information technology - Abstract Syntax Notation One (ASN.1): Specification of basic notation", ITU-T Recommendation X.680, ISO/IEC 8824-1:2021, .
- [ITU
-T .X690 .2021] - 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:2021, .
- [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC3961]
-
Raeburn, K., "Encryption and Checksum Specifications for Kerberos 5", RFC 3961, DOI 10
.17487 , , <https:///RFC3961 www >..rfc -editor .org /info /rfc3961 - [RFC4120]
-
Neuman, C., Yu, T., Hartman, S., and K. Raeburn, "The Kerberos Network Authentication Service (V5)", RFC 4120, DOI 10
.17487 , , <https:///RFC4120 www >..rfc -editor .org /info /rfc4120 - [RFC6113]
-
Hartman, S. and L. Zhu, "A Generalized Framework for Kerberos Pre
-Authentication" , RFC 6113, DOI 10.17487 , , <https:///RFC6113 www >..rfc -editor .org /info /rfc6113 - [RFC6234]
-
Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, DOI 10
.17487 , , <https:///RFC6234 www >..rfc -editor .org /info /rfc6234 - [RFC7748]
-
Langley, A., Hamburg, M., and S. Turner, "Elliptic Curves for Security", RFC 7748, DOI 10
.17487 , , <https:///RFC7748 www >..rfc -editor .org /info /rfc7748 - [RFC8032]
-
Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital Signature Algorithm (EdDSA)", RFC 8032, DOI 10
.17487 , , <https:///RFC8032 www >..rfc -editor .org /info /rfc8032 - [RFC8126]
-
Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10
.17487 , , <https:///RFC8126 www >..rfc -editor .org /info /rfc8126 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [SEC1]
- Standards for Efficient Cryptography Group, "SEC 1: Elliptic Curve Cryptography", .
- [SEC2]
- Standards for Efficient Cryptography Group, "SEC 2: Recommended Elliptic Curve Domain Parameters", .
13.2. Informative References
- [RFC6090]
-
McGrew, D., Igoe, K., and M. Salter, "Fundamental Elliptic Curve Cryptography Algorithms", RFC 6090, DOI 10
.17487 , , <https:///RFC6090 www >..rfc -editor .org /info /rfc6090 - [RFC6560]
-
Richards, G., "One-Time Password (OTP) Pre
-Authentication" , RFC 6560, DOI 10.17487 , , <https:///RFC6560 www >..rfc -editor .org /info /rfc6560 - [RFC8125]
-
Schmidt, J., "Requirements for Password
-Authenticated , RFC 8125, DOI 10Key Agreement (PAKE) Schemes" .17487 , , <https:///RFC8125 www >..rfc -editor .org /info /rfc8125 - [SPAKE]
-
Abdalla, M. and D. Pointcheval, "Simple Password-Based Encrypted Key Exchange Protocols", CT-RSA 2005, Lecture Notes in Computer
Science, Volume 3376, pages 191-208, Springer, DOI 10
.1007 , , <https:///978 -3 -540 -30574 -3 _14 doi >..org /10 .1007 /978 -3 -540 -30574 -3 _14
Appendix A. ASN.1 Module
Appendix B. SPAKE M and N Value Selection
The M and N values for the initial contents of the SPAKE group
registry were generated using the following Python snippet, which assumes
an elliptic curve implementation following the interface of
Edwards25519Poi
The initial seed strings are as follows:¶
Appendix C. Test Vectors
For the following text vectors:¶
There are currently no encryption types with a seed size large enough to require multiple hash blocks during key derivation with any of the assigned hash functions. To exercise this possibility, the following test vector illustrates what keys would be derived if there were a copy of the edwards25519 group with group number -1 and associated hash function SHA-1:¶
Acknowledgements
Nico Williams (Cryptonector)¶
Taylor Yu (MIT)¶