Vincent
Created: June 17, 2025
Updated: July 8, 2025
See the original glossary version in English here.
Atestasi dapat merujuk pada tiga hal (seringkali dalam bahasa lisan, istilah-istilah ini digunakan secara bergantian meskipun memiliki arti yang berbeda jika dipahami secara tepat):
Pertama dan secara lebih umum, atestasi dalam dunia kriptografi adalah istilah di mana satu pihak "menyatakan" secara kriptografis sebuah pernyataan kepada pihak lain.
Kedua, selama fase pendaftaran di WebAuthn, sebuah objek atestasi dibuat oleh autentikator dan dikembalikan ke Relying Party. Ini adalah objek wadah yang berisi informasi berikut:
fmt
)attStmt
- lihat di bawah)authData
)Alur proses Pendaftaran berikut menunjukkan peran atestasi (objek) dalam WebAuthn:
{ "root": { "id": "QFPlQVypLmmx71e0tmS3IfCFky0", "rawId": "QFPlQVypLmmx71e0tmS3IfCFky0", "response": { "attestationObject": { "fmt": "none", "attStmt": {}, "authData": { "rpIdHash": "t8DGRTBfls-BhOH2QC404lvdhe_t2_NkvM0nQWEEADc", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": false }, "counter": 0, "aaguid": "00000000-0000-0000-0000-000000000000", "credentialID": "QFPlQVypLmmx71eOtmS3IfCFky0", "credentialPublicKey": "pQECAyYgASFYIEa-lpSiQ4P...", "parsedCredentialPublicKey": { "keyType": "EC2 (2)", "algorithm": "ES256 (-7)", "curve": 1, "x": "Rr6WlKJDg8MlbIq9mmHQzk2p2c_s7QoNKr7yMa7I8pM", "y": "tAELYp7h3sYNjZZIZgHPYiaSzF×QVT18cgZ_7wm13Vw" } } }, "clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://passkeys.eu", "crossOrigin": false }, "transports": ["hybrid", "internal"], "publicKeyAlgorithm": -7 }, "authenticatorAttachment": "cross-platform" } }
Pada tangkapan layar di atas, tidak ada AAGUID dan tidak ada pernyataan atestasi yang diberikan.
Lanjutkan membaca untuk rincian teknis dari atribut yang paling penting.
Dalam WebAuthn, atestasi memastikan bahwa autentikasi pengguna aman dan transparan. Dengan pernyataan atestasi, Anda dapat memastikan bahwa kredensial dibuat pada autentikator / perangkat tertentu.
Jenis-jenis atestasi ini mengacu pada pernyataan atestasi (bukan objek atestasi). Ini dianggap sebagai preferensi oleh relying party (sehingga autentikator dapat berperilaku berbeda karena ini hanya preferensi).
none
): Untuk kasus di mana privasi menjadi perhatian utama atau
perangkat yang disinkronkan digunakan, jenis ini tidak memberikan informasi tentang
perangkat, memastikan privasi pengguna tetap terjaga. Alasan lain untuk menggunakan
nilai ini mungkin untuk menghemat perjalanan bolak-balik ke otoritas sertifikat (CA).
none
juga merupakan nilai default.indirect
): Relying party lebih
suka mendapatkan atestasi tetapi memungkinkan klien untuk memutuskan cara mendapatkan
pernyataan atestasi. Klien dapat mengganti pernyataan atestasi yang dihasilkan
autentikator dengan pernyataan atestasi anonim untuk melindungi privasi pengguna.direct
): Ini adalah bentuk yang paling transparan. Di sini,
relying party memberitahu autentikator bahwa ia menginginkan
pernyataan atestasi, sehingga relying party mendapatkan
informasi rinci tentang perangkat, termasuk merek, model, dan spesifik lainnya. Meskipun
menawarkan transparansi tertinggi, ini dapat menimbulkan kekhawatiran privasi dalam
skenario tertentu atau mungkin tidak benar-benar dapat digunakan untuk kredensial yang
disinkronkan.enterprise
): Relying party ingin
menerima pernyataan atestasi yang dapat mencakup informasi identifikasi unik. Jenis
atestasi ini biasanya digunakan dalam bisnis atau organisasi yang ingin melacak
perangkat / autentikator tertentu. Agen pengguna (browser
web) tidak boleh memberikan atestasi rinci ini kecuali pengaturannya mengizinkannya
secara khusus untuk pihak yang meminta. Jika pengaturan mengizinkannya, browser harus
memberitahu perangkat saat dibutuhkan (di awal proses) bahwa jenis atestasi spesifik ini
sedang diminta. Browser kemudian harus meneruskan ID unik perangkat dan bukti atestasi
persis seperti yang diterimanya kepada relying party.Objek atestasi berisi banyak atribut, berikut adalah penjelasan singkat dari beberapa atribut yang dipilih:
"attestationObject": { "fmt": "none", "attStmt": {}, "authData": { "rpIdHash": "t8DGRTBfls-BhOH2QC404lvdhe_t2_NkvM0nQWEEADc", "flags": { "userPresent": true, "userVerified": true, "backupEligible": true, "backupStatus": true, "attestedData": true, "extensionData": false }, "counter": 0, "aaguid": "00000000-0000-0000-0000-000000000000", "credentialID": "QFPlQVypLmmx71eOtmS3IfCFky0", "credentialPublicKey": "pQECAyYgASFYIEa-lpSiQ4P...", "parsedCredentialPublicKey": { "keyType": "EC2 (2)", "algorithm": "ES256 (-7)", "curve": 1, "x": "Rr6WlKJDg8MlbIq9mmHQzk2p2c_s7QoNKr7yMa7I8pM", "y": "tAELYp7h3sYNjZZIZgHPYiaSzF×QVT18cgZ_7wm13Vw" } }
attestationObject adalah objek yang dikodekan CBOR, berisi informasi tentang kredensial yang baru dibuat, kunci publik, dan data relevan lainnya:
Berbeda dengan objek atestasi di atas di mana attStmt
dibiarkan kosong untuk alasan
keterbacaan, inilah tampilan pernyataan atestasi yang terisi.
{ "alg": -65535, "sig": "MBHX7qov53SWqqPYCrxE5fcoAeDI83a0DzVJ2-N1KI6IAaCGGvINAIFzTEn44F6giANKte-8yEMDZbvbgDG1weaRj7SqsVaTty-TEQ", "ver": "2.0", "x5c": [ "MIIFwDCCA6oIaK6tZ7M", "MIIG6zCCBNpG18-MCJrHyrpMT-ul7RgxE4dFxqcG59ftTXqJ1f-X_Lpo7K-d7OgKoQrUgzxgATz8YXtFAk3rE1cHXvW9W52V637eAihKn9-UKC0ijzVXrBGX4Iq1o1M0ZfR-tFoOn498xasMCTnharKiM562GBLVJtlvV3DMSLEBl5SfuGM-qYjQgTQknXccks9guCmNaN_b2fo1DisbufXfjM3DVaMqx7IJpSc3wAnxooMrAYGpPM" ], "pubArea": "AAEACwAw_c3Ousz865mUPx8O3w", "certInfo": "_1RDR4AXAniCekfsiDI" }
alg
: Properti alg menunjukkan pengidentifikasi algoritma kriptografi yang digunakan
oleh autentikator untuk menandatangani pernyataan atestasi.sig
: Properti sig berisi tanda tangan digital yang dihasilkan oleh autentikator. Tanda
tangan ini digunakan untuk memverifikasi keaslian pernyataan atestasi.ver
: Properti ver menentukan versi format pernyataan atestasi.x5c
: Array x5c berisi satu atau lebih sertifikat X.509 yang membentuk jalur
sertifikasi, yang membantu dalam memvalidasi atestasi.pubArea
: Properti pubArea berisi informasi rinci tentang kunci publik dan
karakteristik autentikator.certInfo
: Properti certInfo biasanya mencakup informasi tentang sertifikasi
autentikator oleh pihak tepercaya."clientDataJSON": { "type": "webauthn.create", "challenge": "AAABeB78HrIemh1jTdJICr_3QG_RMOhp", "origin": "https://www.passkeys-debugger.io", "crossOrigin": false }
Baca lebih lanjut tentang clientDataJSON
di
artikel glosarium terkait.
"transports": [ "hybrid", "internal" ]
Properti transports menunjukkan mekanisme di mana autentikator dapat berkomunikasi dengan klien. Beberapa kombinasi nilai sampel yang umum adalah:
"transports": ["internal","hybrid"]
: Passkey dapat digunakan dari
autentikator platform (misalnya Face ID, Touch ID,
Windows Hello) atau melalui autentikasi lintas perangkat
(menggunakan kode QR & Bluetooth)."transports": ["internal"]
: Passkey dapat digunakan dari
autentikator platform (misalnya Face ID, Touch ID,
Windows Hello)transports
yang diatur: perilaku default yang tidak memberikan
indikasi apa pun.Atestasi (pernyataan atestasi) dalam WebAuthn penting karena menawarkan bukti keaslian sebuah autentikator. Ini memastikan bahwa proses autentikasi dilakukan oleh perangkat tepercaya, sehingga melindungi dari potensi ancaman keamanan.
Ben Gould
Head of Engineering
I’ve built hundreds of integrations in my time, including quite a few with identity providers and I’ve never been so impressed with a developer experience as I have been with Corbado.
3,000+ devs trust Corbado & make the Internet safer with passkeys. Got questions? We’ve written 150+ blog posts on passkeys.
Join Passkeys CommunityYa, karena passkey dapat disinkronkan di seluruh perangkat (misalnya dari iPhone ke
MacBook melalui Keychain), relying party tidak
dapat lagi benar-benar menentukan perangkat mana yang diates yang benar-benar masuk ke
aplikasi atau situs web. Oleh karena itu, Apple dan Google memutuskan bahwa untuk passkey
yang disinkronkan, mereka tidak akan lagi memberikan pernyataan atestasi. Namun, untuk
meningkatkan UX bagi relying party dan memberi mereka kesempatan untuk mengenali dan
menampilkan passkey dari ekosistem Apple dan Google
(iCloud Keychain dan
Pengelola Sandi Google),
AAGUID akan tetap diberikan (selama atestasi diatur ke direct
atau
indirect
dalam pengaturan server WebAuthn untuk PublicKeyCredentialCreationOptions
.
Lihat isu GitHub ini untuk detailnya.
Jika Anda ingin mengintegrasikan autentikasi passkey
di situs web dan aplikasi Anda, dan ingin menawarkan UX passkey yang hebat kepada pengguna
Anda, Anda harus mempertimbangkan hal berikut. Kami berasumsi Anda membangun solusi Anda
terutama untuk skenario di mana sebagian besar pengguna Anda menggunakan sistem operasi
Windows, iOS, macOS, atau
Android. Selain itu, kami berasumsi bahwa sebagian
besar passkey (selain dari Windows) adalah passkey yang disinkronkan. Karena baik iOS,
macOS, maupun Android tidak lagi mengirimkan
pernyataan atestasi, validasi nyata dari sebuah autentikator tidak lagi digunakan (untuk
Windows ini masih berfungsi, mungkin karena Windows belum menawarkan passkey yang
disinkronkan melalui Windows Hello). Namun, untuk mendapatkan
AAGUID, misalnya untuk manajemen passkey yang lebih baik di pengaturan
akun, kami merekomendasikan untuk mengatur preferensi atestasi ke indirect
, karena ini
masih memungkinkan untuk mendapatkan AAGUID sementara pernyataan
atestasi dikirim (Windows) atau tidak dikirim (iOS, macOS, Android).
Layanan metadata FIDO menyediakan repositori metadata untuk berbagai autentikator. Selama atestasi, layanan ini dapat dikueri untuk mengambil dan memvalidasi detail tentang autentikator, memastikan akurasi dan meningkatkan kepercayaan proses. Layanan metadata FIDO memeriksa pernyataan atestasi (bukan objek atestasi).
Ya, atestasi langsung (dalam pernyataan atestasi), meskipun menawarkan transparansi tertinggi dengan memberikan informasi rinci tentang perangkat, dapat menimbulkan kekhawatiran privasi dalam skenario tertentu. Sangat penting untuk menilai kebutuhan akan transparansi versus privasi saat memilih jenis atestasi.
WebAuthn menawarkan berbagai jenis preferensi atestasi
– tanpa, tidak langsung, langsung, dan perusahaan. Untuk skenario di mana
privasi pengguna
penting, attestation=none
dapat digunakan, yang tidak memberikan detail tentang
perangkat, memastikan privasi pengguna tetap terlindungi.
Table of Contents
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.