蓝牙解析(part11):BLE SM(1): 配对特性交换(Pairing Feature Exchange)
来源:互联网 发布:c语言中sleep函数后面 编辑:程序博客网 时间:2024/04/27 22:00
本文引自:https://blog.bluetooth.com/bluetooth-pairing-part-1-pairing-feature-exchange
蓝牙的Spec规格有三个主要架构层,从上往下依次是application,host and controller。其中host层有一个为配对和密钥分配定义方法和协议的安全管理模块(SM),相应的安全工具箱以及定义配对指令框架形式,框架结构以及超时限制的安全管理器协议(SMP)。SM采用密钥分配的方式执行无线电通信中的身份和加密功能。配对以建立密钥,然后就能用密钥来加密链路。然后执行传输特定的(transport specific)密钥分配来分享密钥。密钥可用来加密日后的重连,验证签名数据或者执行随机地址解析。
总的来说配对过程有3个阶段:
- Phase 1: 配对特性交换(Pairing Feature Exchange)
- Phase 2: 低功耗传统配对 (LE legacy pairing): 生成短期密钥(Short Term Key (STK) Generation)
- Phase 2: 低功耗安全连接 (LE Secure Connections):生成长期密钥( Long Term Key (LTK) Generation)
- Phase 3: 传输特定的秘钥分配 (Transport Specific Key Distribution)
这一篇中,我们主要讨论第一阶段,即配对特性交换。配对就是安全特性的交换,包括IO功能,对于中间人保护的要求等。两台设备之间的配对信息交换是通过配对请求(pairing request) and 配对响应(pairing response)数据包实现的。这两种信息的内容如下图所示:
(1)code
(2)IO
IO,即input/output. IO功能结合在一起可生成这一字段的值。对于Input来讲,detail值列表如下:
对于Output来讲,detail值列表如下:
将input 和 Output整合起来,就有了以下矩阵,定义了蓝牙设备应有的IO能力,detail值列表如下:
注释1:因为没有配对算法可以使用“Yes/No”的Input和“NoOutput”的output,因此IO功能结果为“NoInputNoOutput”。
另外,从上面的矩阵,可以大致了解响应的IO功能,并从下表中选择合适的值,放置到Pairing request/response数据包。
(3)OOB data flag
OOB,即out-of-band,意为"带外"。采用外部通信方法交换一些配对过程中使用的信息。OOB没提可能是任何一种能够传输相应信息的其它无线通信标准,如NFC或者二维码。
.BF, “Bonding_Flags”
(4)BF(bonding flags)
绑定(Bonding),是配对发生之后的长期密钥交换,并将这些密钥储存起来以供日后使用,即在设备间创建永久的安全连接。配对机制是绑定的前提。
“MITM”
(5)“MITM”
MITM,即“Man-In-The_Middle”意为"中间人"。这一字段是1个比特位的标识,如果设备需要MITM保护,则设置为1.如果您对MITM有兴趣,请参考 the Bluetooth Core Specification v4.2, Vol1, Part A, 5.2.3.
(6)“SC”
SC,即“security connections”。这一字段是1个比特位的标识,设置为1,已请求低功耗安全连接配对.
可能的配对机制结果为:如果两台设备均支持SC,则采用SC;否则采用低功耗传统连接。因此这一标识是决定第二阶段配对方法的一项重要指标。
(7)“KP”
KP,即“keypress”。这一字段是1个比特位的标识,只用于万能钥匙(Passkey)进入协议,在其他协议中可忽略。万能钥匙进入是传统配对和安全连接的典型配对方法,因此这一部分将在后面进行单独讨论。
(8)“最大加密密钥规模(“Maximum Encryption Key Size”)”
最大加密密钥规模范围从7-16个八位字节。
(9)“发起者密钥分配和响应者密钥分配(“Initiator Key Distribution” & “Responder Key Distribution”)”
这两个字段定义如下。具体细节也将在后面进行单独讨论。
当配对特性的交换开始之后,发起者和响应者会通过配对请求和响应来交换彼此的信息。有了这些信息,发起者和响应者就能确认对方的IO能力(这是传统配对和安全连接都所需的),然后选择配对方法—Just Work,Passkey Entry, Numeric Comparison or Out of Band—to use in Phase2. 详细内容请见BLE SM(2): 配对方法和密钥生成(Pairing Method and Key Generation).
- 蓝牙解析(part11):BLE SM(1): 配对特性交换(Pairing Feature Exchange)
- 蓝牙解析(part11):BLE SM(3):传统配对(Legacy Pairing)之: Passkey Entry
- 蓝牙解析(part11):BLE SM(5):传统配对(Legacy Pairing):OOB
- 蓝牙解析(part11):BLE SM Bonding
- 蓝牙解析(part11):BLE SM(2):密钥生成方法(Key Generation Methods)
- 蓝牙解析(part11):BLE SM(4):低功耗安全连接(SC):数值比较
- [BLE--SMP]蓝牙安全管理SM的配对方法
- 配对堆(Pairing Heap)
- 【Android(BLE)】Android(BLE)之蓝牙权限和feature
- 蓝牙简单配对(Simple Pairing)协议及代码流程简述
- 蓝牙简单配对(Simple Pairing)协议及代码流程简述
- FCC--DNA Pairing(基因配对)
- 蓝牙解析(part3):BLE协议栈解析
- 蓝牙4.0 BLE 广播包解析
- 蓝牙4.0 BLE 广播包解析
- 蓝牙解析(part10):BLE ATT/GATT
- 蓝牙解析(part4):IPv6 Over BLE
- 蓝牙解析(part5):BLE的广播通信
- linux常用命令的常用使用方法---arp
- jfinal中把单个字段返回到前台及由Record获取单个字段
- Activity间的数据回传
- 本地引擎错误.错误代码:24001
- PHP学习第一步
- 蓝牙解析(part11):BLE SM(1): 配对特性交换(Pairing Feature Exchange)
- Android 使用okhttp 设置Cookie过程
- CPU、GPU、CUDA,CuDNN 简介
- Linux设备驱动二 (5)单CPU下的竞态和并发
- mysql索引,视图,游标,触发器,事物,存储过程
- Cent OS安装maven
- javascript实现上传和下载
- Spark 实战,第 3 部分: 使用 Spark SQL 对结构化数据进行统计分析
- PHP中的打印LOG信息方式