新闻中心

EEPW首页>手机与无线通信>设计应用> ULP蓝牙技术的安全设计

ULP蓝牙技术的安全设计

作者: 时间:2011-10-09 来源:网络 收藏

3.2广播工作模式中认证
系统中,每一台设备会产生和保持两个随机生成的密钥:鉴权(identity root)和加密(encryption root)。鉴权用于连接中生成私有地址和区分标识符密钥连接中的标识符。加密用来确立密钥标识符的。在任何加密连接中,广播创建密钥作为会话密钥的基础。集合密钥是在某些配对选择中创建,这些密钥只是用作保护(未来)广播中密钥的传递。

加密模式中,通过广播方式把创建的密钥分派给需要连接的所有设备或实体,鉴权的一个应用建立私有地址。因为鉴权每次只支持一个身份,所以许多申请者将获得同样的鉴权。广播向设备提供标识符的加密(伴随16bit 标识符),在加密模式中该设备是支持连接的设备。规范的基本概念有唯一的标识符密钥,被称为“长期密钥”(Long Term Key),这个密钥分配给每个申请者。此外,加密规则仅仅是推荐使用并且在广播之外。长期密钥是不可见的,在原则上能使用任何映射在 16位和128位之间密钥。加密标识符密钥有以下几种:IRK(Identity Resolving Key)、PIR(Pairing Identity Root)、DHK(Diversifier Hiding Key)、 PIRK(Pairing Identity Resolving Key)、PDHK (Pairing Diversifier Hiding Key)。

在广播模式条件下,广播设备产生一个初始随机向量(IRV),该向量由10个字节的新随机数组成,也是链路层(LL)传输给申请者的第一个可能的数据包。广播设备初始化时,到达一个连接请求。

连接请求包括:SEC字段(表明是否是加密请求)、PI字段(表明申请者连接一个匹配认证)。SEC=1,表示有2字节的加密区分标识符(EDIV)和申请者6字节的随机地址。

如图3所示,在SEC=1的条件下,广播模式下的认证步骤如下:
1.解密区分标识符隐藏密钥:发送HCI_Set_key(0x00,DKH)命令到链路层,返回HCI_Command_Complete(),并再发送加密请求命令HCI_encrypt(addmaster),PAL返回请求完成命令HCI_Command_Complete()。
由EDHK计算DIV,
此具体过程是:
由Y = EDHK
(IRA(初始化随机地址),
0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00)
DIV = {Y0, Y1} XOR {EDIV0, EDIV1}得出。
或者在PI=1的条件下,即匹配连接中有
Y = EPDHK (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出DIV = {Y0, Y1} XOR {EDIV0, EDIV1}

2.创建长期密钥:发送设置加密命令到链路层HCI_Set_key(0x00,ER),返回完成命令HCI_Command_Complete(),再发送请求加密长期密钥命令HCI_encrypt(DIV),返回完成创建长期密钥命令HCI_Command_Complete(LTK)。

按以下公式重新创建长期密钥LTK,

LTK=EER (DIV,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)

3.创建会话密钥命令HCI_Set_key(0x00,LTK),返回完成命令HCI_Command_Complete(),再发送请求加密长期密钥命令HCI_Encrypt(addmaster/IRV),返回完成创建长期密钥命令HCI_Command_Complete(SK)。。

4.链路层设置会话密钥和初始值:初始值为

别发送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到链路层进行设置,返回完成设置命令HCI_Command_Complete()。生成会话密钥SK和IV,并在链路层设置(广播地址AA = {A0,A1, …,A5})。


3.3申请模式中加密会话设置
申请者浏览广播,找到相匹配的广播地址AA={A0,A1,…,A5},初始使用6字节完全随机地址(IRA)。

1.创建随机地址:发送HCI_Rand()命令到链路层(LL),返回HCI_Command_Complete(rand),

2.加密区分标识符(diverfier)密钥:发送设置加密命令到链路层HCI_Set_key(0x00,DHR),返回请求完成命令HCI_Command_Complete(),再发送加密请求命令HCI_Encrypt(addmaster),返回请求完成命令HCI_Command_Complete()。

由DIV计算出EDIV
由Y = EDHK (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出EDIV = {Y0, Y1} XOR {DIV0, DIV1}
或者在PI=1的条件下,即匹配中由
Y = EPDHK (IRA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00)
得出EDIV = {Y0, Y1} XOR {DIV0, DIV1}

最后申请者请求一个连接,该连接建立过程如图4所示。

1.如果请求加密连接,则SEC 字段一直等于1;如果在申请者和广播设备间,扩展匹配继续进行,即PI字段设置为1。

2. 2字节的加密区分标识符密钥(EDIV),6字节的申请者随机地址(IRA)。

3.当连接已经建立,从广播中申请者得到一个10字节的随机向量(IRV)作为层协议数据单元PDU(类型0xFD),然后从长期密钥中,申请者创建会话密钥SK和设置初始值(IV)。

创建会话密钥SK:发送设置长期密钥命令HCI_Set_key(0x00,LTK)到链路层,返回完成命令HCI_Command_Complete(),再发送加密请求命令HCI_encrypt,返回完成创建会话密钥命令HCI_Command_Complete(SK),

即可表示为:
SK = (IRA,IRV),
IV = {IRA,A0,A1,A2}。

4.SK和IV被分配给链路层(LL),作为最后的步骤,LL操作中,申请者将初始化“连接模式变化”。
链路层设置会话密钥和初始值:分别发送命令HCI_Set_key(0x01,SK)和HCI_Set_IV(addr|addr[0…23])到链路层设置,返回完成设置命令HCI_Command_Complete()。



3.4密钥更新
连接建立之后,不支持密钥更新或者重建参数。唯一的例外就是匹配程序,在匹配的第一阶段后,匹配程序中的会话加密密钥和状态发生改变。



评论


相关推荐

技术专区

关闭