网站大量收购独家精品文档,联系QQ:2885784924

关于蓝牙及安全机制.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于蓝牙及安全机制

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

您可能关注的文档

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档