W tym celu urządzenie nadrzędne wysyła wygenerowaną przez
specjalny algorytm liczbę pseudolosową do urządzenia podrzędnego. Obie
jednostki inicjują mechanizmy szyfrowania na podstawie tej liczby. W
następnym etapie urządzenie nadrzędne transmituje do jednostki podrzędnej
kolejną liczbę pseudolosową, która za pomocą klucza jest szyfrowana przez
algorytm zaimplementowany w oprogramowaniu tego urządzenia. Klucz ten
oparty jest na wspólnym dla obu urządzeń kodzie dobierania w pary.
Zaszyfrowana w ten sposób liczba retransmitowana jest do urządzenia
nadrzędnego, które porównuje dane otrzymane od jednostki podrzędnej z
28
Bluetooth. Praktyczne programowanie
wynikiem analogicznej operacji wykonanej przez macierzyste oprogramowanie.
Jeżeli wyniki są zgodne, oznacza to iż oba urządzenia posługują się takim
samym kluczem.
Poufne hasła, klucze dostępu lub numery PIN nie są transmitowane do
urządzeń, przez co program zarządzający może tworzyć tablice wcześniej
zidentyfikowanych urządzeń, dzięki czemu powtórny proces łączenia może
przebiegać dużo sprawniej. Klucz połączeniowy jest tworzony w trakcie
ustanawiania połączenia. Generowany jest na podstawie kodów dobierania w
pary, jakie użytkownicy wpisują do urządzeń, tak jak pokazano to na rysunku
2.3. Kody wpisane w obydwu urządzeniach muszą być identyczne. Rozmiar
typowego kodu dobierania w pary nie przekracza 16 bajtów.
Rysunek
2.3.
Ogólny
diagram
sekwencji
dla
generowania
klucza
połączeniowego na podstawie kodu dobierania w pary
Urządzenia zgodne ze specyfikacją Bluetooth SIG w celu realizacji
mechanizmów uwierzytelniania wykorzystują specjalistyczne algorytmy (w
większości przypadków) bazujące na algorytmie o nazwie SAFER+. Generuje
on 128 bitowe klucze szyfrujące w oparciu o liczby pseudolosowe, kody
dobierania w pary oraz klucze połączeniowe2.
Ze względów bezpieczeństwa większość urządzeń z obsługą funkcji
Bluetooth wymaga używania kodu parowania. W zależności od konstrukcji i
2 w 2005 roku opracowano metodę łamania kodów PIN z wykorzystaniem
właściwości algorytmu SAFER+ (4 cyfrowy PIN rozszyfrowano w ok. 0,1
sekundy, zaś 7 cyfrowy w ok. 1,5 minuty).
Detekcja urządzeń. Część I
29
wykorzystywanego oprogramowania, urządzenia Bluetooth można dobierać w
pary wykorzystując następujące metody:
• każdorazowo uzgadniane pomiędzy urządzeniami kody,
• porównanie (przynajmniej) sześciocyfrowych liczb generowanych przez
specjalnie dedykowany algorytm (ang. Numeric Comparison),
• dane OOB (ang. Out-of-Band). OOB to specjalnie zestawiany kanał
komunikacyjny pozwalający m.in. na przekazywanie kluczowych danych z
wykorzystaniem określonego protokołu pakietowego. Pakiety OOB
zazwyczaj umieszczane są w oddzielnym buforze i wysyłane zawsze w
pierwszej kolejności. Często do tego buforu nie ma dostępu ani system
operacyjny, ani żaden działający pod jego nadzorem program, z wyjątkiem
uprzywilejowanej aplikacji zestawiającej połączenie OOB,
• w przypadku urządzeń nie zaopatrzonych w wyświetlacz danych (np.
klawiatura, mysz) można posłużyć się zdefiniowanym dla urządzenia
unikalnym
kluczem
(ang.
passkey).
Jest
to
przykład
tzw.
„jednokierunkowego dobierania w pary”.
2.2. Podstawowe funkcje
Obecny podrozdział zawiera opis podstawowych funkcji SDK API Windows
służących do implementacji procedur wyszukiwania urządzeń pozostających w
zasięgu lokalnego odbiornika radiowego Bluetooth. Zostaną w nim
przedstawione zagadnienia związane z implementacją funkcji API Windows