有关蓝牙的安全机制

上传人:豆浆 文档编号:21142059 上传时间:2017-11-23 格式:DOC 页数:6 大小:35.50KB
返回 下载 相关 举报
有关蓝牙的安全机制_第1页
第1页 / 共6页
有关蓝牙的安全机制_第2页
第2页 / 共6页
有关蓝牙的安全机制_第3页
第3页 / 共6页
有关蓝牙的安全机制_第4页
第4页 / 共6页
有关蓝牙的安全机制_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《有关蓝牙的安全机制》由会员分享,可在线阅读,更多相关《有关蓝牙的安全机制(6页珍藏版)》请在金锄头文库上搜索。

1、关于蓝牙的安全机制蓝牙技术提供短距离的对等通信,它在应用层和链路层上都采取了保密措施以保证通信的安全性,所有蓝牙设备都采用相同的认证和加密方式。在链路层,使用个参数来加强通信的安全性,即蓝牙设备地址 BD_ADDR、认证私钥、加密私钥和随机码 RAND。蓝牙设备地址是一个 48 位的 IEEE 地址,它唯一地识别蓝牙设备,对所有蓝牙设备都是公开的;认证私钥在设备初始化期间生成,其长度为 128 比特;加密私钥通常在认证期间由认证私钥生成,其长度根据算法要求选择 8128 比特之间的数(的整数倍),对于目前的绝大多数应用,采用 64 比特的加密私钥就可保证其安全性;随机码由蓝牙设备的伪随机过程产

2、生,其长度为 128 比特。一、随机码生成每个蓝牙设备都有一个伪随机码发生器,它产生的随机数可作为认证私钥和加密私钥。在蓝牙技术中,仅要求随机码是不重复的和随机产生的。“不重复”是指在认证私钥生存期间,该随机码重复的可能性极小,如日期时间戳;“随机产生”是指在随机码产生前不可能预测码字的实际值。二、密钥管理加密私钥的长度是由厂商预先设定的,用户不能更改。为防止用户使用不允许的密钥长度,蓝牙基带处理器不接受高层软件提供的加密私钥。若想改变连接密钥,必须按基带规范的步骤进行,其具体步骤取决于连接密钥类型。密钥类型连接密钥是一个 128 比特的随机数,它由两个或多个成员共享,是成员间进行安全事务的基

3、础,它本身用于认证过程,同时也作为生成加密私钥的参数。连接密钥可以是半永久的或临时的。半永久连接密钥保存在非易失性存储器中,即使当前通话结束后也可使用,因此,它可作为数个并发连接的蓝牙设备间的认证码。临时连接密钥仅用于当前通话。在点对多点的通信中,当主设备发送广播信息时,将采用一个公共密钥临时替换各从设备当前的连接密钥。 为适应各种应用,定义如下密钥类型:组合密钥 KAB:设备密钥 KA;临时密钥 Kmaster;初始密钥 Kinit。此外,c 表示加密私钥。任何时候执行连接管理器(LM)命令进行加密时,加密私钥就会自动改变。对蓝牙设备而言,KAB 和A 在功能上没有区别,只是生成方法不同而已

4、。由设备自身生成,且保持不变;KAB 由设备和设备提供的信息共同生成,只要有两个设备产生一个新的连接,就会生成一个 KAB。究竟采用 KA 或 KAB,取决于具体应用。对于存储容量较小的蓝牙设备或者对于处于大用户群中的设备,适合采用,此时只需存储单个密钥。对于要求较高安全级别的应用,适宜采用 KAB,但要求设备拥有较大的存储空间。Kmaster 仅用于当前通话,它可以临时替换连接密钥。Kinit 在初始化期间用作连接密钥,以保证初始化参数的安全传送,它由一个随机数、PIN 码的低位及 BD_ADDR 生成。PIN 码可以是蓝牙设备提供的一个固定码,也可以由用户任意指定,但两个设备中的 PIN

5、码必须匹配。在两个设备中采用用户指定的 PIN 码比采用设备自身提供的 PIN 码更安全;即使采用固定的 PIN 码方式,也应该允许能够改变 PIN 码,以防止获得该 PIN 码的用户重新初始化设备。如果找不到可用的 PIN 码,则使用缺省值。短 PIN 码可以满足许多具体应用的安全性要求,但存在不确定的非安全因素;过长的PIN 码不利于交换,需要应用层软件的支持。因而,在实际应用中,常采用短的数据串作为 PIN 码,其长度一般不超过 16 字节。密钥生成及初始化蓝牙设备必须生成各种连接密钥,以便认证例程使用。连接密钥有保密性要求,因而不能象设备地址那样公开查询。进行认证和加密的两个设备在初始

6、化阶段单独地交换密钥,初始化过程包括以下 5 个部分:生成 kinit;认证;生成连接密钥;交换连接密钥;各自生成加密私钥。初始化后,设备间可继续通信,也可断开连接。若想对信息加密,则利用当前连接密钥生成的加密私钥,采用 E0 算法(此文中提到的 E0、21、22 和3 等算法,均作为名词使用,而不给出具体的公式)进行加密。在两个设备间建立新的连接时,则使用公共连接密钥代替 Kinit 进行认证。在进行一次新的加密时,将由特定的连接密钥生成一个新的加密私钥。如果没有连接密钥有效,将自动开始一个初始化过程。()初始密钥 Kinit 生成初始化期间使用的连接密钥称之为 Kinit,其长度为 128

7、 比特,由22 算法生成,算法的输入参数为申请连接的设备地址 BD_ADDR、PIN 码、PIN 码的长度及随机数 IN_RAND。Kinit 用于连接密钥生成期间的密钥交换和未登记连接密钥的两设备间的认证,它在连接密钥交换完成后废弃。Kinit 生成后,PIN 码将会随着申请设备的 BD_ADDR 而增长。算法要求 PIN 码的长度最大不超过 16字节,以便确保只有特定的设备才能连接上。非法用户需要试验大量的 PIN 码,而且每次都必须使用不同的 BD_ADDR,否则进行下一次实验需等待的时间间隔将按指数增长,这样可以减小入侵者对合法用户的威胁。 ()认证如果两个设备未曾联系过,它们将把 K

8、init 作为连接密钥。在每次认证期间,都会产生一个新的认证随机数 AU_RANDA。相互认证时,首先进行单向认证,再进行反方向认证。当认证成功时,就会计算出一个辅助参数认证加密偏移量 ACO。在相互认证时,一般保留第二次认证时计算出的 ACO,如果认证事件在两个设备中同时发生,则两个设备都将使用主设备产生的 ACO。()设备密钥 KA 的生成KA 在蓝牙设备首次工作时由21 算法生成并保存在非易失性存储器中,以后基本不变。初始化后,若 KA 发生了变化,则此前已初始化的设备保存的连接密钥将是错误的。初始化期间,应用程序一般选择存储能力较小的设备的 KA 作为连接密钥。()组合密钥 KAB 的

9、生成组合密钥在初始化期间由设备和分别产生的随机数合成。首先,设备、分别产生随机数LK_RANDA和 LK_RANDB;然后,设备、采用如下算法再分别生成随机数 LK_KA 和 LK_KB,即:LK_KA 21LK_RANDA ,BD_ADDRA , EQ21LK_KB 21LK_RANDA ,BD_ADDRB ; EQ22接着,设备、分别计算 CALK_RANDA 和 CBLK_RANDB (在初始化时,KKinit)并交换计算结果;之后,设备、分别计算 LK_KB(EQ22)和 LK_KA(EQ21);最后,设备、通过异或运算分别生成 128 比特的组合密钥 KAB 和 KBA,两者是相等的

10、。()加密私钥 Kc 的生成加密私钥 Kc 由当前的连接密钥、96 比特的加密偏移量(COF)、128 比特的随机数通过 E3 算法生成。其中:COFBD_ADDR 串联 BD_ADDR 链路密钥为 Kmaster 时 ACO 其它 (EQ23)每当激活加密进程时,设备都将采用 E3 算法自动改变加密私钥 Kc。()点对多点通信使用加密方式进行点对多点的通信时,主设备可以使用不同的加密私钥与每一个从设备进行通信。如果某个应用要求从设备接收广播信息,从设备却是单独收发信息的,将造成网络通信容量的减小。另外,蓝牙从设备不支持两个或多个密钥的实时交换,因而在蓝牙技术中,主设备通知各从设备采用一个公用

11、密钥 Kmaster 接收加密的广播信息。对于多数应用来说,此密钥只具有临时意义。主设备在确认所有从设备都能成功接收后,就发送一条指令,让各从设备用 Kmaster 替换它们当前的连接密钥。进行加密之前,主设备将产生并分发一个公共的随机数 EN_RAND 给所有从设备,从设备就使用 Kmaster 和 EN_RAND 产生新的加密私钥。当所有从设备都得到了必要的数据后,主设备将使用新的加密私钥在网络中进行通信联系。显然,拥有 Kmaster 的从设备不仅能获得发送给自己的信息,还能获取所有加密的广播信息。如有必要,主设备可令所有从设备同时恢复使用以前的连接密钥。()连接密钥的修改在某些情况下,

12、需要修改基于设备密钥的连接密钥。设备密钥在设备首次使用时创建,由于多个设备可能共享作为连接密钥的同一个设备密钥,因此,一旦创建几乎不再更改,否则将重新初始化所有试图连接的设备。在某些应用中这样做是必要的,如拒绝以前访问过的设备接入。 如果密钥的更改涉及到组合密钥,只需将当前的组合密钥作为连接密钥。这一更改密钥的过程可以在认证和加密开始后的任何时侯进行,其实组合密钥可以在每次连接建立时更改,这还有利于提高系统的安全性。()Kmaster 的生成创建 Kmaster 时,需要如下步骤.。1)主设备采用 E22 算法,将 128 比特的随机数 RAND1、RAND2 作为输入参数,生成新的连接密钥K

13、master E22(RAND1,RAND2,16)2)主设备将另一个随机数 RAND 发送给从设备,用当前连接密钥和 RAND 作为 E22 算法的输入参数,然后主、从设备都计算出一个 128 比特掩码 OVLE22(,RAND,16)3)主设备将掩码与当前连接密钥进行异或运算,并将运算结果OVL 钥 Kmaster 发送给从设备,从设备重新计算 KmasterOVL 4)为确保交换成功,主、从设备将使用新的连接密钥进行认证,所有接收新的连接密钥的从设备都将重复此认证过程,由于在主设备恢复以前的连接密钥时还需要当前的计算密文密钥,因此从相关身分认证过程得到的 ACO 值不能替代当前 ACO5

14、)各从设备重新计算新的加密私钥 KcE3(KmasterEN_RAND ,COF)三、加密采用加密方式可以保护用户信息,但接入码和报头不加密。在蓝牙技术中,用序列加密算法 E0 加密用户信息。序列加密算法 E0 由三部分组成,即载荷密钥生成、密钥比特流生成、加解密运算。载荷密钥发生器按一定顺序组合输入比特流,并将它们移入密钥比特流发生器的线性反馈移位寄存器(LFSR);密钥比特流发生器是序列加密体系的核心部分,它采用 Massey 和 Rueppel 提出的组合序列密码发生器,该方法已通过全面论证,其性能优异。尽管组合序列密码发生器在抗相干攻击方面存在缺陷,但采用频繁同步的方法可瓦解相干攻击。

15、加密私钥长度协商每一个蓝牙设备都有参数 Lmax,它定义了设备所允许的最大密钥长度,Lmax字节;参数Lmin 则定义了某个特定应用中可接受的最小密钥长度。在产生加密私钥前,所有相关设备必须协商密钥的实际长度,其协商过程如下:1)主设备发送一个建议值 Lmsug 给从设备,初始时,建议值设为 Lmmax ,如果 LsminLmsug且从设备支持建议长度,则从设备确认该长度并将它作为连接中密钥长度。2)若两个条件都不满足,则从设备发送一个新的建议值 Lssug Lmsug 给主设备,主设备进行相同的测试。3重复上述过程,直到主、从设备达成协议或一方放弃时结束。若协商失败,就不能进行连接加密。由应

16、用程序本身决定是否接受建议值,就不一定能建立起安全连接,但这是十分必要的防范措施,它可以防止非法设备使用短密钥入侵。加密方式如果从设备拥有半永久连接密钥,即组合密钥或设备密钥,则它只能在指定的时隙收发加密信息。如果从设备接收到了 Kmaster 主密钥,将有三种可能的加密组合方式。主设备通过发送一条 LM 命令可以让从设备恢复以前的连接密钥,不管从设备处于何种状态,它们都将返回到未加密方式。加密过程序列加密算法的加密过程就是将数据流与密钥比特流进行异或运算。对每一分组的有效载荷的加密是单独进行的,它发生在 CRC 校验之后,FEC 编码之前。加密算法 E0 的输入参数为主设备地址、时钟 CLK261 和 Kc。时钟 CLK261 按时隙递增,在任两次发送中,CLK26

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 经济/贸易/财会 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号