




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 蓝牙的信息安全机制及密钥算法改进 杨 帆 钱志鸿 时间:2007年12月13日 字 体: 大 中 小 关键词: 1 蓝牙的安全机制11 随机数发生器·发生器,例如某些电子器件的热噪声等,但是在实际应用中通常利用
2、基于软件实现的伪随机数发生器。蓝牙系统对于随机数的要求是“随机生成”和“非重复性”。“随机生成”是指不可能以明显大于零的概率(对于长度为L位的蓝牙加密密钥,概率大于12L)估计出随机数值。 目前在众多类型的伪随机数发生器中,线性同余发生器(Linear Congruential Generator)被最广泛地研究与使用。其表达式为: Xn+1=Xn+c(modm) n0。 式中和c为常量,m为模数,均为正整数。Xn+c对m作模运算后得到Xn+1。开始时以某种方式给出一个种子数X0;然后使用前一个随机整数Xn生成下一个随机整数Xn+1,由此产生整数随机数列Xn。 12 密钥管理 蓝牙单元密钥长度
3、不能由单元制造者预置,不能由用户设置。蓝牙基带标准规定不接收由高层软件给出的加密密钥以防止使用者完全控制密钥长度。 121 密钥类型 链路密钥是一个128位随机数,为通信双方或多方共享的临时性或半永久性密钥。半永久性链路密钥可以用于共享链路单元之间的几个相继认证过程中。临时密钥的典型应用是:在点对多点通信情况下,同一信息需要安全地发往多个接收端,这时采用主单元密钥取代当前链路密钥。蓝牙标准定义了四种链路密钥:联合密钥KAB;单元密钥KA;临时密钥Kmoster;初始化密钥Kinit。此外还定义了加密密钥Kc,由当前链路密钥生成。对蓝牙单元来说,单元密钥KA在单元A中生成,依赖于该单元,很少改变
4、。联合密钥KAB。由单元A、B方共同生成。临时密钥Kmoster仅在当前会话中使用,也称主单元密钥。初始化密钥Kinit是蓝牙初始化过程中使用的链路密钥。该密钥由一个随机数、一个通常为十进制的PIN码以及发起单元的蓝牙设备地址BD_ADDR生成。PIN码可由用户选择也可以是随蓝牙一起提供的固定数。目前大多数应用中PIN码为4位的10进制数,无法提供较高的安全性。蓝牙基带标准要求PIN码长度为116位,因此建议尽量使用较长的PIN码以增强安全性。 122 密钥生成与初始化 每一对要实现认证与加密的蓝牙单元都要执行初始化过程,其过程由以下几部分组成: (1)生成初始化密钥Kinit:为初始化过程中
5、临时使用的链路密钥。该密钥由E22算法及相关参数生成,其生成原理图见图1。E22输出的128位初始化密钥Kinit用于链路密钥的交换分配过程。如果申请者与证实者没有交换过链路密钥,则Kinit用于认证过程,否则不再使用。该过程必须保证能够抵御一定的攻击,例如攻击者使用大量的假蓝牙地址BD_ADDR来测试大量PIN等,如果设备地址固定则每次测试PIN码等待间隔应按指数增加。 (2)认证:如果两个单元没有发生过通信联系,则使用初始化密钥作为链路密钥。每次执行认证规程,均发布新随机参数AU_RANDA。在相互认证中,首先在一个方向执行认证规程,成功后再反向执行认证。认证成功将得到一个辅助参数ACO,
6、即认证加密偏移量。它将用于生成加密密钥。 (3)生成单元密钥:单元密钥在蓝牙单元首次运行时生成,根据E21算法生成并几乎不改变。初始化时,通信双方通常选用一个内存容量较少的单元中的密钥作为链路密钥。 (4)生成联合密钥:联合密钥是分别在A单元与B单元中生成的两个数字的组合。生成过程是:每个单元生成随机数LK_RANDA与Lk_RANDB,采用E21算法与各自的随机数、蓝牙地址分别生成另一个随机数LK_KA与LK_KB,并通过其他操作后两个单元得出联合密钥。然后开始互相认证过程以确认交互过程成功。联合密钥交换分配成功后将放弃使用原链路密钥。 (5)生成加密密钥:加密密钥Kc根据E3算法,由当前链
7、路密钥、96bit“加密偏移数”COF和一个128bit随机数导出。 (6)点对多点配置情况:实际上,主单元通知几个从单元使用一个公共链路密钥广播加密消息,在多数应用中这个公共链路密钥是临时密钥,记为Kmoster。Kmoster被从单元接收后便可用它替代原链路密钥Kmoster的产生过程为:首先由2个128bit的随机数RAND1与RAND2生成新链路密钥Kmoster:Kmoster=E22(RAND1,RAND2,16)。然后将第3个随机数RANO发往从单元,主、从单元根据E22、当前链路密钥及RAND计算出128bit扰乱码overlay,主单元将overlay与新链路密钥按位“异或”
8、结果发送给从单元,再计算出Kmoster。在后面的认证过程中计算出一个新ACO值。 13 加密规程 对有效载荷加密通过流密码算法实现,流密码与有效载荷同步,加密原理图如图2所示。流密码系统由三部分组成:执行初始化、生成密钥流比特、执行加密或解密。有效载荷密钥生成器将输入比特流以恰当顺序进行组合并移人密钥流生成器使用的4个线性反馈移位寄存器LFSR。第二部分是主要部分,密钥流比特根据Massey与Rueppel提出的方法生成,该方法经过一定的分析与研究,证明具有较高的加密性能,但此法可能受到相关攻击,其改进方法在本文后面详细描述。 131 商定加密密钥长度与加密模式 实现基带标准的蓝牙设备需要定
9、义最大允许密钥字节长度Lmax,1Lmax16。在生成加密密钥前,有关单元必须商定密钥实际长度。主单元将建议值L(M)sug发送给从单元。如果L(S)minL(M)min并且从单元支持建议值,从单元对此给予确认,L(M)min成为本链路加密密钥长度值。如果不满足上述条件,从单元将向主单元发送新的建议值L(S)minL(M)sug,主单元对此建议评估。重复此规程直至达成协议或一方放弃商谈。 13.2 加密算法 加密规程使用流密码加密。加密系统使用线性反馈移位寄存器(LFSRs),寄存器系统输出由具有16状态的有限状态机进行组合,状态机输出或是密钥流序列,或是初始化阶段的随机初始值。加密算法需要提
10、供加密密钥、48bit蓝牙地址、主单元时钟比特与128bit随机数RAND,加密算法原理如图3所示。 其中,有4个LFSR(LFSR1,LFSR4),比特长度分别为L1=25,L2=31,L3=33,L4=39,反馈多项式(抽头多项式,特征多项式)。4个寄存器长度之和是128bit。 这些多项式都是本原多项式,汉明重量都为5,可以兼顾生成序列具有良好的统计特性与减少硬件实现所需要的异或门数两方面的要求。 令xit表示LFSRit时刻输出状态比特,由四元组(x1t,x4t)得Yt为: ,式中Yt为整数,取值为0,1,2,3或4。加法生成器输出由下述方程给出: 式中,T1.与T2.是GF(4)上两
11、个不同的线性双射。 密钥流生成器工作前需要为4个LFSR(总共128bit)装载初始值并且确定C0与C-14bit值,这些132bit初始值使用密钥流生成器由规定的输入量导出,输入量分别为密钥Kc、48bit蓝牙地址和26bit主单元时钟CLK26-1。加密算法初始化过程:(1)由128bit加密密钥Kc生成有效加密密钥,记为Kc,令L(1L16)为用8bit组数目表示的有效密钥长度,则Kc(x)=g2(L)(x)(Kc(x)modg1(L)(x)。(2)将Kc、蓝牙地址、时钟以及6bit常数111001移入LFSR。加密算法初始化完成后,从加法组合器输出密钥流用于加密解密。 132 认证 蓝
12、牙技术认证实体使用所谓查验-应答方案。通过“两步”协议,申请者是否知道秘密密钥使用对称密钥进行证实。这意味着,一个正确的申请者证实者对,在查验-应答方案中将共享相同密钥Kc,证实者对于申请者是否能够认证算法K1认证随机数AU_RANDA,并返回认证结果SERS,进行查验。其认证及加密密钥生成函数可以参考相关资料,此处略。 2 蓝牙安全机制的方案改进 现有蓝牙安全机制主要存在两个主要问题。一个是单元密钥的使用问题:在鉴权和加密过程中,由于单元密钥没有改变,第三方利用此密钥来窃取信息。128位密钥长度的E0序列加密在某些情况下可通过不是很复杂的方法破解。另一个是蓝牙单元提供的个人识别码(PIN码)
13、的不安全问题:由于大多数应用中PIN码是由4位十进制数组成,所以采用穷举法很容易攻击成功。 克服这些安全性问题的解决方法除了增加PIN码长度外,关键是要采取更为强健的加密算法,如用数字加密标准DES代替序列加密算法。DES是一种块加密方法,加密过程是针对一个个数据块进行的。在DES算法中,原始信息被分为64位的固定长度数据块,然后利用56位的加密密钥通过置换和组合方法生成64位的加密信息。与蓝牙序列的加密算法不同,数学上可以证明块加密算法是完全安全的。DES块密码是高度随机和非线性的,其产生的密文和明文与密钥的每一位都相关。DES的可用加密密钥数量非常庞大,应用于每一位明文信息的密钥都是从这个
14、庞大数量的密钥中随机产生的。DES算法已经被广泛采用并认为非常可靠。采用DES加密算法的蓝牙技术可以将蓝牙应用到安全性较高的应用中去,例如电子金融交易、ATM等。 21 DES算法 1977年美国国家标准局公布了联邦数据加密标准DES。由于DES算法保密性强,迄今尚无切实可行的破译方法,所以DES得到了广泛地应用。DES是一种分组密码体制,它将明文按64位一组分成若干组,密钥长为56位。其基本思想是采用变换的组合与迭代,将明文中的各组变为密文组。 在DES系统中,乘积变换是加密过程的核心,连续进行16次操作,每次更新一组密钥。移位变换B是移位变换A的逆变换。图4为DES体制加密流程,图的右侧表
15、示DES系统的密钥生成过程。初始密钥是一串64bit的随机序列。经过反复移位变换,产生16组子密钥(K1K16),每组子密钥用于一次乘积变换。所谓初始重排(IP)就是打乱输入分组内比特原有排列次序,重新排列,排列方式是固定的。 DES的一次乘积变换运算步骤为:(1)把64bit输入码分成左右两组,每组32位比特,分别用Li-1和Ri-1代表。其中i代表第i次乘积变换,i=116。(2)把该次乘积变换输入分组的右组32位比特变为输出分组的左组32位比特,即Li=Ri-1。(3)输入分组右组32位比特经过扩展操作变为48位比特码组。(4)扩展变换输出的48位比特与子密钥Ki的48位比特按模2相加,
16、输出的48位比特分为8组,每组6位。(5)把每组6位比特进行密表(S-盒)替代,产生4位比特。输入的6位比特的第1、6两位决定密表内所要选择的行数,其余4位决定密表内的列数。(6)把8组密表输出合并为32位比特,然后与本次乘积变换输入左组Ci-1按位模2相加,即可得到第i次乘积变换的右32位输出Ri。 22 DES算法的特点 DES算法具有以下特点: (1)DES的保密性仅仅取决于对密钥的保密,算法公开。 (2)在目前水平下,不知道密钥而在一定的时间内要破译(即解析出密钥K或明文)是不可能的,至少要建立2 56或2 64个项的表,这是现有资源无法实现的。 (3)由于“雪崩效应”,无法分而破之,一位的变化将引起若干位同时变化。 综上所述,由DES算法构建的蓝牙安全机制是可靠的,采用穷举方式攻击
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗大数据与公共卫生管理
- 2025年资产评估师职业资格考试真题卷:资产评估师职业资格考试历年真题汇编与解析
- 高级审计师面试技术试题及答案
- 2025年初中地理信息技术应用学业水平考试模拟试题及答案集
- 寒暑假实习总结与反思试题及答案
- 理论实践一级建造师考试试题及答案
- 医疗领域精准营养学的创新突破
- 医院管理与医疗人才保留策略研究
- 2025年建造师热点知识点试题及答案
- 中级审计师考试有效试题与答案
- 人工劳务合同协议书
- 向人民检察院的控告书范文
- SL+223-2008水利水电建设工程验收规程
- 系统集成方案
- 比亚迪催账制度
- 导航栏式毕业开题答辩有内容模板
- 初中生涯规划班会课教案
- 2024年湖南省高中英语学业水平考试合格考模拟试卷(答案详解)
- 常用元器件识别与测量课件
- 乡村振兴视域下的乡村生态振兴路径及对策研究
- 人教版(2019)选择性必修第三册Unit 4 Adversity and Courage 单词讲解课件
评论
0/150
提交评论