Bonding (পেয়ারিং) Bluetooth Low Energy-তে দুটি ডিভাইসের মধ্যে ক্রিপ্টোগ্রাফিক কী নন-ভোলাটাইল মেমোরিতে সংরক্ষণ করে একটি স্থায়ী সুরক্ষিত সংযোগ তৈরি করার প্রক্রিয়া। বন্ডিংয়ের পরে, ডিভাইসগুলি PIN পুনঃপ্রবেশ বা ব্যবহারকারীর নিশ্চিতকরণ ছাড়াই পুনঃসংযোগে স্বয়ংক্রিয়ভাবে এনক্রিপ্টেড সংযোগ পুনরুদ্ধার করতে পারে। Bluetooth SIG Core Specification v5.4 (2025) অনুসারে, বন্ডিং মেকানিজম এমন ডিভাইসগুলির জন্য বাধ্যতামূলক যার স্বয়ংক্রিয় পুনঃসংযোগ প্রয়োজন — হেডফোন, ফিটনেস ট্র্যাকার, মেডিকেল সেন্সর এবং IoT আনুষাঙ্গিক।
মূল পয়েন্ট
Bonding Bluetooth Low Energy-তে পেয়ারিং প্রক্রিয়ার একটি সম্প্রসারণ, যেখানে ডিভাইসগুলি পরবর্তী সংযোগের জন্য এনক্রিপশন কী সংরক্ষণ করে। BLE মান তিনটি নিরাপত্তা মোড সংজ্ঞায়িত করে: Security Mode 1 (প্রমাণীকরণ ছাড়া এনক্রিপশন), Security Mode 2 (এনক্রিপশন ছাড়া ডেটা স্বাক্ষর) এবং Security Mode 3 (প্রমাণীকরণ সহ এনক্রিপশন)। বন্ডিং এনক্রিপশন সহ মোডগুলির জন্য প্রাসঙ্গিক যেখানে কী পুনঃনির্মাণ ছাড়াই বারবার সংযোগ প্রয়োজন।
বন্ডিংয়ের মূল উদ্দেশ্য হল ডিভাইসগুলি পুনঃসংযোগ করলে এনক্রিপ্টেড সংযোগগুলির স্বয়ংক্রিয় পুনরুদ্ধার। যখন একজন ব্যবহারকারী তাদের কেস থেকে ইয়ারবাড বের করে পরেন, বন্ডিং Bluetooth মেনু থেকে আবার ডিভাইস নির্বাচন না করেই স্মার্টফোনে তাৎক্ষণিক সংযোগ নিশ্চিত করে। Apple Bluetooth Design Guidelines (2025) অনুসারে, বন্ডেড ডিভাইসগুলি শনাক্তকরণের 2 সেকেন্ডের মধ্যে সংযোগ স্থাপন করবে।
বন্ডিংয়ের সময়, প্রতিটি ডিভাইস ক্রিপ্টোগ্রাফিক উপকরণ এর একটি সেট সংরক্ষণ করে: সংযোগ এনক্রিপশনের জন্য Long Term Key (LTK), এলোমেলো ঠিকানা সমাধানের জন্য Identity Resolving Key (IRK) এবং ডেটা স্বাক্ষর যাচাইয়ের জন্য Connection Signature Resolving Key (CSRK)। LTK হল 128-বিটের প্রাথমিক কী যা পেয়ারিংয়ের সময় উৎপন্ন হয় এবং পরবর্তী সমস্ত এনক্রিপ্টেড সেশনের জন্য ব্যবহৃত হয়।
| কী | দৈর্ঘ্য | উদ্দেশ্য |
|---|---|---|
| LTK | 128 বিট | পুনঃসংযোগের পরে ডেটা এনক্রিপশন |
| IRK | 128 বিট | এলোমেলো ব্যক্তিগত ঠিকানা (RPA) সমাধান |
| CSRK | 128 বিট | ডেটা স্বাক্ষর এবং প্রমাণীকরণ যাচাই |
Pairing বর্তমান যোগাযোগ সেশন এনক্রিপ্ট করার জন্য কীগুলির অস্থায়ী আলোচনা। যখন সংযোগ শেষ হয়, এনক্রিপশন কীগুলি মুছে ফেলা হয় এবং পরবর্তী সংযোগের জন্য আবার সম্পূর্ণ পেয়ারিং প্রক্রিয়া প্রয়োজন হয়। Bonding সমস্ত পেয়ারিং ধাপ অন্তর্ভুক্ত করে তবে ভবিষ্যতের সেশনের জন্য অতিরিক্তভাবে কী সংরক্ষণ করে। প্রায় সমস্ত ভোক্তা Bluetooth ডিভাইস (হেডফোন, স্পিকার, ঘড়ি) বন্ডিং ব্যবহার করে কারণ এটি ছাড়া, প্রতিটি সংযোগের জন্য PIN পুনঃপ্রবেশের প্রয়োজন হবে।
BLE স্পেসিফিকেশন অনুযায়ী পেয়ারিং প্রক্রিয়াটি তিনটি ধাপ নিয়ে গঠিত। ধাপ 1 — ডিভাইস ক্ষমতা বিনিময় (IO ক্ষমতা, প্রমাণীকরণ সমর্থন)। ধাপ 2 — পেয়ারিং পদ্ধতি অনুযায়ী Short Term Key (STK) বা LTK তৈরি এবং বিনিময়। ধাপ 3 — কী পরিবহন: ডিভাইসগুলির মধ্যে LTK, IRK, CSRK বিনিময়। যদি ডিভাইসগুলি ধাপ 3-এর পরে কী সংরক্ষণ করে — এটি বন্ডিং। যদি না করে — এটি কেবল পেয়ারিং।
| প্যারামিটার | Pairing | Bonding |
|---|---|---|
| কী সঞ্চয়স্থান | সংরক্ষিত নয় | NVRAM-এ সংরক্ষিত |
| স্বয়ংক্রিয় পুনঃসংযোগ | না | হ্যাঁ |
| PIN পুনঃপ্রবেশ | প্রয়োজন | প্রয়োজন নেই |
| ব্যবহার | সাময়িক সংযোগ | স্থায়ী ডিভাইস |
বন্ডিং প্রক্রিয়া সফল পেয়ারিং সম্পূর্ণ হওয়ার পরে শুরু হয়, যখন একটি ডিভাইস কী সংরক্ষণের অনুরোধ পাঠায়। BLE-তে, Central (সাধারণত স্মার্টফোন) এবং Peripheral (পরিধানযোগ্য ডিভাইস) ধাপ 2-এ প্রতিষ্ঠিত সুরক্ষিত চ্যানেলের মাধ্যমে কী বিনিময় করে। সফল কী বিনিময়ের পরে, প্রতিটি ডিভাইস সেগুলি সঙ্গীর MAC ঠিকানা বা Identity Address-সহ নন-ভোলাটাইল মেমোরিতে সংরক্ষণ করে।
Central পাশে (iOS/Android), কীগুলি সিস্টেম Bluetooth সঞ্চয়স্থানে সংরক্ষিত হয়। iOS স্বয়ংক্রিয় বন্ডিং পরিচালনা সহ Core Bluetooth সিস্টেম স্ট্যাক ব্যবহার করে: প্রথম পেয়ারিং-এ, কীগুলি ডিভাইসের NVRAM-এ সংরক্ষিত হয় এবং একই Peripheral-এ পরবর্তী সংযোগগুলি স্বয়ংক্রিয়ভাবে ঘটে। ডেভেলপার সরাসরি কী পরিচালনা করে না — Core Bluetooth সিস্টেম স্ট্যাক নিজেই বন্ডিং পরিচালনা করে যখন একটি ডিভাইসের সাথে সংযোগ করে যা কী সঞ্চয়স্থান সমর্থন করে।
পুনঃসংযোগে, Peripheral তার পাবলিক ঠিকানা বা Resolvable Private Address (RPA) সম্বলিত বিজ্ঞাপন প্যাকেট পাঠায়। Central প্যাকেট গ্রহণ করে, সংরক্ষিত বন্ডেড ডিভাইসের সাথে ঠিকানা মিলায় এবং যদি মিল পাওয়া যায়, সংরক্ষিত LTK ব্যবহার করে সেশন পুনরুদ্ধার শুরু করে। যদি LTK মেলে, এনক্রিপ্টেড সংযোগ পুনরায় পেয়ারিং ছাড়াই প্রতিষ্ঠিত হয়।
BLE স্পেসিফিকেশন বেশ কয়েকটি প্রমাণীকরণ পদ্ধতি সংজ্ঞায়িত করে যা বন্ডিংয়ের নিরাপত্তা স্তরকে প্রভাবিত করে। পদ্ধতির পছন্দ ডিভাইসগুলির IO ক্ষমতার উপর নির্ভর করে — তাদের ডিসপ্লে, কীবোর্ড বা সংখ্যাগত তুলনা নিশ্চিত করার ক্ষমতা আছে কিনা। নিরাপদ বন্ডিংয়ের জন্য অ-গুরুত্বপূর্ণ অ্যাপ্লিকেশনের জন্য কমপক্ষে Just Works এবং Man-in-the-Middle আক্রমণ থেকে সুরক্ষা প্রয়োজন এমন কাজের জন্য Numeric Comparison বা Passkey Entry ব্যবহার করা প্রয়োজন।
Just Works একটি প্রমাণীকরণ-মুক্ত পদ্ধতি যা ব্যবহার করা হয় যখন একটি ডিভাইসে ডিসপ্লে বা কীবোর্ড নেই। এনক্রিপশন কীগুলি দ্বিতীয় ডিভাইসের পরিচয় যাচাই না করেই প্রেরণ করা হয় — তাপমাত্রা সেন্সর, হার্ট রেট মনিটর। Just Works MITM আক্রমণের জন্য সংবেদনশীল, তাই এটি কেবলমাত্র সেই ডিভাইসগুলির জন্য ব্যবহৃত হয় যেখানে ডেটা আপোস কোনও হুমকি তৈরি করে না।
Numeric Comparison একটি প্রমাণীকরণ পদ্ধতি যেখানে উভয় ডিভাইস ছয় অঙ্কের একটি সংখ্যা প্রদর্শন করে এবং ব্যবহারকারীকে মিল নিশ্চিত করতে হয়। এই পদ্ধতি MITM আক্রমণের বিরুদ্ধে সুরক্ষা প্রদান করে এবং ডিসপ্লে সহ ডিভাইসগুলির জন্য সুপারিশ করা হয় — স্মার্ট ঘড়ি, ফিটনেস ট্র্যাকার, রিমোট কন্ট্রোল। নিশ্চিতকরণের পরে, বন্ডিং সর্বোচ্চ বিশ্বাস স্তরের সাথে সংরক্ষিত হয়।
Passkey Entry-এর জন্য একটি ডিভাইসে ছয় অঙ্কের PIN প্রবেশ করা প্রয়োজন। সাধারণত, কোড একটি ডিভাইস দ্বারা উৎপন্ন এবং তাতে প্রদর্শিত হয়, যখন ব্যবহারকারী এটি দ্বিতীয় ডিভাইসে প্রবেশ করে। এই পদ্ধতি চিকিৎসা ডিভাইস এবং IoT তালার জন্য ব্যবহৃত হয় যেখানে উচ্চ স্তরের নিরাপত্তা প্রয়োজন কিন্তু একটি ডিভাইসে Numeric Comparison-এর জন্য ডিসপ্লে নেই।
বন্ডিং পরিচালনা পেয়ার করা ডিভাইসগুলির সংরক্ষিত কীগুলি দেখার, মুছে ফেলা এবং রক্ষণাবেক্ষণের প্রক্রিয়া। মোবাইল ডেভেলপমেন্টে, বন্ডেড ডিভাইস অবস্থাগুলি সঠিকভাবে পরিচালনা করা গুরুত্বপূর্ণ, বিশেষ করে যখন একটি পেরিফেরাল ডিভাইস রিসেট করা হয় বা তার ফার্মওয়্যার পরিবর্তন করা হয়। যখন Peripheral-এ বন্ডিং কী পরিবর্তন হয়, Central-এ পুরানো কীগুলি সরিয়ে ফেলা উচিত এবং নতুন পেয়ারিং করা উচিত।
iOS সিস্টেম Core Bluetooth স্ট্যাকের মাধ্যমে স্বয়ংক্রিয়ভাবে বন্ডেড ডিভাইসগুলি পরিচালনা করে। ডেভেলপারের পৃথক বন্ডেড ডিভাইস দেখার বা মুছে ফেলার জন্য সরাসরি API নেই — পরিচালনা সিস্টেম সেটিংস (Settings > Bluetooth > ডিভাইস > Forget) এর মাধ্যমে করা হয়। যদি প্রোগ্রাম্যাটিকভাবে বন্ডিং সাফ করার প্রয়োজন হয়, অ্যাপ UIApplication.openSettingsURLString ব্যবহার করে ব্যবহারকারীকে সিস্টেম Bluetooth সেটিংসে নির্দেশ দিতে পারে।
Android BluetoothAdapter ক্লাসের মাধ্যমে বন্ডেড ডিভাইসগুলির সাথে কাজ করার জন্য সরাসরি API প্রদান করে। getBondedDevices() পদ্ধতি সমস্ত পেয়ার করা ডিভাইসের Set<BluetoothDevice> ফেরত দেয়। বন্ডিং মুছে ফেলার জন্য, removeBond() পদ্ধতি রিফ্লেকশনের মাধ্যমে বা Android 12+ এ অফিসিয়াল API BluetoothDevice.removeBond() এর মাধ্যমে ব্যবহার করা হয়।
val adapter = BluetoothAdapter.getDefaultAdapter()
val bondedDevices: Set<BluetoothDevice> = adapter.getBondedDevices()
bondedDevices.forEach { device ->
Log.d("Bonding", "Bonded device: ${device.name}, ${device.address}")
}
Android-এ বন্ডিং বাস্তবায়ন-এর জন্য BluetoothDevice.ACTION_BOND_STATE_CHANGED ইভেন্টের জন্য BroadcastReceiver-এর সঠিক হ্যান্ডলিং প্রয়োজন। একটি ডিভাইসে প্রথম সংযোগে, Android সিস্টেম স্বয়ংক্রিয়ভাবে বন্ডিং শুরু করে যদি ডিভাইস এই ক্ষমতা সমর্থন করে। ডেভেলপারকে তিনটি অবস্থা পরিচালনা করতে হবে: BOND_NONE (পেয়ার করা হয়নি), BOND_BONDING (পেয়ারিং চলছে), BOND_BONDED (পেয়ার করা হয়েছে)।
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", "বন্ড সরানো হয়েছে")
}
}
}
Android-এ বন্ডিং শুরু করতে, BluetoothDevice অবজেক্টে createBond() পদ্ধতি কল করতে হবে। পদ্ধতিটি একটি বুলিয়ান ফেরত দেয় — true যদি পেয়ারিং প্রক্রিয়া সফলভাবে শুরু হয়। Android 12 থেকে শুরু করে, createBond()-এ BLUETOOTH_CONNECT অনুমতি প্রয়োজন এবং অ্যাপের পটভূমিতে Bluetooth অ্যাক্সেস না থাকলে সিস্টেম দ্বারা প্রত্যাখ্যান করা যেতে পারে।
fun initiateBonding(device: BluetoothDevice) {
if (device.bondState == BluetoothDevice.BOND_NONE) {
val success = device.createBond()
if (success) {
Toast.makeText(context, "Bonding শুরু হয়েছে", Toast.LENGTH_SHORT)
}
}
}
মোবাইল অ্যাপ ডেভেলপাররা প্রায়ই BLE ডিভাইস বন্ডিং নিয়ে কাজ করার সময় সাধারণ ভুলের সম্মুখীন হন। বন্ডিং অবস্থার ভুল হ্যান্ডলিং সংযোগ ব্যর্থতা, পুনরায় পেয়ার করতে অক্ষমতা বা ডেটা ক্ষতির কারণ হতে পারে। আসুন সবচেয়ে সাধারণ সমস্যা এবং তাদের সমাধানগুলি পরীক্ষা করি।
BLE ডিভাইস ফার্মওয়্যার আপডেটের পরে, এর বন্ডিং কীগুলি রিসেট হতে পারে, কিন্তু স্মার্টফোন পুরানো কীগুলি (stale bonding) সংরক্ষণ করতে থাকে। সংযোগের চেষ্টা করার সময়, Central পুরানো LTK দিয়ে সেশন পুনরুদ্ধার করার চেষ্টা করে, Peripheral কী প্রত্যাখ্যান করে এবং সংযোগ ব্যর্থ হয়। সমাধান হল Settings > Bluetooth > Forget Device-এর মাধ্যমে স্মার্টফোনে বন্ডিং সরিয়ে ফেলা এবং নতুন পেয়ারিং করা।
BLE চিপগুলিতে সংরক্ষিত বন্ডিং রেকর্ডের সংখ্যার সীমা রয়েছে। জনপ্রিয় Nordic nRF5x চিপগুলির জন্য, কনফিগারেশন অনুসারে সীমা 8-20 রেকর্ড। সীমা অতিক্রম করলে, ডিভাইস নতুন পেয়ারিং গ্রহণ করা বন্ধ করে দেয়। সমাধান হল অব্যবহৃত বন্ডিং রেকর্ড মুছে ফেলা বা পরিষ্কারের সাথে অগ্রাধিকার-ভিত্তিক কী চেইন ব্যবহার করা।
Privacy Feature (এলোমেলো MAC ঠিকানা) ব্যবহার করার সময়, ডিভাইস পর্যায়ক্রমে তার ঠিকানা পরিবর্তন করে। যদি Central IRK সংরক্ষণ না করে, তবে এটি নতুন এলোমেলো ঠিকানাকে পরিচিত ডিভাইসের সাথে মেলাতে পারে না। সমাধান হল IRK সঞ্চয়স্থান সঠিকভাবে বাস্তবায়ন করা এবং প্রতিটি ডিভাইস শনাক্তকরণে RPA সমাধানের জন্য এটি ব্যবহার করা।
সচরাচর জিজ্ঞাসিত প্রশ্ন
Bonding Bluetooth Low Energy-তে পেয়ারিং সেশন শেষ হওয়ার পরে এনক্রিপশন কী (LTK, IRK, CSRK) সংরক্ষণের প্রক্রিয়া, যাতে PIN পুনঃপ্রবেশ বা নিশ্চিতকরণ ছাড়াই পরবর্তী পুনঃসংযোগে স্বয়ংক্রিয়ভাবে সুরক্ষিত সংযোগ পুনরুদ্ধার করা যায়।
Pairing বর্তমান সেশনের জন্য কীগুলির অস্থায়ী আলোচনা, যা সংযোগ বিচ্ছিন্ন হলে মুছে ফেলা হয়। Bonding ভবিষ্যতের সংযোগের জন্য সম্পূর্ণ পেয়ারিং প্রক্রিয়া এবং কী সঞ্চয়স্থান অন্তর্ভুক্ত করে। Bonding সেই ডিভাইসগুলির জন্য প্রয়োজন যা স্বয়ংক্রিয়ভাবে পুনঃসংযোগ করে — হেডফোন, ঘড়ি, ফিটনেস ট্র্যাকার।
iPhone-এ, বন্ডিং সরানো সিস্টেম সেটিংসের মাধ্যমে করা হয়: Settings > Bluetooth > ডিভাইসের পাশে তথ্য আইকনে (i) ট্যাপ করুন > Forget This Device নির্বাচন করুন। এর পরে, এনক্রিপশন কীগুলি মুছে ফেলা হয় এবং পরবর্তী সংযোগের জন্য নতুন পেয়ারিং প্রয়োজন হবে।
বন্ডেড ডিভাইসের সংখ্যা BLE চিপের নন-ভোলাটাইল মেমোরি ক্ষমতার উপর নির্ভর করে। স্মার্টফোনগুলি শত শত রেকর্ড সংরক্ষণ করতে পারে, যখন বাজেট BLE পেরিফেরালগুলি 8-20 রেকর্ডে সীমাবদ্ধ। সীমা অতিক্রম করলে, পুরানো রেকর্ডগুলি ওভাররাইট করা হয় বা ডিভাইস নতুন পেয়ারিং গ্রহণ করা বন্ধ করে দেয়।
Stale bonding এমন একটি অবস্থা যেখানে একটি ডিভাইসে (সাধারণত Peripheral) এনক্রিপশন কীগুলি রিসেট করা হয়েছে (উদাহরণস্বরূপ, ফার্মওয়্যার আপডেটের পরে), কিন্তু Central-এ এখনও পুরানো কীগুলি রয়েছে। ফলস্বরূপ, সংযোগ স্থাপন করা যায় না যতক্ষণ না ব্যবহারকারী Bluetooth সেটিংসের মাধ্যমে stale bonding সরিয়ে নতুন পেয়ারিং না করে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন