[...]
Correct, maar normaal versleuteld met asymetrische encryptie.
Ook dan kan er een man-in-the-middle zijn. Of bv dat je verbind met een reverse proxy die SSL/TLS termination doet en vervolgens over HTTP (zonder SSL/TLS) met een daadwerkelijke backend server babbelt.
En wie zegt dat de private key niet kan lekken? Hij gaat niet over de lijn, maar malware kan ook lokaal draaien en passkeys zijn een prima doelwit. Ze zijn niet magisch vrij van fouten en lekken en manco's, Je key kan ook gestolen worden.
Een roaming key geeft helemaal geen toegang tot de key. De FIDO API geeft daar geen mogelijkheid voor en dat hoeft ook niet. Het OS/de applicatie kan aan de key vragen om de nonce te versleutelen (incl wat context v.w.b. het doel/voor welke website). Vervolgens doet de key die actie uitvoeren en het resultaat teruggeven. De key wordt dus nooit afgegeven naar het OS/de applicatie en deze kan dus ook niet lekken.
Bij ingebakken support in het OS (zoals Windows Hello, en andere equivalenten) is dit voor zover ik weet ook zwaar afgeschermd (met TPM etc) waardoor je niet zomaar de key kunt uitlezen.
Bij pure software implementaties (zoals dus bv bij Bitwarden) durf ik niet exact te zeggen hoe het met de beveiliging zit.
Maar in alle gevallen geldt dus dat de aanvaller daarvoor uberhaupt al toegang tot het apparaat moet hebben. En in dat geval zijn ouderwetse wachtwoorden ook al zo lek als een mandje (keylogger bv). En bv een Keypass heeft als beleid ook dat ze helemaal niks doen aan "lekken" die alleen werken als de aanvaller toegang tot het systeem heeft. Simpelweg omdat je dan al een veel groter probleem hebt.
[...]
Niet zozeer technisch gelijk, als wel een oplossing op zoek naar een probleem in veel scenarios. En een oplossing met weer zijn eigen problemen.
De problemen van passkeys zitten echter niet in de beveiliging an zich. Maar meer in de praktische toepassing. Zoals je zelf aanhaalt: "wat als de key stuk gaat? Dan moet je al altijd twee keys bijhouden". Terwijl wachtwoorden problemen hebben als: opschrijven, te makkelijk te raden, te onderscheppen, van over de hele wereld te gebruiken door een aanvaller (waarbij 2FA middels OTP 0,0 extra bescherming bied want dat is wel weer echt gelijk aan een wachtwoord en als je dat "weet" kun je het gebruiken. Lees: OTP codes kun je nog steeds op phishing websites invullen waarna de aanvaller ze kan over nemen).
En er zijn gewoon heel veel functionele overeenkomsten. Het is een "uniek" ding dat jou identificeert. Uiteindelijk gaat er met of zonder extra "gedoe" een ding over de lijn dat jou authenticeert.
Nee, het is niet een ding dat je authenticeert. Het is een afgeleide van een ding waarmee je geauthenticeert wordt. Dat ding zelf (de private key) gaat niet over de lijn.