Bonding: ano ito, proseso at seguridad ng pagpapares ng BLE

May-akda: IT Sectr Nai-publish: 2026-07-16 Oras ng pagbabasa: 10 min

Bonding (pagpapares) sa Bluetooth Low Energy ay ang proseso ng paglikha ng permanenteng secure na koneksyon sa pagitan ng dalawang device na may pag-iimbak ng cryptographic key sa non-volatile memory. Pagkatapos ng bonding, ang mga device ay maaaring awtomatikong ibalik ang naka-encrypt na koneksyon sa muling pagkonekta nang hindi muling naglalagay ng PIN o kumpirmasyon ng user. Ayon sa Bluetooth SIG Core Specification v5.4 (2025), ang mekanismo ng bonding ay sapilitan para sa mga device na nangangailangan ng awtomatikong muling pagkonekta — mga headphone, fitness tracker, medical sensor at IoT accessories.

Mga Pangunahing Punto

  • Bonding — pangmatagalang pag-iimbak ng mga encryption key sa pagitan ng BLE device pagkatapos ng sesyon.
  • Hindi tulad ng pairing, pinapayagan ng bonding ang awtomatikong pagpapanumbalik ng naka-encrypt na koneksyon nang walang paulit-ulit na kumpirmasyon.
  • Ang proseso ng bonding ay may kasamang pagpapalitan ng key LTK, IRK, CSRK at ang pag-iimbak ng mga ito sa memorya ng parehong device.
  • iOS namamahala ng bonded device sa pamamagitan ng Settings > Bluetooth na may kakayahang magtanggal ng mga naka-imbak na key.
  • Para sa Android, ang pamamahala ng bonding ay ginagawa sa pamamagitan ng BluetoothAdapter at API getBondedDevices().

Ano ang Bonding sa BLE?

Bonding — ay isang pagpapalawak ng proseso ng pairing sa Bluetooth Low Energy, kung saan ang mga device ay nag-iimbak ng encryption key para sa mga susunod na koneksyon. Ang BLE standard ay tumutukoy ng tatlong mode ng seguridad: Security Mode 1 (encryption na walang pagpapatotoo), Security Mode 2 (pagpirma ng data nang walang encryption) at Security Mode 3 (encryption na may pagpapatotoo). Ang Bonding ay may kaugnayan sa mga mode na may encryption kung saan kinakailangan ang maraming koneksyon nang walang muling negosasyon ng mga key.

Bakit kailangan ang Bonding

Ang pangunahing layunin ng bonding ay awtomatikong pagpapanumbalik ng naka-encrypt na koneksyon sa muling pagkonekta ng mga device. Kapag kinuha ng user ang headphone mula sa case at isinuot ito, tinitiyak ng bonding ang agarang koneksyon sa smartphone nang hindi kinakailangang pumili muli ng device sa Bluetooth menu. Ayon sa Apple Bluetooth Design Guidelines (2025), ang mga bonded device ay dapat kumonekta sa loob ng maximum na 2 segundo mula sa pagtuklas.

Anong data ang naiimbak sa panahon ng Bonding

Sa panahon ng bonding, ang bawat device ay nag-iimbak ng isang set ng cryptographic na materyales: Long Term Key (LTK) para sa encryption ng koneksyon, Identity Resolving Key (IRK) para sa paglutas ng random na address, Connection Signature Resolving Key (CSRK) para sa pag-verify ng mga lagda ng data. LTK — ang pangunahing key na 128 bit ang haba, na nabuo sa proseso ng pairing at ginagamit para sa lahat ng kasunod na naka-encrypt na sesyon.

KeyHabaLayunin
LTK128 bitEncryption ng data pagkatapos muling kumonekta
IRK128 bitPaglutas ng random na pribadong address (RPA)
CSRK128 bitPagpirma at pag-verify ng authenticity ng data

Bonding vs Pairing: ano ang pagkakaiba

Pairing — ay pansamantalang kasunduan ng mga key para sa pag-encrypt ng kasalukuyang sesyon ng komunikasyon. Kapag natapos ang koneksyon, tinatanggal ang mga encryption key, at sa susunod na koneksyon ay kinakailangan ang paulit-ulit na proseso ng pairing. Bonding ay may kasamang lahat ng yugto ng pairing, ngunit dagdag na nag-iimbak ng mga key para sa mga susunod na sesyon. Halos lahat ng consumer Bluetooth device (headphone, speaker, relo) ay gumagamit ng bonding, dahil kung wala ito, ang bawat koneksyon ay mangangailangan ng muling paglalagay ng PIN.

Tatlong yugto ng Pairing at Bonding

Ang proseso ng pairing ayon sa BLE specification ay binubuo ng tatlong yugto. Yugto 1 — pagpapalitan ng kakayahan ng device (IO capabilities, suporta sa pagpapatotoo). Yugto 2 — pagbuo at pagpapalitan ng Short Term Key (STK) o LTK, depende sa paraan ng koneksyon. Yugto 3 — transportasyon ng key: pagpapalitan ng LTK, IRK, CSRK sa pagitan ng mga device. Kung ang mga device ay nag-imbak ng mga key pagkatapos ng Yugto 3 — ito ay bonding. Kung hindi — ito ay pairing lamang.

ParameterPairingBonding
Pag-iimbak ng keyHindi naiimbakNaiimbak sa NVRAM
Awtomatikong koneksyonHindiOo
Muling paglalagay ng PINKinakailanganHindi kinakailangan
PaggamitPaminsan-minsang koneksyonPermanenteng device

Paano gumagana ang proseso ng Bonding

Ang proseso ng bonding ay sinisimulan pagkatapos ng matagumpay na pagkumpleto ng pairing, kapag ang isa sa mga device ay nagpadala ng kahilingang mag-imbak ng mga key. Sa BLE, ang Central (karaniwang smartphone) at Peripheral (naisusuot na device) ay nagpapalitan ng mga key sa pamamagitan ng secure na channel na itinatag sa Yugto 2. Pagkatapos ng matagumpay na pagpapalitan ng key, iniimbak ng bawat device ang mga ito sa non-volatile memory kasama ang MAC address o Identity Address ng partner.

Pag-iimbak ng key sa panig ng Central

Sa panig ng Central (iOS/Android), ang mga key ay nakaimbak sa system storage ng Bluetooth. Ginagamit ng iOS ang system stack na Core Bluetooth na may awtomatikong pamamahala ng bonding: sa unang koneksyon, ang mga key ay nakaimbak sa NVRAM ng device, at ang mga susunod na koneksyon sa parehong Peripheral ay awtomatikong nangyayari. Hindi direktang pinamamahalaan ng developer ang mga key — ang system stack na Core Bluetooth ay nagproseso ng bonding awtomatikong sa pagtatatag ng koneksyon sa isang device na sumusuporta sa pag-iimbak ng key.

Pagpapanumbalik ng koneksyon sa pamamagitan ng Bonding

Sa muling pagkonekta, ang Peripheral ay nagpapadala ng advertisement packet na naglalaman ng alinman sa pampublikong address nito o Resolvable Private Address (RPA). Tinatanggap ng Central ang packet, itinutugma ang address sa mga naka-imbak na bonded device at, kung makakita ng tugma, sinisimulan ang pagpapanumbalik ng sesyon gamit ang naka-imbak na LTK. Kung tugma ang LTK — ang naka-encrypt na koneksyon ay itinatag nang walang paulit-ulit na pairing.

Mga paraan ng pagpapatotoo sa Bonding

Tinutukoy ng BLE specification ang ilang paraan ng pagpapatotoo na nakakaapekto sa antas ng seguridad ng bonding. Ang pagpili ng paraan ay depende sa IO capabilities ng mga device — pagkakaroon ng display, keyboard, kakayahang kumpirmahin ang numeric comparison. Ang secure na bonding ay nangangailangan ng paggamit ng paraan na hindi bababa sa Just Works para sa hindi kritikal na application at Numeric Comparison o Passkey Entry para sa mga gawain na nangangailangan ng proteksyon laban sa Man-in-the-Middle na pag-atake.

Just Works

Just Works — paraan na walang pagpapatotoo, ginagamit kapag ang isa sa mga device ay walang display o keyboard. Ang encryption key ay ipinapadala nang walang pag-verify ng authenticity ng pangalawang device — temperatura, pulso). Ang Just Works ay mahina sa MITM attack, kaya't inilalapat lamang ito sa mga device kung saan ang kompromiso ng data ay hindi nagbabanta.

Numeric Comparison

Numeric Comparison — paraan ng pagpapatotoo kung saan ang parehong device ay nagpapakita ng anim na digit na numero, at dapat kumpirmahin ng user ang tugma. Ang pamamaraang ito ay nagbibigay ng proteksyon laban sa MITM attack at inirerekomenda para sa mga device na may display — smartwatch, fitness tracker, remote control. Pagkatapos ng kumpirmasyon, ang bonding ay naiimbak na may pinakamataas na antas ng tiwala.

Passkey Entry

Passkey Entry ay nangangailangan ng paglalagay ng anim na digit na PIN code sa isa sa mga device. Karaniwan ang code ay binuo ng isang device at ipinapakita dito, at ipinapasok ito ng user sa pangalawang device. Ang pamamaraan ay inilalapat sa mga medical device at IoT lock kung saan kinakailangan ang mataas na antas ng seguridad, ngunit ang isa sa mga device ay walang display para sa Numeric Comparison.

Pamamahala ng bonded device sa iOS at Android

Pamamahala ng bonding — ang proseso ng pagtingin, pagtanggal at pagpapanatili ng mga naka-imbak na key ng nakapares na device. Sa pag-develop ng mobile, mahalagang maayos na pangasiwaan ang mga estado ng bonded device, lalo na kapag ni-reset ang mga setting ng peripheral device o pinalitan ang firmware nito. Kapag nagbago ang bonding key sa Peripheral, kailangang tanggalin ang lumang key sa Central at magsagawa ng muling pagpapares.

Pamamahala sa iOS

Awtomatikong pinamamahalaan ng iOS ang bonded device sa pamamagitan ng system stack na Core Bluetooth. Ang developer ay walang direktang API para sa pagtingin o pagtanggal ng indibidwal na bonded device — ang pamamahala ay ginagawa sa pamamagitan ng system settings (Settings > Bluetooth > device > Forget). Kung kailangan ang programmatic na paglilinis ng bonding, maaaring i-redirect ng app ang user sa Bluetooth system settings gamit ang UIApplication.openSettingsURLString.

Pamamahala sa Android

Nagbibigay ang Android ng direktang API para sa pagtatrabaho sa bonded device sa pamamagitan ng klase na BluetoothAdapter. Ang pamamaraang getBondedDevices() ay nagbabalik ng Set<BluetoothDevice> ng lahat ng nakapares na device. Para sa pagtanggal ng bonding, ginagamit ang pamamaraang removeBond() sa pamamagitan ng reflection o sa Android 12+ opisyal na 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}")
}

Praktikal na halimbawa ng pagpapatupad ng Bonding

Pagpapatupad ng bonding sa panig ng Android ay nangangailangan ng wastong paghawak ng BroadcastReceiver para sa mga event na BluetoothDevice.ACTION_BOND_STATE_CHANGED. Sa unang koneksyon sa device, awtomatikong sinisimulan ng Android system ang bonding, kung sinusuportahan ng device ang kakayahang ito. Dapat pangasiwaan ng developer ang tatlong estado: BOND_NONE (hindi nakapares), BOND_BONDING (proseso ng pagpapares), BOND_BONDED (nakapares).

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 tinanggal")
        }
    }
}

Pagsisimula ng Bonding sa Android

Upang simulan ang bonding sa Android, tawagan ang pamamaraang createBond() sa BluetoothDevice object. Ang pamamaraan ay nagbabalik ng boolean — true, kung ang proseso ng pagpapares ay matagumpay na nasimulan. Simula sa Android 12, ang createBond() ay nangangailangan ng pahintulot na BLUETOOTH_CONNECT at maaaring tanggihan ng system kung ang app ay walang background access sa Bluetooth.

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

Karaniwang pagkakamali sa pagtatrabaho sa Bonding

Ang mga developer ng mobile app ay madalas na nakakaranas ng karaniwang pagkakamali sa pagtatrabaho sa bonding ng BLE device. Ang hindi tamang paghawak ng mga estado ng bonding ay maaaring humantong sa mga pagkabigo ng koneksyon, kawalan ng kakayahang magpares muli o pagkawala ng data. Tingnan natin ang mga pinakakaraniwang problema at ang kanilang mga solusyon.

Pag-reset ng firmware ng Peripheral at lumang bonding

Pagkatapos i-update ang firmware ng BLE device, ang bonding key nito ay maaaring ma-reset, ngunit ang smartphone ay patuloy na nag-iimbak ng lumang key (stale bonding). Sa pagtatangkang kumonekta, sinusubukan ng Central na ibalik ang sesyon gamit ang lumang LTK, tinatanggihan ng Peripheral ang key, at hindi nagtatatag ang koneksyon. Solusyon — tanggalin ang bonding sa smartphone sa pamamagitan ng Settings > Bluetooth > Forget Device at magsagawa muli ng pagpapares.

Limitasyon sa bilang ng bonded device

Ang BLE chip ay may limitasyon sa bilang ng naka-imbak na bonding record. Para sa sikat na Nordic nRF5x chip, ang limitasyon ay 8–20 record depende sa configuration. Kapag lumampas sa limitasyon, humihinto ang device sa pagtanggap ng bagong pagpapares. Solusyon — tanggalin ang hindi nagamit na bonding record o gumamit ng key chain na may priority na paglilinis.

Mga problema sa Privacy Feature

Kapag gumagamit ng Privacy Feature (random na MAC address), pana-panahong binabago ng device ang address nito. Kung hindi naimbak ng Central ang IRK, hindi nito matutugma ang bagong random na address sa isang kilalang device. Solusyon — ipatupad nang tama ang pag-iimbak ng IRK at gamitin ito para sa paglutas ng RPA sa bawat pagtuklas ng device.

Mga Madalas Itanong

Ano ang Bonding sa BLE?

Bonding sa Bluetooth Low Energy — ang proseso ng pag-iimbak ng encryption key (LTK, IRK, CSRK) pagkatapos ng sesyon ng pairing para sa awtomatikong pagpapanumbalik ng secure na koneksyon sa mga susunod na koneksyon nang hindi muling naglalagay ng PIN o kumpirmasyon.

Ano ang pagkakaiba ng Bonding sa Pairing?

Pairing — pansamantalang kasunduan ng key para sa kasalukuyang sesyon, na tinatanggal kapag naputol ang koneksyon. Bonding ay may kasamang kumpletong proseso ng pairing plus pag-iimbak ng key para sa hinaharap na koneksyon. Ang bonding ay kinakailangan para sa mga device na awtomatikong kumokonekta — headphone, relo, fitness tracker.

Paano tanggalin ang Bonding sa iPhone?

Sa iPhone, ang pagtanggal ng bonding ay ginagawa sa pamamagitan ng system settings: Settings > Bluetooth > i-tap ang information icon (i) sa tabi ng device > piliin ang Forget This Device. Pagkatapos nito, tatanggalin ang encryption key, at sa susunod na koneksyon ay kakailanganin ang muling pagpapares.

Ilang device ang maaaring nasa Bonding?

Ang bilang ng bonded device ay depende sa laki ng non-volatile memory ng BLE chip. Ang mga smartphone ay maaaring mag-imbak ng daan-daang record, habang ang murang BLE peripheral device ay limitado sa 8–20 record. Kapag lumampas sa limitasyon, ang lumang record ay na-o-overwrite o ang device ay humihinto sa pagtanggap ng bagong pagpapares.

Ano ang stale bonding?

Stale bonding — sitwasyon kung saan ang encryption key sa isang device (karaniwang Peripheral) ay na-reset (hal. sa panahon ng reflashing), ngunit sa Central ay nanatili ang lumang key. Bilang resulta, hindi nagtatatag ang koneksyon hanggang sa tanggalin ng user ang lumang bonding sa pamamagitan ng Bluetooth settings at magsagawa muli ng pagpapares.

Buod

  • Bonding — pangunahing BLE mechanism para sa awtomatikong pagpapanumbalik ng naka-encrypt na koneksyon nang hindi muling naglalagay ng PIN.
  • Ang Pairing at bonding ay nagkakaiba sa pag-iimbak ng key: sa pairing ang key ay nabubuhay ng isang sesyon, sa bonding ay permanenteng naiimbak.
  • Ang proseso ng bonding ay may kasamang pagpapalitan at pag-iimbak ng tatlong uri ng key: LTK (encryption), IRK (identification), CSRK (lagda).
  • Ang paraan ng pagpapatotoo na Numeric Comparison ay nagbibigay ng proteksyon laban sa MITM attack at inirerekomenda para sa mga device na may display.
  • Awtomatikong pinamamahalaan ng iOS ang bonding sa pamamagitan ng Core Bluetooth, nagbibigay ang Android ng API createBond() at removeBond().
  • Ang stale bonding pagkatapos ng reflashing ng Peripheral — karaniwang problemang nalulutas sa pamamagitan ng pagtanggal ng device mula sa Bluetooth list.
  • Ang bilang ng bonded device sa peripheral BLE chip ay limitado sa 8–20 record depende sa modelo.

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din