Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Komputasi awan

Cara Memanfaatkan Fitur Keamanan Arm TrustZone dari LPC5500

Pelajari cara kerja ekstensi Arm TrustZone untuk seri LPC5500 dan cara mulai memanfaatkan langkah-langkah keamanan dalam aplikasi khusus yang aman dan tidak aman.

Dengan semakin banyaknya perangkat yang terhubung dan semakin canggihnya peretas, banyak perusahaan — seperti NXP Semiconductors — telah menyadari perlunya tindakan pencegahan. NXP telah mengembangkan seri LPC5500 MCU, yang dilengkapi dengan fitur keamanan yang ditingkatkan yang dapat digunakan untuk melindungi proyek yang disematkan.

NXP telah mengadopsi generator nomor acak yang sesuai dengan FIPS, memilih algoritme dekripsi "Pangeran" (memungkinkan inti untuk mengeksekusi kode terenkripsi simetris), dan mereka telah menerapkan kunci on-chip singkat 4096-bit dengan teknologi PUF. Ketika dikombinasikan dengan akselerator perangkat keras kriptografis on-chip 'CASPER', LPC5500 MCU cocok untuk aplikasi IoT edge-of-the-network yang membutuhkan penanggulangan keamanan cyber yang kuat dan penyediaan kunci siklus hidup secara keseluruhan.

Selain itu, chip ini memanfaatkan teknologi Arm TrustZone untuk perangkat berbasis Cortex-M. Dalam artikel ini, pelajari cara kerja ekstensi TrustZone dari seri LPC5500 dan cara mulai memanfaatkan langkah-langkah keamanan dalam aplikasi khusus.

Apa itu Teknologi Arm TrustZone untuk Cortex-M?

Prinsip inti TrustZone paling baik dijelaskan melalui sebuah contoh. Pabrikan MCU sering menyediakan kode kepemilikan khusus seperti pustaka keamanan, bootloader, atau algoritme DSP cepat di ROM mikrokontroler. Namun, pembuat aplikasi ini sering memiliki alasan yang baik untuk melindungi kekayaan intelektual mereka — mereka mungkin tidak ingin pengguna atau pesaing mendekompilasi binari untuk merekayasa balik algoritme.

Di satu sisi, pemrogram ingin memanfaatkan pustaka perangkat lunak yang telah ditentukan ini. Namun, di sisi lain, produsen tidak ingin kode tersebut diekspos ke pihak yang mungkin berbahaya.

Gambar 1. Kode pengguna yang tidak aman dan konten ROM aman berada di MCU fisik yang sama.

Pemasok ingin menyembunyikan detail implementasi, sambil tetap memastikan bahwa pengembang dapat mengakses fungsi tersebut. Kode pengguna mampu memanggil metode terbuka dari perangkat lunak tersembunyi, tetapi tidak memiliki akses langsung ke memori yang dimiliki oleh ROM aman. Hasilnya adalah struktur yang terdiri dari dua subsistem yang terisolasi. Transisi antara dua dunia tersebut diatur oleh ekstensi keamanan TrustZone.

Ini berarti bahwa mikrokontroler yang menggunakan TrustZone akan dirancang sebagai dua proyek terpisah. Proyek pertama dimulai dalam status Aman. Kemudian mengonfigurasi atribusi keamanan untuk sumber daya on-chip dan dapat menerbitkan fungsi aman dalam tabel yang dapat diakses dari status tidak aman. Yang kedua berisi kode tidak aman dan memiliki akses terbatas ke fungsi terbuka dari dunia aman.

Perbedaan dari Arsitektur Sebelumnya

Core Cortex-M3 dan -M4 mengetahui dua mode prosesor:mode thread dan mode handler. Perangkat lunak aplikasi berjalan dalam mode thread dan mode handler menangani pengecualian. Kode dapat beroperasi baik di tingkat istimewa atau tidak, yang mengontrol akses ke fitur CPU tertentu.

Dengan ekstensi TrustZone di inti Cortex-M33, dua status baru diperkenalkan, seperti yang dibahas di atas. Perubahan tersebut menghasilkan empat mode prosesor yang berbeda:handler tidak aman, mode handler aman, utas tidak aman, dan utas aman.

Gambar 2. Ekstensi TrustZone di inti M33 membuat empat mode prosesor.

Selain pembaruan lainnya, penghitung waktu SysTick baru juga diperkenalkan dengan status baru. Jadi sekarang, ada pengatur waktu terpisah untuk status aman dan tidak aman.

Partisi Memori

Seperti disebutkan sebelumnya, memori MCU dipartisi menjadi area aman dan tidak aman. Inti CPU dari MCU hanya dapat mengakses wilayah memori aman jika beroperasi di salah satu mode aman. Itu tidak dapat mengakses instruksi apa pun yang berada di partisi memori lain. Namun, ia dapat membaca dan menulis segmen RAM data yang aman dan tidak aman. Jika inti CPU dalam keadaan tidak aman, itu hanya dapat mengakses instruksi tidak aman dan blok memori data.

TrustZone menghiasi rentang alamat di peta memori dengan atribusi keamanan. Ada tiga atribusi keamanan:secure (S), non-secure (NS), dan non-secure callable (NSC). Akses ke setiap area memori diizinkan atau ditolak, tergantung pada status keamanan inti saat ini.

Gambar 3. CPU dapat mengakses area yang berbeda dalam mode aman dan tidak aman.

Pada perangkat LPC55S69, memori dibagi menjadi segmen aman dan tidak aman berdasarkan alamat. Jika alamat memori bit 28 LOW, memori tidak aman. Jika tidak, itu aman. Satu-satunya pengecualian adalah memori program, yang dapat dikonfigurasi melalui Unit Pengaitan Keamanan.

Blok Bangunan Aplikasi Aman

Kode tidak aman tidak dapat melakukan panggilan langsung ke bagian aplikasi yang aman. Sebagai gantinya, bagian yang diamankan memperlihatkan daftar fungsi yang dapat diakses pengguna. Daftar itu diberi nama veneer-table karena merupakan lapisan yang sangat tipis yang terlihat dari luar, tetapi menyembunyikan detail di dalamnya. Tabel veneer terletak di wilayah memori dengan atribut TrustZone NonSecure Callable.

Biasanya, sumber bagian yang diamankan tidak terlihat. Sebagai gantinya, ini dikompilasi, memberikan pustaka objek dan tabel veneer sebagai file header. Perhatikan bahwa tidak satu pun dari file-file ini berisi instruksi sebenarnya, tetapi bersama-sama mereka berisi informasi yang diperlukan untuk memanggil fungsi-fungsi aman. Tabel veneer hanya berisi gateway dan instruksi percabangan ke lokasi memori aman tempat instruksi sebenarnya berada.

Transisi Antara Fungsi Aman dan Tidak Aman

CPU dengan ekstensi TrustZone mendukung dua fungsi baru untuk transisi antara aman dan tidak aman:instruksi SG dan BXNS.

Ketika kode pengguna menginginkan fungsi yang aman, itu membuat panggilan melalui tabel veneer, yang terletak di bagian NSC dari memori. Instruksi SG kemudian digunakan untuk mengalihkan CPU ke mode aman. Ketika eksekusi selesai, kontrol dikembalikan ke kode pengguna dengan instruksi BXNS:

Gambar 4. Kode pengguna harus memanggil fungsi aman melalui penjaga gerbang TrustZone.

Jika pengguna mencoba operasi terkait keamanan ilegal, seperti mengakses langsung area yang dilindungi, pengecualian Secure Fault akan muncul.

Contoh Hello World yang Aman

SDK untuk LPCXpresso55S69 hadir dengan beberapa contoh TrustZone yang dapat dimuat di MCUXpresso. Seperti disebutkan sebelumnya, contoh ini terdiri dari dua proyek terpisah:bagian aman dan kode pengguna tidak aman.

Bagian aman terlihat hampir persis seperti proyek MCUXpresso lainnya. Namun, ada satu perbedaan, yaitu pemanggilan fungsi berikut:

Fungsi ini harus dipanggil sedini mungkin. Setelah itu, proyek aman bertanggung jawab untuk mengonfigurasi memori dan proyek tidak aman:

Karena proyek aman menangani semua panggilan penyiapan, proyek tidak aman tidak harus melakukannya, jadi fungsi utamanya singkat:

Namun, aplikasi ini hanya memanggil fungsi aman yang didefinisikan di proyek lain. Definisi berikut untuk fungsi PRINTF_NSE adalah seperti yang ditunjukkan:

Jika definisi itu diikuti, itu menunjuk ke tabel veneer, yang didefinisikan dalam proyek yang diamankan. Penting untuk diingat bahwa proyek yang tidak aman hanya mengetahui file header yang menjelaskan tabel veneer. Namun, dalam kasus ini, kita dapat melihat fungsi yang sesuai dalam kode sumber:

Dekorasi “__attribute__((cmse_nonsecure_entry))” memaksa fungsi untuk diekspor ke file objek.

Mempartisi Memori

Atribut keamanan menentukan bagian mana dari memori yang diamankan, NSC, atau tidak aman. Ini diperiksa dengan setiap akses. Untuk tujuan itu, MCU diperluas dengan perangkat keras yang menangani pemeriksaan ini dan terdiri dari tiga blok logika:

  1. Unit Pengaitan Keamanan (SAU)
  2. Unit Pengaitan yang Ditetapkan Implementasi (IDAU)
  3. Logika Pengaitan Keamanan

SAU diprogram oleh proyek aman dalam fungsi BOARD_InitTrustZone(). Ini memungkinkan memori untuk dipartisi menjadi delapan wilayah dengan pengaturan keamanan yang berbeda. Perhatikan bahwa wilayah mana pun yang tidak disetel secara eksplisit akan tetap aman secara default.

IDAU memungkinkan produsen MCU — NXP dalam hal ini — untuk menentukan lebih banyak wilayah kustom. Di sini, wilayah bergantung pada bit ke-28 dari alamat tersebut. Pada MCU LPC55S69, bagian bawah peta memori (0x0000_0000 hingga 0x2FFF_FFFF) secara default tidak aman, sehingga bebas untuk mengonfigurasi dengan SAU.

Arbiter memastikan bahwa pengaturan IDAU dan SAU cocok. Agar wilayah memori ditandai sebagai tidak aman, kedua blok logika harus disetel ke tidak aman. Jika tidak, memori akan kembali ke status aman default. Hal yang sama berlaku untuk wilayah memori NSC. Agar bagian menjadi NSC, SAU harus ditandai sebagai NSC, dan IDAU harus disetel ke tidak aman.

Ada alat di dalam MCUXpresso yang memungkinkan pengguna menentukan wilayah memori dengan cepat dan mudah. Untuk mengakses alat ini, gunakan bilah menu utama IDE dan buka perspektif TEE:

Gambar 5. Alat MCUXpresso ini memungkinkan pengguna untuk melihat dan mengedit peta memori MCU.

Tabel di sisi kiri alat dapat mengubah tingkat keamanan wilayah memori. Peta memori di sisi kanan menggambarkan bagaimana memori dipartisi.

TrustZone Menawarkan Komponen Keamanan yang Diperlukan

Pada seri LPC5500 MCU dengan teknologi TrustZone, memori dibagi menjadi dunia yang aman dan tidak aman — memungkinkan pengguna untuk mengakses bagian dari memori yang tidak aman, dan aplikasi yang aman juga dapat ditulis untuk digunakan oleh yang lain. TrustZone bertindak sebagai penjaga gerbang antara dua dunia dan mengelola bagaimana transisi inti di antara mereka.

Dua instruksi baru diperkenalkan untuk tujuan itu. Aplikasi aman menyediakan veneer-tabel yang memaparkan fungsi yang dapat dipanggil dari konteks yang tidak aman. Perangkat keras di MCU memastikan bahwa tidak ada operasi akses memori ilegal yang dilakukan. Perangkat keras ini juga dapat digunakan untuk mengkonfigurasi wilayah di peta memori. Untuk tujuan itu, MCUXpresso menawarkan perspektif TEE. Pemahaman yang lebih mendalam tentang keamanan yang disediakan untuk seri MCU LPC5500 memungkinkan pengalaman desain yang lebih baik. Informasi lebih lanjut seputar TrustZone dapat ditemukan dengan menonton TrustZone:Calling the Secure World.

Artikel Industri adalah bentuk konten yang memungkinkan mitra industri untuk berbagi berita, pesan, dan teknologi yang bermanfaat dengan pembaca All About Circuits dengan cara yang tidak sesuai dengan konten editorial. Semua Artikel Industri tunduk pada pedoman editorial yang ketat dengan tujuan menawarkan kepada pembaca berita, keahlian teknis, atau cerita yang bermanfaat. Sudut pandang dan pendapat yang diungkapkan dalam Artikel Industri adalah milik mitra dan belum tentu milik All About Circuits atau penulisnya.


Komputasi awan

  1. Cara Merencanakan Migrasi Cloud yang Berhasil
  2. Apakah Sertifikasi AWS DevOps Tepat untuk Saya?
  3. Dasar-Dasar Google Cloud SDK:Pelajari Semuanya
  4. CloudInstitute.io Sekarang Tersedia di Amazon Web Services Marketplace
  5. Memperluas Dukungan Kami untuk Pemantauan Aplikasi SaaS Anda
  6. Menemukan Biaya Aplikasi atau Kinerja Jaringan yang Buruk