Passkey ve WebAuthn PRF ile giriş ötesi: veri şifreleme
WebAuthn'ın PRF uzantısı passkey girişini şifreleme anahtarına dönüştürüyor; pknotes projesi bu mimariyi ana parolasız olarak gösteriyor.
WebAuthn spesifikasyonundaki az bilinen PRF uzantısı, passkey doğrulaması sırasında tarayıcıya deterministik ve cihaza özel 32 bayt üreterek şifreleme anahtarı türetme imkanı veriyor. Bu çıktı sunucuya hiç gitmiyor; yalnızca istemci tarafında kalıyor. pknotes adlı uçtan uca şifreli notlar uygulaması bu fikri test etmek için geliştirilmiş: ana parola olmadan, passkey'in kendisi hem giriş hem şifre çözme anahtarı olarak çalışıyor.
Mimari; PRF çıktısından HKDF ile bir KEK türetip, bu KEK'in rastgele üretilmiş bir AES-256 ana anahtarı sardığı bir hiyerarşiye dayanıyor. Bu sayede yeni cihaz eklemek yeniden şifreleme gerektirmiyor, kurtarma kodu ayrı bir sarmalama olarak çalışıyor, ve cihaz iptali gerçek bir anahtar rotasyonuyla yapılıyor. AES-GCM'in ek doğrulanmış veri (AAD) alanına not kimliğinin gömülmesi, sunucunun şifreli verileri birbirine karıştırmasını da imkansız hale getiriyor.
Mühendisler için önemli nokta: PRF desteği tarayıcıdan çok kimlik sağlayıcısına bağlı (iCloud Keychain, Google Password Manager, 1Password destekliyor; Bitwarden gibi bazı üçüncü parti eklentiler WebAuthn akışını ele geçirip PRF'yi engelleyebiliyor). Yazar, bu deseni parola veya seed phrase yönetimi gerektiren her senaryo için genellenebilir bir anahtar dağıtım çözümü olarak öneriyor, ancak sunucunun istemci kodunu sunması ve metadata görünürlüğü gibi sınırları da açıkça belirtiyor.