🔐 蓝牙配对流程你真的懂了吗?五种配对方法全解析!
“我 BLE 连不上!”
“明明连上了,数据发不过去!”
“手机老是提示要配对,烦死了!”
等等朋友,你可能是对蓝牙配对还没真搞明白!
今天我们来聊聊:BLE 蓝牙到底怎么配对的?这其中有哪五种方式?为啥有的设备能秒连,有的却非得输个 6 位数验证码?
🧠 一、配对到底是干啥的?
配对(Pairing)是 BLE 设备建立安全关系的第一步,它完成两件大事:
- 交换密钥(加密通信用)
- 建立信任(配对成功后下次自动连接)
就像你第一次见人要加微信:
你要确认“你是不是你”,还能设置“我下次还找你聊”。
🧩 二、BLE 配对的三阶段
按照蓝牙协议标准,BLE 配对分三步走:
阶段 | 名称 | 干嘛的 |
---|---|---|
Phase 1 | 特征交换 | 确定你支持什么加密方式、是否有输入设备等 |
Phase 2 | 密钥生成 | 协商生成配对密钥(Short Term Key, STK) |
Phase 3 | 分发密钥 | 生成并交换用于后续加密连接的密钥(LTK、IRK、CSRK) |
🧪 三、蓝牙五种配对方式大起底
BLE 根据设备能力,提供了 五种配对方法(Pairing Methods)。
不同方法安全性不同,适用场景也不同!
1. Just Works(直接配)
- 💡 适用:没有输入输出的设备(如灯泡、传感器)
- 🤝 安全性:较低
- 🧩 特点:不验证身份,直接完成配对
举例:你家的蓝牙灯一连就行,从来不用输密码,那大概率就是这个。
2. Passkey Entry(输入密码)
- 💡 适用:一方能显示、另一方能输入
- 🧠 流程:设备显示一个 6 位 PIN,你输入即可
- 🔐 安全性:高
举例:蓝牙秤显示 659321,手机让你输入这串数字 —— 这就是它。
3. Numeric Comparison(数字确认)
- 💡 适用:双方都有显示屏,用户手动确认是否一致
- 🧠 流程:设备 A 和 B 显示一样的 6 位数,用户确认
- 🔐 安全性:高
举例:你配对两部手机时,会看到“是否确认 946352?是/否”。
4. Out-of-Band(OOB)配对
- 💡 适用:通过 BLE 以外的通信渠道传递密钥,如 NFC、二维码
- 🔐 安全性:超高
- 🧩 特点:非常适合安全敏感设备(门锁、支付)
举例:刷 NFC 一贴就连,背后其实是 BLE 用了 OOB。
5. LE Secure Connections(LESC)
- 💡 BLE 4.2 引入的新特性
- 🔐 安全性:最强(使用 ECDH 密钥交换)
- 🧠 可结合前面任意方式(Just Works、Passkey、Comparison)
举例:iOS 和 Android 现在都默认用 LESC。
⚙️ 四、配对后生成的密钥都有哪些?
BLE 配对后可能分发这些密钥:
密钥 | 用途 |
---|---|
STK(Short Term Key) | 临时会话加密,配对时用 |
LTK(Long Term Key) | 后续自动重连时用 |
IRK(Identity Resolving Key) | 识别设备真实身份 |
CSRK(Connection Signature Resolving Key) | 数据签名验证(用于写入校验) |
🧰 五、开发时我该怎么选配对方式?
场景 | 推荐方式 |
---|---|
蓝牙灯、传感器 | Just Works |
蓝牙秤、蓝牙锁 | Passkey Entry 或 OOB |
双手机、手表、耳机等 | Numeric Comparison |
需要高安全性(金融、门禁) | OOB + LESC |
![]() |
🧪 六、实战代码小片段
nRF52 示例:启动配对
ble_gap_sec_params_t sec_params = {0};
sec_params.bond = 1;
sec_params.mitm = 1;
sec_params.io_caps = BLE_GAP_IO_CAPS_DISPLAY_ONLY;
sec_params.oob = 0;
sec_params.min_key_size = 7;
sec_params.max_key_size = 16;
sd_ble_gap_authenticate(conn_handle, &sec_params);
EFR32 示例:设置安全参数
sl_bt_sm_configure(SL_BT_SM_bonding | SL_BT_SM_mitm_required, sm_io_capability_display_only);
sl_bt_sm_increase_security(connection);
🧨 七、常见配对问题排查
问题 | 原因 |
---|---|
配对超时 | 一方未响应 / 不支持同样的配对方式 |
每次都要重新配对 | 没保存 LTK,或 Bond 信息未存储 |
安卓/苹果配不上 | BLE 安全等级不匹配,特别是 iOS 要求高 |
✅ 总结一句话:
搞懂配对方式,是 BLE 项目成功的一半。
- BLE 有五种配对方式,各有适用场景
- 新项目建议使用 LE Secure Connection + Numeric Comparison
- 没输入输出的设备,Just Works 虽然方便,但要权衡安全
📚 延伸阅读推荐
喜欢的盆友点赞+关注,或者关注我们的微信公众号:欢乐熊嵌入式开发