
一、蓝牙通信
日常生活中,具备蓝牙功能的设备早已融入我们的衣食住行 —— 从耳机、智能手环到家电、车载系统。蓝牙本质上是一种短距离无线通信的技术,通常会经历以下关键步骤:
配对 (Pairing):设备 A 发出 “自我介绍”(广播信号),设备 B 听到后回应。它们会交换一个临时的 “暗号”(密钥),确认彼此身份。
加密 (Encryption):配对成功后,所有的数据传输都会用这个 “暗号” 进行加密,确保即使被第三方截获,也无法读懂内容。
通信 (Communication):加密通道建立后,设备之间就可以安全地传输音乐、文件、位置信息等数据了。
二、蓝牙通信加密过程
蓝牙通信的加密过程,本质上是设备间协商出一把共同的 “钥匙”,并用它来保护无线数据的机密性和完整性。整个过程分为两个主要阶段:配对和加密启动。
第一阶段:配对——生成长期密钥(LTK)
配对是加密的前提,目标是让两个设备安全地交换信息,最终生成一把可以长期使用的 “总钥匙”——长期密钥(LTK)。
安全能力协商
发起方:发送Pairing Request,告知对方自己支持的安全功能,例如:是否需要中间人攻击(MITM)保护?支持哪些密钥的分发(如 LTK、IRK)?
响应方:回复Pairing Response,确认双方最终将采用的安全配置。
密钥材料交换
交换公钥:双方通过Pairing Public Key指令,交换各自基于椭圆曲线(ECC)生成的公钥。这是生成共享秘密的基础。
交换随机数:双方通过Pairing Random指令,互相发送一个随机数。这增加了密钥的唯一性,确保每次配对生成的密钥都不同。
验证确认值:双方根据收到的公钥和随机数,计算出一个 “确认值”,并通过Pairing Confirm指令发送给对方。
本地验证:收到对方的确认值后,设备会用自己的参数进行本地验证。如果验证通过,就证明双方计算出的共享秘密是一致的,且过程未被篡改。
生成并存储 LTK
验证成功后,双方利用之前交换的所有信息,计算出最终的长期密钥(LTK)。
这个 LTK 会被永久保存在双方设备中,用于未来再次连接时快速建立加密。
第二阶段:加密启动——生成会话密钥
当已配对的设备再次连接时,它们不再需要重复整个配对流程,而是直接利用已有的 LTK 来快速启动加密。
发送加密请求
主设备(Master)向从设备(Slave)发送LE Start Encryption指令,其中包含两个关键参数:
加密起始计数器(EDIV)、随机数(RN)
生成会话密钥(Session Key)
主、从设备都使用以下相同的输入参数,独立计算出本次连接专用的会话密钥:
已存储的LTK、主设备发来的EDIV和RN、从设备自身的蓝牙地址(BD_ADDR),由于输入参数一致,双方会得到完全相同的会话密钥。
启动加密
会话密钥生成后,加密正式启动。蓝牙核心规范(4.2 及以上版本)强制使用AES-CCM加密算法。这个算法非常强大,它不仅能加密数据,还能对数据进行完整性校验。
三、思考
蓝牙它用无形的连接为生活带来了极大便利。但并非所有蓝牙设备的通信都能达到同等安全级别,这与其功能定位密切相关。
比如许多小型设备,其蓝牙功能仅用于 “广播信息”:它们无需与手机 APP 建立完整通信,只需持续发送自身标识信号,方便 APP 快速发现并完成基础识别。这类场景下,蓝牙通信既不会触发密钥交换,也不会启动加密传输流程,安全防护相对薄弱。
不过无需过度担忧,只要我们充分了解不同设备的蓝牙使用逻辑与潜在风险,再搭配良好的使用习惯,就能在尽情享受蓝牙便捷的同时,把安全隐患降到最低。
···

探索 · 专注 · 领先工匠精神 从始至终 探索之途 一往无前
