Bonding: ما هو، عملية وأمان إقران BLE

المؤلف: IT Sectr نُشر: 2026-07-16 وقت القراءة: 10 دق

Bonding (الإقران) في Bluetooth Low Energy هو عملية إنشاء اتصال آمن دائم بين جهازين عن طريق تخزين المفاتيح التشفيرية في ذاكرة غير متطايرة. بعد bonding، يمكن للأجهزة استعادة الاتصال المشفر تلقائياً عند إعادة الاتصال دون الحاجة إلى إعادة إدخال PIN أو تأكيد المستخدم. وفقاً لـ Bluetooth SIG Core Specification v5.4 (2025)، فإن آلية bonding إلزامية للأجهزة التي تتطلب إعادة اتصال تلقائي — سماعات الرأس، أجهزة تتبع اللياقة البدنية، أجهزة الاستشعار الطبية وملحقات إنترنت الأشياء.

الملامح الرئيسية

  • Bonding هو التخزين طويل الأمد لمفاتيح التشفير بين أجهزة BLE بعد انتهاء الجلسة.
  • على عكس pairing، يسمح bonding باستعادة الاتصالات المشفرة تلقائياً دون تأكيد متكرر.
  • تتضمن عملية bonding تبادل المفاتيح LTK، IRK، CSRK وتخزينها في ذاكرة كلا الجهازين.
  • يدير iOS الأجهزة المرتبطة من خلال Settings > Bluetooth مع إمكانية حذف المفاتيح المخزنة.
  • في Android، تتم إدارة bonding عبر BluetoothAdapter وAPI getBondedDevices().

ما هو Bonding في BLE؟

Bonding هو امتداد لعملية pairing في Bluetooth Low Energy، حيث تقوم الأجهزة بتخزين مفاتيح التشفير للاتصالات اللاحقة. يحدد معيار BLE ثلاثة أوضاع أمان: Security Mode 1 (تشفير بدون مصادقة)، Security Mode 2 (توقيع البيانات بدون تشفير) وSecurity Mode 3 (تشفير مع مصادقة). Bonding ذو صلة بالأوضاع مع التشفير حيث تكون الاتصالات المتكررة دون إعادة إنشاء المفاتيح مطلوبة.

لماذا نحتاج Bonding

الغرض الرئيسي من bonding هو الاستعادة التلقائية للاتصالات المشفرة عند إعادة اتصال الأجهزة. عندما يخرج المستخدم سماعات الأذن من علبتها ويضعها، يضمن bonding الاتصال الفوري بالهاتف الذكي دون الحاجة إلى تحديد الجهاز مرة أخرى من قائمة Bluetooth. وفقاً لإرشادات Apple Bluetooth Design Guidelines (2025)، يجب أن تتصل الأجهزة المرتبطة في غضون لا يزيد عن ثانيتين من الاكتشاف.

ما البيانات التي يتم تخزينها أثناء Bonding

أثناء bonding، يخزن كل جهاز مجموعة من المواد التشفيرية: Long Term Key (LTK) لتشفير الاتصال، Identity Resolving Key (IRK) لحل العناوين العشوائية، وConnection Signature Resolving Key (CSRK) للتحقق من توقيعات البيانات. LTK هو المفتاح الأساسي بطول 128 بت يتم إنشاؤه أثناء pairing ويستخدم لجميع الجلسات المشفرة اللاحقة.

المفتاحالطولالغرض
LTK128 بتتشفير البيانات بعد إعادة الاتصال
IRK128 بتحل العناوين الخاصة العشوائية (RPA)
CSRK128 بتتوقيع البيانات والتحقق من صحتها

Bonding مقابل Pairing: ما الفرق

Pairing هو التفاوض المؤقت على المفاتيح لتشفير جلسة الاتصال الحالية. عندما ينتهي الاتصال، يتم حذف مفاتيح التشفير، ويتطلب الاتصال التالي عملية pairing كاملة مرة أخرى. Bonding يشمل جميع مراحل pairing ولكنه يخزن المفاتيح أيضاً للجلسات المستقبلية. جميع أجهزة Bluetooth الاستهلاكية تقريباً (سماعات الرأس، مكبرات الصوت، الساعات) تستخدم bonding لأنه بدونها، كل اتصال سيتطلب إعادة إدخال PIN.

المراحل الثلاث لـ Pairing وBonding

تتكون عملية pairing حسب مواصفات BLE من ثلاث مراحل. المرحلة 1 — تبادل قدرات الأجهزة (قدرات IO، دعم المصادقة). المرحلة 2 — إنشاء وتبادل Short Term Key (STK) أو LTK، حسب طريقة الإقران. المرحلة 3 — نقل المفاتيح: تبادل LTK، IRK، CSRK بين الأجهزة. إذا قامت الأجهزة بتخزين المفاتيح بعد المرحلة 3 — فهذا bonding. إذا لم تفعل — فهو مجرد pairing.

المعاملPairingBonding
تخزين المفاتيحلا يتم تخزينهاتُخزن في NVRAM
إعادة الاتصال التلقائيلانعم
إعادة إدخال PINمطلوبغير مطلوب
الاستخداماتصالات عرضيةأجهزة دائمة

كيف تعمل عملية Bonding

تبدأ عملية bonding بعد اكتمال pairing بنجاح، عندما يرسل أحد الأجهزة طلباً لتخزين المفاتيح. في BLE، يتبادل Central (عادةً هاتف ذكي) وPeripheral (جهاز قابل للارتداء) المفاتيح عبر القناة الآمنة التي تم إنشاؤها في المرحلة 2. بعد تبادل المفاتيح بنجاح، يخزن كل جهاز منها في ذاكرة غير متطايرة مع عنوان MAC أو Identity Address للشريك.

تخزين المفاتيح في جانب Central

في جانب Central (iOS/Android)، تُخزن المفاتيح في مخزن Bluetooth النظامي. يستخدم iOS مكدس النظام Core Bluetooth مع إدارة تلقائية لـ bonding: عند الإقران الأول، تُحفظ المفاتيح في NVRAM الجهاز، وتتم الاتصالات اللاحقة لنفس Peripheral تلقائياً. لا يدير المطور المفاتيح مباشرة — مكدس النظام Core Bluetooth يعالج bonding تلقائياً عند الاتصال بجهاز يدعم تخزين المفاتيح.

استعادة الاتصال عبر Bonding

عند إعادة الاتصال، يرسل Peripheral حزم إعلان تحتوي إما على عنوانه العام أو Resolvable Private Address (RPA). يستقبل Central الحزمة، ويطابق العنوان مع الأجهزة المرتبطة المخزنة، وإذا وجد تطابقاً، يبدأ استعادة الجلسة باستخدام LTK المخزن. إذا تطابق LTK، يتم إنشاء الاتصال المشفر دون إعادة pairing.

طرق المصادقة في Bonding

يحدد مواصفات BLE عدة طرق مصادقة تؤثر على مستوى أمان bonding. يعتمد اختيار الطريقة على قدرات IO للأجهزة — ما إذا كانت تحتوي على شاشة، لوحة مفاتيح، أو إمكانية تأكيد المقارنة الرقمية. يتطلب bonding الآمن استخدام طريقة لا تقل عن Just Works للتطبيقات غير الحرجة وNumeric Comparison أو Passkey Entry للمهام التي تتطلب حماية ضد هجمات الوسيط.

Just Works

Just Works هي طريقة بدون مصادقة تُستخدم عندما لا يحتوي أحد الأجهزة على شاشة أو لوحة مفاتيح. يتم نقل مفاتيح التشفير دون التحقق من هوية الجهاز الثاني — أجهزة استشعار درجة الحرارة، أجهزة قياس النبض. Just Works عرضة لهجمات MITM، لذلك تُستخدم فقط للأجهزة حيث لا يشكل اختراق البيانات تهديداً.

Numeric Comparison

Numeric Comparison هي طريقة مصادقة حيث يعرض كلا الجهازين رقماً من ستة أرقام، ويجب على المستخدم تأكيد التطابق. توفر هذه الطريقة حماية ضد هجمات MITM ويوصى بها للأجهزة ذات الشاشة — الساعات الذكية، أجهزة تتبع اللياقة البدنية، أجهزة التحكم عن بعد. بعد التأكيد، يتم تخزين bonding بأقصى مستوى ثقة.

Passkey Entry

Passkey Entry يتطلب إدخال PIN مكون من ستة أرقام على أحد الأجهزة. عادةً، يتم إنشاء الرمز بواسطة جهاز وعرضه عليه، بينما يدخله المستخدم على الجهاز الثاني. تُستخدم هذه الطريقة للأجهزة الطبية وأقفال إنترنت الأشياء حيث يكون مستوى أمان عالٍ مطلوباً لكن أحد الأجهزة يفتقر إلى شاشة لـ Numeric Comparison.

إدارة الأجهزة المرتبطة في iOS وAndroid

إدارة bonding هي عملية عرض وحذف وصيانة المفاتيح المخزنة للأجهزة المقترنة. في تطوير التطبيقات المحمولة، من المهم معالجة حالات الأجهزة المرتبطة بشكل صحيح، خاصة عند إعادة ضبط جهاز طرفي أو استبدال برمجيته الثابتة. عندما تتغير مفاتيح bonding على Peripheral، يجب إزالة المفاتيح القديمة على Central وإجراء إقران جديد.

الإدارة في iOS

يدير iOS تلقائياً الأجهزة المرتبطة من خلال مكدس النظام Core Bluetooth. لا يملك المطور API مباشر لعرض أو حذف الأجهزة المرتبطة بشكل فردي — تتم الإدارة من خلال إعدادات النظام (Settings > Bluetooth > الجهاز > Forget). إذا كان من الضروري مسح bonding برمجياً، يمكن للتطبيق توجيه المستخدم إلى إعدادات Bluetooth النظام باستخدام UIApplication.openSettingsURLString.

الإدارة في Android

يوفر Android API مباشر للعمل مع الأجهزة المرتبطة من خلال فئة BluetoothAdapter. يقوم الأسلوب getBondedDevices() بإرجاع Set<BluetoothDevice> لجميع الأجهزة المقترنة. لإزالة bonding، يتم استخدام طريقة removeBond() عبر الانعكاس أو، في Android 12+، 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}")
}

مثال عملي لتطبيق Bonding

تطبيق bonding على Android يتطلب معالجة صحيحة لـ BroadcastReceiver لأحداث BluetoothDevice.ACTION_BOND_STATE_CHANGED. عند أول اتصال بجهاز، يقوم نظام Android تلقائياً ببدء bonding إذا كان الجهاز يدعم هذه الإمكانية. يجب على المطور معالجة ثلاث حالات: BOND_NONE (غير مقترن)، BOND_BONDING (جاري الإقران)، BOND_BONDED (مقترن).

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", "تمت إزالة الرابط")
        }
    }
}

بدء Bonding على Android

لبدء bonding على Android، يجب استدعاء طريقة createBond() على كائن BluetoothDevice. ترجع الطريقة قيمة منطقية — true إذا بدأت عملية الإقران بنجاح. بدءاً من Android 12، يتطلب createBond() إذن BLUETOOTH_CONNECT وقد يتم رفضه من قبل النظام إذا لم يكن للتطبيق وصول Bluetooth في الخلفية.

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

الأخطاء الشائعة عند العمل مع Bonding

غالباً ما يواجه مطورو التطبيقات المحمولة أخطاء شائعة عند العمل مع bonding لأجهزة BLE. يمكن أن تؤدي المعالجة غير الصحيحة لحالات bonding إلى فشل الاتصال، عدم القدرة على إعادة الإقران، أو فقدان البيانات. دعنا نستعرض المشكلات الأكثر شيوعاً وحلولها.

إعادة ضبط البرمجية الثابتة لـ Peripheral وstale bonding

بعد تحديث البرمجية الثابتة لـ جهاز BLE، قد يتم إعادة ضبط مفاتيح bonding الخاصة به، لكن الهاتف الذكي يستمر في تخزين المفاتيح القديمة (stale bonding). عند محاولة الاتصال، يحاول Central استعادة الجلسة باستخدام LTK القديم، يرفض Peripheral المفتاح، ويفشل الاتصال. الحل هو إزالة bonding على الهاتف الذكي عبر Settings > Bluetooth > Forget Device وإجراء إقران جديد.

حد عدد الأجهزة المرتبطة

رقاقات BLE لها حد أقصى لعدد سجلات bonding المخزنة. بالنسبة لرقاقات Nordic nRF5x الشائعة، يتراوح الحد بين 8-20 سجلاً حسب التكوين. عند تجاوز الحد، يتوقف الجهاز عن قبول إقرانات جديدة. الحل هو إزالة سجلات bonding غير المستخدمة أو استخدام سلسلة مفاتيح ذات أولوية مع تنظيف.

مشكلات ميزة الخصوصية

عند استخدام ميزة الخصوصية (عناوين MAC العشوائية)، يغير الجهاز عنوانه بشكل دوري. إذا لم يخزن Central IRK، فلن يتمكن من مطابقة العنوان العشوائي الجديد مع جهاز معروف. الحل هو تنفيذ تخزين IRK بشكل صحيح واستخدامه لحل RPA عند كل اكتشاف لجهاز.

الأسئلة الشائعة

ما هو Bonding في BLE؟

Bonding في Bluetooth Low Energy هو عملية تخزين مفاتيح التشفير (LTK، IRK، CSRK) بعد انتهاء جلسة pairing، لاستعادة الاتصال الآمن تلقائياً عند إعادة الاتصال لاحقاً دون الحاجة إلى إعادة إدخال PIN أو تأكيد.

كيف يختلف Bonding عن Pairing؟

Pairing هو التفاوض المؤقت على المفاتيح للجلسة الحالية، والتي يتم حذفها عند قطع الاتصال. Bonding يشمل عملية pairing الكاملة بالإضافة إلى تخزين المفاتيح للاتصالات المستقبلية. Bonding مطلوب للأجهزة التي تعيد الاتصال تلقائياً — سماعات الرأس، الساعات، أجهزة تتبع اللياقة البدنية.

كيفية إزالة Bonding على iPhone؟

على iPhone، يتم إزالة bonding من خلال إعدادات النظام: Settings > Bluetooth > اضغط على أيقونة المعلومات (i) بجانب الجهاز > اختر Forget This Device. بعد ذلك، يتم حذف مفاتيح التشفير، وسيتطلب الاتصال التالي إقراناً جديداً.

كم عدد الأجهزة التي يمكن أن تكون في Bonding؟

عدد الأجهزة المرتبطة يعتمد على سعة الذاكرة غير المتطايرة لرقاقة BLE. يمكن للهواتف الذكية تخزين مئات السجلات، بينما تكون الأجهزة الطرفية BLE محدودة بـ 8-20 سجلاً. عند تجاوز الحد، يتم استبدال السجلات القديمة أو يتوقف الجهاز عن قبول إقرانات جديدة.

ما هو stale bonding؟

Stale bonding هو حالة حيث تم إعادة ضبط مفاتيح التشفير على جهاز واحد (عادةً Peripheral) (مثلاً، بعد تحديث البرمجية الثابتة)، بينما لا يزال Central يحتفظ بالمفاتيح القديمة. نتيجة لذلك، لا يمكن إنشاء الاتصال حتى يقوم المستخدم بإزالة stale bonding عبر إعدادات Bluetooth وإجراء إقران جديد.

الخلاصة

  • Bonding هو آلية BLE رئيسية لاستعادة الاتصالات المشفرة تلقائياً دون إعادة إدخال PIN.
  • Pairing وbonding يختلفان في تخزين المفاتيح: في pairing المفاتيح تدوم جلسة واحدة، في bonding تُخزن بشكل دائم.
  • تتضمن عملية bonding تبادل وتخزين ثلاثة أنواع من المفاتيح: LTK (التشفير)، IRK (التعريف)، CSRK (التوقيع).
  • طريقة المصادقة Numeric Comparison توفر حماية ضد هجمات MITM ويوصى بها للأجهزة ذات الشاشة.
  • يدير iOS bonding تلقائياً عبر Core Bluetooth، بينما يوفر Android API createBond() وremoveBond().
  • Stale bonding بعد تحديث البرمجية الثابتة لـ Peripheral مشكلة شائعة تُحل بإزالة الجهاز من قائمة Bluetooth.
  • عدد الأجهزة المرتبطة على رقاقة BLE الطرفية محدود بـ 8-20 سجلاً حسب الطراز.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا