Passkeys should not be resident keys when deployed #49883
Replies: 5 comments 11 replies
-
This isn't completely accurate. The relying party can register a new credential for the same user id, and it should overwrite the previous one. An RP like GitHub can even instruct users to do that after they change their username or display name. |
Beta Was this translation helpful? Give feedback.
-
|
I think GitHub is between a rock and a hard place here. While it's true that iOS will always create a discoverable credential regardless of the options passed to it, Android requires Relying Parties to "opt in" to passkey creation by setting either I offer a counter-point to @Firstyear's position: Relying Parties must always at least prefer resident key creation during WebAuthn registration. The idea here is that GitHub has more to gain from encouraging as many authenticators as possible to create a passkey that will likely get synchronized and thus survive device loss. Getting a user to register a credential that will get backed up would allow for many more users to retain access to their GitHub accounts if they trade in their phones, for example, or have to replace it because it "fell into the ocean". This position, admittedly, assumes that the majority of users opting into WebAuthn-based account protection here will be using their on-hand mobile device as opposed to users who choose to embrace the security key life. To be clear, I don't like that RP's have been put in this unenviable position through inadequate authenticator selection options in WebAuthn. Given the current state of passkey providers, though, I think it's best for Relying Parties to optimize for passkey registration across Apple, Google, and eventually Microsoft-influenced platform authenticators for the sake of maintaining account access after device loss. |
Beta Was this translation helpful? Give feedback.
-
To be completely fair, don't exclude men. They can change their names too, where I live even as a result of marriage (which I presume was the reason you highlighted women): they can adopt or partially adopt their spouses family name. |
Beta Was this translation helpful? Give feedback.
-
|
This is very strange proposal. Discoverable credentials is the future. If your key is dated -- update to newer ones. Newer Yubikeys come with up to 100 passkeys storage. Token2 tokens come with up to 300 passkeys. This is more than enough to use residential keys for literally everything and enjoy usernameless flow. |
Beta Was this translation helpful? Give feedback.
-
|
This is a really important and well-explained point. Supporting non-resident keys by default seems like a practical and more inclusive approach—especially given the hardware limitations and personal data implications you mentioned. Thanks for highlighting this nuance. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Select Topic Area
General
Body
In the blog https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13/ the authors discuss that github is experimenting with passkeys internally.
Unfortunately due to community split about what "passkeys" should mean there are multiple definitions. Sadly the prevailing definition is that "passkeys must be resident keys". (resident=required).
However, since yubikeys and other security keys will always be accepted in areas a "passkey" will this causes significant issues. First, most keys lack storage space for resident keys - ranging from 8 to 32 key slots - which will rapidly fill up when more sites push for residency.
But second and far worse is that many keys that are CTAP2.0 (which is the vast majority of keys in use) do not support the ability to alter or delete resident keys once created. Since resident keys also include small amounts of PII such as names this can cause significant issues for members of the transgender community or women who are changing their names. The only way to remove these keys is to reset the entire device, wiping all it's resident keys and resetting it's internal primary key breaking all resident and non-resident keys ever registered.
Since resident keys have the potential to significantly harm individuals in the community, github should prioritise that it's passkey implementation does not force key residency. The options in webauthn must be set to "resident=discouraged" as preferred and required will both trigger this issue.
Thanks,
EDIT: Worth pointing out that as a relying party (auth provider) there is no way for you to detect if a key is ctap2.0 or otherwise during registration meaning there is no way to selectively ask for residence or not. Also important to note that even if you set resident=discouraged you will still have access to conditional UI because devices like Apple's Passkeys will always create resident keys even under discouraged and will have access to conditional UI. Apple Passkeys also do support PII updating and management so these are not a risk to individuals. So you will still gain the benefits of residency on keys that support it opportunistically, but without causing harm to users - best of both worlds!
Beta Was this translation helpful? Give feedback.
All reactions