Menentukan penyedia kunci sandi dengan AAGUID

Pihak tepercaya (RP) dapat menentukan penyedia kunci sandi mana yang dibuat oleh kunci sandi dengan memeriksa AAGUID dari kredensial kunci publik terkait.

Tantangan dalam pengelolaan kunci sandi

Salah satu manfaat menggunakan kunci sandi adalah memungkinkan pengguna membuat beberapa kunci sandi untuk satu akun. Dengan fleksibilitas ini beserta keandalan kunci sandi, meskipun pengguna tidak dapat mengakses akun karena kehilangan salah satu kunci sandinya, mereka tetap dapat login ke pihak tepercaya menggunakan kunci sandi alternatif.

Tantangan bagi pengguna yang mengelola beberapa kunci sandi di RP adalah mengidentifikasi kunci sandi yang tepat saat mereka perlu mengedit atau menghapus kunci sandi tertentu. Contoh yang baik adalah saat pengguna ingin menghapus kunci sandi yang tidak digunakan. RP sebaiknya melampirkan informasi tentang kunci sandi seperti tanggal pembuatan dan tanggal terakhir digunakan dalam daftar kunci sandi. Tindakan ini membantu pengguna menemukan kunci sandi tertentu.

RP juga dapat memungkinkan pengguna memberi nama kunci sandi segera setelah dibuat atau dibuat setelahnya, tetapi banyak pengguna yang tidak melakukannya. Idealnya, kunci sandi diberi nama secara otomatis yang mencerminkan sinyal yang dikirim dari klien atau informasi yang disertakan dalam kredensial kunci publik.

Browser menyediakan string agen pengguna yang dapat digunakan pihak tepercaya untuk menamai kunci sandi, tetapi platform seperti browser Android, iOS, atau desktop dengan kemampuan ekstensi memungkinkan pembuatan kunci sandi oleh pengelola sandi pihak ketiga dan string agen pengguna tidak selalu mewakili penyedia kunci sandi yang sebenarnya.

Dengan Authenticator Globally Unique Identifier (AAGUID), yang disertakan dalam kredensial kunci publik yang ditampilkan saat pendaftaran kunci sandi, RP dapat menentukan penyedia kunci sandi dan menggunakannya agar pengguna dapat menemukan kunci sandi yang tepat dengan mudah.

Menentukan penyedia kunci sandi dengan AAGUID

AAGUID adalah nomor unik yang mengidentifikasi model pengautentikasi (bukan instance spesifik pengautentikasi). AAGUID dapat ditemukan sebagai bagian dari data pengautentikasi kredensial kunci publik.

Tata letak objek pengesahan menggambarkan data pengautentikasi yang disertakan (berisi data kredensial yang disahkan) dan pernyataan pengesahan.
AAGUID dapat ditemukan di data otentikator.

RP dapat menggunakan AAGUID untuk mengidentifikasi penyedia kunci sandi. Misalnya, jika pengguna membuat kunci sandi di perangkat Android menggunakan Pengelola Sandi Google, RP akan menerima AAGUID dari "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4". RP dapat menganotasi kunci sandi dalam daftar kunci sandi untuk menunjukkan bahwa kunci sandi dibuat di Pengelola Sandi Google.

Setelan kunci sandi di halaman setelan keamanan menampilkan informasi mendetail tentang setiap kunci sandi.
Contoh UI pengelolaan kunci sandi.

Untuk memetakan AAGUID ke penyedia kunci sandi, RP dapat menggunakan repositori AAGUID yang bersumber dari komunitas. Dengan mencari AAGUID di daftar, nama penyedia kunci sandi dan teks data svg ikonnya dapat ditemukan.

Mengambil AAGUID adalah fitur yang disediakan oleh sebagian besar library WebAuthn. Contoh berikut menunjukkan kode pendaftaran sisi server menggunakan SimpleWebAuthn:

// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };

...

 // Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
  response: credential,
  expectedChallenge,
  expectedOrigin,
  expectedRPID,
  requireUserVerification: false,
});

...

const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';

Kesimpulan

AAGUID adalah string unik yang mengidentifikasi penyedia kunci sandi yang membuat kunci sandi. RP dapat menggunakan AAGUID untuk memudahkan pengguna mengelola kunci sandi. Repositori AAGUID yang bersumber dari komunitas dapat digunakan untuk memetakan AAGUID ke penyedia kunci sandi.