KeePassDX
KeePassDX copied to clipboard
Support for Passkeys
Wondering if it is time to resurrect the request for passkeys support. The initial support has come to Android and it may soon be possible to have 3rd-party apps managing passkeys on devices. I'd like my passkeys stored in .kdbx files, along with other sensitive data. At this point, this is a brainstorming and research stage. Also, this could be related to some other issues involving FIDO standards.
The end-result is to have KeePassDX as the storage and a key generator for Passkeys on Android.
Background info:
- https://fidoalliance.org/passkeys/
- https://developer.apple.com/passkeys/
- https://developers.google.com/identity/passkeys
- https://android-developers.googleblog.com/2022/10/bringing-passkeys-to-android-and-chrome.html
- https://developers.google.com/identity/passkeys/supported-environments
- https://www.passkeys.io/
Add Android Credential provider :
- https://developer.android.com/training/sign-in/credential-provider
Emphasis on the statement from Google:
Note: In the future, Android users will be able to use third-party credential management apps to store their passkeys.
https://github.com/keepassxreboot/keepassxc/pull/8825 https://w3c.github.io/webauthn/ https://passkeys.dev/docs/tools-libraries/libraries/ https://github.com/webauthn4j/webauthn4j https://github.com/passkeydeveloper/discussions/discussions
Tests : https://passkey.org/ https://www.passkeys.io/ https://webauthn.io/
Issues : https://github.com/bitwarden/mobile/issues/3253 https://community.bitwarden.com/t/passkey-android-beta/66467/10 https://issuetracker.google.com/issues/349310440
also https://github.com/keepassxreboot/keepassxc/pull/8214
https://developers.google.com/identity/passkeys/supported-environments
Note: Starting from Android 14, users will be able to opt to use third-party credential management apps to store their passkeys.
https://developer.android.com/training/sign-in/passkeys
Yes, unfortunately it will take time to implement this feature, and the fact that Google already has its PassKeys private key storage system won't make it any easier to adopt KeePass.
Yes, unfortunately it will take time to implement this feature, and the fact that Google already has its PassKeys private key storage system won't make it any easier to adopt KeePass.
To be fair, I'm okay with waiting for this to be implemented in KeePass and other 3rd party password managers, as implementation there isn't urgent given that actually using passkeys to sign up for services isn't as widespread just yet. I doubt people can sign up for 100% of their services via passkeys at this time.
This is really getting some traction. There is already some collaboration between other keepass clients on how these should be stored in keepass vaults.
https://github.com/keepassxreboot/keepassxc/pull/8825
I think it would make sense to take a look at this implementation.
It seems that a kind of "passkey provider" is needed, in order to use this method. A sync process is required. Major actors involved? Apple, Google, Microsoft, etc.
I remain in the 100% offline and syncless world. Bye bye passkey.
It seems that a kind of "passkey provider" is needed, in order to use this method. A sync process is required. Major actors involved? Apple, Google, Microsoft, etc.
I remain in the 100% offline and syncless world. Bye bye passkey.
@serrq I am afraid that you might not have a choice in few decades considering that all large tech companies are currently standardizing it. Google even made it a default login option and they encourage users to use it [1].
Quote from that article:
In the meantime, we’ll continue encouraging the industry to make the pivot to passkeys—making passwords a rarity, and eventually obsolete.
I am also a bit concerned about the sync process requirement and the flexibility of passkeys.
[1] https://www.wired.com/story/google-passkey-default/
I forgot to say also trustless. You need to trust in your sync provider. And leaderless: no single point must to have a prominent role from mountain to valley.
And here everything seems centralized and dependent on a leader. Again.
@serrq you know, the issue I find with passkeys flexibility is that its implementation is up to the browser or the OS. There is no underlying universal support as it is with password/passphrase/pin code. If you look at the Device Support page you might notice the problem (e.g. Apple ID, Google account requirement).
Passkeys create a monopoly on authentication service unless the browser or ideally the OS provides an open standard API for 3rd party credential managers. Otherwise there is just no way you can authenticate.
Fortunately as it was already mentioned here Google seems to plan on providing such API.
@life00 It also needs to understand if these APIs will be open source. However, I don’t really have the problem, since I will avoid the passkeys.
I’m not convinced. Not even the mathematical link behind it. Will we find out in 30 years' time that a quantum computer can calculate the private key from the public key?
Asses available? Many.
@serrq I definitely agree with you and I personally would prefer to avoid passkeys for the same reasons. I do not want to be so dependent on any proprietary service and there might be a threat of QCs in the long term.
But again as said already. We might just not have a choice considering the current trend of moving to passkeys.
What if GitHub will force everyone to use passkeys like they did with 2FA? You'll likely switch from GitHub, but what if this happens with more services?
The only hope is that passkeys will be reasonably open to allow 3rd party clients.
@life00 Who will force you to do something is simply saying: «you will have no other god that me.»
An assertion, but also an own goal. The clever will look elsewhere, the fools will let themselves be caught in the big net.
What is a long term QC? I am not a developer and not even English native.
This is getting too philosophical. Please focus the posts here to the implementation of the feature.
@alensiljak sure, I just wanted to point out that the implementation of this feature is important and it will inevitably be needed.
@serrq you know, the issue I find with passkeys flexibility is that its implementation is up to the browser or the OS. There is no underlying universal support as it is with password/passphrase/pin code. If you look at the Device Support page you might notice the problem (e.g. Apple ID, Google account requirement).
Passkeys create a monopoly on authentication service unless the browser or ideally the OS provides an open standard API for 3rd party credential managers. Otherwise there is just no way you can authenticate.
In the link you provided, the row for third party passkey providers is the relevant one. Both Apple and Google seem to support this, and Microsoft (Windows) is already planning it. I don't see a Google account or Apple ID requirement there.
On Android it's available from version 14, which has just been released. I am waiting to test it out as soon as a Keepass client or Bitwarden ships with the passkey support.
Linux's passkey support is poor at the moment, but AFAIU some browsers on Linux can use third party managers to login, but cannot generate passkeys because typically it's the OS that generates them and then stores them immediately onto a TPM, and also passes this to a password manager/sync provider which should store/transmit it encrypted only. According to the spec, the keys should never leave the device unencrypted.
Linux supports hardware authentication devices (I think these are called device specific keys than passkeys), but they have very limited capacity in terms of number of keys, and doesn't support sync.
The mechanism of sync between providers is currently left unspecified by the standard. I think I have read syncing passkeys between Apple and Google account is possible but can't verify this for sure. If sync isn't possible you will need to login to every service you use and generate a new passkey once you login on the device that doesn't have the passkey using cross device authentication (assuming the website allows you to create new passkeys). This is why I have been waiting till Android 14 to start using passkeys, so that I can store my passkeys in a third party manager rather than place my bets with Google immediately.
and there might be a threat of QCs in the long term.
There maybe worse things to worry about if Quantum Computing becomes relevant to passkeys because the global digital infrastructure including SSL/HTTPS communication depends on public/private key cryptography anyway and your passwords would then be no better than if they were sent as plaintext.
I think there is research being done to mitigate the threat of QC in the long term, some of which is already promising. I don't know if protection against QC from these techniques depends on no one having found a technique to crack them by modeling it as a QC problem yet, but I guess it's a different question outside the scope of this thread.
I hope that the encryption algorithm is out of the PassKey spec, so that newest and more performing one comes in the future will be easy to implement in a kind of key renegotiation.
Just found this issue on KeePassDX when searching for Keepass for Android w/ Passkeys support.
Things I'd like to point out:
- current KeePassXC v2.8.0 snapshot has just added working Passkeys implementation on the PC, official v2.8.0 release should follow very soon
- I'm currently using that KeePassXC version and I'm using it with Nextcloud's WebAuthn/Passkey option (I got my snapshot version from one of the devs)
- I also tried Nextcloud's WebAuthn/Passkey option on my Samsung Galaxy Note 20 5G Ultra and it works out of the box, I registered with Nextcloud using the Samsung Browser and they logged in using Brave for Android with that same identity.
Hope this information is useful for you.
Quick question, does support for third party passkey managers like password managers on Android only work with Android 14 and no other version?
Quick question, does support for third party passkey managers like password managers on Android only work with Android 14 and no other version?
Yes, this seems to be the case. At least as long as you use the Android integrated authentication APIs. But I'm an IT admin, not a software developer. It's far from being my area of expertise.
KeePassXC does JS injection on the PC, not sure if that method would be feasable on Android though.
I'm also testing another solution (on PC), which emulates a USB security token als a virtual USB device. Early version and seems a bit buggy. Was able to add this to my Nextcloud account for testing (the identity information was stored locally by this software), but could not log in afterwards with this tool.
But with Google and others pushing towards Passkeys, I expect a lot more development to happen in this area soon.
KeepassXC appears to be in the process of back porting passkey support to 2.7.7: https://github.com/keepassxreboot/keepassxc/pull/10189
Bitwarden appears to be adding it as part of the migration from Xamarin to MAUI: https://github.com/bitwarden/mobile/tree/feature/maui-migration-passkeys . It appears to still be in early development, but it looks like Bitwarden is using the credential provider API.
PassKey support has just been added to KeePassXC 2.7.7 so I think it would be nice to have support for PassKeys on KeePassDX too. One super important thing I have got to request is to not use Google's API for passkeys on android, it doesn't work on a degoogled phone and barely works with MicroG. Nextcloud uses a different WebAuthn library I believe that does actually work on a degoogled device, please consider using it or if there is a better and newer library use that instead, anything but the Google one that forces you to use Google Play Services.
Google are attempting to kill security keys on degoogled phones by moving everything towards their own implementation
PassKey support has just been added to KeePassXC 2.7.7 so I think it would be nice to have support for PassKeys on KeePassDX too. One super important thing I have got to request is to not use Google's API for passkeys on android, it doesn't work on a degoogled phone and barely works with MicroG. Nextcloud uses a different WebAuthn library I believe that does actually work on a degoogled device, please consider using it or if there is a better and newer library use that instead, anything but the Google one that forces you to use Google Play Services.
Google are attempting to kill security keys on degoogled phones by moving everything towards their own implementation
Is that true with the Android 14 Credential Manager API? It was supposed to add support for third party credential providers such as KeePassDX. I have read reports of 1Password's passkey implementation working on GrapheneOS.
1Password might be using a different library than Google's. I know that the MicroG still doesn't have full support for it, that would imply that stock AOSP without Google services doesn't actually support it.
I'm still on Android 11 and don't plan on updating so I'm not too sure. You might be able to support both a non-google WebAuthn implementation for security keys and a "PassKey" implementation using Google' stuff.
1Password is using their own library for Passkeys: https://blog.1password.com/passkey-crates/
I just checked on GrapheneOS forums and people are saying that third party passkeys do not work because they rely on Google Play Services.
Oh and btw MicroG doesn't even supports all the use cases and features for even FIDO2 Security Keys, it is getting better, I'm on an older MicroG version but still the only app I tried so far that supports WebAuthn security keys without any MicroG or Google Play Services is Nextcloud.
Bump
Here's some insight on how Proton Pass has approached this: https://proton.me/support/pass-use-passkeys
I just checked on GrapheneOS forums and people are saying that third party passkeys do not work because they rely on Google Play Services.
Oh and btw MicroG doesn't even supports all the use cases and features for even FIDO2 Security Keys, it is getting better, I'm on an older MicroG version but still the only app I tried so far that supports WebAuthn security keys without any MicroG or Google Play Services is Nextcloud.
Sadly, I believe the application (e.g. web browser) needs to support third party passkeys to avoid the Google Play Services dependency. I know of no applications that actually support them. Chromium has limited experimental support, but it appears to use Google Password Manager as an intermediary.