Sedikit konteks
Karena Anda menggunakan MQTT dengan AWS IoT, Anda diharapkan menggunakan sertifikat X.509 untuk otentikasi dan keamanan. Amazon memiliki sedikit panduan tentang bagaimana Anda harus mengamankan sertifikat Anda, jadi saya akan mengutipnya di sini:
Sertifikat memungkinkan kunci asimetris untuk digunakan dengan perangkat. Ini berarti Anda dapat membakar kunci pribadi ke penyimpanan aman di perangkat tanpa pernah membiarkan materi kriptografi yang sensitif meninggalkan perangkat.
Karena Anda saat ini menggunakan STM32's Read Out Protection (RDP), semua kecuali penyerang yang paling gigih akan kesulitan mengakses sertifikat Anda dalam skema Anda saat ini:
Global Read Out Protection memungkinkan kode firmware tertanam (dimuat dalam memori Flash) untuk melindungi terhadap rekayasa balik, pembuangan menggunakan alat debug atau cara lain dari serangan intrusif.
- Level 0 - Tidak ada perlindungan (default)
- Level 1 - Memori flash dilindungi dari pembacaan dengan debugging atau dump kode oleh kode yang dimuat RAM
- Level 2 - Semua fitur debug dinonaktifkan
Apakah penyimpanan eksternal akan aman?
Ini mungkin tidak seperti yang aman . Jika kunci pribadi klien Anda dicuri, penyerang dapat mengirim data yang tampaknya berasal dari perangkat Anda, padahal sebenarnya tidak. Meskipun tidak jelas data apa yang Anda kirim, data yang tidak dipercaya bisa menjadi risiko keamanan.
Bit mana yang saya perlukan untuk tetap pribadi?
Saat Anda membuat sertifikat perangkat di AWS IoT, Anda akan melihat gambar seperti ini:
Gambar dari halaman Buat dan Aktifkan Sertifikat Perangkat dari dokumentasi AWS IoT.
Kunci pribadi adalah hal yang benar-benar harus Anda jaga ... pribadi , dan tentunya harus disimpan pada memori yang dilindungi baca jika memungkinkan. Kunci publik dan sertifikat dirancang untuk dibagikan, jadi jika Anda kehabisan ruang, Anda dapat dengan aman memindahkannya ke penyimpanan eksternal. Anda bisa mendapatkan sedikit lebih banyak konteks di halaman Bagaimana cara kerja SSL / TLS? di Keamanan Informasi Stack Exchange dan kriptografi kunci publik di Wikipedia. Saya pikir saya akan merugikan Anda jika saya tidak menyertakan gambar ini untuk menjelaskan mengapa kunci pribadi perlu dirahasiakan:
.
Gambar dari Wikipedia , dirilis ke domain publik.
Kunci publik perangkat Anda adalah apa yang digunakan AWS IoT untuk menandatangani pesan untuk dikirim ke perangkat Anda (tetapi itu tidak membuktikan siapa yang mengirim pesan ). Jadi, sungguh, ini bukan bencana besar jika seseorang mencuri kunci publik, karena itu tidak dimaksudkan untuk menjadi rahasia.
The kunci pribadi adalah apa kegunaan perangkat Anda untuk mendekripsi pesan, sehingga masalah sedikit lebih besar jika penyerang mencuri ini.
Anda juga bertanya apa yang akan terjadi jika penyerang mencuri sertifikat RootCA. Jika seseorang mencuri kunci pribadi AWS IoT , itu akan menjadi bencana, tetapi sertifikat RootCA pada perangkat Anda bukanlah itu . Yang RootCA.crt
diberikan Amazon kepada Anda sepenuhnya bersifat publik , dan tujuannya adalah agar Anda dapat memverifikasi bahwa Anda tidak diserang dengan cara apa pun (kemungkinan besar seorang lelaki berpura-pura menjadi server AWS IoT).
Kerusakan apa yang bisa dilakukan oleh perangkat yang diretas?
Perangkat Anda yang dicuri hanya dapat melakukan tindakan yang tercantum dalam kebijakan . Cobalah untuk mengikuti prinsip hak istimewa yang paling rendah ; hanya berikan perangkat Anda hak istimewa yang benar - benar dibutuhkan , jadi jika yang terburuk terjadi, itu tidak dapat menimbulkan kerusakan terlalu banyak. Untuk kasus spesifik Anda:
Masalahnya diperbolehkan untuk mempublikasikan hanya ke 2 saluran (namanya dan saluran umpan data) yang terhubung ke pemroses data yang akan mengabaikan paket-paket jahat yang datang kepadanya.
Itu bagus. Setiap serangan harus diisolasi hanya pada dua topik MQTT yang dapat dipublikasikan perangkat, sehingga tidak akan menyebabkan kerusakan skala besar.