Standar untuk menjaga keamanan perangkat terbaru

8

Dengan perangkat IoT yang biasanya dibangun dengan margin laba rendah dan spesifikasi daya rendah, fungsionalitas biasanya terbatas pada apa yang diperlukan. Tetapi untuk perangkat yang diperkirakan akan bertahan beberapa tahun, akan ada kerentanan keamanan dan masalah yang perlu diperbaiki (lihat botnet Mirai sebagai contoh)

Sebagai produsen IoT, bagaimana saya bisa mengaktifkan penambalan atau peningkatan algoritma enkripsi atau protokol keamanan dari jarak jauh, atau hanya memastikan bahwa perangkat itu tetap aman? Standar apa yang harus saya ikuti?

Rory Alsop
sumber
1
Saya khawatir jawabannya sebagian besar 'menggunakan solusi eksklusif'.
Helmar
Meskipun merupakan topik yang menarik dan relevan, pertanyaan ini tidak dapat memiliki jenis jawaban spesifik untuk situs SE mana yang dicadangkan. Ini juga cenderung dengan cepat berbelok ke wilayah opini.
Chris Stratton
1
Terima kasih @Gilles - yang membawa pertanyaan dengan benar pada topik.
Rory Alsop

Jawaban:

5

Bagaimana produsen IoT mengaktifkan penambalan atau peningkatan algoritma enkripsi atau protokol keamanan dari jarak jauh atau hanya untuk memastikan bahwa perangkat tersebut tetap aman?

Sejumlah besar produsen IoT memiliki solusi sederhana untuk ini: "jangan repot-repot" . Ini cenderung merupakan pengembang yang sama yang menambahkan kata sandi default (atau bahkan tidak dapat diubah) ke perangkat mereka, yang menyebabkan Mirai di tempat pertama.

Seperti disebutkan dalam jawaban Rory , ada biaya yang cukup besar untuk menyediakan mekanisme dan waktu pengembangan aktual untuk merancang dan menggunakan perbaikan. Saya sangat curiga bahwa tanpa tekanan regulasi (atau permintaan konsumen, yang tampaknya tidak menjadi masalah), tidak akan ada insentif bagi produsen untuk menaikkan harga produk mereka untuk keamanan tambahan. Australia tampaknya mengambil langkah ini dengan mempertimbangkan sistem peringkat keamanan wajib untuk semua perangkat IoT.

Saya pikir bagi sebagian besar produsen, ide terbaik adalah meminta orang lain menangani keamanan. Sama seperti kebanyakan pengembang web menggunakan kerangka kerja mapan seperti Django dan Ruby on Rails untuk menghindari membuat yang sama kesalahan berulang, IOT pengembang harus melakukan hal yang sama. Ada beberapa opsi, tergantung pada kompleksitas perangkat Anda:

  • Perangkat kelas atas dapat menggunakan sistem operasi seperti Ubuntu IoT atau Windows 10 IoT Core di mana pembaruan keamanan dilakukan oleh pengembang OS dan didorong secara otomatis. Sebagian besar ini tidak spesifik untuk IoT, tetapi jauh lebih disukai untuk setiap perangkat IoT menggunakan sistem operasi internal yang tidak mungkin menerima perawatan apa pun.

  • Perangkat low-end seperti modul ESP8266 mungkin lebih terbatas, karena mereka tidak dapat menjalankan sistem operasi yang kompleks dan cenderung menjalankan kode yang dikembangkan secara khusus untuk perangkat itu. Masih ada opsi seperti Mongoose OS yang menawarkan pembaruan firmware over-the-air

Pabrikan IoT umumnya harus memanfaatkan solusi yang ada jika tersedia. Pengembang web biasanya tidak membuat ulang kerangka kerja web untuk setiap situs web baru, jadi mengapa IoT harus jauh berbeda? Jawaban Rory menawarkan daftar fitur yang luar biasa yang harus diimplementasikan oleh sistem operasi yang baik untuk IoT, dan hanya menggunakan "IoT OS" tidak akan memperbaiki semua masalah Anda. Seperti yang dijelaskan dalam panduan IoT Windows ini , seseorang harus mengambil langkah-langkah untuk memastikan perangkat keras dan firmware diamankan serta OS itu sendiri. Ide-ide dalam jawaban Rory cukup komprehensif dalam hal ini.

Berikut adalah beberapa contoh dari sistem operasi yang saya sarankan tentang sistem apa yang mereka gunakan untuk meningkatkan keamanan:

Aurora0001
sumber
3

Moran memposting draf IETF ini yang berjudul Arsitektur Pembaruan Firmware untuk Internet of Things Devices pada 30 Oktober 2017.

Ringkasan utama yang diuraikan di komputer Bleeping adalah

  • Mekanisme pembaruan harus bekerja sama meskipun biner firmware dikirim melalui Bluetooth, WiFi, UART, USB, atau media lainnya.
  • Mekanisme pembaruan harus berfungsi dalam jenis pengiriman siaran, memungkinkan pembaruan menjangkau beberapa pengguna sekaligus.
  • Keamanan ujung ke ujung (kriptografi kunci publik) harus digunakan untuk memverifikasi dan memvalidasi gambar firmware.
  • Serangan rollback harus dicegah.
  • Semua informasi yang diperlukan perangkat untuk membuat keputusan tentang pemasangan pembaruan harus sesuai dengan RAM yang tersedia dari perangkat IoT yang dibatasi. Ini mencegah kelelahan menulis flash.
  • Kegagalan daya setiap saat selama proses pembaruan tidak boleh menyebabkan kegagalan perangkat.
  • Mekanisme pembaruan firmware tidak boleh mengharuskan perubahan format file firmware yang ada.
  • Mekanisme pembaruan firmware baru harus dapat beroperasi dengan bootloader kecil, khusus untuk sebagian besar perangkat IoT.
  • Mekanisme pembaruan harus memperhitungkan beberapa izin. Misalnya, pembaruan firmware untuk peralatan infrastruktur penting harus ditandatangani oleh pembuat firmware dan pemilik / operator peralatan.
  • Arsitektur pembaruan firmware IoT yang baru harus mendukung file manifes.

Ini sangat banyak konsep, karena ini adalah area baru. Harapan saya adalah bahwa hal itu akan lebih didorong oleh regulasi daripada permintaan konsumen, karena konsumen benar-benar tidak peduli dengan pembaruan atau keamanan kecuali jika mereka secara langsung berdampak pada mereka. Setiap perbaikan di bidang ini akan berdampak pada biaya perangkat.

Rory Alsop
sumber
1

Jika firmware perangkat Anda dapat dibuat lebih kompleks daripada bootloader yang diperlukan untuk pembaruan jarak jauh yang aman, maka jangan terapkan pembaruan jarak jauh .

Saya tahu konsensus adalah untuk memiliki bootloader yang aman dan kuat, dengan otentikasi kripto publik yang kuat, mekanisme rollover aman, mungkin tumpukan jaringan dasar, dan kemudian menambahkan RTOS, dengan tumpukan jaringan IP + TLS lengkap, kemudian tambahkan di atas itu aplikasi Anda. Ini adalah kegilaan murni untuk perangkat berdaya rendah berbiaya rendah. IMHO, ini mengarah ke produk yang diperbarui setiap minggu atau lebih, yang cenderung mengganggu pengguna karena kadang-kadang pembaruan dimulai pada saat yang salah, gagal atau merusak sesuatu. Pembaruan menghabiskan banyak daya juga, jadi pengguna harus mengisi daya lebih sering. Dan keamanan masih jauh dari terjamin karena permukaan serangan besar.

Perangkat Anda melakukan penginderaan dasar / penggerak, mungkin beberapa pemicu / tampilan lokal tetapi tidak banyak? Lewati semua itu.

Tulis kode logam kosong, gunakan tumpukan yang sangat mendasar, audit dengan saksama, lakukan verifikasi formal jika memungkinkan. Dan kemudian Anda dapat relatif yakin bahwa perangkat Anda tidak akan memiliki masalah keamanan untuk dekade berikutnya.

Jika yang Anda miliki adalah palu, semuanya terlihat seperti paku. Dan itulah sebabnya kebanyakan coder mencoba menulis kode untuk mengamankan kode yang ada tanpa jaminan mereka. Menulis lebih sedikit kode tidak selalu muncul secara alami.

Sylvain
sumber
Sayangnya itu adalah pandangan yang salah, jika Anda melihat semua bukti. Anda tidak dapat mengandalkan keamanan untuk jangka waktu lama. Dan apa yang membuat Anda berpikir puluhan tahun sudah cukup? Dan bahkan ketika Anda mengandalkan sesuatu seperti SSL untuk komunikasi, dan Anda merasa aman, Anda menemukan kekurangan yang telah ada selama bertahun-tahun. Anda memerlukan tumpukan comms yang kuat (seperti BearSSL untuk platform tertanam kecil) yang seharusnya baik-baik saja, tetapi masih perlu diperbarui. Jadi, pertanyaan yang diajukan tentang standar untuk ini - posting yang menyatakan bahwa itu tidak perlu hanya bukan jawaban.
Rory Alsop
2
Ini adalah tampilan yang cukup valid jika Anda menggunakan MCU berbasis flash terbatas dengan paling banyak RTOS, dan yakin Anda tidak perlu menambah fungsionalitas atau memperbaiki bug fungsional setelah pengiriman. Tetapi begitu Anda mulai menggunakan sistem operasi lengkap, permukaan serangan terlalu besar untuk mengasumsikan bahwa tidak akan ada masalah yang Anda tidak sadari pada saat pengiriman.
Chris Stratton
2
Syarat lain yang diperlukan untuk tidak memerlukan pembaruan kode adalah: jika perangkat Anda tidak pernah mendengarkan paket dari Internet, termasuk balasan ke paketnya sendiri. Dengan kata lain, jika perangkat Anda tidak memiliki koneksi Internet. Segera setelah Anda terhubung ke jaringan, Anda perlu memperbarui terhadap serangan jaringan yang akan ditemukan.
Gilles 'SANGAT berhenti menjadi jahat'