Odbiorcy: Inspektorzy ds. zgodności, kierownicy oprogramowania wbudowanego oraz menedżerowie produktu OEM, którzy muszą wyjaśnić kupującemu, dlaczego pióro do czytania za 4,20 USD przeprowadza wymianę kluczy ECDH P-256 podczas pierwszego parowania, co to oznacza dla COPPA, GDPR-K i PIPL oraz jak wybrać między Just Works, Numeric Comparison, Passkey Entry i Out-of-Band dla danego rynku.
Model parowania Bluetooth w piórze do czytania to jedno z niewielu miejsc, w których tania zabawka konsumencka i prymityw bezpieczeństwa klasy terminala płatniczego dzielą ten sam krzem. Od stosu firmware 3.3.1 modeli Q6/Q8 po stos firmware 3.1.2 modelu F8, każda wysyłka ODM od 2023 r. (ponad 47 000 sztuk, 47 krajów) wykonuje wymianę kluczy ECDH P-256 przy pierwszym bondowaniu. Zrobiliśmy to, ponieważ alternatywa — Legacy Just Works bez ochrony przed atakiem Man-in-the-Middle — jest trybem awarii, który Bluetooth SIG celowo zaprojektował SSP, aby usunąć, oraz ponieważ jest to jedyna wiarygodna odpowiedź dla CISO kupującego, który uważnie czyta zapisy COPPA, GDPR-K i PIPL.
Ten artykuł wyjaśnia dokładnie, co SSP robi w piórze do czytania, co zamiast tego robi LE Legacy, co LE Secure Connections dodaje ponad SSP oraz jak dostrajamy wygodę użytkowania, aby 6-latek w klasie czy 80-latek w domu mogli sparować urządzenie bez tarcia.
1. Trzy generacje parowania w piórze do czytania
| Generacja | Specyfikacja | Wymiana kluczy | Stosowane w |
|---|---|---|---|
| Legacy | BT 2.0 (pre-SSP) | E1/E21 (SAFER+) | Nie jest wysyłane |
| SSP | BT 2.1 / 4.0 | E1/E21 (4-cyfrowy PIN lub Just Works) | K7/KF1 firmware 1.9.5 |
| LE Secure Connections | BT 4.2 / 5.x | ECDH P-256 | F8, L5, Q6/Q8, T2, Y6 |
Wszystkie jedenaście aktualnych SKU są domyślnie wysyłane z LE Secure Connections jako trybem parowania. K7/KF1 firmware 1.9.5 zachowuje awaryjny powrót do SSP dla starszych hubów klasowych, które nadal działają z donglami BT 4.0, ale rekomendujemy klientom migrację hubów do dongli 5.0+ przy MOQ 1 000, aby wycofać ścieżkę awaryjną.
2. Co SSP faktycznie robi
SSP zastępuje starszą wymianę kluczy opartą na PIN-ie jednym z czterech modeli asocjacji:
| Model | Działanie użytkownika | Poziom bezpieczeństwa | Stosowane w |
|---|---|---|---|
| Just Works | Naciśnij „Pair” | Brak ochrony MITM | Domyślnie przy ponownym parowaniu |
| Numeric Comparison | Porównaj 6-cyfrowy numer, naciśnij Tak | MITM przez potwierdzenie użytkownika | Domyślnie przy pierwszym parowaniu |
| Passkey Entry | Wprowadź 6-cyfrowy passkey | MITM przez współdzielony sekret | Tryb administratora klasy |
| Out-of-Band | Stuknięcie NFC | MITM przez kanał OOB | Przyszłe modele NFC |
Pióro do czytania domyślnie używa Numeric Comparison przy pierwszym bondowaniu. Pióro wyświetla 6-cyfrowy numer na opcjonalnym OLED (lub odczytuje go przez audio w modelach bez wyświetlacza, takich jak P2). Aplikacja hosta pokazuje ten sam numer. Użytkownik potwierdza zgodność. 6-cyfrowy kod ma 10^6 = 1 000 000 możliwych wartości; prawdopodobieństwo prawidłowego odgadnięcia przez MITM wynosi 10^-6.
Wymiana kluczy ECDH P-256 stojąca za tym jest tym samym prymitywem używanym przez zestawy TLS 1.3 ECDHE_ECDSA. Radio pióra (Nordic nRF52840 lub Realtek RTL8763E) ma akcelerator sprzętowy, który wykonuje mnożenie skalarne P-256 w ~7,2 ms.
3. Maszyna stanów parowania
Maszyna stanów parowania pióra do czytania jest zgodna z Bluetooth Core Specification v5.4, Volume 3, Part H, Section 2.3.5:
| Stan | Rola pióra | Przejście przy |
|---|---|---|
| Standby | Advertiser | Peer łączy się |
| Advertising | Advertiser | Peer wysyła CONNECT |
| Initiating | Initiator (rzadko) | Używane, gdy pióro jest stroną hosta |
| Połączenie nawiązane | Dowolna | Otrzymano żądanie parowania |
| Wymiana funkcji parowania | Responder | Wysłano odpowiedź parowania |
| Generowanie klucza | Dowolna | Wartość potwierdzająca zweryfikowana |
| Dystrybucja kluczy | Dowolna | LTK + IRK + CSRK dostarczone |
| Sparowano | Dowolna | Nowe parowanie zapisane w pamięci NV |
Rysik przebywa 240 ms w stanie „Połączenie nawiązane” (minimalny interwał połączenia + opóźnienie slave specyfikacji BLE 5.0), a następnie przechodzi do wymiany funkcji. Pełny proces parowania Numeric Comparison kończy się w 1,4 s na firmware 3.3.1 Q6/Q8 oraz w 1,8 s na firmware 3.1.2 F8. Tryb Just Works kończy się w 0,9 s.
4. Legacy Just Works vs LE Secure Connections Just Works
Częstym błędem jest założenie, że „Just Works” jest zawsze słaby. To nieprawda. Istnieją dwa bardzo różne tryby „Just Works”:
| Tryb | Specyfikacja | ECDH? | Ochrona przed MITM |
|---|---|---|---|
| Legacy Just Works | BT 4.0/4.1 SSP | Nie | Brak — podsłuchujący może przechwycić |
| LE Secure Connections Just Works | BT 4.2+ | Tak (P-256) | Podsłuchujący nie może odszyfrować, ale aktywny MITM nadal może wstrzyknąć |
Kupujący, który słyszy „Just Works” i wpada w panikę, myśli o trybie legacy. W aktualnym rysiku do czytania tryb Just Works nadal wykorzystuje ECDH, więc łącze radiowe jest szyfrowane przed pasywnym podsłuchem. Aktywny MITM (gdzie atakujący znajduje się na ścieżce radiowej i może przechwycić obie strony) nie jest chroniony w trybie Just Works, dlatego jako domyślne ustawienie pierwszego parowania dla modeli T2/Y6 stosujemy Numeric Comparison.
5. Implementacja po stronie rysika
W firmware 3.3.1 Q6/Q8 stos SSP jest zbudowany na bibliotece radiowej SoftDevice (Nordic nRF52840 SDK 17.1.0). Rysik przechowuje:
| Element | Rozmiar | Miejsce zapisu | Retencja |
|---|---|---|---|
| Klucz długoterminowy (LTK) | 16 bajtów | Strona flash 7, slot na peera | Do usunięcia parowania |
| Klucz rozwiązywania tożsamości (IRK) | 16 bajtów | Ten sam slot | Do usunięcia parowania |
| Klucz rozwiązywania podpisu połączenia (CSRK) | 16 bajtów | Ten sam slot | Do usunięcia parowania |
| IRK peera | 16 bajtów | Ten sam slot | Do usunięcia parowania |
| BD_ADDR peera | 6 bajtów | Ten sam slot | Do usunięcia parowania |
Rysik obsługuje do 8 sparowanych peerów (limit 8 slotów wynika z naszej 32 KB tabeli parowań we flashu; moglibyśmy rozszerzyć do 32 slotów, ale kosztem zużycia NV). Gdy slot 8 jest zajęty i dziewiąty peer próbuje się sparować, rysik nadpisuje najstarszy slot. Zdarzenie to logujemy w strumieniu telemetrycznym QA (TC-077), aby administrator IT szkoły mógł wykryć „zbyt częstą zmianę właściciela rysika”.
6. Funkcja prywatności: LE Privacy 1.2
Każdy rysik do czytania wyprodukowany od 2023 roku jest dostarczany z włączoną funkcją LE Privacy 1.2. Oznacza to, że rysik rozgłasza adres Resolvable Private Address (RPA), który domyślnie zmienia się co 15 minut. Jedyną rzeczą, która może rozwiązać RPA z powrotem do prawdziwej tożsamości rysika, jest IRK udostępniony podczas parowania.
| Ustawienie prywatności | Interwał rotacji adresu | Koszt baterii |
|---|---|---|
| Wyłączone (adres publiczny) | Nigdy | 0 |
| LE Privacy 1.2 | 15 min | +0,4% dziennie |
| LE Privacy 1.2 (agresywna) | 1 min | +5,6% dziennie |
Domyślnie wysyłamy ustawienie 15-minutowe, ponieważ koszt baterii 5,6% przy agresywnej rotacji jest znaczący dla modelu P2 z akumulatorem 500 mAh, ale nieistotny dla modelu T2 z akumulatorem 2500 mAh. W przypadku wdrożeń szkolnych działających cały dzień domyślnym ustawieniem T2 jest rotacja co 15 minut; domyślnym ustawieniem P2 jest rotacja wyłączona (ponieważ jest sprzedawany jako pióro domowe dla jednego użytkownika).
7. Porównanie numeryczne na piórze bez wyświetlacza (P2)
Model P2 nie ma wyświetlacza OLED ani matrycy LED, a jedynie pojedynczą trójkolorową diodę LED. Jak realizujemy porównanie numeryczne?
Odpowiedź brzmi: wykorzystujemy dźwięk. P2 posiada głośnik o mocy 1 W. Po wprowadzeniu trybu porównania numerycznego P2 odtwarza 6-cyfrowy kod jako wolno, miarowo odtwarzany ciąg cyfr w języku angielskim ("three… seven… one… zero… four… two") w tempie 0,6 s na cyfrę. Łączny czas trwania dźwięku wynosi 3,6 s. Aplikacja hosta wyświetla ten sam kod na ekranie; użytkownik potwierdza zgodność.
Dla zapewnienia dostępności kod dźwiękowy jest odtwarzany w aktualnie wybranym języku użytkownika (np. mandaryński, hiszpański, arabski). Dostarczamy kody dźwiękowe w 12 językach. Oprogramowanie sprzętowe P2 w wersji 2.0.3 posiada dedykowany generator kodów dźwiękowych, który zajmuje 4 KB pamięci flash.
8. Dlaczego OOB nie jest jeszcze dostępne w piórze do czytania
Ocenialiśmy parowanie Out-of-Band (OOB) przez NFC dla modelu z 2024 roku, ale narzut kosztowy BOM wynosił 1,40 USD na pióro (kontroler NFC + antena + element bezpieczny), co podnosiło cenę ODM z 4,20 USD do 5,60 USD i przekraczało typowy przedział marży dla kanału edukacyjnego K7. Wstrzymaliśmy OOB do momentu, gdy cena kontrolera NFC spadnie poniżej 0,40 USD. Do tego czasu rekomendowaną ścieżką jest porównanie numeryczne + Just Works.
9. Tryb Passkey do wdrożenia w klasie
W przypadku programu szkolnego obejmującego 12 000 sztuk, administrator IT szkoły chce jednorazowej konfiguracji bez dotykania każdego pióra. Tryb Passkey Entry odpowiada na tę potrzebę:
- Administrator otwiera aplikację administracji szkolnej.
- Aplikacja generuje 6-cyfrowy passkey, np. 482917.
- Administrator wprowadza passkey do każdego pióra przez interfejs dotykowy.
- Pióro paruje się z aplikacją szkolną, używając tego passkey jako sekretu MITM.
Chroni to przed sytuacją, gdy uczeń przynosi telefon i udaje aplikację szkolną. Passkey jest unikalny dla każdej sesji. W ramach wdrożenia 12 000 piór, które dostarczyliśmy do dystryktu w kraju Zatoki Perskiej w 2024 roku, użyliśmy trybu Passkey Entry z jednym rotującym passkey i 4 tabletami administratora, kończąc konfigurację w 8 dni.
10. Implikacje związane ze zgodnością z przepisami
Nabywca z Kalifornii zapyta, czy SSP spełnia klauzulę COPPA dotyczącą "rozsądnego bezpieczeństwa". Odpowiedź brzmi: tak, ponieważ SSP wykorzystuje ECDH P-256, który znajduje się na liście zatwierdzonych algorytmów FIPS 186-4. Nabywca z UE zapyta, czy SSP spełnia wymóg pseudonimizacji GDPR-K. Odpowiedź brzmi: tak, ponieważ rotujący RPA jest pseudonimowym identyfikatorem. Nabywca z Chin zapyta, czy SSP spełnia artykuł 51 PIPL (pseudonimizacja ChRL). Odpowiedź jest taka sama, z dodatkową uwagą, że nasze postępowanie z IRK jest zgodne z normą GB/T 35273-2020 dotyczącą deidentyfikacji danych osobowych.
| Regulacja | Wymóg | Pokrycie SSP |
|---|---|---|
| COPPA (US) | Rozsądne bezpieczeństwo danych dzieci | Tak (ECDH P-256) |
| GDPR-K (UE) | Pseudonimizacja | Tak (rotacja RPA) |
| PIPL (CN) | Pseudonimizacja | Tak (RPA + GB/T 35273) |
| LGPD (BR) | Bezpieczeństwo i pseudonimizacja | Tak |
| PDPA (SG/MY) | Bezpieczeństwo i pseudonimizacja | Tak |
| APPI (JP) | Anonimizacja | Częściowe — zależy od postępowania z kluczem RPA |
| DPDPA (IN) | Zabezpieczenia bezpieczeństwa | Tak (prymityw zatwierdzony przez FIPS) |
W przypadku wdrożeń szkolnych dostarczamy dodatkowy dokument zgodności: "Białą księgę bezpieczeństwa parowania Bluetooth", 38 stron, ostatnia aktualizacja 2026-04. Jest on dostępny dla kwalifikowanych klientów ODM w ramach NDA.
11. Model zagrożeń i czego SSP nie obejmuje
| Zagrożenie | Objęte przez SSP? | Środek zaradczy |
|---|---|---|
| Pasywne podsłuchiwanie | Tak | Szyfrowanie łącza AES-CCM z LTK |
| Active MITM (Just Works) | Nie | Użyj porównania numerycznego lub klucza Passkey |
| Skompromitowane urządzenie równorzędne | Nie | Wymagane uwierzytelnianie w warstwie aplikacji |
| Skradziony długopis | Częściowe | Powiązane hosty można wyczyścić; długopis można przywrócić do ustawień fabrycznych przez przytrzymanie przycisku przez 10 s |
| Atak powtórzeniowy podczas parowania | Tak | ECDH generuje świeże klucze sesji dla każdego powiązania |
| Phishing użytkownika | Nie | Przeszkolić użytkowników w porównywaniu kodów |
| Poziomowanie RF | Nie | Akceptowalne ryzyko dla zabawki konsumenckiej |
Udokumentowaliśmy to wyraźnie w instrukcji obsługi oraz w szkoleniowej prezentacji po stronie marki dla dystrybutorów.
12. Wydajność i bateria
Wymiana kluczy ECDH P-256 zajmuje 7,2 ms na nRF52840 oraz 8,4 ms na RTL8763E. Czas wyświetlania porównania numerycznego to 30 s aktywności LED przy poborze ~3 mA. Zapis powiązania do pamięci flash zajmuje 12 ms i wykorzystuje jeden cykl NV. W całym okresie użytkowania długopisu (300 powiązań/rok przez 5 lat = 1500 powiązań) stanowi to 0,0004% budżetu wytrzymałości pamięci flash (10 000 cykli).
13. Jak to łączy się z pozostałymi artykułami
TC-059 należy do klastra łączności. TC-057/TC-058 definiują warstwę HID. TC-060 dokumentuje usługi GATT, które pojawiają się po parowaniu. TC-061 wyjaśnia przepływ powiadomień po ustanowieniu powiązania. TC-062 obejmuje ścieżkę konfiguracji Wi-Fi AP, współistniejącą z BLE dla L5 i Y6. TC-063 wyjaśnia, jak długopis reklamuje się w sieci LAN po uzyskaniu Wi-Fi. TC-064 obejmuje CoAP — protokół działający przez połączenie LAN.
15. Powiązane lektury
- Reading Pen USB HID i HID over GATT
- Reading Pen — deskryptor raportu HID i strona Usage Page
- Reading Pen — Projektowanie UUID charakterystyk usług BLE
- Reading Pen — serwer GATT i mechanizm powiadomień
- Reading Pen — BLE Mesh i mechanizm parowania
- Reading Pen — Bluetooth 5.0 vs 5.2 vs 5.3
- Reading Pen — Kryptografia i TrustZone
- Reading Pen — Pinowanie certyfikatów i ich rotacja