Public țintă: Ofițeri de conformitate, ingineri de firmware încorporat și manageri de produs OEM care trebuie să explice unui cumpărător de ce un icograf de 4,20 USD efectuează un schimb de chei ECDH P-256 la prima asociere, ce înseamnă acest lucru pentru COPPA, GDPR-K și PIPL și cum să aleagă între Just Works, Numeric Comparison, Passkey Entry și Out-of-Band pentru o anumită piață.
Modelul de asociere Bluetooth de pe un icograf este unul dintre puținele locuri în care o jucărie ieftină de consum și o primitivă de securitate la nivel de terminal de plată împart același siliciu. De la stiva de firmware 3.3.1 a Q6/Q8 până la stiva de firmware 3.1.2 a F8, fiecare livrare ODM de la începutul (peste 47.000 de unități, 47 de țări) efectuează un schimb de chei ECDH P-256 la prima împerechere. Am făcut acest lucru deoarece alternativa — Legacy Just Works fără protecție Man-in-the-Middle — este modul de eșec pe care Bluetooth SIG a proiectat special SSP să-l înlijă, și deoarece este singurul răspuns credibil la CISO-ul unui cumpărător care citește cu atenție textul COPPA, GDPR-K și PIPL.
Acest articol explică exact ce face SSP pe icograf, ce face în schimb LE Legacy, ce adaugă LE Secure Connections peste SSP și cum reglăm experiența utilizatorului astfel încât un copil de 6 ani într-o clasă sau un adult de 80 de ani acasă să se poată asocia fără fricțiuni.
1. Cele trei generații de asociere pe un icograf
| Generație | Specificație | Schimb de chei | Utilizat pe |
|---|---|---|---|
| Legacy | BT 2.0 (pre-SSP) | E1/E21 (SAFER+) | Nelivrat |
| SSP | BT 2.1 / 4.0 | E1/E21 (PIN din 4 cifre sau o just works) | Firmware K7/KF1 1.9.5 |
| LE Secure Connections | BT 4.2 / 5.x | ECDH P-256 | F8, L5, Q6/Q8, T2, Y6 |
Toate cele unsprezece SKU-uri actuale sunt livrate cu LE Secure Connections ca mod implicit de asociere. Firmware-ul K7/KF1 1.9.5 păstrează fallback-ul SSP pentru hub-urile vechi din clase care încă folosesc dongle-uri BT 4.0, dar recomandăm clienților să migreze hub-urile la un dongle de 5.0+ la MOQ 1.000 pentru a elimina calea de fallback.
2. Ce face SSP de fapt
SSP înlocuiește schimbul de chei bazat pe PIN-ul legacy cu unul dintre cele patru modele de asociere:
| Model | Acțiunea utilizatorului | Nivel de securitate | Utilizat pe |
|---|---|---|---|
| Just Works | Atingeți „Pair" | Fără protecție MITM | Implicit pentru re-asociere |
| Numeric Comparison | Comparați numărul din 6 cifre, atingeți Da | MITM prin confirmarea utilizatorului | Implicit pentru prima asociere |
| Passkey Entry | Introduceți passkey din 6 cifre | MITM prin secret partajat | Mod admin clasă |
| Out-of-Band | Atingere NFC | MITM prin canal OOB | Modele NFC viitoare |
Icograful folosește implicit Just Works la prima împerechere. Icograful afișează un număr din 6 cifre pe OLED-ul opțional (sau îl redă prin audio la modelele fără afișaj, ca P2). Aplicația gazdă afișează același număr. Utilizatorul confirmă egalitatea. Un cod din 6 cifre are 10^6 = 1.000.000 de valori posibile; probabilitatea ca un MITM să ghicească corect este 10^-6.
Schimbul de chei ECDH P-256 din spatele acestui lucru este aceeași primitivă folosită de suitele TLS 1.3 ECDHE_ECDSA. Radioul icografului (Nordic nRF52840 sau Realtek RTL8763E) are un accelerator hardware care efectuează înmulțirea scalară P-256 în ~7,2 ms.
3. Mașina de stări a asocierii
Mașina de stări a asocierii icografului urmează Bluetooth Core Specification v5.4, Volumul 3, Partea H, Secțiunea 2.3.5:
| Stare | Rolul icografului | Tranziție la |
|---|---|---|
| Standby | Advertiser | Peer se conectează |
| Advertising | Advertiser | Peer trimite CONNECT |
| Initiating | Initiator (rar) | Folosit când icograful este partea gazdă |
| Conexiune stabilită | Oricare | Cerere de asociere primită |
| Schimb de funcții de asociere | Initiator | Răspuns de asociere trimis |
| Generarea cheii | Oricare | Valoare de confirmare verificată |
| Distribuirea cheii | Oricare | LTK + IRK + CSRK livrate |
| Asociat | Oricare | Asociere nouă stocată în NV |
Stiloul petrece 240 ms în starea „Conexiune stabilită” (intervalul minim de conexiune + latența slave conform specificației BLE 5.0), apoi trece la Schimbul de funcții. Fluxul complet de asociere prin Comparare numerică se finalizează în 1,4 s pe firmware-ul 3.3.1 al Q6\/Q8 și în 1,8 s pe firmware-ul 3.1.2 al F8. Just Works se finalizează în 0,9 s.
4. Legacy Just Works vs LE Secure Connections Just Works
O greșeală frecventă este să presupunem că „Just Works” este întotdeauna slab. Nu este. Există două moduri „Just Works” foarte diferite:
| Mod | Specificație | ECDH? | Protecție MITM |
|---|---|---|---|
| Legacy Just Works | BT 4.0/4.1 SSP | Nu | Niciuna — un interceptor poate asculta |
| LE Secure Connections Just Works | BT 4.2+ | Da (P-256) | Interceptorul nu poate decripta, dar un MITM activ poate în continuare să injecteze |
Un cumpărător care aude „Just Works” și intră în panică se gândește la modul legacy. Pe un stilou de citire actual, Just Works folosește în continuare ECDH, astfel că legătura radio este criptată împotriva interceptorilor pasivi. MITM activ (în care atacatorul se află în calea radio și poate intercepta ambele părți) nu este protejat în Just Works, motiv pentru care livrăm Compararea numerică ca implicit la prima asociere pentru modelele T2\/Y6.
5. Implementarea pe partea de stilou
Pe firmware-ul 3.3.1 al Q6\/Q8, stiva SSP este construită peste biblioteca radio SoftDevice (Nordic nRF52840 SDK 17.1.0). Stiloul stochează:
| Element | Dimensiune | Stocat în | Reținere |
|---|---|---|---|
| Long Term Key (LTK) | 16 octeți | Pagina flash 7, slot per peer | Până la dezasociere |
| Identity Resolving Key (IRK) | 16 octeți | Același slot | Până la dezasociere |
| Connection Signature Resolving Key (CSRK) | 16 octeți | Același slot | Până la dezasociere |
| Peer IRK | 16 octeți | Același slot | Până la dezasociere |
| Peer BD_ADDR | 6 octeți | Același slot | Până la dezasociere |
Stiloul acceptă până la 8 peer-i asociați (limita de 8 sloturi este impusă de tabela noastră de asocieri din flash de 32 KB; am putea extinde la 32 de sloturi, dar cu costul uzurii NV). Când slotul 8 este plin și un al 9-lea peer încearcă să se asocieze, stiloul suprascrie cel mai vechi slot. Înregistrăm acest eveniment în fluxul de telemetrie QA (TC-077), astfel încât un administrator IT școlar să poată detecta „schimbarea prea frecventă a stiloului”.
6. Funcția de confidențialitate: LE Privacy 1.2
Fiecare stilou de citire fabricat din 2023 încoace este livrat cu LE Privacy 1.2 activat. Aceasta înseamnă că stiloul se anunță cu o Resolvable Private Address (RPA) care se rotește la fiecare 15 minute în mod implicit. IRK-ul partajat în timpul asocierii este singurul lucru care poate rezolva RPA înapoi la identitatea reală a stiloului.
| Setare de confidențialitate | Interval de rotație a adresei | Consum baterie |
|---|---|---|
| Dezactivat (adresă publică) | Niciodată | 0 |
| LE Privacy 1.2 | 15 min | +0.4% pe zi |
| LE Privacy 1.2 (agresiv) | 1 min | +5.6% pe zi |
Livrăm setarea implicită de 15 minute deoarece costul de baterie de 5.6% al rotației agresive este semnificativ pe un P2 de 500 mAh, dar neglijabil pe un T2 de 2500 mAh. Pentru implementările școlare care funcționează toată ziua, setarea implicită a T2 este rotația de 15 minute; setarea implicită a P2 este rotația dezactivată (deoarece este comercializat ca un stilou de uz casnic pentru un singur utilizator).
7. Comparație numerică pe un stilou fără afișaj (P2)
P2 nu are OLED și nici matrice LED, ci doar un singur LED tricolor. Cum realizăm Comparația numerică?
Răspunsul este că folosim audio. P2 are un difuzor de 1 W. La intrarea în Comparația numerică, P2 redă codul din 6 cifre ca o succesiune lentă și ritmată de cifre în engleză ("three… seven… one… zero… four… two"), la 0,6 s per cifră. Durata totală a sunetului este de 3,6 s. Aplicația gazdă afișează același cod pe ecran; utilizatorul confirmă potrivirea.
Pentru accesibilitate, codul audio este redat în limba selectată în prezent de utilizator (de ex., mandarină, spaniolă, arabă). Livrăm coduri audio în 12 limbi. Firmware-ul P2 2.0.3 dispune de un generator dedicat de coduri audio care ocupă 4 KB de memorie flash.
8. De ce OOB nu este încă disponibil pe un stilou de citire
Am evaluat asocierea Out-of-Band (OOB) prin NFC pentru un model din 2024, însă costul suplimentar de BOM a fost de 1,40 $ per stilou (controler NFC + antenă + element securizat), ceea ce ridică prețul ODM de la 4,20 $ la 5,60 $ și depășește marja tipică pentru canalul educațional K7. Am suspendat implementarea OOB până când prețul controlerului NFC va scădea sub 0,40 $. Până atunci, calea recomandată este Comparația numerică + Just Works.
9. Modul Passkey pentru implementarea în clase
Pentru un program școlar de 12.000 de unități, administratorul IT al școlii dorește provisionare unică, fără a interveni asupra fiecărui stilou. Modul Passkey Entry răspunde acestei nevoi:
- Administratorul deschide aplicația de administrare a școlii.
- Aplicația generează un passkey din 6 cifre, de ex., 482917.
- Administratorul introduce passkey-ul în fiecare stilou prin intermediul interfeței tactile.
- Stiloul se asociază cu aplicația școlii utilizând acel passkey drept secret MITM.
Aceasta protejează împotriva unui elev care aduce un telefon și pretinde că este aplicația școlii. Passkey-ul este unic per sesiune. În cadrul implementării de 12.000 de stilouri livrate unui district dintr-un stat din Golf în 2024, am utilizat Passkey Entry cu un singur passkey rotativ și 4 tablete de administrare, finalizând provisionarea în 8 zile.
10. Implicații de conformitate
Un cumpărător din California va întreba dacă SSP satisface cerința de "securitate rezonabilă" din COPPA. Răspunsul este da, deoarece SSP folosește ECDH P-256, care se află pe lista aprobată FIPS 186-4. Un cumpărător din UE va întreba dacă SSP satisface cerința de pseudonimizare din GDPR-K. Răspunsul este da, deoarece RPA rotativ este un identificator pseudonim. Un cumpărător din China va întreba dacă SSP satisface Articolul 51 din PIPL (pseudonimizare în PRC). Răspunsul este același, cu mențiunea suplimentară că gestionarea IRK respectă standardul GB/T 35273-2020 privind dezidentificarea informațiilor personale.
| Reglementare | Cerință | Acoperire SSP |
|---|---|---|
| COPPA (SUA) | Securitate rezonabilă pentru datele copiilor | Da (ECDH P-256) |
| GDPR-K (UE) | Pseudonimizare | Da (rotație RPA) |
| PIPL (CN) | Pseudonimizare | Da (RPA + GB/T 35273) |
| LGPD (BR) | Securitate și pseudonimizare | Da |
| PDPA (SG/MY) | Securitate și pseudonimizare | Da |
| APPI (JP) | Anonimizare | Parțial — depinde de gestionarea cheii RPA |
| DPDPA (IN) | Măsuri de securitate | Da (primitivă aprobată FIPS) |
Pentru implementările școlare, livrăm un document suplimentar de conformitate: "White Paper privind securitatea asocierii Bluetooth," 38 de pagini, ultima revizuire 2026-04. Este disponibil pentru clienții ODM calificați sub NDA.
11. Modelul de amenințare și ceea ce SSP nu acoperă
| Amenințare | Acoperită de SSP? | Mitigare |
|---|---|---|
| Interceptare pasivă | Da | Criptare AES-CCM a legăturii cu LTK |
| MITM activ (Just Works) | Nu | Utilizați compararea numerică sau Passkey |
| Dispozitiv peer compromis | Nu | Autentificare la nivel de aplicație necesară |
| Stilou furat | Parțial | Gazdele asociate pot fi șterse; stiloul poate fi resetat la setările din fabrică prin apăsarea butonului timp de 10 secunde |
| Atac de reluare la împerechere | Da | ECDH generează chei de sesiune noi la fiecare asociere |
| Phishing adresat utilizatorului | Nu | Instruiește utilizatorii să compare codurile |
| Amprentare RF | Nu | Risc acceptabil pentru o jucărie de consum |
Documentăm aceste aspecte în mod explicit în manualul de utilizare și în setul de instruire pentru distribuitori.
12. Performanță și baterie
Schimbul de chei ECDH P-256 durează 7,2 ms pe nRF52840 și 8,4 ms pe RTL8763E. Timpul de afișare pentru compararea numerică este de 30 s de activitate LED, consumând ~3 mA. Scrierea asocierii în flash durează 12 ms și consumă un ciclu NV. Pe durata de viață a unui stilou (300 de asocieri/an timp de 5 ani = 1.500 de asocieri), aceasta reprezintă 0,0004% din bugetul de anduranță al memoriei flash (10.000 de cicluri).
13. Cum se conectează acest lucru la celelalte articole
TC-059 face parte din clusterul de conectivitate. TC-057/TC-058 definesc stratul HID. TC-060 documentează serviciile GATT care apar după împerechere. TC-061 explică fluxul de notificări odată ce asocierea este activă. TC-062 acoperă calea de provizionare Wi-Fi AP care coexistă cu BLE pentru L5 și Y6. TC-063 explică modul în care stiloul se anunță în rețeaua LAN odată ce are Wi-Fi. TC-064 acoperă CoAP, care este protocolul ce rulează peste conexiunea LAN.
15. Lecturi conexe
- Stilou de citire USB HID și HID over GATT
- Descriptor raport HID și Usage Page pentru stiloul de citire
- Proiectare UUID caracteristici serviciu BLE pentru stiloul de citire
- Server GATT și mecanism de notificare pentru stiloul de citire
- Mecanism BLE Mesh și de împerechere pentru stiloul de citire
- Stilou de citire Bluetooth 5.0 vs 5.2 vs 5.3
- Criptografie și TrustZone pentru stiloul de citire
- Certificate Pinning și rotație pentru stiloul de citire