Menentukan penyedia kunci sandi dengan AAGUID

Pihak tepercaya (RP) dapat menentukan penyedia kunci sandi yang membuat kunci sandi dengan memeriksa AAGUID kredensial kunci publik terkait.

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. Hal ini membantu pengguna menemukan kunci sandi tertentu.

RP juga dapat mengizinkan pengguna memberi nama kunci sandi segera setelah dibuat atau nanti, 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 memberi nama kunci sandi, tetapi platform seperti Android, iOS, atau browser desktop dengan kemampuan ekstensi memungkinkan pembuatan kunci sandi oleh pengelola sandi pihak ketiga dan string agen pengguna tidak selalu menunjukkan siapa 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 angka unik yang mengidentifikasi model pengautentikasi (bukan instance pengautentikasi tertentu). AAGUID dapat ditemukan sebagai bagian dari data pengautentikasi kredensial kunci publik.

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

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 "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4". RP dapat menganotasi kunci sandi dalam daftar kunci sandi untuk menunjukkan bahwa kunci sandi tersebut dibuat di Pengelola Sandi Google.

Setelan kunci sandi dalam 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.