Bonding: какво е, процес и сигурност на свързване BLE

Автор: IT Sectr Публикувано: 2026-07-16 Време за четене: 10 мин

Bonding (сдвояване) в Bluetooth Low Energy е процес на създаване на постоянна защитена връзка между две устройства със запазване на криптографски ключове в енергонезависима памет. След bonding устройствата могат автоматично да възстановяват криптираната връзка при повторно свързване без повторно въвеждане на PIN или потвърждение от потребителя. Според Bluetooth SIG Core Specification v5.4 (2025), механизмът bonding е задължителен за устройства, изискващи автоматично повторно свързване — слушалки, фитнес тракери, медицински сензори и IoT аксесоари.

Основни точки

  • Bonding — е дългосрочно запазване на ключове за криптиране между BLE устройства след приключване на сесията.
  • За разлика от pairing, bonding позволява автоматично възстановяване на криптирана връзка без повторно потвърждение.
  • Процесът bonding включва обмяна на ключове LTK, IRK, CSRK и тяхното съхранение в паметта на двете устройства.
  • iOS управлява свързани устройства чрез Settings > Bluetooth с възможност за изтриване на запазени ключове.
  • За Android управлението на bonding се осъществява чрез BluetoothAdapter и API getBondedDevices().

Какво е Bonding в BLE?

Bonding — е разширение на процеса pairing в Bluetooth Low Energy, при което устройствата запазват ключове за криптиране за последващи връзки. Стандартът BLE дефинира три режима на сигурност: Security Mode 1 (криптиране без удостоверяване), Security Mode 2 (подписване на данни без криптиране) и Security Mode 3 (криптиране с удостоверяване). Bonding е актуален за режими с криптиране, когато се изисква многократно свързване без повторно договаряне на ключове.

Защо е необходим Bonding

Основното предназначение на bonding е автоматично възстановяване на криптирана връзка при повторно свързване на устройства. Когато потребителят извади слушалките от кутията и ги постави, bonding осигурява моментално свързване към смартфона без необходимост от повторен избор на устройство в менюто Bluetooth. Според Apple Bluetooth Design Guidelines (2025), свързаните устройства трябва да се свързват за по-малко от 2 секунди от момента на откриване.

Какви данни се запазват при Bonding

При bonding всяко устройство запазва набор от криптографски материали: Long Term Key (LTK) за криптиране на връзката, Identity Resolving Key (IRK) за разрешаване на случайни адреси, Connection Signature Resolving Key (CSRK) за проверка на подписи на данни. LTK е основният ключ с дължина 128 бита, генериран по време на pairing и използван за всички последващи криптирани сесии.

КлючДължинаПредназначение
LTK128 битаКриптиране на данни след повторно свързване
IRK128 битаРазрешаване на случайни частни адреси (RPA)
CSRK128 битаПодписване и проверка на автентичност на данни

Bonding vs Pairing: каква е разликата

Pairing — е временно договаряне на ключове за криптиране на текущата комуникационна сесия. Когато връзката приключи, ключовете за криптиране се изтриват и при следващото свързване се изисква повторен процес на pairing. Bonding включва всички етапи на pairing, но допълнително запазва ключовете за последващи сесии. Практически всички потребителски Bluetooth устройства (слушалки, тонколони, часовници) използват bonding, тъй като без него всяко свързване би изисквало повторно въвеждане на PIN код.

Три фази на Pairing и Bonding

Процесът на pairing според спецификацията BLE се състои от три фази. Фаза 1 — обмен на възможности на устройствата (IO capabilities, поддръжка на удостоверяване). Фаза 2 — генериране и обмен на Short Term Key (STK) или LTK, в зависимост от метода на сдвояване. Фаза 3 — транспорт на ключове: обмен на LTK, IRK, CSRK между устройствата. Ако устройствата са запазили ключовете след Фаза 3 — това е bonding. Ако не — това е просто pairing.

ПараметърPairingBonding
Съхранение на ключовеНе се запазватЗапазват се в NVRAM
Автоматично свързванеНеДа
Повторно въвеждане на PINИзисква сеНе се изисква
ИзползванеЕпизодични връзкиПостоянни устройства

Как работи процесът Bonding

Процесът bonding се инициира след успешно завършване на pairing, когато едно от устройствата изпраща заявка за запазване на ключове. В BLE Central (обикновено смартфон) и Peripheral (носимо устройство) обменят ключове чрез защитен канал, установен във Фаза 2. След успешен обмен на ключове всяко устройство ги запазва в енергонезависима памет заедно с MAC адреса или идентификационния адрес на партньора.

Съхранение на ключове от страна на Central

От страна на Central (iOS/Android), ключовете се съхраняват в системното хранилище на Bluetooth. iOS използва системния стек Core Bluetooth с автоматично управление на bonding: при първото сдвояване ключовете се запазват в NVRAM на устройството и последващите свързвания към същото Peripheral стават автоматично. Разработчикът не управлява ключовете директно — системният стек Core Bluetooth обработва bonding автоматично при установяване на връзка с устройство, което поддържа запазване на ключове.

Възстановяване на връзка чрез Bonding

При повторно свързване Peripheral изпраща рекламни пакети, съдържащи или публичния си адрес, или Resolvable Private Address (RPA). Central получава пакета, съпоставя адреса със запазени свързани устройства и ако намери съвпадение, инициира възстановяване на сесията с използване на запазения LTK. Ако LTK съвпада — криптираната връзка се установява без повторно pairing.

Методи за удостоверяване при Bonding

Спецификацията BLE дефинира няколко метода за удостоверяване, които влияят на нивото на сигурност на bonding. Изборът на метод зависи от IO capabilities на устройствата — наличие на дисплей, клавиатура, възможност за потвърждение на числено сравнение. Сигурен bonding изисква използване на метод не по-нисък от Just Works за некритични приложения и Numeric Comparison или Passkey Entry за задачи, изискващи защита от Man-in-the-Middle атаки.

Just Works

Just Works — метод без удостоверяване, използван когато едно от устройствата няма дисплей или клавиатура. Ключовете за криптиране се предават без проверка на автентичността на второто устройство — термометър, пулсоксиметър). Just Works е уязвим на MITM атаки, поради което се прилага само за устройства, при които компрометирането на данни не представлява заплаха.

Numeric Comparison

Numeric Comparison — метод за удостоверяване, при който и двете устройства показват шестцифрено число и потребителят трябва да потвърди съвпадението. Този метод осигурява защита от MITM атаки и се препоръчва за устройства с дисплей — умни часовници, фитнес тракери, дистанционни управления. След потвърждение bonding се запазва с максимално ниво на доверие.

Passkey Entry

Passkey Entry изисква въвеждане на шестцифрен PIN код на едно от устройствата. Обикновено кодът се генерира от едно устройство и се показва на него, а потребителят го въвежда на второто. Методът се прилага за медицински устройства и IoT ключалки, където се изисква високо ниво на сигурност, но едно от устройствата няма дисплей за Numeric Comparison.

Управление на свързани устройства в iOS и Android

Управление на bonding — е процес на преглед, изтриване и поддръжка на запазени ключове на свързани устройства. В мобилната разработка е важно да се обработват правилно състоянията на свързани устройства, особено при нулиране на периферно устройство или подмяна на неговия firmware. При промяна на bonding ключове на Peripheral е необходимо да се изтрият старите ключове на Central и да се извърши повторно сдвояване.

Управление в iOS

iOS автоматично управлява свързаните устройства чрез системния Core Bluetooth стек. Разработчикът няма пряк API за преглед или изтриване на отделни свързани устройства — управлението се осъществява чрез системните настройки (Settings > Bluetooth > устройство > Forget). Ако е необходимо програмно почистване на bonding, приложението може да изпрати потребителя към системните настройки на Bluetooth с използване на UIApplication.openSettingsURLString.

Управление в Android

Android предоставя пряк API за работа със свързани устройства чрез класа BluetoothAdapter. Методът getBondedDevices() връща Set<BluetoothDevice> на всички свързани устройства. За изтриване на bonding се използва методът removeBond() чрез рефлексия или от Android 12+ официалният 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}")
}

Практически пример за реализация на Bonding

Реализация на bonding от страна на Android изисква правилна обработка на BroadcastReceiver за събития BluetoothDevice.ACTION_BOND_STATE_CHANGED. При първото свързване към устройство системата Android автоматично инициира bonding, ако устройството поддържа тази възможност. Разработчикът трябва да обработва три състояния: BOND_NONE (не е сдвоено), BOND_BONDING (процес на сдвояване), BOND_BONDED (сдвоено).

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", "Bonding премахнат")
        }
    }
}

Иницииране на Bonding на Android

За иницииране на bonding на Android е необходимо да се извика методът createBond() на обекта BluetoothDevice. Методът връща boolean — true, ако процесът на сдвояване е стартиран успешно. От Android 12, createBond() изисква разрешение BLUETOOTH_CONNECT и може да бъде отхвърлен от системата, ако приложението няма фонова достъп до Bluetooth.

kotlin
fun initiateBonding(device: BluetoothDevice) {
    if (device.bondState == BluetoothDevice.BOND_NONE) {
        val success = device.createBond()
        if (success) {
            Toast.makeText(context, "Стартиране на bonding", Toast.LENGTH_SHORT)
        }
    }
}

Типични грешки при работа с Bonding

Разработчиците на мобилни приложения често се сблъскват с типични грешки при работа с bonding на BLE устройства. Неправилната обработка на състоянията на bonding може да доведе до проблеми със свързването, невъзможност за повторно сдвояване или загуба на данни. Нека разгледаме най-честите проблеми и техните решения.

Нулиране на firmware на Peripheral и stale bonding

След актуализация на firmware на BLE устройство, неговите bonding ключове могат да бъдат нулирани, но смартфонът продължава да съхранява остарели ключове (stale bonding). При опит за свързване Central се опитва да възстанови сесията със стария LTK, Peripheral отхвърля ключа и връзката не се установява. Решение — изтриване на bonding на смартфона чрез Settings > Bluetooth > Forget Device и извършване на повторно сдвояване.

Лимит на броя свързани устройства

BLE чиповете имат ограничение на броя запазени bonding записи. За популярните чипове Nordic nRF5x лимитът е 8-20 записа в зависимост от конфигурацията. При превишаване на лимита устройството спира да приема нови сдвоявания. Решение — изтриване на неизползвани bonding записи или използване на система от ключове с приоритетно почистване.

Проблеми с Privacy Feature

При използване на Privacy Feature (случайни MAC адреси) устройството периодично променя адреса си. Ако Central не е запазил IRK, той не може да съпостави новия случаен адрес с познато устройство. Решение — правилно реализиране на съхранение на IRK и използването му за разрешаване на RPA при всяко откриване на устройство.

Често задавани въпроси

Какво е Bonding в BLE?

Bonding в Bluetooth Low Energy — е процес на запазване на ключове за криптиране (LTK, IRK, CSRK) след приключване на сесията pairing за автоматично възстановяване на защитена връзка при последващи свързвания без повторно въвеждане на PIN или потвърждение.

Каква е разликата между Bonding и Pairing?

Pairing — е временно договаряне на ключове за текущата сесия, които се изтриват при прекъсване на връзката. Bonding включва пълния процес на pairing плюс запазване на ключове за бъдещи връзки. Bonding се изисква от устройства, които се свързват автоматично — слушалки, часовници, фитнес тракери.

Как да изтрия Bonding на iPhone?

На iPhone изтриването на bonding се извършва чрез системните настройки: Settings > Bluetooth > натиснете иконата за информация (i) до устройството > изберете Forget This Device. След това ключовете за криптиране се изтриват и при следващото свързване ще се изисква повторно сдвояване.

Колко устройства могат да бъдат в Bonding?

Броят на свързаните устройства зависи от размера на енергонезависимата памет на BLE чипа. Смартфоните могат да съхраняват стотици записи, докато бюджетните BLE периферни устройства са ограничени до 8-20 записа. При превишаване на лимита старите записи се презаписват или устройството спира да приема нови сдвоявания.

Какво е stale bonding?

Stale bonding — ситуация, при която ключовете за криптиране на едно устройство (обикновено Peripheral) са били нулирани (например при презаписване на firmware), а на Central са останали старите ключове. В резултат на това връзката не се установява, докато потребителят не изтрие stale bonding чрез настройките на Bluetooth и не извърши повторно сдвояване.

Обобщение

  • Bonding — ключов механизъм на BLE за автоматично възстановяване на криптирани връзки без повторно въвеждане на PIN.
  • Pairing и bonding се различават по запазване на ключовете: при pairing ключовете живеят една сесия, при bonding се съхраняват постоянно.
  • Процесът bonding включва обмен и запазване на три типа ключове: LTK (криптиране), IRK (идентификация), CSRK (подписване).
  • Методът за удостоверяване Numeric Comparison осигурява защита от MITM атаки и се препоръчва за устройства с дисплей.
  • iOS управлява bonding автоматично чрез Core Bluetooth, Android предоставя API createBond() и removeBond().
  • Stale bonding след презаписване на firmware на Peripheral е често срещан проблем, решаван чрез изтриване на устройството от списъка с Bluetooth.
  • Броят на свързаните устройства на периферен BLE чип е ограничен до 8-20 записа в зависимост от модела.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също