Belajar 2FA Authentication - Melampaui TOTP: WebAuthn & Passkeys
Episode 17 of 23

Belajar 2FA Authentication - Melampaui TOTP: WebAuthn & Passkeys

Episode ini membuka arah modern 2FA: WebAuthn dan passkeys yang tahan phishing tanpa shared secret. Kalian membandingkan TOTP, WebAuthn, dan SMS, lalu merancang strategi multi-faktor yang menawarkan passkeys untuk pengguna baru sambil mempertahankan TOTP untuk kompatibilitas.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Selama 14 episode kalian membangun TOTP — dan itu keputusan yang benar untuk kompatibilitas universal. Episode 17 mengangkat kepala untuk melihat ke depan: WebAuthn dan passkeys, standar FIDO2 yang mengubah cara autentikasi bekerja di 2026.

Perbedaan fundamentalnya bukan pada angka dan kode, tapi pada model kriptografi: TOTP membagi satu rahasia, WebAuthn tidak pernah berbagi rahasia sama sekali. Kalian akan memahami prinsip itu, membandingkan tiga pendekatan — TOTP, WebAuthn, dan SMS — lalu merancang strategi yang menawarkan keduanya tanpa membuat pengguna bingung.

Prinsip WebAuthn dan FIDO2

Tanpa Shared Secret

WebAuthn mengganti shared secret dengan kriptografi asimetris. Perangkat pengguna membuat pasangan kunci: private key tidak pernah meninggalkan perangkat, public key disimpan server. Saat login, server mengirim tantangan acak, perangkat menandatanganinya dengan private key, dan server memverifikasi dengan public key.

Konsekuensinya besar: kebocoran database server tidak membahayakan — yang bocor hanya public key yang memang untuk dibagikan. Dan karena tidak ada secret yang bisa disalin, pencurian kredensial menjadi jauh lebih sulit.

Alur Tantangan dan Respons

Alur login WebAuthn mengikuti pola challenge-response:

Alur challenge-response WebAuthn
1. Server membuat challenge acak
2. Browser mengirim challenge ke perangkat
3. Perangkat menandatangani dengan private key
4. Server memverifikasi dengan public key
5. Signature hanya valid untuk domain asal

Alur di atas menjelaskan mengapa phishing tidak berdaya: signature yang dibuat untuk domain kalian otomatis ditolak di domain lain, sekalipun pengguna memasukkan seluruh alur login ke situs tiruan.

Tahan Phishing

Signature WebAuthn hanya valid untuk satu domain (origin). Kode yang ditandatangani untuk bank.dev otomatis ditolak oleh bank.dev.attacker.com — bahkan jika pengguna mengklik tautan phishing dan memasukkan seluruh alur login. Inilah alasan WebAuthn disebut phishing-resistant, sementara TOTP yang bisa di-phishing secara real-time tidak.

Passkeys di 2026

Passkey adalah implementasi WebAuthn yang menyimpan kunci di platform: iCloud Keychain untuk Apple, Google Password Manager, atau Windows Hello. Kunci tersinkron antar perangkat pengguna yang sama lewat cloud, sehingga pengalaman terasa seperti password biasa — tapi dengan keamanan asimetris di belakangnya.

TOTP versus WebAuthn versus SMS

Tiga Pendekatan dalam Satu Tabel

Perbandingan jujur ketiganya membantu keputusan desain:

Perbandingan metode faktor kedua
Metode        Tahan Phishing   Offline   Kerahasiaan Secret   Sinkronisasi
TOTP          tidak            ya        shared (dibagi)       NTP perangkat
WebAuthn      ya               bergantung private key lokal   cloud vendor
SMS OTP       tidak            tidak     rahasia di operator   operator

TOTP unggul di kompatibilitas dan kemandirian dari vendor, tapi bisa di-phishing secara real-time. WebAuthn menang di ketahanan phishing dengan konsekuensi kepercayaan pada cloud vendor untuk sinkronisasi. SMS adalah yang terlemah — SIM swapping dan intercept operator membuatnya hanya cocok sebagai recovery.

Baca tabel ini dengan teliti: tidak ada baris yang sempurna. Keputusan metode bukan mencari yang terbaik di semua kolom, melainkan memilih kompromi yang sesuai konteks aplikasi.

Kapan Memakai Mana

Mulai dari TOTP sebagai default universal. Tambahkan WebAuthn untuk pengguna yang menginginkan keamanan maksimal dan memakai platform modern. Jangan pernah menjadikan SMS faktor kedua utama — simpan untuk recovery atau lingkungan yang tidak punya alternatif.

Strategi Multi-Factor

Menawarkan Keduanya

Desain yang matang menawarkan pilihan saat enrollment: pengguna bisa memindai QR TOTP atau membuat passkey. Arahkan pengguna baru ke passkeys lewat rekomendasi dan posisi yang menonjol, tapi biarkan TOTP tetap tersedia satu klik — tidak semua pengguna nyaman dengan kunci yang terikat platform tertentu.

Implementasi passkeys bisa dimulai dengan library yang mengurus protokol:

Install library WebAuthn
npm install @simplewebauthn/server @simplewebauthn/browser

@simplewebauthn/server menangani pembuatan dan verifikasi tantangan (challenge) WebAuthn di sisi server, sementara versi browser mengurus sisi client. Library ini menangani detail CBOR, attestation, dan transport yang rumit diimplementasikan manual.

Satu hal yang perlu diingat: passkey terikat pada perangkat atau akun cloud tertentu. Pastikan pengguna tahu bahwa pindah perangkat berarti perlu pendaftaran ulang atau sinkronisasi akun cloud vendor.

Pertahankan TOTP untuk Kompatibilitas

Keputusan penting: passkeys menambah, bukan mengganti, TOTP yang sudah dibangun. Pengguna dengan perangkat lama, browser tidak didukung, atau keinginan bekerja offline tetap dilayani TOTP. Rotasi secret, recovery codes, dan seluruh fondasi episode sebelumnya tetap relevan sebagai lapisan fallback yang andal.

Pertimbangan Migrasi

Enrollment Bertahap

Perkenalkan passkeys sebagai opsi, bukan kewajiban. Amati data: berapa persen pengguna memilih passkey, berapa yang bertahan setelah 30 hari. Baru putuskan apakah pengguna baru diwajibkan passkey setelah basis yang mapan terbentuk.

Pantau juga tingkat kegagalan enrollment passkey — jika tinggi, kemungkinan besar masalahnya ada di UX browser atau dukungan perangkat pengguna, bukan niat pengguna.

Sinkronisasi dan Lockout

Perhatikan implikasi passkey tersinkron: kehilangan akses ke cloud vendor berarti kehilangan kunci — persis seperti kehilangan phone TOTP. Karena itu recovery codes dan TOTP fallback tetap menjadi jaring pengaman yang wajib, bahkan untuk pengguna passkey.

Tunjukkan status metode yang terdaftar di halaman keamanan, dan izinkan pengguna mencabut passkey perangkat yang hilang tanpa menghapus akun.

Penutup

Episode 17 membuka arah modern 2FA: WebAuthn yang tahan phishing tanpa shared secret, perbandingan jujur TOTP, WebAuthn, dan SMS, serta strategi menawarkan passkeys untuk pengguna baru sambil mempertahankan TOTP sebagai fallback universal.

Inti yang harus dibawa pulang:

  • WebAuthn memakai kunci asimetris, tidak pernah berbagi secret.
  • Signature WebAuthn hanya valid untuk satu domain, tahan phishing.
  • TOTP universal dan offline, tapi bisa di-phishing secara real-time.
  • SMS OTP adalah metode terlemah, hanya untuk recovery.
  • Tawarkan passkeys dan TOTP sekaligus saat enrollment.
  • Pertahankan TOTP dan recovery codes sebagai jaring pengaman passkey.

Di episode 18 selanjutnya kita akan membahas enterprise: enforcement dan compliance — mewajibkan MFA untuk role admin dan billing, phase-in dengan notifikasi 30 hari, kebijakan per-tenant, serta hubungannya dengan SOC 2 dan ISO 27001.

Belajar 2FA Authentication - Melampaui TOTP: WebAuthn & Passkeys | Belajar 2FA Authentication