Model keamanan Pembaruan Perangkat

Device Update for IoT Hub menawarkan metode aman untuk menyebarkan pembaruan untuk firmware perangkat, citra, dan aplikasi ke perangkat IoT. Alur kerja menyediakan saluran aman end-to-end dengan model rantai pengawasan penuh yang dapat digunakan perangkat untuk membuktikan pembaruan tepercaya, tidak dimodifikasi, dan disengaja.

Setiap langkah dalam alur kerja Pembaruan Perangkat dilindungi melalui berbagai fitur dan proses keamanan untuk memastikan setiap langkah dalam alur melakukan handoff aman ke yang berikutnya. Kode referensi agen Pembaruan Perangkat mengidentifikasi dan mengelola permintaan pembaruan yang tidak sah dengan benar. Agen referensi juga memeriksa setiap unduhan untuk memastikan bahwa konten tepercaya, tidak dimodifikasi, dan disengaja.

Ringkasan

Saat pembaruan diimpor ke instans Pembaruan Perangkat, layanan akan mengunggah dan memeriksa file biner pembaruan untuk memastikan bahwa file tersebut belum dimodifikasi atau ditukar oleh pengguna berbahaya. Setelah diverifikasi, layanan Pembaruan Perangkat menghasilkan manifes pembaruan internal dengan hash file dari manifes impor dan metadata lainnya. Manifes pembaruan ini kemudian ditandatangani oleh layanan Pembaruan Perangkat.

Setelah diserap ke dalam layanan dan disimpan di Azure, file biner pembaruan dan metadata pelanggan terkait secara otomatis dienkripsi saat tidak digunakan oleh layanan Azure Storage. Layanan Pembaruan Perangkat tidak secara otomatis menyediakan enkripsi tambahan, tetapi memungkinkan pengembang mengenkripsi konten itu sendiri sebelum konten mencapai layanan Pembaruan Perangkat.

Jika pembaruan disebarkan ke perangkat dari layanan Pembaruan Perangkat, pesan yang ditandatangani dikirim melalui saluran IoT Hub yang dilindungi ke perangkat. Tanda tangan permintaan divalidasi oleh agen Device Update perangkat sebagai autentik.

Unduhan biner yang dihasilkan diamankan melalui validasi tanda tangan manifes pembaruan. Manifes pembaruan berisi hash file biner, jadi setelah manifes dipercaya, agen Pembaruan Perangkat memercayai hash dan mencocokkannya dengan biner. Setelah biner pembaruan diunduh dan diverifikasi, biner tersebut diserahkan ke alat penginstal pada perangkat.

Detail implementasi

Untuk memastikan layanan Pembaruan Perangkat menurunkan skala ke perangkat sederhana berkinerja rendah, model keamanan menggunakan kunci asimetris mentah dan tanda tangan mentah. Layanan tersebut menggunakan format berbasis JSON seperti JSON Web Token & JSON Web Key.

Mengamankan konten pembaruan melalui manifes pembaruan

Manifes pembaruan divalidasi menggunakan dua tanda tangan. Tanda tangan dibuat menggunakan struktur yang terdiri dari kunci penandatangan dan kunci akar.

Agen Pembaruan Perangkat memiliki kunci publik yang disematkan yang digunakan untuk semua perangkat yang kompatibel dengan Pembaruan Perangkat. Kunci publik ini adalah kunci akar. Kunci privat yang sesuai dikendalikan oleh Microsoft.

Microsoft juga menghasilkan pasangan kunci privat/publik yang tidak disertakan dalam agen Pembaruan Perangkat atau disimpan di perangkat. Kunci ini adalah kunci penandatanganan.

Ketika pembaruan diimpor ke Device Update for IoT Hub, dan manifes pembaruan dihasilkan oleh layanan, layanan menandatangani manifes menggunakan kunci penandatanganan, dan termasuk kunci penandatanganan itu sendiri, yang ditandatangani oleh kunci akar. Ketika manifes pembaruan dikirim ke perangkat, agen Pembaruan Perangkat menerima data tanda tangan berikut:

  1. Nilai tanda tangan itu sendiri.
  2. Algoritma yang digunakan untuk menghasilkan #1.
  3. Informasi kunci publik dari kunci penandatanganan yang digunakan untuk menghasilkan #1.
  4. Tanda tangan kunci penandatanganan publik di #3.
  5. ID kunci publik dari kunci akar yang digunakan untuk menghasilkan #3.
  6. Algoritma yang digunakan untuk menghasilkan #4.

Agen Pembaruan Perangkat menggunakan informasi yang ditentukan di atas untuk memvalidasi tanda tangan kunci penandatanganan publik yang ditandatangani oleh kunci akar. Agen Pembaruan Perangkat kemudian memvalidasi bahwa tanda tangan manifes pembaruan ditandatangani oleh kunci penandatanganan. Jika semua tanda tangan benar, manifes pembaruan dipercaya oleh agen Pembaruan Perangkat. Karena manifes pembaruan menyertakan hash file yang sesuai dengan file pembaruan itu sendiri, file pembaruan kemudian juga dapat dipercaya jika hash cocok.

Memiliki kunci akar dan penandatanganan memungkinkan Microsoft memutar secara berkala kunci penandatanganan, praktik terbaik keamanan.

Tanda Tangan JSON Web (JWS)

updateManifestSignature digunakan untuk memastikan informasi yang terkandung dalam updateManifest belum diubah. Ini updateManifestSignature diproduksi menggunakan JSON Web Signature dengan JSON Web Key, memungkinkan verifikasi sumber. Tanda tangan adalah string Dikodekan Base64Url dengan tiga bagian yang diuraikan oleh ".". Lihat metode bantuan jws_util.h untuk menguraikan dan memverifikasi kunci dan token JSON.

JSON Web Signature adalah standar IETF yang diusulkan digunakan secara luas untuk menandatangani konten menggunakan struktur data berbasis JSON. Ini adalah cara untuk memastikan integritas data dengan memverifikasi tanda tangan data. Informasi selengkapnya dapat ditemukan di JSON Web Signature (JWS) RFC 7515.

JSON Web Token

JSON Web Token adalah metode standar industri yang terbuka untuk mewakili klaim dengan aman antara dua pihak.

Kunci Akar

Setiap perangkat Pembaruan Perangkat harus berisi sekumpulan kunci akar. Kunci ini akar kepercayaan untuk semua tanda tangan Pembaruan Perangkat. Tanda tangan apa pun harus dirantai melalui salah satu kunci akar ini agar dianggap sah.

Kumpulan kunci akar akan berubah seiring waktu karena tepat untuk memutar kunci penandatanganan secara berkala untuk tujuan keamanan. Akibatnya, perangkat lunak agen Pembaruan Perangkat perlu diperbarui dengan set kunci akar terbaru pada interval yang ditentukan oleh tim Pembaruan Perangkat. Rotasi kunci akar yang direncanakan berikutnya akan terjadi pada bulan Mei 2025.

Dimulai dengan agen Pembaruan Perangkat versi 1.1.0, agen akan secara otomatis memeriksa perubahan apa pun pada kunci root setiap kali penyebaran pembaruan ke perangkat tersebut terjadi. Kemungkinan perubahan:

  • Kunci akar baru tersedia.
  • Kunci akar yang ada dinonaktifkan (secara efektif "dicabut"), yang berarti tidak lagi valid untuk membangun kepercayaan.

Jika salah satu atau kedua hal di atas benar, agen Pembaruan Perangkat akan secara otomatis mengunduh dari layanan DU paket kunci root baru. Paket ini berisi kumpulan lengkap semua kunci akar, serta daftar yang dinonaktifkan yang berisi informasi tentang kunci akar dan/atau kunci penandatanganan mana yang tidak lagi valid. Paket kunci akar itu sendiri ditandatangani dengan setiap kunci akar, sehingga kepercayaan untuk paket dapat ditetapkan baik dari kunci akar asli yang merupakan bagian dari agen DU itu sendiri, serta kunci akar yang kemudian diunduh. Setelah proses validasi selesai, setiap kunci akar baru dianggap dipercaya untuk tujuan memvalidasi kepercayaan dengan kunci penandatanganan untuk manifes pembaruan tertentu, sementara kunci akar atau kunci penandatanganan yang tercantum dalam daftar yang dinonaktifkan tidak lagi dipercaya untuk tujuan tersebut.

Tanda tangan

Semua tanda tangan diakomodasi oleh kunci penandatanganan (publik) yang ditandatangani oleh salah satu kunci akar. Tanda tangan mengidentifikasi kunci akar mana yang digunakan untuk menandatangani kunci penandatanganan.

Agen Pembaruan Perangkat harus memvalidasi tanda tangan dengan terlebih dahulu memvalidasi bahwa tanda tangan kunci penandatanganan (publik) adalah tepat, valid, dan ditandatangani oleh salah satu kunci akar yang disetujui. Setelah kunci penandatanganan berhasil divalidasi, tanda tangan itu sendiri dapat divalidasi menggunakan kunci publik penandatanganan yang sekarang tepercaya.

Kunci penandatanganan diputar pada irama yang jauh lebih cepat daripada kunci akar, jadi tunggu pesan ditandatangani oleh berbagai kunci penandatanganan yang berbeda.

Pencabutan kunci penandatanganan dikelola oleh layanan Pembaruan Perangkat, sehingga pengguna tidak boleh mencoba untuk membuat cache kunci penandatanganan. Selalu gunakan kunci penandatanganan yang menyertai tanda tangan.

Mengamankan perangkat

Penting untuk memastikan bahwa aset keamanan terkait Pembaruan Perangkat diamankan dan dilindungi dengan benar di perangkat Anda. Aset seperti kunci akar perlu dilindungi dari modifikasi. Ada berbagai cara untuk melindungi kunci akar, seperti menggunakan perangkat keamanan (TPM, SGX, HSM, perangkat keamanan lainnya) atau melakukan pengodean keras di agen Pembaruan Perangkat seperti yang dilakukan saat ini dalam implementasi referensi. Yang terakhir mengharuskan kode agen Pembaruan Perangkat ditandatangani secara digital dan dukungan Integritas Kode sistem diaktifkan untuk melindungi dari modifikasi berbahaya dari kode Agen.

Langkah keamanan lainnya mungkin diperlukan, seperti memastikan bahwa penyerahan dari komponen ke komponen dilakukan dengan cara yang aman. Misalnya, mendaftarkan akun terisolasi tertentu untuk menjalankan berbagai komponen dan membatasi komunikasi berbasis jaringan (misalnya, panggilan REST API) ke localhost saja.

Langkah berikutnya

Pelajari cara Pembaruan Perangkat menggunakan kontrol akses berbasis peran Azure