Czy Blockchain zapewni bezpieczeństwo w IoT?
| Gospodarka Mikrokontrolery i IoTWedług najnowszych szacunków Cisco Internet Business Solution Group w 2020 roku do sieci będzie podłączone ponad 50 mld urządzeń IoT. Każde z nich, pośrednio lub bezpośrednio, przetwarza i gromadzi olbrzymią liczbę danych, często prywatnych i wrażliwych. Liczne doniesienia o cyberatakach i nadużyciach udowadniają, że urządzenia IoT niestety są podatne na ataki i wykradnięcie danych. Nie dziwi więc fakt, że zapewnienie bezpieczeństwa staje się sprawą absolutnie priorytetową dla rozwoju IoT.
Dzięki gigantycznemu wzrostowi popularności kryptowalut, coraz więcej developerów oprogramowania interesuje się technologią Blockchain. Okazuje się, że technologia ta może również być wykorzystany do znaczącej poprawy bezpieczeństwa w aplikacjach IoT. Aby w pełni zrozumieć, jak można zaimplementować go do IoT, należy najpierw przyjrzeć się samej technologii.
Krótko o tym, jak to działa
Blockchain to zdecentralizowana rozproszona baza danych oparta na architekturze peer-to-peer. W odróżnieniu od tradycyjnej architektury klient- serwer w peer-to-peer każde urządzenie ma te same uprawnienia - host może pełnić funkcję zarówno klienta, jak i serwera. Wymiana danych odbywa się poprzez system transakcji pomiędzy węzłami (urządzeniami), które po zweryfikowaniu dodawane są do rozproszonego rejestru (bloku) odpornego na modyfikacje. Cały proces jest względnie prosty: węzeł na samym początku informuje wszystkie pozostałe o pojawieniu się transakcji, która jest przez nie weryfikowana i dodawana do listy oczekujących na zaakceptowanie. Następnie tworzy on blok danych zawierający część lub wszystkie transakcje z listy. Jeśli pozostałe węzły zweryfikują tak utworzony blok i uznają go za poprawny, tworzą jego kopię oraz usuwają transakcje z listy. Każdy nowy blok jest połączony ze swoim poprzednikiem, co w efekcie tworzy nieprzerwane połączenie aż do pierwszego bloku (genesis block). Dzięki takiemu mechanizmowi połączeń modyfikacja pojedynczego bloku bez wykrycia przez pozostałe jest niemożliwa, a każdy blok zawierający zmodyfikowany rejestr transakcji jest odrzucany.
Jednym z najważniejszych pytań, które należy zadać przed zaimplementowaniem Blockchainu do danego rozwiązania, jest to, w jaki sposób nowy węzeł może przyłączyć się do sieci. Istnieją dwa rodzaje łańcucha bloków - licencjonowany i nielicencjonowany (permissioned i permissionless). W nielicencjonowanym, publicznym rozwiązaniu nie ma ograniczeń co do przyłączania węzłów a każdy z nich może brać udział w weryfikacji pozostałych. Tak wysoce zdecentralizowane rozwiązanie używane jest między innymi w Bitcoinie i innych kryptowalutach, gdzie każde urządzenie może bez ograniczeń dołączyć do sieci. Z kolei Blockchain licencjonowany z góry ustala, które węzły mogą przyłączyć się do sieci i weryfikować pozostałe. Takie rozwiązanie, pomimo większej centralizacji, wpływa pozytywnie na wydajność i bezpieczeństwo, co sprawia, że korzysta z niego większość obecnych komercyjnych implementacji.
Blockchain to także szyfrowanie
Niezależnie od konfiguracji, struktura bloków w obu wariantach wygląda tak samo. Każda transakcja szyfrowana jest parą kluczy - prywatnym i publicznym. Zanim dany węzeł poinformuje pozostałe o pojawieniu się transakcji, musi "podpisać" ją swoim kluczem prywatnym w celu autoryzacji. Dołączany do niej klucz publiczny pozwala pozostałym węzłom zweryfikować lub odrzucić oczekującą transakcję. Stworzony w ten sposób unikatowy cyfrowy podpis zawiera informacje o jej nadawcy i czasie utworzenia. Weryfikacja bloku zawierającego tak utworzone ciągi danych odbywa się na zasadzie konsensusu - ustalona liczba węzłów musi uznać blok za poprawny, aby ten został zaakceptowany do łańcucha. Powyższe zabezpieczenia czynią Blockchain wyjątkowo bezpiecznym i odpornym na nieuprawioną modyfikacje systemem przechowywania danych.
Blockchain w IoT
Większość aplikacji IoT jest obecnie zależna od chmury - informacje są przesyłane z urządzeń, gdzie są przetwarzane i odsyłane z powrotem. Takie rozwiązanie ma dwie główne wady: bezpieczeństwo całej sieci zależy od zabezpieczeń chmury, a ograniczona moc obliczeniowa głównego serwera utrudnia skalowanie sieci. Dodatkowo w przypadku awarii chmury cała sieć urządzeń nie będzie mogła funkcjonować. Wprowadzenie Blockchaina do IoT może pozwolić wyeliminować te zagrożenia.
Dzięki decentralizacji bazy danych i zabezpieczeniom oferowanym przez Blockchain nieuprawniona modyfikacja bazy danych będzie o wiele trudniejsza niż przy tradycyjnym rozwiązaniu, a z powodu braku zależności od chmury skalowanie sieci będzie mogło odbywać się przy minimalnych ograniczeniach. Urządzenia zyskają też dużą autonomiczność - będą w stanie funkcjonować poprawnie nawet mimo awarii części z nich. Niektóre firmy wprowadzają już stopniowo Blockchain do swoich produktów. Z platformy IOTA zaprojektowanej specjalnie pod wykorzystanie tej technologii w IoT korzystają już między innymi Bosch, Fujitsu czy Volkswagen.
Mimo to przed projektantami dalej stoją liczne wyzwania. Przede wszystkim Blockchain wymaga większej mocy obliczeniowej od tradycyjnego rozwiązania chmurowego, a wiele urządzeń IoT nie dysponuje wystarczającymi zasobami na jego implementację. Dodatkowo, opisane wyżej tworzenie bloków oraz ich weryfikacja wymagają czasu, podczas gdy w IoT kluczowe są jak najmniejsze opóźnienia w komunikacji pomiędzy urządzeniami. Blockchain generuje również pewnego rodzaju problem prawny powstrzymujący firmy przed szybkim wprowadzeniem go na rynek - urządzenia działające autonomicznie podejmują decyzje bez wiedzy centralnego serwera, co powoduje niejasności w kwestii odpowiedzialności za ewentualny błąd i jego skutki.
Zarówno IoT, jak i Blockchain to jedne z najszybciej rozwijających się obecnie technologii, a ich wspólne połączenie wydaje się niemal naturalne. Mimo to wciąż potrzeba czasu, żeby rozwiązać wszystkie problemy powstrzymujące przed jego pełnym wprowadzeniem. Czy Blockchain całkowicie wyprze tradycyjne rozwiązania używane w IoT? Aktualnie trudno o jednoznaczną odpowiedź, ale zdecydowanie warto uważnie obserwować jego dalszy rozwój. (PM)