Bonding: มันคืออะไร กระบวนการและความปลอดภัยของการจับคู่ BLE

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-07-16 เวลาอ่าน: 10 นาที

Bonding (การจับคู่) ใน Bluetooth Low Energy คือกระบวนการสร้างการเชื่อมต่อที่ปลอดภัยแบบถาวรระหว่างอุปกรณ์สองชิ้น โดยการเก็บคีย์การเข้ารหัสในหน่วยความจำที่ไม่เสื่อมสภาพ หลังจาก bonding อุปกรณ์สามารถคืนสภาพการเชื่อมต่อที่ถูกเข้ารหัสได้โดยอัตโนมัติเมื่อเชื่อมต่อใหม่ โดยไม่ต้องป้อน PIN หรือการยืนยันของผู้ใช้ ตาม Bluetooth SIG Core Specification v5.4 (2025) กลไก bonding เป็นภาคบังคับสำหรับอุปกรณ์ที่ต้องการการเชื่อมต่อใหม่โดยอัตโนมัติ — หูฟัง อุปกรณ์ติดตามการออกกำลังกาย เซ็นเซอร์ทางการแพทย์ และอุปกรณ์เสริม IoT

ประเด็นสำคัญ

  • 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) อุปกรณ์ที่ผูกแล้วควรเชื่อมต่อภายในไม่เกิน 2 วินาทีหลังจากตรวจพบ

ข้อมูลใดที่ถูกเก็บไว้ระหว่าง Bonding

ระหว่าง bonding อุปกรณ์แต่ละชิ้นเก็บชุดของวัตถุดิบการเข้ารหัส: Long Term Key (LTK) สำหรับการเข้ารหัสการเชื่อมต่อ Identity Resolving Key (IRK) สำหรับการแก้ไขที่อยู่แบบสุ่ม และ Connection Signature Resolving Key (CSRK) สำหรับตรวจสอบลายเซ็นข้อมูล LTK เป็นคีย์หลักขนาด 128 บิตที่สร้างขึ้นระหว่าง pairing และใช้สำหรับเซสชั่นที่ถูกเข้ารหัสทั้งหมดในภายหลัง

คีย์ความยาววัตถุประสงค์
LTK128 บิตการเข้ารหัสข้อมูลหลังการเชื่อมต่อใหม่
IRK128 บิตการแก้ไขที่อยู่ส่วนตัวแบบสุ่ม (RPA)
CSRK128 บิตการลงนามและตรวจสอบความถูกต้องของข้อมูล

Bonding vs Pairing: ต่างกันอย่างไร

Pairing คือการเจรจาคีย์ชั่วคราวเพื่อเข้ารหัสเซสชั่นการสื่อสารปัจจุบัน เมื่อการเชื่อมต่อสิ้นสุดลง คีย์การเข้ารหัสจะถูกลบ และการเชื่อมต่อครั้งต่อไปต้องมีกระบวนการ pairing ใหม่อีกครั้ง Bonding รวมทุกขั้นตอนของ pairing แต่เพิ่มการเก็บคีย์สำหรับเซสชั่นในอนาคต อุปกรณ์ Bluetooth เกือบทุกชนิด (หูฟัง ลำโพง นาฬิกา) ใช้ bonding เพราะหากไม่มี การเชื่อมต่อแต่ละครั้งจะต้องป้อน PIN ใหม่

สามเฟสของ Pairing และ Bonding

กระบวนการ pairing ตามข้อกำหนด BLE ประกอบด้วยสาม เฟส เฟส 1 — การแลกเปลี่ยนความสามารถของอุปกรณ์ (IO capabilities, การสนับสนุนการตรวจสอบสิทธิ์) เฟส 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 สำหรับงานที่ต้องการการป้องกันจากการโจมตี Man-in-the-Middle

Just Works

Just Works เป็นวิธีที่ไม่มีการตรวจสอบสิทธิ์ใช้เมื่ออุปกรณ์ตัวใดตัวหนึ่งไม่มีหน้าจอหรือแป้นพิมพ์ คีย์การเข้ารหัสจะถูกส่งโดยไม่มีการตรวจสอบตัวตนของอุปกรณ์ที่สอง — เซ็นเซอร์อุณหภูมิ เครื่องวัดอัตราการเต้นของหัวใจ Just Works อ่อนแอต่อการโจมตี MITM ดังนั้นจึงใช้เฉพาะกับอุปกรณ์ที่การบุกรุกข้อมูลไม่เป็นภัยคุกคาม

Numeric Comparison

Numeric Comparison เป็นวิธีการตรวจสอบสิทธิ์ที่อุปกรณ์ทั้งสองแสดงตัวเลขหกหลัก และผู้ใช้ต้องยืนยันความตรงกัน วิธีนี้ให้การป้องกันจากการโจมตี MITM และแนะนำสำหรับอุปกรณ์ที่มีหน้าจอ — นาฬิกาอัจฉริยะ อุปกรณ์ติดตามการออกกำลังกาย รีโมทคอนโทรล หลังจากการยืนยัน bonding จะถูกเก็บไว้ด้วยระดับความเชื่อถือสูงสุด

Passkey Entry

Passkey Entry ต้องการการป้อน PIN หกหลักบนอุปกรณ์ตัวใดตัวหนึ่ง โดยปกติ รหัสจะถูกสร้างโดยอุปกรณ์หนึ่งและแสดงบนอุปกรณ์นั้น ในขณะที่ผู้ใช้ป้อนบนอุปกรณ์ที่สอง วิธีนี้ใช้สำหรับอุปกรณ์ทางการแพทย์และล็อค IoT ที่ต้องการระดับความปลอดภัยสูง แต่อุปกรณ์ตัวใดตัวหนึ่งไม่มีหน้าจอสำหรับ Numeric Comparison

การจัดการอุปกรณ์ที่ผูกแล้วใน iOS และ Android

การจัดการ bonding คือกระบวนการดู ลบ และบำรุงรักษาคีย์ที่เก็บไว้ของอุปกรณ์ที่จับคู่แล้ว ในการพัฒนาแอปพลิเคชันมือถือ สิ่งสำคัญคือต้องจัดการสถานะของอุปกรณ์ที่ผูกแล้วอย่างถูกต้อง โดยเฉพาะเมื่อมีการรีเซ็ตอุปกรณ์รอบข้างหรือเปลี่ยนเฟิร์มแวร์ เมื่อคีย์ bonding บน Peripheral เปลี่ยนแปลง จำเป็นต้องลบคีย์เก่าบน Central และทำการจับคู่ใหม่

การจัดการใน iOS

iOS จัดการอุปกรณ์ที่ผูกแล้วโดยอัตโนมัติผ่านสแต็กระบบ Core Bluetooth นักวิจัยไม่มี API โดยตรงสำหรับดูหรือลบอุปกรณ์ที่ผูกแล้วทีละตัว — การจัดการทำผ่านการตั้งค่าระบบ (Settings > Bluetooth > อุปกรณ์ > Forget) หากจำเป็นต้องลบความผูกพันโดยโปรแกรม แอปสามารถนำผู้ใช้ไปที่การตั้งค่า Bluetooth ของระบบโดยใช้ UIApplication.openSettingsURLString

การจัดการใน Android

Android มี API โดยตรงสำหรับทำงานกับอุปกรณ์ที่ผูกแล้วผ่านคลาส BluetoothAdapter เมธอด getBondedDevices() จะคืนค่า Set<BluetoothDevice> ของอุปกรณ์ที่จับคู่ทั้งหมด สำหรับการลบความผูกพัน ใช้เมธอด 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 เมธอดนี้จะคืนค่า boolean — 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 มีข้อจำกัดจำนวน ระเบียนการผูกที่เก็บได้ สำหรับชิป 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 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม