BLE配对.doc_第1页
BLE配对.doc_第2页
BLE配对.doc_第3页
BLE配对.doc_第4页
BLE配对.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

BLE配对根据4.0.协议中相关文档的顺序从安全管理(SECURITY MANAGER)、安全管理协议SMP(SECURITY MANAGER PROTOCOL)和消息序列流程图(MESSAGE SEQUENCE CHARTS)这三个方面进行论述。具体内容见Volume 3 part H一、 安全管理2.1 介绍配对是一个三阶段的过程。前两个阶段总是使用,可能跟随着一个可选的传输特定秘钥分配的阶段。阶段1:配对特征交换阶段2:短期秘钥(STK)生成阶段3:传输特定秘钥分配设备首先在配对特征交换阶段交换IO能力来决定在第二阶段使用下面哪种方法:Just Works:只工作Passkey Entry:输入密码Out Of Band(OOB):带外可选的,第三阶段将执行来分配传输特定秘钥,例如长期秘钥(LTK)和加密多样化(EDIV)值。无论过程2用哪种方法过程1和3都是一致的。过程3只在使用第二阶段生成的STK加密的链路上执行。阶段1和2可以在加密或未加密的链路上执行。2.1 加密工具箱加密函数:1、 ah用来创建在随机地址创建和解析中使用的24位哈希码。2、 c1用来生成在配对过程中使用的确认值3、 s1用来在配对过程中生成STK基于上述加密功能的建筑块就是安全函数e。2.2.1安全函数 e安全函数e使用AES 分组密码生成128位的密文和128位的明文。encryptedData = e(key, plaintextData)注意:安全函数e能在主机中实现或使用HCI_LE_Encrypt命令实现。2.1.2 随机地址哈希函数ah函数ah用来生成在可解析私有地址中使用的哈希值。函数ah的输入:128位k,24位r,104位padding参数r和padding级联生成r, r作为向函数e提供的128位输入参数明文。r = padding | rr最不重要的字节变成r中最不重要的字节,padding最重要的字节变成最重要的字节。ah的输出为ah(k, r) = e(k, r) mod 2.1.3 确认值生成函数c1在配对过程中交换确认值。输入参数:K:128 r:128 pres:56 preq:56 iat:1 ia:48位 rat:1 ra:48 padding:32位或0为了创建8位的iat和rat,需要将iat和rat与0进行连接。iat和rat作为8位数据的低位字节。p1 = pres | preq | rat | iat连接运算p1和r异或作为安全函数e的128位输入参数明文。珠子p2 = padding | ia | rap2和使用p1作为输入明文参数的函数e的结果异或,用来作为函数e的明文输入参数。C1的输出确定值如下:c1 (k, r, preq, pres, iat, rat, ia, ra) = e(k, e(k, r XOR p1) XOR p2)2.1.4 秘钥生成函数s1S1用来在配对过程中生成STK.输入: k 128,r1 128,r2 128r1为r1的低64位,r2为r2的低64位,r1和r2连接为128位的r用来作为安全函数e的明文数据参数。r = r1 | r2s1的输出为:s1(k, r1, r2) = e(k, r)2.3 配对方法当配对开始,初始化设备初始化配对特征交换。如果响应设备不支持配对或者配对不能被执行那么响应设备将使用含有错误代码“”Pairing Not Supported”的配对失败消息响应,否则使用配对响应消息响应。配对特征交换用来交换IO能力,OOB认证数据可用性,认证需求,秘钥大小需求及将要分配的传输特定秘钥。IO能力、OOB认证数据可用性及认证需求用来决定在过程2使用的STK生成方法。所有的配对方法使用并生成两个秘钥:1、 临时秘钥(TK):一个128位的临时秘钥用来在配对过程中生成STK2、 短期秘钥(STK):一个128位的临时秘钥用来随着配对加密一条连接。认证需求由GAP设置。认证需求包括绑定类型和MITM保护需求。初始化设备向响应设备指定它应向响应设备发送的传输特定秘钥和它需要响应设备向初始化设备发送的秘钥。响应设备用初始化设备应发送的秘钥和响应设备应发送的秘钥作为回复。如果设备收到无效参数的命令,它应用具有错误代码“Invalid Parameters”的配对失败命令响应。2.3.1 安全属性由SM提供的安全属性分到下面定义的一类:认证MITM保护无认证无MITM保护无安全需求认证的MITM保护通过使用密码输入配对方法或使用OOB配对方法得到。为了保证认证的MITM保护生成,选择的认证需求可选性必须指定MITM保护。无认证无MITM包块不能保护抵御MITM攻击。当可预见的或容易确定的TK值使用时,在配对过程中是没有配对方法提供保护以免受被动窃听的。如果在没有窃听存在的时候分配配对信息那么所有的配对方法都提供可信性。初始化设备应在安全数据库为分配的秘钥保持一条安全属性记录。响应设备应在安全数据库为分配的秘钥保持一条分配的秘钥的大小和安全属性的记录。基于生成秘钥的方法和协定的秘钥大小响应设备可能必须减小秘钥长度以使得初始化设备和响应设备使用相同的秘钥。2.3.2 IO能力设备的输入和输出能力相结合产生它 的IO能力。2.3.3 OOB认证数据2.3.4 加密秘钥大小每个设备应具有最大和最小秘钥长度参数,参数定义了秘钥允许在字节中的最大和最小大小。最大和最小秘钥长度参数应在7个字节和16个字节之间,在一个字节级别。初始化设备和响应设备秘钥长度参数中较小的那个应该用来作为秘钥大小。初始化设备和响应设备都应坚持得到的秘钥大小不比最小秘钥大小参数小,如果小,设备应发送具有错误代码“Encryption Key Size”的配对失败命令。秘钥大小可能被存储这样它就可以被任何具有最小秘钥长度需求的设备检查。如果秘钥大小不足16字节,应使用掩码,掩码应在生成后,并在被分配(在LTK情况下)、使用或存储之前完成。2.3.5 配对算法配对通过每个设备生成TK执行。生成TK的方法基于通过使用算法选择的配对方法。2.3.5.1 选择STK生成方法如果两个设备都有OOB认证数据,那么当选择配对方法时认证需求标志应被忽略并且应使用OOB配对方法。如果两个设备都没有在认证需求标志中设置MITM选项,那么IO能力应被忽略并且应使用Just Works 相关模型。否则使用设备的IO能力来决定配对方法。生成的秘钥要么是认证MITM保护,要么是无认证无MITM保护秘钥。如果使用OOB认证方法,秘钥假定为是认证MITM保护。然而,精确的强度基于用来传送OOB信息的方法。如果初始化设备有OOB数据,响应设备没有OOB数据那么响应设备可能发送具有错误代码“OOB Not Available”的配对失败命令代替配对响应命令。如果STK生成方法的结果不是提供足够安全属性的STK那么设备应发送含有错误代码“Authentication Requirements”的配对失败命令。2.3.5.2 Just Works这种STK生成方法不对在配对过程中的防止窃听或中间人攻击提供保护。如果在配对过程中不存在攻击那么通过在未来的连接中使用加密可以建立信任。2.3.5.3 密码输入该方法使用6个数字由设备间的用户通过OOB.一个6位随机数生成的秘钥达到约20位的秘钥熵。如果设备的IO能力是“DisplayOnly”或者表2.4定义设备显示密码那么设备应显示一个随机生成的000000到999999之间的秘钥值。显示应保证所有的6位数字被显示-包括0。其余的设备允许用户输入一个位于000000到999999之间的值。如果用户接口的密码输入失败或者被取消那么设备发送具有原因代码“Passkey Entry Failed”的配对失败命令。密码输入方法提供保护应对活动的MITM攻击,因为该方法每次调用活动的MITM的成功率为0.000001.TK值将在认证机制中使用。2.3.5.4 OOBOOB机制可以用来通信信息帮助设备发现(例如设备地址)和在配对过程使用的128位TK值。TK值应是128位的随机数字使用随机生成需求。如果OOB通信抗MITM攻击,那么这个相关的方法也抗MITM攻击。同时,在OOB方法中,认证参数(TK)的大小需要不被用户能轻松读的内容或类型限制。对于这个原因,OOB方法比使用密码输入或Just Works方法更安全。因此两个设备都需要具有匹配的OOB接口。2.3.5.5 确认 STK生成和加密初始化设备生成128位随机数(Mrand)。初始化设备使用具有输入参数k设置成TK,r设置成Mrand。preq设置成配对请求命令,pres设置成配对响应命令,iat设置成初始化设备地址类型,ia设置成初始化设备地址,rat设置成响应设备地址类型,ra设置成响应设备地址的确认值生成函数c1计算128bit确认值(Mconfirm):Mconfirm = c1(TK, Mrand, Pairing Request command, Pairing Response command,initiating device address type, initiating device address, responding device address type, responding devices address)用来生成确认的初始化设备和响应设备的地址应是在连接设置时使用的设备地址。响应设备生成128bit的随机数(Srand)。Sconfirm = c1(TK, Srand, Pairing Request command, Pairing Response command, initiating device address type, initiating devices address,responding device address type, responding device address)设置参数同上初始化设备传送Mconfirm向响应设备。当响应设备接收Mconfirm它传送Sconfirm向初始化设备。当初始化设备收到Sconfirm它传送Mrand向响应设备。响应设备通使用得到的Mrand值重复执行初始化设备的技术校验Mconfirm值。如果响应设备计算得到的Mconfirm值和从初始化设备接收到的值不匹配那么配对过程应中止并且响应设备应发送具有原因代码“Confirm Value Failed”的配对失败命令。如果响应设备计算的Mconfirm值和从初始化设备接收到的值匹配,响应设备传送Srand到初始化设备。初始化设备通过使用接收到的Srand值重复执行响应设备的计算来校验Sconfirm值。如果初始化设备计算的Sconfirm值和从响应设备接收到的Sconfirm值不匹配那么配对过程应以失败终止并且初始化设备应发送具有原因代码“Confirm Value Failed”的配对失败命令。如果初始化设备计算的Sconfirm值和从响应设备接收到的值匹配,初始化设备将计算STK并且告诉控制器来启用加密。STK使用秘钥生成函数s1来生成,输入参数k设置为TK,r1设置为Srand,r2设置为Mrand:STK = s1(TK, Srand, Mrand)如果秘钥大小小于128比特那么STK应使用掩码设置为正确的大小。初始化设备使用生成的STK在链路启动加密或者如果加密已经启动,执行加密暂停过程。2.3.6 重复尝试当一个配对过程失败,一个等待的间隔应通过在校验器初始化一个新的配对请求命令或者向相同申请人的安全请求命令之前,或者在他回响应一个配对请求命令或由设备请求相同身份为失败的设备初始化的安全请求命令之前。对于每个随后的失败,等待的间隔一昂成倍的增加。也就是说在每次失败后,在一个新的尝试开始前的等待将会是两倍于前面等待的时间间隔。等待间隔有一个最大值。最大等待间隔基于实现。当在特定的时间区间内没有新的失败尝试的时候等待时间将成倍减少。这个过程防止入侵者使用大量的不同的秘钥重复配对过程。2.4 BLE 安全安全将由master角色的设备中的SM初始化。处于slave角色的设备应作为响应设备。Slave设备可以请求maser设备初始化配对或者其他安全过程。在秘钥分配阶段slave把秘钥给master所有重连能够被加密,它的随机地址能够被解析或者master设备能校验来自slave签名数据。Master也向slave提供数据所以如果角色交换重连能够被加密,master的随机地址能够被解析或者slave能够校验来自master的签名数据。2.4.1 秘钥和值的定义LE安全使用下面的秘钥和值来加密、签名和随机地址1、 身份解析秘钥(IRK):128 bit 用来生成和解析随机地址2、 连接签名解析秘钥(CSRK):128bit 用来数字签名和在接收设备校验签名3、 长期秘钥LTK:128bit 用来为加密连接生成共同的会话秘钥,链路层加密4、 加密多样化(EDIV):16bit 存储的值用来识别LTK.当有一个唯一的LTK分配的时候就生成一个新的EDIV。5、 随机数字(Rand)64bit 存储的数据用来识别LTK. 当有一个唯一的LTK分配的时候就生成一个新的Rand。2.4.2 秘钥生成SM使用的秘钥是分配的而不是由两个设备贡献。2.4.3 秘钥分配Slave向master分配如下秘钥:LTK,EDIV和RandIRKCSRKMaster向slave分配如下秘钥:LTK EDIV RandIRK CSRK分配秘钥的安全属性应被设置成STK的安全属性,STK用来分配他们。链路应在阶段2在任何秘钥被分配之前被加密或者被重新加密。注意:分配的EDIV和Rand值在加密会话设置时由master设备在空文档向slave传输。一旦在配对过程中使用BD_ADDR和分配的LTK的重连发生,在身份地址信息命令接收到的BD_ADDR应只被认为是有效的。一旦成功,BD_ADDR和分配的秘钥应被联系到安全数据库中的那个设备。当秘钥分配的阶段已经完成时,设备能请求加密会话设备来使用由slave分配的LTK、EDIV和Rand值。然而,这并不能提供任何额外的安全益处。如果攻击已经建立分配的LTK,那么执行加密会话启动来使用分配的值不能提供任何保护来抵制攻击。2.4.4 加密会话建立在加密会话建立过程中,master向slave发送16bit的加密多样性值、EDIV、64位随机数,Rand,在配对过程slave分配的值。当建立加密会话时,Mater的主机提供链路层LTK使用。当建立加密链路时,Slave的主机接收EDIV和Rand,向slave链路层提供LTK使用。2.4.4.1 使用STK建立加密为了在配对步骤3分配LTK和其他秘钥,需要建立一个加密会话。使用在步骤2生成的STK作为LTK提供给链路层建立加密会话,EDIV和Rand值应设置为0.如果链路已经加密那么加密暂停过程应执行,使用在步骤2生成的STK作为LTK提供给链路层建立加密会话,EDIV和Rand值应设置为0.2.4.2.2 使用LTK建立加密Master必须就具有由slave分配的安全信息((LTK, EDIV, Rand)来启动加密会话。Master使用slave分配的LTK作为长期秘钥,和slave分配的EDIV和Rand值初始化加密会话。如果链路已经加密那么加密暂停过程应执行,使用slave分配的LTK作为LTK提供给链路层建立加密会话,和slave分配的EDIV和Rand值.EDIV和Rand值用来建立用来在slave设备作为长期秘钥的LTK.如果LTK不能通过EDIV和Rand值建立,那么slave应拒绝加密链路的请求并可能选择断开链路。当安全信息被存储时,如果远程设备已经删除了安全信息后续的加密设置可能失败。2.4.5 签名算法LE设备可以在不必和对等设备建立加密会话的情况下发送签名数据。数据应使用CSRK签署。一个执行签名校验的设备必须已经接收了来自签名设备的CSRK。算法输入:变量长度m ,128bit的k值 ,32bit的签名计数器签名使用NIST SP 800-38B算法,算法使用AES-128作为分组密码,它定义了消息认证码(MAC)生成函数MAC = CMAC(K, M, Tlen)MAC位长度64位,用来签名生成的秘钥(k)设置为CSRK.2.4.6 slave安全请求Slave设备可以通过向master传送Security Request命令进行安全请求。当master设备接收了Security Request命令它就可以加密链路、初始化配对过程或者拒绝请求。如果配对过程正在进行或者加密过程正在进行slave不应发送Security Request命令。Security Request包括需要的安全属性。需要MITM保护的安全属性只在slave的IO能力允许Passkey Entry相关模型使用或OOB认证数据可用的情况下能够被设置。如果master在没有从slave收到Pairing Response时已经发送了Pairing Request或者master已经初始化了加密模型启动,master应忽略slave的Security Request。如果当slave的Security Request Command收到时,配对或加密模型不被支持或者不能被初始化,那么master应使用原因为“Pairing Not Supported”的Pairing Failed Command响应。Security Request接收后,master应首先检查它是否具有启动加密需要的安全信息。如果信息丢失或者不满足slave需求的安全属性,那么master应初始化配对过程。如果配对成功,master的安全数据库使用这秘钥进行更新并且在配对过程中分配安全属性。如果master具有启动加密需要的安全信息并且它满足slave请求的安全属性,它应使用LTK执行加密设置。在发送了包含满足请求的安全属性的认证需求的Security Request command后,slave应坚持任何从master接收的Pairing Request command。如果slave请求不是Just Works的安全属性并行在发送了一个Security Request command后接收了一个加密过程请求那么它应检查任何存在的安全信息是有效的安全属性。二、SMPSMP用来配对和传输特定秘钥分配。所有的SMP命令在SM通道发送,该通道是一个L2CAP固定通道。SM通道配置参数如下:2.5 命令格式Code:指定命令类型如果数据包具有保留的Code应忽略。Data:该字段长度可变,Code域决定了Data域的格式。如果设备不支持配对,当任何命令收到时,它应使用含有原因“Pairing Not Supported”的Pairing Failed命令响应。如果支持配对,所有的命令都应支持。2.6 SMP TIMEOUT使用SM计时器是为了防止SMP超时。在传输或接收Pairing Request命令,SMT用被重置并开始。当一个L2CAP SMP命令进入传输队列时SMT应被重置。当SMP完成,SMT应停止。如果SMT达到30s,过程应被认为已经失败,并且应通知本地高层。没有其他的SMP命令应在L2CAP 安全管理通道传输。只有当已经建立物理链路时一个新的SM过程才应执行。3.5配对方法本节定义的SMP命令用来执行配对特征交换和STK生成。3.5.1 配对请求初始化设备通过发送配对请求命令开始配对特征交换。MITM域设置为1如果请求MITM保护否则设置为0.设备将标志设置为1为STK请求认证的安全属性。Maximum Encryption Key Size:7到16字节之间Initiator Key Distribution:该域表明哪个秘钥初始化设备请求来分配或在传输特定秘钥分配阶段使用。Responder Key Distribution:该字段表明哪个秘钥初始化设备请求响应设备来分配或者传输特定秘钥分配阶段使用。3.5.2 配对响应如果响应设备允许配对,该命令用来在响应设备收到配对请求命令后完成配对特征交换。3.5.3 配对确认配对确认用来在成功的配对特征交换之后启动STK生成。该命令被两个对等设备使用来向对等设备发送确认值。初始化设备通过向响应设备发送配对确认命令启动STK生成。如果初始化设备希望终止配对它可以发送配对失败命令代替。响应设备在它已经接收了来自初始化设备的配对确认命令后发送配对确认命令。确认值16字节3.5.4随机配对该命令用来由初始化和响应设备发送用来计算在配对确认命令中的确认值的随机数。初始化设备在它已经收到一个来自响应设备的配对确认命令后发送一个配对随机命令。如果在响应设备计算的确认值和从初始化设备接收到的确认值匹配响应设备应在它收到来自初始化设备的配对随机命令后发送配对随机命令。如果不匹配那么响应设备应使用配对失败命令响应。如果在初始化设备计算的确认值和从响应设备得到的确认值匹配,初始化设备应使用生成的STK加密链路。成功的加密或链路的重新加密是告诉响应设备STK生成已经成功完成。如果计算的确认值不匹配那么初始化设备应使用配对失败命令响应。3.5.5 配对失败当在配对过程发送失败,报告配对过程已经被停止并且当前配对过程没有进一步的通信时使用该命令。任何后续的配对过程应从配对特征交换阶段重新开始。该命令可以在任何时间由任何响应来自远程设备的消息的任何设备发送。3.6 BLE安全3.6.1秘钥分配BLE设备的秘钥分配可以从slave到master,也可以从master到slave。从slave到master如下:LTK使用Encryption Information 命令EDIV and Rand 使用 Master Identification 命令IRK 使用 Identity Information命令Public device 或者 static random address使用 Identity Address Information命令CSRK 上使用Signing Information命令Mater到slave:LTK使用Encryption Information 命令EDIV and Rand 使用 Master Identification 命令IRK 使用 Identity Information命令Public device 或者 static random address使用 Identity Address Information命令CSRK 上使用Signing Information命令3.3.2 加密信息加密信息用来在传输特定秘钥分配中分配当加密未来连接使用的LTK。加密信息命令只有当链路使用已经生成的STK加密或重新加密是传输。3.3.3 Master IdentificationMaster Identification用来在传输特定秘钥分配阶段分配当加密未来连接时使用的EDIV和Rand。Master Identification命令只有链路已

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论