蓝牙配对(安全管理)的问题

nidaye
  • 103

蓝牙规范中说,两个蓝牙设备配对时,先交换各自的能力(有无键盘、有无开关输入、有无输出、有无显示器),然后根据双方的能力选择配对策略。
一般用在嵌入式设备中的低功耗蓝牙设备都不具备输入和输出能力,按照蓝牙规范,和这类蓝牙设备配对然后通信,蓝牙链路是不加密的,实际体验就是用手机或者电脑蓝牙扫描到就能连上,并没有一个显式的配对过程。这也和规范的描述一致。
但是使用两台手机,手机和电脑,电脑和电脑直接做蓝牙配对连接测试时,发现它们都是同样的模式:一个设备提示连一个设备显示的配对码,一致便提示用户同意连接。个人觉得按照蓝牙规范,它们之间的配对连接过程应该是:一个设备显示一个6位的数字(临时密钥),在另外一个设备上输入这个6位数字,从而完成配对连接过程。
但是实际上并不是这种情况。个人认为实际上的情况并没有安全保障,而是仅仅从附近众多蓝牙设备中选出了一个做区分。
这是为什么?为什么,现在手机、电脑相互之间的蓝牙连接不需要输入临时密钥?

回复
阅读 3.7k
2 个回答
nidaye
  • 103
✓ 已被采纳

经过这端时间的学习,首先问题有错误:和不具备IO输出输出能力的设备连接配对链路是不加密的。这个说法是错误的。这是属于蓝牙配对模式的一种叫Just Work。这种方式只要再配对过程中没有受到攻击,后续的通信就是安全的。
配对的本质是密钥分发交换。Just Work模式配对过程中密钥明文传输(也可能是根据明文传输的数据使用一定的算法计算得到,不管怎样,这个阶段无法抵御中间人攻击或窃听攻击)。
问题中描述的手机、电脑之间的配对测试比较双方显示的数字的方式,在蓝牙配对模型中叫Numeric comparison。这种方式是可以抵御中间人攻击的。原理是配对过程采用的公钥密码体制。大概原理就是:

  1. 双方交换公钥
  2. 各自根据双方公钥和其他信息,计算得出一个6位数字
  3. 人为比较是否一致,一致选择Yes后配对成功。

一开始认为显示的那个6位数字是双方交换的,可以被窃听所以认为不安全,其实双方并没有传输这个数字。交换的是各自的公钥。
中间人伪造的公钥理论上很难使双方显示的这个6位数字一样。如果不伪造的话,一方用另一方的公钥加密的信息,中间人由于缺少私钥不能解密。无论怎样说,这种方式都是安全的。

有啊, 我刚拿我的手机与电脑连了一下, 手机电脑都出现了配对码, 你测试一下看看, 也有可能你测试的设备以前配对成功过了, 所以再连接就是用配对了,

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏