Bonding: co to je, proces a bezpečnost párování BLE

Autor: IT Sectr Publikováno: 2026-07-16 Doba čtení: 10 min

Bonding (párování) v Bluetooth Low Energy je proces vytváření trvalého zabezpečeného spojení mezi dvěma zařízeními s uložením kryptografických klíčů v energeticky nezávislé paměti. Po bondingu mohou zařízení automaticky obnovovat šifrované spojení při opětovném připojení bez opakovaného zadávání PIN nebo potvrzení uživatelem. Podle Bluetooth SIG Core Specification v5.4 (2025) je mechanismus bondingu povinný pro zařízení vyžadující automatické opětovné připojení — sluchátka, fitness trackery, lékařské senzory a IoT příslušenství.

Hlavní body

  • Bonding — je dlouhodobé uchování šifrovacích klíčů mezi BLE zařízeními po ukončení relace.
  • Na rozdíl od pairing, bonding umožňuje automaticky obnovit šifrované spojení bez opakovaného potvrzení.
  • Proces bondingu zahrnuje výměnu klíčů LTK, IRK, CSRK a jejich uložení v paměti obou zařízení.
  • iOS spravuje spárovaná zařízení přes Settings > Bluetooth s možností smazání uložených klíčů.
  • Pro Android se správa bondingu provádí přes BluetoothAdapter a API getBondedDevices().

Co je Bonding v BLE?

Bonding — je rozšíření procesu pairing v Bluetooth Low Energy, při kterém zařízení ukládají šifrovací klíče pro následná připojení. Standard BLE definuje tři režimy zabezpečení: Security Mode 1 (šifrování bez autentizace), Security Mode 2 (podepisování dat bez šifrování) a Security Mode 3 (šifrování s autentizací). Bonding je relevantní pro režimy se šifrováním, kde je vyžadováno vícenásobné připojení bez opakovaného sjednávání klíčů.

Proč je Bonding potřeba

Hlavním účelem bondingu je automatické obnovení šifrovaného spojení při opětovném připojení zařízení. Když uživatel vyjme sluchátka z pouzdra a nasadí je, bonding zajišťuje okamžité připojení k chytrému telefonu bez nutnosti znovu vybírat zařízení v nabídce Bluetooth. Podle Apple Bluetooth Design Guidelines (2025) by se spárovaná zařízení měla připojit za méně než 2 sekundy od okamžiku detekce.

Jaká data se ukládají při Bondingu

Při bondingu každé zařízení ukládá sadu kryptografických materiálů: Long Term Key (LTK) pro šifrování spojení, Identity Resolving Key (IRK) pro rozlišení náhodných adres, Connection Signature Resolving Key (CSRK) pro ověřování podpisů dat. LTK je hlavní klíč délky 128 bitů, generovaný během procesu pairing a používaný pro všechny následující šifrované relace.

KlíčDélkaÚčel
LTK128 bitŠifrování dat po opětovném připojení
IRK128 bitRozlišení náhodných soukromých adres (RPA)
CSRK128 bitPodepisování a ověřování pravosti dat

Bonding vs Pairing: jaký je rozdíl

Pairing — je dočasné sjednání klíčů pro šifrování aktuální komunikační relace. Když je spojení ukončeno, šifrovací klíče jsou smazány a při příštím připojení je vyžadován opakovaný proces pairing. Bonding zahrnuje všechny fáze pairingu, ale navíc ukládá klíče pro následující relace. Prakticky všechna spotřebitelská Bluetooth zařízení (sluchátka, reproduktory, hodinky) používají bonding, protože bez něj by každé připojení vyžadovalo opakované zadávání PIN kódu.

Tři fáze Pairingu a Bondingu

Proces pairing podle specifikace BLE se skládá ze tří fází. Fáze 1 — výměna schopností zařízení (IO capabilities, podpora autentizace). Fáze 2 — generování a výměna Short Term Key (STK) nebo LTK, v závislosti na metodě párování. Fáze 3 — transport klíčů: výměna LTK, IRK, CSRK mezi zařízeními. Pokud si zařízení uložila klíče po Fázi 3 — jedná se o bonding. Pokud ne — jedná se pouze o pairing.

ParametrPairingBonding
Uložení klíčůNeukládají seUkládají se v NVRAM
Automatické připojeníNeAno
Opětovné zadání PINVyžadovánoNení vyžadováno
PoužitíPříležitostná připojeníTrvalá zařízení

Jak funguje proces Bondingu

Proces bondingu je iniciován po úspěšném dokončení pairingu, když jedno ze zařízení odešle požadavek na uložení klíčů. V BLE Central (obvykle chytrý telefon) a Peripheral (nositelné zařízení) si vyměňují klíče přes zabezpečený kanál vytvořený ve Fázi 2. Po úspěšné výměně klíčů každé zařízení uloží klíče do energeticky nezávislé paměti spolu s MAC adresou nebo identitní adresou partnera.

Uložení klíčů na straně Central

Na straně Central (iOS/Android) jsou klíče uloženy v systémovém úložišti Bluetooth. iOS používá systémový stack Core Bluetooth s automatickou správou bondingu: při prvním párování se klíče uloží do NVRAM zařízení a následná připojení ke stejnému Peripheral probíhají automaticky. Vývojář nespravuje klíče přímo — systémový stack Core Bluetooth zpracovává bonding automaticky při navázání spojení se zařízením, které podporuje ukládání klíčů.

Obnovení spojení přes Bonding

Při opětovném připojení Peripheral vysílá reklamní pakety obsahující buď svou veřejnou adresu, nebo Resolvable Private Address (RPA). Central paket přijme, porovná adresu s uloženými spárovanými zařízeními a pokud najde shodu, iniciuje obnovení relace pomocí uloženého LTK. Pokud LTK souhlasí — šifrované spojení se vytvoří bez opakovaného pairingu.

Metody autentizace při Bondingu

Specifikace BLE definuje několik metod autentizace, které ovlivňují úroveň zabezpečení bondingu. Volba metody závisí na IO capabilities zařízení — přítomnost displeje, klávesnice, možnost potvrzení numerického porovnání. Bezpečný bonding vyžaduje použití metody alespoň Just Works pro nekritické aplikace a Numeric Comparison nebo Passkey Entry pro úlohy vyžadující ochranu proti Man-in-the-Middle útokům.

Just Works

Just Works — metoda bez autentizace, používaná když jedno ze zařízení nemá displej ani klávesnici. Šifrovací klíče se přenášejí bez ověření totožnosti druhého zařízení — teploměr, pulzní oxymetr). Just Works je zranitelný vůči MITM útokům, proto se používá pouze u zařízení, kde kompromitace dat nepředstavuje hrozbu.

Numeric Comparison

Numeric Comparison — metoda autentizace, při které obě zařízení zobrazí šestimístné číslo a uživatel musí potvrdit shodu. Tato metoda poskytuje ochranu proti MITM útokům a doporučuje se pro zařízení s displejem — chytré hodinky, fitness trackery, dálkové ovladače. Po potvrzení se bonding ukládá s maximální úrovní důvěry.

Passkey Entry

Passkey Entry vyžaduje zadání šestimístného PIN kódu na jednom ze zařízení. Obvykle kód vygeneruje jedno zařízení a zobrazí jej, zatímco uživatel jej zadá na druhém. Metoda se používá pro zdravotnická zařízení a IoT zámky, kde je vyžadována vysoká úroveň zabezpečení, ale jedno ze zařízení nemá displej pro Numeric Comparison.

Správa spárovaných zařízení v iOS a Androidu

Správa bondingu — je proces prohlížení, mazání a údržby uložených klíčů spárovaných zařízení. Při vývoji mobilních aplikací je důležité správně zpracovávat stavy spárovaných zařízení, zejména při obnovení továrního nastavení periferního zařízení nebo výměně jeho firmware. Při změně bonding klíčů na Peripheral je nutné smazat staré klíče na Central a provést opětovné párování.

Správa v iOS

iOS automaticky spravuje spárovaná zařízení pomocí systémového Core Bluetooth stacku. Vývojář nemá přímé API pro prohlížení nebo mazání jednotlivých spárovaných zařízení — správa se provádí přes systémová nastavení (Settings > Bluetooth > zařízení > Forget). Pokud je nutné programově vyčistit bonding, aplikace může uživatele přesměrovat do systémových nastavení Bluetooth pomocí UIApplication.openSettingsURLString.

Správa v Androidu

Android poskytuje přímé API pro práci se spárovanými zařízeními prostřednictvím třídy BluetoothAdapter. Metoda getBondedDevices() vrací Set<BluetoothDevice> všech spárovaných zařízení. Pro smazání bondingu se používá metoda removeBond() přes reflexi nebo od Android 12+ oficiální API 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}")
}

Praktický příklad implementace Bondingu

Implementace bondingu na straně Androidu vyžaduje správné zpracování BroadcastReceiver pro události BluetoothDevice.ACTION_BOND_STATE_CHANGED. Při prvním připojení k zařízení systém Android automaticky iniciuje bonding, pokud zařízení tuto možnost podporuje. Vývojář musí zpracovávat tři stavy: BOND_NONE (nespárováno), BOND_BONDING (probíhá párování), BOND_BONDED (spárováno).

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", "Spojení odstraněno")
        }
    }
}

Iniciace Bondingu v Androidu

Pro iniciaci bondingu v Androidu je nutné zavolat metodu createBond() na objektu BluetoothDevice. Metoda vrací boolean — true, pokud byl proces párování úspěšně spuštěn. Od Androidu 12 vyžaduje createBond() oprávnění BLUETOOTH_CONNECT a může být systémem zamítnuta, pokud aplikace nemá přístup k Bluetooth na pozadí.

kotlin
fun initiateBonding(device: BluetoothDevice) {
    if (device.bondState == BluetoothDevice.BOND_NONE) {
        val success = device.createBond()
        if (success) {
            Toast.makeText(context, "Probíhá bonding", Toast.LENGTH_SHORT)
        }
    }
}

Typické chyby při práci s Bondingem

Vývojáři mobilních aplikací se často setkávají s typickými chybami při práci s bondingem BLE zařízení. Nesprávné zpracování stavů bondingu může vést k selhání připojení, nemožnosti opětovného párování nebo ztrátě dat. Podívejme se na nejčastější problémy a jejich řešení.

Reset firmware Peripheral a stale bonding

Po aktualizaci firmware BLE zařízení mohou být jeho bonding klíče resetovány, ale chytrý telefon nadále uchovává zastaralé klíče (stale bonding). Při pokusu o připojení se Central snaží obnovit relaci se starým LTK, Peripheral klíč odmítne a spojení se nevytvoří. Řešení — smazat bonding v chytrém telefonu přes Settings > Bluetooth > Forget Device a provést opětovné párování.

Limit počtu spárovaných zařízení

BLE čipy mají omezení na počet ukládaných bonding záznamů. Pro populární čipy Nordic nRF5x je limit 8-20 záznamů v závislosti na konfiguraci. Při překročení limitu zařízení přestává přijímat nová párování. Řešení — mazat nepoužívané bonding záznamy nebo používat systém klíčů s prioritním čištěním.

Problémy s Privacy Feature

Při použití Privacy Feature (náhodné MAC adresy) zařízení pravidelně mění svou adresu. Pokud Central neuložil IRK, nemůže přiřadit novou náhodnou adresu ke známému zařízení. Řešení — správně implementovat ukládání IRK a používat jej pro rozlišení RPA při každé detekci zařízení.

Často kladené otázky

Co je Bonding v BLE?

Bonding v Bluetooth Low Energy — je proces ukládání šifrovacích klíčů (LTK, IRK, CSRK) po dokončení relace pairingu pro automatické obnovení zabezpečeného spojení při následných připojeních bez opakovaného zadávání PIN nebo potvrzení.

Jaký je rozdíl mezi Bondingem a Pairingem?

Pairing — je dočasné sjednání klíčů pro aktuální relaci, které se při ukončení spojení smažou. Bonding zahrnuje celý proces pairingu plus uložení klíčů pro budoucí připojení. Bonding vyžadují zařízení, která se automaticky znovu připojují — sluchátka, hodinky, fitness trackery.

Jak smazat Bonding na iPhone?

Na iPhone se smazání bondingu provádí přes systémová nastavení: Settings > Bluetooth > klepněte na ikonu informací (i) vedle zařízení > vyberte Forget This Device. Poté jsou šifrovací klíče smazány a při příštím připojení bude vyžadováno opětovné párování.

Kolik zařízení může být v Bondingu?

Počet spárovaných zařízení závisí na velikosti energeticky nezávislé paměti BLE čipu. Chytré telefony mohou ukládat stovky záznamů, zatímco levná BLE periferní zařízení jsou omezena na 8-20 záznamů. Při překročení limitu se staré záznamy přepisují nebo zařízení přestává přijímat nová párování.

Co je stale bonding?

Stale bonding — situace, kdy šifrovací klíče na jednom zařízení (obvykle Peripheral) byly resetovány (např. při přehrání firmware), zatímco na Central zůstaly staré klíče. V důsledku toho se spojení nevytvoří, dokud uživatel nesmaže stale bonding přes nastavení Bluetooth a neprovede opětovné párování.

Shrnutí

  • Bonding — klíčový mechanismus BLE pro automatické obnovení šifrovaných spojení bez opakovaného zadávání PIN.
  • Pairing a bonding se liší uchováváním klíčů: při pairing klíče žijí jednu relaci, při bonding jsou trvale uloženy.
  • Proces bondingu zahrnuje výměnu a uložení tří typů klíčů: LTK (šifrování), IRK (identifikace), CSRK (podepisování).
  • Metoda autentizace Numeric Comparison poskytuje ochranu proti MITM útokům a doporučuje se pro zařízení s displejem.
  • iOS spravuje bonding automaticky přes Core Bluetooth, Android poskytuje API createBond() a removeBond().
  • Stale bonding po přehrání firmware Peripheral je častý problém, řešitelný smazáním zařízení ze seznamu Bluetooth.
  • Počet spárovaných zařízení na periferním BLE čipu je omezen na 8-20 záznamů v závislosti na modelu.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také