forked from LedgerHQ/ledger-u2f-javacard
-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit adds support for multiple (8) counters, which as assigned in a round-robin style to each registered credential. Each counter is independent and starts at zero. This makes it more difficult for colluding services to determine which authenticators might be shared between accounts. The impetus for this change is well articulated in the [Webauthn Specification][webauthn]: > [Authenticators] SHOULD implement per credential signature counters. > This prevents the signature counter value from being shared between > Relying Parties and being possibly employed as a correlation handle > for the user. [webauthn]: (https://www.w3.org/TR/webauthn/#sign-counter In order to do this, the `FIDOAPI` interface needed to be modified to allow the counter index to be stored at registration and recovered at authentication. Also, the implementation of `FIDOStandalone` was significantly modified to allow the counter index to be securely included in the key handle without increasing the key handle length. Previously, `FIDOStandalone` was storing the entire application parameter in the key handle. In this change only the CBC-MAC of the application parameter is stored in the key handle. Of the 16 bytes that were freed up by doing this, the first of them is used to store the counter index and the rest are set to zero. No other changes to the key handle format were made. While it would have been possible to reduce the key handle length to 49 bytes, this would have a negative impact on privacy since 49 bytes is an unusual key handle length. 64 byte key handles are very common, so this change maintains that length.
- Loading branch information
1 parent
24b6f13
commit 554b071
Showing
4 changed files
with
223 additions
and
102 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.