w3c / webauthn

Web Authentication: An API for accessing Public Key Credentials
https://w3c.github.io/webauthn/
Other
1.19k stars 172 forks source link

Review privacy concerns around error conditions #2132

Closed emlun closed 1 month ago

emlun commented 2 months ago

The spec contains privacy concerns such as this in the final steps of §5.1.3. Create a New Credential and §5.1.4. Use an Existing Credential to Make an Assertion:

Throw a "NotAllowedError" DOMException. In order to prevent information leak that could identify the user without consent, this step MUST NOT be executed before lifetimeTimer has expired. See § 14.5.1 Registration Ceremony Privacy for details.

These privacy concerns were written for an architecture of these operations that is no longer relevant, and may in fact not have been relevant even at the time the privacy concerns were written (see: https://github.com/w3c/webauthn/pull/2095#discussion_r1698881047). We should review whether these privacy concerns are still valid, or if they can be shown to be redundant under the current specification of these operations and thus removed. This would simplify initiatives such as #2096 and #2095.

Proposed Change

Review the validity of these privacy concerns. If they can be shown redundant, delete the prohibition against returning certain errors due to these privacy concerns.

emlun commented 2 months ago

I aim to do a thorough review of this by the 2024-09-11 WG meeting.

emlun commented 2 months ago

Enumeration of errors

The following errors may be thrown during create() as of commit a871f796c591721c9556f119924ee29484b441f5 (2024-09-04):

During init:

During lifetimeTimer wait loop:

Rearranging this as a map of errors to causes of that error, and assigning numbers to each for easy reference:

Analysis

emlun commented 2 months ago

Enumeration of errors

The following errors may be thrown during get() as of commit a871f796c591721c9556f119924ee29484b441f5 (2024-09-04):

During init:

During lifetimeTimer wait loop:

Rearranging this as a map of errors to causes of that error, and assigning numbers to each for easy reference:

Analysis