Is this message, sent to the oauth list, different than what is here:
https://mailarchive.ietf.org/arch/msg/last-call/o9mStgXOwCEAZGcPlf-t_UrLmtU/
???

Multiple comments, sent to multiple locations just makes it all confusing.
I would prefer a single, concise list of comments, please.

I will action this once I have the definitive list of all comments you wish
to make on this draft.

Deb

On Wed, Apr 23, 2025 at 5:43 AM Denis <denis.i...@free.fr> wrote:

>
> Unless I missed an email, I have not yet seen responses to address the
> comments I have posted on April 14 during the IESG Last Call
> on draft-ietf-oauth-selective-disclosure-jwt-17.txt  within the dead line.
>
> I believe that some comments are important as they highlight the fact
> that, as currently described, the document does not identify some security
> attacks
> that make the protocol insecure. At the very minimum, the attacks should
> be mentioned in the Security Considerations section.
> *See comment A. *
> Another major security issue is the replay detection mechanism for a
> Verifier which, as currently described, is incorrect as it cannot handle
> the two methods that can be used to detect replays: either "unique
> numbers" generated by the Holder or "challenges" generated by the Verifier.
>
> When "unique numbers" are used, the Holder does *not* need to use the iat
> time. Hence, the iat time should not be "REQUIRED
> but should rather be "CONDITIONAL". Either "unique numbers" generated by
> the Holder or "challenges" generated by the Verifier
> should be accepted by a Verifier (obviously only if previously the
> Verifier has sent a challenge to the Holder).
> When both methods are handled, the data that will need to be kept and
> managed by the Verifier during a time window will be quite different.
> The time windows to handle each method can be different, hence two time
> windows may be considered by the Verifier. *See Comment B*.
>
> For your convenience, I have added in *BOLD RED* information to indicate
> either whether the comment is a new comment
> or is a follow-up of a previous issue. In the later case, I have indicated
> the number of the issue that has been previously raised.
>
> Denis
>
>
> The IESG has received a request from the Web Authorization Protocol WG
> (oauth) to consider the following document: - 'Selective Disclosure for JWTs
> (SD-JWT)'
>   <draft-ietf-oauth-selective-disclosure-jwt-17.txt> as Proposed Standard
>
> The IESG plans to make a decision in the next few weeks, and solicits final
> comments on this action. Please send substantive comments to 
> thelast-c...@ietf.org mailing lists by 2025-04-14. Exceptionally, comments may
> be sent to i...@ietf.org instead. In either case, please retain the beginning
> of the Subject line to allow automated sorting.
>
>
>
>
>
>
>
>
>
>
>
>
> *The following comments are posted exceptionally to i...@ietf.org
> <i...@ietf.org>, because previously I responded to the first and second WG
> LC and I got no reply to my comments. After the second WG LC, I have posted
> on github https://github.com/oauth-wg/oauth-selective-disclosure-jwt
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt> 40 issues
> numbered #482 until #522 that have not been responded. Then after 16
> comments: #546 to #562, that have not been responded either.  Hence, many
> of the comments that are posted today are not new comments. I believe that
> some of them are substantive. I made a full review of the document (with
> the exception of the appendices) and I will first present my 17 comments
> shortly. A. As currently described, the protocol is insecure as it can be
> subject to security attacks that have not been identified. *
>
>
> * The draft considers "colluding Verifiers and Issuers" but omits to
> consider "colluding Holders and users" which can also exist. A detailed
> example of such an attack is provided. Key binding does not provide a proof
> of *possession* of a private key (PoP) but only a proof of *use* of a
> private key (PoU). The difference is quite important. Detailed explanations
> are provided. *
> * See comments 1, 2, 3, 4 and 5 under the topic **COLLUDING HOLDERS AND
> USERS** and **under the topic* *KEY BINDING**.*
>
>
> *B. As currently described, there is insufficient guidance in the draft
> that allows to correctly implement a **Key Binding JWT*
>
> * replay detection mechanism. In general, two methods can be used, but the
> draft does not allow to know which one has been selected by the Holder. The
> processing by the Holder and by Verifier is insufficiently explained. See
> comment 6 under the topic of REPLAY DETECTION OF a **Key Binding JWT*
>
> *. C. **SD-JWT SUSPENSION OR REVOCATION IS MISSING*
>
> * (See comment 7) D. **UNLINKABILITY**  It is important to introduce the
> term "one**-time-use digital **credential" (See **comment 8)*
>
> *. *
> *E. POST-QUANTUM RESISTANCE KEY BINDING ALGORITHMS *
>
> * I propose to add a new section that explains how one-time-use digital
> credentials that include a public binding key *
> *can support Post-Quantum resistant key binding algorithms. Even if the
> document does not mandate the use of *
> *any specific asymmetrical algorithm, this information can be useful for
> implementers **as it is not widely shared*
> *. **(See **comment 9).*
>
>
> * F. VOCABULARY *
>
> *Since Figure 1 does not describe the interactions between the Holder
> software and hardware and a human user*
> *a Holder can only be the **"software and hardware" (**See **comment 10).*
>
>
>
>
>
>
> * G. ARRAY ELEMENTS. Various comments (See comments 11 and 12). H. KEY
> PAIR GENERATION AND LIFECYCLE MANAGEMENT (See a minor comment 13). I.
> EDITORIAL COMMENTS (See comments 14 to 17). *
>
>
> *
> ===========================================================================
> **COLLUDING HOLDERS AND USERS*
>
> *#513 **Section 9.5 (Key Binding) needs to be revised to consider the
> case of a collusion between End-Users
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/513>*
>
>
> * 1. *
> *Collaborative attacks between colluding users and Holders *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *Page 12 states:    It is out of the scope of this document to describe
> how the Holder    key pair is established.  For example, the Holder MAY
> create a key    pair and provide a public key to the Issuer, the Issuer MAY
> create    the key pair for the Holder, or Holder and Issuer MAY use pre-
> established key material. The document does not also consider how the
> protection of the *use* of the key pair should be done. Whether this
> protection is "good", "weak" or inexistent has a great importance. As a
> simple example, if the key pair can be exported from a Holder and then
> imported into another Holder, then that other Holder will be able to use
> the private key and get advantage of SD-JWTs that were under the control of
> the first Holder. A more elaborated example is the ability for a Holder to
> perform all the cryptographic computations that are necessary for another
> Holder without releasing the value of the private key to that other Holder.
> In that case, key binding does not provide a proof of *possession* of a
> private key (PoP) but only a proof of *use* of a private key (PoU).
> Collaborative attacks between "colluding user and Holders", which imply the
> use of Holders specifically developed to cheat a Verifier should be
> mentioned. This should also be addressed using an additional section under
> section 9 (Security Considerations). **It is thus proposed to add a
> section 9.13 about Collaborative attacks between **colluding users and
> Holders*
>
>
>
>
> *. The text change proposals for the others sections will be presented
> afterwards. Text proposal: 9.13 Collaborative attacks between **colluding
> users and Holders*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *    If two users accept to collaborate, the Holder used by one user can
>    perform cryptographic computations for the benefit of another Holder.
> For example, an application (i.e., a Holder) developed by a    specialist
> can be downloaded by each user.  If that application is    able to use the
> private keys from an original Holder, the second    Holder can perform
> cryptographic computations for the benefit of    another Holder.    An
> example scenario is as follows: a Holder A connects to a    Verifier and
> receives back a challenge and a list of claim types that    it will need to
> present to get an access.  The Holder A forwards to    a Holder B the
> challenge received from the Verifier, the name of the    Verifier and the
> set of claim types and values that it wishes to    present to the
> Verifier.  The Holder A receives back from the other    Holder B the data
> structure that the Holder A needs to present to get    an access to that
> Verifier.  The Holder A forwards it to the Verifier    and gets the access.
>    Another example scenario is as follows: if private keys can be
> exported from the Holder with the user consent and then used by    another
> Holder, impersonation of the user can be achieved by the    second Holder.
>    It is outside the scope of this document to specify how a Verifier
> can know whether appropriate characteristics or properties are
> effectively used by a Holder to ensure that collaborative attacks    cannot
> be performed between Holders. KEY BINDING*
>
> *#489 A (KB-JWT) does not demonstrate a "proof of possession" of private
> key <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/489>*
>
>
>
>
> * 2. On page 4, the text states: *
>
>
>
>
>
> *   To prevent attacks in which an SD-JWT is presented to a Verifier
> without the Holder's consent, this specification additionally defines    a
> mechanism for binding the SD-JWT to a key under the control of the
> Holder (Key Binding).  When Key Binding is enforced, a Holder has to
> prove possession of a private key belonging to a public key contained    in
> the SD-JWT itself. *
>
>
>
>
>
>
> *The private key is only presumed to be under the control of the Holder.
> The protocol does not allow to demonstrate that it is really the case,
> since the characteristics of the Holder are unknown to the Verifier. A
> Verifier can only check that a Holder has been able to *use* a private key
> associated with a public key contained in a SD-JWT. *
>
> *Text change proposal: *
>
>
>
>
> *   This specification defines a mechanism for binding the SD-JWT to    a
> key that is presumed to be under the control of the Holder (Key
> Binding).  When Key Binding is enforced, a Verifier can check that    a
> Holder has been able to use a private key associated with a    public key
> contained in the SD-JWT. *
>
>
>
> * 3. On page 6, the text states: *
>
>
>
>
> *   Key Binding:  Ability of the Holder to prove possession of an SD-JWT
>       by proving control over a private key during the presentation.
> When utilizing Key Binding, an SD-JWT contains the public key
> corresponding to the private key controlled by the Holder (or a
> reference to this public key). *
>
>
>
>
> *Key Binging only allows to demonstrate that a private key that is
> associated with a public key placed into a SD-JWT has been correctly used.
> It does not allow to known that the private key is indeed *possessed* by a
> Holder, since characteristics of the Holder are unknown to the Verifier. *
>
> *Text change proposal: *
>
>
>
>
>
>
> *   Key Binding:  Ability of the Holder to prove the ability to use a
>       private key associated with a public key contained in an SD-JWT
> by using this private key during the presentation.  When       utilizing
> Key Binding, an SD-JWT contains the public key       corresponding to the
> private key used by the Holder (or a       reference to this public key). *
> *4.** On page 43, section *
>
>
>
>
>
>
>
> *9.5. Key Binding states:    Key Binding aims to ensure that the presenter
> of an SD-JWT credential    is actually the Holder of the credential.  An
> SD-JWT compatible with    Key Binding contains a public key, or a reference
> to a public key,    that corresponds to a private key possessed by the
> Holder.  The    Verifier requires that the Holder prove possession of that
> private    key when presenting the SD-JWT credential. *
> * It is well known that the wording "*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *prove possession of a private key" has been used for years. However,
> strictly speaking the use of the word "possession" is incorrect. From a
> Verifier point of view, a correct SD-JWT+KB proves the *use* of the private
> key associated with a public binding key contained in a Key Binding JWT and
> it does not necessarily prove the *possession* of it (See comment 1). This
> private key can *EITHER* be used by the (legitimate) Holder *OR* can be
> used by the Holder for the benefit of another Holder (see the example in
> the previous comment). When using the protocols described in this document,
> it is impossible for a Verifier to make the distinction between these two
> cases. The document is implicitly considering (without never stating it)
> that Holders and users are "honest", whereas this will not necessarily be
> the case. The document considers "colluding Verifiers and Issuers" but does
> not consider "colluding Holders and users" which can also exist. Therefore
> this is a major security issue which has not been identified and that makes
> this protocol insecure.  A false sense of security might be inferred when
> implementing this document. This should be said. Text change proposal:
> An SD-JWT compatible with Key Binding contains a public key, or a
> reference to a public key, that corresponds to a private key that    can be
> used by a Holder either for its own benefit or for the benefit    of
> another Holder.  When presenting a key Binding JWT, the Verifier
> requires that the Holder demonstrates the use of the private key. *
>
>
>
> * 5. On page 12. Section 4.1.2, the text states: *
>
> *   It is out of the scope of this document to describe how the Holder
> key pair is established. *
>
>
>
> *This text is fine. However, it would be useful to add that it is also out
> of the scope of this document to describe how the private key is protected
> and usable by the Holder under the control of the user. *
>
> *Text change proposal: *
>
>
> *   It is out of the scope of this document to describe how the Holder
> key pair is established and how the private key is protected and    usable
> by the Holder under the control of the user. *
>
> * REPLAY DETECTION OF a **Key Binding JWT*
>
> *#508 The iat time at which the Key Binding JWT was issued should not be
> REQUIRED
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/508>*
>
>
> * 6. Section *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *4.3. Key Binding JWT states:    The Key Binding JWT MUST be a JWT
> according to [RFC7519] and its    payload MUST contain the following
> elements:    *  (...)    *  in the JWT payload,       -  iat: REQUIRED.
> The value of this claim MUST be the time at          which the Key Binding
> JWT was issued using the syntax defined          in [RFC7519].       -
> nonce: REQUIRED.  Ensures the freshness of the signature.  The
> value type of this claim MUST be a string.  How this value is
> obtained is up to the protocol used and out of scope of this
> specification. *
>
> * This description does not allow to interoperate in a secure fashion in
> particular while reading section **7.3. Verification by the Verifier*
>
>
>
>
>
> *. How replay *detection* can be done is not described in the document.
> Note: While replay *prevention* cannot be done, replay *detection* can be
> done. Whatever technique is being used, the Verifier must maintain some
> states during a time window. Two techniques can be used. Each one has
> advantages and inconveniences. *
>
>
> *If correctly implemented, both techniques provide the same replay attack
> detection guarantees. The choice of the appropriate technique will be
> context dependant. *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *This means that the document should describe these two techniques. A
> Verifier MUST support these two techniques. However, a Holder MAY only
> support one of these two techniques. Note: The kind of data that will need
> to be kept by the Verifier during the time window will be dependent upon
> the technique being used. For each technique, the time window can be
> different. These two techniques have been described in detail in the
> following issued that was initially raised by Christian.
> https://github.com/oauth-wg/draft-ietf-oauth-attestation-based-client-auth/issues/104
> <https://github.com/oauth-wg/draft-ietf-oauth-attestation-based-client-auth/issues/104>
> In a client - server paradigm, there exist two mechanisms that are able to
> *detect* replay attacks either:      - using "unique numbers" generated and
> sent by a client to a server, or      - using "challenges" generated and
> sent by a server to a client. Unique numbers which are generated by a
> Holder shall be non-repeating for ever. In practice, such requirement can
> be supported by using two parameters: *
>
> *    - the time at which the **Key Binding JWT*
>
>
>
>
>
>
>
>
>
>
>
> * ("iat" claim) has been generated and     - a random number ("rnd" claim)
> that needs to be unique only during a short time-window. This means that
> for using unique numbers, the Holder is required to support a clock
> synchronised with UTC. Challenges generated by a Verifier need to be unique
> only during a short time-window. This means that for using challenges, the
> Holder is not required to support a UTC synchronised with UTC. This leads
> to consider the following three claims: "iat", "rdn" (for random number)
> and "chal" (for challenge). The text quoted at the beginning of this
> comment should be changed into: *
>
>
>
>
>
>
>
>
>
>
>
>
>
> *   The Key Binding JWT MUST be a JWT according to [RFC7519] and its
> payload MUST contain the following elements:    *  (...)    *  in the JWT
> payload,       -  iat: CONDITIONAL.  The value of this claim MUST be the
> time at          which the Key Binding JWT was issued using the syntax
> defined          in [RFC7519].       -  rdn: CONDITIONAL.  Ensures the
> freshness of the signature and          allows to detect replays.  The
> value type of this claim MUST be          a string generated by the Holder.
> *
>
>
>
> *      -  chal: CONDITIONAL.  Ensures the freshness of the signature and
>          allows to detect replays.  The value type of this claim MUST be
>          a string generated by the Verifier. *
>
>
> *EITHER, both the "iat" and the "rdn" claims MUST be present OR the "chal"
> claim MUST be present. Then after, the text from **section **7.3.
> Verification by the Verifier on p**age 35 *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *would need to be fixed. Below is an extract from the current text:    To
> this end, Verifiers MUST follow the following steps (or    equivalent):
> 1.  (...)    5.  If Key Binding is required:        1.  (...)
> (...)        5.  Check that the creation time of the Key Binding JWT, as
>            determined by the iat claim, is within an acceptable window.
>        6.  Determine that the Key Binding JWT is bound to the current
>            transaction and was created for this Verifier (replay
> protection) by validating nonce and aud claims. Text change proposal:    To
> this end, Verifiers MUST follow the following steps (or    equivalent):
> 1.  (...)    5.  If Key Binding is required:        1.  (...)
> (...)        5.  Determine that the Key Binding JWT is bound to the current
>            transaction and was created for this Verifier by validating
>            the aud claims.        6.  Check that the Key Binding JWT is not
> a replay of previously            accepted JWT by checking first whether a*
> * "rdn" claim or a "chal"            claim is present.  If none is
> present, then *
>
>
> *the Key Binding JWT            shall be rejected.        7.  If a *
> *"rdn" claim is present, then the "iat" claim shall also            be
> present, otherwise the*
>
> * Key Binding JWT shall be rejected.            The Verifier shall choose
> a time-window to verify pairs of            **"rdn" and "iat" claims and
> maintain a list of*
>
>
>
> *validated pairs            of "iat" and "rdn" claims.               a) If
> a received "iat" claim is outside of this time-window,
> then the** Key Binding JWT shall be rejected*
>
>
>
>
>
> * and the                  Verifier should respond with an error.
>               b) If a received "iat" claim is inside this time window
>                  and the values both of "iat" claim and of the associated
>                  "rdn" claim are already present in the list of validated
>                  pairs of "iat" and a "rdn" claims, then the*
> * Key Binding                  JWT shall be rejected*
>
>
>
>
>
>
>
> * and the Verifier should respond                  with an error.
>                c) If a received "iat" claim is inside this time-window
>                   and the values both of "iat" claim and of the
>                   associated "rdn" claim are not already present in the
>                   list of validated pairs of "iat" and a "rdn" claims,
>                   and the associated "rdn" claim can successfully be used
>                   to validate a **Key Binding JWT*
>
>
>
>
>
>
>
>
> *, then the Verifier shall                   add the values both of "iat"
> claim and the associated                   "rdn" claim into a list of
> validated pairs of "iat" claim                   and "rdn" claim.
>                   When the value of a "iat" claim from an entry falls
>                   outside of the time-window, the Verifier can remove the
>                   entry from the list. **       8.  If a **"chal" claim
> is present, then the Verifier*
>
>
>
>
>
> * shall check            whether the received challenge has previously
> been generated            and sent to a Holder.  The Verifier shall
> maintain a list of            sent challenges to Holders during a
> time-window chosen by            itself. *
> *              a) If a received "chal" claim is not present in the list,
>                  then the** Key Binding JWT shall be rejected*
>
>
> * and the                  Verifier should respond with an error.
>               b) If a received "chal" claim is present in the list and*
> *                 can be successfully used to validate a **Key Binding
> JWT*
>
>
> *,                  then the Verifier shall remove this value from the
> list                  of challenges.  Otherwise, the value must remain at *
>
>
>
> *                 least until the end of the time-window.
> Note: In order to manage the removal of old challenges                  by
> the Verifier, it is recommended that the Verifier                  locally
> associates a time of issuance with each challenge.*
>
> *It is now necessary to fix the text from section *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *7.2. Processing by the Holder. Below is an extract from the current text:
> (...)    For presentation to a Verifier, the Holder MUST perform the
> following    (or equivalent) steps (in addition to the checks described in
>    Section 7.1 performed after receiving the SD-JWT):    1.  Decide which
> Disclosures to release to the Verifier, obtaining        proper consent if
> necessary.    2.  Verify that each selected Disclosure satisfies one of the
> two        following conditions:        1.  The hash of the Disclosure is
> contained in the Issuer-signed            JWT claims        2.  The hash of
> the Disclosure is contained in the claim value of            another
> selected Disclosure    3.  Assemble the SD-JWT, including the Issuer-signed
> JWT and the        selected Disclosures (see Section 4 for the format).
> 4.  If Key Binding is not required:        1.  Send the SD-JWT to the
> Verifier.    5.  If Key Binding is required:        1.  Create a Key
> Binding JWT tied to the SD-JWT.        2.  Assemble the SD-JWT+KB by
> concatenating the SD-JWT and the            Key Binding JWT.        3.
> Send the SD-JWT+KB to the Verifier. *
>
>
> * It can be seen that in step 5, there is no guidance on how replay
> detection should be handled by the Holder. *
>
>
>
>
> *Text change proposal for step 5:    5.  If Key Binding is required:
>        1.  Decide whether replay detection by the Verifier will be
>            checked using *
> *"unique numbers" generated by the client or            "challenges"
> generated by the **Verifier*
> *.  Using "challenges"            generated by the *
>
>
> *Verifier will only be possible if a            challenge has been
> previously received from the Verifier.        2.  If the Holder chooses to
> use *
>
>
> *"unique numbers", it shall be            able to use a UTC clock and to
> generate a random number, and            shall place two values
> respectively into the "iat" claim and            the "rnd" claim.*
>
> *        3.  If the Holder chooses to use *
>
> *"challenges", it shall place the            received challenge into the
> "chal" claim. *
>
>
>
>
> *        4.  Assemble the SD-JWT+KB by concatenating the SD-JWT and the
>            Key Binding JWT.        5.  Send the SD-JWT+KB to the Verifier. *
>
> *SD-JWT SUSPENSION OR REVOCATION IS MISSING*
>
> *#510 Verification steps for the KB-JWT are missing in section 7.1
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/510>*
>
>
> * 7. Checking SD-JWT suspension or revocation is missing in section 7.1 
> (**Verification
> of the SD-JWT)*
>
>
> * Steps 6 is currently described as follows: *
>
> *   6.  Check that the SD-JWT is valid using claims such as nbf, iat, and
>        exp in the processed payload.  If a required validity-controlling
>        claim is missing (see Section 9.7), the SD-JWT MUST be rejected.*
>
>
>
>
>
>
> * None of the checks that are described is about the checking the status
> of the SD-JWT, e.g., whether it has been suspended or revoked. Add the
> following step: **   7.  Check that the status of the SD-JWT is valid,*
>
>
> * e.g., whether it has        been suspended or revoked.  The way this can
> be accomplished is out        of the scope of this document. *
>
> *UNLINKABILITY*
>
> *NEW COMMENT*
>
>
>
> * 8. On page 48, the text states: *
>
>
>
> *   Verifier/Verifier unlinkability and presentation unlinkability can be
>    achieved using batch issuance: A batch of credentials based on the
> same claims is issued to the Holder instead of just a single
> credential.  The Holder can then use a different credential for each
> Verifier or even for each session with a Verifier.  *
>
>
>
>
>
>
>
> * This description is missing to indicate the major characteristic of a
> SD-JWT when batch issuance is being used: each SD-JWT shall only be used
> once. The batch includes a set of one-time-use SD-JWTs, each one with a
> different content, including a public binding key when key binding is being
> used. The term "**one** time-use digital **credential" should be added
> into the text.*
>
>
>
> * Change proposal: *
> *   Verifier/Verifier unlinkability and presentation unlinkability can be
>    achieved using batch issuance: a batch of one*
> *-time-use digital    *
> *credentials based on the same claims can be issued to the Holder
> instead of just a single **digital *
> *credential.  The Holder can then use    a different **digital *
> *credential for each Verifier or even for each    session with a
> Verifier.  *
>
> *One time-use SD-JWTs shall have a different    content, including a
> different public binding key when key binding    is supported.*
>
>
>
> * POST-QUANTUM RESISTANCE KEY BINDING ALGORITHMS *
>
>
> *#529  43. Update of Issue #514 (new section 9.12) for the support of Post
> Quantum cryptography #529         *
> *https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/529*
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/pull/529>
>
> * 9. It is proposed to add a section about Post-Quantum resistance to
> section 9 (Security Considerations). This text proposal comes from the
> observation that OTS **(One-Time Signatures) *
> *algorithms are well suited to be used with **one**-time-use digital *
> *credentials. *
>
>
>
>
> * Text proposal: 9.15 Post-Quantum resistant key binding algorithms *
>
>
>
>
>
>
>
> *   Implementations of SD-JWT rely on asymmetric cryptographic keys.
> This document does not mandate the use of particular key binding
> algorithm.    It can be observed that Elliptic Curve Digital Signature
> Algorithm    (ECDSA) which offers a variant of the Digital Signature
> Algorithm    (DSA) which uses elliptic-curve cryptography, by construction,
> cannot    be resistant to Post-Quantum computers.  Alternative algorithms
> or    techniques (e.g., ZKP) that would be **Post-Quantum resistant *
>
>
> *are being    explored.    When using batches of **single time-use 
> **credentials
> (see section *
> *10.1),    it is possible to use *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *asymmetric key algorithms that are considered    to be post-quantum
> resistant.  If the private "Binding Key“ is only    used once, then the key
> binding algorithm can Post-Quantum resistant.    This will be the case when
> using OTS (One-Time Signatures) and    inserting the public key of a
> Winternitz - One-Time Plus (WOTS+)    algorithm into a one-time-use digital
> credential.    In case of a lack of Internet access, batches of "one-time
> use digital    credentials” should be requested in advance.
> Interoperability is possible by choosing one (or more) out of seven
> WOTS+ algorithm identifiers that have been registered by IANA.    See:
> https://www.iana.org/assignments/xmss-extended-hash-based
> <https://www.iana.org/assignments/xmss-extended-hash-based>-
> signatures/xmss-extended-hash-based-signatures.xhtml    These algorithms
> are described in [RFC8391], section 5.2 and in    [SP 800-208] section 5. *
> *VOCABULARY*
>
> *#495 The definition of an Holder would need to be reworded
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/495>*
>
>
>
>
> * 10. On page 6, the text states: *
>
>
>
>
>
>
> *   Holder:  An entity that received SD-JWTs from the Issuer and has
> control over them.  In the context of this document, the term may
> refer to the actual user, the supporting hardware and software in
>     their possession, or both. The document only defines a subset of
> protocols between three entities. Figure 1 does not describe the
> interactions between the Holder software and hardware and a human user.*
>
>
>
> * Text change proposal: *
>
>
>
>
>
> *   Holder:  An entity that received SD-JWTs from the Issuer and
> optionally holds the associated private keys and has       control over
> them.  In the context of this document, the term       refers to the
> supporting software and hardware. ARRAY ELEMENTS*
>
> *NEW COMMENT*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> * 11. On page 14. Section 4.2.2, the text states:    For example, a
> Disclosure for the second element of the nationalities    array in the
> following JWT Claims Set:    {      "nationalities": ["DE", "FR"]    }
> could be created by first creating the following array:
>  ["lklxF5jMYlGTPUovMNIvCA", "FR"]    The resulting Disclosure would be:
> WyJsa2x4RjVqTVlsR1RQVW92TU5JdkNBIiwgIkZSIl0 This example is interesting,
> but is not fully privacy preserving. It allows to know that a user has two
> nationalities.  In order to be hide this characteristic, a fixed number of
> values should be used instead by the Issuer and when a user has less than
> this maximum number of nationalities, some values would need to be
> duplicated. For example, if a maximum number of nationalities is 3 and the
> user has only one nationality, the following array should be used:    {
>      "nationalities": ["FR", "FR", "FR"]    } This issue should be
> mentioned here while the solution might be detailed later on, e.g., in
> section 4.2.5.  Decoy Digests. *
>
>
>
>
> * 12. *
>
> *#507 It is important to mention the use of decoy digests and of the
> shuffling of the digests included in the SD-JWT payload
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/507>*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *   On page 17. Section 4.2.5.  Decoy Digests, the text states:    Decoy
> digests MAY be added both to the _sd array for objects as    well as in
> arrays.    (...)    To ensure readability and replicability, the examples
> in this    specification do not contain decoy digests unless explicitly
> stated. Decoy digests work differently whether they apply to the _sd array
> for objects or to an array. This difference is not explained but should be
> explained. Duplicated values in an array is a means to hide the number of
> really significant values in an array. See the example above about:    {
>      "nationalities": ["FR", "FR", "FR"]    } This consideration should be
> added into section 4.2.6. Recursive Disclosures. KEY PAIR GENERATION AND
> LIFECYCLE MANAGEMENT*
>
> *NEW COMMENT*
>
> * 13. On page 46, Section *
>
>
>
>
>
>
>
>
>
> *9.12. Key Pair Generation and Lifecycle Management states:
> Implementations of SD-JWT rely on asymmetric cryptographic keys and    must
> therefore ensure that key pair generation, handling, storage,    and
> lifecycle management are performed securely.    While the specific
> mechanisms for secure key management are out of    scope for this document,
> implementers should follow established best    practices, such as those
> outlined in NIST SP 800-57 Part 1    [NIST.SP.800-57pt1r5]. *
>
>
> * Following this Recommendation is certainly useful, but might lead to a
> false sense of security. On Page 15 from [NIST.SP.800-57pt1r5], the Owner
> (of a key or key pair) is defined as: *
>
> *     "For a static key pair, the entity that is associated with the
> public key and authorized to use the private key".*
>
>
>
>
>
>
>
>
>
>
> * The entity that is associated with the public key and authorized to use
> the private key may use the private key either in an "honest" way or in a
> "dishonest" way. As long as the private key is used in an "honest way",
> there is no problem, but in the context of this draft it is possible to
> disclose a single claim without being identified. The use of private
> binding keys should be restricted to "honest" appropriate applications. It
> is proposed to add the following text at the end of section 9.12:    While
> best practices for an *
>
> *appropriate key management are essential,    in the context of this
> document, while necessary, they are    insufficient.  In particular, a *
> *private binding key should only be    usable by an "honest" appropriate
> application. *
>
>
>
> * EDITORIAL COMMENTS *
> * 14. *
>
> *NEW COMMENT*
>
>
>
> * EDITORIAL change: On page 6, the text states: *
>
>
>
> *   Selectively Disclosable JWT (SD-JWT):  A composite structure,
> consisting of an Issuer-signed JWT (JWS, [RFC7515]) and zero or       more
> Disclosures, which supports selective disclosure as defined       in this
> document. *
> * An *
>
> *SD-JWT is issued to a user. It would be useful to state that the claims
> in the SD-JWT relate to a user that, later on, will be able to consent to
> selectively disclose some claims. Hence the words "issued to a user" have
> been added.*
>
>
>
> * Text change proposal: *
>
>
>
>
> *   Selectively Disclosable JWT (SD-JWT):  A composite structure,
> consisting of an Issuer-signed JWT (JWS, [RFC7515]) issued to       a user
> and zero or more Disclosures, which supports selective       disclosure as
> defined in this document. *
> * 15. *
>
> *NEW COMMENT*
>
> * EDITORIAL change: On page 19, in **Section 4.3. Key Binding JWT*
> * the text states: *
>
>
>
>
>
>
> *    This section defines the Key Binding JWT, which encodes a signature
>    over an SD-JWT by the Holder's private key. A Holder can have more that
> one private key, hence the article "a" should be used instead of the
> article "the". *
> *Text change proposal: *
>
>
>
>
> *    This section defines the Key Binding JWT, which encodes a signature
>    over an SD-JWT by a Holder's private key. **16.*
>
> *NEW COMMENT*
>
> *EDITORIAL change. On page 47, section *
>
>
>
>
>
> *10.1. Unlinkability states:    Unlinkability is a property whereby
> adversaries are prevented from    correlating credential presentations of
> the same user beyond the    user's consent.  Without unlinkability, an
> adversary might be able to    learn more about the user than the user
> intended to disclose, for    example:*
>
>
>
>
>
>
> * The use of the term "adversaries" looks odd as the entities are
> collaborating or colluding but and are not adversaries. Change proposal: *
>
>
>
> *   Unlinkability is a property whereby colluding Verifiers and/or
> Issuers are prevented from correlating credential presentations of    the
> same user beyond the user's consent.  Without unlinkability,    colluding
> parties might be able to learn more about the user than    the user
> intended to disclose, for example:*
>
>
> *17.*
>
> *#520 Section 10.3 (Confidentiality during Transport) should also mention
> integrity
> <https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/520>*
>
> *EDITORIAL change.** On page 50, section 10.3.*
>
> *Confidentiality during Transport *
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *Both confidentiality and integrity during Transport are essential. In
> section 10.3, the text states: Usually, transport protocols for issuance
> and presentation of credentials are designed to protect the confidentiality
> of the transmitted data, for example, by requiring the use of TLS. This
> specification therefore considers the confidentiality of the data to be
> provided by the transport protocol and does not specify any encryption
> mechanism. Confidentiality alone would be insufficient. It is necessary to
> consider both confidentiality and integrity. Everybody is using TLS today
> which supports both confidentiality and integrity. Change into: 10.3.
> Confidentiality and integrity during Transport Usually, transport protocols
> for issuance and presentation of credentials are designed to protect the
> confidentiality and the integrity of the transmitted data, for example, by
> requiring the use of TLS. This specification therefore considers the
> confidentiality and the integrity of the data to be provided by the
> transport protocol and does not specify any specific cryptographic
> mechanism. This text is sufficient and the remaining of this section which
> is copied below can be removed: *
>
>
>
>
>
>
> * Implementers MUST ensure that the transport protocol provides
> confidentiality if the privacy of user data or correlation attacks by
> passive observers are a concern. To encrypt the SD-JWT when transmitted
> over an insecure channel, implementers MAY use JSON Web Encryption (JWE)
> [RFC7516
> <https://drafts.oauth.net/oauth-selective-disclosure-jwt/draft-ietf-oauth-selective-disclosure-jwt.html#RFC7516>]
> by nesting the SD-JWT as the plaintext payload of a JWE. Especially, when
> an SD-JWT is transmitted via a URL and information may be stored/cached in
> the browser or end up in web server logs, the SD-JWT SHOULD be encrypted
> using JWE. *
>
> *Denis*
>
>
> _______________________________________________
> OAuth mailing list -- oauth@ietf.org
> To unsubscribe send an email to oauth-le...@ietf.org
>
>
> _______________________________________________
> OAuth mailing list -- oauth@ietf.org
> To unsubscribe send an email to oauth-le...@ietf.org
>
_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to