欢迎来到天天文库
浏览记录
ID:25679853
大小:59.68 KB
页数:6页
时间:2018-11-22
《关于蓝牙及安全机制》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、关于蓝牙的安全机制 蓝牙技术提供短距离的对等通信,它在应用层和链路层上都采取了保密措施以保证通信的安全性,所有蓝牙设备都采用相同的认证和加密方式。在链路层,使用4个参数来加强通信的安全性,即蓝牙设备地址BD_ADDR、认证私钥、加密私钥和随机码RAND。 蓝牙设备地址是一个48位的IEEE地址,它唯一地识别蓝牙设备,对所有蓝牙设备都是公开的;认证私钥在设备初始化期间生成,其长度为128比特;加密私钥通常在认证期间由认证私钥生成,其长度根据算法要求选择8~128比特之间的数(8的整数倍),对于目前的绝大多数应用,采用64比特的加密私钥就可保证其安全性;随机码由蓝牙设备的
2、伪随机过程产生,其长度为128比特。 一、随机码生成 每个蓝牙设备都有一个伪随机码发生器,它产生的随机数可作为认证私钥和加密私钥。在蓝牙技术中,仅要求随机码是不重复的和随机产生的。“不重复”是指在认证私钥生存期间,该随机码重复的可能性极小,如日期/时间戳;“随机产生”是指在随机码产生前不可能预测码字的实际值。 二、密钥管理 加密私钥的长度是由厂商预先设定的,用户不能更改。为防止用户使用不允许的密钥长度,蓝牙基带处理器不接受高层软件提供的加密私钥。 若想改变连接密钥,必须按基带规范的步骤进行,其具体步骤取决于连接密钥类型。 1.密钥类型 连接密钥
3、是一个128比特的随机数,它由两个或多个成员共享,是成员间进行安全事务的基础,它本身用于认证过程,同时也作为生成加密私钥的参数。 连接密钥可以是半永久的或临时的。半永久连接密钥保存在非易失性存储器中,即使当前通话结束后也可使用,因此,它可作为数个并发连接的蓝牙设备间的认证码。临时连接密钥仅用于当前通话。在点对多点的通信中,当主设备发送广播信息时,将采用一个公共密钥临时替换各从设备当前的连接密钥。 为适应各种应用,定义如下密钥类型: 组合密钥KAB:设备密钥KA;临时密钥Kmaster;初始密钥Kinit。 此外,Kc表示加密私钥。任何时候执行连接管理器(LM)
4、命令进行加密时,加密私钥就会自动改变。 对蓝牙设备而言,KAB和KA在功能上没有区别,只是生成方法不同而已。KA由设备自身生成,且保持不变;KAB由设备A和设备B提供的信息共同生成,只要有两个设备产生一个新的连接,就会生成一个KAB。 究竟采用KA或KAB,取决于具体应用。对于存储容量较小的蓝牙设备或者对于处于大用户群中的设备,适合采用KA,此时只需存储单个密钥。对于要求较高安全级别的应用,适宜采用KAB,但要求设备拥有较大的存储空间。 Kmaster仅用于当前通话,它可以临时替换连接密钥。 Kinit在初始化期间用作连接密钥,以保证初始化参数的安全传送,它由
5、一个随机数、PIN码的低8位及BD_ADDR生成。 PIN码可以是蓝牙设备提供的一个固定码,也可以由用户任意指定,但两个设备中的PIN码必须匹配。在两个设备中采用用户指定的PIN码比采用设备自身提供的PIN码更安全;即使采用固定的PIN码方式,也应该允许能够改变PIN码,以防止获得该PIN码的用户重新初始化设备。如果找不到可用的PIN码,则使用缺省值0。短PIN码可以满足许多具体应用的安全性要求,但存在不确定的非安全因素;过长的PIN码不利于交换,需要应用层软件的支持。因而,在实际应用中,常采用短的数据串作为PIN码,其长度一般不超过16字节。2.密钥生成及初始化 蓝
6、牙设备必须生成各种连接密钥,以便认证例程使用。连接密钥有保密性要求,因而不能象设备地址那样公开查询。进行认证和加密的两个设备在初始化阶段单独地交换密钥,初始化过程包括以下5个部分:生成kinit;认证;生成连接密钥;交换连接密钥;各自生成加密私钥。 初始化后,设备间可继续通信,也可断开连接。若想对信息加密,则利用当前连接密钥生成的加密私钥,采用E0算法(此文中提到的E0、E21、E22和E3等算法,均作为名词使用,而不给出具体的公式)进行加密。在两个设备间建立新的连接时,则使用公共连接密钥代替Kinit进行认证。在进行一次新的加密时,将由特定的连接密钥生成一个新的加密私钥
7、。如果没有连接密钥有效,LM将自动开始一个初始化过程。 (1)初始密钥Kinit生成 初始化期间使用的连接密钥称之为Kinit,其长度为128比特,由E22算法生成,算法的输入参数为申请连接的设备地址BD_ADDR、PIN码、PIN码的长度及随机数IN_RAND。Kinit用于连接密钥生成期间的密钥交换和未登记连接密钥的两设备间的认证,它在连接密钥交换完成后废弃。 Kinit生成后,PIN码将会随着申请设备的BD_ADDR而增长。算法要求PIN码的长度最大不超过16字节,以便确保只有特定的设
此文档下载收益归作者所有