Meskipun meningkatnya jumlah serangan jaringan pada perangkat IoT, keamanan firmware sering kali ditempatkan pada posisi kedua. Saat penyerang menembus tumpukan sistem dan menargetkan proses booting serta konfigurasi perangkat keras yang mendasarinya, pilihan arsitektur memori telah menjadi keputusan penting dalam membangun rantai kepercayaan yang dapat diverifikasi.
Oleh karena itu, memastikan keamanan firmware mengharuskan setiap komponen menjalani verifikasi enkripsi sebelum dieksekusi. Jalur ini dimulai dengan boot loader yang tidak dapat diubah, yang bertanggung jawab untuk memuat dan memverifikasi firmware utama. Namun, teknologi memori yang digunakan dalam setiap langkah dapat mengakibatkan kerentanan firmware terhadap modifikasi yang tidak sah.
Memori flash internal dan eksternal
Lokasi fisik memori non-volatil yang digunakan untuk menyimpan firmware adalah salah satu faktor paling penting dalam model ancaman perangkat. Insinyur firmware perlu membuat pilihan antara flash tertanam pada chip (eFlash) dan modul flash eksternal yang terhubung melalui antarmuka serial seperti SPI atau QSPI.
Memori flash yang tertanam biasanya langsung terintegrasi ke mikrokontroler atau chip SoC. Arsitektur ini memberikan tingkat keamanan fisik tertinggi karena tidak ada bus eksternal yang tersedia untuk dimanipulasi oleh penyerang. Bahkan akses ke memori flash internal dikendalikan oleh register khusus dan bit kunci.
Selain itu, memori flash tertanam mendukung perlindungan baca permanen. Dengan memutus sekering pengaman khusus, pengembang dapat menonaktifkan antarmuka debugging JTAG atau SWD untuk mencegah peretas memodifikasi gambar firmware. Namun, seiring dengan peralihan SoC ke node yang lebih kecil, teknologi ini menghadapi tantangan skalabilitas yang signifikan.
Sebaliknya, memori flash eksternal ditempatkan di luar prosesor utama dan berkomunikasi melalui antarmuka serial berkecepatan tinggi. Pilihan arsitektur ini membuat kapasitas penyimpanan mudah untuk ditingkatkan, namun juga memperluas permukaan serangan sistem. Setiap data yang dikirimkan antara prosesor dan memori flash eksternal pada dasarnya rentan terhadap ancaman seperti penyadapan, serangan man in the middle, dan gangguan fisik.
Untuk mengatasi risiko ini, insinyur firmware harus menerapkan langkah-langkah perlindungan perangkat keras dan perangkat lunak yang baik. Banyak perangkat memori flash NOR eksternal dilengkapi dengan pin proteksi penulisan fisik. Ketika pin ditempatkan pada tegangan tertentu, logika internal chip akan mencegah eksekusi perintah penghapusan atau penulisan.
Gambar 1: Memori flash NOR seri aman W77Q32JWSSIR TR dari Winbond Electronics memiliki kemampuan enkripsi saluran komunikasi yang kompleks. (Sumber gambar: Winbond Electronics)
Namun, jika datanya bisa dibaca, mengunci memori flash saja tidak cukup. Selama eksekusi, penyerang masih dapat mengakses bus alamat dan data. Kerentanan ini telah mendorong pengembangan perangkat flash aman khusus, termasuk mekanisme root of trust berbasis perangkat keras, saluran komunikasi terenkripsi, dan penghitung monotonik untuk mencegah serangan rollback.
Namun, jika arsitektur penyimpanan yang dipilih salah, perangkat akan meninggalkan cacat mendasar yang tidak dapat diperbaiki sepenuhnya dengan patch perangkat lunak. Misalnya, desain yang menyimpan firmware pada EEPROM eksternal tanpa enkripsi atau verifikasi selalu rentan terhadap penyerang perangkat keras. Sebaliknya, memilih memori dengan batasan berlebihan dapat mempengaruhi fungsinya.
Oleh karena itu, para insinyur harus memahami praktik terbaik dan teknik desain untuk memaksimalkan keamanan firmware melalui arsitektur memori.
Praktik Terbaik untuk Desain Penyimpanan Firmware yang Aman
Saat merancang jalur penyimpanan firmware yang aman dari startup hingga runtime, teknisi firmware harus mengikuti prinsip-prinsip berikut:
1. Akar kepercayaan berbasis perangkat keras
Eksekusi harus selalu dimulai dari area memori yang tidak dapat diubah. Misalnya, boot ROM atau sektor flash yang aman secara permanen harus berisi kode untuk memverifikasi semua firmware lainnya. Hal ini akan memastikan bahwa penyerang tidak dapat melewati verifikasi dengan merusak kata sandi awal.
2. Gunakan tanda tangan terenkripsi
Konfigurasikan pemuat boot aman agar hanya menjalankan image firmware yang ditandatangani dengan kunci pribadi tepercaya. Dengan cara ini, meskipun penyerang dapat mengakses memori dan mengubah bit, mereka dapat mencegah kode yang tidak sah. Jika kerahasiaan diperlukan, firmware yang disimpan dapat dienkripsi.
3. Memanfaatkan fitur keamanan perangkat keras
Jika arsitektur sistem menggunakan penyimpanan eksternal, teknisi harus memilih perangkat yang mendukung keamanan perangkat keras, seperti perlindungan kata sandi bawaan atau enkripsi sederhana. Meskipun perangkat ini mungkin tidak sekuat komponen keamanan lengkap, perangkat ini menambahkan lapisan perlindungan lain.
Gambar 2: Macronix mendukung memori flash serial NOR MX25L3233FM2I-08Q 32 Mb dengan antarmuka periferal serial. (Sumber gambar: Macronix)
4. Isolasi firmware dan data
Atur area memori dan pisahkan kode yang paling sensitif. Di MCU, tempatkan instruksi rutin yang penting di area memori yang aman. Bahkan firmware, jika didukung oleh perangkat keras, dapat menandai bank memori flash tertentu sebagai hanya dapat dieksekusi atau hanya dapat dibaca.
5. Rencana pembaruan firmware keamanan
Pastikan bahwa proses pembaruan itu sendiri telah divalidasi (misalnya memerlukan penandatanganan paket pembaruan). Jika desain menggunakan penyimpanan eksternal untuk pembaruan sementara, tindakan keamanan yang sama seperti penyimpanan firmware utama harus diterapkan.

