嵌入式系统的数据混沌加密算法研究
2010-11-05焦红平陈小惠姬雷
焦红平,陈小惠,姬雷
(南京邮电大,南京 210003)
0 引言
在信息时代,我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。在嵌入式系统中,我们也同样需要对一些机密数据进行加密,以防止数据在通信过程中被窃取。而嵌入式系统的处理速度相对与PC慢得多,因此,在客观上就需要一种简便而快捷的安全措施来保护机密数据不被窃取。本文实现了一种高效而简便的混沌加密算法,能对嵌入式中的数据进行有效加密。
1 数据加密方法
所谓数据加密(Data Encryption)技术是指将一个信息(或称明文,plain text)经过加密钥匙(Encryption key)及加密函数转换,变成无意义的密文(cipher text),而接收方则将此密文经过解密函数 解密钥匙(Decryption key)还原成明文。加密技术是网络安全技术的基石。
加密算法主要分为对称和非对称算法。对称算法采用相同的密钥进行加密和解密。常用的对称加密算法有AES、IDEA、RC2/RC4、Skpjack、DES等,其最大的困难是密钥分发问题,必须当面或在公共传送系统(电话系统、邮政服务)中无人偷听偷看的情况下交换密钥。非对称算法,采用公钥进行加密而利用私钥进行解密。
公钥是可以公开的,任何人都可以获得,发信人用公钥将数据加密后再传给收信人,收信人用自己的私钥解密。但非对称加密的加密速度慢,对于大量数据的加密传输是不适合的。非对称加密算法包括RSA、DH、EC、DSS等。
2 混沌理论
1972年12月29日,美国麻省理工学院教授、混沌学开创人之一E.N.洛伦兹发表了著名的论文《蝴蝶效应》,开启了混沌理论的大门。时至今日,伴随计算机等技术的飞速进步,混沌学已发展成为一门影响深远、发展迅速的前沿科学。混沌来自于非线性动力系统,而动力系统又描述的是任意随时间发展变化的过程,并且这样的系统产生于生活的各个方面。
举个例子,生态学家对某物种的长期性态感兴趣,给定一些观察到的或实验得到的变量(如捕食者个数、气候的恶劣性、食物的可获性等等),建立数学模型来描述群体的增减。如果用Pn表示n代后该物种极限数目的百分比,则著名的“Logistic映射”:
Pn+1=kP(1-Pn)(其中k是依赖于生态条件的常数,“n+1”是脚标)
可以用于在给定Po,k条件下,预报群体数的长期性态。如果将常数k处理成可变的参数k,则当k值增大到一定值后,“Logistic映射”所构成的动力系统就进入混沌状态。
在一般情况下,Pn+1=kP(1-Pn)可以换成适当的非线性函数,以改进混沌的值域、遍历行、伪随机性等。
混沌方法具有初值敏感,参数可控性和伪随机性,这些特性正好吻合数据加密的两条原则:扩散和混乱,故混沌算法很适合用来进行数据加密。
3 BMP格式说明
BMP是bitmap的缩写形式,bitmap顾名思义,就是位图也即Windows位图。它一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区组成。
3.1 文件头信息块
0002-0005:文件大小。
0006-0009:保留,每字节以“00”填写。
000A-000D:记录图像数据区的起始位置。各字节的信息依次含义为:文件头信息块大小,图像描述信息块的大小,图像颜色表的大小,保留(为01)。
3.2 图像描述信息块
000E-0011:图像描述信息块的大小,常为28H。
0012-0015:图像宽度。0016-0019:图像高度。
001A-001B:图像的plane总数(恒为1)。
001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。
001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。
0022-0025:图像区数据的大小。
0026-0029:水平每米有多少像素。002A-002D:垂直每米有多少像素。
002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。
4 混沌加密算法
4.1 混沌算法简单举例
本文采用了一种有效而简便的加密算法对文件进行加密。加密算法如图1所示。
图1 加密算法框图
该算法将前面的密文和后面的明文一起进行加密,通过对密文进行非线性运算,而达到混沌的效果。当然,对于文件的开始,需要设置初始密文,即加密密码。该算法的核心是选取合适的非线性函数,使得算法复杂度小,且加密效果高效。下面以二次方函数为例,对lena图进行数字加密:
所采用非线性函数:Y=X^2
则加密算法为:Yn+1=[Yn^2-p]%256;(Yn+1为加密后数据,Yn为上一次的加密数据,p为原始数据。)
加密效果如图2所示。
图2 加密前后对比
由图2可以看出,经过相对简单的二次方函数加密图像已被混沌掩盖,但还有一些轮廓显现,可以通过改进加密函数,提高图像加密效果。
4.2 改进后的算法
改 进 后 的 算 法 为 :Yn+1=[Yn*(Yn%pwe)-p]%256;(Yn+1为加密后数据,Yn为上一次的加密数据,p为原始数据,pwe为加密密码。)
加密效果如图3所示。
图3 改进后的加密效果
如图中可以看出,图像的加密效果得到大大改进。图像已完全被混沌掩盖。
对图像进行灰度分析,如图4所示。
图4 灰度分析
由色彩分布直方图分析,可以看出图像灰度均衡,加密效果明显。
5 算法程序实现
通过以上分析,可以得出结论:此算法简单高效,加密性高。将此算法应用于文件,可对一些数据文件进行简单加密,适合嵌入式系统以及Windows系统的PC实现简易加密。在Windows下的MFC实现界面如图5所示。
图5 MFC界面
界面中,左边为加密,邮编为解密。加密时,打开文件,输入0-256之间的密码,加密或解密后文件以“e_”或“d_”开头。
核心程序源代码如下:
int encode()
{
int filesize,flag;
int i,x,y,p;
FILE*fp,*fp2;
//*******************读取源文件大小
if ((fp=fopen(pathName1,"rb"))==NULL) /*打开原始文件是否正确*/
{
//MessageBox("打开文件失败!","提示");
return 0;
}
fseek(fp,0L,SEEK_END);
filesize=ftell(fp);
if ((fp2=fopen(saveName1,"wb"))==NULL) /*新建加密文件是否正确*/
{
//MessageBox("打开文件失败!","提示");
return 0;
}
rewind(fp);
rewind(fp2);
///****************文件加密************
x=pwe;
for(i=0;i<filesize;i++)
{
flag=i;
fseek(fp,flag,SEEK_SET);
p=fgetc(fp);
y=unsigned char((x*x+(i%pwe)*(i%pwe)+3*x)-p);//
fseek(fp2,flag,SEEK_SET);
fputc(y,fp2);
x=y;
}
fclose(fp);
fclose(fp2);
return 1;
}
6 改进和总结
(1)可以考虑根据硬件条件使用更复杂的加密函数,已达到更假的加密效果
(2)可以先对数据顺序进行打乱重排,在进行加密。
(3)可以考虑使用相同的方法进行多次加密。
(4)可以考虑将数据进行多级级联,算法中关联到前2个或两个以上数据,提高加密性能。
[1] Chen G, Mao Y, Chui C K. A Symmetric Image Encryption Scheme Based on 3D Chaotic Cat Maps[J]. Chaos, Solitons &Fractals,2004,21(03):749-761.
[2] 张勇,陈滨.Logistic映射的有限字长研究[J].电子科技大学学报,2006,35(03):292-316.
[3] Shujun Li, Xuan Zheng. Cryptanalysis of a Chaotic Image Encryption Method[C]. USA:[s.n.],2002:708-711.
[4] Gonzalo Alvarez1, Li Shujun. Some Basic Cryptographic Requirements for Chaos-Based Cryptosystems[J]. International Journal of Bifurcation and Chaos,2006,16(08):2129-2151.
[5] 罗启斌,张健.一种新的混沌伪随机序列生成方式[J].电子与信息学报,2006,28(7):1262-1264.
[6] Hai-Yan Zhang. A New Image Scrambling Algorithm Based on Queue Transformation[C]. Hong Kong:[s.n.],2007:1526-1530.
[7] 张文丽.数据加密技术刍议[J].proiect and security应用与安全,2008(2):27.
[8] 吕后坤,雷燕. 数据据加密技术方法与应用[J]. 福建电脑, 2008(7):59.