Password punya tiga masalah yang tidak bisa diperbaiki dengan menambah karakter: dipakai ulang di banyak situs, bocor massal di dump database, dan bisa diketik ke situs tiruan tanpa Anda sadari. TOTP memperbaiki sebagian, tapi kode enam digit masih bisa diteruskan ke server asli secara real-time oleh proxy phishing. Passkey memotong akar masalahnya: tidak ada rahasia bersama yang bisa dicuri dari server, dan kredensialnya terikat ke domain sehingga situs palsu tidak bisa memakainya.

Ringkasan singkat
- Passkey adalah kredensial WebAuthn/FIDO2 berbasis public key; private key tidak pernah meninggalkan authenticator.
- Karena terikat ke domain (RP ID), passkey tidak bisa dipakai di situs tiruan walaupun Anda tertipu.
- Ada dua rasa: passkey tersinkron (iCloud Keychain, Google Password Manager, 1Password) dan device-bound (security key USB/NFC).
- Daftarkan minimal dua passkey per akun, dan simpan recovery code sebelum mematikan password.
Kenapa password dan TOTP belum cukup
Password adalah rahasia bersama. Server menyimpan hash-nya, Anda menyimpan salinannya di kepala atau di password manager, dan keduanya harus cocok saat login. Model ini punya kelemahan struktural. Pertama, manusia memakai ulang password yang sama di belasan layanan, jadi satu kebocoran di situs kecil membuka akun di situs lain melalui credential stuffing. Kedua, dump database besar terus beredar, dan hash yang lemah bisa dipecahkan dengan GPU dalam hitungan jam. Ketiga, password bisa diketik ke domain yang salah: tampilan halaman tiruan bisa identik, dan yang membedakan hanya address bar.
TOTP menambahkan faktor kedua berupa kode berbasis waktu. Ini jauh lebih baik daripada password saja, tetapi bukan obat phishing. Serangan adversary-in-the-middle bekerja dengan menempatkan proxy di antara Anda dan situs asli: Anda mengetik password dan kode TOTP ke halaman palsu, proxy meneruskannya ke situs asli dalam hitungan detik, dan sesi login terbentuk sebelum kode kedaluwarsa. TOTP juga masih berupa shared secret: seed-nya tersimpan di server, jadi dump database tetap berbahaya.
Passkey mengubah modelnya. Tidak ada rahasia yang dikirim ke server saat login, jadi tidak ada yang bisa dicuri dari dump, dan tidak ada kode yang bisa diteruskan ke situs lain.
Apa itu passkey sebenarnya
Passkey adalah nama ramah untuk kredensial WebAuthn yang memakai authenticator FIDO2. Saat registrasi, authenticator membuat sepasang kunci: private key yang tidak pernah keluar dari perangkat atau chip, dan public key yang dikirim ke server. Server menyimpan public key bersama credential ID, bukan password dan bukan private key. Saat login, server mengirim challenge acak, authenticator menandatanganinya dengan private key, lalu server memverifikasi tanda tangan itu dengan public key yang tersimpan.
Konsekuensinya penting. Kalau database server bocor, penyerang hanya mendapat public key, yang tidak bisa dipakai untuk login. Tidak ada hash password untuk dipecahkan, dan tidak ada shared secret yang bisa dipalsukan. Setiap login menghasilkan tanda tangan berbeda atas challenge berbeda, sehingga replay tidak berguna.
Passkey juga terikat ke domain melalui RP ID. Browser hanya mau memakai kredensial untuk origin yang cocok dengan RP ID saat registrasi. Situs tiruan di domain lain, walau tampilannya sama persis, tidak akan menerima passkey Anda; browser menolak, atau tidak menampilkan opsi sama sekali. Inilah alasan passkey dianggap tahan phishing secara desain, bukan karena penggunanya lebih waspada.
Perlu ditegaskan: passkey bukan "password yang disimpan di HP". Yang tersimpan adalah kunci kriptografis yang dipakai untuk menandatangani challenge. Verifikasi biasanya dilakukan lewat biometrik atau PIN perangkat, tetapi itu hanya membuka akses ke private key, bukan mengirim sesuatu ke server.
Dua jenis passkey
Synced passkey disimpan di keychain yang terenkripsi dan disinkronkan antar perangkat Anda: iCloud Keychain di perangkat Apple, Google Password Manager di Android dan Chrome, atau password manager seperti 1Password. Karena tersinkron, kehilangan satu perangkat tidak mengunci akun; passkey muncul lagi di perangkat baru setelah Anda login ke akun cloud. Kemudahan ini datang dengan satu syarat: keamanan passkey sekarang bergantung pada keamanan akun cloud tersebut.
Device-bound passkey hidup di satu perangkat keras dan tidak bisa diekspor, misalnya security key USB/NFC berstandar FIDO2. Kunci ini tidak bisa disalin, tidak bisa disinkronkan, dan tidak bisa dicuri lewat malware yang berjalan di komputer. Untuk akun paling kritis, kombinasi passkey tersinkron di ponsel plus security key fisik di laci adalah pola yang sehat: satu untuk kenyamanan, satu untuk pemulihan.
Alur registrasi dan login
Diagram berikut merangkum kedua alur. Perhatikan bahwa challenge selalu berasal dari server, dan private key tidak pernah menyeberang ke jaringan.
Pada registrasi, browser mengirim origin dan RP ID bersama permintaan pembuatan kredensial. Authenticator menyimpan private key dengan label RP ID tersebut, lalu mengembalikan public key, credential ID, dan attestation. Server menyimpan ketiganya. Pada login, server mengirim challenge dan daftar credential ID yang diizinkan; authenticator memilih kunci yang cocok, meminta verifikasi pengguna, dan menandatangani challenge beserta data origin. Server memeriksa tanda tangan, origin, RP ID, dan counter (kalau ada) sebelum menerima login.
Password, TOTP, dan passkey dibandingkan
| Kriteria | Password | TOTP | Passkey |
|---|---|---|---|
| Phishing | Rentan; cukup diketik di domain palsu | Masih bisa via proxy real-time | Tidak bisa; terikat RP ID dan origin |
| Repudiation | Tidak ada bukti kriptografis siapa yang login | Lemah; seed bisa dipakai bersama | Tanda tangan per login per kunci |
| UX | Mengetik, sering lupa, sering dipakai ulang | Pindah aplikasi, ketik 6 digit | Satu prompt biometrik atau PIN |
| Recovery | Reset lewat email, titik lemah klasik | Backup code atau seed cadangan | Beberapa passkey plus recovery code akun |
| Dukungan | Universal | Sangat luas | Browser dan OS modern; aplikasi desktop bervariasi |
Mengaktifkan passkey di akun utama
Google: buka myaccount.google.com, masuk ke Security, lalu pilih Passkeys. Anda bisa menambahkan passkey dari perangkat yang sedang dipakai atau dari ponsel lewat QR code. Setelah passkey aktif, Google tetap meminta verifikasi tambahan saat mendaftarkan perangkat baru, jadi jangan buru-buru menghapus password.
Apple ID: buka System Settings, pilih Apple Account, lalu Sign-In & Security dan Passkeys. Di perangkat Apple, passkey akun Apple ID tersimpan di iCloud Keychain, jadi pastikan Two-Factor Authentication akun Apple aktif lebih dulu. Microsoft: buka account.microsoft.com, masuk ke Security, pilih Advanced security options, lalu Add a new way to sign in atau verify dan pilih passkey atau security key.
Aturan yang paling sering diabaikan: daftarkan minimal dua passkey. Satu di perangkat sehari-hari (synced passkey), satu di security key fisik yang disimpan terpisah. Kalau hanya ada satu dan perangkat itu hilang atau rusak, Anda bergantung sepenuhnya pada alur pemulihan akun. Cetak recovery code dan simpan di tempat yang tidak bisa diakses dari jarak jauh. Untuk layanan self-hosted, Authelia dan Nextcloud sama-sama mendukung WebAuthn, jadi passkey tidak berhenti di akun besar.
Passkey untuk SSH
OpenSSH mendukung security key FIDO2 sejak versi 8.2 melalui tipe kunci ed25519-sk dan ecdsa-sk. Ini bukan passkey tersinkron: yang dipakai adalah security key fisik yang mendukung FIDO2, dan kuncinya tidak berpindah ke perangkat lain kecuali disimpan sebagai resident key.
ssh-keygen -t ed25519-sk -O resident -O verify-required
Opsi -O resident menyimpan kunci di dalam security key sehingga bisa dipindahkan, sedangkan -O verify-required mewajibkan verifikasi pengguna (PIN atau biometrik) setiap kali kunci dipakai. Tanpa verify-required, banyak kunci hanya perlu disentuh, dan siapa pun yang memegang kunci itu bisa login. Kunci publik yang dihasilkan muncul sebagai sk-ssh-ed25519@openssh.com di ~/.ssh/id_ed25519_sk.pub; baris itulah yang ditempel ke authorized_keys di server.
Di mesin lain, resident key bisa diunduh tanpa menyalin file apa pun:
ssh-keygen -K
Perintah itu menulis ulang pasangan kunci dari security key ke direktori saat ini setelah Anda memasukkan PIN. Simpan public key-nya ke server, dan login berikutnya cukup memakai security key plus PIN. Karena private key tidak bisa diekspor, mencuri file dari laptop tidak memberi penyerang apa pun.
Keterbatasan yang perlu diketahui
Passkey bukan pengganti semua hal. Akun bersama, misalnya akun keluarga atau akun layanan di kantor, sulit dipakai dengan passkey karena kredensial terikat ke perangkat satu orang. Perangkat lama yang OS atau browsernya tidak mendukung WebAuthn tidak akan menampilkan opsi passkey sama sekali. Aplikasi desktop dan klien email yang belum memakai browser internal sering belum bisa memakai passkey, jadi password masih diperlukan sebagai jalur cadangan. Terakhir, passkey terikat ke RP ID: kalau Anda memindahkan layanan ke domain lain, semua pengguna harus mendaftar ulang. Untuk layanan self-hosted, tetapkan domain final sebelum mengumumkan passkey ke pengguna.
Troubleshooting
Opsi passkey tidak muncul saat login
Biasanya penyebabnya lingkungan yang terlalu lama atau WebAuthn diblokir. Periksa versi browser dan OS: WebAuthn butuh browser modern di atas HTTPS (atau localhost). Di Firefox, WebAuthn aktif secara default di versi modern; kalau bermasalah, cari pref webauthn di about:config dan pastikan tidak ada yang dimatikan. Di lingkungan korporat, kebijakan perangkat atau ekstensi keamanan bisa memblokir WebAuthn; coba di profil browser bersih atau di perangkat lain untuk memastikan. Untuk layanan self-hosted, pastikan RP ID di konfigurasi sesuai domain yang benar-benar dibuka di address bar, termasuk subdomain.
Passkey ada di satu perangkat, tidak muncul di perangkat lain
Passkey tersinkron hanya berpindah lewat akun cloud yang sama. Kalau ponsel memakai akun Google A dan laptop memakai akun Google B, passkey tidak akan muncul. Periksa akun yang aktif di password manager atau keychain masing-masing perangkat, lalu login dengan akun yang sama. Kalau passkey sengaja dibuat sebagai device-bound di security key, memang tidak akan tersinkron; daftarkan security key itu sebagai passkey kedua di akun, bukan menunggu passkey ponsel muncul di laptop.
Semua perangkat hilang dan passkey tidak bisa dipakai
Gunakan recovery code yang Anda simpan saat mendaftar, atau akun pemulihan yang sudah disiapkan. Google, Apple, dan Microsoft semuanya punya alur pemulihan akun, tetapi butuh bukti identitas dan bisa memakan waktu. Kalau recovery code juga hilang, satu-satunya jalan adalah proses pemulihan resmi penyedia; tidak ada cara "membobol" passkey, dan itu memang tujuannya. Karena itu, simpan recovery code di tempat yang tidak ikut hilang bersama laptop.
Security key tidak terdeteksi di Linux
Cek dulu apakah perangkat terlihat oleh sistem dengan lsusb; kalau tidak muncul, masalahnya kabel, port, atau hub. Kalau muncul tetapi ssh-keygen atau browser gagal memakainya, biasanya izin udev yang kurang: perangkat HID FIDO2 perlu aturan udev agar bisa diakses pengguna biasa. Banyak distro menyediakan paket libfido2 dan aturan udev bawaan; pastikan keduanya terpasang, lalu cabut dan pasang ulang kunci. Untuk Chrome atau Firefox, tutup semua instance browser sebelum menguji ulang, karena kebijakan udev dibaca saat perangkat pertama kali dibuka.
Kesimpulan
Passkey memperbaiki kelemahan yang tidak bisa ditambal oleh password manager atau TOTP: tidak ada rahasia bersama yang bisa bocor, dan tidak ada kredensial yang mau dipakai di domain lain. Mulailah dari akun yang paling penting, daftarkan dua passkey, dan simpan recovery code sebelum bereksperimen. Untuk SSH, security key FIDO2 memberi perlindungan serupa dengan syarat kunci fisik, bukan passkey tersinkron. Sisakan password sebagai jalur cadangan sampai semua perangkat dan aplikasi yang Anda pakai benar-benar mendukung.
Baca juga: Cara Self-Host Vaultwarden: Password Manager Pribadi · Authelia: Satu Login untuk Semua Layanan Self-Hosted · Mengamankan SSH di Ubuntu Tanpa Mengunci Diri Sendiri · Cara Install Nextcloud dengan Docker Compose · How to Set Up Tailscale on a VPS for Private Access · Cara Membuat VPN WireGuard di Ubuntu Server
Sumber: FIDO Alliance — Passkeys · W3C — Web Authentication · OpenBSD — ssh-keygen(1) · Google Account Help — Passkeys
0 comments:
Post a Comment