Passkeys — Akhir dari Era Password?
Password sudah berusia lebih dari 60 tahun sebagai metode autentikasi utama di dunia digital. Namun kenyataannya, password adalah mata rantai terlemah dalam keamanan — mudah ditebak, sering di-reuse, dan rentan terhadap phishing. Kini, industri teknologi bergerak menuju Passkeys sebagai penggantinya.
🔑 Apa Itu Passkeys?
Passkeys adalah kredensial digital berbasis public-key cryptography yang menggantikan password. Alih-alih mengetik password, user cukup menggunakan:
Fingerprint (Touch ID, sensor sidik jari)
Face recognition (Face ID)
Screen lock (PIN device)
Hardware security key (YubiKey)
Passkeys dibangun di atas standar WebAuthn (Web Authentication API) yang dikembangkan oleh FIDO Alliance dan W3C.
⚙️ Bagaimana Cara Kerjanya?
Passkeys menggunakan pasangan public key dan private key:
Registrasi — device membuat key pair. Public key dikirim ke server, private key tetap di device (disimpan di Secure Enclave / TPM)
Login — server mengirim challenge, device menandatanganinya dengan private key setelah verifikasi biometrik
Verifikasi — server memverifikasi signature menggunakan public key yang tersimpan
Private key tidak pernah meninggalkan device dan tidak pernah dikirim ke server. Ini yang membuat passkeys tidak bisa di-phishing.
🛡️ Passkeys vs Password — Perbandingan
AspekPasswordPasskeysPhishing❌ Rentan✅ Tidak mungkinBrute force❌ Bisa diserang✅ Tidak relevanData breach❌ Hash bisa di-crack✅ Server hanya simpan public keyReuse antar situs❌ Sering terjadi✅ Unik per situs otomatisUser experience😩 Harus diingat😊 Tap fingerprint sajaMFA built-in❌ Perlu tambahan✅ Sudah termasuk (device + biometrik)
🌐 Siapa yang Sudah Mendukung?
Google — passkeys untuk Google Account, default sejak 2024
Apple — iCloud Keychain sync passkeys antar device
Microsoft — Windows Hello + passkeys untuk Microsoft Account
GitHub — passkeys sebagai opsi login
PayPal, Amazon, WhatsApp — sudah adopsi passkeys
💻 Implementasi di Web App
Registrasi Passkey (Frontend):
// Minta credential baru dari browser
const credential = await navigator.credentials.create({
publicKey: {
challenge: serverChallenge, // dari server
rp: { name: "My App", id: "myapp.com" },
user: {
id: userId,
name: "[email protected]",
displayName: "John Doe",
},
pubKeyCredParams: [
{ alg: -7, type: "public-key" }, // ES256
{ alg: -257, type: "public-key" }, // RS256
],
authenticatorSelection: {
residentKey: "required",
userVerification: "required", // biometrik wajib
},
},
});
// Kirim public key ke server untuk disimpan
await fetch("/api/auth/register-passkey", {
method: "POST",
body: JSON.stringify(credential),
});Login dengan Passkey:
// Minta user untuk autentikasi
const assertion = await navigator.credentials.get({
publicKey: {
challenge: serverChallenge,
rpId: "myapp.com",
userVerification: "required",
},
});
// Kirim signature ke server untuk diverifikasi
const res = await fetch("/api/auth/login-passkey", {
method: "POST",
body: JSON.stringify(assertion),
});📦 Library yang Memudahkan
@simplewebauthn/server + @simplewebauthn/browser — library paling populer untuk WebAuthn
Hanko — auth platform open-source dengan passkey support
Corbado — passkey-first authentication service
Auth.js (NextAuth) — sudah support WebAuthn/passkeys
⚠️ Tantangan dan Keterbatasan
Device dependency — passkey tersimpan di device tertentu (mitigasi: sync via iCloud/Google Password Manager)
Recovery flow — jika kehilangan semua device, perlu mekanisme recovery yang aman
Browser support — sudah didukung di Chrome, Safari, Firefox, Edge terbaru
User education — banyak user belum familiar dengan konsep passkeys
🔄 Strategi Migrasi: Password ke Passkeys
Phase 1 — Tawarkan passkeys sebagai opsi tambahan (password tetap ada)
Phase 2 — Jadikan passkeys sebagai default, password sebagai fallback
Phase 3 — Encourage user untuk menghapus password setelah setup passkey
Phase 4 — Password-optional untuk akun baru
Kesimpulan
Passkeys bukan lagi konsep masa depan — ini sudah terjadi sekarang. Dengan dukungan dari Apple, Google, dan Microsoft, serta standar WebAuthn yang sudah matang, ini adalah waktu yang tepat untuk mulai mengimplementasikan passkeys di aplikasi kamu. Password tidak akan hilang dalam semalam, tapi era passwordless authentication sudah dimulai.