Preventing registration on multiple devices #12
-
I have read the considerations about avoiding turning webauthn into a super cookie but the whole point of biometrics is to be able to identify a user on any device. So imagine the following use case. You are developing a wallet for universal basic income. To avoid malicious behavior you want to make sure a user can register only once and can't get new wallets from new devices. Is there a way to achieve that while maintaining the security per device? Is it possible to avoid tracking while covering this use case? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 17 replies
-
Most default authenticators create synced passkeys which are available on all of a user's devices. As passkeys are intended to replace phishable sign in credentials, this is by design. Note that WebAuthn is not a biometrics API , biometrics are not required, and they can't be enforced. |
Beta Was this translation helpful? Give feedback.
-
Not sure I fully understand your use case but we can deal with it this way: When enrolling for the first time, make the key 'non-resident'. This will ensure it is not synced across his devices. Also you may enforce user-verification (UV) which ensures that the user will have to either use his biometrics or device screen lock to use the key. Now in your database you maintain the credentialId of this device against your username. Now your idea is that one user should be able to use only 1 credential manager. That cannot be enforced using webauthn or passkeys. You have to enforce that using some other design like govt id verification or something. And I don't understand what you mean by 'avoid tracking'. Webauthn is not used for tracking users anyways. |
Beta Was this translation helpful? Give feedback.
-
Will try to clarify here the scenario. So the idea of biometrics in general is to prove uniqueness. That is no two people can have the same fingerprint. This allows for basically replacing any other forms of verification such as official IDs. The problem I have with WebAuthn is that based on that same fingerprint it creates different public keys every time(a deterministic input produces non-deterministic output) thus preventing me from understanding if it's the same user on another device. The authenticator knows precisely who the user is because of the actual biometrics data but the developer doesn't. The only way to tell is by comparing public keys. Anything else discussed is side-tracked to that simple scenario. So it all boils down to this: Is it possible for me to guess if the same person is sitting in front of two different devices based on public keys when he tries to register and has no shared keys? |
Beta Was this translation helpful? Give feedback.
No. It is not possible with WebAuthn. In context of WebAuthn, biometrics just signify that you are the owner/ authorized user of the device. There is no way to extract biometric information from the credentials.
On a seperate note, I would suggest you to not use WebAuthn for this use case. Instead you may use some services like CloudScanr that would help you achieve your goal.
Note that these services like CloudScanr does not support your smartphone's inbuilt fingerprint scanner. You may have to connect one via USB. Or you can use facial recognition to get to your goal without any added hardware.