Najlepsze praktyki bezpiecznych aktualizacji Over The Air [zamknięte]

8

Jakie są najlepsze praktyki bezpieczeństwa podczas wydawania aktualizacji OTA flocie urządzeń IoT? Jakie są istotne powody do niepokoju?

Na przykład,

  • zapobieganie przechwyceniu aktualizacji
  • przestrzeganie ustalonych standardów
  • platformy do dystrybucji oprogramowania
  • aktualizacje automatyczne a aktualizacje opcjonalne
Noam Hacker
źródło
5
To pytanie jest zbyt szerokie, aby pasowało do pytań i odpowiedzi.
Sean Houlihane,
1
@SeanHoulihane, zawęziłem się do bezpieczeństwa OTA. Jak to teraz wygląda?
Noam Hacker,
2
Wciąż jest dość szeroki, ponieważ każdy punkt może być samodzielnym pytaniem. Nawet dla ostatniego punktu testowania sukcesów możesz napisać o tym całą książkę.
Dom,
1
Zgodziłbym się z Domem. Lepiej wziąć jeden aspekt OTA (taki jak zapewnienie wiarygodnego wyniku). Nawet wtedy jest wiele odpowiedzi. Idealnie byłoby, gdyby pytanie wymagało tylko jednej lub dwóch wysokiej jakości odpowiedzi, aby można było zaakceptować odpowiedź „na”.
Sean Houlihane,
1
edytować też tytuł?
Sean Houlihane,

Odpowiedzi:

10

To pytanie jest zbyt ogólne, ale biorąc pod uwagę, że pominąłeś jedną najważniejszą rzecz, wydaje mi się, że muszę to wyjaśnić.

Uwierzytelnij aktualizację .

Jeśli chcesz się upewnić, że Twój kod obsługuje kod, potrzebujesz uwierzytelnienia, a nie szyfrowania. Szyfrowanie sprawia, że ​​inni ludzie nie mogą wiedzieć, co znajduje się w twoim kodzie, co jest trudne do osiągnięcia i rzadko przydatne. (Możesz szyfrować, ale jeśli klucz odszyfrowujący znajduje się na urządzeniu, nic nie zyskałeś, chyba że masz sposób na ochronę klucza odszyfrowującego, który nie pozwala na bezpośrednią ochronę kodu.) Autentyczność jest własnością innych osób nie może wygenerować fałszywej aktualizacji, a ta właściwość jest zwykle pożądana.

Pamiętaj, że szyfrowanie nie pomaga w autentyczności. Jest to fałszywe przekonanie, że ludzie, którzy tak naprawdę nie rozumieją bezpieczeństwa, mają czasami, ale to po prostu nieprawda.

W przypadku niektórych urządzeń można uruchomić dowolne oprogramowanie układowe, jeśli właściciel tak zdecyduje. W takim przypadku nadal potrzebujesz mechanizmu, aby upewnić się, że tylko właściciel urządzenia może zainstalować oprogramowanie wewnętrzne, a nie losowy przechodzień. Zasadniczo oznacza to, że urządzenie musi uwierzytelnić aktualizację pochodzącą od zarejestrowanego właściciela.

Gilles „SO- przestań być zły”
źródło
To naprawdę nie jest poprawne. Szyfrowanie nie jest ani bardzo trudne do osiągnięcia, ani nie jest „rzadko przydatne”. Ponadto szyfrowanie „nie pomaga w autentyczności” jest tylko częściowo prawdziwe. Większość współczesnych trybów szyfrowania, takich jak GCM, to tak zwane schematy „szyfrowania uwierzytelnionego”, które łączą autentyczność i poufność.
mat
@mat Zmieniłem to zdanie, aby było formalnie poprawne. Szyfrowanie nie jest trudne, ale miałem na myśli poufność, która jest trudna. Szyfrowanie nie zapewnia poufności, jeśli nie możesz zachować poufności klucza. Szyfrowanie wcale nie pomaga w autentyczności. Jeśli używasz uwierzytelnionego szyfrowania, daje to jedno i drugie, ale fakt, że obejmuje szyfrowanie, nie pomaga w uzyskaniu autentyczności.
Gilles „SO- przestań być zły”
W przypadku wycieku klucza każde krypto traci swoją przydatność, czy to dla zachowania poufności czy uwierzytelnienia. Jeśli ma sens zastosowanie szyfrowania z niechronionym kluczem na urządzeniu, zależy od modelu zagrożenia (dostępność urządzenia, umiejętności przeciwników)
mat
@ mat Nie. Powinienem był zareagować na uwagę GCM w poprzednim komentarzu. GCM nie jest dobrym sposobem na rozpowszechnianie aktualizacji, ponieważ oznacza, że ​​autentyczność jest sprawdzana za pomocą klucza klasy. O ile nie tworzysz wysoce hartowanej platformy (np. Karty inteligentnej), klucz klasy jest tak dobry, jak publiczny. Aktualizacje powinny korzystać z kryptografii asymetrycznej. W ten sposób, aby wdrożyć fałszywą aktualizację na urządzeniu, należy złamać to konkretne urządzenie: aby stworzyć fałszywą aktualizację, która działa wszędzie, atakujący musiałby złamać serwer lub protokół, a te są zazwyczaj lepiej chronione niż urządzenia w pole.
Gilles „SO- przestań być zły”