6626配对绑定阶段密钥用随机数生成的方式

徽信管理团队 · 353次点击 · 10个月前

6626安全配对流程梳理

首次绑定流程

  1. 对端发起配对请求,我们需要把自己的加密方式回复给对端。

    OB_GAP_EVT_PAIRING_REQUEST
  2. 绑定信息(LTK)请求,这里我们需要把自己的LTK(16字节)、random(8字节)、ediv(2字节)回给对端。

    OB_GAP_EVT_BOND_INFO_REQUEST
  3. 对端绑定信息下发,这里主要包含主机的LTK(16字节)、random(8字节)、ediv(2字节)。

    OB_GAP_EVT_BOND_INFO
  4. 对端绑定信息下发,这里主要包含主机的IRK(16字节)、主机端自己的mac地址类型、以及自己的mac地址。

    OB_GAP_EVT_BOND_INFO
  5. 回调上来指示绑定完成。

    OB_GAP_EVT_BONDED
  6. 回调上来指示加密完成。

    OB_GAP_EVT_ENCRYPT

断开蓝牙后的重连流程

  1. 绑定信息(LTK)请求,这里我们需要把自己的LTK(16字节)、random(8字节)、ediv(2字节)回给对端。

    OB_GAP_EVT_LTK_REQUEST
  2. 回调上来指示加密完成。

    OB_GAP_EVT_ENCRYPT

6626新增安全配对逻辑如下:

目前SDK中的ediv、random、ltk、irk都是固定值,当然这只是一个demo,具体使用,还需要客户根据自己的实际使用来进行修改。这里使用随机数的方式来生成密钥,给客户一个参考。
1、在对端把请求配对发过来之后,我们利用随机数生成对应的irk和ediv以及random。等到绑定成功阶段,我们自己再保存以上信息到nvds区域。

2、sec初始化的时候,新增通过nvds读取加密信息,如果有数据,设置已绑定的标志位,否则就是处于未绑定的状态。

具体实现,用户可以参考附件中的两个文件。


6626配对绑定阶段参考demo-202403229811.rar
被收藏 0  ∙  2 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站