Zaczynam naukę IoT security: dlaczego i jak?
Od wielu lat wraca do mnie temat pisania artykułów na blogu. Wiele razy postanawiałem sobie, że chciałbym to robić, a przynajmniej spróbować. W końcu więc, zamiast ciągle tylko o tym myśleć, postanowiłem spróbować — przynajmniej na jakiś czas — i zobaczyć, jak będzie. Sporo też zastanawiałem się, jaki będzie mój temat przewodni na blogu. Moja obecna specjalizacja, w której czuję się dobrze, to testowanie oprogramowania i quality assurance na styku hardware’u i software’u. Chciałem jednak, by blog miał styl public learning, dlatego temat musiał być dla mnie w miarę nowy i interesujący. W moim zespole pracujemy zarówno z czystym oprogramowaniem, jak i z systemami IoT. Jako osoba pracująca w IT jestem świadomy zagrożeń związanych z bezpieczeństwem, ale nie mógłbym z czystym sumieniem powiedzieć, że temat ten nie ma przede mną tajemnic. Właśnie dlatego padło na bezpieczeństwo systemów IoT. Żeby jednak ten blog miał wartość dla osób, które chcą rozpocząć przygodę z embedded i IoT security, zacznę od pisania artykułów wprowadzających podstawy embedded i sukcesywnie będę zwiększał liczbę artykułów poruszających tematy security.
Czego można się spodziewać w najbliższym czasie po tym blogu?
Będę pisał o tym, co odkryłem w trakcie zbierania doświadczenia z IoT security
Na początku jedna ważna sprawa – nie jestem specjalistą od IoT security (a przynajmniej na razie 😉). Blog jest dla mnie miejscem, w którym zamierzam opisywać ścieżkę prowadzącą do wzmocnienia technicznych kompetencji związanych z bezpieczeństwem IoT. Mogą więc tutaj pojawiać się informacje, z którymi osoby pracujące od lat w tej dziedzinie nie będą się zgadzać — i w zasadzie na to liczę, ponieważ popełnianie błędów i uczenie się na nich jest najlepszą metodą nauki. Jeśli jednak moja wiedza w jakimś temacie się pogłębi i będzie trzeba dokonać rewizji, bez wątpienia to zrobię.
Opiszę pokrótce, na jakim sprzęcie będę pracował i jakie tematy będę poruszał w najbliższym czasie.
Sprzęt

Chciałem zacząć na początek od czegoś w miarę prostego i nie obciążającego przy okazji nadmiernie budżetu. Celem były zakupy za ok. 500 zł pozwalające stworzyć w przyszłości jakiś prosty system połączonych ze sobą urządzeń, które będą zbierały różnego typu dane i dzieliły się nimi między sobą.
Oto lista urządzeń i elementów, które będą bazą do moich testów:
Arduino Uno Rev3
2 x Płytka ESP32-DevKitC
Raspberry Pi Zero 2 WH 512MB RAM - WiFi + BT 4.2
Czujniki (BMP280, DHT11, LM35, fotorezystor)
Podstawowe komponenty elektroniczne (płytka stykowa, diody LED, rezystory, tranzystory, potencjometry, przyciski tact-switch)
Moduły wspomagające – wyświetlacz LCD, sterownik silnika L293D, ekspander PCF8574, rejestr przesuwny 74HC595
Komplet przewodów połączeniowych
Tematy
Będę opisywał, czego sam się uczę przechodząc ścieżkę od “zera”. Chociaż jestem elektronikiem i pracuję z urządzeniami IoT, to jednak będę pokazywał ścieżkę, którą musi przejść osoba kompletnie niemająca pojęcia o embedded i IoT, ale mająca doświadczenie w IT – w testowaniu, programowaniu lub innych technicznych aspektach pracy z dostarczaniem oprogramowania. Chciałbym, żeby osoba mająca doświadczenie z aplikacjami webowymi i mobilnymi mogła dzięki wiedzy zgromadzonej na tym blogu stać się specjalistą od bezpieczeństwa IoT i nie bała się pracować z fizycznymi urządzeniami. Nie będę się jednak zagłębiał w tematy elektroniki czy embedded, które nie są potrzebne do zrozumienia podstaw bezpieczeństwa IoT. Początkowo tematów związanych z samym embedded będzie więcej, a z czasem liczba artykułów związanych z IoT i bezpieczeństwem będzie wzrastać.
Wiedzę będę zdobywał sukcesywnie przez szukanie i czytanie treści już istniejących w internecie, branie udziału w meetupach i konferencjach branżowych oraz doszkalanie się podczas kursów zgłębiających temat. Wierzę, że na swojej drodze uda mi się również znaleźć osoby – specjalistów z branży, które będą gotowe podzielić się swoim doświadczeniem i wiedzą. Wszystko, co odkryję, będę opisywał tutaj na blogu. Początkowo przyjąłem też pewną kolejność tematów i będę sukcesywnie podążał tą ścieżką, ale ponieważ sam się uczę, nie jest to wyryte w kamieniu i będę ją dostosowywał w trakcie (obecnie nie wiem, czego nie wiem — a to sprawia, że może się tam pojawić wiele innych potrzebnych elementów lub trzeba będzie ją nieco przeprojektować). Na obecną chwilę wygląda ona następująco:
Embedded od strony firmware’u i security – będzie o tym, jak jest zbudowany hardware i jak współpracuje z firmware’em oraz gdzie są słabe punkty, mogące wpływać na bezpieczeństwo. Z tematów na tym etapie na pewno będą architektura mikrokontrolera, GPIO i elektronika, protokoły sprzętowe, trochę o C/C++ dla czytania firmware’u. Będę starał się też zawsze przy tematach pokazywać praktyczne eksperymenty pozwalające zrobić coś samemu i zweryfikować, jak w praktyce wygląda omawiana teoria.
Linux i tematy związane z komunikacją sieciową - przyjrzymy się systemowi Linux i protokołom sieciowym, porozmawiamy o modelu OSI oraz TCP/IP.
Protokoły w IoT - będzie o protokołach MQTT/BLE/CoAP a także o bezpieczeństwie WiFi, provisioning i OTA
Podstawy bezpieczeństwa - m. in. OWASP IoT Top 10, kryptografia, uwierzytelnianie, analiza firmware’u, bezpieczeństwo API dla backendu IoT, atakowanie powierzchni hardware’u, spróbujemy stworzyć środowisko z podatnościami bezpieczeństwa i zaatakujemy jego infrastrukturę. Następnie dowiemy się, jak bronić się przed takimi atakami.
Automatyzacja security - używanie istniejących narzędzi i pisanie własnych skryptów, automatyzacja w różnych warstwach podatnych na ataki oraz bezpieczeństwo w CI/CD
Powyższa lista to taka bardzo ogólna ścieżka. Oprócz wiedzy teoretycznej będę pracował na fizycznym sprzęcie, który pewnie będzie rozbudowywany o nowe urządzenia i moduły.
To tylko ogólny skrót tematów, które chcę poruszać, tak więc jeśli te tematy są dla Ciebie interesujące, zachęcam do subskrybowania i pozostania w kontakcie.

