Hmm. So, I am on a Librem 5 at the moment. I logged into one of my old GitHub accounts. It asked me to setup a 2 factor auth since they’re pushing that now, so I configured my Librem 5 authenticator solution for 2 factor auth TOTP keys. The TOTP keys are compatible with the principles of free software because Microsoft offered a back door into the system, whereby rather than using their QR code I can copy a key they generated out of the website into my own free software ecosystem, store the key in a secure place of my choice, and then run software of my choice to create corresponding TOTP keys that I can provide back to Microsoft.
However, sitting here on my Librem 5, I then tried the button on GitHub to do the Passkeys, for my own curiosity. Unfortunately, the non-free JavaScript embedded in GitHub web page printed out an error that they decided not to let me use Passkeys.
So, until GitHub is updated to support the principle of user freedom, meaning that they offer a system whereby I choose what application to use for providing my Passkeys independent of their non-free JavaScript, users of free software will presumably be locked out of the Passkeys due to its poor design as a system. Given the interaction I just had with GitHub, I cannot see this any other way.
This is one of those cases where free software cannot catch up because they are artificially blocking us with intention. I am even having this problem despite the fact that I am already allowing my device to run non-free JavaScript to have gotten this far, which is already contrary to the principles of free software.
So, even allowing myself to be partially a hypocrite, they are offering me no option to use Passkeys. We cannot design software to support a system that locks us out. So, free software cannot “catch up,” so to speak.
Perhaps if I connected to this non-free JavaScript using Mozilla Firefox, or the Google Chrome, the browser’s JavaScript function library would include some new function to allow interacting with the Passkeys database. But this encourages monolithic browsers and locking out users from connecting however they want and with whatever program they want.
Instead, I would imagine the proper design for Microsoft GitHub to have a secure public/private key based login would be for them to provide me with some challenge data or whatever that I could copy into my local security application, and a text box for me to enter proof of identity. Then I could sign the challenge data they provided with my locally known private key to prove my identity, and enter this signed proof of identity in the text box.
As a note, I am not a security researcher nor someone trained specifically in any advanced computer security, so my opinion may be misinformed or simply incorrect. But this is how the issue of Passkeys appears to me.