Bonding: nedir, BLE eşleştirme süreci ve güvenliği

Yazar: IT Sectr Yayınlanma: 2026-07-16 Okuma süresi: 10 dk

Bonding (eşleştirme) Bluetooth Low Energy'de, şifreleme anahtarlarını kalıcı olmayan bellekte depolayarak iki cihaz arasında kalıcı güvenli bir bağlantı oluşturma sürecidir. Bonding'den sonra cihazlar, PIN yeniden girişi veya kullanıcı onayı olmadan yeniden bağlantıda otomatik olarak şifreli bir bağlantıyı geri yükleyebilir. Bluetooth SIG Core Specification v5.4 (2025)'e göre, bonding mekanizması otomatik yeniden bağlantı gerektiren cihazlar için zorunludur — kulaklıklar, fitness takip cihazları, tıbbi sensörler ve IoT aksesuarları.

Ana noktalar

  • Bonding, bir oturum sona erdikten sonra BLE cihazları arasında şifreleme anahtarlarının uzun süreli depolanmasıdır.
  • Pairing'in aksine, bonding tekrarlanan onay olmadan şifreli bağlantıları otomatik olarak geri yüklemeye izin verir.
  • Bonding süreci, LTK, IRK, CSRK anahtar değişimi ve bunların her iki cihazın belleğinde depolanmasını içerir.
  • iOS, depolanan anahtarları silme olanağı ile Settings > Bluetooth üzerinden bağlı cihazları yönetir.
  • Android'de bonding yönetimi, BluetoothAdapter ve getBondedDevices() API'si aracılığıyla yapılır.

BLE'de Bonding Nedir?

Bonding, Bluetooth Low Energy'de pairing sürecinin bir uzantısıdır ve cihazların sonraki bağlantılar için şifreleme anahtarlarını depolamasıdır. BLE standardı üç güvenlik modu tanımlar: Security Mode 1 (kimlik doğrulama olmadan şifreleme), Security Mode 2 (şifreleme olmadan veri imzalama) ve Security Mode 3 (kimlik doğrulama ile şifreleme). Bonding, anahtar yeniden oluşturma olmadan tekrarlanan bağlantıların gerektiği şifreleme modları için geçerlidir.

Bonding Neden Gereklidir

Bonding'in temel amacı, cihazlar yeniden bağlandığında şifreli bağlantıların otomatik olarak geri yüklenmesidir. Kullanıcı kulaklıkları kutusundan çıkarıp taktığında, bonding Bluetooth menüsünden cihazı tekrar seçmeye gerek kalmadan akıllı telefona anında bağlantı sağlar. Apple Bluetooth Design Guidelines (2025)'e göre, bağlı cihazlar keşfedildikten sonra en fazla 2 saniye içinde bağlanmalıdır.

Bonding Sırasında Hangi Veriler Depolanır

Bonding sırasında, her cihaz bir dizi şifreleme malzemesi depolar: bağlantı şifrelemesi için Long Term Key (LTK), rastgele adresleri çözmek için Identity Resolving Key (IRK) ve veri imzalarını doğrulamak için Connection Signature Resolving Key (CSRK). LTK, pairing sırasında oluşturulan ve sonraki tüm şifreli oturumlar için kullanılan 128 bitlik birincil anahtardır.

AnahtarUzunlukAmaç
LTK128 bitYeniden bağlantı sonrası veri şifreleme
IRK128 bitRastgele özel adresleri (RPA) çözme
CSRK128 bitVeri imzalama ve doğrulama

Bonding ve Pairing: Farkı Nedir

Pairing, mevcut iletişim oturumunu şifrelemek için anahtarların geçici olarak müzakere edilmesidir. Bağlantı sona erdiğinde, şifreleme anahtarları silinir ve sonraki bağlantı için yeniden tam bir pairing süreci gerekir. Bonding, tüm pairing aşamalarını içerir ancak gelecekteki oturumlar için anahtarları ek olarak depolar. Neredeyse tüm tüketici Bluetooth cihazları (kulaklıklar, hoparlörler, saatler) bonding kullanır çünkü onsuz her bağlantı PIN yeniden girişi gerektirir.

Pairing ve Bonding'in Üç Aşaması

BLE spesifikasyonuna göre pairing süreci üç aşamadan oluşur. Aşama 1 — cihaz yeteneklerinin değişimi (IO yetenekleri, kimlik doğrulama desteği). Aşama 2 — eşleştirme yöntemine bağlı olarak Short Term Key (STK) veya LTK oluşturma ve değişimi. Aşama 3 — anahtar taşıma: cihazlar arasında LTK, IRK, CSRK değişimi. Cihazlar Aşama 3'ten sonra anahtarları depoladıysa — bu bonding'dir. Depolamadıysa — bu sadece pairing'dir.

ParametrePairingBonding
Anahtar depolamaDepolanmazNVRAM'de depolanır
Otomatik yeniden bağlantıHayırEvet
PIN yeniden girişiGerekliGerekli değil
KullanımAra sıra bağlantılarKalıcı cihazlar

Bonding Süreci Nasıl Çalışır

Bonding süreci, pairing başarıyla tamamlandıktan sonra, bir cihazın anahtar depolama isteği göndermesiyle başlatılır. BLE'de, Central (genellikle bir akıllı telefon) ve Peripheral (giyilebilir cihaz), Aşama 2'de kurulan güvenli kanal üzerinden anahtarları değiştirir. Başarılı anahtar değişiminden sonra, her cihaz bunları ortağın MAC adresi veya Identity Address'i ile birlikte kalıcı olmayan bellekte depolar.

Central Tarafında Anahtar Depolama

Central tarafında (iOS/Android), anahtarlar sistem Bluetooth deposunda saklanır. iOS, otomatik bonding yönetimi ile Core Bluetooth sistem yığını kullanır: ilk eşleştirmede anahtarlar cihazın NVRAM'ine kaydedilir ve aynı Peripheral'a sonraki bağlantılar otomatik olarak gerçekleşir. Geliştirici anahtarları doğrudan yönetmez — Core Bluetooth sistem yığını, anahtar depolamayı destekleyen bir cihaza bağlanırken bonding'i otomatik olarak işler.

Bonding ile Bağlantı Kurtarma

Yeniden bağlantıda, Peripheral genel adresini veya bir Resolvable Private Address (RPA) içeren reklam paketleri gönderir. Central paketi alır, adresi depolanan bağlı cihazlarla karşılaştırır ve bir eşleşme bulursa, depolanan LTK'yı kullanarak oturum kurtarmayı başlatır. LTK eşleşirse, şifreli bağlantı yeniden pairing olmadan kurulur.

Bonding'de Kimlik Doğrulama Yöntemleri

BLE spesifikasyonu, bonding'in güvenlik seviyesini etkileyen birkaç kimlik doğrulama yöntemi tanımlar. Yöntemin seçimi, cihazların IO yeteneklerine — ekranları, klavyeleri veya sayısal karşılaştırmayı onaylama yeteneklerine bağlıdır. Güvenli bonding, kritik olmayan uygulamalar için en azından Just Works ve Man-in-the-Middle saldırılarına karşı koruma gerektiren görevler için Numeric Comparison veya Passkey Entry kullanılmasını gerektirir.

Just Works

Just Works, cihazlardan birinin ekranı veya klavyesi olmadığında kullanılan kimlik doğrulamasız bir yöntemdir. Şifreleme anahtarları, ikinci cihazın kimliği doğrulanmadan iletilir — sıcaklık sensörleri, kalp atış monitörleri. Just Works, MITM saldırılarına karşı savunmasızdır, bu nedenle yalnızca veri tehlikeye atmasının tehdit oluşturmadığı cihazlar için kullanılır.

Numeric Comparison

Numeric Comparison, her iki cihazın altı haneli bir sayı gösterdiği ve kullanıcının eşleşmeyi onaylaması gereken bir kimlik doğrulama yöntemidir. Bu yöntem MITM saldırılarına karşı koruma sağlar ve ekranı olan cihazlar için önerilir — akıllı saatler, fitness takip cihazları, uzaktan kumandalar. Onaydan sonra, bonding maksimum güven seviyesiyle depolanır.

Passkey Entry

Passkey Entry, cihazlardan birinde altı haneli bir PIN girilmesini gerektirir. Genellikle kod bir cihaz tarafından oluşturulur ve üzerinde görüntülenir, kullanıcı ise ikinci cihazda girer. Bu yöntem, yüksek güvenlik gerektiren ancak cihazlardan birinin Numeric Comparison için ekranı olmayan tıbbi cihazlar ve IoT kilitleri için kullanılır.

iOS ve Android'de Bağlı Cihazları Yönetme

Bonding yönetimi, eşleştirilmiş cihazların depolanan anahtarlarını görüntüleme, silme ve bakımını yapma sürecidir. Mobil geliştirmede, özellikle bir çevre birimi sıfırlandığında veya ürün yazılımı değiştirildiğinde, bağlı cihaz durumlarını doğru şekilde ele almak önemlidir. Peripheral'deki bonding anahtarları değiştiğinde, Central'daki eski anahtarlar kaldırılmalı ve yeni bir eşleştirme yapılmalıdır.

iOS'te Yönetim

iOS, bağlı cihazları sistem Core Bluetooth yığını aracılığıyla otomatik olarak yönetir. Geliştiricinin tek tek bağlı cihazları görüntülemek veya silmek için doğrudan bir API'si yoktur — yönetim sistem ayarları (Ayarlar > Bluetooth > cihaz > Forget) aracılığıyla yapılır. Bonding'in programlama yoluyla temizlenmesi gerekiyorsa, uygulama UIApplication.openSettingsURLString kullanarak kullanıcıyı sistem Bluetooth ayarlarına yönlendirebilir.

Android'te Yönetim

Android, BluetoothAdapter sınıfı aracılığıyla bağlı cihazlarla çalışmak için doğrudan bir API sağlar. getBondedDevices() yöntemi, eşleştirilmiş tüm cihazların Set<BluetoothDevice> değerini döndürür. Bonding'i kaldırmak için removeBond() yöntemi yansıma yoluyla veya Android 12+'da resmi API BluetoothDevice.removeBond() kullanılır.

kotlin
val adapter = BluetoothAdapter.getDefaultAdapter()
val bondedDevices: Set<BluetoothDevice> = adapter.getBondedDevices()
bondedDevices.forEach { device ->
    Log.d("Bonding", "Bonded device: ${device.name}, ${device.address}")
}

Bonding Uygulamasının Pratik Örneği

Android'de bonding uygulaması, BluetoothDevice.ACTION_BOND_STATE_CHANGED olayları için BroadcastReceiver'ın doğru şekilde işlenmesini gerektirir. Bir cihaza ilk bağlantıda, Android sistemi cihaz bu yeteneği destekliyorsa otomatik olarak bonding'i başlatır. Geliştirici üç durumu işlemelidir: BOND_NONE (eşleştirilmemiş), BOND_BONDING (eşleştiriliyor), BOND_BONDED (eşleştirilmiş).

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", "Bağlantı kaldırıldı")
        }
    }
}

Android'te Bonding Başlatma

Android'te bonding başlatmak için BluetoothDevice nesnesinde createBond() yöntemi çağrılmalıdır. Yöntem bir boole değeri döndürür — eşleştirme süreci başarıyla başlatıldıysa true. Android 12'den itibaren createBond(), BLUETOOTH_CONNECT izni gerektirir ve uygulamanın arka planda Bluetooth erişimi yoksa sistem tarafından reddedilebilir.

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

Bonding ile Çalışırken Sık Yapılan Hatalar

Mobil uygulama geliştiricileri, BLE cihaz bonding'i ile çalışırken sıklıkla yaygın hatalarla karşılaşır. Bonding durumlarının yanlış işlenmesi, bağlantı hatalarına, yeniden eşleştirememeye veya veri kaybına yol açabilir. En sık karşılaşılan sorunları ve çözümlerini inceleyelim.

Peripheral Ürün Yazılımı Sıfırlama ve stale bonding

Bir BLE cihazı ürün yazılımı güncellemesinden sonra, bonding anahtarları sıfırlanabilir ancak akıllı telefon eski anahtarları (stale bonding) depolamaya devam eder. Bağlanmaya çalışıldığında, Central eski LTK ile oturumu geri yüklemeye çalışır, Peripheral anahtarı reddeder ve bağlantı başarısız olur. Çözüm, Ayarlar > Bluetooth > Cihazı Unut üzerinden akıllı telefonda bonding'i kaldırmak ve yeni bir eşleştirme yapmaktır.

Bağlı Cihaz Sayısı Sınırı

BLE yongalarının depolanabilir bonding kaydı sayısında bir sınırı vardır. Popüler Nordic nRF5x yongaları için sınır, yapılandırmaya bağlı olarak 8-20 kayıttır. Sınır aşıldığında, cihaz yeni eşleştirmeleri kabul etmeyi durdurur. Çözüm, kullanılmayan bonding kayıtlarını kaldırmak veya temizlemeli öncelik tabanlı bir anahtar halkası kullanmaktır.

Gizlilik Özelliği Sorunları

Gizlilik Özelliği (rastgele MAC adresleri) kullanıldığında, cihaz periyodik olarak adresini değiştirir. Central IRK'yı depolamadıysa, yeni rastgele adresi bilinen bir cihazla eşleştiremez. Çözüm, IRK depolamayı doğru şekilde uygulamak ve her cihaz keşfinde RPA'yı çözmek için kullanmaktır.

Sıkça Sorulan Sorular

BLE'de Bonding Nedir?

Bluetooth Low Energy'de Bonding, bir pairing oturumu sona erdikten sonra şifreleme anahtarlarını (LTK, IRK, CSRK) depolayarak, sonraki yeniden bağlantılarda PIN yeniden girişi veya onay olmadan otomatik olarak güvenli bir bağlantıyı geri yükleme sürecidir.

Bonding, Pairing'den Nasıl Farklıdır?

Pairing, mevcut oturum için anahtarların geçici müzakeresidir ve bağlantı koptuğunda silinir. Bonding, tam pairing süreci artı gelecekteki bağlantılar için anahtar depolamayı içerir. Bonding, otomatik olarak yeniden bağlanan cihazlar için gereklidir — kulaklıklar, saatler, fitness takip cihazları.

iPhone'da Bonding Nasıl Kaldırılır?

Bir iPhone'da bonding kaldırma, sistem ayarları aracılığıyla yapılır: Ayarlar > Bluetooth > cihazın yanındaki bilgi simgesine (i) dokunun > Forget This Device'ı seçin. Bundan sonra şifreleme anahtarları silinir ve sonraki bağlantı yeni bir eşleştirme gerektirir.

Kaç Cihaz Bonding'de Olabilir?

Bağlı cihazların sayısı, BLE yongasının kalıcı olmayan bellek kapasitesine bağlıdır. Akıllı telefonlar yüzlerce kayıt depolayabilirken, düşük maliyetli BLE çevre birimleri 8-20 kayıtla sınırlıdır. Sınır aşıldığında, eski kayıtlar üzerine yazılır veya cihaz yeni eşleştirmeleri kabul etmeyi durdurur.

Stale Bonding Nedir?

Stale bonding, bir cihazdaki (genellikle Peripheral) şifreleme anahtarlarının (örneğin, ürün yazılımı güncellemesinden sonra) sıfırlandığı, ancak Central'ın hala eski anahtarları sakladığı bir durumdur. Sonuç olarak, kullanıcı Bluetooth ayarlarından stale bonding'i kaldırıp yeni bir eşleştirme yapana kadar bağlantı kurulamaz.

Özet

  • Bonding, PIN yeniden girişi olmadan şifreli bağlantıları otomatik olarak geri yüklemek için önemli bir BLE mekanizmasıdır.
  • Pairing ve bonding, anahtar depolama açısından farklıdır: pairing'de anahtarlar bir oturum sürer, bonding'de kalıcı olarak depolanır.
  • Bonding süreci, üç tür anahtarın değişimini ve depolanmasını içerir: LTK (şifreleme), IRK (kimlik), CSRK (imza).
  • Numeric Comparison kimlik doğrulama yöntemi MITM saldırılarına karşı koruma sağlar ve ekranı olan cihazlar için önerilir.
  • iOS, Core Bluetooth aracılığıyla bonding'i otomatik olarak yönetirken, Android API createBond() ve removeBond() sağlar.
  • Peripheral ürün yazılımı güncellemesinden sonra stale bonding, cihazı Bluetooth listesinden kaldırarak çözülen yaygın bir sorundur.
  • Çevre birimi BLE yongasındaki bağlı cihaz sayısı, modele bağlı olarak 8-20 kayıtla sınırlıdır.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun