Mem-porting AWS IoT over-the-air pustaka pembaruan (OTA) - Gratis RTOS

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

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 yang rincian spesifik implementasinya harus disediakan.

Nama fungsi

Deskripsi

otaPal_Abort

Menghentikan pembaruan OTA.

otaPal_CreateFileForRx

Membuat file untuk menyimpan potongan data yang diterima.

otaPal_CloseFile

Menutup file yang ditentukan. Ini mungkin mengautentikasi file jika Anda menggunakan penyimpanan yang mengimplementasikan perlindungan kriptografi.

otaPal_WriteBlock

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.

otaPal_ActivateNewImage

Mengaktifkan atau meluncurkan gambar firmware baru. Untuk beberapa port, jika perangkat diatur ulang secara terprogram secara sinkron, fungsi ini tidak akan kembali.

otaPal_SetPlatformImageState

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.

otaPal_GetPlatformImageState

Mendapat status gambar pembaruan OTA.

Terapkan fungsi dalam tabel ini jika perangkat Anda memiliki dukungan bawaan untuk mereka.

Nama fungsi

Deskripsi

otaPal_CheckFileSignature

Memverifikasi tanda tangan dari file yang ditentukan.

otaPal_ReadAndAssumeCertificate

Membaca sertifikat penandatangan yang ditentukan dari sistem file dan mengembalikannya ke pemanggil.

otaPal_ResetDevice

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 Kami menyarankan Anda menggunakan aplikasi demo sebagai referensi, dan memodifikasinya sesuai dengan spesifikasi Anda.

Langkah porting
  1. Inisialisasi agen OTA.

  2. Menerapkan fungsi callback aplikasi OTA.

  3. Buat tugas pemrosesan acara agen OTA.

  4. Mulai agen OTA.

  5. Pantau statistik agen OTA.

  6. Matikan agen OTA.

Kunjungi FreeRTOS OTA melalui MQTT - Titik masuk demo untuk instruksi terperinci.

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 perangkat untuk informasi lebih lanjut.

Membangun verifikasi

Jalankan aplikasi demo untuk menjalankan pekerjaan OTA. Ketika selesai dengan sukses, Anda dapat terus menjalankan tes OTA E2E.

Demo FreeRTOS OTA memberikan informasi terperinci tentang pengaturan klien OTA dan pekerjaan OTA di simulator AWS IoT Core windows FreeRTOS. AWS OTA mendukung protokol MQTT dan HTTP. Lihat contoh berikut untuk lebih jelasnya:

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

OTAE2EGreaterVersion

Tes jalur bahagia untuk pembaruan OTA reguler. Ini membuat pembaruan dengan versi yang lebih baru, yang berhasil diperbarui perangkat.

OTAE2EBackToBackDownloads

Tes ini membuat 3 pembaruan OTA berturut-turut. Perangkat ini diharapkan untuk memperbarui 3 kali berturut-turut.

OTAE2ERollbackIfUnableToConnectAfterUpdate

Tes ini memverifikasi bahwa perangkat melakukan rollback ke firmware sebelumnya jika tidak dapat terhubung ke jaringan dengan firmware baru.

OTAE2ESameVersion

Tes ini mengonfirmasi bahwa perangkat menolak firmware yang masuk jika versinya tetap sama.

OTAE2EUnsignedImage

Tes ini memverifikasi bahwa perangkat menolak pembaruan jika gambar tidak ditandatangani.

OTAE2EUntrustedCertificate

Tes ini memverifikasi bahwa perangkat menolak pembaruan jika firmware ditandatangani dengan sertifikat yang tidak tepercaya.

OTAE2EPreviousVersion

Tes ini memverifikasi bahwa perangkat menolak versi pembaruan yang lebih lama.

OTAE2EIncorrectSigningAlgorithm

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.

OTAE2EDisconnectResume

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.

OTAE2EDisconnectCancelUpdate

Tes ini memeriksa apakah perangkat dapat memulihkan dirinya sendiri jika pekerjaan OTA dibatalkan saat dalam keadaan ditangguhkan. Itu melakukan hal yang sama seperti OTAE2EDisconnectResume pengujian, kecuali bahwa setelah terhubung ke AWS IoT Core, yang memutus perangkat, itu membatalkan pembaruan OTA. Pembaruan baru dibuat. Perangkat diharapkan untuk terhubung kembali ke AWS IoT Core, membatalkan pembaruan saat ini, kembali ke status menunggu, dan menerima dan menyelesaikan pembaruan berikutnya.

OTAE2EPresignedUrlExpired

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.

OTAE2E2UpdatesCancel1st

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.

OTAE2ECancelThenUpdate

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.

OTAE2EImageCrashed

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 dan config_template/test_param_config_template.h ke lokasi di jalur build, dan ganti namanya menjadi test_execution_config.h dantest_param_config.h.

  • Sertakan file yang relevan dalam sistem build. Jika menggunakanCMake, qualification_test.cmake dan src/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. Masing-masing mampu mendukung pengembangan AWS IoT produk yang aman dan sukses.

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

Diagram Alir Data untuk Keamanan Perangkat Tertanam yang berisi Akses Fisik, Perangkat Tertanam, Batas Internet, dan komponen lainnya.

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