Hi Paul,
Apparently my review (based on -06)  and your publication of -07 happened
at about the same time. I will reread -07 and provide my feedback soon.

Regarding point 4, I wrote a quick test while having lunch that shows that
a deflate (level=12) compressed bit-stream becomes much more efficient than
a compressed CBOR array, well before the 1.2% average token revocation
percentage on the Internet (the numbers differ slightly on each run because
the bits which are invalid are randomly selected, but are very close each
run):

Tokens  % Revoked  CBOR size   Field size
------  ---------  ---------   ----------
10^4    0.0%              24          29
10^4    0.1%              51          55
10^4    0.3%             112          93
10^4    0.5%             165         128
10^4    0.8%             240         168
10^4    1.0%             284         191
10^4    1.2%             328         206
10^4    1.5%             401         235
10^4    2.0%             510         279
10^4    3.0%             735         331
10^4    5.0%            1167         429

10^5    0.0%              24          47
10^5    0.1%             327         245
10^5    0.3%             833         540
10^5    0.5%            1284         803
10^5    0.8%            1977        1178
10^5    1.0%            2422        1382
10^5    1.2%            2867        1590
10^5    1.5%            3529        1870
10^5    2.0%            4638        2329
10^5    3.0%            6588        2888
10^5    5.0%           10557        3806

10^6    0.0%              24         156
10^6    0.1%            2667        1925
10^6    0.3%            7359        4861
10^6    0.5%           11592        7361
10^6    0.8%           17246       10764
10^6    1.0%           20874       12854
10^6    1.2%           24348       14825
10^6    1.5%           29415       17538
10^6    2.0%           37700       21857
10^6    3.0%           53821       28415
10^6    5.0%           85279       37429

thanks,
-rohan



On Thu, Feb 6, 2025 at 12:11 AM Paul Bastian <paul.bast...@posteo.de> wrote:

> Hi Rohan, thanks for your feedback. Answers are inline:
> On 06.02.25 02:21, Rohan Mahy wrote:
>
> Hi,
> I support the overall goals of this document. I do *not* think the
> document was ready for WGLC; at minimum there are still plenty of TBDs and
> TODOs in the text. Below are some comments:
>
> We do not have any TODOs in the text. We have TBD in the text for values
> that will be defined by IANA registry which is standard procedure in other
> drafts as well.
>
>
> 1. I would prefer we make the document standards track instead of
> informational.
>
> This is correct, this draft has always been planned for the standards
> track, we will fix the metadata to accompany for that.
>
>
> 2. You have to read through to section 6.2 to see how a verifier
> determines the index of a token it receives in the status value array.
> Please add one sentence in the Introduction saying that the index is in the
> referenced token. You could even update the diagram to reflect this.
>
> This in incorrect, the introduction currently contains the following text:
> "Each Referenced Token is allocated an index during issuance that
> represents its position within this bit array. The value of the bit(s) at
> this index corresponds to the Referenced Token's status." We like the other
> idea, we will investigate the idea to add this to the diagram.
>
>
> 3. The document uses status_list (JSON object) and StatusList (CBOR map)
> to refer to the map, but Status List seems to be used to refer to both the
> compressed byte string (in Section 5) and the uncompressed byte array of
> status values (in Section 4 step 2, and Section 4.1 2nd sentence).
>
> This is correct, we will separate, the parts of section 4 that talk about
> the the uncompressed byte array into its own subsection and not use the
> wording Status List for this. Otherwise, through out the rest of the
> document, Status List refers to the compressed byte array as defined in the
> terminology.
>
>
> 4. CRLs (Certificate Revocation Lists) are a list of the serial numbers of
> every invalidated certificate (with a reason code). While a compressed 1 or
> 2 bit status per token tends to be very compact per issued token, it would
> be useful for the draft to show an analysis of what percentage of issued
> tokens would need to be invalid before a status list would be smaller than
> a CRL-like structure that only references invalid indexes in a (possibly
> compressed) ordered list (assuming randomly distributed invalidations).
>
> I have not seen performance or comparative measures like this in many
> other drafts, we have made analysis and performance measures for our
> presentations at IEFT, for example here:
> https://docs.google.com/presentation/d/1m59OC8uKM4nZ14aH2TM9r2mxEhOiP-G5uqzAZ7oOAUk/edit#slide=id.g2318b641e56_0_23
>
> The comparison with the CRL depends on a bunch of parameters and
> assumptions, so it's not that easy.
>
> What does the working group think about including performance metrics
> itself in the draft?
>
>
> 5. There is no discussion of maximum or recommended limits to the size of
> a Status List. Starting ambitiously, idx is a JSON Number, so we should
> probably follow the recommendation in
> https://datatracker.ietf.org/doc/html/rfc8259#section-6 and say it MUST
> NOT be larger than (2^53) - 1, but a 1-bit status list with that many
> indexes would be 10TB with > 10:1 compression. I think the document needs
> to define a reasonable maximum size, and could allow profiles to make that
> smaller.
>
> I haven't seen an guidance like this in CRL draft either and I believe
> that our assumptions about reasonable sizes in 2025 will not hold in 2035,
> so I'm hesitant to add this kind of guidance.
>
>
> 6. I think it is a mistake to compress the entire status_list (JSON
> object) or StatusList (CBOR map). Instead it would be better to compress
> just the status value array (the "lst" field).
>
>    - Naive implementations might try to decompress the entire object/map
>    to get the bit field before trying to read the array.
>    - If you make the "lst" field an uncompressed byte string in JSON, it
>    will need to be base64url encoded *before* you compress it. Then the
>    status_list object would need to be base64url encoded again. That's
>    wasteful and accomplishes nothing as far as I can tell.
>    - Because JSON maps and CBOR maps are encoded differently, compressing
>    the object/map will make it hard to use a status list across token encoding
>    environments. If only the contents of the "lst" field was compressed, it
>    would allow an issuer to generate JWT/CWT pairs with the same index and use
>    one status list between them. (both would be invalidated together).
>
> I think this is a misunderstanding. The Status List from Section 4 is
> already compressed in the Step 3. Section 4.1 about Status List in JSON
> Format has an "lst" field that then contains the compressed byte array,
> which must however be base64-encoded as JSON does not support. byte array.
> Section 4.2 about Status List in CBOR Format has an "lst" field that then
> contains the compressed byte array directly. I don't see how we can be any
> more space-efficient than this. Therefore, JSON and CBOR structures would
> contain the same Status List byte array.
>
> Furthermore, we have test vectors in the Appendix, so that implementations
> can verify correctness.
>
> 7. I am surprised by some details of the CBOR encoding:
>
>    - Traditionally, CWT maps have integer keys for comment values. Why
>    not replace "bits" with 1, and "lst" with 2?
>    - The document registers CWT claim keys 65534 and 65535. Why not ask
>    for unused numbers in the 24-256 range?
>    - It wasn't immediately clear from the text that the status list is a
>    bstr encoding of the compressed serialized map. If we implement my
>    recommendation in #6, this problem goes away.
>
> - We have talked to people from the CBOR world and apparently this is what
> people do today, e.g. in the ISO mdoc world, but we are open for
> discussions here.
> - We have talked to Mike Jones about this, who is one of the designated
> experts for CWT and this was his recommendation
> - We have the text: "lst: REQUIRED. Byte string (Major Type 2) that
> contains the Status List as specified in Section 4
> <https://drafts.oauth.net/draft-ietf-oauth-status-list/draft-ietf-oauth-status-list.html#status-list>."
> which clearly references bstr.
>
> 8. There should be a CDDL snippet for the CBOR. I would be happy to
> provide one once points 6 and 7 are addressed.
>
> If CDDL is requested and helps the understanding, then we can add this to
> the draft.
>
>
> 9. I think it will be important for implementers to have some advice on
> constructing a logical scope for Referenced Tokens to be interoperable, so
> that issuers have good practices for recycling indexes. For example if all
> the tokens with the same status list URL have roughly the same duration of
> validity, cycling through URL paths would eventually allow reuse after all
> previously referenced tokens had expired.
> Is it ok to generate a Status List for 100 tokens, then generate a new
> Status List with the same "referenced token scope" that covers 200 tokens
> (including the first 100 tokens)? If so, that would be good to say.
>
> We have some guidance here:
> https://drafts.oauth.net/draft-ietf-oauth-status-list/draft-ietf-oauth-status-list.html#name-referenced-token-lifecycle
> saying "The lifetime of a Status List Token depends on the lifetime of its
> Referenced Tokens. Once all Referenced Tokens are expired, the Issuer may
> stop serving the Status List Token." We did not want to encourage re-usage
> of indices, as this may introduce security issues.
>
> 10. NIT: Section 6.3 refers to status_list but I think you mean StatusList
>
> The CWT status structure says: "Each data item in the Status CBOR
> structure comprises a key-value pair, where the key must be a CBOR text
> string (Major Type 3) specifying the identifier of the status mechanism and
> the corresponding value defines its contents. This specification defines
> the following data items:", so indeed "status_list" refers to a CBOR text
> string.
>
>
> Thanks,
> -rohan
>
> Thanks for your feedback. Best regards,
>
> Paul+Christian
>
>
>
> On Thu, Jan 2, 2025 at 5:53 AM Rifaat Shekh-Yusef <rifaat.s.i...@gmail.com>
> wrote:
>
>> All,
>>
>> This is a WG Last Call for the *Token Status List *document.
>> https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/
>>
>> Please, review this document and reply on the mailing list if you have
>> any comments or concerns, by *Jan 17th*.
>> Note that this document will be discussed during the OAuth WG *interim*
>> on *Jan 13th*.
>>
>> Regards,
>>   Rifaat & Hannes
>>
>> _______________________________________________
>> 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
>
_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to