Bonding (cütləşdirmə) Bluetooth Low Energy-də iki cihaz arasında kriptoqrafik açarların qeyri-uçucu yaddaşda saxlanması ilə daimi qorunan əlaqə yaratma prosesidir. Bondingdən sonra cihazlar istifadəçinin yenidən PIN daxil etməsi və ya təsdiqləməsi olmadan avtomatik olaraq şifrələnmiş əlaqəni bərpa edə bilər. Bluetooth SIG Core Specification v5.4 (2025)-ə görə, bonding mexanizmi avtomatik yenidən qoşulma tələb edən cihazlar üçün məcburidir — qulaqlıqlar, fitnes trekerlər, tibbi sensorlar və IoT aksesuarları.
Əsas məqamlar
Bonding — Bluetooth Low Energy-də pairing prosesinin genişləndirilməsidir, burada cihazlar sonrakı qoşulmalar üçün şifrələmə açarlarını saxlayır. BLE standartı üç təhlükəsizlik rejimi müəyyən edir: Security Mode 1 (autentifikasiyasız şifrələmə), Security Mode 2 (şifrələmədən məlumat imzası) və Security Mode 3 (autentifikasiya ilə şifrələmə). Bonding şifrələmə rejimləri üçün aktualdır, burada açarların təkrarlanan razılaşdırılması olmadan çoxsaylı qoşulma tələb olunur.
Bondingin əsas məqsədi cihazların yenidən qoşulması zamanı şifrələnmiş əlaqənin avtomatik bərpasıdır. İstifadəçi qulaqlıqları qutusundan çıxarıb taxdıqda, bonding Bluetooth menyusunda cihazı yenidən seçmədən smartfona dərhal qoşulmağı təmin edir. Apple Bluetooth Design Guidelines (2025)-yə görə, bonded cihazlar aşkarlanma anından etibarən 2 saniyədən çox olmayan müddətdə qoşulmalıdır.
Bonding zamanı hər bir cihaz kriptoqrafik materiallar dəsti saxlayır: Əlaqə şifrƏlƏmƏsi üçün Long Term Key (LTK), təsadüfi ünvanları həll etmək üçün Identity Resolving Key (IRK), məlumat imzalarını yoxlamaq üçün Connection Signature Resolving Key (CSRK). LTK — 128 bit uzunluğunda əsas açar, pairing prosesi zamanı yaradılır və bütün sonrakı şifrələnmiş seanslar üçün istifadə olunur.
| Açar | Uzunluq | Təyinat |
|---|---|---|
| LTK | 128 bit | Yenidən qoşulmadan sonra məlumatların şifrələnməsi |
| IRK | 128 bit | Təsadüfi şəxsi ünvanların (RPA) həll edilməsi |
| CSRK | 128 bit | Məlumatların imzalanması və autentikliyinin yoxlanması |
Pairing — cari əlaqə seansının şifrələnməsi üçün açarların müvəqqəti razılaşdırılmasıdır. Əlaqə bitdikdə, şifrələmə açarları silinir və növbəti qoşulmada yenidən pairing prosesi tələb olunur. Bonding pairingin bütün mərhələlərini əhatə edir, lakin əlavə olaraq açarları sonrakı seanslar üçün saxlayır. Praktiki olaraq bütün istehlak Bluetooth cihazları (qulaqlıqlar, sütunlar, saatlar) bondingdən istifadə edir, çünki onsuz hər qoşulma yenidən PIN daxil edilməsini tələb edərdi.
BLE spesifikasiyasına görə pairing prosesi üç mərhələdən ibarətdir. Mərhələ 1 — cihaz imkanlarının mübadiləsi (IO capabilities, autentifikasiya dəstəyi). Mərhələ 2 — Short Term Key (STK) və ya LTK-nın yaradılması və mübadiləsi, qoşulma metodundan asılı olaraq. Mərhələ 3 — açar nəqli: LTK, IRK, CSRK-nın cihazlar arasında mübadiləsi. Əgər cihazlar Mərhələ 3-dən sonra açarları saxladısa — bu bondingdir. Yoxdursa — sadəcə pairing.
| Parametr | Pairing | Bonding |
|---|---|---|
| Açarların saxlanması | Saxlanılmır | NVRAM-da saxlanılır |
| Avtomatik qoşulma | Xeyr | Bəli |
| Yenidən PIN daxil etmə | Tələb olunur | Tələb olunmur |
| İstifadə | Epizodik qoşulmalar | Daimi cihazlar |
Bonding prosesi pairing uğurla başa çatdıqdan sonra başladılır, cihazlardan biri açarların saxlanması üçün sorğu göndərdikdə. BLE-də Central (adətən smartfon) və Peripheral (geyilən cihaz) Mərhələ 2-də qurulmuş qorunan kanal vasitəsilə açarları mübadilə edir. Uğurlu açar mübadiləsindən sonra hər bir cihaz onları qeyri-uçucu yaddaşda ortağın MAC ünvanı və ya Identity Address ilə birlikdə saxlayır.
Central (iOS/Android) tərəfində açarlar Bluetooth sistem anbarında saxlanılır. iOS avtomatik bonding idarəsi ilə Core Bluetooth sistem stackindən istifadə edir: ilk qoşulmada açarlar cihazın NVRAM-ında saxlanılır və eyni Peripheral-ə sonrakı qoşulmalar avtomatik olur. Tərtibatçı açarları birbaşa idarə etmir — Core Bluetooth sistem stacki açarların saxlanmasını dəstəkləyən cihaza qoşularkən bondingi avtomatik idarə edir.
Yenidən qoşulma zamanı Peripheral ya öz ümumi ünvanını, ya da Resolvable Private Address (RPA) ehtiva edən reklam paketləri göndərir. Central paketi qəbul edir, ünvanı saxlanılmış bonded cihazlarla müqayisə edir və uyğunluq taparsa, saxlanılmış LTK ilə seansın bərpasını başladır. LTK uyğun gəlɐrsə — şifrələnmiş əlaqə yenidən pairing olmadan qurulur.
BLE spesifikasiyası bondingin təhlükəsizlik səviyyəsinə təsir edən bir neçə autentifikasiya metodu müəyyən edir. Metodun seçimi cihazların IO imkanlarından asılıdır — ekranın, klaviaturanın olması, rəqəmsal müqayisəni təsdiqləmə imkanı. Təhlükəsiz bonding kritik olmayan tətbiqlər üçün Just Works, Man-in-the-Middle hücumlarından qorunma tələb edən tapşırıqlar üçün Numeric Comparison və ya Passkey Entry metodunun istifadəsini tələb edir.
Just Works — autentifikasiyasız metod, cihazlardan birinin ekranı və ya klaviaturası olmadıqda istifadə olunur. Şifrələmə açarları ikinci cihazın həqiqiliyi yoxlanılmadan ötürülür — temperatur, nəbz ölçən). Just Works MITM hücumlarına məruz qalır, buna görə yalnız məlumat kompromatının təhlükə yaratmadığı cihazlarda tətbiq olunur.
Numeric Comparison — hər iki cihazın altırəqəmli rəqəm göstərdiyi və istifadəçinin uyğunluğu təsdiqləməli olduğu autentifikasiya metodudur. Bu metod MITM hücumlarından qorunma təmin edir və ekranlı cihazlar üçün tövsiyə olunur — ağıllı saatlar, fitnes trekerlər, uzaqdan idarə panelləri. Təsdiqləmədən sonra bonding maksimum etibar səviyyəsi ilə saxlanılır.
Passkey Entry cihazlardan birində altı rəqəmli PIN daxil edilməsini tələb edir. Adətən kod bir cihaz tərəfindən yaradılır və göstərilir, istifadəçi isə onu ikinci cihazda daxil edir. Metod tibbi cihazlar və IoT qıfılları üçün tətbiq olunur, burada yüksək təhlükəsizlik tələb olunur, lakin cihazlardan birinin Numeric Comparison üçün ekranı yoxdur.
Bonding idarəsi — bu, saxlanılmış cütləşmiş cihaz açarlarına baxmaq, silmək və onları saxlamaq prosesidir. Mobil proqramlaşdırmada bonded cihazların vəziyyətlərini düzgün idarə etmək vacibdir, xüsusilə periferik cihazın parametrləri sıfırlandıqda və ya proqram təminatı dəyişdirildikdə. Peripheral-də bonding açarları dəyişdirildikdə, Central-da köhnə açarları silmək və yenidən cütləşdirmə aparmaq lazımdır.
iOS sistem Core Bluetooth stacki vasitəsilə bonded cihazları avtomatik idarə edir. Tərtibatçının ayrı-ayrı bonded cihazlara baxmaq və ya silmək üçün birbaşa API-si yoxdur — idarə sistem parametrləri vasitəsilə həyata keçirilir (Settings > Bluetooth > cihaz > Forget). Bondingi proqram təminatı ilə təmizləmək lazımdırsa, tətbiq UIApplication.openSettingsURLString istifadə edərək istifadəçini Bluetooth sistem parametrlərinə yönləndirə bilər.
Android BluetoothAdapter sinfi vasitəsilə bonded cihazlarla işləmək üçün birbaşa API təqdim edir. getBondedDevices() metodu bütün cütləşmiş cihazların Set<BluetoothDevice> qaytarır. Bondingi silmək üçün removeBond() metodu refleksiya və ya Android 12+ rəsmi BluetoothDevice.removeBond() API vasitəsilə istifadə olunur.
val adapter = BluetoothAdapter.getDefaultAdapter()
val bondedDevices: Set<BluetoothDevice> = adapter.getBondedDevices()
bondedDevices.forEach { device ->
Log.d("Bonding", "Bonded device: ${device.name}, ${device.address}")
}
Bonding tətbiqi Android tərəfində BluetoothDevice.ACTION_BOND_STATE_CHANGED hadisələri üçün BroadcastReceiver-in düzgün işlənməsini tələb edir. Cihaza ilk qoşulmada Android sistemi avtomatik olaraq bondingi başladır, əgər cihaz bu imkanı dəstəkləyirsə. Tərtibatçı üç vəziyyəti idarə etməlidir: BOND_NONE (cütləşməyib), BOND_BONDING (cütləşdirmə prosesi), BOND_BONDED (cütləşdirilib).
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 silindi")
}
}
}
Android-də bondingi başlatmaq üçün BluetoothDevice obyektində createBond() metodunu çağırmaq lazımdır. Metod boolean qaytarır — true, əgər cütləşdirmə prosesi uğurla başladılıbsa. Android 12-dən başlayaraq, createBond() BLUETOOTH_CONNECT icazəsi tələb edir və sistem tərəfindən rədd edilə bilər, əgər tətbiqin Bluetooth-a fon girişi yoxdursa.
fun initiateBonding(device: BluetoothDevice) {
if (device.bondState == BluetoothDevice.BOND_NONE) {
val success = device.createBond()
if (success) {
Toast.makeText(context, "Bonding başladıldı", Toast.LENGTH_SHORT)
}
}
}
Mobil tətbiq tərtibatçıları tez-tez BLE cihazlarının bondingi ilə işlərkən tipik səhvlərlə üzləşirlər. Bonding vəziyyətlərinin düzgün işlənməməsi qoşulma uğursuzluqlarına, yenidən cütləşdirmənin mümkünsüzlüyünə və ya məlumat itkisinə səbəb ola bilər. Ən tez-tez rast gəlinən problemləri və onların həllini nəzərdən keçirək.
BLE cihazının proqram təminatı yeniləndikdən sonra onun bonding açarları sıfırlana bilər, lakin smartfon köhnəlmiş açarları (stale bonding) saxlamağa davam edir. Qoşulma cəhdi zamanı Central köhnə LTK ilə seansı bərpa etməyə çalışır, Peripheral açarı rədd edir və əlaqə qurulmur. Həll — smartfonda Settings > Bluetooth > Cihazı unut vasitəsilə bondingi silin və yenidən cütləşdirmə aparın.
BLE çipləri saxlanılan bonding qeydlərinin sayına məhdudiyyət qoyur. Məşhur Nordic nRF5x çipləri üçün limit konfiqurasiyadan asılı olaraq 8–20 qeyddir. Limit aşıldıqda cihaz yeni cütləşdirmələri qəbul etməyi dayandırır. Həll — istifadə olunmayan bonding qeydlərini silin və ya prioritet təmizləmə ilə açar bağlamasından istifadə edin.
Privacy Feature (təsadüfi MAC ünvanları) istifadə edildikdə cihaz vaxtaşırı ünvanını dəyişir. Əgər Central IRK saxlamayıbsa, o, yeni təsadüfi ünvanı tanınmış cihazla əlaqələndirə bilməz. Həll — IRK saxlamağı düzgün tətbiq edin və hər cihaz aşkarlanmasında RPA-nı həll etmək üçün istifadə edin.
Tez-tez verilən suallar
Bonding Bluetooth Low Energy-də — pairing seansı bitdikdən sonra şifrələmə açarlarının (LTK, IRK, CSRK) saxlanması prosesidir ki, sonrakı qoşulmalarda yenidən PIN daxil etmədən və ya təsdiqləmədən qorunan əlaqə avtomatik bərpa olunsun.
Pairing — cari seans üçün açarların müvəqqəti razılaşdırılmasıdır, əlaqə qopduqda açarlar silinir. Bonding tam pairing prosesini əhatə edir və əlavə olaraq açarları gələcək qoşulmalar üçün saxlayır. Bonding avtomatik qoşulan cihazlar üçün tələb olunur — qulaqlıqlar, saatlar, fitnes trekerlər.
iPhoneda bondingin silinməsi sistem parametrləri vasitəsilə həyata keçirilir: Settings > Bluetooth > cihazın yanındakı məlumat (i) işarəsini basın > Forget This Device seçin. Bundan sonra şifrələmə açarları silinir və növbəti qoşulmada yenidən cütləşdirmə tələb olunacaq.
Say BLE çipinin qeyri-uçucu yaddaşının həcmindən asğılıdır. Smartfonlar yüzlərlə qeyd saxlaya bilər, ucuz BLE periferik cihazları isə 8–20 qeydlə məhdudlaşır. Limit aşıldıqda köhnə qeydlər üzərinə yazılır və ya cihaz yeni cütləşdirmələri qəbul etməyi dayandırır.
Stale bonding — bir cihazda (adətən Peripheral) şifrələmə açarlarının sıfırlandığı (məsələn, proqram yenilənməsi zamanı), Central-da isə köhnə açarların qaldığı vəziyyətdir. Nəticədə istifadəçi Bluetooth parametrləri vasitəsilə köhnəlmiş bondingi silib yenidən cütləşdirmə aparana kimi əlaqə qurulmur.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun