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 управља bonded уређајима кроз 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), bonded уређаји треба да се повежу за највише 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 адресом или Identity Address партнера.

Чување кључева на страни Central

На страни Central (iOS/Android), кључеви се чувају у системском складишту Bluetooth. iOS користи системски стек Core Bluetooth са аутоматским управљањем bondingа: при првом повезивању, кључеви се чувају у NVRAM уређаја, и касније везе са истим Peripheral-ом одвијају се аутоматски. Програмер не управља кључевима директно — системски стек Core Bluetooth обрадјује bonding аутоматски приликом успостављања везе са уређајем који подржава чување кључева.

Воспостављање везе кроз Bonding

При поновном повезивању, Peripheral шаље рекламне пакете који садрже или његову јавну адресу, или Resolvable Private Address (RPA). Central прима пакет, поклапа адресу са сачуваним bonded уређајима и, ако пронађе поклапање, покреће воспостављање сесије коришћећем сачуваног LTK-а. Ако LTK одговара — шифрована веза се успоставља без поновног pairingа.

Методе аутентификације при Bonding

BLE спецификација дефинише неколико метода аутентификације који утичу на ниво сигурности bondingа. Избор методе зависи од IO могућности уређаја — постојање екрана, тастатуре, могућности потврде нумеричког поређења. Сигуран 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.

Управљање bonded уређајима у iOS и Android

Управљање bondingом — је процес прегледа, брисања и одржавања сачуваних кључева упарених уређаја. У мобилном развоју је важно правилно обрађити стања bonded уређаја, посебно при ресетовању поставки периферијског уређаја или замени његовог фирмвера. При промени кључева bondingа на Peripheral-у, потребно је обрисати старе кључеве на Central-у и поново извршити паровање.

Управљање у iOS

iOS аутоматски управља bonded уређајима кроз системски стек Core Bluetooth. Програмер нема директан API за преглед или брисање појединачних bonded уређаја — управљање се обавља кроз системске поставке (Settings > Bluetooth > уређај > Forget). Ако је потребно програмски очистити bonding, апликација може да пошаље корисника на системске поставке Bluetooth коришћећем UIApplication.openSettingsURLString.

Управљање у Android

Android пружа директан API за рад са bonded уређајима кроз класу 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", "Bond уклоњен")
        }
    }
}

Покретање 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а може довести до проблема са повезивањем, немогућности поновног паровања или губитка података. Размотримо најчешће проблеме и њихова решења.

Ресетовање фирмвера Peripheral и застарели bonding

Након ажурирања фирмвера BLE уређаја, његови кључеви bondingа могу бити ресетовани, али паметни телефон и даље чува застареле кључеве (stale bonding). При покушају повезивања, Central покушава да воспостави сесију са старим LTK-ом, Peripheral одбаца кључ, и веза се не успоставља. Решење — обришите bonding на паметном телефону кроз Settings > Bluetooth > Forget Device и поново извршите паровање.

Ограничење броја bonded уређаја

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-у?

Број bonded уређаја зависи од капацитета неиспарљиве меморије BLE чипа. Паметни телефони могу да чувају стотине записа, док буџетски BLE периферијски уређаји су ограничени на 8–20 записа. При прекорачењу лимита, стари записи се преписују или уређај престаје да прихвата нове паровања.

Шта је stale bonding?

Stale bonding — ситуација када су кључеви за шифровање на једном уређају (обично Peripheral) ресетовани (нпр. при префлаширању), а на Central-у су остали стари кључеви. Као резултат, веза се не успоставља док корисник не обрише застарели 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 након префлаширања Peripheral — чест проблем који се решава брисањем уређаја из Bluetooth листе.
  • Број bonded уређаја на периферијском BLE чипу је ограничен на 8–20 записа у зависности од модела.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође