|
110 | 110 | "href": "https://datatracker.ietf.org/doc/draft-ietf-lamps-dilithium-certificates/", |
111 | 111 | "publisher": "IETF" |
112 | 112 | }, |
| 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 | + }, |
113 | 123 | }, |
114 | 124 | }; |
115 | 125 | </script> |
@@ -7543,6 +7553,90 @@ <h3>JSON Web Key Operations</h3> |
7543 | 7553 | </section> |
7544 | 7554 | </section> |
7545 | 7555 |
|
| 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 | + |
7546 | 7640 | <section> |
7547 | 7641 | <h2>Usage Example</h2> |
7548 | 7642 | <p> |
|
0 commit comments