Bonding: co to jest, proces i bezpieczeństwo parowania BLE

Autor: IT Sectr Opublikowano: 2026-07-16 Czas czytania: 10 min

Bonding (parowanie) w Bluetooth Low Energy to proces tworzenia stałego, zabezpieczonego połączenia między dwoma urządzeniami z zachowaniem kluczy kryptograficznych w pamięci nieulotnej. Po bondingowym połączeniu urządzenia mogą automatycznie przywracać szyfrowane połączenie przy ponownym podłączeniu bez ponownego wprowadzania PIN-u lub potwierdzania przez użytkownika. Według Bluetooth SIG Core Specification v5.4 (2025), mechanizm bondingu jest obowiązkowy dla urządzeń wymagających automatycznego ponownego łączenia — słuchawek, trackerów fitness, czujników medycznych i akcesoriów IoT.

Najważniejsze

  • Bonding — to długoterminowe przechowywanie kluczy szyfrowania między urządzeniami BLE po zakończeniu sesji.
  • W przeciwieństwie do pairingu, bonding umożliwia automatyczne przywracanie szyfrowanego połączenia bez ponownego potwierdzania.
  • Proces bondingu obejmuje wymianę kluczy LTK, IRK, CSRK i ich zapisanie w pamięci obu urządzeń.
  • iOS zarząda urządzeniami z bondingiem przez Ustawienia > Bluetooth z możliwością usunięcia zapisanych kluczy.
  • Dla Android zarządzanie bondingiem odbywa się przez BluetoothAdapter i API getBondedDevices().

Co to jest Bonding w BLE?

Bonding — to rozszerzenie procesu pairingu w Bluetooth Low Energy, w którym urządzenia zapisują klucze szyfrowania do późniejszych połączeń. Standard BLE określa trzy tryby bezpieczeństwa: Security Mode 1 (szyfrowanie bez uwierzytelniania), Security Mode 2 (podpisywanie danych bez szyfrowania) i Security Mode 3 (szyfrowanie z uwierzytelnianiem). Bonding jest istotny w trybach z szyfrowaniem, gdy wymagane jest wielokrotne łączenie bez ponownego uzgadniania kluczy.

Po co jest Bonding

Głównym przeznaczeniem bondingu jest automatyczne przywracanie szyfrowanego połączenia przy ponownym podłączeniu urządzeń. Gdy użytkownik wyjmuje słuchawki z etui i zakłada je, bonding zapewnia błyskawiczne połączenie ze smartfonem bez konieczności ponownego wybierania urządzenia w menu Bluetooth. Według Apple Bluetooth Design Guidelines (2025), urządzenia z bondingiem powinny łączyć się w czasie nie większym niż 2 sekundy od momentu wykrycia.

Jakie dane są zapisywane podczas Bondingu

Podczas bondingu każde urządzenie zapisuje zestaw materiałów kryptograficznych: Long Term Key (LTK) do szyfrowania połączenia, Identity Resolving Key (IRK) do rozpoznawania losowych adresów, Connection Signature Resolving Key (CSRK) do weryfikacji podpisów danych. LTK — główny klucz o długości 128 bitów, generowany podczas procesu pairingu i używany do wszystkich późniejszych szyfrowanych sesji.

KluczDługośćPrzeznaczenie
LTK128 bitówSzyfrowanie danych po ponownym podłączeniu
IRK128 bitówRozpoznawanie losowych prywatnych adresów (RPA)
CSRK128 bitówPodpisywanie i weryfikacja autentyczności danych

Bonding vs Pairing: jaka jest różnica

Pairing — to tymczasowe uzgadnianie kluczy do szyfrowania bieżącej sesji komunikacji. Po zakończeniu połączenia klucze szyfrowania są usuwane, a przy następnym podłączeniu wymagany jest ponowny proces pairingu. Bonding obejmuje wszystkie etapy pairingu, ale dodatkowo zapisuje klucze do późniejszych sesji. Praktycznie wszystkie konsumenckie urządzenia Bluetooth (słuchawki, głośniki, zegarki) używają bondingu, ponieważ bez niego każde podłączenie wymagałoby ponownego wprowadzania PIN-u.

Trzy fazy Pairingu i Bondingu

Proces pairingu według specyfikacji BLE składa się z trzech faz. Faza 1 — wymiana możliwości urządzeń (IO capabilities, obsługa uwierzytelniania). Faza 2 — generowanie i wymiana Short Term Key (STK) lub LTK, w zależności od metody łączenia. Faza 3 — transport kluczy: wymiana LTK, IRK, CSRK między urządzeniami. Jeśli urządzenia zapisały klucze po Fazie 3 — to jest bonding. Jeśli nie — to zwykły pairing.

ParametrPairingBonding
Przechowywanie kluczyNie są zapisywaneSą zapisywane w NVRAM
Automatyczne łączenieNieTak
Ponowne wprowadzanie PINWymaganeNie wymagane
ZastosowaniePołączenia sporadyczneUrządzenia stałe

Jak działa proces Bondingu

Proces bondingu jest inicjowany po pomyślnym zakończeniu pairingu, gdy jedno z urządzeń wysyła żądanie zapisania kluczy. W BLE Central (zwykle smartfon) i Peripheral (urządzenie noszone) wymieniają się kluczami przez zabezpieczony kanał ustanowiony w Fazie 2. Po pomyślnej wymianie kluczy każde urządzenie zapisuje je w pamięci nieulotnej wraz z adresem MAC lub Identity Address partnera.

Przechowywanie kluczy po stronie Central

Po stronie Central (iOS/Android) klucze są przechowywane w systemowym magazynie Bluetooth. iOS używa systemowego stosu Core Bluetooth z automatycznym zarządzaniem bondingiem: przy pierwszym łączeniu klucze są zapisywane w NVRAM urządzenia, a kolejne połączenia z tym samym Peripheral odbywają się automatycznie. Deweloper nie zarządza kluczami bezpośrednio — systemowy stos Core Bluetooth obsługuje bonding automatycznie podczas nawiązywania połączenia z urządzeniem, które obsługuje zapisywanie kluczy.

Przywracanie połączenia przez Bonding

Przy ponownym podłączeniu Peripheral wysyła pakiety reklamowe zawierające albo swój publiczny adres, albo Resolvable Private Address (RPA). Central odbiera pakiet, dopasowuje adres do zapisanych urządzeń z bondingiem i, jeśli znajdzie dopasowanie, inicjuje przywrócenie sesji z użyciem zapisanego LTK. Jeśli LTK jest zgodny — szyfrowane połączenie zostaje ustanowione bez ponownego pairingu.

Metody uwierzytelniania przy Bondingu

Specyfikacja BLE określa kilka metod uwierzytelniania, które wpływają na poziom bezpieczeństwa bondingu. Wybór metody zależy od możliwości IO urządzeń — obecności wyświetlacza, klawiatury, możliwości potwierdzenia porównania numerycznego. Bezpieczny bonding wymaga użycia metody co najmniej Just Works dla niekrytycznych zastosowań oraz Numeric Comparison lub Passkey Entry dla zadań wymagających ochrony przed atakami Man-in-the-Middle.

Just Works

Just Works — metoda bez uwierzytelniania, używana gdy jedno z urządzeń nie ma wyświetlacza ani klawiatury. Klucze szyfrowania są przesyłane bez weryfikacji autentyczności drugiego urządzenia — temperatura, pulsometr). Just Works jest podatna na ataki MITM, dlatego stosuje się ją tylko w urządzeniach, gdzie kompromitacja danych nie stanowi zagrożenia.

Numeric Comparison

Numeric Comparison — metoda uwierzytelniania, w której oba urządzenia wyświetlają sześciocyfrową liczbę, a użytkownik musi potwierdzić zgodność. Ta metoda zapewnia ochronę przed atakami MITM i jest zalecana dla urządzeń z wyświetlaczem — smartwatchy, trackerów fitness, pilotów zdalnego sterowania. Po potwierdzeniu bonding jest zapisywany z maksymalnym poziomem zaufania.

Passkey Entry

Passkey Entry wymaga wprowadzenia sześciocyfrowego PIN-u na jednym z urządzeń. Zazwyczaj kod jest generowany przez jedno urządzenie i wyświetlany na nim, a użytkownik wprowadza go na drugim. Metoda jest stosowana dla urządzeń medycznych i zamków IoT, gdzie wymagany jest wysoki poziom bezpieczeństwa, ale jedno z urządzeń nie ma wyświetlacza do Numeric Comparison.

Zarządzanie urządzeniami z bondingiem w iOS i Android

Zarządzanie bondingiem — to proces przeglądania, usuwania i utrzymywania zapisanych kluczy sparowanych urządzeń. W programowaniu mobilnym ważne jest prawidłowe obsługiwanie stanów urządzeń z bondingiem, szczególnie przy resetowaniu ustawień urządzenia peryferyjnego lub wymianie jego oprogramowania. W przypadku zmiany kluczy bondingu na Peripheral należy usunąć stare klucze na Central i ponownie przeprowadzić łączenie.

Zarządzanie w iOS

iOS automatycznie zarządza urządzeniami z bondingiem przez systemowy stos Core Bluetooth. Deweloper nie ma bezpośredniego API do przeglądania lub usuwania poszczególnych urządzeń z bondingiem — zarządzanie odbywa się przez ustawienia systemowe (Settings > Bluetooth > urządzenie > Forget). Jeśli konieczne jest programowe czyszczenie bondingu, aplikacja może przekierować użytkownika do ustawień systemowych Bluetooth za pomocą UIApplication.openSettingsURLString.

Zarządzanie w Android

Android udostępnia bezpośrednie API do pracy z urządzeniami z bondingiem przez klasę BluetoothAdapter. Metoda getBondedDevices() zwraca Set<BluetoothDevice> wszystkich sparowanych urządzeń. Do usuwania bondingu używa się metody removeBond() przez refleksję lub w Android 12+ oficjalne 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}")
}

Praktyczny przykład implementacji Bondingu

Implementacja bondingu po stronie Android wymaga prawidłowej obsługi BroadcastReceiver dla zdarzeń BluetoothDevice.ACTION_BOND_STATE_CHANGED. Przy pierwszym podłączeniu do urządzenia system Android automatycznie inicjuje bonding, jeśli urządzenie obsługuje tę możliwość. Deweloper musi obsługiwać trzy stany: BOND_NONE (nie sparowane), BOND_BONDING (proces łączenia), BOND_BONDED (sparowane).

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 usunięty")
        }
    }
}

Inicjowanie Bondingu w Android

Aby zainicjować bonding w Android, należy wywołać metodę createBond() na obiekcie BluetoothDevice. Metoda zwraca boolean — true, jeśli proces łączenia został uruchomiony pomyślnie. Od Androida 12, createBond() wymaga uprawnienia BLUETOOTH_CONNECT i może być odrzucona przez system, jeśli aplikacja nie ma dostępu tłowego do Bluetooth.

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

Typowe błędy przy pracy z Bondingiem

Deweloperzy aplikacji mobilnych często spotykają się z typowych błędami przy pracy z bondingiem urządzeń BLE. Nieprawidłowa obsługa stanów bondingu może prowadzić do problemów z łączeniem, braku możliwości ponownego parowania lub utraty danych. Omówmy najczęstsze problemy i ich rozwiązania.

Reset oprogramowania Peripheral i nieaktualny bonding

Po aktualizacji oprogramowania urządzenia BLE jego klucze bondingu mogą zostać zresetowane, ale smartfon nadal przechowuje nieaktualne klucze (stale bonding). Przy próbie podłączenia Central próbuje przywrócić sesję ze starym LTK, Peripheral odrzuca klucz i połączenie nie zostaje nawiązane. Rozwiązanie — usuń bonding na smartfonie przez Ustawienia > Bluetooth > Zapomnij urządzenie i wykonaj ponowne parowanie.

Limit liczby urządzeń z bondingiem

Układy BLE mają ograniczenie liczby zapisanych wpisów bondingu. Dla popularnych układów Nordic nRF5x limit wynosi 8–20 wpisów w zależności od konfiguracji. Po przekroczeniu limitu urządzenie przestaje przyjmować nowe połączenia. Rozwiązanie — usuwaj nieużywane wpisy bondingu lub używaj wiązki kluczy z priorytetowym czyszczeniem.

Problemy z Privacy Feature

Przy użyciu Privacy Feature (losowe adresy MAC) urządzenie okresowo zmienia swój adres. Jeśli Central nie zapisał IRK, nie może dopasować nowego losowego adresu do znanego urządzenia. Rozwiązanie — prawidłowo zaimplementuj przechowywanie IRK i używaj go do rozpoznawania RPA przy każdym wykryciu urządzenia.

Często zadawane pytania

Co to jest Bonding w BLE?

Bonding w Bluetooth Low Energy — to proces zapisywania kluczy szyfrowania (LTK, IRK, CSRK) po zakończeniu sesji pairingu w celu automatycznego przywracania zabezpieczonego połączenia przy kolejnych podłączeniach bez ponownego wprowadzania PIN-u lub potwierdzania.

Czym Bonding różni się od Pairingu?

Pairing — to tymczasowe uzgadnianie kluczy dla bieżącej sesji, które są usuwane po zakończeniu połączenia. Bonding obejmuje pełny proces pairingu oraz zapisywanie kluczy do przyszłych połączeń. Bonding jest wymagany dla urządzeń, które łączą się automatycznie — słuchawek, zegarków, trackerów fitness.

Jak usunąć Bonding na iPhonie?

Na iPhonie usunięcie bondingu wykonuje się przez ustawienia systemowe: Settings > Bluetooth > kliknij ikonę informacji (i) obok urządzenia > wybierz Forget This Device. Po tym klucze szyfrowania są usuwane, a przy następnym podłączeniu wymagane będzie ponowne parowanie.

Ile urządzeń może być w Bondingu?

Liczba urządzeń z bondingiem zależy od ilości pamięci nieulotnej układu BLE. Smartfony mogą przechowywać setki wpisów, podczas gdy budżetowe urządzenia peryferyjne BLE są ograniczone do 8–20 wpisów. Po przekroczeniu limitu stare wpisy są nadpisywane lub urządzenie przestaje przyjmować nowe połączenia.

Co to jest stale bonding?

Stale bonding — sytuacja, gdy klucze szyfrowania na jednym urządzeniu (zwykle Peripheral) zostały zresetowane (np. przy zmianie oprogramowania), a na Central pozostały stare klucze. W rezultacie połączenie nie zostaje nawiązane, dopóki użytkownik nie usunie nieaktualnego bondingu przez ustawienia Bluetooth i nie wykona ponownego parowania.

Podsumowanie

  • Bonding — kluczowy mechanizm BLE do automatycznego przywracania szyfrowanych połączeń bez ponownego wprowadzania PIN-u.
  • Pairing i bonding różnią się przechowywaniem kluczy: przy pairing klucze żyją jedną sesję, przy bonding są przechowywane na stałe.
  • Proces bondingu obejmuje wymianę i zapisanie trzech typów kluczy: LTK (szyfrowanie), IRK (identyfikacja), CSRK (podpis).
  • Metoda uwierzytelniania Numeric Comparison zapewnia ochronę przed atakami MITM i jest zalecana dla urządzeń z wyświetlaczem.
  • iOS zarządza bondingiem automatycznie przez Core Bluetooth, Android udostępnia API createBond() i removeBond().
  • Nieaktualny bonding po zmianie oprogramowania Peripheral — częsty problem rozwiązywany przez usunięcie urządzenia z listy Bluetooth.
  • Liczba urządzeń z bondingiem na peryferyjnym układzie BLE jest ograniczona do 8–20 wpisów w zależności od modelu.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również