1. 蓝牙绑定

绑定真正来说属于通用访问规范的讨论范畴。绑定指的无非是将密钥及相关身份信息保存到数据库中。如果设备不保存这些值,他们虽然能匹配,但不能绑定。

只要当中某一个设备不保存,重新连接后,只有一个设备拥有LTK,因此加密的启动将会失败。

为了避免这种情况,两个设备在最初配对时就会交换绑定信息,从而能够清楚地知道对方是否保留了该绑定信息。

如果对方设备不保存信息,那么一旦启动加密的尝试失败,主机将试图再次配对。

2. 绑定的相关知识

绑定并不是一个独立存在的过程。 可以理解成配对有两种方式, 没有设置绑定表示的配对请求和设置绑定标志的配对请求。

配对的目的就是单纯的加密链路,但是配对过程比较耗时(包括配对信息交换,用户输入配对码或带外传输配对码,协议层的配对确认交换和

随机数交换以及确认验证,都没问题后才会生成链路加密秘钥来加密链路),如果为了数据始终都是加密传输而每次连接都去配对的话就比较麻烦,

所以又定义了一个绑定过程,绑定过程是在 配对后链路加密的情况下 分发一个 LTK(其他秘钥这里不涉及),这个LTK就可以供以后直接加密链路,

而不用经过繁琐的配对过程。

Notes:其实LTK分配之后,每次重新连接时的加密并不是用LTK直接加密链路,而是双方交换一些信息(称为会话秘钥分散器),然后利用这些信息和LTK

最终生成一个会话秘钥,真正的加密是用这个会话秘钥。

3. 总结

1)配对认证:主从机一方提供密码,一方输入密码,如果双方密码一致,那么此密码将作为TK(临时密码);

2)加密链路:利用得到的TK(临时密码)等信息计算出STK(短期密码)用来做加密认证;

3)绑定:加密认证通过后,利用STK等信息生成LTK(长期密码),把LTK保存下来,用于下次连接时做加密认证,不需要再次配对就可以加密链路,这就是绑定了;

绑定后通讯过程 : 每次连接时,从机会向主机发送安全请求,如果主从机相互绑定过,主机不会发送配对请求,主机直接利用绑定时保存的LTK发送加密请求,

从机也会利用绑定时保存的LTK来做加密回复,三次握手成功后(加密成功,三次握手通讯由底层完成,用户不可见),从机回复主机加密状态success。

4. 配对和绑定区别:

1)连接:通讯的基础,通讯数据为明文;

2)配对:配对仅仅是为了在连接的基础上加密(通讯数据经过加密为密文),提高蓝牙链路传输的安全性。不配对也能连接进行通信。

3)绑定:绑定是配对发起时的一个可选配置。把配对信息记录下来, 下次不用配对自动进入加密的连接;所以没在bonding列表里的设备不影响连接,照连不误。

阅读(3405) | 评论(0) | 转发(0) |

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐