Skip to content

Commit 2c82b93

Browse files
panvatwiss
andauthored
Add adoption guidance section (#62)
Co-authored-by: Daniel Huigens <d.huigens@protonmail.com>
1 parent 3a2bbbd commit 2c82b93

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

‎index.html‎

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,16 @@
110110
"href": "https://datatracker.ietf.org/doc/draft-ietf-lamps-dilithium-certificates/",
111111
"publisher": "IETF"
112112
},
113+
"draft-ietf-hpke-pq": {
114+
"title": "Post-Quantum Hybrid Key Encapsulation Mechanisms for HPKE",
115+
"href": "https://datatracker.ietf.org/doc/draft-ietf-hpke-pq/",
116+
"publisher": "IETF"
117+
},
118+
"draft-ietf-hpke-hpke": {
119+
"title": "Hybrid Public Key Encryption",
120+
"href": "https://datatracker.ietf.org/doc/draft-ietf-hpke-hpke/",
121+
"publisher": "IETF"
122+
},
113123
},
114124
};
115125
</script>
@@ -7543,6 +7553,90 @@ <h3>JSON Web Key Operations</h3>
75437553
</section>
75447554
</section>
75457555

7556+
<section id="adoption-guidance" class="informative">
7557+
<h2>Adoption Guidance</h2>
7558+
<p>
7559+
This specification defines many algorithms and operations. To provide
7560+
guidance to implementers and to accelerate the post-quantum transition
7561+
of the Web platform, this section recommends which algorithms and
7562+
operations to prioritize for implementation.
7563+
</p>
7564+
<p>
7565+
The <a href="#dfn-SubtleCrypto-method-supports">`SubtleCrypto.supports`</a>
7566+
method simplifies the expedited adoption of every other algorithm and
7567+
operation in this specification by enabling feature detection, graceful
7568+
fallback, and progressive enhancement.
7569+
</p>
7570+
<p>
7571+
The <a href="#dfn-SubtleCrypto-method-getPublicKey">`SubtleCrypto.getPublicKey`</a>
7572+
method is important for practical use of asymmetric algorithms defined
7573+
in this specification and [[webcrypto]]. It simplifies key management
7574+
by enabling applications to only store the private key without the
7575+
corresponding public key, and without having to verify that the private
7576+
and public key do indeed correspond. Furthermore, it allows library
7577+
authors to accept non-extractable private keys as input to protocols
7578+
that commit the public key value to their outputs.
7579+
</p>
7580+
<p>
7581+
In terms of algorithms, the following are considered the highest
7582+
priority for the post-quantum transition and for enabling modern
7583+
cryptographic protocols on the Web, in order of priority:
7584+
</p>
7585+
<ol>
7586+
<li>
7587+
<a href="#ml-kem">ML-KEM</a> is the primary post-quantum key
7588+
encapsulation mechanism standardized by NIST [[FIPS-203]].
7589+
Combined with traditional key agreement, it enables hybrid
7590+
post-quantum/traditional (PQ/T) key establishment as used in
7591+
protocols like [[draft-ietf-hpke-hpke]] and its PQ and PQ/T
7592+
algorithms [[draft-ietf-hpke-pq]].
7593+
</li>
7594+
<li>
7595+
<a href="#ml-dsa">ML-DSA</a> is the primary post-quantum digital
7596+
signature algorithm standardized by NIST [[FIPS-204]].
7597+
</li>
7598+
<li>
7599+
<a href="#chacha20-poly1305">ChaCha20-Poly1305</a> is a widely
7600+
deployed AEAD cipher [[RFC8439]] used across many protocols
7601+
(TLS, SSH, WireGuard, HPKE).
7602+
</li>
7603+
<li>
7604+
<a href="#sha3">SHA-3</a> and <a href="#cshake">cSHAKE</a>
7605+
(specifically SHA3-256 and cSHAKE256) are used in many post-quantum
7606+
constructions including ML-KEM key derivation and hybrid KEM
7607+
combiners. Notably, cSHAKE256 invoked without any customization
7608+
parameters produces output identical to SHAKE256, making a single
7609+
implementation sufficient for both customized (cSHAKE256) and
7610+
non-customized (SHAKE256) use cases.
7611+
However, if an implementation of cSHAKE is not available, an
7612+
implementation of SHAKE may still prove useful, when making sure
7613+
to throw a {{NotSupportedError}} (and return `false` from
7614+
<a href="#dfn-SubtleCrypto-method-supports">`SubtleCrypto.supports`</a>)
7615+
when the {{CShakeParams/customization}} parameter is present and
7616+
non-empty.
7617+
</li>
7618+
<li>
7619+
<a href="#argon2">Argon2</a> is a memory-hard password-based
7620+
key derivation function [[RFC9106]], providing improved resistance
7621+
against brute force attacks in highly parallelized environments
7622+
(such as GPUs and FPGAs).
7623+
</li>
7624+
</ol>
7625+
<p>
7626+
<a href="#slh-dsa">SLH-DSA</a> is a stateless hash-based digital
7627+
signature algorithm standardized by NIST [[FIPS-204]]. It has
7628+
seen less adoption than ML-DSA so far, but may become useful to
7629+
implement if an alternative to ML-DSA becomes needed.
7630+
</p>
7631+
<p>
7632+
Beyond these, <a href="#aes-ocb">AES-OCB</a>,
7633+
<a href="#turboshake">TurboSHAKE</a>,
7634+
<a href="#kangarootwelve">KangarooTwelve</a>, and
7635+
<a href="#kmac">KMAC</a> are all valuable additions but are not as
7636+
immediately critical for the post-quantum transition.
7637+
</p>
7638+
</section>
7639+
75467640
<section>
75477641
<h2>Usage Example</h2>
75487642
<p>

0 commit comments

Comments
 (0)