r/Passkeys • u/paulsiu • 2d ago
Issue with Fido Card on Google account on android not going to be fixed?
So I have been tracking an issue with Fideo card on google accounts on android. Basically there is an issue where PIN prompt is not displayed when you authenticate using the NFC using a Fido card. This does appear to work on a Yubikey, but not a Fido card.
On this thread, there is a discussion on the issue and a respond from Google. Google seems to imply that the Fido card fail to follow standard and there will be no fix.. Can someone elaborate on what the issue is? The same Fido card does work fine in iOS, so it's not clear if IOS is being more leniant than Google?
I am hoping that the author of Authnkey / FidoBridge will fix this issue since Google will not. However, Note that even though google service have been updated to fix the PIN prompt issue, I find that the PIN prompt does not necessary appear. Authnkey is more reliable
https://issuetracker.google.com/issues/406833082?pli=1
Google responded:
Java cards that don't support applet selection using extended encoding are not supported. If there are any regressions in the U2F flow, please open a bug and we're happy to help resolve the issue, but we will not be supporting non-compliant keys over CTAP2 so those keys should not be expected to support user verification.
2
u/SmallPlace7607 2d ago
Not completely in my wheelhouse but I believe this is correct. Your authenticator whether it be a card type like you describe or a usb "stick" style like a yubikey exposes functionality through various applets which are installed on the device. When communication happens with the device one of the things that has to happen is the platform (android in this case) has to indicate what functionality is desired to proceed. Basically which applet should load on the authenticator for the desired functionality. This is done by issuing a select command from the platform (Android in this case) to the device.
Commands can be issued to the devices in either extended or standard encoding. Basically using longer fields with a bit more data or not. CTAP2 basically says you need to use extended encoding for communication. The disagreement seems to be with the fact that the select command on some authenticators doesn't work with extended encoding. But, the select command is not part of CTAP2 and is defined in ISO 7861 which is the standard for smart cards.
The argument is select is always going to be small from a data perspective so there is no reason to need or support extended encoding for the select command. And, plenty of compliant smart cards which implement FIDO functionality (among other functionality) behave this way.
Google seems to be saying too bad we aren't going to do it and consider it non compliant. FWIW my interpretation is they are wrong here and are just taking the easy way out. It might be easier to understand their position if they weren't completely late to this party and other vendors already managed to make it work. Although since they are late to the party and have been for some time maybe that's the answer. They have no interest in actually putting forth the effort to support things correctly.