本文选译自蓝牙核心规范V5.2,Vol 3,Part H Security Manager Specification,主要内容为低功耗或双模蓝牙设备的安全管理配对方法。后续文章会逐步翻译安全管理部分的主要内容,并结合蓝牙设备的空中数据包对加密流程进行说明。
安全管理规范SECURITY MANAGER SPECIFICATION
Security Manager(SM)安全管理定义了用于管理LE-only或BR/EDR/LE设备的配对、鉴权以及加密的协议和行为。
2.安全管理 SECURITY MANAGER
2.3.配对方法 PAIRING METHODS
配对开始时,发起设备(Initiating device)应发起配对特征交换(Pairing Feature Exchange)。如果响应设备(Responding device)不支持配对或不能执行配对,则相应设备应回应配对失败(Pairing Failed)消息,错误码为“不支持配对(Pairing Not Supported)”。否则响应设备回应配对响应(Pairing Response)消息。
配对特征交换用于交换输入输出能力(IO capabilities),OOB鉴权数据可用性,鉴权要求,密钥大小要求以及特定于传输的密钥的分发信息。输入输出能力,OOB鉴权数据可用性和鉴权要求用于决定阶段2使用的密钥生成方法。
所有的LE传统配对方法使用以及生成2个密钥:
-
临时密钥Temporary Key(TK):一个在生成STK(参见2.3.5.5章节)流程中使用的128位的临时密钥。
-
短期密钥Short Term Key(STK):一个用于在配对后加密连接的临时密钥。
LE安全连接配对方法使用以及生成1个密钥:
-
长期密钥Long Term Key (LTK):一个用于在配对后以及再次连接时加密连接的密钥。
鉴权要求通过GAP设置,(参见[Vol 3] Part C, Section 10.3)。鉴权要求包括绑定类型和中间人保护man-in-the-middle protection (MITM)要求。
发起设备向响应设备表明它将发送哪些特定于传输的密钥,以及它希望响应设备发送哪些密钥。响应设备回复发起设备应发送的密钥以及响应设备将发送的密钥。用于分发的密钥在2.4.3章节定义。如果设备收到带有无效参数的命令,它应回应错误码为“无效参数(Invalid Parameters)”的配对失败命令。
2.3.1.安全属性 Security Properties
SM提供的安全属性分为以下几类:
-
LE安全连接配对
-
身份验证MITM保护
-
未鉴权无MITM保护
-
无安全需求
LE安全连接配对使用P-256椭圆曲线(参见[Vol 2] Part H, Section 7.6)。
LE传统配对中,身份验证MITM保护通过使用输入配对码(passkey)或带外(out of band)的配对方法获得。LE安全连接配对中,身份验证MITM保护通过使用输入配对码(passkey)或数字比较(numeric comparison)或带外(out of band)的配对方法获得。要确保身份验证MITM保护生效,则选择的鉴权要求选项必须指定了MITM保护。
未鉴权无MITM保护没有针对MITM攻击的保护。
对于LE传统配对,配对过程中,由于使用了可预测或易于确认的TK值,所以没有一种配对方法可以提供针对被动窃听者的保护。如果在没有窃听者的情况下分发了配对信息,则所有配对方法都提供机密性。
发起设备应在安全数据库中保留分发密钥的安全属性的记录。
响应设备可以在安全数据库中保留分发密钥大小的记录和分发密钥的安全属性的记录。基于密钥生成方法和协商的密钥大小,响应设备可能必须减少密钥长度(参见2.3.4章节),以便发起者和响应者使用相同的密钥。
阶段2生成的密钥的安全属性应该在密钥分发后存储到安全数据库中。
2.3.2.输入输出能力 IO capabilities
设备的输入和输出功能组合在一起成为其输入输出能力。输入能力在表2.3中描述。输出能力在表2.4中描述。
设备的独立的输入和输出功能映射到单一的输入输出能力中,用于配对特征交换。映射关系在表2.5中描述。
2.3.3.OOB鉴权数据 OOB authentication data
带外机制在配对过程期间可以用于传达信息。信息应该是一个广播结构(AD structures)(参见[Vol 3] Part C, Section 11)的序列。
如果设备具有对端设备的带外鉴权数据,则OOB数据标志应被置位。一个设备使用对端设备的带外鉴权数据来验证对端设备的身份。在LE传统配对中,如果两台设备都具有另一台设备的带外鉴权数据,则使用带外方法。在LE安全连接配对中,如果至少一台设备具有对端设备的带外鉴权数据,则使用带外方法。
2.3.4.加密密钥大小 Encryption key size
每台设备应具有最大和最小加密密钥长度参数,该参数定义了加密密钥的最大和最小大小,单位为八位字节。最大和最小加密密钥长度参数应在7字节(56位)到16字节(128位)之间,单位为1字节(8位)。这个长度由配置文件(profile)或设备应用(device application)定义。
发起和响应设备的最大加密密钥长度参数的较小值应作为加密密钥大小。
发起和响应设备都应该检查加密密钥大小的结果不小于该设备的最小密钥大小参数,如果小于,该设备应发送错误码为“加密密钥大小(Encryption Key Size)”的配对失败指令。
加密密钥大小可以被储存,因此它可以被任意具有最小加密密钥长度要求的服务检查。
如果一个密钥具有小于16字节(128位)的加密密钥大小,应通过屏蔽生成的密钥中适当数量的最高有效位(MSB)来创建它,以提供一个具有商定加密密钥大小的最终密钥。屏蔽应在密钥生成之后,分发、使用或存储之前完成。
提示:当BR/EDR链接密钥通过LTK推导时,推导应在LTK被屏蔽前完成。
例如,如果一个128位的加密密钥为:
0x123456789ABCDEF0123456789ABCDEF0
该密钥需减少到7字节(56位),则最终密钥为:
0x0000000000000000003456789ABCDEF0
原文始发于微信公众号(技术知识小记):低功耗蓝牙设备安全管理配对方法[一]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/185092.html