WebAuthn

**Web Authentication** (**WebAuthn**) atau **Autentikasi Web** adalah standar web yang diterbitkan oleh Konsorsium Waring Wera Wanua (W3C). Standar ini mendefinisikan API yang digunakan situs web untuk mengautentikasi dengan kredensial WebAuthn (dikenal sebagai **passkeys** atau **kunci sandi**) dan menjelaskan apa yang harus dilakukan oleh autentikator WebAuthn. WebAuthn memecahkan banyak masalah autentikasi berbasis kata sandi tradisional dengan memverifikasi identitas pengguna menggunakan tanda tangan digital. Meskipun WebAuthn sering disebut-sebut sebagai pengganti kata sandi secara lengkap, sebagian besar situs web yang menerapkannya masih menggunakan kata sandi dalam beberapa kapasitas.

Untuk menggunakan WebAuthn, pengguna memerlukan autentikator yang cocok. Standar ini tidak menentukan cara menyimpan kunci yang diperlukan untuk penandatanganan, sehingga berbagai jenis autentikator dapat digunakan. Jenis autentikator yang paling umum adalah autentikator platform, yang terintegrasi dalam sistem operasi perangkat. Platform autentikator yang umum meliputi Android, Apple Keychain, dan Windows Hello. Ini menggunakan fitur keamanan perangkat keras (seperti TEE dan TPM), dan melakukan sinkronisasi kredensial antar perangkat secara berkala untuk kemudahan penggunaan. Jenis autentikator umum lainnya adalah autentikator jarak jauh (*roaming*), di mana perangkat keras terpisah mengautentikasi pengguna dengan menghubungkan melalui USB, Bluetooth Low Energy, atau komunikasi medan dekat (NFC). Sebagian besar ponsel cerdas dapat digunakan sebagai autentikator jarak jauh, dan perangkat keras kunci keamanan fisik khusus juga digunakan. WebAuthn secara efektif kompatibel dengan standar FIDO Universal 2nd Factor (U2F) karena keduanya menggunakan protokol CTAP.  Pengelola kata sandi juga dapat digunakan sebagai autentikator, umumnya dengan sinkronisasi awan. Dalam situasi sinkronisasi kredensial tidak memungkinkan, WebAuthn Hybrid Transport dapat digunakan untuk mengakses kredensial yang tersimpan pada autentikator lain seperti ponsel cerdas.

Seperti standar U2F terdahulu, WebAuthn tahan terhadap serangan pengelabuan karena autentikator hanya menawarkan kredensial yang terdaftar di situs web yang sama. Namun, tidak seperti U2F, WebAuthn dapat diimplementasikan tanpa kata sandi. Selain itu, autentikator perangkat keras jarak jauh tahan terhadap *[[malware]]*, karena kunci disimpan di perangkat terpisah, yang mencegah akses langsung oleh malware.

Standar WebAuthn Tingkat&nbsp;1 dan 2 diterbitkan sebagai Rekomendasi W3C masing-masing pada tanggal 4 Maret 2019 dan 8 April 2021. Spesifikasi Tingkat 3 saat ini merupakan *First Public Working Draft* (FPWD). WebAuthn adalah komponen inti dari Proyek FIDO2 yang diprakasai oleh organisasi industri FIDO Alliance.

## Latar belakang

FIDO2 adalah penerus dari standar FIDO Universal 2nd Factor (U2F). U2F hanya mendukung moda multifaktor, yang dirancang untuk memperkuat alur masuk berbasis nama pengguna/kata sandi yang sudah umum. FIDO2 menambahkan dukungan untuk mode faktor tunggal. Dalam moda multifaktor, autentikator diaktifkan dengan uji kehadiran pengguna, yang biasanya hanya dengan menekan tombol; tidak memerlukan kata sandi. Dalam moda faktor tunggal, autentikator *(*sesuatu yang Anda miliki*)* melakukan verifikasi pengguna. Tergantung pada kemampuan autentikator, hal ini dapat berupa:

* sesuatu yang Anda ketahui: rahasia seperti nomor identifikasi pribadi (PIN), kata sandi, atau pola gesek layar
* sesuatu yang menandakan bahwa Anda: biometrik seperti sidik jari, iris atau suara

Apa pun modanya, autentikator tidak pernah membagikan rahasia atau data biometriknya dengan situs web tujuan. Selain itu, rahasia atau biometrik pengguna tunggal berfungsi dengan semua situs web, karena autentikator memilih materi kunci kriptografi yang sesuai untuk digunakan oleh layanan yang meminta autentikasi setelah verifikasi pengguna berhasil diselesaikan.

Sebuah rahasia dan biometrik pada autentikator dapat digunakan bersamaan, mirip seperti yang digunakan pada ponsel cerdas. Misalnya, sidik jari menyediakan akses mudah ke ponsel cerdas milik pengguna, tetapi terkadang akses pemindaian sidik jari gagal, sehingga pengguna dapat menggunakan PIN sebagai cadangan.

## Alasan untuk rancangan dan standarisasi

W3C merancang dan menstandardisasi WebAuthn untuk memecahkan dan mengurangi banyak masalah yang melekat pada autentikasi berbasis kata sandi tradisional:

* Pembuatan dan penyimpanan kredensial yang aman: WebAuthn menghasilkan kredensial unik untuk setiap situs web menggunakan algoritma yang kuat, menyimpannya dengan aman dalam autentikator. Hal ini menghilangkan kerentanan umum seperti:
** Kata sandi lemah yang dapat dengan mudah dibobol secara paksa karena panjangnya tidak memadai.
** Kata sandi yang dapat diprediksi rentan terhadap serangan kamus (misalnya, "kata sandi", "12345678").
** Kata sandi yang dapat ditebak berdasarkan informasi pribadi (misalnya, tanggal lahir, alamat).
** Penyimpanan kata sandi sisi klien yang buruk (misalnya, ditulis, disimpan dalam kontak telepon).
** Penggunaan kembali kata sandi di beberapa situs web, karena kredensial WebAuthn dirancang khusus per situs web yang dimaksud.
** Persyaratan kata sandi yang diamanatkan peladen tidak memadai (misalnya, kriteria yang terlalu longgar atau membatasi, batas panjang maksimum yang sewenang-wenang, rangkaian karakter yang terbatas).
** Pembatasan yang mencegah fitur pengisian otomatis oleh pengelola kata sandi.
* Tidak ada penyimpanan kredensial sisi peladen: Bagian pribadi dari kredensial tidak pernah disimpan di peladen, sehingga menghilangkan risiko dan kerentanan seperti:
** Penyimpanan kata sandi yang tidak aman dalam basis data (misalnya, teks biasa atau mengandalkan algoritma/konstruksi berbasis hash yang tidak kuat).
** Kebocoran basis data yang mengekspos kata sandi.
** Perubahan kata sandi berkala yang wajib namun tidak efektif.
* Kredensial unik untuk setiap situs web: WebAuthn memastikan kredensial bersifat unik per situs web, menghilangkan risiko dan kerentanan berikut:
** Serangan pencurian kredensial, di mana penyerang menggunakan kredensial dari satu sumber data di beberapa situs.
** Serangan pengelabuan, karena kredensial tidak dapat digunakan kembali atau disalahgunakan ke situs web yang berbeda.

## Penjenamaan Kunci Sandi (Passkey)

*Passkey* (kunci sandi) adalah istilah non-teknis de facto untuk kredensial WebAuthn. Digunakan dalam situasi di mana penggunaan jargon tidak membantu, seperti pemasaran konsumen, dan sebagian besar antarmuka pengguna yang mendukung WebAuthn hanya menggunakan istilah *passkey* untuk merujuk ke kredensial WebAuthn.

Ketika Apple pertama kali memperkenalkan kunci sandi ke publik pada tahun 2022, mereka menekankan integrasi pihak pertama mereka. Hal ini, dikombinasikan dengan kurangnya komunikasi yang jelas dari perusahaan lain, menyebabkan beberapa orang berspekulasi bahwa kunci sandi adalah teknologi milik Apple (ini tidaklah benar). Ketika peramban dan situs web mulai mengimplementasikan WebAuthn, set fitur yang tidak konsisten mengakibatkan timbulnya berbagai pemahaman tentang apa yang sebenarnya dihitung sebagai kunci sandi. Beberapa orang berasumsi bahwa kunci sandi memerlukan manajemen oleh sebuah autentikator platform, atau memerlukan sinkronisasi jarak jauh dengan komputasi awan. Definisi yang sesuai adalah bahwa kunci sandi adalah kredensial WebAuthn apa pun yang dikelola oleh autentikator WebAuthn mana pun tanpa mengenal adanya perbedaan jenisnya. Definisi ini mencakup sebagian besar dari apa yang disebut dan diterima oleh berbagai penyedia sebagai kunci sandi.

## Ringkasan
Seperti standar pendahulunya FIDO U2F, W3C Web Authentication (WebAuthn) melibatkan situs web, peramban web, dan autentikator:

* Situs web ini adalah Pihak Pengandal WebAuthn yang sesuai
* Peramban web adalah Klien WebAuthn yang sesuai
* Autentikator adalah autentikator FIDO2, yang kompatibel dengan Klien WebAuthn

WebAuthn menentukan bagaimana seorang pengklaim menunjukkan kepemilikan dan kendali atas autentikator FIDO2 kepada verifikator yang disebut Pihak Pengandal WebAuthn. Proses autentikasi ini dimediasi oleh sebuah entitas yang disebut Klien WebAuthn, yaitu sebuah peramban web yang sesuai.

### Autentikasi

Autentikator yang digunakan adalah autentikator kriptografi multifaktor yang menggunakan kriptografi kunci publik untuk menandatangani pernyataan autentikasi yang ditujukan kepada Pihak Pengandal WebAuthn. Autentikator dapat menggunakan sistem pengenalan wajah, sidik jari, atau nomor identifikasi pribadi (PIN) untuk verifikasi pengguna, autentikator itu sendiri adalah sesuatu yang Anda miliki, sementara sistem pengenalan wajah dan sidik jari adalah sesuatu yang menandakan bahwa Anda dan PIN adalah sesuatu yang Anda ketahui.

Untuk memulai alur autentikasi WebAuthn, Pihak Pengandal WebAuthn menyatakan niatnya kepada Klien WebAuthn (peramban web) melalui JavaScript. Klien WebAuthn berkomunikasi dengan autentikator menggunakan antarmuka pemrograman aplikasi JavaScript yang diimplementasikan di peramban. Autentikator jarak jauh mematuhi Protokol Klien ke Autentikator FIDO (CTAP).

WebAuthn tidak sepenuhnya memerlukan autentikator perangkat keras jarak jauh. Sebagai alternatif, autentikator perangkat lunak (misalnya yang diimplementasikan pada ponsel cerdas) atau autentikator platform (yaitu, autentikator yang diimplementasikan langsung pada Perangkat Klien WebAuthn) dapat digunakan. Contoh autentikator platform adalah Windows Hello dan sistem operasi Android.

WebAuthn Hybrid Transport memungkinkan Klien WebAuthn untuk mengakses kredensial yang tersimpan pada autentikator lain seperti ponsel cerdas, ini berguna dalam situasi tertentu saat sinkronisasi kredensial tidak memungkinkan.

Terdapat kesalahpahaman yang timbul di antara pengguna bahwa data biometrik ditransmisikan melalui jaringan dengan cara yang sama seperti kata sandi, hal ini tidaklah benar.

### Registrasi
Ketika Pihak Pengandal WebAuthn menerima pernyataan autentikasi yang ditandatangani dari peramban, tanda tangan digital pada pernyataan tersebut diverifikasi menggunakan kunci publik tepercaya bagi pengguna.

Untuk mendapatkan kunci publik bagi pengguna, Pihak Pengandal WebAuthn memulai alur registrasi WebAuthn  yang serupa dengan alur autentikasi yang diilustrasikan di atas. Perbedaan utamanya adalah autentikator kini menandatangani pernyataan pengesahan dengan kunci privat yang terkait. Pernyataan pengesahan yang ditandatangani berisi salinan kunci publik yang pada akhirnya digunakan oleh Pihak Pengandal WebAuthn untuk memverifikasi autentikasi yang ditandatangani. Pernyataan pengesahan juga berisi metadata yang menjelaskan autentikator itu sendiri.

Tanda tangan digital pada pernyataan pengesahan diverifikasi dengan kunci publik pengesahan tepercaya untuk model autentikator tertentu. Mengenai bagaimana Pihak Pengandal WebAuthn mendapatkan penyimpanan kunci publik pengesahan tepercayanya tidak ditentukan. Salah satu opsinya adalah menggunakan layanan metadata FIDO.

Jenis pengesahan yang ditentukan dalam JavaScript menentukan model kepercayaan. Misalnya, jenis pengesahan yang disebut pengesahan mandiri, yang model kepercayaannya pada dasarnya adalah kepercayaan pada penggunaan pertama.

## Dukungan

Standar WebAuthn Tingkat&nbsp;1 diterbitkan sebagai Rekomendasi W3C oleh *Web Authentication Working Group* pada tanggal 4 Maret 2019. WebAuthn didukung oleh peramban web Google Chrome, Mozilla Firefox, Microsoft Edge, Apple Safari, dan Opera.

Versi desktop Google Chrome telah mendukung WebAuthn sejak versi 67. Firefox, yang sebelumnya tidak sepenuhnya mendukung standar FIDO U2F, menyertakan dan mengaktifkan WebAuthn di Firefox versi 60, yang dirilis pada tanggal 9 Mei 2018. Rilis awal Windows Insider untuk peramban Microsoft Edge (Build 17682) menerapkan versi WebAuthn yang berfungsi dengan Windows Hello dan perangkat kunci keamanan eksternal.

Perangkat kunci keamanan FIDO U2F yang sudah ada sebagian besar kompatibel dengan standar WebAuthn, meskipun WebAuthn menambahkan kemampuan untuk merujuk ke pengenal "nama pengguna" unik per akun, yang tidak dapat disimpan oleh autentikator tipe lawas.

Salah satu autentikator pertama yang kompatibel dengan FIDO2 adalah YubiKey generasi kedua oleh Yubico, yang diumumkan pada tanggal 10 April 2018. Autentikator pertama yang kompatibel dengan FIDO2 dengan layar adalah Trezor Model T oleh SatoshiLabs, yang diumumkan pada tanggal 6 November 2019. Trezor Model T juga merupakan autentikator pertama yang memungkinkan pengguna untuk memilih kredensial residen FIDO2 mana yang akan digunakan langsung pada perangkat.

Kunci FIDO2 bersertifikat Security Level 2 pertama, yang disebut "Goldengate" diumumkan satu tahun kemudian oleh eWBM pada tanggal 8 April 2019.

Dropbox mengumumkan dukungan untuk log masuk WebAuthn (sebagai sebuah faktor ke-2) pada tanggal 8 Mei 2018.

Apple mengumumkan bahwa Face ID atau Touch ID dapat digunakan sebagai autentikator platform WebAuthn dengan Safari pada tanggal 24 Juni 2020.

Beberapa pengelola kata sandi seperti Bitwarden dan Dashlane mendukung WebAuthn.

## Tanggapan dari media
WebAuthn telah menerima tanggapan beragam:

* “Kunci sandi adalah salah satu dari sedikit konstruksi keamanan yang membuat hidup Anda lebih mudah, bukannya lebih sulit.” Troy Hunt – 5 Mei 2025
** Dengan proses masuk satu klik, dan mengklik tombol ungu (tombol kunci sandi) akan langsung memberi saya akses ke akun saya.
* “Teknologi kunci sandi memang elegan, tapi bukan merupakan keamanan yang dapat digunakan (dengan mudah)” Dan Goodin – 30 Desember 2024 Ars Technica
* "...implementasinya tampaknya gagal dalam uji "memudahkan pengguna", yang menurut saya merupakan inti dari kunci sandi. Saya telah menggunakan kriptografi kunci publik selama lebih dari 30 tahun... Jika saya saja merasa kunci sandi membingungkan untuk digunakan, itu bukan pertanda baik bagi pengguna yang lebih awam."  Bruce Davie – 17 November 2024 The Register

## Referensi


## Pranala luar

* Autentikasi Web: API untuk mengakses Kredensial Kunci Publik
* Kelompok Kerja Autentikasi Web
* API Autentikasi Web di MDN
* Awesome WebAuthn
* Dokumen GitHub: Tentang kunci sandi
* Adam Langley: Tur WebAuthn