本文选译自蓝牙核心规范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
2.3.5.配对算法 Pairing algorithms
阶段1中的信息交换用于选择阶段2使用哪种密钥生成方法。
当使用LE传统配对时,配对由每个生成临时密钥(TK)的设备执行。生成TK的方法取决于通过算法选择的配对方法,算法在2.3.5.1章节中描述。如果使用仅运行Just Works方式,则TK根据2.3.5.2章节的定义生成。如果使用输入配对码Passkey Entry方式,则TK根据2.3.5.3章节的定义生成。如果使用带外Out Of Band方法,则TK根据2.3.5.4章节的定义生成。TK值应在2.3.5.5章节定义的鉴权机制中使用,用于生成STK以及加密链接。
2.3.5.1.选择密钥生成方法 Selecting key generation method
如果两台设备的鉴权要求标志都未设置MITM选项,则应忽略输入输出能力,并使用Just Works关联模型。
LE传统配对中,如果两台设备都具有带外鉴权数据,则选择配对方法时应忽略鉴权要求标志,并使用带外配对方法。否则,设备的输入输出能力应用于决定表2.8中定义的配对方法。
LE安全连接配对中,如果一台或两台设备具有带外鉴权数据,则选择配对方法时应忽略鉴权要求标志,并使用带外配对方法。否则,设备的输入输出能力应用于决定表2.8中定义的配对方法。
表2.6定义了至少一台设备不支持LE安全连接时的STK生成方法。
表2.7定义了两台设备都支持LE安全连接时的LTK生成方法。
生成的密钥将是一个已验证或未验证的密钥。如果使用了带外鉴权方法,且已知该带外机制可以防止窃听,则认为该密钥通过身份验证;然而,其确切的强度依赖于用于传输带外信息的方法。如果使用了带外鉴权方法,且已知该带外机制无法防止窃听或窃听保护的等级未知,则认为该密钥未经身份验证。输入输出能力和已验证或未验证密钥的映射关系在表2.8中描述。
在LE传统配对中,如果发起设备具有带外数据而响应设备不具有带外数据,则响应设备可以发送错误码为“OOB不可用(OOB Not Available)”的配对失败指令来替代配对响应请求。
如果密钥生成方法未保证密钥提供足够的安全属性(参见2.3.1章节),则设备应发送错误码为“鉴权要求(Authentication Requirements)”的配对失败指令。
2.3.5.2.LE传统配对-仅运行 LE legacy pairing – Just Works
Just Works的STK生成方法在配对过程中不提供针对窃听者或中间人攻击的保护。如果在配对过程期间攻击者未参与,则在未来的连接中通过加密可以建立机密性。
两台设备都将2.3.5.5章节定义的鉴权机制所使用的TK值设为0。
2.3.5.3.LE传统配对-输入配对码 LE legacy pairing – Passkey Entry
输入配对码的STK生成方法使用6个数字,数字由用户在设备间进行带外传递。一个6位数的随机生成的密钥可以实现大约20位的熵。
如果设备的输入输出能力是DisplayOnly,或如果表2.8定义了设备显示配对码,则那台设备应显示一个随机生成的配对码,数值在000,000到999,999之间。显示时应确保包括0在内的所有6个数字都显示出来。另一台设备应允许用户输入一个000,000到999,999之间的数值。
如果在用户界面输入配对码失败或取消输入,则设备应发送原因码为“配对码输入失败(Passkey Entry Failed)”的配对失败命令。
例如,如果用户输入的配对码为’019655’,则TK值应为0x00000000000000000000000000004CC7。
输入配对码方法提供针对活跃的MITM攻击的保护,活跃的MITM攻击在每次使用该方法时,有大概0.000001的概率成功。
由于STK依赖的TK值在一个有限的范围内,因此输入配对码的STK生成方法在配对过程期间提供的针对窃听者的保护非常有限。如果配对过程期间攻击者未参与,则在未来的连接中通过加密可以建立机密性和身份验证。
随后在2.3.5.5章节定义的鉴权机制中使用该TK值。
2.3.5.4.带外 Out of band
带外机制可以用于传递信息来帮助设备进行发现,例如设备地址,以及配对过程使用的128位TK值。TK值应该是一个符合[Vol 2] Part H, Section 2定义的随机数生成要求的128位的随机数。
如果OOB通信可以抵抗MITM攻击,则关联方法也可以抵抗MITM攻击。同样的,在带外方法中,鉴权参数(TK)的大小不必受用户可以轻松读取或输入的内容的限制。因此,带外方法比输入配对码或仅运行方法更加安全。然而,两台设备都需要具有匹配的OOB接口。
仅在活跃的MITM攻击成功概率为0.000001或更低时,才提供MITM保护。
2.3.5.5.LE传统配对阶段2 LE legacy pairing phase 2
发起设备生成一个128位的随机数(Mrand)。
发起设备使用确认值生成函数c1(参见2.2.3章节)计算出128位的确认值(Mconfirm),其中,输入参数k设为TK,输入参数r设为Mrand,输入参数preq设为与对端设备交换的配对请求命令(不经过任何修改),输入参数pres设为与对端设备交换的配对响应命令(不经过任何修改),输入参数iat设为发起设备的地址类型,ia设为发起设备的地址,rat设为响应设备的地址类型,ra设为响应设备的地址:
Mconfirm = c1 ( TK , Mrand ,
Pairing Request command, Pairing Response command,
initiating device address type, initiating device address,
responding device address type, responding device address)
用于确认值生成的发起和响应设备的地址应该是连接设置期间使用的设备地址,参见[Vol 3] Part C, Section 9.3。
响应设备生成一个128位的随机数(Srand)。
响应设备使用确认值生成函数c1(参见2.2.3章节)计算出128位的确认值(Sconfirm),其中,输入参数k设为TK,输入参数r设为Srand,输入参数preq设为配对请求命令,输入参数pres设为配对响应命令,输入参数iat设为发起设备的地址类型,ia设为发起设备的地址,rat设为响应设备的地址类型,ra设为响应设备的地址:
Sconfirm = c1 ( TK , Srand ,
Pairing Request command, Pairing Response command,
initiating device address type, initiating device address,
responding device address type, responding device address)
发起设备向响应设备传送Mconfirm。响应设备接收到Mconfirm后将Sconfirm传送给发起设备。发起设备接收到Sconfirm后将Mrand传送给响应设备。
响应设备使用接收到的Mrand重复进行发起设备执行的计算,来验证Mconfirm的数值。
如果响应设备计算的Mconfirm值与从发起设备收到的Mconfirm值不匹配,则配对流程应被中止,响应设备应发送原因码为“数值确认失败Confirm Value Failed”的配对失败指令。
如果响应设备计算的Mconfirm值与从发起设备收到的Mconfirm值相匹配,响应设备向发起设备传送Srand。
发起设备使用接收到的Srand重复进行响应设备执行的计算,来验证Sconfirm的数值。
如果发起设备计算的Sconfirm值与从响应设备收到的Sconfirm值不匹配,则配对流程应被中止,发起设备应发送原因码为“数值确认失败Confirm Value Failed”的配对失败指令。
如果发起设备计算的Sconfirm值与从响应设备收到的Sconfirm值相匹配,则发起设备随后计算STK并通知Controller启用加密。
STK使用2.2.4章节定义的密钥生成函数s1生成,其中,输入参数k设为TK,输入参数r1设为Srand,输入参数r2设为Mrand:
STK = s1 ( TK , Srand , Mrand )
如果加密密钥大小小于128位,则STK应根据2.3.4章节的描述被屏蔽为正确的密钥大小。
发起设备应使用生成的STK在链接上启用加密,如果加密已启用,则执行停止加密流程(参见2.4.4.1章节)。
历史文章
原文始发于微信公众号(技术知识小记):低功耗蓝牙设备安全管理配对方法[二]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/185098.html