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

Cara mengamankan komunikasi UART di perangkat IoT

Dengan blok kriptografi yang terintegrasi ke dalam MCU, ini menjadi mungkin bagi pengembang untuk mengamankan setiap saluran komunikasi, termasuk antarmuka seperti UART yang tidak memberikan keamanan itu sendiri.

Dengan meningkatnya jumlah pelanggaran privasi dan data profil tinggi di sistem Internet of Things (IoT), bisnis dan konsumen memiliki kesadaran yang lebih besar akan kebutuhan akan keamanan saat membeli produk yang terhubung. Menyediakan produk atau layanan terbaik di kelasnya tidak lagi cukup. Perangkat yang gagal memberikan keamanan yang memadai akan gagal bersaing dengan perangkat yang menyediakan keamanan menyeluruh.

Banyak protokol menerapkan keamanan dalam standar dan merupakan bagian bawaan dari pengontrol apa pun. Perangkat tertanam yang terhubung melalui universal asynchronous receiver-transmitter (UART), tidak dilindungi. UART adalah salah satu antarmuka komunikasi digital paling sederhana antar perangkat. Ini adalah protokol komunikasi tanpa ACK yang dapat dibaca oleh perangkat apa pun jika kecepatan baud diketahui.

Untuk mencegah data dibaca atau disuntikkan ke dalam sistem, saluran komunikasi perlu diamankan oleh sistem yang mengirim dan menerima data. Jadi, bahkan jika penyusup mendapatkan akses ke saluran komunikasi dengan baud rate yang benar, saluran tersebut akan dilindungi.

Keamanan simetris dan asimetris

Saluran komunikasi sering diamankan menggunakan algoritma kriptografi. Secara garis besar, algoritma kriptografi dapat diklasifikasikan menjadi simetris dan asimetris. Dengan algoritma kunci simetris, pengirim dan penerima berbagi satu kunci rahasia. Pengirim mengenkripsi pesan menggunakan kunci dan membagikan pesan terenkripsi dengan penerima. Penerima kemudian menggunakan kunci yang sama untuk mendekripsi pesan.

Masalah keamanan utama dengan algoritme kunci simetris adalah bagaimana menukar kunci rahasia dengan aman antara pengirim dan penerima. Jika kunci ditangkap oleh entitas lain selama pertukaran kunci, maka entitas tersebut juga dapat mendekripsi pesan yang dikirim oleh pengirim. Oleh karena itu, kuncinya harus dibagikan secara aman hanya dengan pengirim dan penerima dalam algoritme kunci simetris.

Untuk mengaktifkan pertukaran kunci simetris yang aman, algoritma kunci asimetris digunakan. Algoritma asimetris menggunakan kunci yang berbeda untuk proses enkripsi dan dekripsi. Meskipun kunci ini berbeda, mereka terkait secara matematis. Kunci simetris dapat dipertukarkan dengan aman dengan mengenkripsinya dengan kunci asimetris dan penerima mendekripsinya menggunakan kunci asimetris terkait. Kelemahan dari algoritme asimetris adalah bahwa mereka melibatkan perhitungan matematis yang kompleks dan cenderung membutuhkan komputasi yang intensif.

Untuk tingkat keamanan tertinggi, enkripsi RSA digunakan sebagai algoritma kunci asimetris. Dengan RSA, entitas yang berkomunikasi memiliki kunci publik dan kunci pribadi. Kunci publik, seperti namanya, dibagikan secara publik dan tersedia untuk siapa saja. Sebaliknya, kunci privat hanya dipegang oleh entitas yang berkomunikasi. Untuk mengirim pesan ke entitas, pengirim mengenkripsi pesan menggunakan kunci publik entitas. Pesan terenkripsi ini hanya dapat didekripsi dengan kunci pribadi. Karena kunci privat hanya tersedia untuk penerima yang dituju, ini memastikan bahwa hanya penerima yang dapat mendekripsi pesan.

Enkripsi kunci publik dan pribadi

RSA menggunakan komputasi eksponensial dan faktorisasi prima dari bilangan yang sangat besar, membuatnya sangat aman tetapi juga membutuhkan komputasi yang intensif. Lebih jauh lagi, menerapkan RSA secara real-time—untuk menghindari latensi dalam komunikasi—akan meningkatkan biaya sistem dengan memerlukan mesin pemrosesan kinerja yang lebih tinggi. Banyak sistem tertanam tidak memerlukan tingkat keamanan ini. Sebagai gantinya, mereka dapat menggunakan algoritme enkripsi yang lebih ramping seperti Advanced Encryption Standard (AES), yang lebih praktis dan hemat biaya karena memerlukan lebih sedikit sumber daya pemrosesan.

AES adalah algoritma kriptografi simetris, yang berarti kedua sisi saluran komunikasi berbagi kunci rahasia yang sama. Keterbatasan AES sebagaimana disebutkan di atas terletak pada pembagian kunci yang aman antara pengirim dan penerima UART tanpa memaparkannya ke entitas eksternal. Untuk mengatasi ini, RSA dapat digunakan untuk mengenkripsi kunci AES dan menukarnya dengan aman. Karena kunci umum hanya perlu dibagikan satu kali, saluran komunikasi dapat menanggung kompleksitas dan latensi RSA. Dengan kata lain, penundaan untuk memproses algoritme RSA hanya berdampak pada pertukaran kunci awal, tidak setiap pesan.

Pertukaran kunci aman terjadi dalam beberapa tahap (Gambar 1). Pertama, penerima UART menghasilkan pasangan kunci RSA dan membagikan kunci publiknya dengan pengirim. Tidak masalah jika entitas lain melihat kunci publik karena itu hanya akan digunakan untuk mengenkripsi pesan yang ditujukan untuk penerima UART. Pengirim kemudian secara acak menghasilkan kunci AES dan mengenkripsinya menggunakan kunci publik penerima. Penerima mendekripsi kunci AES menggunakan kunci privat RSA.


Gambar 1:Pertukaran aman kunci rahasia AES menggunakan kunci publik dan pribadi RSA. (Sumber:Infineon)

Karena hanya penerima yang memiliki akses ke kunci privat RSA, kunci AES terenkripsi hanya dapat didekripsi oleh penerima. Ini memastikan bahwa kunci AES hanya diketahui oleh pengirim dan penerima, dan setiap penyusup yang memiliki akses ke saluran komunikasi tidak dapat memperoleh kunci tersebut. Selain itu, semua pesan berikutnya antara pengirim dan penerima dienkripsi dengan kunci AES, membuat pesan ini tidak dapat diakses oleh pihak lain yang tidak dimaksudkan untuk menerimanya. Ini juga menghilangkan ancaman serangan man-in-the-middle (MIM) yang melibatkan modifikasi pesan setelah dikirim tetapi sebelum diterima.

Firmware vs. perangkat keras

Menerapkan algoritme keamanan di perangkat yang disematkan menggunakan firmware menimbulkan banyak tantangan desain. Algoritma kriptografi, pada dasarnya, cenderung membutuhkan komputasi yang intensif. Mereka juga meningkatkan jejak memori, menambah penundaan pemrosesan, dan memperkenalkan kompleksitas substansial pada sistem. Akibatnya, menerapkan keamanan dalam firmware akan menghabiskan banyak siklus CPU dan sumber daya MCU. Selain itu, untuk memenuhi persyaratan aplikasi waktu nyata, MCU dengan kinerja lebih tinggi akan diperlukan, sehingga meningkatkan biaya sistem.

Sebagian alasan mengapa begitu banyak sumber daya MCU digunakan adalah karena MCU adalah unit pemrosesan tujuan umum. Untuk alasan ini, banyak MCU mengintegrasikan perangkat keras yang dirancang khusus untuk algoritme kriptografi. Dengan mesin kriptografi terintegrasi, MCU dapat menyediakan enkripsi dan dekripsi data secara real-time dalam ukuran yang jauh lebih kecil dan dengan biaya yang lebih rendah dibandingkan dengan MCU tanpa kemampuan pemrosesan kriptografi berbasis perangkat keras.

PSoC 6 MCU dari Infineon adalah contohnya. Ini memiliki blok kriptografi khusus yang menyediakan akselerasi perangkat keras dari fungsi kriptografi. Blok kriptografi fleksibel dan dapat digunakan untuk mendukung algoritma kriptografi yang berbeda untuk memastikan bahwa data dilindungi. Hal ini memungkinkan pengembang untuk memperkenalkan keamanan ke perangkat IoT tertanam menggunakan standar enkripsi seperti AES, DES, TDES, dan RSA dan pemeriksaan integritas seperti algoritma hash aman ( SHA) dan pemeriksaan redundansi siklik (CRC). Membongkar fungsi kriptografi dari MCU dengan cara ini memungkinkan pengenalan keamanan yang hemat biaya ke hampir semua aplikasi yang disematkan tanpa perlu menggunakan prosesor yang lebih kuat.

Angka acak yang benar

Mengamankan sistem tertanam, bagaimanapun, membutuhkan lebih dari sekadar mengenkripsi komunikasi. Secara khusus, kunci AES yang dihasilkan sistem harus acak. Namun, MCU bersifat deterministik, sehingga kunci yang dihasilkan juga bersifat deterministik, memungkinkan peretas menggunakan “brute force” untuk menggilir berbagai benih acak yang mungkin berbeda dan berpotensi mendapatkan kunci AES. Oleh karena itu, firmware memerlukan cara untuk menghasilkan angka acak yang benar untuk memastikan keacakan kunci AES, sehingga tidak dapat dipaksakan.

Untuk melakukan ini, blok kriptografi harus menyertakan True Random Number Generator (TRNG). Dalam blok kriptografi PSoC 6, misalnya, TRNG memiliki enam osilator cincin yang menyediakan sumber kebisingan fisik. Osilator cincin berisi inverter peka suhu yang memperkenalkan jitter dalam sinyal osilator cincin. Sinyal ini memberi MCU akses ke sumber nomor acak yang sebenarnya untuk memastikan keacakan kunci AES yang dihasilkannya.

Misalnya, untuk menghasilkan kunci 16-byte, nomor acak dihasilkan 16 kali dan ditambahkan ke nomor sebelumnya. Ini membuat kemungkinan 2^128 kunci. Ini lebih dari cukup untuk mencegah kunci “AES” dipaksakan atau ditebak.

Beberapa serangan kripto fokus pada analisis komunikasi yang ditangkap. Dengan sumber daya yang cukup, kunci apa pun pada akhirnya bisa rusak. Untuk mengatasi kemungkinan ini dan meningkatkan keamanan saluran komunikasi secara keseluruhan, kunci AES dibuat pada setiap reboot. Ini adalah langkah sederhana namun efektif untuk meningkatkan keamanan sistem tertanam. Singkatnya, bahkan jika kunci diidentifikasi oleh penyusup, kunci tersebut kemungkinan besar tidak akan lagi digunakan pada saat dapat dieksploitasi.

Keamanan dengan percaya diri

Pada titik ini, mungkin tergoda untuk menganggap antarmuka UART aman. Namun, UART adalah protokol komunikasi tanpa ACK. Artinya protokol tidak memiliki mekanisme untuk memastikan bahwa pesan yang diterima oleh penerima a) lengkap dan b) tidak rusak.

Tahap keamanan akhir diperlukan untuk mengkonfirmasi integritas pesan. Metode yang efektif untuk mencapai ini adalah dengan menggunakan algoritma SHA untuk hash pesan. Menjalankan pesan melalui fungsi hash kriptografi seperti SHA menghasilkan hash, output dengan panjang tetap. Karena fungsi hash adalah fungsi satu arah yang tidak dapat diubah, satu-satunya cara untuk mengidentifikasi pesan yang menghasilkan hash tertentu adalah dengan mencoba melakukan pencarian brute force dari semua input yang mungkin.


Gambar 2:Fungsi hash memastikan integritas komunikasi selama pertukaran kunci dan transfer pesan yang aman. (Sumber:Infineon)

Sebelum pesan dikirim, hash dari seluruh pesan ditambahkan ke pesan (Gambar 2). Pesan plus hash kemudian dienkripsi menggunakan kunci AES. Dengan cara ini, hash dapat berfungsi sebagai pemeriksaan integritas. Penerima, setelah dekripsi, menghitung hash dari pesan yang didekripsi. Penerima kemudian membandingkan hash yang diterima dan hash yang dihitung. Jika mereka sama, maka pesannya belum diubah. Namun, jika hash tidak cocok, ini menunjukkan bahwa integritas pesan telah terpengaruh. Ini bisa terjadi karena peretas telah mencoba mengubah pesan atau terjadi kesalahan selama transmisi. Bagaimanapun, komunikasi telah gagal.

Perhatikan bahwa saluran komunikasi dapat diperkuat lebih lanjut untuk keasliannya dengan menandatangani pesan dengan kunci pribadi pengirim. Pesan yang ditandatangani dapat diverifikasi menggunakan kunci publik pengirim untuk memverifikasi bahwa hanya pengirim yang dapat mengirim pesan. Dengan kata lain, tidak ada pihak lain yang dapat meniru menjadi pengirim karena mereka tidak memiliki kunci pribadi pengirim, sehingga memastikan keaslian pesan. Untuk ide lainnya, lihat Contoh Kode Komunitas, yang mencakup banyak proyek dari insinyur lain.

Menerapkan keamanan telah menjadi pertimbangan yang diperlukan dalam desain sistem IoT tertanam. Sangat penting bagi setiap perangkat yang terhubung untuk mengamankan dan melindungi data pengguna agar tidak disusupi. Dengan blok kriptografi yang terintegrasi ke dalam MCU, pengembang dapat mengamankan setiap saluran komunikasi, termasuk antarmuka seperti UART yang tidak memberikan keamanan itu sendiri.

—Harigovind A dan Rakshith M B adalah insinyur aplikasi senior di Infineon Technologies.

>> Artikel ini awalnya diterbitkan di situs saudara kami, EDN .


Teknologi Internet of Things

  1. Bagaimana 5G Akan Mempercepat IoT Industri
  2. Bagaimana IoT Menghubungkan Tempat Kerja
  3. IoT memberikan manfaat di seluruh dunia
  4. Bagaimana IoT membentuk mobilitas perusahaan?
  5. 7 tips penting untuk menjaga dan mengamankan jaringan IoT Anda di rumah
  6. Membayar IoT:Cara membangun model bisnis IoT yang menguntungkan
  7. Menyediakan masa depan yang aman bagi miliaran perangkat IoT melalui ketahanan dunia maya
  8. Seberapa berbahaya ancaman serangan rantai mematikan di IoT?
  9. Bagaimana IoT Merevolusi Keselamatan Tempat Kerja?
  10. Bagaimana IoT Meningkatkan Pengalaman Pelanggan