Authors, While reviewing this document during AUTH48, please resolve (as necessary) the following questions, which are also in the XML file.
1) <!-- [rfced] We have expanded (and updated) the abbreviation "PAKE" in document title as follows for consistency regarding the use of "aPAKE" throughout the document. Please let us know if you prefer otherwise. Also, please let us know if you prefer the "Perhaps" option or otherwise. Original: The OPAQUE Augmented PAKE Protocol Current: The OPAQUE Augmented Password-Authenticated Key Exchange (aPAKE) Protocol Perhaps: OPAQUE: An Augmented Password-Authenticated Key Exchange (aPAKE) Protocol --> 2) <!-- [rfced] Please insert any keywords (beyond those that appear in the title) for use on https://www.rfc-editor.org/search. --> 3) <!--[rfced] Please ensure that the guidelines listed in Section 2.1 of RFC 5743 have been adhered to in this document. --> 4) <!-- [rfced] Is "ones" referring to "future AKE protocols" in this sentence? Additionally, should "HMQV" be expanded as "Hashed Menezes-Qu-Vanston" or otherwise? Original: In general, the modularity of OPAQUE's design makes it easy to integrate with additional AKE protocols, e.g., TLS or HMQV, and with future ones such as those based on post- quantum techniques. Perhaps: In general, the modularity of OPAQUE's design makes it easy to integrate with additional AKE protocols, e.g., TLS or HMQV (Hashed Menezes-Qu-Vanstone), and with future AKE protocols such as those based on post-quantum techniques. --> 5) <!-- [rfced] The sentence below seems out of place at the end of the Introduction. May we place this sentence in the abstract where "OPAQUE" is first introduced? Original: The name OPAQUE is a homonym of O-PAKE where O is for Oblivious. The name OPAKE was taken. Current: The name "OPAQUE" is a homonym of O-PAKE, where O is for Oblivious. The name "OPAKE" was taken. Perhaps (if moved to the abstract, perhaps make two paragraphs): This document describes the OPAQUE protocol, an Augmented (or Asymmetric) Password-Authenticated Key Exchange (aPAKE) that supports mutual authentication in a client-server setting without reliance on PKI and with security against pre-computation attacks upon server compromise. The name "OPAQUE" is a homonym of O-PAKE, where O is for Oblivious. In addition, the protocol provides forward secrecy and the ability to hide the password from the server, even during password registration. This document specifies the core OPAQUE protocol and one instantiation based on 3DH. This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF. --> 6) <!-- [rfced] In the following text, is the procedure of sampling a new "envelope_nonce" separate from rerunning the function? Or are they the same thing? We ask because the interrupting phrase ("sampling...") may impede readability. May we update to one of the following options? Current: If this occurs, servers should re-run the function, sampling a new envelope_nonce, to completion. Perhaps: If this occurs, servers should re-run the function (i.e., sample a new envelope_nonce) to completion. Or: If this occurs, servers should re-run the function and sample a new envelope_nonce to completion. --> 7) <!-- [rfced] We have split the following text into multiple sentences to prevent a run-on sentence. Please let us know any objections. Original: The generic outline of OPAQUE with a 3-message AKE protocol includes three messages: KE1, KE2, and KE3, where KE1 and KE2 include key exchange shares, e.g., DH values, sent by the client and server, respectively, and KE3 provides explicit client authentication and full forward security (without it, forward secrecy is only achieved against eavesdroppers, which is insufficient for OPAQUE security). Current: The generic outline of OPAQUE with a 3-message AKE protocol includes three messages: KE1, KE2, and KE3. KE1 and KE2 include key exchange shares (e.g., DH values) sent by the client and server, respectively. KE3 provides explicit client authentication and full forward security (without it, forward secrecy is only achieved against eavesdroppers, which is insufficient for OPAQUE security). --> 8) <!-- [rfced] For clarity, may we update the definition of "client_mac"? Original: client_mac: An authentication tag computed over the handshake transcript of fixed size Nm, computed using Km2, defined below. Perhaps: client_mac: An authentication tag computed over the handshake transcript of fixed size Nm, which is then computed using Km2 defined below. --> 9) <!-- [rfced] May we rephrase the following text to avoid interrupting the flow of the sentence? Current: Since the OPRF is a two-message protocol, KE3 has no element of the OPRF, and it, therefore, invokes the AKE's AuthServerFinalize directly. Perhaps: Since the OPRF is a two-message protocol, KE3 has no element of the OPRF. Therefore, KE3 invokes the AKE's AuthServerFinalize directly. --> 10) <!--[rfced] We note that the following definition appears in both Sections 6.4.1.1 and 6.4.1.2. Would you like to condense the second instance as follows to avoid repetition/redundancy? Original (Section 6.4.1.2): DeriveDiffieHellmanKeyPair(seed): This function is implemented as DeriveKeyPair(seed, "OPAQUE-DeriveDiffieHellmanKeyPair"), where DeriveKeyPair is as specified in Section 3.2 of [RFC9497]. The public value from DeriveKeyPair is encoded using SerializeElement from Section 2.1 of [RFC9497]. Perhaps: DeriveDiffieHellmanKeyPair(seed): See Section 6.4.1.1. --> 11) <!-- [rfced] May we rephrase this sentence for clarity? Original: While this constitutes an exhaustive online attack, hence as expensive as an online guessing attack from the client side, it can be mitigated when the channel between client and server is authenticated, e.g., using server-authenticated TLS. Perhaps: While this constitutes an exhaustive online attack (as expensive as a guessing attack from the client side), it can be mitigated when the channel between client and server is authenticated, e.g., using server-authenticated TLS. --> 12) <!-- [rfced] May we specify which entity is running an offline dictionary attack and rephrase the text for clarity? Original: The authors suggest implementing the OPRF phase as a threshold OPRF [TOPPSS], effectively forcing an attacker to act online or to control at least t key shares (among the total n), where t is the threshold number of shares necessary to recombine the secret OPRF key, and only then be able to run an offline dictionary attack. Perhaps: The authors suggest implementing the OPRF phase as a threshold OPRF [TOPPSS], effectively forcing an attacker to act online or control at least t key shares (of the total n), where t is the threshold number of shares necessary to recombine the secret OPRF key. Only then would an attacker be able to run an offline dictionary attack. --> 13) <!-- [rfced] Does the following text refer to Appendix B of this document or to an appendix in [JKX18]? Please review. Original: * [JKX18] specified DH-OPRF (see Appendix B) to instantiate the OPRF functionality in the protocol. --> 14) <!-- [rfced] It does not appear that [JKX18] has a Figure 12; it appears to go up to Figure 10. However, [JKX18Full] has a Figure 12. Please review and let us know how this text should be updated. Original: * The DH-OPRF and HMQV instantiation of OPAQUE in [JKX18], Figure 12 uses a different transcript than that which is described in this specification. Perhaps (if you intended Figure 12 in [JKX18Full]): * The DH-OPRF and HMQV instantiation of OPAQUE as shown in Figure 12 of [JKX18Full] uses a different transcript than that which is described in this specification. --> 15) <!-- [rfced] References a) We note that the following reference is a version of the I-D that was replaced by draft-irtf-cfrg-opaque, which became the current document. Would it be helpful to the reader to make this more clear in the text of the document? Current (Section 10.1): The specification as written here differs from the original cryptographic design in [JKX18] and the corresponding CFRG document [Krawczyk20], both of which were used as input to the CFRG PAKE competition. where in Section 12.2: [Krawczyk20] Krawczyk, H., "The OPAQUE Asymmetric PAKE Protocol", Work in Progress, Internet-Draft, draft-krawczyk-cfrg-opaque- 06, 19 June 2020, <https://datatracker.ietf.org/doc/html/ draft-krawczyk-cfrg-opaque-06>. b) It appears that [JKX18Full] and [JKX16] are different versions of the same paper. There are instances in the text where it seems like the text is referring to info from [JKX18Full] but cited [JKX16]. Would it be simpler if only the full version of the paper [JKX18Full] is referenced? c) The original date for this reference was 2016. However, the date provided for the blog post is 27 July 2013. We have updated the reference to match this date. Please let us know if you prefer otherwise. Original: [TripleDH] "Simplifying OTR deniability", https://signal.org/blog/simplifying-otr-deniability , 2016. Current: [TripleDH] Marlinspike, M., "Simplifying OTR deniability", Signal Blog, 27 July 2013, <https://signal.org/blog/simplifying-otr-deniability>. d) Please review the following reference. NIST FIPS 186-4 has been withdrawn and replaced by NIST FIPS 186-5. Would you like to update this reference to use the most current version? Current: [NISTCurves] NIST, "Digital Signature Standard (DSS)", NIST FIPS 186-4, DOI 10.6028/nist.fips.186-4, 2013, <https://doi.org/10.6028/nist.fips.186-4>. Perhaps: [NISTCurves] NIST, "Digital Signature Standard (DSS)", NIST FIPS 186-5, DOI 10.6028/nist.fips.186-5, 2013, <https://doi.org/10.6028/nist.fips.186-5>. --> 16) <!-- [rfced] FYI, we updated artwork to sourcecode throughout the document, excluding the artwork in Sections 3.2, 3.3, 5, and 6. Please confirm that this is correct. In addition, please consider whether the "type" attribute of any sourcecode element should be set and/or has been set correctly. Currently, the type value is not set except for the sourcecode element in final appendix, where we set type="test-vector". The current list of preferred values for "type" is available at <https://www.rfc-editor.org/rpc/wiki/doku.php?id=sourcecode-types>. If the current list does not contain an applicable type, feel free to suggest additions for consideration. Note that it is also acceptable to leave the "type" attribute not set. --> 17) <!-- [rfced] In the HTML and PDF outputs, the text enclosed in <tt> is output in fixed-width font. In the TXT output, there are no changes. We've included a list of terms enclosed in <tt> in this document. Some of these terms appear both with and without <tt> tags. Please review to ensure the usage of <tt> is correct and consistent and let us know if the output is acceptable or if any updates are needed. <tt>0x00</tt> <tt>a</tt> <tt>AuthClientFinalize</tt> <tt>AuthClientStart</tt> <tt>AuthRequest</tt> <tt>AuthResponse</tt> <tt>AuthServerFinalize</tt> <tt>AuthServerRespond</tt> <tt>auth_tag</tt> <tt>blinded_element</tt> <tt>blind</tt> <tt>Blind()</tt> <tt>b</tt> <tt>buf</tt> <tt>CleartextCredentials</tt> <tt>ClientAkeState</tt> <tt>ClientAuthenticationError</tt> <tt>client_identity</tt> <tt>client_private_key</tt> <tt>client_public_key</tt> <tt>client_state</tt> <tt>ClientState</tt> <tt>concat(0x01, 0x0203, 0x040506) = 0x010203040506</tt> <tt>context</tt> <tt>CreateCredentialRequest</tt> <tt>CreateCredentialResponse</tt> <tt>CreateRegistrationRequest</tt> <tt>CreateRegistrationResponse</tt> <tt>credential_identifier</tt> <tt>CredentialRequest</tt> <tt>CredentialResponse</tt> <tt>DeriveDiffieHellmanKeyPair()</tt> <tt>DeriveDiffieHellmanKeyPair</tt> <tt>DeriveKeyPairError</tt> <tt>element</tt> <tt>envelope_nonce</tt> <tt>EnvelopeRecoveryError</tt> <tt>Envelope</tt> <tt>evaluated_element</tt> <tt>export_key</tt> <tt>Extract()</tt> <tt>FinalizeRegistrationRequest</tt> <tt>GenerateKE1</tt> <tt>GenerateKE2</tt> <tt>GenerateKE3</tt> <tt>Hash()</tt> <tt>ikm</tt> <tt>info</tt> <tt>InvalidInputError</tt> <tt>KE1</tt> <tt>KE2</tt> <tt>KE3</tt> <tt>key</tt> <tt>Km2</tt> <tt>k</tt> <tt>Label</tt> <tt>L</tt> <tt>MAC()</tt> <tt>masked_response</tt> <tt>masking_key</tt> <tt>modeOPRF</tt> <tt>msg</tt> <tt>Nh</tt> <tt>nil</tt> <tt>Nm</tt> <tt>Nn + Nm</tt> <tt>Nn</tt> <tt>Npk</tt> <tt>Nseed = 32</tt> <tt>Nseed</tt> <tt>Nsk</tt> <tt>n</tt> <tt>Nx</tt> <tt>oprf_output</tt> <tt>oprf_seed</tt> <tt>pk</tt> <tt>preamble</tt> <tt>prk</tt> <tt>randomized_password</tt> <tt>record.client_public_key</tt> <tt>record.envelope</tt> <tt>record.masking_key</tt> <tt>record</tt> <tt>RecoverCredentials</tt> <tt>Recover</tt> <tt>RegistrationRecord</tt> <tt>RegistrationRequest</tt> <tt>RegistrationResponse</tt> <tt>salt</tt> <tt>seed</tt> <tt>ServerAkeState</tt> <tt>ServerFinish</tt> <tt>server_identity</tt> <tt>server_private_key</tt> <tt>server_public_key</tt> <tt>server_state</tt> <tt>ServerState</tt> <tt>session_key</tt> <tt>sk</tt> <tt>Store</tt> <tt>s</tt> <tt>true</tt> <tt>u</tt> --> 18) <!-- [rfced] Terminology a) We note that the following terms are used as protocol names as well as standalone terms. Is the differentiation intentional (such as the difference between an exchange and a protocol)? For example, we see that both AKE and AKE protocol are used throughout the document. Please review the following terms and let us know if any updates are needed for consistency. AKE vs. AKE protocol aPAKE vs. aPAKE protocol b) We note that the following terms appear inconsistently throughout the document. Please review each term carefully and let us know how we may update for consistency. Or, let us know if there are any particular patterns that should be followed (e.g., capitalized element names) and provide us with a list of terms that should adhere to that pattern. Envelope (capital E) vs. envelope (lowercase e) Group (capital G) vs. group (lowercase g) --> 19) <!-- [rfced] We note that there is inconsistent use of symbolic vs. numeric citation tags for RFCs (e.g., [PBKDF2] for RFC 8018 vs. [RFC5869] for RFC 5869). Should this remain as is or be made consistent throughout the document? --> 20) <!-- [rfced] The following lines extend beyond the margin. How may we break these lines so they fit within the 69-character limit? Section 4 (3 characters beyond the margin): - server_public_key, the encoded server public key for the AKE protocol. - server_public_key, the encoded server public key for the AKE protocol. Section 6.2.2 (2 characters beyond the margin): def GenerateKE2(server_identity, server_private_key, server_public_key, Section 6.2.3 (1 character beyond the margin): AuthClientFinalize(cleartext_credentials, client_private_key, ke2) Section 6.4.2.1 (3 characters beyond the margin): def Preamble(client_identity, ke1, server_identity, credential_response, Section 6.4.3 (2 characters beyond the margin): def AuthClientFinalize(cleartext_credentials, client_private_key, ke2): --> 21) <!-- [rfced] FYI - We have added expansions for abbreviations upon first use per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each expansion in the document carefully to ensure correctness. If there are no objections, we will also eliminate instances where abbreviations are expanded multiple times to limit repetition, e.g., authenticated key exchange (AKE). --> 22) <!-- [rfced] Please review the "Inclusive Language" portion of the online Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let us know if any changes are needed. Updates of this nature typically result in more precise language, which is helpful for readers. In particular, please consider whether "tradition" should be updated for clarity. While the NIST website <https://web.archive.org/web/20250214092458/https://www.nist.gov/nist-research-library/nist-technical-series-publications-author-instructions#table1> indicates that this term is potentially biased, it is also ambiguous. "Tradition" is a subjective term, as it is not the same for everyone. --> Thank you. RFC Editor/mc/ar On Jun 26, 2025, rfc-edi...@rfc-editor.org wrote: *****IMPORTANT***** Updated 2025/06/26 RFC Author(s): -------------- Instructions for Completing AUTH48 Your document has now entered AUTH48. Once it has been reviewed and approved by you and all coauthors, it will be published as an RFC. If an author is no longer available, there are several remedies available as listed in the FAQ (https://www.rfc-editor.org/faq/). You and you coauthors are responsible for engaging other parties (e.g., Contributors or Working Group) as necessary before providing your approval. Planning your review --------------------- Please review the following aspects of your document: * RFC Editor questions Please review and resolve any questions raised by the RFC Editor that have been included in the XML file as comments marked as follows: <!-- [rfced] ... --> These questions will also be sent in a subsequent email. * Changes submitted by coauthors Please ensure that you review any changes submitted by your coauthors. We assume that if you do not speak up that you agree to changes submitted by your coauthors. * Content Please review the full content of the document, as this cannot change once the RFC is published. Please pay particular attention to: - IANA considerations updates (if applicable) - contact information - references * Copyright notices and legends Please review the copyright notice and legends as defined in RFC 5378 and the Trust Legal Provisions (TLP – https://trustee.ietf.org/license-info). * Semantic markup Please review the markup in the XML file to ensure that elements of content are correctly tagged. For example, ensure that <sourcecode> and <artwork> are set correctly. See details at <https://authors.ietf.org/rfcxml-vocabulary>. * Formatted output Please review the PDF, HTML, and TXT files to ensure that the formatted output, as generated from the markup in the XML file, is reasonable. Please note that the TXT will have formatting limitations compared to the PDF and HTML. Submitting changes ------------------ To submit changes, please reply to this email using ‘REPLY ALL’ as all the parties CCed on this message need to see your changes. The parties include: * your coauthors * rfc-edi...@rfc-editor.org (the RPC team) * other document participants, depending on the stream (e.g., IETF Stream participants are your working group chairs, the responsible ADs, and the document shepherd). * auth48archive@rfc-editor.org, which is a new archival mailing list to preserve AUTH48 conversations; it is not an active discussion list: * More info: https://mailarchive.ietf.org/arch/msg/ietf-announce/yb6lpIGh-4Q9l2USxIAe6P8O4Zc * The archive itself: https://mailarchive.ietf.org/arch/browse/auth48archive/ * Note: If only absolutely necessary, you may temporarily opt out of the archiving of messages (e.g., to discuss a sensitive matter). If needed, please add a note at the top of the message that you have dropped the address. When the discussion is concluded, auth48archive@rfc-editor.org will be re-added to the CC list and its addition will be noted at the top of the message. You may submit your changes in one of two ways: An update to the provided XML file — OR — An explicit list of changes in this format Section # (or indicate Global) OLD: old text NEW: new text You do not need to reply with both an updated XML file and an explicit list of changes, as either form is sufficient. We will ask a stream manager to review and approve any changes that seem beyond editorial in nature, e.g., addition of new text, deletion of text, and technical changes. Information about stream managers can be found in the FAQ. Editorial changes do not require approval from a stream manager. Approving for publication -------------------------- To approve your RFC for publication, please reply to this email stating that you approve this RFC for publication. Please use ‘REPLY ALL’, as all the parties CCed on this message need to see your approval. Files ----- The files are available here: https://www.rfc-editor.org/authors/rfc9807.xml https://www.rfc-editor.org/authors/rfc9807.html https://www.rfc-editor.org/authors/rfc9807.pdf https://www.rfc-editor.org/authors/rfc9807.txt Diff file of the text: https://www.rfc-editor.org/authors/rfc9807-diff.html https://www.rfc-editor.org/authors/rfc9807-rfcdiff.html (side by side) Diff of the XML: https://www.rfc-editor.org/authors/rfc9807-xmldiff1.html Tracking progress ----------------- The details of the AUTH48 status of your document are here: https://www.rfc-editor.org/auth48/rfc9807 Please let us know if you have any questions. Thank you for your cooperation, RFC Editor -------------------------------------- RFC9807 (draft-irtf-cfrg-opaque-18) Title : The OPAQUE Augmented Password-Authenticated Key Exchange (aPAKE) Protocol Author(s) : D. Bourdrez, H. Krawczyk, K. Lewi, C. A. Wood -- auth48archive mailing list -- auth48archive@rfc-editor.org To unsubscribe send an email to auth48archive-le...@rfc-editor.org