Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mem-porting AWS IoT over-the-air pustaka pembaruan (OTA)
Dengan pembaruan over-the-air FreeRTOS (OTA), Anda dapat melakukan hal berikut:
-
Terapkan gambar firmware baru ke satu perangkat, sekelompok perangkat, atau seluruh armada Anda.
-
Terapkan firmware ke perangkat saat ditambahkan ke grup, reset, atau disediakan ulang.
-
Verifikasi keaslian dan integritas firmware baru setelah dikerahkan ke perangkat.
-
Pantau kemajuan penerapan.
-
Debug penerapan yang gagal.
-
Tanda tangani firmware secara digital menggunakan Penandatanganan Kode untuk. AWS IoT
Untuk informasi selengkapnya, lihat Pembaruan FreerTOS Over-the-Air di Panduan Pengguna FreerTOS bersama dengan Dokumentasi Pembaruan O.AWS IoT ver-the-air
Anda dapat menggunakan pustaka pembaruan OTA untuk mengintegrasikan fungsionalitas OTA ke dalam aplikasi FreerTOS Anda. Untuk informasi selengkapnya, lihat FreerTOS OTA update Library di Panduan Pengguna FreerTOS.
Perangkat FreeRTOS harus menerapkan verifikasi penandatanganan kode kriptografi pada gambar firmware OTA yang mereka terima. Kami merekomendasikan algoritma berikut:
-
Algoritma Tanda Tangan Digital Kurva Elips (ECDSA)
-
Kurva NIST P256
-
SHA-256 hash
Prasyarat
-
Lengkapi instruksi diMenyiapkan ruang kerja dan proyek Anda untuk porting.
-
Buat port antarmuka transportasi jaringan.
Untuk informasi, lihat Porting Antarmuka Transportasi Jaringan.
-
Integrasikan pustaka CoreMQTT. Lihat pustaka CoreMQTT di Panduan Pengguna FreeRTOS.
-
Buat bootloader yang dapat mendukung pembaruan OTA.
Porting platform
Anda harus menyediakan implementasi OTA portable abstraction layer (PAL) untuk port perpustakaan OTA ke perangkat baru. API PAL didefinisikan dalam file ota_platform_interface.h
Nama fungsi |
Deskripsi |
---|---|
|
Menghentikan pembaruan OTA. |
|
Membuat file untuk menyimpan potongan data yang diterima. |
|
Menutup file yang ditentukan. Ini mungkin mengautentikasi file jika Anda menggunakan penyimpanan yang mengimplementasikan perlindungan kriptografi. |
|
Menulis blok data ke file yang ditentukan pada offset yang diberikan. Setelah berhasil, fungsi mengembalikan jumlah byte yang ditulis. Jika tidak, fungsi mengembalikan kode kesalahan negatif. Ukuran blok akan selalu menjadi kekuatan dua dan akan disejajarkan. Untuk informasi selengkapnya, lihat konfigurasi pustaka OTA |
|
Mengaktifkan atau meluncurkan gambar firmware baru. Untuk beberapa port, jika perangkat diatur ulang secara terprogram secara sinkron, fungsi ini tidak akan kembali. |
|
Melakukan apa yang diperlukan oleh platform untuk menerima atau menolak gambar firmware OTA terbaru (atau bundel). Untuk mengimplementasikan fungsi ini, lihat dokumentasi untuk detail dan arsitektur papan (platform) Anda. |
|
Mendapat status gambar pembaruan OTA. |
Terapkan fungsi dalam tabel ini jika perangkat Anda memiliki dukungan bawaan untuk mereka.
Nama fungsi |
Deskripsi |
---|---|
|
Memverifikasi tanda tangan dari file yang ditentukan. |
|
Membaca sertifikat penandatangan yang ditentukan dari sistem file dan mengembalikannya ke pemanggil. |
|
Mengatur ulang perangkat. |
catatan
Pastikan Anda memiliki bootloader yang dapat mendukung pembaruan OTA. Untuk petunjuk cara membuat bootloader AWS IoT perangkat, lihatBootloader perangkat IoT.
Tes E2E dan PAL
Jalankan tes OTA PAL dan E2E.
Tes E2E
Tes ujung ke ujung (E2E) OTA digunakan untuk memverifikasi kemampuan OTA perangkat dan untuk mensimulasikan skenario dari kenyataan. Tes ini akan mencakup penanganan kesalahan.
Prasyarat
Untuk mem-port tes ini, Anda memerlukan yang berikut:
Sebuah proyek dengan perpustakaan AWS OTA terintegrasi di dalamnya. Kunjungi Panduan Porting Perpustakaan OTA
untuk informasi tambahan. Port aplikasi demo menggunakan perpustakaan OTA untuk berinteraksi dengan AWS IoT Core melakukan pembaruan OTA. Lihat Mem-porting aplikasi demo OTA.
Siapkan alat IDT. Ini menjalankan aplikasi host OTA E2E untuk membangun, mem-flash, dan memantau perangkat dengan konfigurasi yang berbeda, dan memvalidasi integrasi perpustakaan OTA.
Mem-porting aplikasi demo OTA
Tes OTA E2E harus memiliki aplikasi demo OTA untuk memvalidasi integrasi perpustakaan OTA. Aplikasi demo harus memiliki kapasitas untuk melakukan pembaruan firmware OTA. Anda dapat menemukan aplikasi demo FreeRTOS OTA di repositori FreerTOS. GitHub
Langkah porting
Inisialisasi agen OTA.
Menerapkan fungsi callback aplikasi OTA.
Buat tugas pemrosesan acara agen OTA.
Mulai agen OTA.
Pantau statistik agen OTA.
Matikan agen OTA.
Kunjungi FreeRTOS OTA melalui MQTT - Titik masuk
Konfigurasi
Konfigurasi berikut diperlukan untuk berinteraksi dengan AWS IoT Core:
AWS IoT Core kredensyal klien
Siapkan DemoConfigroot_CA_PEM dengan titik akhir Amazon Trust Services.
Ota_Over_Mqtt_Demo/demo_config.h
Lihat AWS otentikasi server untuk detail selengkapnya.Siapkan DemoConfigClient_Certificate_PEM dan DemoConfigClient_Private_KEY_PEM dengan kredensyal klien Anda.
Ota_Over_Mqtt_Demo/demo_config.h
AWS IoT Lihat detail AWS otentikasi klien untuk mempelajari tentang sertifikat klien dan kunci pribadi.
Versi aplikasi
Protokol Kontrol OTA
Protokol Data OTA
Kredensyal Penandatanganan Kode
Konfigurasi perpustakaan OTA lainnya
Anda dapat menemukan informasi sebelumnya di dalam demo_config.h
dan di aplikasi demo ota_config.h
FreerTOS OTA. Kunjungi FreeRTOS OTA melalui MQTT - Menyiapkan
Membangun verifikasi
Jalankan aplikasi demo untuk menjalankan pekerjaan OTA. Ketika selesai dengan sukses, Anda dapat terus menjalankan tes OTA E2E.
Demo FreeRTOS OTA
Menjalankan tes dengan alat IDT
Untuk menjalankan tes OTA E2E, Anda harus menggunakan AWS IoT Device Tester (IDT) untuk mengotomatiskan eksekusi. Lihat AWS IoT Device Tester FreeRTOS di Panduan Pengguna FreeRTOS untuk lebih jelasnya.
Kasus uji E2E
Kasus uji |
Deskripsi |
---|---|
|
Tes jalur bahagia untuk pembaruan OTA reguler. Ini membuat pembaruan dengan versi yang lebih baru, yang berhasil diperbarui perangkat. |
|
Tes ini membuat 3 pembaruan OTA berturut-turut. Perangkat ini diharapkan untuk memperbarui 3 kali berturut-turut. |
|
Tes ini memverifikasi bahwa perangkat melakukan rollback ke firmware sebelumnya jika tidak dapat terhubung ke jaringan dengan firmware baru. |
|
Tes ini mengonfirmasi bahwa perangkat menolak firmware yang masuk jika versinya tetap sama. |
|
Tes ini memverifikasi bahwa perangkat menolak pembaruan jika gambar tidak ditandatangani. |
|
Tes ini memverifikasi bahwa perangkat menolak pembaruan jika firmware ditandatangani dengan sertifikat yang tidak tepercaya. |
|
Tes ini memverifikasi bahwa perangkat menolak versi pembaruan yang lebih lama. |
|
Perangkat yang berbeda mendukung algoritma penandatanganan dan hashing yang berbeda. Pengujian ini memverifikasi bahwa perangkat gagal pembaruan OTA jika dibuat dengan algoritme yang tidak didukung. |
|
Ini adalah tes jalur bahagia untuk fitur penangguhan dan lanjutkan. Tes ini membuat pembaruan OTA dan memulai pembaruan. Kemudian terhubung AWS IoT Core dengan ID klien yang sama (nama benda) dan kredensil. AWS IoT Core kemudian lepaskan perangkat. Perangkat diharapkan untuk mendeteksi bahwa itu terputus dari AWS IoT Core, dan setelah jangka waktu tertentu, pindah ke keadaan ditangguhkan dan mencoba untuk menyambung kembali AWS IoT Core dan melanjutkan unduhan. |
|
Tes ini memeriksa apakah perangkat dapat memulihkan dirinya sendiri jika pekerjaan OTA dibatalkan saat dalam keadaan ditangguhkan. Itu melakukan hal yang sama seperti |
|
Saat pembaruan OTA dibuat, Anda dapat mengonfigurasi masa pakai url S3 yang telah ditandatangani sebelumnya. Tes ini memverifikasi bahwa perangkat dapat melakukan OTA, meskipun tidak dapat menyelesaikan unduhan saat url kedaluwarsa. Perangkat diharapkan untuk meminta dokumen pekerjaan baru, yang berisi url baru untuk melanjutkan unduhan. |
|
Tes ini membuat dua pembaruan OTA berturut-turut. Saat perangkat melaporkan bahwa perangkat mengunduh pembaruan pertama, kekuatan pengujian membatalkan pembaruan pertama. Perangkat diharapkan untuk membatalkan pembaruan saat ini dan mengambil pembaruan kedua, dan menyelesaikannya. |
|
Tes ini membuat dua pembaruan OTA berturut-turut. Saat perangkat melaporkan bahwa perangkat mengunduh pembaruan pertama, kekuatan pengujian membatalkan pembaruan pertama. Perangkat diharapkan untuk membatalkan pembaruan saat ini dan mengambil pembaruan kedua, lalu menyelesaikannya. |
|
Tes ini memeriksa apakah perangkat dapat menolak pembaruan saat gambar mogok. |
Tes PAL
Prasyarat
Untuk mem-port tes Network Transport Interface, Anda memerlukan yang berikut ini:
Sebuah proyek yang dapat membangun FreeRTOS dengan port kernel FreeRTOS yang valid.
Implementasi kerja OTA PAL.
Porting
Tambahkan FreerTos-Libraries-Integration-Tests
sebagai submodul ke dalam proyek Anda. Lokasi submodul dalam proyek harus di mana ia dapat dibangun. Salin
config_template/test_execution_config_template.h
danconfig_template/test_param_config_template.h
ke lokasi di jalur build, dan ganti namanya menjaditest_execution_config.h
dantest_param_config.h
.Sertakan file yang relevan dalam sistem build. Jika menggunakan
CMake
,qualification_test.cmake
dansrc/ota_pal_tests.cmake
dapat digunakan untuk menyertakan file yang relevan.Konfigurasikan tes dengan menerapkan fungsi-fungsi berikut:
SetupOtaPalTestParam()
: didefinisikan dalamsrc/ota/ota_pal_test.h
. Implementasi harus memiliki nama dan tanda tangan yang sama seperti yang didefinisikan dalamota_pal_test.h
. Saat ini, Anda tidak perlu mengkonfigurasi fungsi ini.
Terapkan UNITY_OUTPUT_CHAR sehingga log keluaran pengujian tidak saling terkait dengan log perangkat.
Panggilan
RunQualificationTest()
dari aplikasi. Perangkat keras perangkat harus diinisialisasi dengan benar, dan jaringan harus terhubung sebelum panggilan.
Pengujian
Bagian ini menjelaskan pengujian lokal tes kualifikasi OTA PAL.
Aktifkan tes
Buka test_execution_config.h
dan tentukan OTA_PAL_TEST_ENABLED ke 1.
Ditest_param_config.h
, perbarui opsi berikut:
OTA_PAL_TEST_CERT_TYPE: Pilih jenis sertifikat yang digunakan.
OTA_PAL_CERTIFICATE_FILE: Jalur ke sertifikat perangkat, jika berlaku.
OTA_PAL_FIRMWARE_FILE: Nama file firmware, jika ada.
OTA_PAL_USE_FILE_SYSTEM: Setel ke 1 jika OTA PAL menggunakan abstraksi sistem file.
Bangun dan flash aplikasi menggunakan rantai alat pilihan Anda. Ketika RunQualificationTest()
dipanggil, tes OTA PAL akan berjalan. Hasil tes adalah output ke port serial.
Mengintegrasikan tugas OTA
Tambahkan agen OTA ke demo MQTT Anda saat ini.
Jalankan tes OTA End to End (E2E) dengan. AWS IoT Ini memverifikasi apakah integrasi berfungsi seperti yang diharapkan.
catatan
Untuk secara resmi memenuhi syarat perangkat untuk FreeRTOS, Anda harus memvalidasi kode sumber porting perangkat terhadap grup uji OTA PAL dan OTA E2E dengan. AWS IoT Device Tester Ikuti petunjuk di Menggunakan AWS IoT Device Tester FreeRTOS di Panduan Pengguna FreeRTOS untuk mengatur validasi port. AWS IoT Device Tester Untuk menguji port pustaka tertentu, grup pengujian yang benar harus diaktifkan dalam device.json
file di AWS IoT Device Tester configs
folder.
Bootloader perangkat IoT
Anda harus menyediakan aplikasi bootloader aman Anda sendiri. Pastikan bahwa desain dan implementasi memberikan mitigasi yang tepat terhadap ancaman keamanan. Di bawah ini adalah pemodelan ancaman untuk referensi Anda.
Pemodelan ancaman untuk bootloader perangkat IoT
Latar Belakang
Sebagai definisi kerja, AWS IoT perangkat tertanam yang dirujuk oleh model ancaman ini adalah produk berbasis mikrokontroler yang berinteraksi dengan layanan cloud. Mereka dapat digunakan dalam pengaturan konsumen, komersial, atau industri. Perangkat IoT dapat mengumpulkan data tentang pengguna, pasien, mesin, atau lingkungan, dan dapat mengontrol apa pun mulai dari bola lampu dan kunci pintu hingga mesin pabrik.
Pemodelan ancaman adalah pendekatan keamanan dari sudut pandang musuh hipotetis. Dengan mempertimbangkan tujuan dan metode musuh, daftar ancaman dibuat. Ancaman adalah serangan terhadap sumber daya atau aset yang dilakukan oleh musuh. Daftar ini diprioritaskan dan digunakan untuk mengidentifikasi dan membuat solusi mitigasi. Saat memilih solusi mitigasi, biaya penerapan dan pemeliharaannya harus diimbangi dengan nilai keamanan nyata yang diberikannya. Ada beberapa metodologi model ancaman
FreeRTOS menawarkan pembaruan perangkat lunak OTA over-the-air () ke perangkat. AWS IoT Fasilitas pembaruan menggabungkan layanan cloud dengan pustaka perangkat lunak di perangkat dan bootloader yang disediakan mitra. Model ancaman ini berfokus secara khusus pada ancaman terhadap bootloader.
Kasus penggunaan bootloader
-
Tanda tangani dan enkripsi firmware secara digital sebelum penerapan.
-
Menyebarkan gambar firmware baru ke satu perangkat, sekelompok perangkat, atau seluruh armada.
-
Verifikasi keaslian dan integritas firmware baru setelah dikerahkan ke perangkat.
-
Perangkat hanya menjalankan perangkat lunak yang tidak dimodifikasi dari sumber tepercaya.
-
Perangkat tahan terhadap perangkat lunak yang salah yang diterima melalui OTA.
Diagram Aliran Data
Ancaman
Beberapa serangan memiliki beberapa model mitigasi; misalnya, jaringan yang man-in-the-middle dimaksudkan untuk mengirimkan gambar firmware berbahaya dikurangi dengan memverifikasi kepercayaan pada sertifikat yang ditawarkan oleh server TLS, dan sertifikat penandatangan kode dari gambar firmware baru. Untuk memaksimalkan keamanan bootloader, solusi mitigasi non-bootloader apa pun dianggap tidak dapat diandalkan. Bootloader harus memiliki solusi mitigasi intrinsik untuk setiap serangan. Memiliki solusi mitigasi berlapis dikenal sebagai. defense-in-depth
Ancaman:
-
Penyerang membajak koneksi perangkat ke server untuk mengirimkan gambar firmware berbahaya.
Contoh mitigasi
-
Setelah boot, bootloader memverifikasi tanda tangan kriptografi gambar menggunakan sertifikat yang diketahui. Jika verifikasi gagal, bootloader kembali ke gambar sebelumnya.
-
-
Penyerang mengeksploitasi buffer overflow untuk memperkenalkan perilaku jahat ke image firmware yang ada yang disimpan dalam flash.
Contoh mitigasi
-
Setelah boot, bootloader memverifikasi, seperti yang dijelaskan sebelumnya. Ketika verifikasi gagal tanpa gambar sebelumnya yang tersedia, bootloader berhenti.
-
Setelah boot, bootloader memverifikasi, seperti yang dijelaskan sebelumnya. Ketika verifikasi gagal tanpa gambar sebelumnya yang tersedia, bootloader memasuki mode OTA aman gagal saja.
-
-
Penyerang mem-boot perangkat ke gambar yang disimpan sebelumnya, yang dapat dieksploitasi.
Contoh mitigasi
-
Sektor flash yang menyimpan gambar terakhir dihapus setelah berhasil menginstal dan menguji gambar baru.
-
Sekring dibakar dengan setiap peningkatan yang berhasil, dan setiap gambar menolak untuk dijalankan kecuali jumlah sekering yang benar telah dibakar.
-
-
Pembaruan OTA memberikan gambar yang salah atau berbahaya yang membuat perangkat menjadi bata.
Contoh mitigasi
-
Bootloader memulai pengatur waktu pengawas perangkat keras yang memicu rollback ke gambar sebelumnya.
-
-
Penyerang menambal bootloader untuk melewati verifikasi gambar sehingga perangkat akan menerima gambar yang tidak ditandatangani.
Contoh mitigasi
-
Bootloader ada di ROM (read-only memory), dan tidak dapat dimodifikasi.
-
Bootloader ada di OTP (one-time-programmable memori), dan tidak dapat dimodifikasi.
-
Bootloader berada di zona aman ARM TrustZone, dan tidak dapat dimodifikasi.
-
-
Penyerang mengganti sertifikat verifikasi sehingga perangkat akan menerima gambar berbahaya.
Contoh mitigasi
-
Sertifikat ada dalam co-prosesor kriptografi, dan tidak dapat dimodifikasi.
-
Sertifikat dalam ROM (atau OTP, atau zona aman), dan tidak dapat dimodifikasi.
-
Pemodelan ancaman lebih lanjut
Model ancaman ini hanya mempertimbangkan bootloader. Pemodelan ancaman lebih lanjut dapat meningkatkan keamanan secara keseluruhan. Metode yang disarankan adalah mencantumkan tujuan musuh, aset yang ditargetkan oleh tujuan tersebut, dan titik masuk ke aset. Daftar ancaman dapat dibuat dengan mempertimbangkan serangan pada titik masuk untuk mendapatkan kendali atas aset. Berikut ini adalah daftar contoh tujuan, aset, dan titik masuk untuk perangkat IoT. Daftar ini tidak lengkap, dan dimaksudkan untuk memacu pemikiran lebih lanjut.
Tujuan musuh
-
Memeras uang
-
Reputasi merusak
-
Memalsukan data
-
Alihkan sumber daya
-
Memata-matai target dari jarak jauh
-
Dapatkan akses fisik ke situs
-
Mendatangkan malapetaka
-
Menanamkan teror
Aset utama
-
Kunci pribadi
-
Sertifikat klien
-
Sertifikat akar CA
-
Kredensi dan token keamanan
-
Informasi identitas pribadi pelanggan
-
Implementasi rahasia dagang
-
Data sensor
-
Penyimpanan data analitik cloud
-
Infrastruktur cloud
Titik masuk
-
Respon DHCP
-
Respon DNS
-
MQTT melalui TLS
-
Tanggapan HTTPS
-
Gambar perangkat lunak OTA
-
Lainnya, seperti yang ditentukan oleh aplikasi, misalnya, USB
-
Akses fisik ke bus
-
IC yang didecapped