经典蓝牙安全机制

BR/EDR中使用的安全机制经过了三个阶段的规范的多个版本的发展,分别是:Legacy,Secure Simple Pairing和Secure Connections。encryption, authentication 和key generation安全算法和这三个阶段的关系如下:

Legacy

当两台设备没有common link key时,当使用Legacy Pairing或Secure Simple Pairing时应当生成Kinit。Kinit基于PIN, random number和BD_ADDR生成,使用的E22算法计算。

 

当Kinit在两个设备间计算完成时则应该创建Link Key。这个Link Key将用于两台设备之间的Authentication。Link Key使用E21算法计算。

 

 

Authentication

使用E1算法进行认证,需要用到随机数AU_RAND,蓝牙地址,之前生成的link key。生成了SRES和ACO(后面加密会用到),双方设备均可以发起认证请求(mutual authentication)。认证生成的ACO用于生成Encryption key。

 

 

 

 

ENCRYPTION (E0)

当执行至少了一次Authentication则可以使用Encryption。Encrption分为两种:E0 Encryption和AES-CCM Encryption。(当双方均支持Secure Connections时则应当使用AES-CCM Encryption。

为了让master对所有slave使用相同的加密参数在使用E0 Encryption的piconet中,它将发出一个Temporary key-Kmaster。(相对的一般的是key是Semi-permanent link key,要改变成Temporary link key则必须要支持encrypted broadcast)

 

 

 

Secure Simple Pairing

IO capability exchange

Phase1:Public key exchange

初始化时,每个设备拥有自己的ECDH(Elliptic Curve Diffie-Hellman)私钥-公钥对(计算出来的),即SKa-Pka。双方设备交换Pka,然后根据是Legacy还是Secure Connections来决定是用P-192还是P256。

 

Phase2:Authentication Stage1

该阶段,有三种不同的协议分别是:Numeric Comparison, Outof-Band, and Passkey Entry。Just Work属于Numeric Comparison的一种。这里只以Numeric Comparison为例进行说明。

Numeric Comparison

用于防护MITM,中间人攻击(后续补充)。有图可知,设备B使用f1算法计算出commitment发送给设备B,设备A将自己的随机数Na发送给设备B。设备B收到后回复ACCEPT并且将自己的随机数Nb发送给设备A,设备利用该随机数计算commitmment并且和收到的commitment做比较,如果相同则回复ACCEPT给设备B。之后双方使用g算法计算numeric verification,一般是6位数字。双发设备通过显示或其他方式通知用户确认,双方均确认后进行下一步动作,否则终止当前连接。

 

Phase 3:Authentication Stage 2

该阶段用于确认之前的交互完成,使用f3算法计算confirmation value确认信息,使用前面计算出来的DHKey,生成的Na/Nb,ra/rb,交互的IOcap,以及蓝牙地址。

通过对比接收到的Ea和计算出来的Ea来完成确认。

 

Phase 4:Link Key Calculation

当设备都确认了配对,则开始使用f2算法计算link key。

Phase 5:Authentication and Encryption

同Leagcy Authentication和Leagcy Encryption

 

 

Secure Connections

Authentication

使用h4算法计算出Device Authentication Key。双方设备各自生成AU_RAND,用master和slave区分,最后使用h5算法计算得到SRES,以及ACO。

发起者可以是master也可以是slave。secure Authentication总是mutual authentication。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值