Catatan Editor:Mengamankan Internet of Things sangat penting tidak hanya untuk integritas aliran data dan perangkat lunak dalam setiap aplikasi IoT, tetapi juga untuk integritas sumber daya perusahaan yang terkait dengan aplikasi tersebut. Keamanan IoT adalah masalah yang kompleks, membutuhkan pendekatan sistematis untuk memahami kemungkinan ancaman dan metode mitigasi yang sesuai.
Diadaptasi dari Internet of Things for Architects, oleh Perry Lea.
Bab 12. Keamanan IoT Oleh Perry Lea
Kriptografi
Enkripsi dan kerahasiaan adalah persyaratan mutlak penerapan IoT. Mereka digunakan untuk mengamankan komunikasi, melindungi firmware, dan otentikasi. Mengenai enkripsi, umumnya ada tiga bentuk yang perlu dipertimbangkan:
Enkripsi kunci simetris :Kunci enkripsi dan dekripsi identik. RC5, DES, 3DES, dan AES adalah semua bentuk enkripsi kunci simetris.
Enkripsi Kunci Publik :Kunci enkripsi dipublikasikan kepada siapa saja untuk menggunakan dan mengenkripsi data. Hanya pihak penerima yang memiliki kunci pribadi yang digunakan untuk mendekripsi pesan. Ini juga dikenal sebagai enkripsi asimetris. Kriptografi asimetris mengelola kerahasiaan data, mengotentikasi peserta, dan memaksa non-penolakan. Enkripsi internet dan protokol pesan yang terkenal seperti Elliptic Curve, PGP, RSA, TLS, dan S/MIME dianggap sebagai kunci publik.
Hash kriptografis :Memetakan data dengan ukuran arbitrer ke string bit (disebut intisari). Fungsi hash ini dirancang untuk menjadi "satu arah". Pada dasarnya, satu-satunya cara untuk membuat ulang hash keluaran adalah dengan memaksa setiap kombinasi masukan yang mungkin (tidak dapat dijalankan secara terbalik). MD5, SHA1, SHA2, dan SHA3 adalah semua bentuk hash satu arah. Ini biasanya digunakan untuk mengkodekan tanda tangan digital seperti gambar firmware yang ditandatangani, kode otentikasi pesan s (MAC ), atau otentikasi. Saat mengenkripsi pesan singkat seperti kata sandi, inputnya mungkin terlalu kecil untuk secara efektif membuat hash yang adil; dalam hal ini, garam atau string non-pribadi ditambahkan ke kata sandi untuk meningkatkan entropi. Garam adalah bentuk fungsi derivasi kunci (KDF ):
klik untuk gambar lebih besar
Elemen kriptografi. Berikut adalah fungsi simetris, asimetris, dan hashing. Perhatikan penggunaan kunci dalam kriptografi simetris dan asimetris. Simetris memiliki persyaratan untuk menggunakan kunci yang identik untuk mengenkripsi dan mendekripsi data. Meskipun lebih cepat daripada enkripsi asimetris, kuncinya perlu diamankan.
Kriptografi simetris
Dalam enkripsi, plaintext mengacu pada input yang tidak terenkripsi dan outputnya disebut ciphertext, karena dienkripsi. Standar untuk enkripsi adalah Standar Enkripsi Lanjutan (AES ) yang menggantikan algoritme DES lama yang berasal dari tahun 1970-an. AES adalah bagian dari spesifikasi FIPS dan standar ISO/IEC 18033-3 yang digunakan di seluruh dunia. Algoritma AES menggunakan blok tetap 128, 192, atau 256 bit. Pesan yang lebih besar dari lebar bit akan dibagi menjadi beberapa blok. AES memiliki empat fase dasar operasi selama cipher. Kode semu untuk enkripsi AES generik ditampilkan di sini:
// Kode pseudo untuk Cipher AES-128 // in:128 bit (plaintext) // out:128 bit (ciphertext) // w :44 kata, masing-masing 32 bit (kunci yang diperluas) state =in w=KeyExpansion(key) //Fase Perluasan Kunci (secara efektif mengenkripsi kunci itu sendiri) AddRoundKey(status, w[0 , Nb-1]) //Putaran Awal untuk putaran =1 langkah 1 hingga Nr–1 //128 bit=10 putaran, 192 bit =12 putaran, 256 bit =14 putaran SubBytes(status ) //Menyediakan non-linearitas dalam sandi ShiftRows(state) //Menghindari kolom dienkripsi secara independen yang dapat melemahkan algoritme MixColumns(state) //Mengubah setiap kolom dan menambahkan difusi ke cipher AddRoundKey(state, w[round*Nb, (round+1)*Nb-1]) //Menghasilkan subkunci dan menggabungkannya dengan state. berakhir untuk SubBytes(state) //Ronde final dan pembersihan. ShiftRows(state) AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1] ) keluar =status
Gulir atau seret sudut kotak ke perluas sesuai kebutuhan.
Panjang kunci AES bisa 128, 192, atau 256 bit. Umumnya, semakin besar panjang kunci, semakin baik perlindungannya. Ukuran kunci sebanding dengan jumlah siklus CPU yang diperlukan untuk mengenkripsi atau mendekripsi blok:128 bit membutuhkan 10 siklus, 192 bit membutuhkan 12 siklus, dan 256 bit membutuhkan 14 siklus.
Block cipher mewakili algoritma enkripsi yang didasarkan pada kunci simetris dan beroperasi pada satu blok data. Cipher modern didasarkan pada karya Claude Shannon pada cipher produk pada tahun 1949. Mode operasi cipher adalah algoritma yang menggunakan cipher blok dan menjelaskan cara berulang kali menerapkan cipher untuk mengubah sejumlah besar data yang terdiri dari banyak blok. Kebanyakan sandi modern juga memerlukan Vektor Inisialisasi (IV ) untuk memastikan ciphertext yang berbeda bahkan jika plaintext yang sama dimasukkan berulang kali. Ada beberapa mode operasi seperti:
Buku Kode Elektronik (ECB) :Ini adalah bentuk enkripsi AES yang paling dasar, tetapi digunakan dengan mode lain untuk membangun keamanan yang lebih canggih. Data dibagi menjadi blok dan masing-masing dienkripsi secara individual. Blok yang identik akan menghasilkan sandi yang identik yang membuat mode ini relatif lemah.
Cipher Block Chaining (CBC) :Pesan plaintext di-Xor dengan ciphertext sebelumnya sebelum dienkripsi.
Cipher Feedback Chaining (CFB) :Mirip dengan CBC tetapi membentuk aliran cipher (keluaran dari cipher sebelumnya masuk ke yang berikutnya). CFB bergantung pada cipher blok sebelumnya untuk memberikan input ke cipher saat ini yang sedang dihasilkan. Karena ketergantungan cipher sebelumnya, CFB tidak dapat diproses secara paralel. Cipher streaming memungkinkan sebuah blok hilang saat transit, tetapi blok berikutnya dapat pulih dari kerusakan.
Rantai Umpan Balik Output (OFB) :Mirip dengan CFB, ini adalah sandi streaming tetapi memungkinkan kode koreksi kesalahan diterapkan sebelum enkripsi.
Penghitung (RKT) :Mengubah cipher blok menjadi stream cipher tetapi menggunakan penghitung. Penghitung yang bertambah memberi makan setiap cipher blok secara paralel yang memungkinkan eksekusi cepat. Nonce dan counter digabungkan bersama untuk memberi makan cipher blok.
CBC dengan Kode Otentikasi Pesan (CBC-MAC) :MAC (juga dikenal sebagai tag atau MIC) digunakan untuk mengautentikasi pesan dan mengonfirmasi bahwa pesan tersebut berasal dari pengirim yang disebutkan. MAC atau MIC kemudian ditambahkan ke pesan untuk diverifikasi oleh penerima.
Mode ini pertama kali dibangun pada akhir 1970-an dan awal 1980-an dan didukung oleh Institut Nasional Standar dan Teknologi di FIPS 81 sebagai mode DES. Mode ini menyediakan enkripsi untuk kerahasiaan informasi tetapi tidak akan melindungi dari modifikasi atau gangguan. Untuk melakukan itu, tanda tangan digital diperlukan dan komunitas keamanan mengembangkan CBC-MAC untuk otentikasi. Menggabungkan CBC-MAC dengan salah satu mode lama sulit sampai algoritma seperti AES-CCM dibuat, yang menyediakan otentikasi dan juga kerahasiaan. CCM adalah singkatan dari Counter with CBC-MAC Mode.
CCM adalah mode enkripsi penting yang digunakan untuk menandatangani dan mengenkripsi data dan digunakan dalam sejumlah besar protokol yang tercakup dalam buku ini termasuk Zigbee, Bluetooth Low Energy, TLS 1.2 (setelah pertukaran kunci), IPSEC, dan 802.11 Wi-Fi WPA2.
AES-CCM menggunakan cipher ganda:CBC dan CTR. AES-CTR atau mode penghitung digunakan untuk dekripsi umum aliran ciphertext yang mengalir masuk. Aliran masuk berisi tag otentikasi terenkripsi. AES-CTR akan mendekripsi tag serta data payload. Sebuah "tag yang diharapkan" terbentuk dari fase algoritma ini. Fase AES-CBC dari tag algoritma sebagai input blok yang didekripsi dari output AES-CTR dan header asli dari frame. Data dienkripsi; namun, satu-satunya data relevan yang diperlukan untuk otentikasi adalah tag yang dihitung. Jika tag yang dihitung AES-CBC berbeda dari tag yang diharapkan AES-CTR, maka ada kemungkinan data dirusak saat transit.
Gambar di bawah mengilustrasikan aliran data terenkripsi masuk yang diautentikasi menggunakan AES-CBC dan didekripsi menggunakan AES-CTR. Ini memastikan kerahasiaan dan keaslian asal pesan:
klik untuk gambar lebih besar
Mode AES-CCM.
Salah satu pertimbangan untuk penerapan IoT dalam mesh yang terhubung sepenuhnya adalah jumlah kunci yang diperlukan. Untuk n node dalam mesh yang menginginkan komunikasi dua arah, ada n(n-1)/2 kunci atau O(n2) .