Jeśli możesz mieć kompleksowy protokół TCP, użyj kompleksowego protokołu TLS (np. Z HTTPS).
Nie wymyślaj na nowo koła, szczególnie jeśli chodzi o kryptografię - większość ludzi myli się. Jeśli urządzenie nie jest zbyt ograniczone pod względem zasobów, aby obsługiwać TLS, jeśli przejdziesz do poziomu AES, robisz to źle . # 1 błędem jest szyfrowanie i zapominanie o uwierzytelnianiu - jeśli masz zaszyfrowany kanał między serwerem a człowiekiem w środku, zamiast zaszyfrowanego kanału między serwerem a urządzeniem, szyfrowanie nie przyniosło żadnych korzyści . Jeśli nie możesz korzystać z TLS, upewnij się, że każdy używany protokół uwierzytelnia wszystko i szyfruje to, co musi być poufne.
Aby bezpiecznie korzystać z TLS, zastanów się, jakie gwarancje musisz mieć z punktu widzenia każdego uczestnika. Zasadniczo urządzenie musi wiedzieć, że komunikuje się z legalnym serwerem. Oznacza to, że musi sprawdzić certyfikat serwera. Na urządzeniu musi być zarejestrowany certyfikat X.509 urzędu certyfikacji jako zaufany; wymaga to pamięci, której atakujący nie może modyfikować, ale nie wymaga żadnej poufności pamięci. Pamiętaj, że nie powinieneś bezpośrednio kodować certyfikatu serwera, ponieważ nie pozwoli to łatwo zastąpić tego certyfikatu, jeśli zostanie naruszony. Zamiast tego urządzenie przechowuje oczekiwaną tożsamość(nazwa hosta) serwera oraz certyfikat urzędu certyfikacji, który gwarantuje, że określony klucz publiczny należy do oczekiwanej nazwy hosta. Ponownie nie wymyślaj koła ponownie, polegaj na sprawdzaniu certyfikatów dostarczonym przez Twoją bibliotekę TLS lub aplikację.
Jeśli serwer musi wiedzieć, że rozmawia z legalnym klientem, każdy klient musi mieć własny certyfikat klienta. Wymaga to poufnego przechowywania na kliencie. Przekaż certyfikat klienta do funkcji otwierania sesji TLS z biblioteki TLS lub ustaw go w konfiguracji aplikacji.
To zapewnia bezpieczeństwo komunikacji między serwerem a urządzeniem. Jeśli aplikacja mobilna może bezpośrednio komunikować się z urządzeniem (np. Aby umożliwić rozłączenie działania, gdy jest w lokalnej sieci Wi-Fi), musisz najpierw wykonać parowanie między inteligentnym przełącznikiem a telefonem komórkowym. Parowanie oznacza wymianę kluczy, najlepiej wymianę kluczy publicznych, jeśli pozwalają na to zasoby, w przeciwnym razie uzgodnienie tajnych kluczy. Celem tego parowania jest upewnienie się, że każde urządzenie wie, z kim rozmawia.
Musisz także zabezpieczyć kanał kontrolny, niezależnie od tego, czy przechodzi on bezpośrednio z urządzenia mobilnego na inteligentny przełącznik, czy przez serwer. Pomyśl o autoryzacji: czy istnieją różne poziomy dostępu do przełącznika, np. Poziom kontroli, który umożliwia przeprowadzenie rekonfiguracji i podstawowy kanał, który pozwala tylko na włączanie / wyłączanie? Jest to zazwyczaj obsługiwane przez etap uwierzytelnienia po ustanowieniu bezpiecznego kanału (TLS, jeśli to możliwe).
Innym zagadnieniem są aktualizacje oprogramowania układowego. To trudne: z jednej strony nie ma czegoś takiego jak absolutne bezpieczeństwo, więc od czasu do czasu będziesz mieć łatki bezpieczeństwa. Z drugiej strony mechanizm aktualizacji oprogramowania układowego jest złożoną rzeczą i może sam zawierać błędy. Przynajmniej upewnij się, że aktualizacje oprogramowania układowego są podpisane. Poleganie wyłącznie na bezpieczeństwie kanału komunikacyjnego w przypadku aktualizacji jest niejasne, ponieważ zaufany oparty na bezpiecznym kanale jest większy niż w przypadku statycznej weryfikacji bezpieczeństwa, a czasami możesz chcieć zastosować aktualizacje oprogramowania układowego bez połączenia sieciowego. Oprócz weryfikacji podpisu najlepiej byłoby mieć pewną ochronę przed wycofaniem, aby przeciwnik mógł „