[OAUTH-WG] Re: WGLC for Token Status List
Rohan Mahy <rohan.mahy@gmail.com> Fri, 07 February 2025 21:31 UTC
Return-Path: <rohan.mahy@gmail.com>
X-Original-To: oauth@ietfa.amsl.com
Delivered-To: oauth@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 5EEC5C1E5F22 for <oauth@ietfa.amsl.com>; Fri, 7 Feb 2025 13:31:00 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.105
X-Spam-Level:
X-Spam-Status: No, score=-2.105 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Koism8DDIGaN for <oauth@ietfa.amsl.com>; Fri, 7 Feb 2025 13:30:56 -0800 (PST)
Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id D17B4C1E5F36 for <oauth@ietf.org>; Fri, 7 Feb 2025 13:30:50 -0800 (PST)
Received: by mail-ed1-x52a.google.com with SMTP id 4fb4d7f45d1cf-5dccaaca646so4856957a12.0 for <oauth@ietf.org>; Fri, 07 Feb 2025 13:30:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738963849; x=1739568649; darn=ietf.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=lA2DgMZ/1fc1JlZQgpjb1W9BNkeZKxh7YV0/OKQxyp8=; b=IPcAzdPPzA0WpbAqJHiWZKfYQWXCA9ckS4jpoG3chjmqZdB6NLYJhRwZZ7qEstRiCX q0+XFydoitIS1bUfIo0HvULHPTsWskP/lx+jcJsqoj/Oyp+yXepxZskVldoyI4BzsRsi GQ9vC8/uu4vVLq5HG44ljR9hrxppS/wBs/2vZuOVjeFIr1uYV05moeCzXZrln/dTN0cn i9aQzkfpNB0EHUjF0kXmiHDS/flCTwKgCpX/6xuplik7oT4CdMGzMwf25ndhMo0uQXwX V7qsHEtJSuNrGyrnReNTvRKVec/w2LBEduY5Cs9LbinwfBVRv93FT/5PQwYRJOZ+sKtH 6y+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738963849; x=1739568649; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=lA2DgMZ/1fc1JlZQgpjb1W9BNkeZKxh7YV0/OKQxyp8=; b=bCy7Kp0REhx5c6gIFOSOviBU6XW8qdhtyOdGdK4pJg4wMJ5wUQIn01ZesBjOFfWybh AAT4w+iGmPdhO/8dLStOAZHIUBguGkIl30ShVl01gTXtc37YdWBf8ruwBGovWDTUlHCR KmqsGQhOdrYt1tBCrYr1hTlM8tROFmghvfvRXc21g8ykm5GFjcgsHJ0OhnfgjpMVGjtN Jme8HVq5l81DYyHfK7FxwBU/i5Qoeng0jtwrQjplVNGT3RiiFc4XGyMst2gUKWi3Ko52 QS4ao86rn5YCCsSijuc0uwfGg4T25eevSbKBYzKfn3iqm13EwKODrtsjYk0o7uhiqkA2 iYPQ==
X-Gm-Message-State: AOJu0YxQOTouyXkHg7YOFsTjvR6ukauh+1R4OdkhPzbZhi3UEaZC9mmR dZRUxxZ6kNC5O6I3Kd0ztuKtaFf54oIP+h+32y2hw9lWb08Vux+cAD1R1GwRJBSrHdq3uNa0acR Y/6KFJ3g4dXQaq/MQm+pCaOZ+9fg=
X-Gm-Gg: ASbGnct8JAVSlY0+ed32Jmd9hSXTkBMRQ9d0nD76IOCgOZPWF+YcxCB4G4PTk06zyfI RHAPTn2z03/+aUigRDUi8JXKjq3DuJ2hUDWkkiqvUZQz0WWNyAjnZeGX9YRFSF0PyCbwfQQVp7y 4=
X-Google-Smtp-Source: AGHT+IGtS1FCxeLNj02bPZWdXYFhzxgZ11BHFYFsNtHLaI54P4Ge4Ar9//+VFJCLYlaiDXtYlvRyqP6H+orHSJWTXuk=
X-Received: by 2002:a05:6402:4014:b0:5d9:3118:d0b8 with SMTP id 4fb4d7f45d1cf-5de469cc32amr5501102a12.8.1738963848360; Fri, 07 Feb 2025 13:30:48 -0800 (PST)
MIME-Version: 1.0
References: <CADNypP_kmt2PdOJoUa+TNpYHYbfdyv+j2pteSaHsrPk4oxdqFw@mail.gmail.com> <CAKoiRuadWywURt0BuXb3yLU1Mo-nq95WGHov0dbghr2W4ND9Vw@mail.gmail.com> <2952fd2b-8653-49d9-aec2-2c482678ea4d@posteo.de>
In-Reply-To: <2952fd2b-8653-49d9-aec2-2c482678ea4d@posteo.de>
From: Rohan Mahy <rohan.mahy@gmail.com>
Date: Fri, 07 Feb 2025 13:30:37 -0800
X-Gm-Features: AWEUYZk-feKwjFjQLhdhsFU7X1mQijHTQrdWc6DIaLS0jleQAzmGmgWZn1uu1dM
Message-ID: <CAKoiRuYudcKftD2kxAnV08ZmExkwYzRjsN7iG8Fc6JfJHTfkpQ@mail.gmail.com>
To: Paul Bastian <paul.bastian@posteo.de>
Content-Type: multipart/alternative; boundary="000000000000757b00062d9412a1"
Message-ID-Hash: RBW6PFHMLWR6AZDW6VPNBGNMDTCXPRYI
X-Message-ID-Hash: RBW6PFHMLWR6AZDW6VPNBGNMDTCXPRYI
X-MailFrom: rohan.mahy@gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-oauth.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: oauth@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Re: WGLC for Token Status List
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/20CND4k8Ticqx3XQGM9wMZicFvg>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>
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.bastian@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.ietf@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-leave@ietf.org >> > > _______________________________________________ > OAuth mailing list -- oauth@ietf.org > To unsubscribe send an email to oauth-leave@ietf.org > > _______________________________________________ > OAuth mailing list -- oauth@ietf.org > To unsubscribe send an email to oauth-leave@ietf.org >
- [OAUTH-WG] WGLC for Token Status List Rifaat Shekh-Yusef
- [OAUTH-WG] Re: WGLC for Token Status List Oliva Fernandez, Jorge
- [OAUTH-WG] Re: WGLC for Token Status List Watson Ladd
- [OAUTH-WG] Re: WGLC for Token Status List Giuseppe De Marco
- [OAUTH-WG] Re: WGLC for Token Status List Rifaat Shekh-Yusef
- [OAUTH-WG] Re: WGLC for Token Status List chris.bormann@gmx.de
- [OAUTH-WG] Re: WGLC for Token Status List Dean Saxe
- [OAUTH-WG] Re: WGLC for Token Status List Denis
- [OAUTH-WG] Re: WGLC for Token Status List Dean Saxe
- [OAUTH-WG] Re: WGLC for Token Status List Dean Saxe
- [OAUTH-WG] Re: WGLC for Token Status List Christian Bormann
- [OAUTH-WG] Re: WGLC for Token Status List Watson Ladd
- [OAUTH-WG] Re: WGLC for Token Status List Christian Bormann
- [OAUTH-WG] Re: WGLC for Token Status List Rohan Mahy
- [OAUTH-WG] Re: WGLC for Token Status List Paul Bastian
- [OAUTH-WG] Re: WGLC for Token Status List Rohan Mahy