
蓝牙的信息安全机制分析论文 .doc
10页蓝牙的信息安全机制分析论文蓝牙的信息安全机制分析论文 1 蓝牙的安全机制蓝牙采取的安全机制适用于对等通信情况,即双方以相同方式实现认证与加密规程链路层使用 4 个实体提供安全性:一个公开的蓝牙设备地址,长度为 48bit;认证密钥,长度为 128bit;加密密钥,长度为 8~128bit;随机数,长度为 128bit以下重点讨论蓝牙安全机制的组成及相关算法1.1 随机数发生器随机数发生器在蓝牙标准中有重要应用,例如在生成认证密钥和加密密钥中以及查询-应答方案中等产生随机数的理想方法是使用具有随机物理特性的真实随机数·发生器,例如某些电子器件的热噪声等,但是在实际应用中通常利用基于软件实现的伪随机数发生器蓝牙系统对于随机数的要求是“随机生成”和“非重复性” “随机生成”是指不可能以明显大于零的概率(对于长度为 L 位的蓝牙加密密钥,概率大于 1/2L)估计出随机数值目前在众多类型的伪随机数发生器中,线性同余发生器(LinearCongruentialGenerator)被最广泛地研究与使用其表达式为:Xn+1=αXn+c(modm)n≥0式中 α 和 c 为常量,m 为模数,均为正整数αXn+c对 m 作模运算后得到 Xn+1。
开始时以某种方式给出一个种子数 X0;然后使用前一个随机整数 Xn 生成下一个随机整数 Xn+1,由此产生整数随机数列{Xn}1.2 密钥管理蓝牙单元密钥长度不能由单元制造者预置,不能由用户设置蓝牙基带标准规定不接收由高层软件给出的加密密钥以防止使用者完全控制密钥长度1.2.1 密钥类型链路密钥是一个 128 位随机数,为通信双方或多方共享的临时性或半永久性密钥半永久性链路密钥可以用于共享链路单元之间的几个相继认证过程中临时密钥的典型应用是:在点对多点通信情况下,同一信息需要安全地发往多个接收端,这时采用主单元密钥取代当前链路密钥蓝牙标准定义了四种链路密钥:①联合密钥 KAB;②单元密钥 KA;③临时密钥 Kmoster;④初始化密钥 Kinit此外还定义了加密密钥 Kc,由当前链路密钥生成对蓝牙单元来说,单元密钥 KA 在单元 A 中生成,依赖于该单元,很少改变联合密钥 KAB由单元 A、B 方共同生成临时密钥 Kmoster 仅在当前会话中使用,也称主单元密钥初始化密钥 Kinit 是蓝牙初始化过程中使用的链路密钥该密钥由一个随机数、一个通常为十进制的 PIN 码以及发起单元的蓝牙设备地址 BD_ADDR 生成。
PIN 码可由用户选择也可以是随蓝牙一起提供的固定数目前大多数应用中 PIN码为 4 位的 10 进制数,无法提供较高的安全性蓝牙基带标准要求 PIN 码长度为 1~16 位,因此建议尽量使用较长的 PIN 码以增强安全性1.2.2 密钥生成与初始化每一对要实现认证与加密的蓝牙单元都要执行初始化过程,其过程由以下几部分组成:(1)生成初始化密钥 Kinit:为初始化过程中临时使用的链路密钥该密钥由 E22 算法及相关参数生成,其生成原理图见图 1E22 输出的 128 位初始化密钥 Kinit 用于链路密钥的交换分配过程如果申请者与证实者没有交换过链路密钥,则 Kinit 用于认证过程,否则不再使用该过程必须保证能够抵御一定的攻击,例如攻击者使用大量的假蓝牙地址 BD_ADDR 来测试大量 PIN 等,如果设备地址固定则每次测试 PIN 码等待间隔应按指数增加2)认证:如果两个单元没有发生过通信联系,则使用初始化密钥作为链路密钥每次执行认证规程,均发布新随机参数 AU_RANDA在相互认证中,首先在一个方向执行认证规程,成功后再反向执行认证认证成功将得到一个辅助参数 ACO,即认证加密偏移量。
它将用于生成加密密钥3)生成单元密钥:单元密钥在蓝牙单元首次运行时生成,根据 E21 算法生成并几乎不改变初始化时,通信双方通常选用一个内存容量较少的单元中的密钥作为链路密钥图 3(4)生成联合密钥:联合密钥是分别在 A 单元与 B 单元中生成的两个数字的组合生成过程是:每个单元生成随机数 LK_RANDA 与 Lk_RANDB,采用 E21 算法与各自的随机数、蓝牙地址分别生成另一个随机数 LK_KA 与LK_KB,并通过其他操作后两个单元得出联合密钥然后开始互相认证过程以确认交互过程成功联合密钥交换分配成功后将放弃使用原链路密钥5)生成加密密钥:加密密钥 Kc 根据 E3 算法,由当前链路密钥、96bit“加密偏移数”COF 和一个 128bit 随机数导出6)点对多点配置情况:实际上,主单元通知几个从单元使用一个公共链路密钥广播加密消息,在多数应用中这个公共链路密钥是临时密钥,记为 KmosterKmoster 被从单元接收后便可用它替代原链路密钥 Kmoster 的产生过程为:首先由 2 个 128bit 的随机数 RAND1 与 RAND2 生成新链路密钥 Kmoster:Kmoster=E22(RAND1,RAND2,16)。
然后将第 3 个随机数 RANO 发往从单元,主、从单元根据E22、当前链路密钥及 RAND 计算出 128bit 扰乱码overlay,主单元将 overlay 与新链路密钥按位“异或”结果发送给从单元,再计算出 Kmoster在后面的认证过程中计算出一个新 ACO 值1.3 加密规程对有效载荷加密通过流密码算法实现,流密码与有效载荷同步,加密原理图如图 2 所示流密码系统由三部分组成:执行初始化、生成密钥流比特、执行加密或解密有效载荷密钥生成器将输入比特流以恰当顺序进行组合并移人密钥流生成器使用的 4 个线性反馈移位寄存器 LFSR第二部分是主要部分,密钥流比特根据 Massey 与 Rueppel提出的方法生成,该方法经过一定的分析与研究,证明具有较高的加密性能,但此法可能受到相关攻击,其改进方法在本文后面详细描述1.3.1 商定加密密钥长度与加密模式实现基带标准的蓝牙设备需要定义最大允许密钥字节长度 Lmax,1≤Lmax≤16在生成加密密钥前,有关单元必须商定密钥实际长度主单元将建议值 L(M)sug 发送给从单元如果 L(S)min≤L(M)min 并且从单元支持建议值,从单元对此给予确认,L(M)min 成为本链路加密密钥长度值。
如果不满足上述条件,从单元将向主单元发送新的建议值 L(S)min〈L(M)sug,主单元对此建议评估重复此规程直至达成协议或一方放弃商谈1.加密算法加密规程使用流密码加密加密系统使用线性反馈移位寄存器(LFSRs),寄存器系统输出由具有 16 状态的有限状态机进行组合,状态机输出或是密钥流序列,或是初始化阶段的随机初始值加密算法需要提供加密密钥、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)上两个不同的线性双射。
密钥流生成器工作前需要为 4 个 LFSR(总共 128bit)装载初始值并且确定 C0 与 C-14bit 值,这些 132bit 初始值使用密钥流生成器由规定的输入量导出,输入量分别为密钥 Kc、48bit 蓝牙地址和 26bit 主单元时钟 CLK26-1加密算法初始化过程:(1)由 128bit 加密密钥 Kc 生成有效加密密钥,记为 K'c,令 L(1≤L≤16)为用 8bit 组数目表示的有效密钥长度,则 K'c(x)=g2(L)(x)(Kc(x)modg1(L)(x))2)将K'c、蓝牙地址、时钟以及 6bit 常数 111001 移入 LFSR加密算法初始化完成后,从加法组合器输出密钥流用于加密/解密1.3.2 认证蓝牙技术认证实体使用所谓查验-应答方案通过“两步”协议,申请者是否知道秘密密钥使用对称密钥进行证实这意味着,一个正确的申请者/证实者对,在查验-应答方案中将共享相同密钥 Kc,证实者对于申请者是否能够认证算法 K1 认证随机数 AU_RANDA,并返回认证结果SERS,进行查验其认证及加密密钥生成函数可以参考相关资料,此处略2 蓝牙安全机制的方案改进现有蓝牙安全机制主要存在两个主要问题。
一个是单元密钥的使用问题:在鉴权和加密过程中,由于单元密钥没有改变,第三方利用此密钥来窃取信息128 位密钥长度的 E0 序列加密在某些情况下可通过不是很复杂的方法破解另一个是蓝牙单元提供的个人识别码(PIN 码)的不安全问题:由于大多数应用中 PIN 码是由 4 位十进制数组成,所以采用穷举法很容易攻击成功克服这些安全性问题的解决方法除了增加 PIN 码长度外,关键是要采取更为强健的加密算法,如用数字加密标准 DES 代替序列加密算法DES 是一种块加密方法,加密过程是针对一个个数据块进行的在 DES 算法中,原始信息被分为 64 位的固定长度数据块,然后利用 56 位的加密密钥通过置换和组合方法生成 64 位的加密信息与蓝牙序列的加密算法不同,数学上可以证明块加密算法是完全安全的DES 块密码是高度随机和非线性的,其产生的密文和明文与密钥的每一位都相关DES 的可用加密密钥数量非常庞大,应用于每一位明文信息的密钥都是从这个庞大数量的密钥中随机产生的DES 算法已经被广泛采用并认为非常可靠采用 DES 加密算法的蓝牙技术可以将蓝牙应用到安全性较高的应用中去,例如电子金融交易、ATM等。
2.1DES 算法1977 年美国国家标准局公布了联邦数据加密标准DES由于 DES 算法保密性强,迄今尚无切实可行的破译方法,所以 DES 得到了广泛地应用DES 是一种分组密码体制,它将明文按 64 位一组分成若干组,密钥长为 56 位其基本思想是采用变换的组合与迭代,将明文中的各组变为密文组在 DES 系统中,乘积变换是加密过程的核心,连续进行 16 次操作,每次更新一组密钥移位变换 B 是移位变换 A 的逆变换图 4 为 DES 体制加密流程,图的右侧表示DES 系统的密钥生成过程初始密钥是一串 64bit 的随机序列经过反复移位变换,产生 16 组子密钥(K1~K16),每组子密钥用于一次乘积变换所谓初始重排(IP)就是打乱输入分组内比特原有排列次序,重新排列,排列方式是固定的DES 的一次乘积变换运算步骤为:(1)把 64bit 输入码分成左右两组,每组 32 位比特,分别用 Li-1 和 Ri-1 代表其中 i 代表第 i 次乘积变换,i=1~162)把该次乘积变换输入分组的右组 32 位比特变为输出分组的左组 32 位比特,即 Li=Ri-13)输入分组右组 32 位比特经过扩展操作变为48 位比特码组。
4)扩展变换输出的 48 位比特与子密钥 Ki的 48 位比特按模 2 相加,输出的 48 位比特分为 8 组,每组 6 位5)把每组 6 位比特进行密表(S-盒)替代,产生 4 位比特输入的 6 位比特的第 1、6 两位决定密表内所要选择的行数,其余 4 位决定密表内的列数6)把 8 组密表输出合并为 32 位比特,然后与本次乘积变换输入左组 Ci-1 按位模 2 相加,即可得到第 i 次乘积变换的右 32 位输出 Ri2.2DES 算法的特点DES 算法具有以下特点:(1)DES 的保密性仅仅取决于对密钥的保密。












