Bonding: apa itu, proses dan keamanan pemasangan BLE

Penulis: IT Sectr Diterbitkan: 2026-07-16 Waktu membaca: 10 mnt

Bonding (pemasangan) di Bluetooth Low Energy adalah proses pembuatan koneksi permanen yang aman antara dua perangkat dengan menyimpan kunci kriptografi di memori non-volatile. Setelah bonding, perangkat dapat secara otomatis memulihkan koneksi terenkripsi saat menghubungkan ulang tanpa memasukkan PIN atau konfirmasi pengguna. Menurut Bluetooth SIG Core Specification v5.4 (2025), mekanisme bonding wajib untuk perangkat yang memerlukan koneksi ulang otomatis — headphone, pelacak kebugaran, sensor medis, dan aksesori IoT.

Poin Penting

  • Bonding — penyimpanan jangka panjang kunci enkripsi antara perangkat BLE setelah sesi berakhir.
  • Tidak seperti pairing, bonding memungkinkan pemulihan otomatis koneksi terenkripsi tanpa konfirmasi berulang.
  • Proses bonding mencakup pertukaran kunci LTK, IRK, CSRK dan penyimpanannya di memori kedua perangkat.
  • iOS mengelola perangkat bonded melalui Settings > Bluetooth dengan kemampuan menghapus kunci yang disimpan.
  • Untuk Android, pengelolaan bonding dilakukan melalui BluetoothAdapter dan API getBondedDevices().

Apa itu Bonding di BLE?

Bonding — adalah perluasan dari proses pairing di Bluetooth Low Energy, di mana perangkat menyimpan kunci enkripsi untuk koneksi selanjutnya. Standar BLE mendefinisikan tiga mode keamanan: Security Mode 1 (enkripsi tanpa autentikasi), Security Mode 2 (penandatanganan data tanpa enkripsi) dan Security Mode 3 (enkripsi dengan autentikasi). Bonding relevan untuk mode dengan enkripsi yang memerlukan banyak koneksi tanpa negosiasi ulang kunci.

Mengapa Bonding diperlukan

Tujuan utama bonding adalah pemulihan otomatis koneksi terenkripsi saat menghubungkan ulang perangkat. Saat pengguna mengeluarkan headphone dari casing dan memakainya, bonding memastikan koneksi instan ke smartphone tanpa perlu memilih ulang perangkat di menu Bluetooth. Menurut Apple Bluetooth Design Guidelines (2025), perangkat bonded harus terhubung dalam waktu maksimal 2 detik sejak terdeteksi.

Data apa yang disimpan selama Bonding

Selama bonding, setiap perangkat menyimpan satu set materi kriptografi: Long Term Key (LTK) untuk enkripsi koneksi, Identity Resolving Key (IRK) untuk menyelesaikan alamat acak, Connection Signature Resolving Key (CSRK) untuk memverifikasi tanda tangan data. LTK — kunci utama sepanjang 128 bit, dihasilkan selama proses pairing dan digunakan untuk semua sesi terenkripsi selanjutnya.

KunciPanjangFungsi
LTK128 bitEnkripsi data setelah koneksi ulang
IRK128 bitMenyelesaikan alamat privat acak (RPA)
CSRK128 bitMenandatangani dan memverifikasi keaslian data

Bonding vs Pairing: apa perbedaannya

Pairing — adalah kesepakatan sementara kunci untuk mengenkripsi sesi komunikasi saat ini. Saat koneksi berakhir, kunci enkripsi dihapus, dan pada koneksi berikutnya diperlukan proses pairing berulang. Bonding mencakup semua tahap pairing, tetapi juga menyimpan kunci untuk sesi selanjutnya. Praktis semua perangkat Bluetooth konsumen (headphone, speaker, jam tangan) menggunakan bonding, karena tanpanya setiap koneksi akan memerlukan memasukkan PIN lagi.

Tiga fase Pairing dan Bonding

Proses pairing menurut spesifikasi BLE terdiri dari tiga fase. Fase 1 — pertukaran kemampuan perangkat (IO capabilities, dukungan autentikasi). Fase 2 — pembuatan dan pertukaran Short Term Key (STK) atau LTK, tergantung pada metode koneksi. Fase 3 — transport kunci: pertukaran LTK, IRK, CSRK antar perangkat. Jika perangkat menyimpan kunci setelah Fase 3 — ini adalah bonding. Jika tidak — hanya pairing.

ParameterPairingBonding
Penyimpanan kunciTidak disimpanDisimpan di NVRAM
Koneksi otomatisTidakYa
Memasukkan PIN ulangDiperlukanTidak diperlukan
PenggunaanKoneksi sporadisPerangkat tetap

Bagaimana proses Bonding bekerja

Proses bonding dimulai setelah pairing berhasil diselesaikan, ketika salah satu perangkat mengirim permintaan untuk menyimpan kunci. Di BLE, Central (biasanya smartphone) dan Peripheral (perangkat yang dapat dikenakan) bertukar kunci melalui saluran aman yang dibuat di Fase 2. Setelah pertukaran kunci berhasil, setiap perangkat menyimpannya di memori non-volatile bersama dengan alamat MAC atau Identity Address pasangan.

Penyimpanan kunci di sisi Central

Di sisi Central (iOS/Android), kunci disimpan di penyimpanan sistem Bluetooth. iOS menggunakan tumpukan sistem Core Bluetooth dengan manajemen bonding otomatis: pada koneksi pertama, kunci disimpan di NVRAM perangkat, dan koneksi berikutnya ke Peripheral yang sama terjadi secara otomatis. Pengembang tidak mengelola kunci secara langsung — tumpukan sistem Core Bluetooth memproses bonding secara otomatis saat menjalin koneksi dengan perangkat yang mendukung penyimpanan kunci.

Memulihkan koneksi melalui Bonding

Saat menghubungkan ulang, Peripheral mengirim paket iklan yang berisi alamat publiknya atau Resolvable Private Address (RPA). Central menerima paket, mencocokkan alamat dengan perangkat bonded yang disimpan dan, jika ditemukan kecocokan, memulai pemulihan sesi menggunakan LTK yang disimpan. Jika LTK cocok — koneksi terenkripsi dibuat tanpa pairing ulang.

Metode autentikasi saat Bonding

Spesifikasi BLE mendefinisikan beberapa metode autentikasi yang mempengaruhi tingkat keamanan bonding. Pemilihan metode tergantung pada kemampuan IO perangkat — keberadaan layar, keyboard, kemampuan untuk mengonfirmasi perbandingan numerik. Bonding yang aman memerlukan penggunaan metode setidaknya Just Works untuk aplikasi non-kritis dan Numeric Comparison atau Passkey Entry untuk tugas yang memerlukan perlindungan terhadap serangan Man-in-the-Middle.

Just Works

Just Works — metode tanpa autentikasi, digunakan ketika salah satu perangkat tidak memiliki layar atau keyboard. Kunci enkripsi dikirim tanpa verifikasi keaslian perangkat kedua — suhu, detak jantung). Just Works rentan terhadap serangan MITM, sehingga hanya diterapkan pada perangkat di mana kompromi data tidak menimbulkan ancaman.

Numeric Comparison

Numeric Comparison — metode autentikasi di mana kedua perangkat menampilkan angka enam digit, dan pengguna harus mengonfirmasi kecocokan. Metode ini memberikan perlindungan terhadap serangan MITM dan direkomendasikan untuk perangkat dengan layar — jam tangan pintar, pelacak kebugaran, remote control. Setelah konfirmasi, bonding disimpan dengan tingkat kepercayaan maksimum.

Passkey Entry

Passkey Entry memerlukan memasukkan kode PIN enam digit di salah satu perangkat. Biasanya kode dibuat oleh satu perangkat dan ditampilkan di perangkat tersebut, dan pengguna memasukkannya di perangkat kedua. Metode ini diterapkan pada perangkat medis dan kunci IoT yang memerlukan tingkat keamanan tinggi, tetapi salah satu perangkat tidak memiliki layar untuk Numeric Comparison.

Mengelola perangkat bonded di iOS dan Android

Manajemen bonding — proses melihat, menghapus, dan memelihara kunci yang disimpan dari perangkat yang dipasangkan. Dalam pengembangan seluler, penting untuk menangani status perangkat bonded dengan benar, terutama saat mengatur ulang pengaturan perangkat periferal atau mengganti firmware-nya. Saat kunci bonding berubah di Peripheral, kunci lama di Central harus dihapus dan pemasangan ulang harus dilakukan.

Manajemen di iOS

iOS secara otomatis mengelola perangkat bonded melalui tumpukan sistem Core Bluetooth. Pengembang tidak memiliki API langsung untuk melihat atau menghapus perangkat bonded individual — manajemen dilakukan melalui pengaturan sistem (Settings > Bluetooth > perangkat > Forget). Jika diperlukan pembersihan bonding secara terprogram, aplikasi dapat mengarahkan pengguna ke pengaturan sistem Bluetooth menggunakan UIApplication.openSettingsURLString.

Manajemen di Android

Android menyediakan API langsung untuk bekerja dengan perangkat bonded melalui kelas BluetoothAdapter. Metode getBondedDevices() mengembalikan Set<BluetoothDevice> dari semua perangkat yang dipasangkan. Untuk menghapus bonding, gunakan metode removeBond() melalui refleksi atau di Android 12+ API resmi 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}")
}

Contoh praktis implementasi Bonding

Implementasi bonding di sisi Android memerlukan penanganan yang benar dari BroadcastReceiver untuk peristiwa BluetoothDevice.ACTION_BOND_STATE_CHANGED. Saat koneksi pertama ke perangkat, sistem Android secara otomatis memulai bonding, jika perangkat mendukung kemampuan ini. Pengembang harus menangani tiga status: BOND_NONE (belum dipasangkan), BOND_BONDING (proses pemasangan), BOND_BONDED (dipasangkan).

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

Memulai Bonding di Android

Untuk memulai bonding di Android, panggil metode createBond() pada objek BluetoothDevice. Metode mengembalikan boolean — true, jika proses pemasangan berhasil dimulai. Mulai Android 12, createBond() memerlukan izin BLUETOOTH_CONNECT dan dapat ditolak oleh sistem jika aplikasi tidak memiliki akses latar belakang ke Bluetooth.

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

Kesalahan umum saat bekerja dengan Bonding

Pengembang aplikasi seluler sering menghadapi kesalahan umum saat bekerja dengan bonding perangkat BLE. Penanganan status bonding yang tidak benar dapat menyebabkan kegagalan koneksi, ketidakmampuan untuk memasangkan ulang, atau kehilangan data. Mari kita lihat masalah yang paling umum dan solusinya.

Reset firmware Peripheral dan bonding usang

Setelah memperbarui firmware perangkat BLE, kunci bonding-nya mungkin di-reset, tetapi smartphone terus menyimpan kunci usang (stale bonding). Saat mencoba koneksi, Central mencoba memulihkan sesi dengan LTK lama, Peripheral menolak kunci, dan koneksi tidak terbentuk. Solusi — hapus bonding di smartphone melalui Settings > Bluetooth > Forget Device dan lakukan pemasangan ulang.

Batas jumlah perangkat bonded

Chip BLE memiliki batasan jumlah catatan bonding yang disimpan. Untuk chip Nordic nRF5x yang populer, batasnya adalah 8–20 catatan tergantung konfigurasi. Saat batas terlampaui, perangkat berhenti menerima pemasangan baru. Solusi — hapus catatan bonding yang tidak digunakan atau gunakan rantai kunci dengan pembersihan prioritas.

Masalah dengan Privacy Feature

Saat menggunakan Privacy Feature (alamat MAC acak), perangkat secara periodik mengubah alamatnya. Jika Central tidak menyimpan IRK, ia tidak dapat mencocokkan alamat acak baru dengan perangkat yang dikenal. Solusi — implementasikan penyimpanan IRK dengan benar dan gunakan untuk menyelesaikan RPA setiap kali perangkat terdeteksi.

Pertanyaan yang Sering Diajukan

Apa itu Bonding di BLE?

Bonding di Bluetooth Low Energy — proses menyimpan kunci enkripsi (LTK, IRK, CSRK) setelah sesi pairing berakhir untuk pemulihan otomatis koneksi aman pada koneksi berikutnya tanpa memasukkan PIN atau konfirmasi.

Apa perbedaan Bonding dengan Pairing?

Pairing — kesepakatan sementara kunci untuk sesi saat ini, yang dihapus saat koneksi putus. Bonding mencakup proses pairing lengkap plus penyimpanan kunci untuk koneksi mendatang. Bonding diperlukan untuk perangkat yang terhubung secara otomatis — headphone, jam tangan, pelacak kebugaran.

Bagaimana cara menghapus Bonding di iPhone?

Di iPhone, penghapusan bonding dilakukan melalui pengaturan sistem: Settings > Bluetooth > ketuk ikon informasi (i) di samping perangkat > pilih Forget This Device. Setelah itu kunci enkripsi dihapus, dan pada koneksi berikutnya diperlukan pemasangan ulang.

Berapa banyak perangkat yang bisa dalam Bonding?

Jumlah perangkat bonded tergantung pada kapasitas memori non-volatile chip BLE. Smartphone dapat menyimpan ratusan catatan, sementara perangkat periferal BLE murah terbatas pada 8–20 catatan. Saat batas terlampaui, catatan lama ditimpa atau perangkat berhenti menerima pemasangan baru.

Apa itu stale bonding?

Stale bonding — situasi di mana kunci enkripsi di satu perangkat (biasanya Peripheral) telah di-reset (misalnya saat flashing ulang), tetapi di Central kunci lama masih tersisa. Akibatnya, koneksi tidak terbentuk sampai pengguna menghapus bonding usang melalui pengaturan Bluetooth dan melakukan pemasangan ulang.

Kesimpulan

  • Bonding — mekanisme kunci BLE untuk pemulihan otomatis koneksi terenkripsi tanpa memasukkan PIN ulang.
  • Pairing dan bonding berbeda dalam penyimpanan kunci: pada pairing kunci hidup satu sesi, pada bonding disimpan secara permanen.
  • Proses bonding mencakup pertukaran dan penyimpanan tiga jenis kunci: LTK (enkripsi), IRK (identifikasi), CSRK (tanda tangan).
  • Metode autentikasi Numeric Comparison memberikan perlindungan terhadap serangan MITM dan direkomendasikan untuk perangkat dengan layar.
  • iOS mengelola bonding secara otomatis melalui Core Bluetooth, Android menyediakan API createBond() dan removeBond().
  • Stale bonding setelah flashing ulang Peripheral — masalah umum yang diselesaikan dengan menghapus perangkat dari daftar Bluetooth.
  • Jumlah perangkat bonded di chip BLE periferal terbatas pada 8–20 catatan tergantung model.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga