3. Teori: Cara Kerja Passkeys
3. Teori: Cara Kerja Passkeys
Kriptografi Kunci Publik
Passkeys menggunakan asymmetric cryptography (ECDSA dengan kurva P-256):
Saat Registrasi:
┌─────────────────────────────────────────────────────────────┐
│ Perangkat (Secure Enclave) Server (Relying Party) │
│ │
│ Generate keypair: │
│ private key → DISIMPAN di Secure Enclave │
│ public key ──────────────────────────────────────────► │
│ Simpan public key │
│ + user identifier │
└─────────────────────────────────────────────────────────────┘
Saat Autentikasi:
┌─────────────────────────────────────────────────────────────┐
│ Perangkat Server │
│ │
│ ◄── challenge (random bytes) ───────────────── │
│ │
│ User: Face ID / Touch ID │
│ Private key sign(challenge) ─────────────────────────────► │
│ Verifikasi dengan │
│ public key yg tersimpan │
│ → Login berhasil! │
└─────────────────────────────────────────────────────────────┘
Komponen WebAuthn
Relying Party ID (rpID): Domain yang mengidentifikasi siapa yang memiliki credential. Untuk app iOS, ini adalah domain yang terdaftar di Associated Domains. Untuk website, ini adalah effective domain.
Challenge: Random bytes yang dihasilkan server untuk setiap sesi — mencegah replay attack. Challenge harus berumur pendek (< 5 menit) dan single-use.
Credential ID: Identifier unik untuk setiap passkey — digunakan server untuk menemukan public key yang sesuai saat autentikasi.
User Handle: Stable identifier untuk user di sisi server — bukan username atau email, tapi opaque identifier (biasanya UUID). Digunakan untuk account selection UI.
Attestation (Registrasi): Bukti bahwa credential dibuat oleh authenticator yang legitimate. Untuk platform authenticator (Secure Enclave), Apple menyediakan "none" atau "apple" attestation format.
Assertion (Autentikasi): Bukti kepemilikan private key, berisi signature atas challenge + authenticator data.
Secure Enclave dan iCloud Keychain
Private key passkey disimpan di Secure Enclave — chip keamanan terpisah dari CPU utama yang tidak bisa diakses bahkan oleh sistem operasi. Private key tidak pernah bisa di-export, hanya bisa digunakan untuk signing saat user melakukan biometrik.
Untuk sync antar perangkat, passkeys di-backup ke iCloud Keychain dengan end-to-end encryption — Apple tidak bisa melihat isi private key. Passkeys bisa diakses dari perangkat Apple lain yang login dengan Apple ID yang sama.
Platform Authenticator vs Cross-Platform
| Jenis | Mechanism | Kasus Penggunaan |
|---|---|---|
| Platform (iOS/macOS) | Secure Enclave + biometrik | Login di perangkat milik sendiri |
| Cross-platform (iOS 17+) | QR code + Bluetooth proximity | Login di komputer lain pakai HP |
| Security Key | Hardware USB/NFC key | Enterprise, keamanan sangat tinggi |