蓝牙配对之——配对特性交换
扫描二维码
随时随地手机看文章
蓝牙(Bluetooth®)核心规格中有三大主要架构层:控制器、主机和应用。主机层中有一个为配对和密钥分配定义方法和协议的安全管理器模块、相应的安全工具箱、以及定义配对指令框架形式、框架架构和超时限制的安全管理器协议。安全管理器采用密钥分配的方式执行无线电通讯中的身份和加密功能。
配对以建立密钥,然后就能用密钥来加密链路。然后执行传输特定的(transport specific)密钥分配来分享密钥。密钥可用来加密日后的重新连接、验证签名数据、或执行随机地址解析。总的来说配对有三个阶段:
第一阶段:配对特性交换
第二阶段(低功耗传统配对):生成短期密钥(Short Term Key,简称STK)
(低功耗安全连结):生成长期密钥(Long Term Key,简称LTK)
第三阶段:传输特定的密钥分配
大多数读者可能未必了解低功耗传统配对和低功耗安全连接。低功耗(Low Energy,简称LE)是蓝牙规格中蓝牙4.0及以上版本的主要特性之一。蓝牙4.2规格为低功耗物理传输添加了安全连接特性,升级了配对功能,在蓝牙低功耗物理传输中采用美国联邦信息处理(FIPS)许可的算法(AES-CMAC和P-256 椭圆曲线)。为了区别安全连接与蓝牙4.0和4.1规格中定义的低功耗配对,我们将后者成为低功耗传统配对。图1是传统配对和安全连接都适用的配对流程图。
图1:配对流程图
在这一篇中,我们主要讨论第一阶段,即配对特性交换。配对就是安全特性的交换,包括输入/输出(IO)功能、对于中间人保护的要求等。两台设备间配对信息的交换是通过配对请求(PairingRequest)和配对响应(PairingResponse)数据包实现的。这两种信息的内容请参考表1:配对请求/响应。
表1 配对请求/响应
“代码”
IO 功能
IO 即为输入/输出,IO功能结合在一起可生成这一字段的值。
对于输入功能来说,可能为“无输入”、“是/否”或“键盘”,详情如下:
对于输出功能来说,可能为“无输出”或“数字输出”,详情如下:
将输入输出功能结合在一起之后,就有了以下矩阵,定义了蓝牙设备应有的IO功能。
1 没有配对算法可以使用“是/否”的输入和“无输出”,因此其IO功能结果为“NoInputNoOutput”。
从以上矩阵中能大致了解相应的IO功能,并从下表中选择合适的值,置入配对请求/响应数据包。