Bagikan melalui


Pengesahan kunci simetris

Artikel ini menjelaskan proses pengesahan identitas saat menggunakan kunci simetris dengan layanan penyediaan perangkat Device Provisioning Service. Attestasi kunci simetris adalah pendekatan sederhana untuk mengautentikasi perangkat dengan instans Device Provisioning Service. Metode pengesahan ini mewakili pengalaman "Halo dunia" bagi pengembang yang baru menggunakan provisi perangkat, atau tidak memiliki persyaratan keamanan yang ketat. Pengesahan perangkat menggunakan TPM atau sertifikat X.509 lebih aman, dan harus digunakan untuk persyaratan keamanan yang lebih ketat.

Pendaftaran kunci simetris juga menyediakan cara bagi perangkat warisan dengan fungsionalitas keamanan terbatas untuk memulai koneksi ke cloud melalui Azure IoT.

Pembuatan kunci simetris

Secara bawaan, Device Provisioning Service membuat kunci simetris baru dengan panjang 64 byte saat pendaftaran baru dibuat dengan opsi Hasilkan kunci simetris secara otomatis diaktifkan.

Cuplikan layar yang memperlihatkan pendaftaran individual baru dengan opsi buat kunci otomatis dipilih.

Anda juga dapat menyediakan kunci simetris Anda sendiri untuk pendaftaran dengan menonaktifkan opsi ini. Kunci simetris harus dalam format Base 64 dan memiliki panjang antara 16 byte dan 64 byte.

Proses pengesahan terperinci

Pengesahan kunci simetrik dengan Device Provisioning Service dilakukan menggunakan token keamanan yang sama yang didukung oleh hub IoT untuk mengidentifikasi perangkat. Token keamanan ini adalah token Tanda Tangan Akses Bersama (SAS).

Token SAS memiliki tanda tangan hash yang dibuat menggunakan kunci simetris. Device Provisioning Service membuat ulang tanda tangan untuk memverifikasi apakah token keamanan yang disajikan selama pengesahan autentik atau tidak.

Token SAS memiliki bentuk berikut:

SharedAccessSignature sig={signature}&se={expiry}&skn={policyName}&sr={URL-encoded-resourceURI}

Berikut adalah komponen dari setiap token:

Nilai Deskripsi
{signature} Sebuah string penanda tangan HMAC-SHA256. Untuk pendaftaran perorangan, tanda tangan ini diproduksi menggunakan kunci simetris (primer atau sekunder) untuk melakukan hash. Untuk kelompok pendaftaran, kunci turunan dari kunci grup pendaftaran digunakan untuk menghasilkan hash. Hash dilakukan pada pesan dengan bentuk: URL-encoded-resourceURI + "\n" + expiry. Penting: Kunci harus didekodekan dari base64 sebelum digunakan untuk melakukan komputasi HMAC-SHA256. Selain itu, hasil tanda tangan harus dikodekan dengan URL.
{resourceURI} URI titik akhir pendaftaran yang dapat diakses dengan token ini, dimulai dengan ID cakupan untuk instans Device Provisioning Service. Misalnya: {Scope ID}/registrations/{Registration ID}
{kedaluwarsa} String UTF8 untuk jumlah detik sejak epoch 00:00:00 UTC pada 1 Januari 1970.
{URL-encoded-resourceURI} Pengodean URL huruf kecil pada URI sumber daya huruf kecil
{policyName} Nama kebijakan akses bersama yang dirujuk token ini. Nama kebijakan yang digunakan saat menyediakan dengan pengesahan kunci simetris adalah pendaftaran.

Untuk contoh kode yang membuat token SAS, lihat token SAS.

Pendaftaran individual dengan kunci simetris

Saat perangkat mengautentikasi dengan pendaftaran individu, perangkat menggunakan kunci simetrik yang ditentukan dalam entri pendaftaran individu untuk membuat tanda tangan yang telah di-hash untuk token SAS.

Pendaftaran grup dengan kunci simetris

Tidak seperti pendaftaran individu, kunci simetris dari grup pendaftaran tidak digunakan oleh perangkat secara langsung saat melakukan penyediaan. Sebagai gantinya, perangkat yang melakukan pengadaan melalui grup pendaftaran melakukan proses ini menggunakan kunci perangkat turunan. Kunci perangkat turunan adalah hash dari ID pendaftaran perangkat dan dihitung menggunakan kunci simetris grup pendaftaran. Perangkat kemudian dapat menggunakan kunci perangkat turunannya untuk menandatangani token SAS yang digunakannya untuk mendaftar dengan DPS. Karena perangkat mengirim ID pendaftarannya saat mendaftar, DPS dapat menggunakan kunci simetris grup pendaftaran untuk meregenerasi kunci perangkat turunan dan memverifikasi tanda tangan pada SAS token.

Pertama, ID pendaftaran unik didefinisikan untuk setiap perangkat yang mengautentikasi melalui grup pendaftaran. ID pendaftaran adalah string yang tidak sensitif terhadap huruf besar/kecil (panjangnya maksimal 128 karakter) yang terdiri dari karakter alfanumerik ditambah karakter khusus yang valid: - . _ :. Karakter terakhir harus alfanumerik atau tanda hubung ('-'). ID pendaftaran harus menjadi sesuatu yang unik yang mengidentifikasi perangkat. Misalnya, alamat MAC atau nomor seri yang tersedia untuk mengidentifikasi perangkat secara unik. Dalam hal ini, ID pendaftaran dapat terdiri dari alamat MAC dan nomor seri yang mirip dengan yang berikut:

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Setelah ID pendaftaran ditentukan untuk perangkat, kunci simetris untuk grup pendaftaran digunakan untuk menghitung hash HMAC-SHA256 dari ID pendaftaran untuk mendapatkan kunci perangkat turunan. Beberapa contoh pendekatan untuk menghitung kunci perangkat turunan diberikan pada tab di bawah ini.

Ekstensi IoT untuk Azure CLI menyediakan compute-device-key perintah untuk menghasilkan kunci perangkat turunan. Perintah ini dapat digunakan dari sistem berbasis Windows atau Linux, di PowerShell atau shell Bash.

Ganti nilai argumen --key dengan Kunci Primer dari grup pendaftaran Anda.

Ganti nilai --registration-id argumen dengan ID pendaftaran Anda.

az iot dps enrollment-group compute-device-key --key 8isrFI1sGsIlvvFSSFRiMfCNzv21fjbE/+ah/lSh3lF8e2YG1Te7w1KpZhJFFXJrqYKi9yegxkqIChbqOS9Egw== --registration-id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Contoh hasil:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Kunci perangkat yang dihasilkan kemudian digunakan untuk menghasilkan token SAS yang akan digunakan untuk pengesahan. Setiap perangkat dalam grup pendaftaran diperlukan untuk membuktikan menggunakan token keamanan yang dihasilkan dari kunci turunan yang unik. Kunci simetris grup pendaftaran tidak dapat digunakan secara langsung untuk pengesahan.

Menginstal kunci perangkat turunan

Idealnya, kunci perangkat diperoleh dan dipasang di pabrik. Metode ini menjamin bahwa kunci grup tidak pernah disertakan dalam perangkat lunak apa pun yang disebarkan ke perangkat. Ketika perangkat diberi alamat MAC atau nomor seri, kunci dapat diturunkan dan disuntikkan ke perangkat namun produsen memilih untuk menyimpannya.

Pertimbangkan diagram berikut yang menunjukkan tabel kunci perangkat yang dihasilkan di pabrik dengan mem-hash setiap ID pendaftaran perangkat dengan kunci pendaftaran grup (K).

Diagram yang memperlihatkan kunci perangkat yang ditetapkan di pabrik.

Identitas setiap perangkat diwakili oleh ID pendaftaran dan kunci perangkat turunan yang diinstal di pabrik. Kunci perangkat tidak pernah disalin ke lokasi lain dan kunci grup tidak pernah disimpan di perangkat.

Jika kunci perangkat tidak diinstal di pabrik, HSM modul keamanan perangkat keras harus digunakan untuk menyimpan identitas perangkat dengan aman.

Langkah berikutnya

Setelah Anda memahami pengesahan kunci simetris, baca artikel berikut untuk mempelajari lebih lanjut: