Biraz bağlam
AWS IoT ile MQTT kullandığınızdan , kimlik doğrulama ve güvenlik için X.509 sertifikaları kullanmanız beklenir . Amazon , sertifikalarınızı nasıl güvence altına almanız gerektiği konusunda biraz rehberliğe sahiptir , bu yüzden burada şunları söyleyeceğim:
Sertifikalar, cihazlarla asimetrik anahtarların kullanılmasını sağlar. Bu, özel anahtarları, hassas kriptografik malzemenin cihazdan çıkmasına izin vermeden bir cihazda güvenli bir depolama alanına yakabileceğiniz anlamına gelir.
Şu anda STM32'nin Okuma Korumasını (RDP) kullandığınızdan, en kararlı saldırganlar hariç tümü mevcut programınızdaki sertifikalarınıza erişmekte sorun yaşayacaktır:
Global Read Out Koruması, yerleşik bellenim kodunun (Flash belleğe önceden yüklenmiş) tersine mühendislik, hata ayıklama araçları kullanarak boşaltma veya diğer müdahaleci saldırı yöntemlerine karşı koruma sağlar.
- Seviye 0 - Koruma yok (varsayılan)
- Seviye 1 - Flash bellek, RAM yüklü kod tarafından hata ayıklama veya kod dökümü ile okumaya karşı korunur
- Seviye 2 - Tüm hata ayıklama özellikleri devre dışı
Harici depolama güvenli olacak mı?
Muhtemelen o kadar güvenli değil . İstemcinizin özel anahtarı çalınırsa, bir saldırgan gerçekte olmadığında cihazınızdan gelmiş gibi görünen veriler gönderebilir. Hangi verileri gönderdiğiniz belli olmasa da, güvenilir olmayan veriler güvenlik riski oluşturabilir.
Özel tutmak için hangi bitlere ihtiyacım var?
AWS IoT'de bir cihaz sertifikası oluşturduğunuzda, aşağıdaki gibi bir resim görmelisiniz:
Image Bir Aygıtı oluşturun ve etkinleştirme Belgesi AWS Iot belgelerin sayfa.
Özel anahtar, gerçekten ... özel tutmanız gereken şeydir ve mümkünse kesinlikle okunan bellekte saklanmalıdır. Ortak anahtar ve sertifika paylaşılmak üzere tasarlanmıştır, bu nedenle alanınız biterse bunları güvenle harici depolama alanına taşıyabilirsiniz. Sayfada biraz daha bağlam elde edebilirsiniz SSL / TLS nasıl çalışır? Wikipedia'da Bilgi Güvenliği Yığın Değişimi ve Açık Anahtarlı Şifreleme . Özel anahtarın neden gizli olması gerektiğini açıklamak için bu görüntüyü eklemeseydim sana bir kötülük yapacağımı düşünüyorum :
.
Wikipedia'dan kamu malı olarak yayınlanan resim .
Cihazınızın genel anahtarı , AWS IoT'nin cihazınıza göndermek için mesajları imzalamak için kullandığı şeydir (ancak mesajı kimin gönderdiğini kanıtlamaz ). Yani, eğer birileri ortak anahtarı çalarsa, bu büyük bir felaket değildir, çünkü bu bir sır değildir.
Özel anahtar bir saldırganın bu çalarsa o biraz daha büyük bir problem böylece cihaz kullanımları mesajları deşifre şeydir.
Ayrıca, saldırganın RootCA sertifikasını çalması durumunda ne olacağını sordunuz. Birisi AWS IoT'nin özel anahtarını çaldıysa , felaket olur, ancak cihazınızdaki RootCA sertifikası bu değildir . RootCA.crt
Bu Amazon sensin vermek tamamen kamu ve amaç size (büyük olasılıkla bir man-in-the-middle AWS Iot sunucuları gibi davranarak) herhangi bir şekilde saldırıya uğraması olmadığını doğrulamak böylece olduğunu.
Saldırıya uğramış bir cihaz hangi hasarı yapabilir?
Çalınan cihazınız yalnızca politikada listelenen işlemleri yapabilir . En az ayrıcalık ilkesini izlemeye çalışın ; cihazınıza yalnızca kesinlikle ihtiyaç duyduğu ayrıcalıkları verin , bu yüzden en kötüsü gerçekleşirse, çok fazla tahribat yaratamaz. Özel durumunuz için:
Bir şeyin, kendisine gelen herhangi bir haydut paketini yok sayacak olan bir veri işlemcisine bağlı olan yalnızca 2 kanala (adı ve bir veri besleme kanalı) yayınlanmasına izin verilir.
Bu iyi. Herhangi bir saldırı, cihazın yayınlayabileceği yalnızca iki MQTT konusuna tecrit edilmelidir, bu nedenle büyük çaplı zarara neden olmaz.