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

Reply via email to