Bluetooth Mesh: mechanizmy bezpieczeństwa

| Technika

W dzisiejszym świecie technologii mobilnych oraz sieciowych bezpieczeństwo jest zagadnieniem kluczowym. Systemy IoT z jednej strony połączone są z globalną siecią, z drugiej często zarządzają dość istotnymi obszarami, przetwarzając wrażliwe dane użytkowników lub dbając o ich bezpieczeństwo. Czyni to tego typu rozwiązania atrakcyjnymi obiektami potencjalnych ataków, ważna jest zatem duża odporność protokołów komunikacyjnych na takie zagrożenia.

Bluetooth Mesh: mechanizmy bezpieczeństwa

Mechanizmy bezpieczeństwa są nieodłączoną częścią implementacji protokołu Bluetooth Mesh i zgodnie z postanowieniami standardu nie mogą zostać wyłączone lub pominięte. Jest to znaczna różnica w stosunku do Bluetooth Low Energy (standard w wersji 4.x), umożliwiającego zestawienie połączenia punkt-punkt, dla którego stosowanie mechanizmów bezpieczeństwa było jedynie opcjonalne.

Proces zestawiania połączenia Bluetooth Mesh, podczas którego do sieci dodawane są nowe węzły, jak również sposób wymiany danych pomiędzy układami, zaprojektowane zostały z uwzględnieniem zapewnienia wysokiego poziomu bezpieczeństwa jako jednego z najwyższych priorytetów. Technologia Bluetooth Mesh z założenia powinna być odporna m.in. na następujące rodzaje zagrożeń i ataków:

  • Man-in-the-Middle (MITM), czyli atak polegający na podsłuchu i modyfikacji wiadomości przesyłanych pomiędzy dwoma stacjami w sposób dla nich niezauważalny. Bluetooth Mesh zapewnia ochronę przed tym zagrożeniem poprzez wykorzystanie w procesie zestawiania połączenia specjalnego protokołu wymiany kluczy, opartego na krzywej eliptycznej Diffiego-Hellmana (ECDH, Elliptic Curve Diffie-Hellman).
  • Atak powtórzeniowy (Replay attack), polegający na przechwyceniu i retransmisji wiadomości do właściwego nadawcy, co pozwala podszyć się pod odbiorcę i dzięki temu uzyskać autoryzację dostępu do sieci. Bluetooth Mesh jest odporny na to zagrożenie dzięki wykorzystaniu inkrementowanych numerów sekwencji (SEQ) omówionych w dalszej części tekstu.
  • Atak Trash-can, polegający na pozyskaniu danych logowania i poświadczeń zapisanych na elemencie odłączonym już od sieci, dosłownie "wyciągniętym przez atakującego ze śmietnika". Przeprowadzenie tego typu ataku uniemożliwiane jest poprzez tzw. procedurę blacklistingu, czyli deautoryzacji elementów odłączanych od sieci.

Standard Bluetooth Mesh ma wbudowane mechanizmy bezpieczeństwa obecne na wielu poziomach organizacji sieci oraz stosu jej protokołów. Najważniejsze z nich omówione zostaną w dalszej części tekstu.

Zestawianie połączenia: autoryzacja urządzeń

Aby dodać nowe urządzenie do sieci Bluetooth Mesh, konieczne jest przeprowadzenie procesu określanego jako "provisioning", czyli konfiguracja i zestawienie połączenia. W przedsięwzięciu tym udział biorą dwa urządzenia – dodawany obiekt, czyli nowy węzeł oraz już pracujący w sieci układ, wyposażony w funkcję "provisioner". Funkcję urządzenia provisioner pełni zazwyczaj smartfon lub inne urządzenie wyposażone w odpowiednią aplikację. Do jego zadań należy utworzenie sieci, zarządzenie jej konfiguracją oraz przydzielenie wszelkiego typu kluczy niezbędnych dla prawidłowej pracy nowo dołączanych węzłów.

Na rysunku 1 przedstawiono stos protokołów wykorzystywany w procesie zestawiania połączenia. W celu utrzymania kompatybilności z układami obsługującymi jedynie standard Bluetooth w wersji 4.x (BLE) umożliwiono realizację tej procedury z wykorzystaniem dwóch różnych rodzajów warstw transportowych, czyli dwóch różnych odmian protokołu. Przy zestawianiu połączenia możliwe jest zatem korzystanie zarówno z warstwy PB-ADV (advertisement, podstawowy sposób komunikacji w sieci Bluetooth Mesh), jak i PB-GATT (GATT, kompatybilne z układami wspierającymi jedynie standard BLE). Większość urządzeń mobilnych wciąż jeszcze nie wspiera protokołu PB-ADC, zatem w procesie zestawiania połączenia wykorzystywać muszą warstwę PB-GATT.

 
Rys. 1. Stos protokołów wykorzystywany w procesie zestawiania połączenia

Proces zestawiania połączenia różni się nieznacznie w zależności od wybranego rodzaju warstwy transportowej. W przypadku PB-ADV nowy moduł zaraz po podłączeniu zasilania rozpoczyna rozgłaszanie ramki informującej o gotowości do dodania. Provisioner nasłuchuje i po przechwyceniu wiadomości rozpoczyna dalsze działania. W przypadku PB-GATT uprzednio zestawiane jest standardowe połączenie BLE pomiędzy dwoma węzłami.

Cała procedura zestawiania połączenia ma na celu realizację dwóch głównych założeń:

  • Autentykację dodawanego urządzenia. W sieci Bluetooth Mesh na bardzo małej przestrzeni rozmieszczone mogą być dziesiątki różnych układów, przez co bardzo ważne jest upewnienie się, że dodawane urządzenie jest właśnie tym, które użytkownik chce dołączyć do swojej sieci.
  • Zbudowanie bezpiecznego połączenie z nowym węzłem w celu dalszej wymiany informacji. W przypadku powodzenia tej czynności nowe urządzenie staje się węzłem Bluetooth Mesh.

Proces zestawiania połączenia składa się z pięciu faz: rozgłaszanie (beaconing), zaproszenie (invitation), wymiana kluczy kryptograficznych, autentykacja i konfiguracja węzła.

Rozgłaszanie

Rozgłaszanie to tradycyjny sposób informowania sieci o obecności nowego węzła, znany już z BLE. Nowe urządzenie, gdy ma zostać dodane do sieci, przechodzi w tryb rozgłaszania, w którym rozsyła pakiety informujące o gotowości do zestawienia połączenia. Provisioner skanuje kanał transmisyjny i po otrzymaniu wiadomości odkrywa obecność nowego układu, jest również w stanie odczytać podstawowe informacje na jego temat.

Zaproszenie

Po ukończeniu fazy rozgłaszania provisioner zestawia połączenie z nowym układem z wykorzystaniem jednego z dwóch dostępnych typów protokołów (PB-ADC lub PB-GATT). Następnie provisioner przesyła wiadomość typu Provisioning Invite PDU (Protocol Data Unit), zaś urządzenie odpowiada ramką Provisioning Capabilities PDU.

Wiadomość przesyłana przez provisioner zawiera m.in. informację (pole Attention Duration) na temat tego, jak długo dodawany układ powinien realizować sygnalizację dla użytkownika (np. poprzez miganie diodą), co stanowi sposób na wizualną identyfikację dodawanego urządzenia.

Ramka odpowiedzi zawiera informacje nt. liczby elementów zaimplementowanych w urządzeniu, zestawie wspieranych mechanizmów bezpieczeństwa, możliwości wymiany klucza publicznego z wykorzystaniem technologii Out-of-Band (OOB), liczby i typu możliwych sygnałów wejściowych oraz wyjściowych.

Na rysunku 2 przedstawiono przebieg dwóch początkowych faz procesu zestawiania połączenia. Co do zasady układ ten jest bardzo zbliżony do schematu wykorzystywanego w standardzie Bluetooth Low Energy. Głównym celem fazy 2, czyli wymiany ramek zaproszenia, jest pozyskanie podstawowych informacji identyfikujących nowe urządzenia, co pozwala na podjęcie decyzji co do dalszych kroków.

 
Rys. 2. Pierwsze fazy procesu zestawiania połączenia – rozgłaszanie, detekcja oraz przesłanie zaproszenia

Wymiana kluczy kryptograficznych

Istnieją dwie podstawowe techniki kodowania informacji – szyfrowanie symetryczne (inaczej z wykorzystaniem klucza tajnego) oraz asymetryczne (z wykorzystaniem jawnego klucza publicznego).

Kodowanie symetryczne korzysta z tego samego klucza do szyfrowania oraz deszyfrowania wiadomości. Uczestnicy komunikacji (nadawca oraz odbiorca) znają wartość klucza, są zatem w stanie odczytywać treść przesyłanej informacji. Przy tego typu komunikacji największym problemem jest jednak sposób bezpiecznej wymiany klucza, zapewniający odpowiedni poziom poufności i gwarantujący, że tajny klucz nie dostanie się w niepowołane ręce.

Szyfrowanie asymetryczne korzysta z pary kluczy, gdzie jeden to klucz publiczny, drugi zaś prywatny. Klucz publiczny jest udostępniany przez urządzenie każdemu, kto chce przesłać do niego wiadomość, zaś klucz prywatny znany jest jedynie odbiorcy. Wiadomość zaszyfrowana z użyciem klucza publicznego może zostać odczytana jedynie z wykorzystaniem klucza prywatnego. Wadą szyfrowania asymetrycznego jest jego większa złożoność, co przekłada się na konieczność wykorzystania większej mocy obliczeniowej niż w przypadku kodowania symetrycznego.

Większość urządzeń w sieci Bluetooth Mesh to systemy mikroprocesorowe o ograniczonej mocy obliczeniowej, przez co nie mogą sobie one pozwolić na ciągłe stosowanie kosztownych algorytmów kryptografii asymetrycznej. Szyfrowanie symetryczne jest dla nich zdecydowanie bardziej odpowiednie pod warunkiem zapewnienia odpowiednio bezpiecznego sposobu wymiany tajnych kluczy. Dla rozwiązania tego problemu standard Bluetooth Mesh korzysta z kombinacji obu metod, co często określa się jako szyfrowanie hybrydowe.

W części asymetrycznej Bluetooth Mesh wykorzystuje protokół oparty na krzywej eliptycznej Diffiego-Hellmana (ECDH). Protokół ten pozwala na stworzenie bezpiecznego łącza w niezabezpieczonym kanale transmisyjnym, następnie zaś na wymianę tajnych kluczy pomiędzy urządzeniami.

Gdy urządzenia dokonały już wymiany tajnych kluczy, dalsza transmisja szyfrowana jest z wykorzystaniem algorytmu symetrycznego AES-128, będącego obecnie standardowych mechanizmem szyfrowania w większości aplikacji IoT.

Wymiana klucza publicznego protokołu ECDH może nastąpić na dwa sposoby – poprzez łącze Bluetooth lub poprzez alternatywny kanał, tzw. OOB (Out-of-Band). Jak już wcześniej wspomniano, w początkowej wiadomości dodawany układ informuje provisioner o możliwości wspierania komunikacji typu OOB. Jeśli rozwiązanie takie jest wspierane, provisioner może zdecydować o wykorzystaniu tej opcji, o czym informuje dodawane urządzenie za pomocą odpowiedniego formatu wiadomości (Provisioning Start PDU). Wymiana klucza poprzez OOB może polegać np. na wykorzystaniu kodu QR wyświetlanego na ekranie urządzenia.

Autentykacja

W kolejnym kroku provisioner za pomocą wybranej metody dokonuje autentykacji nowego urządzenia. Dostępne są trzy rodzaje autentykacji: Input OOB, Output OOB oraz Static OOB/No OOB.

Output OOB. Jeśli wybrana została autentykacja poprzez Output OOB, dodawane urządzenie generuje losową liczbę oraz w określony sposób przekazuje jej wartość użytkownikowi, zależnie od możliwości urządzenia. Przykładowo, żarówka może mrugnąć określoną liczbę razy, zaś telewizor po prostu wyświetlić tę wartość na swoim ekranie. Użytkownik odczytuje wygenerowaną wartość oraz wprowadza ją do provisionera.

Input OOB. W tym przypadku losowa wartość generowana jest przez provisioner, zaś użytkownik wprowadzą ją do dołączanego urządzenia. Sposób wprowadzenia danych zależy od możliwości układu – przykładowo, przełącznik do sterowania oświetleniem może wykorzystać do tego celu wielokrotne naciśnięcie przycisku w krótkim okresie. W porównaniu do Output OOB, Input OOB wymaga wysłania przez dodawane urządzenie jednej dodatkowej ramki, informującej provisioner o otrzymaniu wygenerowanej wartości.

Static OOB/No OOB. Jeśli nie ma możliwości zrealizowania żadnej z powyższych metod, oba układy generują własne wartości losowe, wykorzystywane później w procesie potwierdzania tożsamości.

Potwierdzanie tożsamości. Na podstawie otrzymanych wcześniej danych oba układy generują określoną wartość liczbową, służącą do wzajemnego potwierdzenia ich tożsamości. Proces ten jest dość skomplikowany – składa się z pięciu kroków i wykorzystuje kilka różnych wartości wymienionych w dotychczasowej komunikacji pomiędzy układami. Cały mechanizm obliczania wartości końcowej opisany jest szczegółowo w dokumentacji standardu.

Każdy z układów oblicza wartość końcową niezależnie, następnie poprzez wymianę wiadomości dokonuje porównania swojej liczby z wynikiem uzyskanym przez drugie z urządzeń. W przypadku stwierdzenia niezgodności proces zestawiania połączenia jest przerywany. W przeciwnym razie następuje przejście do ostatniego kroku, czyli konfiguracji nowego węzła.

Konfiguracja nowego węzła

Po zakończeniu autentykacji dokonuje się najważniejsza część całego procesu zestawiania połączenia, czyli dostarczenie do nowego urządzenia danych umożliwiających mu prawidłowe funkcjonowanie w sieci. Do najważniejszych z tych wartości zalicza się klucze kryptograficzne: klucz sieciowy i klucz urządzenia, a także unikatowy adres nowego węzła w sieci.

Zestawianie połączenia w praktyce

Na rysunku 3 przedstawiono poszczególne kroki procesu dodawania do sieci Bluetooth Mesh nowego urządzenia. Nowy układ to ściemniana żarówka, zaś funkcję provisionera pełni smartfon z zainstalowaną odpowiednią aplikacją.

 
Rys. 3. Przykład konfiguracji kilku podsieci z wykorzystaniem różnych kluczy sieciowych

Początkowo żarówka rozgłasza ramkę o gotowości do dodania. Po uruchomieniu procesu dodawania na telefonie w aplikacji pokazuje się lista wykrytych urządzeń, na której znaleźć można nowy układ. Gdy użytkownik wybierze urządzenie z listy, rozpoczyna się komunikacja pomiędzy układami. Telefon wysyła do nowego urządzenia zaproszenie, to zaś odsyła ramkę odpowiedzi. Następnie realizowane są po kolei wszystkie kroki procedury, aż do momentu konfiguracji oraz włączenia nowego węzła do sieci.

Klucz sieciowy, aplikacji oraz urządzenia

W celu poprawnej pracy w sieci węzeł musi mieć zestaw kluczy kryptograficznych umożliwiających szyfrowanie przesyłanej komunikacji na różnych poziomach.

Klucz sieciowy (Network key) pozwala modułowi na deszyfrowanie oraz autentykację w najniższych warstwach protokołu – do warstwy sieciowej włącznie, co umożliwia m.in. przekazywanie otrzymanych wiadomości do dalszych węzłów sieci. Znajomość klucza sieciowego nie wystarcza jednak do uzyskania dostępu do właściwych danych zawartych w otrzymywanych oraz przekazanych wiadomościach.

Węzeł może mieć jeden lub więcej kluczy sieciowych, co pozwala na tworzenie wielu podsieci w obrębie jednej sieci Bluetooth Mesh. Dzięki temu wiadomości adresowane w obrębie podsieci nie są propagowane w całej sieci, a jedynie w jej wydzielonym fragmencie, co zwiększa efektywność komunikacji. Przykładem zasadności takiego rozwiązania może być parking wielopoziomowy, gdzie każde piętro to osobna podsieć, w której urządzenia komunikują się głównie między sobą.

 
Rys. 4. Przykład realizacji dwóch różnych zadań z wykorzystaniem dwóch kluczy aplikacji – sterowanie oświetleniem i kontrola dostępu

Klucz aplikacji (Application key) dzielony jest przez wydzieloną grupę urządzeń, zazwyczaj pracującą wspólnie w celu realizacji jednej funkcjonalności. Klucz ten umożliwia prawidłowy odczyt przesyłanych danych, jak np. wartości mierzonej przez czujnik czy poleceń zmiany stanu urządzenia. Pojedynczy węzeł może mieć do 4096 różnych kluczy aplikacji, co pozwala na współpracę z wieloma urządzeniami i realizację wielu odmiennych zadań.

Klucz urządzenia (Device key) nadawany jest nowemu węzłowi przez provisioner w procesie dołączania do sieci. Znany jest jedynie provisionerowi oraz wykorzystywany w procesie konfiguracji węzła.

Dzięki zastosowaniu wielu poziomów zabezpieczeń każda wiadomość obecna w kanale transmisyjnym zakodowana jest podwójnie. Pierwszy raz z wykorzystaniem klucza aplikacji oraz urządzenia, następnie zaś z użyciem klucza sieciowego. Każdy z tych kluczy jest 128-bitowy, zaś szyfrowanie odbywa się zgodnie z algorytmem AES.

Usuwanie węzła

Każde urządzenie może ulec awarii lub z innych przyczyn zostać odłączone od sieci. Pozbycie się takiego układu wiąże się z ryzykiem wystąpienia ataku typu Trash-can, czyli pozyskania przez włamywacza danych uwierzytelniających poprzez przejęcie wycofanego z eksploatacji produktu.

Dla ochrony przed tego typu zagrożeniem wprowadzono procedurę aktualizacji kluczy. Po wycofaniu jednego z elementów sieci istnieje możliwość uruchomienia tego procesu, w efekcie czego dla wszystkich aktywnych węzłów nastąpi zmiana wartości kluczy oraz innych ważnych z punktu widzenia bezpieczeństwa informacji. Dzięki temu informacje przechwycone z wycofanego urządzenia będą już nieaktualne i nie pozwolą na uzyskanie dostępu do sieci.

Prywatność (zaciemnianie wiadomości)

Prywatność, rozumiana jako brak możliwości uzyskania dostępu do treści wiadomości przez podmioty inne niż jej bezpośredni nadawca oraz odbiorca, jest bardzo ważną oraz niezwykle pożądaną cechą każdej komunikacji. W Bluetooth Mesh prywatność zapewniana jest przez szyfrowanie z wykorzystaniem opisanych już kluczy kryptograficznych. Oprócz treści wiadomości, szyfrowaniu podlega też jej nagłówek, zawierający adres nadawcy oraz odbiorcy. Uniemożliwia to potencjalnemu podsłuchującemu śledzenie przepływu wiadomości w sieci.

Atak powtórzeniowy

Potencjalny atakujący może spróbować zakłócić działanie sieci poprzez przechwycenie jednej z transmitowanych wiadomości a następnie wielokrotną jej retransmisję. Przykładowo, przechwyceniu ulec może wiadomość będąca poleceniem otwarcia zamku w drzwiach. Atakujący będzie mógł potem wielokrotnie otwierać te drzwi, po prostu retransmitując tę samą przechwyconą wiadomość. Tego typu atak stanowić może dość poważne zagrożenie dla funkcjonowania sieci, dlatego w Bluetooth Mesh zaimplementowano mechanizmy mające uniemożliwić jego przeprowadzenie. Opierają się one na umieszczeniu w każdej wiadomości dwóch pól: indeksu wektora inicjalizacji (IV) oraz numeru sekwencji (SEQ).

Numer sekwencji inkrementowany jest za każdym razem, gdy węzeł publikuje jakąś wiadomość. Inne węzły każdorazowo sprawdzają pole SEQ otrzymanej wiadomości – jeśli jest ono równe lub niższe od ostatnio otrzymanej poprawnej wartości, odrzucają otrzymaną ramkę jako niepoprawną. Numer sekwencji wysyłany jest w postaci zaszyfrowanej, do prawidłowej zmiany wartości tego pola atakujący musiałby zatem znać klucze wykorzystywane w sieci. Pole IV pełni podobną funkcję – z tą różnicą, że pole SEQ może być unikatowe dla każdego węzła w sieci, zaś pole IV jest wspólne dla wszystkich węzłów.

Podsumowanie

Proces zestawiania połączenia oraz konfiguracji sieci Bluetooth Mesh zaprojektowany został z myślą o zapewnieniu wysokiego poziomu bezpieczeństwa i wyeliminowania ryzyka uzyskania dostępu do zasobów sieciowych przez nieautoryzowane urządzenia. Stosowane dwupoziomowe szyfrowanie zapewnia poufność przesyłanych danych, pozwala również na tworzenie podsieci w obrębie jednej dużej sieci. Wszystkie zaimplementowane środki bezpieczeństwa, jak procedury aktualizacji kluczy czy mechanizm przeciwdziałania atakom powtórzeniowym, powodują, że poziom bezpieczeństwa oferowany przez standard Bluetooth Mesh uznać można za wysoki, z pewnością nieodbiegający negatywnie od innych rozwiązań stosowanych w rozwiązaniach IoT.

 

Damian Tomaszewski