加密算法(精选11篇)
加密算法 篇1
随着信息技术和互联网的不断发展,信息安全成了信息传输过程中应该考虑的首要问题,而图像作为信息传输的主要载体,因此,图像加密技术受到了人们越来越多的关注。
近年来,图像加密技术成了信息安全领域研究的热点之一,人们也相继提出了许多图像加密的方法[1—8]。文献[1]提出了一种基于像素扰乱的图像加密方法,即对图像的行和列进行置乱,这也是目前用的最广泛的一种图像加密方法;文献[2]利用斜帐篷映射对初值的敏感及其随机性的特点提出了一种高效的图像加密算法,由于其逆变换简单,故易于解码;文献[3]结合数字改良逻辑映射和线性反馈移位寄存器,提出了一种随机性较高安全二进制算术编码,该算法保证了很好的计算开销;文献[4,5]提出了一种新的基于扩散策略的像素间置换的快速图像加密算法,证明了两个像素异或之后,其分布更均匀,从而保证了加密过程的高随机性;文献[6]利用耦合映像格子产生的密钥生成两个简单的扩散序列,设计了一种时间复杂度较低图像加密算法,通过该算法生成的密钥流,其密钥空间大且随机性很高。综上文献所述,图像加密过程中一般会考虑两点:①计算开销是否在可接受的范围之内;②随机性是否满足要求。本文提出了一种新的密钥流的生成方法,结合耦合映像格子和SBox,通过一个对称矩阵变换(SMT)生成SBox系数,然后与初始密钥异或,循环迭代N次,得到一串密钥流,再通过该密钥流分别对原始图像的行、列进行置乱,最后对扰乱后的像素进行列处理,即每一列与等长度的密钥流进行异或,同时为了保证随机性,从第二列开始每一列密文都与前一列的密文异或。
1 密钥流发生器
基于耦合映像格子(CML)提出了一种新的密钥流生成方法,框图如图1所示。CML采用二维动态映射[6]:
式(1)中,ε是耦合映像格子的耦合强度,f是混沌映射函数。f1是下帐篷映射:
式(2)中,x是系统初始状态,x∈(0,1];p是系统的控制参数,p∈(0,1)。f2是逻辑映射:
式(3)中,a是控制参数,a取3.999 73。
生成密钥流的具体流程如下:
(1)给定一组初始值(x0,y0),x0,y0∈(0,1],CML输出(x,y);
(2)用SMT变换将(x,y)的初始区间(0,1)变换到指定的区间,即SMT的输出x',y'∈(0,15],具体变换如下:
(1)令对称矩阵
②取x',y'的下限作为SMT的输出,即floor(x'),floor(y'),将其作为初始密钥流。
(3)分别提取x0,y0的前8位,记为x1_b,y1_b,令c1=floor(x'),d1=floor(y'),则
其中,SBox是一个16×16的二维表,对应有16×16个(0,255)的十进制数,通过下标c1,d1可以找到SBox中对应的数,将其作为SBox的输出;
(4)从第二列开始,xi_b,y1_b,i=2,3,…,n分别是前一个密钥的输出左移3bit、右移3bit得到,则最终密钥流φ(i)=SBox(ci,di)⊕xi_b⊕yi_b。
2 加密与解密
传统的图像加密方案有两种[7—15]:①结合置乱和扩散操作,置乱即对图像的像素进行扰乱处理,扩散是对图像像素值进行改变;②先对图像进行分块,然后对每一块进行编码。本文结合这两种加密方案对图像进行加密,整体加密流程图如图2所示:
2.1 置乱
假设输入为一个大小为M×N的灰度图像,用CML产生的一组密钥流,即(xi,yi),i∈max{M,N},作为循环移位的密钥。对于xi,取i=M,x1,x2,…,xM组成一个一维数组(x1,x2,…,xM),然后对这个一维数组的数值进行E-R处理,即扩值取整,记为Rshift=floor[N(x1,x2,…,,xM)],用Rshitf对该灰度图像的行进行移位,即数组第一个参数控制图像第一行右移的位数,第二个参数控制图像第二行右移的位数,依次类推;同理,对于yi,取i=N,y1,y2,…,yN组成一个一维数组(y1,y2,…,yN),对其数值进行E-R处理,记为Cshift=floor[M(y1,y2,…,yN)],用Cshif对灰度图像的每一列进行下移位。
2.2 扩散和分块编码
经过置乱后的图像还是大小为M×N的图像,对置乱后的图像进行分块处理,即对图像像素进行列处理,如图3所示。令置乱后第i(i=1,2,…,N)列的像素值为Pi(j)(j=1,2,…,M),扩散后的像素值为Ci(j),前一个扩散的像素值为Ci(j-1)。编码过程如下:
Step1:第1列的像素值与密钥流异或,记为
Step2:第2列采用同样的方法编码,即,然后用第1列的密文与第2列进行异或,即
Step3:同理,每一列像素值与密钥流进行异或后再与前一列密文进行异或
2.3 解密过程
是加密过程的逆过程,即先提取密文序列,对每一块密文序列进行编号,从第N列开始每一列与前一列异或;然后恢复加密过程中使用的密钥流,分别与(1)中的每一列异或,异或的结果组成一个M×N的矩阵;最后利用2.1节中的两个一维数组,即Rshift、Cshif,分别对矩阵的列、行进行移位,移位后的结果即为原始图像。
3 实验结果与分析
为了分析该算法的可行性,做了以下实验。输入图像为256×256的Lena灰度图像,密钥系统的初始值选取x0=0.27,y0=0.837 0,p=0.7,a=3.999 73。
3.1 密钥空间分析
一种加密算法密钥空间的大小代表该算法可用于加密的不同密钥的总个数。本文算法密钥系统有四个初始值,x0,y0,p∈(0,1),a∈(3.57,4)。根据IEEE 754标准,64位双精度数的精确度为10-15,则该算法的密钥空间可以大至2197。因此,该密钥空间可以很好地抵抗暴力攻击。
3.2 信源熵
信源熵是用来描述信源符号随机出现程度的指标。信源熵可定义为
式(4)中,P(mi)为信源符号mi出现的概率。对于一副理想的随机图像,其信源熵理论上可以达到8。原图像和加密图像的信息熵如表1所示。
3.3 直方图分析
直方图是反映一幅图像在同一灰度级的像素的分布情况。一个好的加密系统,其加密图的直方图应该呈统一分布,以抵抗外界的数学统计攻击。本文的原图和加密图的直方图如图4所示。直方图显示,加密前的图像的直方图呈不规则变化,而加密后的图像的直方图基本呈统一分布,这说明密文不能为非法用户提供有效信息,从而可以有效地抵抗外界的统计攻击。
3.4 像素相关性分析
对于一幅普通的图像来说,其相邻像素,包括水平、垂直、对角线方向,理论上是高度相关的。加密图像相邻像素的相关性是衡量一个加密系统的一个重要指标,相邻像素相关性越低,其加密效果更好。本文选取了5 000对相邻像素点测试其相邻像素的相关性,原图像和加密图像的相关性如图5所示。像素相关性rxy的计算公式如下:
式中,x、y为图像相邻像素的灰度值。原图和加密图的相关系数如表2所示。
3.5 差分攻击分析
差分攻击是一种选择明文类攻击,为了抵抗这类攻击,则要求输入图像中少数像素点变化会导致密文大量像素的改变。像素个数改变率(NPCR)和统一平均变化强度(UACI)经常用来作为该类特性的分析指标,NPCR值越接近100,UACI值越接近34,其加密效果越好。NPCR和UACI的定义如下:
式中,C1、C2分别为两幅只有一个像素差别的密文图像,C1(r,c)、C2(r,c)分别为C1、C2在点(r,c)处的像素值,size(D)为对应图像的大小。该算法的NPCR和UACI的仿真结果如表3所示.可以看出,本文算法经过一轮加密就基本可以达到较为理想的效果,两轮迭代之后可以保证NPCR>0.996和UA-CI>33.4,而要得到同样的效果,其他两种算法至少要迭代两次以上才能实现。
4 结束语
本文基于传统加密算法的安全性及复杂度的问题,设计了一种新的基于二次密钥加密的快速图像加密算法。算法两次用到密钥流,像素置乱过程取初始密钥流,像素扩散过程取最终密钥流,在提高了算法安全性的同时很好地降低了算法的计算复杂度。仿真结果表明,该算法还拥有很大的密钥空间,具备较好的抵抗穷举攻击的能力;加密后图像的信源熵接近理想值,说明加密图像的灰度分布比较均匀;加密直方图基本呈统一分布,相邻像素相关性可以达到预期的要求,可以有效地抵抗统计攻击;NPCR值和UACI值接近理想值,可以很好的抵抗差分攻击。为了增强算法的抗攻击能力,还可以对算法进行多次迭代,以保证算法的安全性。
加密算法 篇2
摘要:介绍了NESSIE标准中的分组密码算法――Camellia算法的加、解密过程,并对其在各种软、硬件平台上的性能进行了比较,结果表明Camellia算法在各种平台上均有着较高的效率。Camellia算法与其它技术相结合将在信息安全领域产生更广泛的应用。
关键词:NESSIE 分组密码 Camellia 算法 加密
继2000年10月美国推出二十一世纪高级数据加密标准AES后,2003年2月欧洲最新一代的安全标准NESSIE(New European Schemes for Signatures、Integrity and Encryption)出台。NESSIE是欧洲IST(Information Society Technologies)委员会计划的一个项目。Camellia算法以其在各种软件和硬件平台上的高效率这一显著特点成为NESSIE标准中两个128比特分组密码算法之一(另一个为美国的AES算法)。
Camellia算法由NTT和Mitsubishi Electric Corporation联合开发。作为欧洲新一代的加密标准,它具有较强的安全性,能够抵抗差分和线性密码分析等已知的攻击。与AES算法相比,Camellia算法在各种软硬件平台上表现出与之相当的`加密速度。除了在各种软件和硬件平台上的高效性这一显著特点,它的另外一个特点是针对小规模硬件平台的设计。整个算法的硬件执行过程包括加密、解密和密钥扩展三部分,只需占用8.12K 0.18μm COMS工艺ASIC的库门逻辑。这在现有128比特分组密码中是最小的。
1 Camellia算法的组成
Camellia算法支持128比特的分组长度,128、192和256比特的密钥与AES的接口相同。本文以128比特密钥为例对Camellia算法进行详细介绍。
Camellia算法128比特密钥的加、解密过程共有18轮,采用Feistel结构,加、解密过程完全相同,只是子密钥注入顺序相反。而且密钥扩展过程和加、解密过程使用相同的部件。这使得Camellia算法不论是在软件平台还是硬件平台只需更小的规模和更小的存储即可。
(1)Camellia算法所采用的符号列表及其含义
B 8比特向量 W 32比特向量
L 64比特向量 Q 128比特向量
x?n? 比特向量
xL 向量x的左半部分 xR 向量x的右半部分
》< 比特循环左移 || 两个操作数的连接
? 比特的异或操作 x 比特位取补操作
∪ 比特位的或操作 ∩ 比特位的与操作
(2)Camellia算法所采用
加密算法 篇3
关键词:数字水印;Arnold置乱变换;水印嵌入
中图分类号:TP393.08 文献标识码:A文章编号:1007-9599 (2010) 04-0000-02
Arnold Scrambling Based Image Encryption Algorithm
Dong Yanfen1,Wang Yunzheng2
(1.Huanghuai College,Computer Science Department,Zhumadian463000,China;2.96552 Troops of PLA,Luoyang471000,China)
Abstract:It proposes a new Arnold scrambling watermark image algorithm,then embedded in digital products distributed according to certain rules of the watermark.The algorithm is tested through a variety of attacks.It has strong robustness against JPEG lossy compression、median filtering attack、high-intensity noise attack.It has good transparency and robustness At the same time,it has higher utility.
Keywords:Digital watermarking;Arnold scrambling transformation;Watermarking
为提高隐藏信息的安全性,在隐藏前需对其进行置乱操作,本文提出一种基于图像置乱的数字水印算法。通过在水印图像嵌入载体图像之前先对其预处理,使其“变乱”;然后再利用小波变换的多分辨率特性对水印实施嵌入、提取,由于提取后的水印在置乱算法的恢复下能够分散那些受到攻击的像素,可以减少对视觉的影响。因此这种将置乱算法和水印算法的共同结合进一步提高了水印系统的安全性,并且鲁棒性也得到了增强。
一、水印图像Arnold变换
Arnold变换(cat mapping)是V.J.Arnold在遍历理论的研究中提出的一类裁剪变换。图像可看作是平面区域上的二元函数G=F(x,y),(x,y)∈R.通常R是一矩形,对R中任意的点(x,y),则F(x,y)代表图像的信息(如灰度值等),在图像被数字化后,G=F(x,y)相应于一个二维离散点阵,其元素所在的行与列对应于自变量的取值,元素本身代表图像信息。离散化的数字图像相当于元素之间有相关性的一类特殊矩阵。对这一矩阵做某些变换可以得到新的矩阵,从而实现图像的置乱处理。令数字图像的像素坐标x,y∈{1,2,…,N},于是Arnold(实为二维Arnold)变换为
(1)
记变换矩阵为A,左端(x',y')T为输出,右端(x,y)T为输入,n为图像矩阵的阶数。从式(1)可知,Arnold变换是一个保面积映射(没有吸引子),同时是一一映射,因此不同位置的水印像素嵌入到载体系数空间的位置不会重叠;当迭代次数足够大时,任意两个相邻的水印像素点嵌入到载体的位置将会产生极大的分离。这样水印的全部像素将随机而均匀的置乱到载体支图的整个系数空间。由于Arnold变换呈周期性,水印图像的尺寸是一定的,因此置乱迭代一定次数后总可以恢复到原始水印图像,但是有时计算量会很大。当恢复需迭代次数非常多时,我们采用把A拼凑成方阵的方法构造Arnold逆变换通过相同的迭代次数k逆变换回原始水印图像,可以节省迭代次数和恢复时间,其中迭代次数可以为水印系统提供密钥key,从而增加了系统的安全性和保密性。
二、算法分析
本算法包括水印嵌入和提取过程,所使用的水印为单色位图,载体是24位位图。
(一)水印嵌入算法
设X为原始图像,待隐藏的二值图像为W,信息嵌入过程包括原始图像小波分解、待隐藏图像置乱变换、、水印嵌入及小波重构生成水印图像等环节。其步骤如下:
1.为了增加攻击的复杂性,首先对待隐藏图像W进行Arnold变换。
2.把原始图像X分为n×n个区域,对每一区域进行三层多分辨率分解;经3级小波变换分解后,形成不同分辨率,不同方向上的子带。
3.选择每个区域的HH,LH,LH1,HH1,LH2:和HH2子带进行信息嵌入。我们设待隐藏序列为wi ={wi ∣wi∈{0,1},i = 0,1,..., Nw -1},每位信息位嵌入到n个系数中。采用一种均值量化算法和块视觉阀值计算JND (just noticeable difference)相结合的算法进行嵌入。
4.分别对每块进行小波逆变换,得到含嵌入信息的图像。
(二)水印提取算法
水印提取过程是嵌入的逆过程,其过程为:
1.分块离散小波变换。通过对嵌入过程3的逆过程,可取出每个区域块的信息。
2.对提取出来的水印再进行Aronld逆变换,经过迭代即可还原出隐藏信息。
三、实验结果与分析
(一)攻击实验
为了客观地评价恢复出来的水印图像质量,用以下两个指标进行衡量。
1.归一化互相关系数。
式中,w为原始水印信号,w'为被恢复出来的水印信号, 为w的均值, 为w'的均值。相关系数NC是小于等于1的正数。值为1时,表示w'与w的线性联系最紧密;值为0时,表示不相关,线性联系最弱。
2.PSNR峰值信噪比是一种比较接近人眼视觉效果的评价,信噪比越高说明算法的性能好,其表达式为
式中,X和X' 分别表示处理前的图像和处理后的图像。
(1)进行JPEG有损压缩。
JPEG有损压缩是检测水印鲁棒性的一个重要指标,也是图像流通过程中最常遇到的攻击处理。由于图像本身的数据量大,如果以非压缩的形式放置于网络上,则会存在占用存储空间增大,传输速率降低,同时下载很慢的特点,严重影响了图像在网络上的利用效率。为了解决这一矛盾就必须将水印图像进行有损压缩压缩。表1是质量因子取不同值时提取信息的检测情况。
由于JPEG有损压缩会造成图像不可恢复的数据损失,所以不可避免的将会一定程度上影响到水印信息。从上表中可以看出随着压缩率的增大,水印的相似系数在减小。
(2)对图像进行噪声干扰。
图像在流通过程中常会遇到噪声的干扰,因此检测水印对噪声的抵抗性是考察水印鲁棒性的一个重要方向。在加入水印后图像中加入均值为0,方差为 0.0005的高斯(gaussian)噪声和0.01 5的椒盐噪声,然后从加噪图像中提取嵌入信息,并计算其相关系数。表2为加入不同噪声提取信息的情况。实验结果表明:本算法对噪声攻击有较强的鲁棒性。
(3)进行一般的图像处理。
锐化(Sharpen)和模糊(Blur)是很常见的图像处理方法。实验结果表明算法对锐化和模糊处理都有很好的鲁棒性,提取的嵌入信息和待隐藏信息有较好的相关性。表3为进行锐化和模糊提取信息的情况。
通过对提出的算法进行了仿真实验,并对嵌入信息的图像进行JPEG有损压缩、噪声处理和其他图像处理的各种攻击测试。虽然攻击测试处理后相关系数值有所下降,但是仍能检测出水印。实验表明,该算法对嵌入信息具有良好的不可见性和鲁棒性。
四、结论
通过实验,发现把置乱算法和小波变换相结合能够进一步提高对数字信息的保护,水印的不可见性和鲁棒性都得到了提升,使攻击者试图非法提取水印更加困难。利用Arnold算法预先对载体图像进行置乱,然后在小波域中实施水印图像的分散嵌入,有效的提高了水印的安全性、透明性与稳定性。能有效隐藏和保护水印信息,抵抗常见的对图像的恶意攻击,鲁棒性好。算法不足之处在于当攻击强度加大(如高斯噪声强度大、锐化范围太大、中值滤波窗口大等)时,提取的水印效果不理想。为能抵抗强度更大的攻击,对嵌入的方法还可做更进一步的研究。
参考文献:
[1]Zhang G C,Wang R D, Zhang Y J.Digital image information hiding technology based on iterative blending[J].Chinese Journal of Computer,2002,25,5:569
[2]Wang D S,Qi D X.A new hiding scheme of digital image[J].Chinese Journal of Computers,2000,23,9:949
[3]陈萍,史金昌.基于图像置乱变换的数字水印算法研究[J].高师理科学刊,2007,27,6:25-28
浅析RSA加密算法 篇4
在传输信息过程中,为确保信息的安全性和保密性,信息加密成为一种主要措施。加密算法的种类不胜枚举。从2012年为期5天的RSA大会中,可见RSA已经运用到社会中的各个领域,受到了全世界的关注。这主要基于RSA加密算法不仅易于理解和实现,而且安全性好。
1 RSA加密算法
1.1 算法原理
文献[1]中描述RSA算法是在1977年由Rivest、Scha Mir和Adle Man发明的。RSA算法是一种既用于数据加密也可以数字签名的非对称密码算法,其安全性依赖于因子分解大数问题。
RSA密码算法是利用陷门单向函数的一种可逆模指数运算,它的安全性是基于大数分解的困难性。下面给出RSA体制的算法流程:
1)RSA加解密算法的初始化
第一,加解密系统随机地选取两个非公开的大素数p和q。
第二,计算出公开的模数N和非公开的欧拉函数,N=pq,φ(N)=(p-1)(q-1)。
第三,随机生成一个整数e作为加密秘钥,并使成立。
第四,计算d(私钥),使得)成立,即,为安全起见立即销毁p、q及e。
2 RSA算法存在攻击
尽管对于RSA的密码分析已经研究了三十多年,但它依然是流行和可靠的。可是,在RSA算法实现的细节上存在一些缺陷,这导致了RSA的安全性下降,从而使RSA被攻击者攻破。下面简单地概述一下目前对RSA算法攻击的几种主要方法。
2.1 数学攻击
实质上就是直接对两个素数乘积N的因式分解。这是一种最直接和最困难的的方法。一旦对N进行分解成功,就很容易得到密钥e。大整数因子分解一直是数论和密码学理论研究中的主要课题。根据目前的研究表明,目前最快的因式分解算法的复杂度为。此外,在文献[4]中,作者提出了用于分解强素数乘积构成的RSA模数N的算法,能够进一步提高了运算效率。
2.2 时间攻击
依赖解密算法的运行时间。P.Kocher提出,利用测定RSA解密所进行的模指数的运算时间来估计解密指数d,然后再确定d的值;可以通过将解密运算量与参数d无关来挫败时间攻击;不断强力穷举密钥。
2.3 密文攻击
攻击者非法获取密文通,过对密文反复用公开密钥加密,可以使明文出现。例:如果取RSA参数(N,e)为(35,17),明文M为33,加密明文:c=3317mod 35=3;再次加密:317mod 35=33,从而得到明文。
2.4 RSA的部分明文攻击
另外,攻击者不仅对可以密文进行攻击,也可以通过获取明文消息的部分信息进行破译或恢复整个明文。这也是RSA存在的另一个安全性的重要问题。
2.5 对RSA小指数的攻击
此攻击方法主要针对RSA算法实现中的细节。如果为了加快加密和验证,选较小的e,并且用这些e向多个用户加密同一个消息(N不同),利用中国剩余定理可以联立方程求解明文。
2.6 公用模攻击
如果需要多个密钥对,有一种做法:不再重新寻找p、q,而只是重新选d、e,即若干对密钥使用同一个模N。这时可以不用重新分组,也方便管理。但可能遭到公用模攻击。这样,如果同一信息用两个不同的指数e加密,并且两个指数e是互素的,则不需要任何解密密钥便能恢复出明文。设M是明文,两个互素的加密密钥分别是e1、e2,共同的模数为N,两个密文分别c1=Me1mod N、c2=Me2mod N。由于e1、e2互素,根据扩展Euclid算法可以找到a和b,使其满足ae1+be2=1。假设a是负数(在a、b中,肯定有一个是负数),再次使用Euclid算法可以计算出c1-1故可得到((c1-1)-rc2s)≡M mod N。
3 参数的选择
RSA体制是将安全性基于因子分解的第一个系统。虽然无法证明因子分解等于破解RSA系统,但若能分解因子N,便能破解RSA系统,所以RSA对公开的N的选择是很关键的。对于公开密钥e和解密密钥d也需要加以限制,否则会使RSA不安全。选择参数会影响RSA整个系统的安全,常用的参数选择应注意要求如下:
3.1 p,q的选择
要想提高RSA的效率和安全性,可以从p、q两个参数以下两个方面着手:素数的检测算法和对p、q的破解。
素数的检测算法。在RSA算法中,首先要产生两个大素数。但是要判断一个大整数是否为素数却一直是个难点。素数检测算法有确定性素数检测法和概率性素数检测法两类。目前,在RSA密码的应用中都使用概率性检测法来判断一个大数是否是素数。但是通过概率性监测算法的检测,还是存在伪素数的情况。
对p、q的破解。从RSA算法原理中,我们知道欧拉函数φ(N)和模数N:φ(N)=(p-1)(q-1)和N=pq。那么根据这两个式子可以构造关于p、q的一元二次方程,即χ2-(N-φ(N)+1)χ+N=0。其中p、q满足:
由文献[4]提出的一种强素数的量子算法,可求得φ(N),这样就可以得到p、q的值,即分解了模数N,RSA就被破解了。
总之,为了抗穷举,p、q都要大;p、q的差要大,如果p、q的差不大,可以用N开方估算p、q;p-1、q-1要有大的素因子,p、q要为强素数;p-1、q-1的公因数要小。
3.2 模数N取几个素数乘积
从RSA算法原理,我们知道模数N是由两个素数相乘得到的。那么模数N可以由多个素数相乘得到吗?答案是肯定的。Euler函数φ(N)表示小于N并且与N互素的正整数个数。如果模数N可因式分解为(其中,ai>0,ai互不相同),则φ(N)=∏Piai×(1-1/Pi)即:。文献[1]已经证明了该推断的正确性。
无论取多个素数还是两个素数相乘,一旦计算出模数N的值,就会都被丢掉。所以这多个素数和两个素数的保密性是一样的,RSA的加密和解密过程是相同的。那么在确定N时应尽可能的选择多个素数相乘。但是如果通过量子算法[4]来对多个素数乘积的模数N进行分解的话,那么就不能构成一元二次方程,分解模数N的难度就更大。
3.3 e,d的选择
e不能太小,如果e小,则可能而未取模,这样可以直接对密文开方求出明文;e太小易遭低指数攻击。为了有效防止被攻击,同时有较快的加解密速度,通常加密密钥e选取16位的素数,并且为modφ(N)的阶数,即i要达到(p-1)(q-1)/2。
d不能太小,应该。解密密钥d的值越小,系统签名和解密运算的速度越快,这对于我们常用的智能卡的加密、银行系统的签名特别重要。
4 小结
综上所述,RSA是一种安全性较好的非对称密码算法。它的安全性依赖于对模数N的因式分解。在日常生活中,RSA算法已广泛地运用到各个领域。那么对RSA算法的攻击无时不在。特别地,当选择的参数不当时,RSA很容易被攻击。要确保RSA的效率和保密性,我们应注意以下几点:对素数检测算法进行改进;用量子算法来研究RSA算法。
摘要:RSA算法不但能用于数据加密,也能用于数字签名,还能检测素数的算法,所以它是目前最有影响力的公钥加密算法,能够抵抗到目前为止已知的所有密码攻击。其安全性依赖于大素数因数分解的困难性。文章主要介绍RSA的加密算法原理、加密与解密过程,存在的攻击,以及参数选择。
关键词:非对称密码,RSA算法,加密,素数,参数,量子算法
参考文献
[1]武亚宁.RSA公钥算法的新探讨及改进[J].信息安全与技术,2012(9):27-28.
[2]白洁.RSA大会,安全领袖眼中的世界[J].信息安全与通信保密,2010(4):16-19.
[3]张宏,刘方圆.四素数RSA加密算法的研究与分析[J].2010:29-30.
[4]潘峰,申军伟.一种强素数因式分解的量子算法[J].2010,46(10):73-74.
加密算法 篇5
用户必须经过学习后才能与主机通信。在学习过程中,用户把序旬号SN、出厂密钥MKEY、加密密钥EN_KEY送给主机,主机对每一个用户要开辟一片EEPROM来存储用户信息。
在主机SERVER端,每个用户CLIENT都需要有16bits的存储空间。所以本系统共可接收511个用户的信息。整个系统的设计充分考虑系统的升级和功能的扩展。其中出厂密钥、序列号、加密密钥、随机数均可按需要进行扩展或缩减。如果从安全角度考虑,可把序列号存放在微处理器的ROM中。
3.1 学习过程
所谓学习,就是使用户在主机端中注册登记的过程。引进随机数RANDOM,对每一次学习来说,它所产生的随机的数是不一样的,它所发送的数据也是变化的、不可预知,提高了安全性。另外,RANDOM和序列号SN、出厂密钥MKEY一起生成加解密密钥EN_KEY,用户可以随时对加密密钥EN_KEY进行修改,这样也提高了安全性。
进入学习模式后,用户端经三次数据发送完成整个学习。过程如下:
(1)用户端产生随机数RANDOM,与MKEY、SN经加密后发送。主机接收到数据解密后,比对MKEY和SN,确认用户是本系统用户(比对MKEY)并且是一个新用户(SN不在EEPROM)时,开辟空间,保存SN和RANDOM。
(2)用户端和主机端分别利用密钥生成算法生成,由MKEY+SN+RANDOM生成EN_KEY,并存入相应的 存储的空间。
(3)用户端利用EN_KEY对SN、RANDOM、SYNC、MKEY进行KEELOQ加密并发送。主机接收到数据后,比对MKEY、RANDOM、SN正确后把SYNC存入相应空间,请求第二次发送(只双向
通信中才有请求功能)。
(4)用户端收到发送请求后(如果是单向通信,则等待后直接发送)再对SN、RANDOM、SYNC、MKEY加密后发送。因为SYNC是每次改变的`,所以这次数据位和上一次发送的数据位改变在50%以上。
(5)主机在接收到数据解密后,比对同步码SYNC,如果用户和主机的同步码变化规律相同则学习成功。
三次发送即完成一次学习过程。第二次学习时随机数重新产生,所以要求学习时三次数据发送是连续的,否则无效。以上各步中有任何一次数据比对挫败则学习失败。主机端在前二次接收到数据后等待24s仍未见用户发送数据则学习失败。学习挫败后用户重新学习。
随机数利利用单片机的计数器产生,有两种方法供选用:
(1)单次操作完毕后,单片机的计数器一直不停地计数,在外界对它进行再次操作或者要发送数据时停止计数。因为外界的操作或发送的时间是不定的,所以计数寄存器里面的数是随机的。
(2)可以对按键或操作时间进行计时。用户每次按键或操作的时间都是不定的,并且按键从抖动到稳定的时间也是不定的,对它进行计时,如果把间隔的时间取得合适,即可得到近似随机数。
3.2 发送过程
在数据发送前,必须先对数据进行加密。数据加密的过程如下:
(1)重新定制非线性表。原算法是用64位密钥去加密32位的明码数据,现在把它改为64位密钥去加密64位的明码数据,密文长度也为64位,可按原规律扩展非线性即可。
(2)对数据进行分组。尽管应用场合针对小型系统(数据传输量较小),但还是必须对所要加密的数据进行分组。在使用分组时,对明文尾部不满一个整组的碎片采用填充随机数的办法将其扩充为一个整组,然后进行正常加密。即数据分组长度、密钥长度和输出密文长度均为64位。
(3)把同步码的变化反映到各组数据中。同步码每次发送时均会改变,它是保证系统每次发送的密文都不一样的根本。只需进行分配、叠代、移位、异或等简单的变换即可完成反映的任务。
(4)封装算法。算法经封装后可方便地被各种程序调用。算法的入口参数有三个:EN_KEY、Data、Mode。其中,EN_KEY为64位的加密密钥;Data为64位被加密或被解密的数据;Mode为工作方式,有加密或解密两种。
HCS300芯片发送的数据主要由固定码和加密码组成。固定码34bit,加密码32bit。固定码主要由28位序列号、4位功能码(按键信息)和2位标志组成。加密码则由16位同步码、28位序列号(可扩展)、4位功能码组成。经改进后可用于数据加密的格式如图2所示。
在发送时还要加入检错和纠错功能。检错视系统的要求可选奇偶校验、CRC校验等。纠象牙可以用汉明码。该码的实现原理是在数据中加入几个校验位,并把数据的每个二进制位分配在几个奇偶校验组中;当某位出错后,就会引起有关的几个校验组的值发生变化。这不但可以发现错误,还能指出哪一位,为自动纠错提供了依据。
3.3 接收过程
改进算法的解密密钥由学习时接收并存储在EEPROM中。其加密和解密的密钥是一样的,解密是加密的逆过程。接收过程主要包括序列号搜索、比对、解密、同步码的比对等过程。接收方的程序流程如图3所示。
加密算法 篇6
关键词:公钥加密;信息安全;加密算法
中图分类号:TP309.7文献标识码:A文章编号:1671-864X(2016)02-0219-01
一、引言
从古人挥舞着大刀长枪的战争开始,信息就是军队统帅战胜敌人的要决。但是,保密的需要不仅是战争的专利。互联网的出现,正在不可阻挡的改变着世界上的一切,如果没有制衡力量,在未来的几十年中,可能我们的一言一行都会被监视、被记录、并被分析——这些终于让人们认识到必须把“保密”作为一个独立的学科,再调用一批卓越的科学家和深奥的理论去研究。
现代密码术的划时代突破,是威特菲尔德·迪菲(WhitfieldDiffie)和马丁·海尔曼(MartinHellman)有关公开密钥加密系统的构想,这是在1976年发表的。但威特菲尔德·迪菲和马丁·海尔曼提供的MH背包算法于1984年被破译,因而失去了实际意义。真正有生命力的公开密钥加密系统算法是由隆·里维斯特(RonaldL.Rivest)、阿迪·沙米尔(AdiShamir)和雷奥纳德·阿德尔曼(LeonardM.Adlemen)在威特菲尔德·迪菲和马丁·海尔曼的论文的启发下,在1977年发明的,这就是沿用至今的RSA算法。它是第一个既能用于数据加密也能用于数字签名的算法。
二、公钥加密算法RSA
传统的加密技术都是秘密密钥加密技术,也称单密钥加密技术。在公开密钥加密技术中,加密密钥与解密密钥是不一样的。加密者可以将加密密钥公开,成为公开密钥,而仍将解密密钥保密,作为秘密密钥。下面就要描述RSA加密算法的流程:
首先,找出三个数:p、q、r,其中p和q是两个相异的质数,r是与(p-1)(q-1)互质的数。
接着,找出e,使得re≡1mod(p-1)(q-1)。这个e一定存在,因为r与(p-1)(q-1)互质,用辗转相除法就可以得到了。
再来,计算n=pq。(n,e)便是publickey。(n,r)就是privatekey。
p和q应该被销毁掉(PGP为了用中国的同余理论加快加密运算保留了p和q,不过它们是用IDEA加密过再存放的)
加密的过程是,若待加密信息为a,将其看成是一个大整数,假设a
接下来,计算C≡aemodn,(0<=C 解码的过程是,计算M≡brmodC(0<=c 如果第三者进行窃听时,他会得到几个数:m,n(=pq),b。他如果要解码的话,必须想办法得到r。所以,他必须先对n作质因数分解。如果他能够成功的分解n,得到这两个质数p和q,那么就表明此算法被攻破。一般说来,许多数学中的函数都有“单向性”,这就是说,有许多运算本身并不难,但如果你想把它倒回去,作逆运算,对于RSA来说,用公开密钥加密后,如果想再通过公开密钥解密是很困难的。这个困难性就表现在对n的因式分解上。若n=pq被因式分解,(p-1)(q-1)就可以算出,继而算出解密密钥m。所以RSA算法的基础就是一个假设:对n的因式分解是很困难的。 RSA算法在理论上的重大缺陷就是并不能证明分解因数绝对是如此之困难,也许我们日后可以找到一种能够快速分解大数的因数的算法,从而使RSA算法失效。如果有人偶然发现了快速将大数分解因数的方法,并将其保密,则他有可能在一段时间内获得极为巨大的力量。 目前RSA被广泛应用于各种安全或认证领域,如web服务器和浏览器信息安全、Email的安全和认证、对远程登录的安全保证和各种电子信用卡系统的核心。 与单钥加密方法比较,RSA的缺点就是运算较慢。用RSA方法加密、解密、签名和认证都是一系列求模幂运算组成的。在实际应用中,经常选择一个较小的公钥或者一个组织使用同一个公钥,而组织中不同的人使用不同的n。这些措施使得加密快于解密而认证快于签名。一些快速的算法比如基于快速傅立叶变换的方法可以有效减少计算步骤,但是在实际中这些算法由于太复杂而不能广泛的使用,而且对于一些典型的密钥长度它们可能会更慢。 三、RSA算法的安全性 若n被因式分解成功,则RSA便被攻破。还不能证明对RSA攻击的难度和分解n的难度相当,但也没有比因式分解n更好的攻击方法。已知n,求得Φ(n)(n的欧拉函数),则p和q可以求得。因为根据欧拉定理,Φ(n)=(p-1)(q-1)=pq–(p+q)+1。和(p–q)2=(p+q)2-4pq;据此列出方程,求得p和q。 另一个攻击RSA的方法是根据C≡aemodn来计算C1/emodn。这种攻击方式没有一种普遍的实现方法,也不知道是否其难度与对n因式分解相当。但是在一些特殊的情况下,当多个相关的信息用同样的密钥加密时,可能很容易被攻破。 为安全起见,对p和q要求:p和q的相差不大;(p-1)和(q-1)有大素数因子;gcd(p-1,q-1)很小,满足这样条件的素数称做安全素数。RSA的出现使得大整数分解因式这一古老的问题再次被重视,近些年来出现的不少比较高级的因数分解方法使“安全素数”的概念也在不停的演化。所以,选择传统上认为是“安全素数”并不一定有效的增加安全性,比较保险的方法就是选择足够大的素数。因为数越大,对其分解因式的难度也就越大!对n和密钥长度的选择取决于用户保密的需要。密钥长度越大,安全性也就越高,但是相应的计算速度也就越慢。由于高速计算机的出现,以前认为已经很具安全性的512位密钥长度已经不再满足人们的需要。 RSA的安全性并不能仅靠密钥的长度来保证。在RSA算法中,还有一种值得注意的现象,那就是存在一些n=pq,使得待加密消息经过若干次RSA变换后就会恢复成原文。这不能不说是RSA本身具有的一个缺点,选择密钥时必须注意避免这种数。 四、结语 RSA方法即可用于保密,也能用于签名和认证,目前已经广泛应用于各种产品、平台等软件上。许多流行的操作系统上如微软、Apple、Sun和Novell都在其产品上融入了RSA。在硬件上,如安全电话、以太网卡和智能卡都使用了RSA技术。而且几乎所有Internet安全协议如S/MIME,SSL和S/WAN都引入了RSA加密方法。ISO9796标准把RSA列为一种兼容的加密算法。可以预见,在不远的几年内,RSA的应用将会越来越广泛。 参考文献: [1]曹建国,王丹,王威.基于RSA公钥密码安全性的研究[J].计算机技术与发展,2007,(01) [2]王育民.Shannon信息保密理论的新进展[J]电子学报,1998,(07). 随着社会信息化建设的日趋深入和国内软件产业的迅速发展,计算机软件作为一种特殊的商品,已随着计算机硬件的普及进入社会生活的各个领域。但是作为一种技术高消费型产品,软件产品在研发过程中投入了大量的人力物力,开发成本较高、风险系数较大、技术难度较强、系统安全性较低等诸多因素制约着软件产品的推广。本文以实际开发的共享软件(在VB.NET开发环境下,实现简单的干洗店前台管理系统)为例介绍了不同加密算法在软件加密保护中的综合应用。 1 使用RES算法实现软件注册加密 由于计算机软件的易复制性,为有效保护软件开发者的知识产权,需要使用相应的加密技术,实现对软件的注册加密。就目前来说,最为行之有效的办法就是采用“一机一码”的注册机制对软件进行注册。大量研究表明,通过读取计算机CPU序列号、硬盘序列号、网卡MAC地址等硬件参数作为加密的明文,生成软件的注册码,并通过注册表来保存注册码,能够有效地防止软件的非法复制。而生成注册码的关键是要采用高强度的加密算法,否则,很容易被解密者通过逆向分析写出注册机,导致软件保护彻底失败。RSA是最流行的非对称算法加密之一,它的突出特点是破解者即使分析出软件中的注册验证算法,也很难推导出注册机的算法,非常适合软件注册码的加密算法。 因此,干洗店前台管理系统作为一个共享软件,采用该算法实现软件注册加密是一种行之有效的方法。 1.1 RSA算法的实现 选择两个大素数p、q,尽量使p、q的差值大,并且(p-1)、(q-1)的因子有素数。 计算n=p*q,&(n)=(p-1)*(q-1)注册码的长度取决于n的长度,n的位数越多越安全,在注册码软件加密保护的实际应用中,一般认为RSA算法的密钥需要1024位以上是有安全保障的。 在这个过程中d和n互素,(e,n)为公开密钥,(d,n)为私人密钥,大素数p和q在生成密钥以后不再需要,可以将它们舍弃,但绝不可泄露。 1.2 软件注册的实现 生成软件注册码,需要获取用户端机器的硬件参数所构成的明文。该明文可以采用多种方式进行加解密,由客户端获取,如图1,在客户端可以获取机器码。 用户在未注册状态下获取机器码后,通过多种方式将用户的机器码发送给软件开发人员,由软件开发人员通过软件注册机生成注册码(图2),并将注册码反馈给用户进行注册,以取得软件的使用权。其中在注册码生成的过程中,机器码作为明文信息m,使用私人密钥(d,n)对机器码m进行加密,得到注册码密文s=(m^d)mod n。 用户获取注册码后,将注册码输入后(图1)进行对注册码校验,使用公开密钥(e,n)对注册码s进行解密得到明文信息m’=(s^e)mod n,比较m与m’,如果相等,则s是软件作者给的合法注册码,软件正常运行,并将注册信息写入系统注册表,否则软件注册失败,软件拒绝运行。 由于RSA算法需要进行的都是大数计算,运算速度成为制约RSA算法的瓶颈。无论是软件还是硬件实现,速度一直是RSA算法的缺陷,所以RSA算法一般情况下只用于少量数据的加密,因此在软件注册验证时可以采用RSA算法进行加密。但是在对系统文件和配置文件的加密上,RSA算法显得无能为力了。 2 使用DES算法实现系统文件和配置文件加密 DES(Data Encryption Standard)是典型的并且应用最为广泛的加密算法之一,它是由IBM公司1975年研究并发布的,1977年它得到了美国政府的正式许可,成为一种标准的加密算法。目前已被应用于许多需要安全加密的场合(如银行数据加密等)。DES算法把64位的明文进行16轮编码变换为64位的密文输出块,它使用64位的密钥(实际为56位,8位是奇偶校验位)。DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。 在共享软件开发过程中,对于系统配置文件、系统源文件、系统生成文件的加密,可以采用DES算法进行加密。一方面它具有极强的安全性,另一方面该算法的执行效率较高。 例如,在干洗店前台管理系统中的数据库配置文件中,数据库初始化时的相关数据库服务器、数据库用户名和密码等信息,可以用DES算法加密后存放在数据库配置文件中如图3。 实现方法如下: 3 使用MD5算法实现系统登录加密 MD5加密算法是Hash算法的一种,它的作用是让大容量信息在用数字签名软件签署私人密钥前被“压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。使用MD5算法加密后的密文具有不可逆性,也就是说即便是密文被别人获取,也很难被破解成明文,因此MD5算法在用户身份验证方面得到广泛应用。 当用户登录系统的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在数据库文件中的密码值进行比较,进而确定输入的密码是否正确。通过这样的步骤,软件系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。 在用户登录界面,系统需要将用户输入的密码字符串使用Fun_MD5()函数进行加密,生成用户密码的密文,然后将用户密码的密文字符串与数据库中的用户密码字符串进行比对,如果相同则登录成功,否则登录失败。 在用户注册界面,用户所输入的用户密码字符串,需要先经过Fun_MD5()函数生成用户密码的密文,然后将用户密码的密文保存在数据库中。 因为用户密码的密文具有不可逆性,如果用户的密码遗失,只能将该用户的密码初始化后重新修改。 4 总结 伴随着加密技术的日益成熟,各种加密算法在保护个人隐私及软件传播上做出了巨大的贡献。但是,软件加密所带来的安全只是相对的、暂时的,软件在设计开发的过程中不可避免地存在着一定的隐患和漏洞。随着解密技术的不断发展进步,软件加密技术也在不断完善。 参考文献 [1]卢开澄.计算机密码学.计算机网络中的保密与安全.清华大学出版社.2005. [2]黄俊,许娟,左洪福.基于RSA算法的注册码软件加密保护.计算机应用.2005. 随着视频应用的日益广泛, 视频的安全性变得越来越重要。基于以往的标准, 人们研究了许多加密算法:有用传统密码技术进行全部加密的方法, 如DES算法、CSC算法和VEA算法, 这类算法虽然有较高的安全性并且不改变压缩比, 但是计算复杂度很高;有对DCT系数进行加密的方法, 如分段置乱算法, 这类算法虽然有较低的计算复杂度, 但是安全性低于全部加密的算法, 压缩比也有所改变;有在熵编码过程中进行加密的方法, 如多状态索引方法, 这类算法虽然计算复杂度低, 对压缩比的影响较小, 但在已知明文攻击情况下是不安全的。上述方法各有优缺点, 而且大多针对MPEG标准, 因此研究适合H.264特点的安全加密技术成为目前研究的热点。 针对现有视频加密算法的不足, 本文提出一种基于H.264的可感知加密算法。 1 加密数据元素的分析与选取 对H.264编码宏块语义层进行分析, 决定提取帧内预测模式字 (Intra Prediction Mode) 、运动向量差值 (Motion Vector Differ_ence) 和残差系数 (Residual Coefficient) 三类定长语法元素 (fix-length code) 进行加密操作[1]。 1.1 帧内预测模式字 根据每个宏块所属片组的不同, 每一个宏块都有几种编码预测模式。但帧内预测编码是所有片组编码类型中都支持的。对亮度像素块而言, 存在有Intra_4×4, Intra_8×8、Intra_16×16三种预测模式。Intra_4×4模式下有9种预测模式, 适用于对图像细节部分进行编码, Intra_16×16有4种预测模式, 适用于对平坦区域进行图像编码[2]。 采用Intra_4×4的编码模式字进行加密操作。每一个4×4块都是通过上方和左方像素预测而来, 如图1所示, a-p为待预测像素, 它利用相邻块中已经解码的A-Q像素来进行预测。对每一个4×4块, 总共有9种模式供选择[2], 其中除了DC模式, 另外8种预测模式的方向也在图1中。 图1 Intra_4×4预测示意图 Intra_4×4的编码预测模式总共有9种预测模式, 至少需要4个bit位来进行编码。在H.264的标准中, 利用一个“prev_Intra_4×4_pred_mode”字段来排除一种预测方式, 用另外3个bit位来表示余下的8种预测模式。因此, 只对后3个bit位进行加密扰乱, 这样的加密过程中, 不会影响到其他字段, 也不会产生额外的码流。 1.2 运动向量差值 如图2所示, 在P帧或B帧中, 每个宏块 (16×16像素) 可以有4种方式来进行分割:16×16、8×16、16×8、8×8。如图2 (d) 是采用8×8模式, 分为4个子宏块 (8×8像素) 。每个字宏块可以进一步进行分割:8×8、4×8、8×4、4×4。 每一个分区或者子宏块都有一个单独的运动向量MV (Motion Vector) , 用于引用前面参考帧的对应区域来对当前块进行预测编码。每个预测区的MV都需要相当数目的比特位来进行编码。为了进一步减少比特数, 可以利用邻近的MV之间的相关性进行预测编码。后一个MV可由前面已经编码的MV预测得到, 只需要对它们的差值MVD (Motion Vector Difference) 进行编码。在H.264中, MVD值是采用指数哥伦布 (Exp-Golomb) 进行编码的, 这是一种变长编码[3]。 指数哥伦布编码由前缀和后缀构成, 前缀为M个0后面跟一个1, 后缀为M bit的INFO, 其码形为:[M zero]1[INFO]。其中, M=floor (log2 (Code Num-1) ) 。若MVD<0, CodeNum=2|MVD|-1, INFO的大小为Code Num-2M。用加密函数来对INFO进行加密:y=Encrypt- (INFO) , 其中y为加密后的密文。 本文只对MVD的符号位进行加密, 对于每一个MVD值, 只需要对一个bit位进行加密操作。 1.3 残差系数 在H.264中, 残差块系数通过CAVLC和CABAC进行编码[4]。在进行CAVLC编码的过程中, 涉及到以下几个语义字段[2]:非零系数数目 (Total Coeffs) 、拖尾系数数目 (Trailing Ones) 、非零系数幅值 (Level) 以及最后一个非零系数前零的个数 (Total Zero) 和每个非零系数前零的个数 (Run Before) 。经过分析, 只有Trailing Ones和Level的符号位是属于定长字段[6], 因此提取这两个字段的符号位进行加密操作。如图3所示。 2 算法设计 分别引入三个不同的控制参数P1、P1、P3对预测模式字IPM、运动向量MVD和残差系数Residual Coefficien的加密强度进行控制[1], 具体方案为:以P1、P2的概率分别对IPM、MVD进行加密, 当P1、P2从0到1进行变化时, 相应地进行不加密到完全加密;以P3对Residual Coefficients系数符号位进行不加密到完全加密控制。 下面是算法的具体伪代码描述: 3 仿真结果与分析 3.1 实验环境 实验测试条件:H.264/AVC标准, JM10.2版本, 以IPPP方式进行编码, I帧刷新率为10, 帧率为30 F/s, 2GB内存, Intel T5670处理器, 并用VS2008完成对JM10.2代码的调试。实验中采用CIF格式的352288的foreman作为视频序列。 3.2 加密效果分析 单独加密IPM字段, 只是对亮度信息进行加密, 如图4中人脸和轮廓信息清晰可见;单独进行MVD加密的过程中, 如图5中, I帧图像完全不受任何影响, B、P帧的I bock也完全不受影响, 关键信息很容易泄露。单独对残差系数进行加密, 如图6, 与IPM一样, 图像的轮廓信息没有很好的隐藏。另外, 从对抗解密攻击能力上来看, 单独对一种加密元素进行分析加密空间更小, 也更容易实施破解。因此, 在视觉安全性要求比较高的场合, 应该联合对所有三种元素进行加密, 从图7可以看到, 随着加密强度不断提高, 视频图像可感知性不断下降, 在最强的加密强度下, 整幅图像完全被扰乱有很高的视觉安全性。各种方汉加密后PSNR值如表1所示。 3.3 安全性分析 在加密方案中, 保持视频格式的语义兼容性, 加密操作并不改变相关字段的长度。攻击者会很自然地通过单独猜解每个字段元素的值来进行Cipher-only Attacks[7]。最简单的方法是进行ECA攻击 (Error Concealment-based Attack) , 就是将所有FLC的值赋值为一个固定值进行破解。同时, 攻击者也可以通过相邻块之间的相关性来单独猜解每个FLC的值, 下面对其复杂性进行分析说明。假设在一个帧数据中所有FLC的数据为N, 加密的概率控制为p, 则在一帧数据中实际进行加密的FLC的数目为p N, 对一帧数据进行去块攻击的难度至少为O ( (CNPN2PN) 。对于每一个符号字段[5], 至少有两个取值 (0和1) , 如果是IPM字, 则有更多的取值可能。如果假设p>100N, 则有2PN>2100, 实际上, 在一个数据帧里面, FLC的数目要远远大于100, 该加密的方案在对抗Cipher_only Attacks攻击还是十分有效的。 3.4 性能分析 一个加密算法的计算复杂度主要取决于它要进行加密的数据量。本文加密的数据量主要包括IPM、MVD和残差系数。在一个宏块中, IPM和MVD符号位, 还有Residual Coefficient的符号位需要加密, 因此, 要加密的数据量同整个视频数据相比, 只占很小的部分。所采用的加密操作也仅仅是对相关的bit位进行“异或”操作, 所需的系统开销极小, 基本上不会对编解码带来影响。 本文研究了一种在H.264编码下进行Perceptual Encryption的方法, 通过对语法元素的分析和编码方式的研究, 选取了IPM、MVD和Residual Coefficient这三种定长字段的元素进行加密。通过引入概率参数来对每种类型的字段加密强度进行控制, 分析加密不同元素所带来的视频加密效果。实验结果表明, 单独加密其中任何一种元素, 都能对图像带来很大的干扰。但要获得很好的安全性, 必须联合加密三种元素。这种加密方案具有很好的安全性和实时性, 而且不会带来额外的码流, 保持了视频的压缩比不变, 并且可以调整不同的加密强度, 适用于各种应用的需求。 摘要:针对多媒体视频传输的安全性与实时性的要求, 提出一种基于H.264感知加密算法的视频加密方案。该方案将视频数据分为VLC (Variable Length Code) 和FLC (Fix-Length Code) 两类, 只选择FLC中对重构图像比较重要的元素进行加密操作。理论分析和仿真结果表明, 该加密方案具有安全性高, 低成本系统开销的特性。 关键词:视频加密,H.264编码标准,感知加密算法,FLC,安全性 参考文献 [1]刘萧.基于H.264编码的视频加密研究[D].杭州:浙江大学计算机科学与技术学院, 2010:18-29. [2]毕厚杰.新一代视频压缩编码标准:H.264/AVC[M].北京:人民邮电出版社, 2005. [3]李晓举, 冯战申, 胡友情.基于H.264 CAVLC熵编码的视频加密方案[J].计算机工程与应用, 2009, 45 (34) :114-117. [4]包先雨, 蒋建国, 袁炜, 等.H.264/AVC标准中基于CABAC的数字视频加密研究[J].通信学报, 2007, 28 (6) :24-29. [5]QAO L, NAHRSTEDT K.A new algorithm for MPEG videoencryption[C].In:Proceeding of the Frist International Con-ference on Imaging Science, Systems and Technology (CISST’97) , LasVegas, Nevada, 1997:21-29. [6]LIAN S G, LIU Z, REN Z.Secure advanced video codingbased on selection algorithms[J].IEEE Transactions onConsumer Electronics, 2006, 52 (2) :621-629. 1 相互迭代的优化设计 1.1 Logistic映射混沌序列优化 Logistic模型一开始是表达昆虫种群增长量的模型,也叫做虫口模型。下面设计针对Logistic混沌序列进行优化,Logistic模型的动力学过程如下: 式中的参数较为经典的取值是σ=10,r=28,b=8 3。当σ,b仍取值为10和8 3,此时如果r>24.75,那么系统处于混沌状态。由于系统输出的实值混沌序列存在如下缺点:x,y,z的值域各不相同,不利于批处理;x,y,z局部取值呈现单调性,易受线性预测攻击;x,y,z自相关特性非理想的δ函数,互相关特性非理想的零特性,难以保证不可预测性,而且系统多输出特性也得不到充分利用。为了尽可能地避免这些缺陷,提出了一种改进方法对混沌序列做优化,设计了一个模型,方程如下所示: 式中:x′,y′,z′是经过优化后的序列;m是控制参数,能够起到提升序列取值的不规则性;round()是最接近整数函数,能够实现混沌优化序列。 1.2 优化算法过程 通过式(2)可以得到经过优化处理的3个混沌序列x′,y′,z′,形成3个置乱矩阵,利用其分别对RGB彩色图像的3个分量做置乱加密处理。通过优化后的混沌序列可以形成对应的置乱矩阵PM×N。该置乱矩阵中的任意一个元素Pij都在[1,2,…,M×N]的范围里,如果有Pij=Pkl,且只有满足i=k,j=1时才成立。如果M=4,N=4时,那么P就是4×4的矩阵,通过优化混沌序列从而形成16个实数值的混沌序列,把这些序列按照从大到小进行排序,用1~16做标识,那么就能够得到序列:4,6,7,3,1,2,8,15,10,12,14,13,16,11,9,5。以行排列为4×4的置乱矩阵P4×4为: 通过使用非线性置乱的方法,把图像IM×N中子元素和对应的PM×N中的元素做置乱处理,这里设计的详细过程如下: 算法程序的过程如下: 先定义一个寄存器变量ch。 再进行加密处理。 2 数据加密的安全性的分析 一个较好的加密算法,不仅要其安全可靠性能高,而且要其运行的速率快。在前面的叙述中,已经知晓混沌方程进行迭代是能够生成伪随机数列的。密钥循环一次大概能够加密100 kb视频数据信息。又因为由于周期很长,并且还是伪随机数列,所以在安全方面的性能得到了较好的保障。另外,鉴别时效性主要是取决于验证程序能不能较为快速的加密。在进行验证时,选取了约1 GB大小的各种不同类型的视频文件。凭借较大信息量的视频文件能够很明确地显示出程序加密地速度的快慢。先对一个710 MB扩展名为“dvd.mp4”以及一个970 MB扩展名为“soldier.rmvb”视频文件进行测试,其测试所得数据结果见图1。 在做验证加密时会生成一些文件。其中,文件hundun1.mp4与hundun2.rmvb都无法打开,然而文件decode1.mp4与decode2.rmvb能够打开。经验证可以知道解密之后的视频和最初的视频是一样的。另外,还可知加密以及解密所需要的时间不超过1 min。该时间是把生成密钥流以及加密视频的所需时间计算在内的,其速率是超过10 MB/s。由此可知,利用混沌加密的算法的适用性强。该方法不仅能够确保安全,同时具有较快的加密速率。假如破解视频所耗的成本比视频自身所拥有的价值还要大,于是进行破解就显得多余。虽然对于安全要求非常高的场合是不适用的,然而在人们日常生活若需加密的视频文件时,使用该方法是较好的方法。加密系统的关键性能是自身抵抗外界攻击的能力,若抵抗能力越强,说明该系统安全系数越高。破解人员对加密系统的攻击实质就是此系统密钥流进行的攻击,因此混沌Logistic映射的抵抗攻击的性能实际上就是等同于整个加密系统抵抗攻击能力。如果N>μ,μ=3.569 945 6时,Logistic映射处于混沌状态,当周期N无限接近于∞时,如果攻击人员采用穷举法的方式做蛮力攻击,那么要进行2N次,所以考虑到实际情况以及成本的因素,都不可能顺利完成的。在实际应用里,不可能满足精度无穷大的要求,如果在没有采用参数μ动态累加产生器的情况下,序列周期是N′,此时有攻击人员采取穷举法做蛮力攻击,那么就得做N′次运行。然而,在采用参数μ动态累加产生器的情况下,序列周期是22′rN,此时有攻击人员采取穷举法做蛮力攻击,那么得做2′2rN次运行。加密算法,关键的优势功能是在整体的加密结构进行了优化处理、科学的安排及长度为128的密钥。如果进行强力攻击效果最突出,则以位方式得到密钥得进行2128次加密运算,就会耗费1012年的时间。面对IDEA采取强力的方式进行攻击,那么生成解密子密钥的速度远远不及加密子密钥速度。可以看出,解密需要耗费的时间会很多。综上所述,采用混沌利用混沌算法生成高性能的密钥,并且利用IDEA优质性能以及高质量的加密体系,确保了整个加密系统具备了很高的安全性能。 3 图像应用数据的加密实验 3.1 实验设计 本文图像采用图2(a)所示,把分量图合成为彩色图像后的加密图像见图2(b)。这里迭代过程应用了1 000次。 3.2 保密性测试优势 为了验证算法的保密性性优势,图3进行如下实验:(a)为参数r的偏差为10-10次方时的错误解密图像;(b)为初值xo的偏差为10-10次方时的错误解密图像。从算法改进结果来看图像已经发生了视觉方面的色彩改变,显然图像必将梗难破译,有理论分析可知对图像加密的需要进行3MN次操作,显然这一结果验证了算法保密性方面的优势。 3.3 抗攻击测试 为了分析图像的抗抗击性,图4分别进行如下实验:(a)加密后的图片经过压缩改进的解密图像;(b)则采用高斯噪声后的解密图像,从图片视觉表现来看,算法显然实现了解密图像效果保持,这验证了算法有较强抗攻击能力。 4 算法对比 空域复合加密算法与比特移位加密算法的比较如表1所示。 由表1可知,与改进的混沌加密算法对照,本文算法有主要的三个优点:第一,在有限精度下密钥空间从1016≈253扩大到1048≈2158,很大程度上提高了抗密钥穷举攻击的能力;第二,一次能加密多个比特,并且比特移位操作速度远远大于比特异或操作,所以该算法加密速度比空域复合算法的速度快。第三,因为xi的随机性,在加密的流程中破坏了原图像像素的独立性,使得破译的难度加大。 5 结语 设计过程中,采用复合混沌方程是形成密钥流的方式,由于混沌方程能够因为反复迭代生成类似的随机数列,把其数列当成是加密程序的密钥与加密算法的要求是相当吻合。若密钥完全是随机的,则想破译密很难实现。因此,密钥随机性越强,加密算法就越安全。设计加密时,直接使用异或方式加密,该方法的加密速率是很高的。另外,还要定义一个寄存器变量,采用此变量存取加密时形成的字符,同时也提升了加密的速度。最后,测试程序执行所需花费的时间,也验证了此程序能够快速加密的功能。 摘要:采用了Logistic和Henon的相互迭代的复合混沌的模型,通过混沌序列的优化和置乱算法完成混沌加密的设计。算法改进结果表明:其保证了安全性的同时实现了较快的加密速度;解密图像效果发现算法有很强的抗攻击能力。通过和传统的空域复合加密算法进行对比得出改进算法在抗密钥穷举攻击的能力、加密速度比、破译的难度等方面具有优势。 随着互联网络的日益开放壮大, 人们在享受信息、资料方便易寻的同时, 也受到了它所带来的不可忽视的问题—信息安全, 尤其以军事, 金融等行业对于信息的安全性要求会很高, 这样图像加密算法受到很多研究人员的关注。目前, 常用的图像加密方法有自适应图像加密, 基于混沌系统的加密算法、盲源分离图像加密方法和常用于银行、电子商务的数字水印算法。本文介绍了几种不是单独运用某一种图像加密算法, 而是把其中某两种的算法结合在一起进行图像加密的算法, 以提高图像加密的效果。 1 图像加密算法现状 图像加密最早源于经典的文本加密理论和经典的密码体制, 它的目的是在于可以把想要加密的图像完全的遮盖住, 以防非法接收者很容易的可以获得其中的信息。而接收方, 通过事先拥有的有关信息或者解密方法可以方便的解密出原有信息。 图像加密算法主要有以下几种: 1.1 基于自适应和混沌理论的图像加密算法 众所周知, 混沌系统是一个非线性动力系统。它对初始情况和系统参数都是很敏感的。它具有白噪声、伪随机序列和间隔遍历性等混沌序列的统计特性, 所以常常被应用于加密算法中。而自适应算法是通过改变图像既有的某些顺序, 把像素根据一些进行排列操作, 形成类似噪声图像以达到加密效果。 基于自适应和混沌理论的图像加密算法是首先运用Logistic混沌映射 (如式1) 系统, 生成2组混沌序列, 其中的一个序列决定的图像每行像素移动的时间, 另一个序列决定列移动时间;通过矩阵移动使得图像置乱得到图像I, 左后图像I通过AES加密标准中的S盒进行图像置乱。这样得到的图片已经完成了三次图像置乱[1]。 然后对图片再进行自适应的处理, 即最上面的一行和其他行异或, 最左面的一列和其他列异或[1]。所以最后得到的图像无论是像素位置还有数值都改变了, 这就达到了加密的效果。 1.2 基于混合混沌和独立分量的加密算法 1.3 基于盲源分离的小波域多重音频水印方法 该算法基于BSS理论, 提出一种小波域的多重音频水印方法, 为了解决当多水印嵌入时所呈现出的顺序问题和确定性;首先, 把两个初始二值数字水印图像做Ar no l d进行置乱然后维数减少, 获得两个一维信号wm1, wm2, 之后将一路等长的混沌序列k1与上面两路混合, 一路作为水印信息w, 另一路作为密k2[3]。其混合过程为: 其中A1为一个秩为2的矩阵。为了保证鲁棒性, A1中的各分量要满足 2 图像加密算法的发展前景 由于自适应算法仅限于图像自身的像素, 所以该算法的加密速度很快, 但是如过仅仅应用这一种算法, 对于非法攻击是很不安全的;而混沌系统所产生的数列几乎类似于伪随机序列, 而且它对初始值非常敏感, 是要稍作修改, 所生成的序列就完全不一样, 这对于图像加密来说如果一次一密的话会变得很安全;近年来, 基于盲源分离的图像加密算法也逐渐成为研究的热门, 它不仅可以同时加密多幅图像, 且它们之间通过混合矩阵还会互相遮盖, 然而在接收端不需要接收者事先对图片信息有过多的了解, 只要通过独立分量的算法就可以恢复出原有的信号;最后, 数字水印的嵌入技术可以与上面三种典型的加密算法相结合, 用于需要做标记的图像中, 以方便识别。所以, 以上的三种加密方式, 都是运用两种加密方法结合的方式, 而不是只运用其中的某一种, 这样既可以使每种加密方法的优点得到充分的应用, 又可以弥补各自的不足, 使得加密的复杂性得以提高, 从而提高了图像传输的可靠性这也是我们今后图像加密的一个发展方向。 3 结语 目前, 我国的加密技术与国外还有一些差距, 新的加密技术也在不断地涌现, 图像加密技术还有很大的发展空间让我们去探究, 我们要找到适用于不同领域的图像加密技术, 在现有的基础理论上吸收国内外经验, 创造出属于我们自己的完整的图像加密体系。 摘要:伴随着优秀科学技术的不断衍生, 数字图像在传输过程中受到的威胁也越来越多。而图像加密是保证其能够安全的发送到接受者的有效方法之一。本文介绍了现今几种先进的图像加密算法, 分析了当前图像加密算法的研究现状及发展趋势。 关键词:图像加密,自适应加密,混合混沌加密,盲源分离加密 参考文献 [1]Zhang Hong-ye, Image Encryption Algorithm based on self-adaptive and Chaos Theory[J], Key Engineering Materials.2011, Vols467~469, 231~235 [2]Wei Ching Chen, Secure Communicationg based on a hybrid of Choas and ICA Encryptions[J], International Journal of Modern Physics B World Scientific Publishing Company, 2008, 8 [3]马晓红, 孙长富, 基于盲源分离的小波域多重音频水印方法[J], 电子信息学报, 2008, 30 (10) :2307~2310 静止图像可以看作是平面区域上的二元连续函数: 在图像数字化之后,A=f(x,y)则相应于一个矩阵,矩阵的元素所在的行与列就是图像显示在计算机屏幕上诸像素点的坐标,元素的数值就是该像素的灰度。通过矩阵的初等变换或改变矩阵元素的值,即打破图像像素点的相关性,可以使得像素点变得杂乱无章,从而达到加密的目的。 混沌密码学方法是利用混沌动力学系统所具有的伪随机性、确定性和对初始条件与系统参数的极端敏感性以及混迭特性来构造分组密码或序列密码,以达到对信源进行加密的目的。混沌信号具有非周期性、连续宽带频谱、类似噪声的特性,使得它具有天然的隐蔽性;对初始条件和微小扰动的高度敏感性,又使混沌信号具有长期不可预见性。混沌加密方法属于对称加密体制的范畴。这种加密体制的安全性取决于密钥发生器(即混沌)所产生的信号与随机数的近似程度,密钥流越接近随机数安全性越高,反之则容易被攻破。不过,混沌加密方法是符合现代密码学要求的,其近阶段的方向是寻找更加随机的混沌流,并同时解决混沌流的同步问题。 1 基于Logistic映射的图像加密算法 1.1 Logistic映射 Logistic映射是一个源于人口统计的动力学系统,其系统方程可写为如下形式: 其中xn为映射变量,μ为系统参量,它们的取值范围分别为:-1<xn<1,0<μ≤4。Logistic映射是一个非常简单,却又具有重要意义的非线性迭代方程,它具有确定的形式,并且系统不包含任何随机因素,但系统却能产生看似完全随机的,对参量μ的动态变化和初始值极为敏感的现象(当μ∈[3.6,4)时系统变为混沌状态)。 文献[1]证明系统方程产生的序列的概率分布函数为: 其中ρ(x)是不依赖于初始值的,它对混沌系统具有普遍适用性。可以利用概率分布函数来计算混沌系统方程的均值为: 1.2 算法实现 在图像数字化之后,图像A=f(x,y)相当于一个矩阵: 矩阵的每个元素的值表示一个像素点的灰度(亮度)。我们利用Logistic映射所产生的混沌序列对矩阵元素做异或运算来打破其相关性,从而达到加密的目的。在接收端以同一混沌序列(对称加密体制)对加密图像做异或运算即可得到解密图像。 图1(a)为利用Logistic映射生成混沌序列的流程图,图1(b)为基于Logistic映射实现图像加密的流程图。 取系统参数μ=3.8,初始值x0=0.3001,图2(a)为实验原图像,图2(b)为加密后图像,图2(c)为错误密钥(x0=0.3002)解密后图像。图2(d)为正确密钥解密得到的图像。实验表明,加密图像杂乱无章,无法解读;正确密钥能完全解密;而错误密钥(哪怕是微小的误差)都不能解密,这正是混沌序列对初始条件敏感性的体现。 图3为原始图像与加密图像的直方图。 由图2、图3我们可以看出,利用Logistic映射所产生的混沌进行图像加密可以很好地打乱图像像素点之间的相关性,更能抵抗统计分析的密码攻击。 1.3 安全性分析 (1)关于密钥空间的分析 基于Logistic映射的加密算法密钥由两个浮点数组成,如使用每个浮点数的8位有效数字则得到8+8=16个不确定的数位,即其密钥空间为1016,这接近于56位的DES算法的256,而DES算法的安全性是公认的。如图2(c)是该算法密钥x0=0.3002时得到的解密图像,虽然只有10-4的偏差,也无法恢复出原图像。 (2)灰度变化平均值 对于图像灰度值的变化,我们引入灰度变化平均值GAVE,以反映图像灰度变化程度,度量加密图像的完全度[2]。设G(gij)与C(cij)均是大小mn的灰度图像,其灰度级数为L,则有: 称为两个图像的灰度平均变化值[3]。 上述参数在G与C相同时取最小值0,而当加密图像为原图像的逆时,即cij=L-gij时,取最大值L。对于一个加密图像,当两个图像的灰度产生均匀变化时,图像加密的效果是最好的,并且越均匀安全性越高,最好的情况应该是图像灰度平均变化值为L/2。 对上述算法,计算得到灰度平均变化值GAVE(A,A’)=72.6121,其灰度变化良好,这说明加密图像对密钥非常敏感,密钥的微小变化,加密图像灰度值发生了巨大变化。 2 基于二维Henon映射的迭代图像加密算法 2.1 Henon映射 有些高维映射存在单值确定的逆,这是不同于一维映射本质的特征,非平凡二维映射即至少二次的非线性映射往往具备这种单值可逆的特征。Henon映像[4]是最简单的非平凡二维映射,它是二次方型非线性的二维映射,但Henon映射的动力学性质已足够复杂而且存在单值确定的逆。Henon映射定义为[5]: 其逆映射为: 为了适应图像加密的特点,在图像加密算法中使用如下取模改造后的Henon映射,该映射存在单值确定的逆: 其逆映射为: 式中L为图像的最大灰度值。 2.2 算法实现 基于混沌系统及Henon映射的图像加密的算法原理:应用二维取模的且参数b=1的Henon映射,对各像素点的灰度值进行链式循环迭代,并用一维混沌映射产生的整数序列依次改变各环节中的迭代次数d与Henon映射的参数a。 算法加密解密原理如图4所示。 取系统参数u1=3.8,u2=3.9,初始值v1=0.3001,v1=0.3002,图5(a)所示为原始图像,(b)所示为加密图像,(c)所示为正确密钥解密图像。图6为加密图像的直方图。 由图5、图6可以看出,加密效果良好,用正确的密钥可以完全无失真地还原出原始图像。为增加加密强度,可以对加密图像再做一次循环迭代。 2.3 安全性分析 (1)关于密钥空间的分析 基于Henon映射的迭代加密算法的密钥是生成两个Logistic混沌序列的系统参数和初始值,即其密钥是由四个浮点数组成,若做两次迭代运算,则密钥由八个浮点数组成,具体应用时可以做多次循环迭代以获得更高的加密强度。其加密算法的密钥空间远远大于前一种加密算法。 (2)灰度变化平均值 在灰度变化值方面,做一次迭代得GAVE=73.0810,高于前一种算法,即此图像算法加密使图像像素值产生了更均匀的变化,加密效果更好。做两次迭代得GAVE=85.6565,更接近于L/2=128,加密图像与原始图像相关性更小。 3 总结 本文研究了两种基于混沌映射的图像加密算法,对每种算法的加密效果及安全性进行了分析和对比。基于Logistic映射的图像加密算法计算简单,加密效率较高,广泛适用于一般的图像加密。但其不满足统一颁布的原则,且密钥仅由两个浮点数组成,密钥空间过小,随着破译技术的不断发展,一维混沌系统在加密强度上显得不够。基于二维Henon映射的迭代加密算法的加密效果要优于前一种算法,而且可以通过多次迭代加密来提高加密强度,其缺点是计算量过大,效率低。 摘要:传统的加密手段,如DES,在图像文件较大时显得效率低下,混沌密码学提出一种有效的方法来解决图像加密在高速、高安全性方面的难题。混沌系统有很多重要的特性,比如,对初始条件和系统参数敏感,伪随机性,非周期性以及拓扑传递性等,大多数特性满足图像信息保密传输的需要,因而,混沌密码系统比传统密码系统更适合于图像加密。本文对Logistic映射、Henon映射两种混沌加密算法进行了研究,从密钥空间、灰度平均变化值等方面对各算法加密的效果进行了讨论。 关键词:混沌密钥,Logistic映射,Henon映射 参考文献 [1]王光瑞,陈光旨.非线性常微分方程的混沌运动[M].南宁:广西科学技术出版社,1995. [2]廖晓峰.混沌密码学原理及其应用[M].北京:科学出版社,2009. [3]王迤冉,王洋,詹新生.基于混沌的图像加密算法性能分析[J].河南大学学报(自然科学版),2006. [4]张瀚,王秀峰,李朝晖,刘大海.一种基于混沌系统及Henon映射的快速图像加密算法[J].计算机研究与发展,2005. 【加密算法】推荐阅读: 签名加密算法08-04 信息加密算法10-12 公钥加密算法11-13 对称密钥加密算法06-12 RSA加密算法08-15 常用加密算法比较研究07-23 基于DES的加密算法08-30 对称和非对称加密算法06-30 加密不可盲目,有关无线加密协议兼容疑问06-13 加密通信07-15加密算法 篇7
加密算法 篇8
加密算法 篇9
图像加密算法的发展现状 篇10
基于混沌密钥的图像加密算法 篇11