Trochę kontekstu
Ponieważ używasz MQTT z AWS IoT, oczekuje się , że będziesz używać certyfikatów X.509 do uwierzytelniania i bezpieczeństwa. Amazon ma trochę wskazówek, jak zabezpieczyć swoje certyfikaty, dlatego zacytuję to tutaj:
Certyfikaty umożliwiają używanie kluczy asymetrycznych z urządzeniami. Oznacza to, że możesz wypalać klucze prywatne w bezpiecznym miejscu na urządzeniu, nie pozwalając wrażliwym materiałom kryptograficznym na opuszczenie urządzenia.
Ponieważ obecnie używasz funkcji ochrony przed odczytem (RDP) STM32 , wszyscy atakujący oprócz najbardziej zdeterminowanych będą mieli problemy z dostępem do certyfikatów w bieżącym schemacie:
Globalna ochrona przed odczytem pozwala wbudowanemu kodowi oprogramowania układowego (wstępnie załadowanemu do pamięci Flash) zabezpieczyć przed inżynierią wsteczną, zrzutem przy użyciu narzędzi do debugowania lub innymi atakami inwazyjnymi.
- Poziom 0 - Brak ochrony (domyślnie)
- Poziom 1 - Pamięć flash jest chroniona przed odczytem przez debugowanie lub zrzucanie kodu przez kod załadowany do pamięci RAM
- Poziom 2 - Wszystkie funkcje debugowania są wyłączone
Czy pamięć zewnętrzna będzie bezpieczna?
Prawdopodobnie nie jest tak bezpieczny . Jeśli klucz prywatny klienta zostanie skradziony, osoba atakująca może wysłać dane, które wydają się pochodzić z urządzenia, a tak naprawdę nie jest. Chociaż nie jest jasne, jakie dane wysyłasz, wszelkie niezaufane dane mogą stanowić zagrożenie bezpieczeństwa.
Jakie bity muszę zachować prywatność?
Podczas tworzenia certyfikatu urządzenia w usłudze AWS IoT powinieneś zobaczyć taki obraz:
Obraz ze strony Utwórz i aktywuj certyfikat urządzenia w dokumentacji AWS IoT.
Klucz prywatny jest rzeczą, którą naprawdę musisz zachować ... prywatność i zdecydowanie powinien być przechowywany w pamięci chronionej przed odczytem, jeśli to możliwe. Klucz publiczny i certyfikat zostały zaprojektowane do współdzielenia, więc jeśli zabraknie Ci miejsca, możesz bezpiecznie przenieść je do pamięci zewnętrznej. Możesz uzyskać nieco więcej kontekstu na stronie Jak działa SSL / TLS? na giełdzie stosów informacji i kryptografii klucza publicznego na Wikipedii. Myślę, że zrobiłbym ci krzywdę, gdybym nie zamieścił tego obrazu, aby wyjaśnić, dlaczego klucz prywatny musi być tajny:
.
Zdjęcie z Wikipedii , udostępnione jako własność publiczna.
Klucz publiczny urządzenia jest tym, czego używa AWS IoT do podpisywania wiadomości, aby wysłać je na urządzenie (ale nie dowodzi, kto wysyła wiadomość ). Tak naprawdę to nie jest wielka katastrofa, jeśli ktoś ukradnie klucz publiczny, ponieważ nie jest to tajemnica.
Klucz prywatny jest co twoi zastosowania urządzenia do odszyfrowania wiadomości, więc jest to nieco większy problem, jeśli atakujący kradnie to.
Zapytałeś także, co by się stało, gdyby atakujący ukradł certyfikat RootCA. Gdyby ktoś ukradł klucz prywatny AWS IoT , byłoby to katastrofalne, ale certyfikat RootCA na twoim urządzeniu nie jest taki . To, RootCA.crt
co daje ci Amazon, jest całkowicie publiczne , a celem jest sprawdzenie, czy nie jesteś w żaden sposób atakowany (najprawdopodobniej człowiek pośrodku udający serwery AWS IoT).
Jakie szkody może zhakować urządzenie?
Twoje skradzione urządzenie może wykonywać tylko czynności wymienione w polisie . Staraj się przestrzegać zasady najmniejszych przywilejów ; tylko przyznać urządzenie przywilejów to absolutnie potrzebuje , więc jeśli najgorsze zdarza się, że nie mogą siać spustoszenie za dużo. W konkretnym przypadku:
Dozwolone jest publikowanie tylko na 2 kanałach (jego nazwa i kanał przesyłania danych), które są podłączone do procesora danych, który zignoruje wszelkie przychodzące do niego nieuczciwe pakiety.
Dobre. Każdy atak powinien być izolowany tylko na dwa tematy MQTT, na które urządzenie może publikować, aby nie spowodował szkody na dużą skalę.