Get your free and exclusive 80-page Banking Passkey Report

Apa itu Atestasi dalam WebAuthn?

Vincent Delitz

Vincent

Created: June 17, 2025

Updated: July 8, 2025


See the original glossary version in English here.

Apa itu Atestasi?#

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):

  1. Pertama dan secara lebih umum, atestasi dalam dunia kriptografi adalah istilah di mana satu pihak "menyatakan" secara kriptografis sebuah pernyataan kepada pihak lain.

  2. 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:

Slack Icon

Become part of our Passkeys Community for updates & support.

Join
  1. Ketiga, dalam WebAuthn, sebuah pernyataan atestasi adalah elemen opsional dari objek atestasi. Pernyataan ini, ketika disertakan, memverifikasi karakteristik tertentu dari autentikator (perangkat) yang terlibat dalam proses atestasi. Namun, beberapa produsen perangkat (misalnya Apple) tidak menawarkan pernyataan atestasi karena aspek spesifikasi ini tidak dimaksudkan untuk sinkronisasi passkey dan gagal memverifikasi atribut keamanan secara efektif ketika kredensial dapat disinkronkan di berbagai perangkat (misalnya, passkey dibuat di iPhone tetapi juga digunakan di MacBook karena disinkronkan melalui iCloud Keychain yang sama). Karakteristik yang dapat diberikan ketika pernyataan atestasi disediakan:
    • Menawarkan bukti bahwa perangkat yang asli dan tepercaya digunakan selama autentikasi.
    • Memberikan detail tentang asal, model, dan informasi relevan lainnya dari perangkat.
    • Meningkatkan langkah-langkah keamanan, terutama dalam skenario di mana kepercayaan perangkat sangat penting (misalnya, industri yang diatur tertentu seperti layanan kesehatan).

Alur proses Pendaftaran berikut menunjukkan peran atestasi (objek) dalam WebAuthn:

Contoh objek atestasi#

{ "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.

Debugger Icon

Want to experiment with passkey flows? Try our Passkeys Debugger.

Try for Free

Lanjutkan membaca untuk rincian teknis dari atribut yang paling penting.

Poin-Poin Penting#

  • Atestasi mengacu pada proses satu pihak secara kriptografis menyatakan sebuah pernyataan kepada pihak lain.
  • Objek atestasi di WebAuthn dibuat oleh autentikator dan diteruskan selama Pendaftaran. Ini berisi antara lain AAGUID, ID kredensial dan kunci publik.
  • Pernyataan atestasi di WebAuthn adalah bidang opsional dalam objek atestasi yang memastikan bahwa perangkat asli digunakan untuk autentikasi.

Memahami Esensi Atestasi#

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:#

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).

  • Tanpa Atestasi (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.
  • Atestasi Tidak Langsung (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.
  • Atestasi Langsung (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.
  • Atestasi Perusahaan (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.
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

Atribut objek atestasi#

Objek atestasi berisi banyak atribut, berikut adalah penjelasan singkat dari beberapa atribut yang dipilih:

attestationObject#

"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:

  • fmt mewakili format atestasi, karena autentikator dapat memberikan data atestasi dengan cara yang berbeda. Ini memberitahu server bagaimana server harus memvalidasi data atestasi. Nilai yang diizinkan adalah "packed", "tpm", "android-key", "android-safetynet", "fido-u2f", "apple" atau "none". Lihat detail di sini
  • attStmt adalah pernyataan atestasi. Untuk passkey, misalnya di perangkat iOS atau Android, ini dibiarkan kosong karena passkey di iOS atau Android dapat disinkronkan, dan diisi untuk perangkat lain seperti di Windows atau kunci keamanan perangkat keras.
  • authData adalah buffer nilai yang berisi data berikut: Data kredensial yang diates memainkan peran penting di sini. Ini berisi:

attStmt (pernyataan atestasi)#

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#

"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#

"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)
  • Tidak ada properti transports yang diatur: perilaku default yang tidak memberikan indikasi apa pun.

FAQ Atestasi#

Mengapa atestasi sangat penting dalam WebAuthn?#

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 Testimonial

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 Community

Apakah pengenalan passkey mengubah peran atestasi?#

Ya, 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.

Apa pengaturan preferensi atestasi yang direkomendasikan untuk passkey?#

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).

Apa hubungan antara atestasi dan layanan metadata FIDO?#

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).

Apakah ada kekhawatiran privasi dengan atestasi langsung?#

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.

Bagaimana WebAuthn memastikan privasi pengguna selama 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.

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start for free

Share this article


LinkedInTwitterFacebook

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.

Related Terms