蓝牙技术是一项将会改变我们通信方式的令人激动的新技术,作为以无线信道为传输媒体的通信网络,蓝牙网络相对于固定网络更容易受到攻击,对于数据安全性处于首要地位的应用来说,实现高水平的数据安全性是必须的,目前蓝牙标准所采用的EO流加密算法存在着很多弊端,为了使蓝牙技术应用得更加广泛,我们可通过增大线性反馈移位寄存器LFSR的周期,改进流密码的算法或采用分组密码等其它较适合的算法来提高蓝牙系统的通信安全性,使之满足蓝牙技术使用要求。
一、蓝牙技术标准中采用的EO流加密算法
在蓝牙技术中,用户信息可采用分组有效载荷的加密进行保护,但识别码和分组头不加密,有效载荷的加密采用EO流密码来实现。EO将对每一有效载荷重新同步,流密码系统EO由三部分组成,第一部分执行初始化(生成有效载荷字),第二部分生成密钥流,第三部分完成加密和解密。
有效载荷字发生器非常简单,它仅仅以适当序列对输入的位进行组合,然后将它们转移到用于字流发生器的四位LFSR中,第二部分是该密码系统的主要部分,并也将用于初始化过程中,字流位取自于M as sey和Rueppel流密码发生器的方法来生成,该方法已通过全面论证,其性能优异,尽管组合流密码发生器在抗相干攻击方面存在缺陷,但采用频繁同步的方法可瓦解相干攻击,最后就是流加密算法的加密过程。将数据流与密码算法生成二进制流比特Kcipher进行异或运算,对于加密规则,流密码算法用于将加密位按位模2加到数据流上,然后通过无线接口进行传输,对每一分组的有效载荷的加密是单独进行的,加密发生在CRC校验之后,FEC编码之前,由于加密是对称的,解密使用完全和加密相同的密钥和相同的方法实现。
二、蓝牙标准中采用的加密算法存在的问题
1、EO流密码算法的固有局限性
流密码算法主要的缺点在于若一个伪随机序列发生错误便会使整个密文发生错误,致使在解密过程中无法还原回明文,流加密算法系统的安全完全依靠密钥流发生器的内部机制,如果它的输出是无穷无尽的O序列,那么密文就是明文,这样整个系统就一文不值;如果它的输出是一个周期性的16位模式,那么该算法仅是一个可忽略安全性的异或运算;如果输出的是一系列无尽的随机序列(是真正的随机,非伪随机),那么就有一次一密的乱码本和非常完美的安全,实际的流密码算法的安全性依赖于简单的异或运算和一次一密的乱码本,密钥流发生器产生的看似随机的密钥流实际上是确定的,在解密的时候能很好的将其再现,密钥流发生器输出的密钥越接近于随机,对密码分析者来说就越困难,然而,这种随机的密钥流却不容易得到。
2、线性反馈寄存器LFSR的资源能力有限
蓝牙技术标准中采用的加密算法也有些脆弱,它的EO流加密器虽然采用了128比特的密钥,在某些情况其破译复杂度仅为O。EO流加密的密钥流生成器有4个LFSR组成,如果密钥流产生器中某个LFSR(共有4个LFSR)产生的序列周期比密钥短,则存在分别征服破译攻击(Divid and onquer)的威胁,而且LFSR的软件实现效率非常低,在实现过程中要避免稀疏的反馈多项式,因为它们易遭到相关攻击,但稠密的反馈多项式效率也很低,事实上LFSR算法用软件实现并不比DES快。
3、PIN的低可信度
蓝牙技术中使用不规范的4位数字PIN码来和另外的一个变量来产生链路密钥和加密密钥,实际上4位数字PIN码是唯一的真实密钥产生变量,产生唯一的一个密钥(一个随机的数字)在空中传输.创建链路密钥的过程中,入侵者截取第一次通信过程中的通信数据分组,为了推导出各种相关参数包括链路密钥,对PIN尝试强力攻击(Brut e-force Attack)。这里的强力攻击就是穷举密钥搜索攻击,如果PIN是k位,那么在唯密文攻击下,攻击者搜索2k次就可以搜索到PIN的值了。所以PIN码的可信度较低,4位的PIN码仅有10000种可能性,一个解决的方法是选择使用16字节的PIN码,或者使用公开密钥系统,若采用较长的PIN码可增加攻击者获取加密密钥的难度,但这实在让人觉得非常不方便,因为每次建立安全连接都需要输入PIN码。
4、非链路密钥欺骗的高可能性
伴随着链路密钥的使用产生了新的问题.认证和加密是建立在链路密钥的基础上的,所有其它在这个连接中使用的信息通常情况下是公开的,然而,这会导致以下几个问题:
(1)设设备A和B使用了设备A的密钥作为链路密钥。
(2)稍后或者与之同时,设备C可能与设备A通信并使用了A的密钥作为他们的链路密钥。
(3)设备B可以使用设备A的链路密钥来解密设备A和设备C之间的通信信息。
正如以上所论述的,获得设备A密钥的设备B可以使用这个密钥配合一个伪装的BD_ ADDR来计算加密密钥从而达到监听设备A与其他设备通信的效果,并且设备B可以伪装为设备C通过设备A的认证,也可以伪装为设备A通过设备C的认证。
以上的这些问题会让人认为蓝牙的安全体系是高度不可靠的,然而一个不可忽略的事实是:通过蓝牙连接传输的数据一般来说并不是非常重要的,目前蓝牙标准考虑到的安全技术只适用于规模较小的网络,如果网络结点较多,拓扑复杂(如Ad Hoc网络),现有的基于点对点的密钥分配和认证机制不能满足需求。蓝牙技术所提供的数据安全性措施对小型应用来说看起来已足够了,但任何敏感数据或会产生问题的数据都不应直接通过蓝牙传输。为了使蓝牙技术应用得更广泛,我们可采用另外更强劲的加密算法,如DES算法。
三、基于DES加密算法的蓝牙技术如何设计
1、DES加密算法
DES加密算法是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及被怀疑内含美国国家安全局(NSA)的后门而在开始时是有争议的,因此DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展。
分组加密算法DES算法综合运用了置换、代替。代数多种密码技术,把信息分成64位大小的块,使用56位密钥,迭代轮数为16轮。此算法有一个64比特的密钥作为参数,在DES算法中,将64位的初始密钥中的8个奇偶校验位剔除掉而留下真正的56位初始密钥。原始信息被分成64位的固定长度数据块,然后利用56位的加密密钥通过置换和组合方法生成64位的加密信息。解密用的密钥与加密密钥相同,只是解密步骤正好相反。DES采用的加密方法,一次加密一位或一个字节,形成密码流,密码流具有自同步的特点。
与蓝牙流密码算法不同,数学上可以证明分组加密算法是完全安全的,DES的可用加密密钥数量多达72x1015个。应用于每一明文信息的密钥都是从这一巨大数量的密钥中随机产生的,DES算法已被广泛采用并被认为是非常可靠的,并且DES至今仍被公认是较安全的,所以研究在蓝牙技术中采用DES加密算法来进行加密,是一件有意义的工作。
2、基于DES加密算法的蓝牙技术如何设计
(1)适用于蓝牙技术的DES算法描述
经过对标准的DES算法的分析理解研究,我们设计了一个适用于蓝牙技术的加密算法(以下简称BT_ DES),描述如下,作为进一步分析,仿真和具体实现的基础。
在两个蓝牙设备经过认证并已生成了加密密钥Kc后就可进行加密了,因为Kc可在8——128比特变化,而DES加密算法使用长度为56比特的密钥加密长度为64比特的明文从而获得64比特的密文,所以这里可取Kc的长度为56比特。用DES加密蓝牙数据分组的过程如下:
1)将蓝牙分组分割成64比特的明文段,其中的一段记为x= DIN[63:o]。先通过一个固定的初始置换IP,将x的比特置换为x0。即:x0=IP (x)=LORO这里LO是x0的前32比特,RO是x0的后32比特。
2)进行16轮完全相同的运算,在这里是数据与密钥相结合,例,计算LiRi,l≤i≤16 - Li= Ri-1=Li@f(Ri-l,Ki)其中,Ki是密钥Kc=Key[63:0]的比特的一个置换结果;f函数是实现代替、置换及密钥异或的函数。
3)对R16L16进行初始置换IP的逆置换IP-1.获得密文y=DOUT[63:0],即y=IP-1(R16L16);最后一次迭代后,左边和右边未交换,将R16116作为IP-i的输入,目的是使算法可同时用于加密和解密。
(2)对BT-DES的软件仿真
用软件(用C++语言)实现该BT_DES加密算法:
1)各项参数的初始化。
2)选择是进行加密或解密。
3)输入外部密钥,即蓝牙认证过程完成后生成的加密密钥Kc。
4)如果是加密,就调用des_key (&dc.key)子程序来生成加密子密钥。
5)如果是解密,就调用des_key (&dc.key)子程序来生成解密子密钥。
6)选择合适的工作方式。
7)用des_enc (&dc,cp,1)子程序来完成加密。
用des_ dec(&dc,cp,1)子程序来完成解密。
(3)实现BT_DES算法的硬件模块结构
可用硬件描述语言对电路进行设计或描述,然后用可编程器件对电路进行硬件实现,这是现在一种实用的电路设计方法。电路由初始变换电路IP、多路选择电路、膨胀算法E处理电路、S盒数据转换电路、P变换电路L寄存器、R寄存器、逆变换电路IP-1子密钥生成电路及状态机控制电路等构成。
初始变换电路IP是一个64输入、64输出的数据置换电路,该电路只是完成信号在不同输入输出之间的切换,不占用 任何触发器、门阵列资源,只占用布线资源l同理,膨胀算法E处理电路、P变换电路、逆变换电路IP-I也不占用任何触发器、门阵列资源;多路选择器L-M和R-M是两个多位二选一数据选择器,数据位宽32bit.选择输出结果受状态机控制,分别为输入信号和反馈信号fL寄存器、R寄存器是两个32bit宽的寄存器,时钟为外部CLK信号;状态机是整个系统的控制中心,其核心是一个带清除端的四位二进制可逆计数器,电路的16个状态对应BT_DES的16步迭代运算。
四、BT_EO与BT_DES加密算法的比较
通过对蓝牙技术标准中采用的加密算法BT_EO及BT_DES的仿真,可以看出同BT_ EO相比较。BT_ DES在计算复杂度、速度等方面具有很大的优势,具体如下:
(1) BT_EO属流加密,BT_DES属分组加密算法;
(2) BT_DES的工作速度快、计算量小。使用BT_ DES每64位的明文加密算法仅执行一次而BT-EO加密n位明文要调用n次加密函数;
(3) BT-DES比BT_EO的计算复杂度要低,它加密没有用到LFSR;
(4) BT_EO用软件实现的效率较低,为了加密一个DES执行一次迭代就能加密的数据,用LFSR不得不重复64次;
(5)用BT-DES加密算法可以解决蓝牙加密原算法中的地址欺骗问题。
小知识之蓝牙技术
蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。