Thanks for the thorough follow-up; LGTM1

Best,

Alex

On Wednesday, March 1, 2023 at 11:35:29 AM UTC-8 Nina Satragno wrote:

> Hey Rick!
>
> On Mon, Feb 27, 2023 at 6:14 PM Rick Byers <[email protected]> wrote:
>
>> Hi Nina,
>> Seems pretty solid to me, just a few questions inline.
>>
>> On Wed, Feb 22, 2023 at 5:15 PM Nina Satragno <[email protected]> 
>> wrote:
>>
>>> *Contact emails*
>>> [email protected], [email protected]
>>>
>>> *Explainer*
>>>
>>> https://github.com/w3c/webauthn/wiki/Explainer:-WebAuthn-Large-Blob-Extension
>>>
>>
>> *Specification*
>>> https://www.w3.org/TR/webauthn-2/#sctn-large-blob-extension
>>>
>>> *Summary*
>>> The WebAuthn large blob extension allows relying parties to store opaque 
>>> data associated with a credential. This is useful for authentication 
>>> schemes involving storing certificates on authenticators.
>>>
>>
>> Sorry if it should be obvious, but can you say a little more about 
>> the utility? How are such certificates expected to be used? The explainer 
>> doesn't describe the developer/user benefits of this feature.
>>
>
> It's not obvious at all! I added an example use cases 
> <https://github.com/w3c/webauthn/wiki/Explainer:-WebAuthn-Large-Blob-Extension#example-use-cases>
>  section 
> with two I could conjure: offline SSH authentication in the context of SSO, 
> and E2E messaging.
>  
>
>> Do you know of any specific RPs who are looking to deploy such features? 
>> What value does it bring them or their users?
>>
>>
> During the prototype period, we had a handful of developers reach out to 
> ask for availability & file bugs (e.g. crbug.com/1282491, 
> crbug.com/1312802, crbug.com/1312788). We also had a couple large RPs 
> express interest privately.
>  
>
>> When we're the first engine to ship, the API owners are tasked with 
>> making an risk vs. moving the web forward tradeoff evaluation and it's not 
>> clear to me from the explainer exactly how this "moves the web forward". 
>> Maybe worth adding a few sentences to the explainer?
>>
>> *Blink component*
>>> Blink>WebAuthentication
>>>
>>> *Search tags*
>>> webauthn, large blob, blobs
>>>
>>> *TAG review*
>>> https://github.com/w3ctag/design-reviews/issues/820
>>>
>>> *TAG review status*
>>> Pending
>>>
>>> *Risks*
>>>
>>> *Interoperability and Compatibility*
>>> Low. This feature has long been part of the WebAuthn L2 recommended 
>>> standard <https://www.w3.org/TR/webauthn-2/#sctn-large-blob-extension>. 
>>> It is supported by production CTAP 2.1 security keys as well as recent 
>>> enough versions of the Windows WebAuthn API.
>>>
>>> Gecko: No signal (
>>> https://github.com/mozilla/standards-positions/issues/750)
>>>
>>>
>>> WebKit: No signal (
>>> https://github.com/WebKit/standards-positions/issues/139)
>>>
>>
>> Looks like that's in-development now (though Ricky does say they want to 
>> study the privacy and security properties a little more).
>>
>> Web developers: Positive. We had a few developers reach out about 
>>> availability, e.g. crbug.com/1282491.
>>>
>>> Other signals: Microsoft has shipped the OS-level large blob API, see 
>>> https://github.com/microsoft/webauthn/blob/master/webauthn.h
>>>
>>> *Ergonomics*
>>> WebAuthn is already an asynchronous API with a "long" time to get a 
>>> response (in the order of seconds) since it needs user interaction. Adding 
>>> this feature will not impact the "normal" webauthn flow. For relying 
>>> parties (i.e. websites) using it, it won't significantly affect performance.
>>>
>>
>> Can you say a little bit about storage limits? This is to be stored on 
>> the authenticator itself, right? Is there a max size per credential or RP? 
>>
>
> We are limiting the pre-compression size of each blob to 2kb.
>
> The storage capacity depends on the authenticator. Phones will essentially 
> have "unlimited" storage, while security keys will have comparatively 
> little. The key I have on my desk reports a max size of 1kb 
> (post-compression). The way we've seen this storage implemented in security 
> keys is as a shared space for all RPs that is dedicated to large blobs (so 
> filling it does not stop the creation of new resident credentials).
>
> There are a lot more phones out there than security keys out there.
>  
>
>> To what extent should we worry about one RP taking up all the space and 
>> breaking functionality of other RPs? Are there any mechanisms to 
>> minimize this, or at least for us to monitor whether this is a problem in 
>> practice, and if so which origins are the biggest users?
>>
>
> If a website tries to write a large blob when the storage is full, Chrome 
> will report the failure to write back to the relying party which can handle 
> this error.
>
> Users can go to chrome settings (chrome://settings/securityKeys) to manage 
> the storage for their security keys. Deleting a credential will remove its 
> accompanying large blob. Additionally, visiting the settings page for a 
> security key will trigger a "garbage collection" for the edge case where a 
> user might have deleted a credential using a tool that does not know about 
> large blobs, which would otherwise leave an orphaned blob.
>
> I'll go ahead and add a histogram to the large blob operation result so we 
> can measure failure conditions (like the storage being full). However, I'm 
> not sure if there would be a lot of value in adding RP-keyed metrics. Using 
> the full storage doesn't necessarily mean they're abusing the API. Perhaps 
> we can revisit if we see high numbers of failures due to the storage being 
> full.
>  
>
>> Is there any sort of space reclamation protocol for unused credentials? 
>> Do we expose the space used per RP in our user UI?
>>
>>
> We don't show the space used per RP. This might be somewhat tricky to 
> communicate, as we would know the post-compression space, which is not what 
> the RPs see. My recommendation here is to wait and see if this becomes a 
> problem first, and if it does, augment this UI surface.
>
> --
>
> I filed bugs for the metrics 
> <https://bugs.chromium.org/p/chromium/issues/detail?id=1420691> and max 
> size limiting 
> <https://bugs.chromium.org/p/chromium/issues/detail?id=1420688> I talked 
> about as action items.
>
> Hopefully this answers all your questions.
> Cheers!
>  
>
>> *Activation*
>>> This feature can't be polyfilled since it relies on hardware support. 
>>> Large blob is a fairly simple feature, only exposing a way to query for 
>>> support, write, and read blobs. Integration with existing frameworks 
>>> exercising webauthn should be straightforward.
>>>
>>> *Security*
>>> The implementation requires compressing and uncompressing arbitrary 
>>> data. This is done in the data decoder service 
>>> <https://source.chromium.org/chromium/chromium/src/+/master:services/data_decoder/gzipper.h>,
>>>  
>>> which runs in a sandboxed process. This implementation feature was 
>>> security-reviewed 
>>> <https://chromium-review.googlesource.com/c/chromium/src/+/2464011>.
>>>
>>> *WebView application risks*
>>> None.
>>>
>>> *Debuggability*
>>> Developers can use the devtools webauthn tab 
>>> <https://developers.google.com/web/tools/chrome-devtools/webauthn> to 
>>> debug this feature. Support can be toggled on or off to simulate 
>>> authenticator capabilities. 
>>>
>>
>> *Will this feature be supported on all six Blink platforms (Windows, Mac, 
>>> Linux, Chrome OS, Android, and Android WebView)?*
>>> No.
>>>
>>> This feature will be supported on Mac, Linux, Windows (< 10 19h1; >= 
>>> 11), & Chrome OS. Windows >= 10 19h1 relies on a high-level API. Support on 
>>> that high level API landed on Windows 11. Similarly, the android webauthn 
>>> implementation relies on a higher level API that does not support this 
>>> feature.
>>>
>>> *Is this feature fully tested by web-platform-tests?*
>>> Yes. https://wpt.fyi/webauthn, see large-blob
>>>
>>> *Flag name*
>>> enable-experimental-web-platform-features
>>>
>>> *Requires code in //chrome?*
>>> No.
>>>
>>> *Tracking bug*
>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1114875
>>>
>>> *Measurement*
>>> None.
>>>
>>> *Non-OSS dependencies*
>>> On Windows, for security keys the API depends on a version >= 3 of the 
>>> WebAuthn 
>>> API <https://github.com/microsoft/webauthn/blob/master/webauthn.h>. 
>>> This is currently present on recent enough versions of Windows 11. On 
>>> Android, for security keys the API depends on the Google Play Services 
>>> implementation of FIDO. At the moment, Play Services does not support CTAP 
>>> 2.1, which is required for this feature. On Mac & Linux, support for 
>>> security keys is provided by Chrome. On all desktop platforms, support for 
>>> hybrid (i.e. phone/tablet) authenticators does not depend on the OS.
>>>
>>> *Sample links*
>>> https://webauthn-large-blob.glitch.me
>>>
>>> *Estimated milestones*
>>> M113
>>>
>>> *Anticipated spec changes*
>>> None.
>>>
>>> *Link to entry on the Chrome Platform Status*
>>> https://chromestatus.com/feature/5657899357437952
>>>
>>> *Links to previous Intent discussions*
>>> Intent to prototype: 
>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/t_9QdJ7hcls/m/CAAOGBIVBgAJ
>>>
>>> --
>>> Nina Satragno
>>> she/they
>>>
>>> -- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "blink-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to [email protected].
>>> To view this discussion on the web visit 
>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAB0jio%3DVeazm9pRoLcLm62XhHZEdPmBMoOFEwatDukkijXSmhQ%40mail.gmail.com
>>>  
>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAB0jio%3DVeazm9pRoLcLm62XhHZEdPmBMoOFEwatDukkijXSmhQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>
> -- 
> Nina Satragno
> she/they
>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/18ed2ade-e5d8-47be-8a09-5907048af8d4n%40chromium.org.

Reply via email to