1、 基本概念
1.1 加密是要做什么?
加密认证的整个过程几乎都是围绕怎么将两个设备使用到的秘钥安全的共享,也就是当一方把密码告诉另一方时,始终要提防第三方也可能听得到这个密钥。
注意:数据包的报头和长度字段不会被加密的,这有个好处是,当接收到包时可以直接分析报头判断 SN 和 NESN 标志。
所以对于加密来说并不是加密数据有多难,而是把需要共享的密钥安全的送到正确的设备才是难点,这就引入了配对的复杂过程。
在 BLE的4.0中主要有5个密钥需要共享,这些密钥传输时一次比一次安全,有些密钥共享时并不是赤裸裸的直接传输特定密钥,而是传输计算相应密钥时使用到的参数。这5个密钥如下:
临时密钥(Temporary Key:TK)
短期密钥(Short Term Key:STK)
长期秘钥(Long-Term Key:LTK)
身份解析秘钥(Identity Resolving Key:IRK)
连接签名解析秘钥(Connection Signature Resolving Key:CSRK)
1.2 加密配对绑定过程
这里先解释一下,什么是配对和绑定:
配对是找到并确定需要和自己通信的设备,也就是身份确定,接着是将安全密钥共享,而这一过程仅仅是由启动加密到得到短期秘钥(STK)为止(图中的 Phase1和 Phase2)
绑定就是将长期秘钥(LTK)、 身份解析秘钥(IRK)和连接签名解析秘钥(CSRK)这3个密钥中的某个或者组合进行交换(图中的Phase3)后,将交换的这些密钥存储到数据库中的过程。