安企神电脑监控软件 在线试用
扫码咨询客服
安企神电脑监控软件、局域网监控软件
首页
功能介绍
产品简介
下载中心
帮助中心
客户列表
关于安企神

蓝牙链路层加密算法—EO加密算法

更新时间:2022-10-28 15:44:11


本文简介:不少人认为蓝牙的安全体系是产生问题的重灾区,会被任何稍有能力的投机者攻破。相反,另一些人则认为蓝牙的安全性已经足够好了。这其实取决于你想用蓝牙来做什么。对于普通用户而言,大部分信息都不值得花比信息本身更高的代价去破解。但如果要将蓝牙用于商业、金融业、军事业等来传输极具价值的信息,那么就有必要了解蓝牙的安全能力。下面我们就将具体分析一下蓝牙链路层所采用的加密算法EO的安全性。一、EO加密算法简介EO

蓝牙链路层加密算法—EO加密算法

不少人认为蓝牙的安全体系是产生问题的重灾区,会被任何稍有能力的投机者攻破。相反,另一些人则认为蓝牙的安全性已经足够好了。这其实取决于你想用蓝牙来做什么。对于普通用户而言,大部分信息都不值得花比信息本身更高的代价去破解。但如果要将蓝牙用于商业、金融业、军事业等来传输极具价值的信息,那么就有必要了解蓝牙的安全能力。下面我们就将具体分析一下蓝牙链路层所采用的加密算法EO的安全性。

一、EO加密算法简介

EO加密算法是蓝牙链路层的加密算法,属于流加密方式,即将数据流与密钥比特流进行异或运算。对每一分组的有效载荷的加密是单独进行的,它发生在循环冗余校验之后,前向纤错编码之前。主要原理是利用线性反馈移位寄存器产生伪随机序列,从而形成可用于加密的密钥流,然后将密钥流与要加密的数据流进行异或,实现加密。解密时把密文与同样的密钥流再异或一次就可得到明文。

关于EO加密算法如图1所示。

蓝牙链路层加密算法—EO加密算法

EO加密算法主要有:线性反馈移位寄存器组(Linear Feedback Shift Registcr,LFSR),(LFSR1~4)、组合逻辑和复合器(Blend)3部分组成,其中Blend中T1和T2为线性变换网络,Z-1为延迟网络。LFSRs的长度分别为25、31、33、39。采用多个LFSR是为了增加生成的伪随机序列的长度和随机性。当产生加密流时,LFSRs需要赋予初值(种子)。四个LFSR再加上各是两位的Ct和Ct+1共计132位,由主设备地址ADR(48位)、时钟CL(26位)和链路层加密私钥Kc(最多128位)提供,Kc由E3算法产生的。种子进入LFSRs的安排由图2给出。

蓝牙链路层加密算法—EO加密算法

图中的材是由K变换得来。当LFSRs开始进行工作时,先产生的200位数据的后128位再次作为LFSRs的种子,而G和CI的值被保留,这时产生的伪随机序列就是加密所用的密钥比特流。之所以采用这样的两级加密是为了增加安全性,即使破解出第二级加密,也还必须破解第一级加密才能知道加密私钥Kc。

二、对EO加密流产生器的基本攻击

这种攻击是基于给定有限的(132位左右)输出加密流,重新导出LFSRs的初始值。输出的加密流可以通过某种方式获得的明文和密文按位异或得到。这种攻击对两级加密流的产生器都是有效的。攻击时,假定
已知Blend、LFSRI和LFSR2内容的初始设置,当已知输出的加密流时,虽不能输出LFSR3和LFSR4的确切值,但也能推导出LFSR3和LFSR4的异或值。由图l中得知在,时刻输出密流Zt为LFSRs的输出(即Xt1~Xt4)与C,O (Cr的低位)的异或结果。Xt3和Xr的异或值也可视作Xt3和Xt4的约束条件,把多位加密流得到的约束条件形成约束集,称为三。首先,把Z初始化为空。然后进行如下第一搜索,攻击算法的基本步骤为:

(1)设当前所测状态为f(开始时t=0)。计算Xt1. Xt1、Cto和zr的异或值,输出应和Xt3与Xt4的异或值一致。

(2)如果异或值为零,那么在三中加入约束条件Xt3、Xt4都为0或都为1。

(3)如果异或值为1,那么在L中加入约束条件Xt3≠Xt4。

(4)如果t≥33,那么在L中的约束条件含有LFSR3的反馈链。如果,t≥39,在三中的约束条件含有LFSR4的反馈链。在这两种情况下,如果新加入的约束条件与L中已有的约束相矛盾,这说明事先所做的关于Blend、LFSRI和LFSR2的假设不对,此时必须考虑假设其他情况。

(5)如果约束条件不矛盾,则计算Blcnd的次态。次态取决于现态和LFSRs输出1的个数。

(6)如果把t≥132,那么有很高的概率可以发现密流产生器的初始设置。如果不能,则继续搜索状态t+1。

该加密算法中有两点值得注意:先是Blend的次态取决于现态和LFSRs输出l的个数。因此,本文可以假定LFSR3和LFSR4不同而不需要知道哪个是0哪个是1,只要知道它们不同即可继续搜索。其次在约束条件集合E中的约束可以被有效的检测是否矛盾。

下面分析这种攻击手段的有效性。首先,考虑假设LFSR1、LFSR2的内容和Blend的状态都是正确。在任意t时刻,Xt3和Xt4的和(称为S)有两种情况:

(1)当Xt3和Xt4的异或值为1,s=1。Blend的次态Ct+1就已经决定了,因为次态只取决于现态和LFSRs输出1的个数。此时可直接进行Zt+1的分析。

(2)当Xt3和Xt4的异或值为0时,S∈{0,2}。 Blend的次态Ct+1要分别考虑s=o和s=2两种情况,此时需要分支考虑Zt+1。如果把对Z的分析看作结构树的根节点,以后的Z的位的分析,则可看作对结构树的分支。这个结构树的深度为33+39=72(即LFSR3和LFSR4的长度和)。由于对Z的每位,有一半的概率要分支,平均来看,对Z的每位平均分支0.5次,同时平均得到1.5个约束条件(无分支时有一个,分支时有两个),所以结构树的分支数为272/3=224枝,这数值也就是进行搜索的工作量。而最初假设的位数为60位(LFSRI和LFSR2共56位,Blend的现态和次态共4位),要得到正确的假定平均需要试259次,因此总的时间复杂度平均为0(239+24)=0(283)。这是基本的攻击方法,还可以利用一些特殊条件对攻击进行进一步的优化。

三、对EO密流生成器的优化攻击

为了优化攻击第二层密流生成器,如果LFSR3和LFSR4的异或输出有很高的汉明码重,那么攻击会更有效口为了利用这一点,本文通过假设扩展攻击,假设在一个密流的特殊点,LFSR3和LFSR4的异或为N
个连续的1(N33+39)。由于LFSR的输出在这个长度上随机且相互独立,在N+k个输出长度上产生这样一个序列的可能性为k.2-N(因为k<<2-N)。如果有的话,整个工作量将小于0(N.2(72-N)/3),同时明文的需要量不小于2N+132_N。因为当LFSR3和LFSR4的异或值为1时是不需要对结构树进行分支的。部分理论值由表1给出,同时给出了全部搜索所需要的次数。

蓝牙链路层加密算法—EO加密算法

形式上,EO加密算法如下:

(1)在已知密流中选择132个连续的已知位;

(2)循环4位的Blender FSM、25位的LFSRI和最后的30-n位的LFSR2的状态;

(3)计算开始的LFSR2状态的n+1位,使得LFSR3和LFSR4的异或输出为一个1;

(4)在这一设置上运行基本攻击,如果发现恒定的初始值则停止。

以上算法将运行2的59-n次方次基本攻击,对一个单个的位置成功的可能性为2的-n次方,应当注意,即使是一个单个的数据包,其净荷长度最大为2745位,如果可以得到多个包的明文,就可以得到超过2 745位的密流。所有需要的下一步攻击是如何知道对任何一个包(Packet)来说,第二层密流产生器的初始设置。如果可能得到多个包,逐个去试它们,就能成功地找到任何一个包的初始设置。

四、对蓝牙EO加密算法的改进

根据以上的分析以及可能存在的攻击可以看出,EO加密算法的主要弱点在于图1中的yt信号是由LFSRs的输出位Xt1、Xt2、Xt3、Xt4简单的求和而得,当得知任何它们的异或结果很容易推出复合器的次态,以上的攻击手段都是在利用这一点进行的。因此可以针对这一点进行如下的改进,如图3所示,把简单的求和变成如图所示的算法。改进后的算法先对输出位Xt1、Xt2、Xt3、Xt4计数再求和,这时用以上所述的攻击手段不能奏效,因为求和的结果yt不仅与输出位xtl、Xt2、Xt3、Xt4的现态,也与它们的前态有关。改进后的EO加密算法具有以下优点:

(1)生成的加密流理论上更随机,原序列的长度最长为2的132次方-1,现在为最长可达2的144次方-1 。表2中所示的即改进前后数据的对比情况。

蓝牙链路层加密算法—EO加密算法

(2)无法进行以上所述的攻击手段,如果采用穷举法进行攻击,工作量比以前要大212倍,因为系统比以前多了12个状态。

(3)对原加密算法只做了很少的改动。一般为了速度等原因,加密算法主要部分都采用硬件实现,改进后的算法不需要改动算法软件部分的内容。

(4)改动的部分和原部分很容易进行某种使能方式切换,这样可以和原加密算法兼容。

EO加密算法是蓝牙链路层加密所采用的密流加密算法,它的安全性直接影响到整个系统的安全性。根据我们的分析,依据所获得的密文的长度,EO加密算法的安全性在78- 84位之间。在不改变基带的情况下,如果要提高蓝牙的安全性,只能采用公钥加密体制进行应用层的加强,例如椭圆曲线加密算法等。

小知识之基带

Baseband 信源(信息源,也称发终端)发出的没有经过调制(进行频谱搬移和变换)的原始电信号所固有的频带(频率带宽),称为基本频带,简称基带。

立即下载试用

视频分层加密算法

随着可伸缩视频编码SVC( Scalable Video Coding)的普及,针对可伸缩视频的安全问题也越来越受到重视。目前大部分加密方案都是针对H.264/AVC编码标准来设计的。为此我们分析SVC新采用的技术,并率先提出了一种针对其特点的新的分层加密方案。

一、H.264 SVC的新特性

1、空间可分级

在H.264/AVC的SVC扩展中,空间可伸缩性采用的是分层的方法,通过金字塔式的空间分解来生成多个不同空间分辨率的信号。每个空间分辨率都是一个新的空间编码层。空间多分辨率信号的产生是通过下采样滤波器来实现的,图1所示为一个两层空间分级的SVC编码结构。

视频分层加密算法

H264/SVC在空间分层结构的基础上,对每一层分别实现时间可分级和质量可分级。每一层内的编码都使用了H264/AVC中帧内和帧间预测编码技术,而相邻层之间使用了SVC独有的层间预测编码技术。由于低层是由高层通过下采样得到的,因此在相同的分辨率情况下,每一个高层帧都有与之相对应的低层帧,两者之间存在着显而易见的相关性,即层间冗余。显然,为了获得更高的压缩效率,有必要通过各种层间预测技术来消除层间冗余,这也是空间可伸缩性技术的关键所在。设计层间预测算法的目的是尽可能利用基本层的信息提高增强层的编码效率。

2、质量可分级

在每一个空间层中,SVC将利用MGS编码来实现质量可分级( SNR Scalability)o MGS将压缩效率与漂移效应中,通过引入关键帧达到较好的效果。关键帧即时域最基本层的图像(图2(d)的两个条纹标识的帧为关键帧)。这些关键帧的重构是通过基本层实现的。因此增强层帧的丢弃造成的漂移仅仅只能作用在当前关键帧到下一个关键帧之间,实现了对漂移效应限制。图2描述了在质量可分级时可能的几种选择。

视频分层加密算法

(a)基础层预测

所有的预测全都在基本层完成。这样做的明显缺陷就是编码的效率低下。因为所有的参考帧都是基本层,所以参考帧品质差,那么残差也会大,进而编码出的比特就会多。

(b)增强层预测

克服了(a)的缺点,所有参考帧都用最“清楚”的图像,这样编码效率最好。但这种结构仍然有问题,一旦解码端只收到基本层,而增强层都丢失了。那么就会造成解码出问题,并且这种问题会一直传播下去直到下一个IDR,即漂移效应。

(c)双循环预测

通过分析想到用这种结构来克服(a)和(b)的问题。但这样的结构仍然会存在漂移效应。

(d)关键帧预测

SVC标准使用的方法,实际是一种(a)和(b)的折中方案。关键帧就是时间层id为O的图像(图中用条纹标明)o对关键帧而言,它们将采用基本层来实现预测,而非关键帧,则全部使用最“清楚”的图像作为参考帧。

二、针对SVC新特性实现的分层加密方案

针对SVC出现的新特性,目前还没有出现相关的加密方案,而本文将利用空间可分级中的层间预测以及质量可分级这些新的技术特征来设计一个新的分层加密方案。本方案的分层加密共分三层,保密性依次加强。加密的对象是一个二层空间分级编码视频,为了在解码的过程中不产生混乱,在对质量可分级以及层间预测进行加密的时候采用不同的密钥K、K'。

1、第一层加密:层间预测运动向量

为了提高编码效率,H.264/AVC采用运动估计的技术,在编码一个宏块的时候,首先要获得运动向量MV,MV是当前帧中需要编码的宏块,与参考帧中和该宏块最相似的宏块之间的位移矢量,编码过程中获得MV之后,由当前宏块与参考宏块做相减得到残差,然后MV与残差将被送往码流进行传输。这种预测方式在AVC中称为帧间预测。SVC相对AVC做了大幅的改动,由于可伸缩视频在编码的过程中将分成多个空间层,而空间层中的低层是由高层通过下采样得到的,两者具有显而易见的相关性,而且冗余大部分时候比帧间冗余要小很多,因此在大部分的预测过程中,SVC采用相同帧中较低的空间层通过上采样得到的重建图像作为较高的空间层的参考图像,这种方式称为层间预测。 SVC提供三种层间预测的方法:层间帧内预测、层间宏块模式和运动参数预测、层间残差预测。针对AVC的加密方案,所挑选的加密信息均为帧间预测中的信息,而由上面分析可知,SVC中的大部分预测是在层间进行的,因此,本方案的第一层加密,是针对层间预测中的运动向量来进行的。加密操作如图3所示。在修改了层间的参考图像的运动向量之后,上层的残差也会有相应的变化,因而导致图像的编码是不准确的。

视频分层加密算法

加密原理就是在解码的时候采用错误的预测值,所呈现出来的结果将会是大部分宏块的偏移。由于SVC的层间预测有三种方式,不是每个宏块都会采用层间运动向量预测模式,因此,每帧中采用该预测模式的宏块数量是不确定的,所以我们将采用流加密的方式,这样的加密方式会比较灵活,取密钥K中的一位与宏块的运动矢量的符号位进行异或,下文中P为符号位:

视频分层加密算法

2、第二层加密:MGS关键帧

在SVC质量可分级的MGS模式中,基础层的关键帧会作为增强层帧编码时候的参考帧,而基础层的非关键帧又是使用增强层的帧作为参考帧,因此改变关键帧的重建帧将使得增强层所有的帧以及基层非关键帧受到累加化的影响。H.264中规定,宏块是由16 x16像素组成的,而宏块中的每个像素都由一个亮度值和两个色度值来表征,亮度值表征像素的灰度,色度值表征像素的颜色,宏块中的亮块和色块分别是由块中像素的亮度值和色度值组成,如果对关键帧的重建帧中宏块的亮块和色块进行改变,则增强层中的所有帧以及基本层的非关键帧都会受到很大影响,致使视频质量大幅下降。由于宏块大小固定为16 x16像素,所以亮块与色块的数据量也是固定的,因此本方案第二层加密采用的是AES分块加密技术对重建帧中宏块的亮块和色块进行加密,这样可以保证加密过程迅速完成并拥有很高的安全性。以下为实现代码。

K' = getKey();

UInt size;

pcFrame - > getFuIIPeIYuvBuffer ( ) - > getYuvBufferCtrl ( ). getSize( size) ;

slze = size/8; 11 8 data constitute a AES encrytion block Xpel temp = temp' = new Xpel[8] ;

for(int i = 0; i < size; i++) { temp [1.8] = pcFrame - > getFuIIPeIYuvBuffer( )

- > getBuffer( ) [i* 8. . (i+l) * 8 -1] ; //get 8 data from YUV array

AES_Encrpt( temp [ 1. . 8 ] , K', temp' [1. . 8 ] ) ; //AES encryp-tion

pcFrame - > getFulIPeIYuvBuffer( ) - > getBuffer( ) [i* 8. . ( i + 1) *8 -1] = temp'[1..8];

}

3、第三层加密:层间预测运动向量以及MGS关键帧

在SVC的编码流程中,视频首先会被分成若干个空间层,空间层之间彼此采用层间预测的模式,而每个空间层中,会单独进行质量可分级,采用MGS的模式,因此第三级的方案将会利用层间预测的运动向量加密以及MGS中的关键帧加密同时进行,兼顾了层间与层内的保密性,并且可以互相叠加,加密级别更高,安全性更显著。图4为本方案的分层加密结构图。

视频分层加密算法

小知识之SVC

SVC是Switching Virtual Circuit的缩写,意思是交换虚拟电路。

本文为收集整理,文章部分观点不代表本站观点,如有侵权或其它问题请反馈客服。https://www.wgj7.com/cjwt/16319.html