Saya menggunakan papan NodeMCU dengan kemampuan WiFi untuk membangun pelacak aset sederhana. Saya telah berhasil menemukan beberapa sketsa Arduino yang memungkinkan konektivitas ke Azure IoT Hub dan memposting pesan.
Salah satu kunci yang perlu saya "muat" ke papan adalah string Azure Device Connection dan tentu saja WiFi SSID dan kata sandi.
Ketakutan saya adalah seseorang mungkin hanya mengambil papan dan "mengunduh" file untuk mendapatkan akses ke kredensial keamanan.
Apakah ketakutan saya tidak beralasan atau hilangnya kredensial merupakan ancaman nyata yang perlu saya mitigasi?
Jawaban:
[Penafian: Saya seorang profesional keamanan / crypto dan menangani pertanyaan arsitektur keamanan seperti ini setiap hari.]
Anda menemukan masalah dalam menyimpan kredensial sedemikian rupa sehingga proses yang tidak dijaga dapat mengaksesnya, tetapi penyerang tidak bisa. Ini adalah masalah yang sudah diketahui dan sangat sulit untuk dipecahkan.
Jika perangkat IoT Anda memiliki keystore perangkat keras yang terpasang di motherboard, seperti TPM, atau setara dengan Keystore yang didukung Android Hardware atau Apple Secure Enclave, maka Anda dapat menggunakannya.
Dengan server tradisional, Anda dapat menggunakan HSM atau Kartu Cerdas, tetapi satu-satunya solusi perangkat lunak lengkap yang saya ketahui adalah untuk mendapatkan kunci AES dari semacam "sidik jari perangkat keras" yang dibangun dengan menggabungkan nomor seri semua perangkat perangkat keras. Kemudian gunakan kunci AES untuk mengenkripsi kredensial. Sebuah proses yang berjalan di server yang sama dapat merekonstruksi kunci AES dan mendekripsi kredensial, tetapi begitu Anda mengekstrak file dari server, itu pada dasarnya tidak dapat didekripsi.
IOT melemparkan kunci pas ke dalam itu karena dua alasan:
Asumsi bahwa nomor seri perangkat keras adalah unik mungkin tidak berlaku, dan
Tidak seperti server, penyerang memiliki akses fisik ke perangkat, oleh karena itu mungkin bisa mendapatkan shell pada perangkat untuk menjalankan program dekripsi.
Enkripsi perangkat keras (TPM) dan enkripsi "sidik jari perangkat keras" paling tidak membingungkan karena, pada dasarnya, jika suatu proses lokal dapat mendekripsi data, maka seorang penyerang yang dapat menjalankan proses lokal itu juga dapat mendekripsi.
Jadi trik standar sepertinya tidak berfungsi di sini. Pertanyaan pertama yang perlu Anda tanyakan pada diri sendiri adalah:
Secure <--> Convenient
skala?Pada akhirnya, saya pikir Anda juga perlu memutuskan itu
security > convenience
dan meminta seorang manusia memasukkan kredensial setelah setiap boot-up (menggunakan sesuatu seperti jawaban @ BenceKaulics ), atau Anda memutuskan itusecurity < convenience
dan hanya meletakkan kredensial pada perangkat, mungkin menggunakan sedikit kebingungan jika Anda merasa itu membuat perbedaan.Ini adalah masalah sulit yang diperberat oleh sifat perangkat IoT.
Untuk kelengkapan, solusi industri lengkap untuk masalah ini adalah:
Dengan cara ini, dan penyerang yang berkompromi dengan perangkat dapat membuka sesi, tetapi tidak pernah memiliki akses langsung ke kredensial.
sumber
Ancamannya nyata tetapi untungnya bukan Anda yang pertama atau satu-satunya dengan masalah keamanan seperti ini.
Yang Anda butuhkan adalah ESP WiFi Manager yang Anda butuhkan di sini.
Dengan perpustakaan ini, ESP yang tidak memiliki sesi yang disimpan akan beralih ke mode AP dan akan menjadi tuan rumah portal web. Jika Anda terhubung ke AP ini dengan PC atau ponsel pintar, maka Anda akan dapat mengkonfigurasi kredensial WiFi melalui halaman web.
Anda tidak perlu melakukan hardcode pada informasi penting dan Anda dapat menggunakan perangkat Anda di jaringan WiFi apa pun yang Anda inginkan tanpa perlu membukanya lagi.
(Dokumentasi WiFi Manager ESP)
sumber
Ya, mereka dapat mengakses kata sandi Anda jika Anda membiarkannya sebagai teks biasa.
Intinya adalah banyak antarmuka koneksi wifi menerima kata sandi hash. Sementara yang saya gunakan hash md5 diterima dan md5 tidak super aman, masih merupakan tantangan yang sangat sulit untuk joe rata-rata. Bergantung pada file konfigurasi Anda, Anda bisa menyebutkan nama algoritma hashing Anda dan kemudian menulis kata sandi Anda atau menggunakan default yang digunakan antarmuka wifi Anda.
sumber
Jawaban sederhana - YA. Itu bisa dilakukan. Anda harus, setidaknya, melakukan semacam kebingungan untuk memberikan perlindungan minimal.
sumber