Bonding: ce este, procesul și securitatea împerecheării BLE

Autor: IT Sectr Publicat: 2026-07-16 Timp de citire: 10 min

Bonding (împerechere) în Bluetooth Low Energy este procesul de creare a unei conexiuni securizate permanente între două dispozitive cu păstrarea cheilor criptografice în memoria nevolatilă. După bonding, dispozitivele pot restabili automat conexiunea criptată la reconectare fără reintroducerea PIN-ului sau confirmarea utilizatorului. Conform Bluetooth SIG Core Specification v5.4 (2025), mecanismul bonding este obligatoriu pentru dispozitivele care necesită reconectare automată — căști, trackere de fitness, senzori medicali și accesorii IoT.

Principalele puncte

  • Bonding — păstrarea pe termen lung a cheilor de criptare între dispozitivele BLE după încheierea sesiunii.
  • Spre deosebire de pairing, bonding permite restabilirea automată a conexiunii criptate fără confirmare repetată.
  • Procesul de bonding include schimbul de chei LTK, IRK, CSRK și stocarea lor în memoria ambelor dispozitive.
  • iOS gestionează dispozitivele bonded prin Settings > Bluetooth cu posibilitatea de a șterge cheile salvate.
  • Pentru Android, gestionarea bonding se face prin BluetoothAdapter și API getBondedDevices().

Ce este Bonding în BLE?

Bonding — este o extensie a procesului de pairing în Bluetooth Low Energy, în care dispozitivele salvează cheile de criptare pentru conexiunile ulterioare. Standardul BLE definește trei moduri de securitate: Security Mode 1 (criptare fără autentificare), Security Mode 2 (semnarea datelor fără criptare) și Security Mode 3 (criptare cu autentificare). Bonding este relevant pentru modurile cu criptare care necesită conexiuni multiple fără renegocierea cheilor.

De ce este necesar Bonding

Scopul principal al bondingului este restabilirea automată a conexiunii criptate la reconectarea dispozitivelor. Când utilizatorul scoate căștile din carcasă și le pune, bonding asigură conectarea instantanee la smartphone fără a fi nevoie să selecteze din nou dispozitivul în meniul Bluetooth. Conform Apple Bluetooth Design Guidelines (2025), dispozitivele bonded trebuie să se conecteze în cel mult 2 secunde de la detectare.

Ce date se salvează în timpul Bonding

În timpul bondingului, fiecare dispozitiv salvează un set de materiale criptografice: Long Term Key (LTK) pentru criptarea conexiunii, Identity Resolving Key (IRK) pentru rezolvarea adreselor aleatoare, Connection Signature Resolving Key (CSRK) pentru verificarea semnăturilor datelor. LTK — cheia principală de 128 de biți, generată în procesul de pairing și utilizată pentru toate sesiunile criptate ulterioare.

CheieLungimeScop
LTK128 bițiCriptarea datelor după reconectare
IRK128 bițiRezolvarea adreselor private aleatoare (RPA)
CSRK128 bițiSemnarea și verificarea autenticității datelor

Bonding vs Pairing: care este diferența

Pairing — este acordul temporar al cheilor pentru criptarea sesiunii curente de comunicare. Când conexiunea se încheie, cheile de criptare sunt șterse, iar la următoarea conectare este necesar un proces repetat de pairing. Bonding include toate etapele pairingului, dar în plus salvează cheile pentru sesiunile ulterioare. Practic toate dispozitivele Bluetooth de consum (căști, difuzoare, ceasuri) folosesc bonding, deoarece fără el fiecare conectare ar necesita reintroducerea PIN-ului.

Trei faze ale Pairing și Bonding

Procesul de pairing conform specificației BLE constă din trei faze. Faza 1 — schimbul de capacități ale dispozitivelor (IO capabilities, suport pentru autentificare). Faza 2 — generarea și schimbul Short Term Key (STK) sau LTK, în funcție de metoda de conectare. Faza 3 — transportul cheilor: schimbul LTK, IRK, CSRK între dispozitive. Dacă dispozitivele au salvat cheile după Faza 3 — acesta este bonding. Dacă nu — este doar pairing.

ParametruPairingBonding
Stocarea cheilorNu se salveazăSe salvează în NVRAM
Conectare automatăNuDa
Reintroducerea PINNecesarăNu este necesară
UtilizareConexiuni sporadiceDispozitive permanente

Cum funcționează procesul de Bonding

Procesul de bonding este inițiat după finalizarea cu succes a pairingului, când unul dintre dispozitive trimite o cerere de salvare a cheilor. În BLE, Central (de obicei smartphone) și Peripheral (dispozitiv purtabil) fac schimb de chei printr-un canal securizat stabilit în Faza 2. După schimbul reușit de chei, fiecare dispozitiv le salvează în memoria nevolatilă împreună cu adresa MAC sau Identity Address a partenerului.

Stocarea cheilor pe partea Central

Pe partea Central (iOS/Android), cheile sunt stocate în depozitul de sistem Bluetooth. iOS utilizează stiva de sistem Core Bluetooth cu gestionare automată a bondingului: la prima conectare, cheile sunt salvate în NVRAM-ul dispozitivului, iar conexiunile ulterioare la același Peripheral au loc automat. Dezvoltatorul nu gestionează cheile direct — stiva de sistem Core Bluetooth procesează bondingul automat la stabilirea conexiunii cu un dispozitiv care suportă salvarea cheilor.

Restabilirea conexiunii prin Bonding

La reconectare, Peripheral trimite pachete de publicitate care conțin fie adresa sa publică, fie Resolvable Private Address (RPA). Central primește pachetul, potrivește adresa cu dispozitivele bonded salvate și, dacă găsește o potrivire, inițiază restabilirea sesiunii folosind LTK-ul salvat. Dacă LTK se potrivește — conexiunea criptată se stabilește fără un pairing repetat.

Metode de autentificare în Bonding

Specificația BLE definește mai multe metode de autentificare care influențează nivelul de securitate al bondingului. Alegerea metodei depinde de capacitățile IO ale dispozitivelor — prezența ecranului, tastaturii, posibilitatea de confirmare a comparației numerice. Bondingul sigur necesită utilizarea unei metode nu mai mici de Just Works pentru aplicațiile necritice și Numeric Comparison sau Passkey Entry pentru sarcinile care necesită protecție împotriva atacurilor Man-in-the-Middle.

Just Works

Just Works — metodă fără autentificare, utilizată când unul dintre dispozitive nu are ecran sau tastatură. Cheile de criptare sunt transmise fără verificarea autenticității celui de-al doilea dispozitiv — temperatură, puls). Just Works este vulnerabil la atacurile MITM, de aceea se aplică doar dispozitivelor unde compromiterea datelor nu reprezintă o amenințare.

Numeric Comparison

Numeric Comparison — metodă de autentificare în care ambele dispozitive afișează un număr de șase cifre, iar utilizatorul trebuie să confirme potrivirea. Această metodă asigură protecție împotriva atacurilor MITM și este recomandată pentru dispozitivele cu ecran — ceasuri inteligente, trackere de fitness, telecomenzi. După confirmare, bondingul se salvează cu nivelul maxim de încredere.

Passkey Entry

Passkey Entry necesită introducerea unui cod PIN de șase cifre pe unul dintre dispozitive. De obicei, codul este generat de un dispozitiv și afișat pe acesta, iar utilizatorul îl introduce pe cel de-al doilea. Metoda se aplică dispozitivelor medicale și încuietorilor IoT unde este necesar un nivel ridicat de securitate, dar unul dintre dispozitive nu are ecran pentru Numeric Comparison.

Gestionarea dispozitivelor bonded în iOS și Android

Gestionarea bondingului — procesul de vizualizare, ștergere și întreținere a cheilor salvate ale dispozitivelor împărcheate. În dezvoltarea mobilă, este importantă gestionarea corectă a stărilor dispozitivelor bonded, în special la resetarea setărilor dispozitivului periferic sau înlocuirea firmware-ului acestuia. La modificarea cheilor de bonding pe Peripheral, este necesară ștergerea cheilor vechi pe Central și efectuarea unei noi împărcheri.

Gestionarea în iOS

iOS gestionează automat dispozitivele bonded prin stiva de sistem Core Bluetooth. Dezvoltatorul nu are API direct pentru vizualizarea sau ștergerea dispozitivelor bonded individuale — gestionarea se face prin setările de sistem (Settings > Bluetooth > dispozitiv > Forget). Dacă este necesară curățarea programatică a bondingului, aplicația poate redirecționa utilizatorul către setările de sistem Bluetooth folosind UIApplication.openSettingsURLString.

Gestionarea în Android

Android oferă API direct pentru lucrul cu dispozitivele bonded prin clasa BluetoothAdapter. Metoda getBondedDevices() returnează Set<BluetoothDevice> al tuturor dispozitivelor împărcheate. Pentru ștergerea bondingului se utilizează metoda removeBond() prin reflecție sau în Android 12+ API-ul oficial BluetoothDevice.removeBond().

kotlin
val adapter = BluetoothAdapter.getDefaultAdapter()
val bondedDevices: Set<BluetoothDevice> = adapter.getBondedDevices()
bondedDevices.forEach { device ->
    Log.d("Bonding", "Bonded device: ${device.name}, ${device.address}")
}

Exemplu practic de implementare a Bonding

Implementarea bondingului pe partea Android necesită gestionarea corectă a BroadcastReceiver pentru evenimentele BluetoothDevice.ACTION_BOND_STATE_CHANGED. La prima conectare la dispozitiv, sistemul Android inițiază automat bondingul, dacă dispozitivul suportă această capacitate. Dezvoltatorul trebuie să gestioneze trei stări: BOND_NONE (neîmpărcheat), BOND_BONDING (proces de împărchere), BOND_BONDED (împărcheat).

kotlin
val bondReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE)
        val bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, -1)
        when (bondState) {
            BluetoothDevice.BOND_BONDED -> Log.d("Bonding", "Bonded: ${device.name}")
            BluetoothDevice.BOND_NONE -> Log.d("Bonding", "Bond șters")
        }
    }
}

Inițierea Bonding în Android

Pentru a iniția bondingul în Android, trebuie apelată metoda createBond() pe obiectul BluetoothDevice. Metoda returnează un boolean — true, dacă procesul de împărchere a fost pornit cu succes. Îpând cu Android 12, createBond() necesită permisiunea BLUETOOTH_CONNECT și poate fi respins de sistem dacă aplicația nu are acces de fundal la Bluetooth.

kotlin
fun initiateBonding(device: BluetoothDevice) {
    if (device.bondState == BluetoothDevice.BOND_NONE) {
        val success = device.createBond()
        if (success) {
            Toast.makeText(context, "Bonding inițiat", Toast.LENGTH_SHORT)
        }
    }
}

Erori tipice la lucrul cu Bonding

Dezvoltatorii de aplicații mobile se confruntă adesea cu erori tipice la lucrul cu bondingul dispozitivelor BLE. Gestionarea incorectă a stărilor bondingului poate duce la eșecuri de conectare, imposibilitatea reîmpărcherii sau pierderea datelor. Să examinăm cele mai frecvente probleme și soluțiile lor.

Resetarea firmware-ului Peripheral și bondingul învechit

După actualizarea firmware-ului dispozitivului BLE, cheile sale de bonding pot fi resetate, dar smartphone-ul continuă să stocheze cheile învechite (stale bonding). La încercarea de conectare, Central încearcă să restabilească sesiunea cu LTK-ul vechi, Peripheral respinge cheia, iar conexiunea nu se stabilește. Soluția — ștergeți bondingul pe smartphone prin Settings > Bluetooth > Forget Device și efectuați o nouă împărchere.

Limita numărului de dispozitive bonded

Cipurile BLE au o limitare a numărului de înregistrări de bonding salvate. Pentru cipurile populare Nordic nRF5x, limita este de 8–20 de înregistrări, în funcție de configurație. La depășirea limitei, dispozitivul nu mai acceptă noi împărcheri. Soluția — ștergeți înregistrările de bonding neutilizate sau folosiți un lanț de chei cu curățare prioritară.

Probleme cu Privacy Feature

La utilizarea Privacy Feature (adrese MAC aleatoare), dispozitivul își schimbă periodic adresa. Dacă Central nu a salvat IRK-ul, nu poate potrivi noua adresă aleatoare cu un dispozitiv cunoscut. Soluția — implementați corect stocarea IRK și utilizați-l pentru rezolvarea RPA la fiecare detectare a dispozitivului.

Întrebări frecvente

Ce este Bonding în BLE?

Bonding în Bluetooth Low Energy — procesul de salvare a cheilor de criptare (LTK, IRK, CSRK) după încheierea sesiunii de pairing pentru restabilirea automată a conexiunii securizate la conexiunile ulterioare fără reintroducerea PIN-ului sau confirmare.

Cu ce se deosebește Bonding de Pairing?

Pairing — acordul temporar al cheilor pentru sesiunea curentă, care sunt șterse la încheierea conexiunii. Bonding include procesul complet de pairing plus salvarea cheilor pentru conexiunile viitoare. Bonding este necesar pentru dispozitivele care se conectează automat — căști, ceasuri, trackere de fitness.

Cum se șterge Bonding pe iPhone?

Pe iPhone, ștergerea bondingului se face prin setările de sistem: Settings > Bluetooth > apăsați pictograma de informații (i) lângă dispozitiv > selectați Forget This Device. După aceasta, cheile de criptare sunt șterse, iar la următoarea conectare va fi necesară o nouă împărchere.

Câte dispozitive pot fi în Bonding?

Numărul de dispozitive bonded depinde de volumul memoriei nevolatile a cipului BLE. Smartphone-urile pot stoca sute de înregistrări, în timp ce dispozitivele periferice BLE bugetare sunt limitate la 8–20 de înregistrări. La depășirea limitei, înregistrările vechi sunt suprascrise sau dispozitivul nu mai acceptă noi împărcheri.

Ce este stale bonding?

Stale bonding — situația în care cheile de criptare de pe un dispozitiv (de obicei Peripheral) au fost resetate (de exemplu, la reflashing), iar pe Central au rămas cheile vechi. Drept urmare, conexiunea nu se stabilește până când utilizatorul nu șterge bondingul învechit prin setările Bluetooth și nu efectuează o nouă împărchere.

Concluzii

  • Bonding — mecanismul cheie BLE pentru restabilirea automată a conexiunilor criptate fără reintroducerea PIN-ului.
  • Pairing și bonding se deosebesc prin stocarea cheilor: la pairing cheile trăiesc o singură sesiune, la bonding sunt stocate permanent.
  • Procesul de bonding include schimbul și salvarea a trei tipuri de chei: LTK (criptare), IRK (identificare), CSRK (semnătură).
  • Metoda de autentificare Numeric Comparison asigură protecție împotriva atacurilor MITM și este recomandată pentru dispozitivele cu ecran.
  • iOS gestionează bondingul automat prin Core Bluetooth, Android oferă API createBond() și removeBond().
  • Stale bonding după reflashingul Peripheral — problemă frecventă rezolvată prin ștergerea dispozitivului din lista Bluetooth.
  • Numărul de dispozitive bonded pe cipul BLE periferic este limitat la 8–20 de înregistrări, în funcție de model.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și