蓝牙配对第 3 部分 – 低能耗传统配对密钥输入

在我之前关于密钥生成方法的博客中,我谈到了密钥生成方法 - 如果发起和响应设备满足某些 IO 能力条件,它们会选择 LE 传统蓝牙配对密钥输入方法。

在本博客中,我将介绍与密钥输入的传统配对及其工作原理。

图 1:LE 传统配对、密钥输入

临时密钥 (TK) 和随机数生成

当您使用 LE 传统配对时,配对由生成临时密钥 (TK) 的每个设备执行。

  • 如果设备(无论是发起设备还是响应设备)的 IO 功能具有显示功能,则它将显示一个介于“000000”和“999999”之间的随机生成的密钥值。另一个设备应该具有像键盘一样的输入功能,以便用户可以输入为 TK 显示的值
  • 如果发起设备和响应设备的IO能力都没有显示能力,而是“仅键盘”,则用户需要保证发起设备和响应设备之间的TK相同。这是密钥输入的特例。

下面是一个名为“Authentication”的设备,想要与 iOS 设备配对,并在其输出界面上显示 TK。然后iOS设备会弹出一个对话框,要求用户输入TK值。

图 2:iOS 设备上的密钥输入

当TK值准备好时,发起设备和响应设备生成一个128位随机数:发起设备为Mrand,响应设备为Srand。

 M确认和确认

Mconfirm和Sconfirm是128位确认值,可以使用确认值生成函数c1来计算。有关此功能的详细信息,请参阅:蓝牙核心规范 V4.2,第 3 卷,H 部分,第 2.2.3 节。

对于c1函数,输入参数包括:

  • TK
  • Mrand 代表 Mconfirm;或 Srand 用于 Sconfirm 计算
  •  配对请求命令
  • 配对响应命令
  • 发起设备地址类型
  • 发起设备地址
  • 响应设备地址类型
  • 响应设备地址

 确认

当Mconfirm和Sconfirm准备好时,发起设备向响应设备发送Mconfirm。当响应设备接收到 Mconfirm 时,它会向发起设备发送 Sconfirm。当发起设备收到 Sconfirm 时,它会将 Mrand 发送到响应设备。

响应设备通过重复发起设备使用接收到的 Mrand 值执行的计算来验证 Mconfirm 值。

  • 如果响应设备计算出的 Mconfirm 值与从发起设备接收到的 Mconfirm 值不匹配,则配对过程将中止,响应设备将发送带有原因代码“确认值失败”的配对失败命令。
  • 如果响应设备计算出的 Mconfirm 值与从发起设备接收到的 Mconfirm 值匹配,则响应设备将 Srand 发送到发起设备。

发起设备通过重复响应设备使用接收到的Srand值执行的计算来验证接收到的Sconfirm值。

  • 如果发起设备计算的 Sconfirm 值与从响应设备接收到的 Sconfirm 值不匹配,则配对过程将中止,发起设备将发送带有原因代码“确认值失败”的配对失败命令。
  • 如果发起设备计算出的 Sconfirm 值与从响应设备接收到的 Sconfirm 值相匹配,则发起设备将计算短期密钥 (STK) 并告知控制器启用加密。

 STK一代

您可以使用蓝牙核心规范 V4.2 第 3 卷第 H 部分第 2.2.4 节中详细介绍的密钥生成函数 s1 生成 STK。

对于s1函数,输入参数包括:

  • TK
  •  srand
  •  prand

配对设备与 STK 建立加密链接。

在第 4 部分中,我在 LE 安全连接中介绍了一种新的配对算法:数字比较。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值