- From: Denis Pinkas <denis.w3c@free.fr>
- Date: Mon, 11 Jan 2021 18:42:53 +0100
- To: nadalin@prodigy.net, 'W3C Web Authn WG' <public-webauthn@w3.org>, 'John Fontana' <jfontana@yubico.com>
- Message-ID: <926a72bd-3592-9aa0-70d9-2a38c16a8587@free.fr>
Please find my comments below. > Here is the link to the Level 2 Webauthn CR Web Authentication: An API > for accessing Public Key Credentials - Level 2 (w3.org) > <https://www.w3.org/TR/2020/CR-webauthn-2-20201222/> > > The WebAuthn WG can issue a CfC to move to Proposed Recommendation > after the CR comment period closes 19 January, and publish the PR for > AC review on 9 February if we chose to do so. > > Thanks to everyone for helping get to this milestone, and Wendy and > John for working on the CR package. > I browsed through this draft document and I have a few comments. *1) General comments* : This document is hard to read and to understand since it is lacking an overview. The document looks more like an implementation guide to be used by programmers only. The document includes many options/possibilities that should be presented and explained in a single place. The differences with FIDO U2F are scattered through the document and are not sufficiently explained. An informative Annex would be welcomed. *2) *Section 13.5.6 (about *Credential Loss* and Key Mobility) states*: * This specification defines no protocol for backing up credential private keys, or for sharing them between authenticators. In general, it is expected that a credential private key never leaves the authenticator that created it. Losing an authenticator therefore, in general, means losing all credentials bound to the lost authenticator, which could lock the user out of an account if the user has only one credential registered with the Relying Party. *This is the **Achilles' heel of this draft*. From an "ease of use" point of view, the lack of the ability to perform a back-up copy of an hardware authenticator is not acceptable for the users. Registering multiple authenticators, as suggested in a Note, is not an appropriate solution. A user should be able to perform the backup of an hardware authenticator under the condition that only one hardware authenticator can be made active at a given instant of time. Such a back-up mechanism is technically feasible but mandates the definition and the development of an additional architecture. Without this additional architecture, many (if not most) users will refrain to use FIDO. _Note_: If back-up devices are being used, the use of the "signature counter" by Relying Parties should be deprecated. Its use is left at the discretion of Relying Parties. *3) *The definition of the term " Virtual Authenticator " is missing is section 4 (Terminology). It only appears for the first time in Sections 11.1 and 11.2 together with "extension commands". It is supposed to be a piece of software, but its implementation is unclear: "Virtual Authenticators are stored in a Virtual Authenticator Database". The term "Virtual Authenticator Database" is also left undefined. What is the relationship with an hardware authenticator ? What about the user's mobility ? Section 11.7 defines a "Remove Credential" extension command which is interesting from management purposes. Is this command mandatory to implement ?/ / *4)* An authenticator is able to locally store a set of data for each//Relying Party Identifier (rpIdHash). The management functions for this set of data are not clearly identified. From a user point of view, there is the need to be able : * to know approximately the numbers of entries that can be locally stored into an hardware authenticator, (a) before buying it and (b) when using it, and * to remove "old" entries that have not been used for a long time * to identify the URL associated with each entry. For the first need, when users buy an hardware authenticator, they should be able to approximately know how many entries can be stored in that authenticator. The current document does not help since it only talks about a "byte array of 37 bytes or more". When the authenticator is being used, it does not seem that there exists an API or a command retrieving data that allow to compute that information. For the second need, two items would be needed: * a "last-used date" that would be added (and updated) for each entry, and * a delete entry API or command (can the"Remove Credential" extension command be used ?). It would be particularly useful to support a "last-used date". Although WebAuthn Extensions are being defined, these kinds of extensions do not seem to be appropriate since they are only intended to be used by Relying Parties. For the third need, it is well understood that the rpIdHash is shorter than a URL, but it is not meaningful for a user. How can a user recognize that he does not use any longer a given URL ? Some guidance about the surrounding software of the (i.e. the client) should be given. It is suggested to allow to support the full URL and the "last-used date" at the level of the API but to leave some flexibility how it may be implemented. For example, if the authenticator has a large memory, these two items would be supported by the authenticator itself. On the contrary, if the authenticator has a small memory, these two items would be supported by a "shadow authenticator" that would be stored by the client in a file. *5)* Authorization Gesture, User Consent and Test of User Presence As explained in the draft: An authorization gesture is a /physical interaction/ performed by a user /with an authenticator/. An authorization gesture is a ceremony component often employed to indicate /user consent/. A test of user presence is a simple form of authorization gesture and technical process where a user interacts with an authenticator /by (typically) simply touching it/ (other modalities may also exist). These sentences prevent to use a component like a cryptographic SD card that would be inserted into a smart phone or a laptop. An interaction with a smart phone or a laptop (instead of the authenticator) should be possible. It would be interesting to understand when and how the user consent would be obtained when the user is using the smart phone or the laptop instead of a physical button placed on the authenticator. *6)* There are some empty sections where text should be added: * 13.4. Security considerations for clients * 14.5. Privacy considerations for clients *7)* There is a typo in Section 1.1: "expecially". Denis
Received on Monday, 11 January 2021 17:43:09 UTC