APP下载

基于混沌序列的通用加密解密方法及实现

2014-12-25罗英茹

中国人民警察大学学报 2014年11期
关键词:二进制解密密码

●罗英茹

(武警学院训练部,河北廊坊 065000)

20世纪90年代以来,随着计算机技术和Internet技术的快速发展,人们通过互联网可以方便地浏览和获得各种信息。同时,随着数字化办公、数字化城市以及电子商务的迅速发展,越来越多的政府机构和公司通过网络提供服务和开展业务。然而,网络中的信息也很容易被非法截取和篡改,对信息的安全性带来了巨大影响。据统计,美国每年因计算机犯罪所造成的经济损失高达150亿美元,全世界几乎每20秒钟就有一起黑客入侵事件发生[1]。因此,信息安全已成为人们关心的焦点问题。

要保证信息的安全,一种简单的办法就是对信息进行加密。经过加密的信息即使被非法截取,其内容也不会暴露,因为加密后的信息和原来的信息差别很大。因此,计算机信息的加密和解密已经成为信息安全的热点研究问题[2]。

信息在计算机系统中是以文件的形式存在的,包括文本、图形、图像、声音、视频等。这些信息由于形式各样,内容不同,在计算机中的存储形式也是不同的,因此,对不同类型的文件通常采用不同的加密解密方法。最常用的方法是通过文件头,准确找到文件的内容,对计算机文件的内容进行加密解密。然而这种方法有时是很困难的。本文根据不同计算机文件存储的二进制形式,基于文件的二进制读取方式,提出了通用的计算机信息加密解密方法,并用Logistic映射产生混沌序列密码的方法,实现了对于不同类型文件的加密和解密。

1 文件加密解密难点的分析

1.1 计算机信息的形式

信息的表现形式多种多样,有文字、图形、声音、动画、视频等,因此计算机中最常见的文件有文本、图形图像、声音、动画和视频等类型。其中,文本是以字母、数字、汉字和各种专用符号表达信息的,是表达信息的最主要的方式,文本文件的格式为TXT等。图形是用直线、曲线、圆或曲面等来表示几何图形的,常见格式有 PIF、DXF、SLD、DRW、GKS、IGS等。图像是指通过计算机图像处理软件绘制的图或用数码相机拍摄的图,常见格式有BMP、JPEG、GIF、TIF、PSD等。声音文件包括两类,第一类是通过录音及压缩处理方式而形成的声音文件,常见格式有WAV、MP3等;第二类是利用计算机技术合成的声音文件,扩展名为MID。动画是指利用计算机技术合成的连续图形序列,常见格式有GIF、FLASH等。而视频是指现实生活中活动的影像,主要是由摄像机拍摄然后利用视频采集卡输入到计算机中的,视频文件常见格式有AVI、MOV、MPEG等。

1.2 计算机文件存储格式的复杂性

要对计算机文件进行加密,需要了解计算机文件的存储形式。然而文件类型不同,其存储形式也不相同。有些类型文件的存储形式比较简单,只存储文件的内容而没有文件头,如文本文件等。计算机中文本文件的数据都是以ASCII码表示的字符类型,其数据可以直接读入,文本文件的文件结束符是“”(即0x00)。有些文件的存储形式比较复杂,除了内容数据之外,还包括文件的类型部分。如WAV类型文件由文件头和数据体两大部分组成。还有一些类型的文件,如微软的Office文件,其文件结构还没有公布。

1.3 文件加解密通用方法的提出

由于计算机的文件格式非常多,每一种格式都有其独特的文件信息存储方法,因此读取文件内容的方式多种多样,每种类型的文件都需要特定的编辑器;并且有许多文件格式还没有公布,因而希望通过文件格式来读文件数据的方法,并不总是可以实现的。

其实,不管信息在计算机中是如何存储的,它们都有一种统一的形式,就是文件在计算机中都可以认为是以二进制的形式存在的。计算机处理的信息,不管是数值、文字,还是声音、图形和图像等,它们在计算机内部,都必须经过数字化编码后才能被传送、存储和处理。所以信息在计算机中是以器件的物理状态来表示的,为了使信息表示更为方便和可靠,在计算机中都是采用二进制数字系统。

基于这种认识,计算机文件都可以认为是用二进制方式来读取和处理的,那么通过二进制方式来读取文件信息并对文件加解密,则可以获得一种通用的计算机文件加解密方法。

2 混沌序列密码的产生

2.1 混沌序列的特点

对计算机文件进行加密的典型算法有DES和RSA算法。但是这些算法也存在一些缺点,如加密方法复杂、费用较高等。另外,由于传统加密方法所采用的密码大多具有周期性,所以总是存在被破译的可能性。

上世纪60年代发现了混沌现象,它是一种在确定性系统中出现的类随机现象。由于混沌系统产生的混沌序列具有对初始值的敏感性、系统长期不可预测性以及良好的统计特性等,因此非常适合作为信息加密的密码。

混沌系统对初始条件具有敏感依赖性,可以提供数量众多的非相关、类随机而又确定可再生的混沌序列。由于混沌信号具有连续宽带谱、冲激式的尖锐自相关特性,混沌在数字信息加密和保密通信等领域中所具有的巨大应用前景已引起了人们广泛的研究兴趣。

2.2 混沌序列的产生

基于混沌序列的计算机文件加密方法需要通过混沌系统产生一定的混沌序列。目前已经发现了许多混沌系统,其中最简单的混沌系统是Logistic模型[3]。本文采用Logistic模型来产生混沌序列。Logistic模型方程为:

其中,0≤a≤4称为控制参数,x0为初始条件。当3.5699456<a≤4时,Logistic映射工作于混沌态。也就是说,由初始条件x0在Logistic映射的作用下所产生的序列{xn,n=1,2,3,…}具有非周期、不收敛和伪随机,且对初始值非常敏感的特性,该序列是混沌序列。

2.3 混沌序列的变换

由于计算机中二进制文件可以用字节的方式读写,因此本文采用字节的方式对文件进行处理。字节一般为8位,其值范围为0~255。为此,需要将Logistic映射产生的混沌序列做一些适当的变换,即把[0,1]区间上的值映射到集[0,255],由取整函数来完成。

详细的方法如下:

第一步:通过Logistic映射产生混沌序列{xn,n=1,2,3,…},xn的取值在0 ~1 之间;

第二步:使用变换yn=[256×xn],[]为取整函数。

经过这一变换,得到的yn为0~255之间的混沌序列。

可以使用该序列作为加密系统的密匙,来对计算机信息进行加密。

3 二进制文件的加密解密方法

3.1 加密解密原理

计算机中的所有文件都可以用二进制的方法读入,其结束符则是4个连续的Oxfd。

在读出计算机文件的存储数据信息和获得混沌序列密码以后,就可以使用序列密码对信息进行加密。加密方法也有许多种,其中最简单的是采用异或加密方法。即把需要加密的信息P用密码K作异或运算就可以产生密文C。

由于异或加密方法是一个对称算法,同一信息经过两次异或运算就恢复到原来的值,因此用同样的密码K对密文C再去异或一次就得到原来的信息P,即

因此用同一混沌序列对加密后的信息进行解密,就可以得到原有的信息。所以,加密和解密都可以采用相同的混沌序列密码。

3.2 加密解密算法

其加密算法如下:

(1)使用打开二进制文件的方法打开需要加密的文件;

(2)读入二进制文件的一个字节信息P;

(3)根据Logistic映射方程,得到混沌序列K;

(4)把P与K进行异或操作,产生密文C;

(5)用写二进制文件的方法把密文写入二进制文件;

(6)重复(2)~(5),直到文件结束。

解密过程和加密过程类似,只要打开加密的文件,用同样的混沌序列密码,按照加密算法就可以进行解密。

加密解密算法的流程图如图1所示。

4 加密解密方法的实现

4.1 程序框架

加密/解密程序使用 Visual Basic6.0 编制[4],程序界面包括3部分,如图2所示。

(1)加密解密文件选择部分

图1 文件加密解密算法流程图

图2 加密/解密程序界面

用来选择需要加密解密的文件和加密解密后文件的存放位置。需要加密解密的文件类型由其文件的扩展名确定,加密解密后的文件的名字可以改变,扩展名不变。这样做的好处是能够知道加密或解密后的文件类型。

(2)Logistic模型参数的输入部分

用来显示Logistic模型参数输入的说明内容和输入初始条件以及控制参数。改变控制参数和初始条件就可以得到不同的混沌序列。当控制参数和初始条件不同时,即使只有少许差别,初始的混沌序列也截然不同。

(3)命令部分

用来实现加密解密算法,采用混沌序列密码对二进制文件进行加密解密,并存储加密解密的文件。

4.2 运行结果

(1)Word文件的加密和解密

Word文件用途最广,本文首先用编制的加密解密程序对Word文件进行加密和解密。图3是需要加密的原始Word文件的内容,图4是在参数x0=0.5和a=3.8情况下加密后的Word文件打开的情况。由于加密后的Word文件的文件头被破坏,该文件打开后出现了乱码。图5是使用参数x0=0.5和a=3.8解密后的Word文件内容,可见可以用相同的密码来对加密后的文件进行解密。而图6则是使用x0=0.5和 a=3.800001解密后的情况,此时Word文件也不能被打开。因此这时虽然产生解密的混沌序列参数和产生加密的混沌序列参数差别很小,但是由于混沌序列具有对初值敏感的特性,因此解密的混沌序列和加密的混沌序列将完全不同,因此不能对加密的文件进行正确的解密。

图3 需要加密的原始Word文件

图4 加密后的Word文件(a=3.8)

图5 解密后的Word文件(a=3.8)

图6 解密后的Word文件(a=3.800001)

(2)文本文件的加密和解密

该程序还可以对文本文件进行加密和解密。图7是需要加密的原始文本文件的内容,图8是在参数x0=0.51和a=3.81情况下的加密后的文本文件打开的情况。由于文本文件没有文件头,因此加密后的文本文件也可以用记事本程序打开,但是打开后的文件内容是乱码。图9是使用参数x0=0.51和a=3.81解密后的文本文件内容,可见可以用相同的密码来对加密后的文件进行解密。而图10则是使用x0=0.51和a=3.80解密后的情况,此时文本文件也是乱码,因为此时解密的密码序列和加密的密码序列不相同,因此不能正确地对加密的文件进行解密。

该程序还能对其他类型的文件进行加密和解密,并且只有输入正确的密码才能够解密,否则密码不正确,就不能正确地解密。

4.3 方法优点

图7 需要加密的原始文本文件

图8 加密后的文本文件(a=3.81)

图9 解密后的文本文件(a=3.81)

图10 解密后的文本文件(a=3.80)

本文的加密解密方法具有如下优点:(1)通用性。本加密解密方法,直接读取文件的二进制信息,然后再对二进制信息进行加密解密,因此使用本方法,可以对任何类型的文件进行加密和解密。(2)相等性。加密方法使用密码对二进制信息进行加密,加密后的信息和原信息大小相等,因此加密后的文件和原文件的大小相等。解密后的文件也和原文件大小一样。(3)保密性。使用该方法对计算机信息进行加密,在对文件数据进行加密的同时,也对文件扩展名、文件类型、有效内容长度等文件头信息进行加密。因此加密方法破坏了原文件的文件头,加密后的文件是不能被计算机识别的。只有通过解密以后,才能还原原文件的文件头信息和文件内容信息,才能够被计算机读入。(4)敏感性。从程序的运行结果可以看出,只有知道Logistic模型的控制参数和初始条件,才能够得到准确的混沌序列,才能够对加密的文件进行解密。若控制参数或初始条件有少许差别,都不能正确解密加密后的图像。这也正是混沌序列对参数敏感性的反映。由于混沌序列不具有周期性,因而加密后的计算机文件不能按照常规的解密方式来破译。

5 结论

本文基于计算机文件存储的二进制形式,通过二进制形式读取文件信息,使用Logistic映射产生混沌序列,作为加密解密的密码,利用Visual Basic 6.0编程实现了文件的通用加密解密方法。该程序可以用来对任何类型的计算机文件进行加密和解密。利用本文的程序可以对计算机信息进行加密解密,能够达到保护文件信息的目的。

[1]Mike Shema.反黑客工具箱(第3版)[M].余杰,黄彩霞,译.北京:清华大学出版社,2009.

[2]舒斯特H.混沌学引论[M].朱宏雄,林圭年,译.成都:四川教育出版社,2010.

[3]卢开澄.计算机密码学:计算机网络中的数据保密与安全[M].北京:清华大学出版社,2003.

[4]柳青,刘渝妍,何文华.Visual Baisc程序设计教程[M].北京:高等教育出版社,2004.

猜你喜欢

二进制解密密码
密码里的爱
用二进制解一道高中数学联赛数论题
炫词解密
解密“一包三改”
炫词解密
有趣的进度
二进制在竞赛题中的应用
密码抗倭立奇功
密码藏在何处
二进制宽带毫米波合成器设计与分析