Door majortom: In die secure enclave moet dan of alle versleutelde passkeys en/of de masterkey zich bevinden waarmee de passkeys zijn versleuteld.
In theorie is een masterkey mogelijk: als de passkey database uit versleutelde records bestaat (1 record per passkey) zou zo'n versleuteld record aan de secure enclave kunnen worden overgedragen en daarin worden ontsleuteld. Maar ik vermoed dat de hele passkey database onversleuteld in geheugen van de secure enclave staat.
Door majortom: Deze masterkey moet dan zijn afgeleid van de credentials waarmee je je uiteindelijk authentiseert [...]
Uit
https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html:
Recovery user experience
If end-to-end encryption keys were not transferred during device setup, the recovery process happens automatically the first time a passkey is created or used on the new device. In most cases, this only happens once on each new device.
From the user's point of view, this means that when using a passkey for the first time on the new device, they will be asked for an existing device's screen lock in order to restore the end-to-end encryption keys, and then for the current device's screen lock or biometric, which is required every time a passkey is used.
Daaruit (en uit tekst elders in die pagina) leid ik het volgende af (ik kan dit fout hebben):
1) E2EE secrets (waaronder de passkeys van private keys) worden zelf
niet versleuteld met de toegangscode (of veegpatroon/biometrische "neural hash") maar met één of meer sterke encryptiesleutels in (het Android equivalent van iPhones') secure enclave - kennelijk "trusted execution environment (TEE)" genaamd.
2) Die sterke encryptiesleutels lijken
wel met slechts de potentieel zeer zwakke toegangscode te zijn versleuteld, dus dat zou het systeem alsnog zwak maken.
3) Gokje: denkbaar is dat de
per user "end-to-end encryption keys" op Google servers in "secure hardware enclaves" worden opgeslagen en elk Android device (waarop een Google cloud-account is aangezet) een VPN-achtige tunnel daarmee opzet (met asymmetrische sleutels) waarover die "end-to-end encryption keys" worden uitgewisseld tussen server-side en client-side enclaves.
In genoemde pagina valt te lezen dat de toegangscode beschermd wordt tegen brute force, maar dat geldt natuurlijk alleen indien die code (of biometrie) in een Android device naar de locale "secure enclave" wordt gestuurd (niet bij offline attacks).
Ik heb geprobeerd (PDF download onderin
https://support.apple.com/guide/security/welcome/web) Apple's strategie te begrijpen op o.a. dit punt, maar ik ben er nog niet uit. Ik weet ook niet of deze (mei 2022) voldoende actueel is en ook niet of zij zaken verzwijgen (als mijn gokje klopt haal ik dat ook niet uit Google's pagina).
Ik weet dus niet hoe het werkt, maar een aanvaller zal zowel toegang tot jouw cloud-account moeten hebben als een device-toegangscode kennen, uit genoemde Google pagina:
Note, that restoring passkeys on a new device requires both being signed in to the Google Account and an existing device's screen lock.
Door majortom: Apple biedt een soort van Escrow functie, echter werkt deze met 2FA op basis van SMS. Dit biedt dan ook meteen een aanvalsvector doordat je op deze manier dan blijkbaar toegang kunt krijgen tot deze keys.
Ik vind de door Apple beschreven "rescue" methodes verre van duidelijk; als je ergens voor kiest wordt er gewaarschuwd dat andere methodes niet meer werken. Ook is mij niet duidelijk of je middels een "herstelcontact"
ook weer toegang tot E2EE data in iCloud kunt krijgen. Termen als "herstelcode" en "herstelsleutel" worden door elkaar gebruikt. Een "erfeniscontact" heeft toegang tot jouw "account" - bedoeld wordt waarschijnlijk iCloud (niet E2EE data). Zodra foto's E2EE worden, kan zo'n erfenisaccount daar niet meer bij.
Sowieso lijkt Apple vooral vanuit het perspectief van het "Apple ID" account (iCloud en andere Apple clouddiensten) te denken, terwijl gebruikers in de eerste plaats vanuit hun
device-account zullen redeneren.
Ik ben, denk ik, geen leek maar snap er al niets van. Ik mis het overzicht, bijv. middels plaatjes (leken gaan
zeker die Apple platform security guide niet iezen, laat staan begrijpen). De kans op lock-out van jouw gegevens neemt rap toe met de nieuwe door Apple aangekondigde maatregelen (meer E2EE).
Door majortom: Websites kunnen niet zien hoe ik op mijn client device met passkeys omga [...]
Ja dat kan wel, middels "attestation". Als ik met mijn iPhone (model SE uit 2016 met iOS 15.x) naar
https://what-the-fido.sanford.io/ (niet te verwarren met stanford.edu) ga en wat klik, zie ik een 3-dagen geldig Apple signing certificaat met onder meer:
issuer-CN: "Apple WebAuthn CA 1"
subject-CN: lang hexadecimaal getal
gevolgd door een certificaat in CER (BASE64) formaat (ik vermoed dat dit hetzelfde cert is, maar weet dat niet helemaal zeker; het eerste "leesbare" cert zou een signing cert kunnen zijn voor het feitelijke attestation cert).
Hoe dan ook, als een website om attestation-data vraagt kun je de boel vermoedelijk niet eenvoudig belazeren.
Terzijde: in hoeverre deze WebAuthn-attestation gerelateerd is aan user-attestation om CAPTCHA's te kunnen overslaan (middels PAT's = Private Access Tokens) is mij nog steeds niet duidelijk (
https://tweakers.net/nieuws/197728/cloudflare-brengt-private-access-tokens-uit-die-captchas-moeten-vervangen.html?showReaction=17603958#r_17603958).
Google werkt trouwens aan een extensie van passkeys waarbij er, per passkey, naast van een exportable private key, tevens sprake is van een
device bound private key: zie "Passkeys and device-bound private keys" in genoemde Google pagina.