Un peu de contexte
Étant donné que vous utilisez MQTT avec AWS IoT, vous êtes censé utiliser des certificats X.509 pour l'authentification et la sécurité. Amazon a un peu de conseils sur la façon dont vous devez sécuriser vos certificats, je vais donc le citer ici:
Les certificats permettent aux clés asymétriques d'être utilisées avec les appareils. Cela signifie que vous pouvez graver des clés privées dans un stockage sécurisé sur un appareil sans jamais autoriser le matériel cryptographique sensible à quitter l'appareil.
Étant donné que vous utilisez actuellement la protection contre la lecture (RDP) de STM32 , tous les attaquants, à l'exception des plus déterminés, auront du mal à accéder à vos certificats dans votre schéma actuel:
La protection globale contre la lecture permet au code du micrologiciel intégré (préchargé dans la mémoire Flash) de se protéger contre l'ingénierie inverse, le vidage à l'aide d'outils de débogage ou d'autres moyens d'attaque intrusive.
- Niveau 0 - Aucune protection (par défaut)
- Niveau 1 - La mémoire flash est protégée contre la lecture par le débogage ou le vidage de code par le code chargé en RAM
- Niveau 2 - Toutes les fonctionnalités de débogage sont désactivées
Le stockage externe va-t-il être sécurisé?
Ce n'est probablement pas aussi sûr . Si la clé privée de votre client est volée, un attaquant peut envoyer des données qui semblent provenir de votre appareil, alors qu'elles ne le sont pas. Bien que les données que vous envoyez ne soient pas claires, toutes les données non fiables peuvent constituer un risque pour la sécurité.
Quels bits dois-je garder confidentiels?
Lorsque vous créez un certificat d'appareil sur AWS IoT, vous devriez voir une image comme celle-ci:
Image de la page Créer et activer un certificat de périphérique de la documentation AWS IoT.
La clé privée est la chose que vous devez vraiment garder ... privée , et devrait certainement être stockée dans la mémoire protégée en lecture si possible. La clé publique et le certificat sont conçus pour être partagés, donc si vous manquez d'espace, vous pouvez les déplacer en toute sécurité vers un stockage externe. Vous pouvez obtenir un peu plus de contexte sur la page Comment fonctionne SSL / TLS? sur Information Security Stack Exchange et cryptographie à clé publique sur Wikipedia. Je pense que je vous rendrais un mauvais service si je n'incluais pas cette image pour expliquer pourquoi la clé privée doit être secrète:
.
Image de Wikipedia , publiée dans le domaine public.
La clé publique de votre appareil est ce qu'AWS IoT utilise pour signer les messages à envoyer à votre appareil (mais cela ne prouve pas qui envoie le message ). Donc, vraiment, ce n'est pas un énorme désastre si quelqu'un vole la clé publique, car ce n'est pas censé être un secret.
La clé privée est ce que votre appareil utilise pour déchiffrer les messages, c'est donc un problème légèrement plus important si un attaquant vole cela.
Vous avez également demandé ce qui se passerait si l'attaquant volait le certificat RootCA. Si quelqu'un volait la clé privée d'AWS IoT , ce serait désastreux, mais le certificat RootCA sur votre appareil ne l'est pas . Ce RootCA.crt
que Amazon vous donne est complètement public , et le but est de vous permettre de vérifier que vous n'êtes pas attaqué de quelque manière que ce soit (probablement un homme du milieu se faisant passer pour les serveurs d'AWS IoT).
Quels dommages un appareil piraté pourrait-il faire?
Votre appareil volé ne peut effectuer que les actions répertoriées dans la politique . Essayez de suivre le principe du moindre privilège ; accordez uniquement à votre appareil les privilèges dont il a absolument besoin , donc si le pire se produit, il ne peut pas faire trop de ravages. Pour votre cas spécifique:
La chose est autorisée à publier sur seulement 2 canaux (son nom et un canal d'alimentation de données) qui est connecté à un processeur de données qui ignorera tous les paquets malveillants qui lui parviennent.
C'est bon. Toute attaque doit être isolée uniquement des deux sujets MQTT sur lesquels l'appareil peut publier, afin de ne pas causer de dommages à grande échelle.