回 帖 发 新 帖 刷新版面

主题:新型加密压缩软件的实现

新型加密压缩软件的实现
党怀义 常永亮  
中国飞行试验研究院

[url=http://www.luckst.com/Main/Other/文件加密压缩软件的开发.rar]下载原稿[/url]

摘要:本文介绍了一个作者自行开发研究、具有自主知识产权的新型加密压缩软件。在简单说明了当前加密、压缩技术的发展概况的基础上,主要描述了该新型加密压缩软件的技术方法特点、功能特色、实现流程和关键技术难点。该软件采用专业的加密方法,兼顾专业压缩功能,以寄生加密、自解密加密结合文件分割等特色功能见长,以简单、实用、友好的操作界面等得到了用户较高的评价。随着作者在此方面研究的不断深入,该软件的功能还将得到进一步增强和扩充。
关键词:数据压缩,数据加密,寄生加密,自解密加密

1  引言
计算机技术的飞速发展与互联网应用的广泛普及,促使信息技术普遍第运用于各行各业,不但为经济、政治、军事、文化的发展做出巨大贡献,而且也已经深入到了个人生活的各个层面,安全与保密逐渐成为人们应用计算机系统的一个首要问题。全球性、开放性、共享性、动态性的网络系统应用使得涉及到我们个人隐私、银行账户、商业秘密等重要信息在存储过程中很容易遭到有意或无意攻击与盗取。一旦重要的信息遭到非法窃听、截取,将会给用户的利益造成不可估量的损失,因此,目前信息安全已经成为信息社会面临的严峻挑战。同时,由于信息量的爆炸性增长,对存储和管理也提出了很高的要求。在这种情况下,就需要有一种既能提高信息的有效存储,提高存储效率,又能确保信息安全的强有力的应用软件,为用户充分利用计算机网络系统提供安全保障。
2  新型压缩加密设计
2.1  加密算法与加密软件
密码系统的两个基本要素是加密算法和密钥管理。
加密算法是一些公式和法则,它规定了明文和密文之间的变换方法。由于密码系统的反复使用,仅靠加密算法已难以保证信息的安全了。事实上,加密信息的安全可靠依赖于密钥系统,密钥是控制加密算法和解密算法的关键信息,它的产生、传输、存储等工作是十分重要的。
根据密钥类型不同将现代密码技术分为两类:一类是对称加密(秘密钥匙加密)系统,对称加密系统最著名的是美国数据加密标准DES、AES(高级加密标准)和欧洲数据加密标准IDEA,另一类是公开密钥加密(非对称加密)系统, RSA是Rivest、Shamir和Adleman提出来的基于数论非对称性(公开钥)加密算法。
虽然著名的通用数据压缩软件,例如Winrar、Winzip等在压缩数据信息的同时,具有数据压缩安全密码防护功能,但由于软件本身的应用普遍性和加密算法通用性,已经有许多解密软件来破解加密口令,这种密码防护已经形态虚设。
如何评价加密软件?笔者认为应该从以下几个方面考虑。
a.    加密功能。加密功能是加密软件首要考虑因素。一个出色的加密软件不但可以可靠地给用户硬盘中的各种格式的信息加密,而且还能够提供即时加密,例如电子邮件、剪贴板等,也就是说好的加密软件既要有静态信息加密功能,尤其是电子邮件。通常,好的加密软件还为电子邮件软件提供专门的插件程序,以方便电子邮件的即时加密,还需要有对动态信息的加密功能,这样才能保证用户信息的万无一失。
b.    附加功能。好用的加密软件在提供基本、可靠的加密功能的同时,还提供了其它一些实用的功能,例如保密删除、信息压缩等功能。保密删除可以保证那些不想要的信息从硬盘中彻底抹掉,防止被他人恢复窃取,信息压缩可以提高存储效率。
c.    易用性。对于所有的软件,易用性是十分重要的,加密软件更是如此。易用性不仅仅是指界面的友好,还包括加密效率。面向普通用户,一两分钟就可以学会使用,这就是易用性。加密、解密时间的长短是加密效率的直接体现,让用户从心里上能够接受应用加密软件。
d.    安全性:口令加密是一种原始、简单的加密保护措施,但安全性比起专业、复杂的加密算法就要差许多,商业秘密、金融信息等重要信息的加密都必须使用专业的加密软件。因此,加密软件的实现方法就成为该软件优劣的一个标准之一。
2.2  压缩算法与压缩软件
信息压缩最直接的理解就是利用一种技术把信息表达中的冗余信息剔除,使压缩后的信息基本能够代表未压缩信息,从而提高信息的存储效率。信息的表达基本都存在着一定的冗余度,通过采用一定的模型和编码方法,可以降低这种冗余度。因此,可以说压缩就等于模型(在压缩程序中,用来处理输入信息,计算符号的概率并决定输出哪个或哪些代码的模块叫做模型)加编码(对某一个符号该用多少位二进制数进行编码)。模型和编码两个模块相互是具有独立性,模型又有静态模型和自适应模型。
压缩通常分为有损压缩和无损压缩两种。有损压缩就是压缩后的信息与原信息之间存在一定的差异,无损压缩就是压缩后的信息经过还原过程后,与原信息之间没有任何差异。有损压缩一般用于多媒体压缩,在满足一定压缩比要求的同时,满足人们视觉或听觉感官的完美要求,这两个要求相辅相成,此消彼长,但主要取决于目标存储介质的存储量大小。本文讨论无损压缩。
数据压缩起源于四十年代由 Claude Shannon 首创的信息论,它的基本概念是信息究竟能被压缩到多小?这个概念借用了热力学中的名词“熵”( Entropy )来表示一条信息中真正需要编码的信息量。
D.A.Huffman 于 1952 年第一次发表了他的论文“最小冗余度代码的构造方法”(A Method for the Construction of Minimum Redundancy Codes)。60 年代、70 年代乃至 80 年代的早期,数据压缩领域几乎一直被 Huffman 编码及其分支所垄断。
1977 年,以色列人 Jacob Ziv 和 Abraham Lempel 发表了论文“顺序数据压缩的一个通用算法”(A Universal Alogrithem for Sequential Data Compression)。他们提出的两个压缩技术被称为 LZ77 和 LZ78。简单地说,这两种压缩方法的思路完全不同于从 Shannon 到 Huffman 到算术压缩的传统思路,人们将基于这一思路的编码方法称作“字典”式编码。字典式编码不但在压缩效果上大大超过了 Huffman,而且,对于好的实现,其压缩和解压缩的速度也异常惊人。随后Terry Welch 提出的LZW 算法继承了 LZ77 和 LZ78 压缩效果好、速度快的优点,在算法描述上更容易被人们接受,成为了UNIX 世界的压缩程序标准。
目前,基于字典方式的压缩已经有了一个被广泛认可的标准,从古老的 PKZip 到现在的 WinRAR,特别是随着 Internet 上文件传输的流行,ZIP 格式、RAR格式成为了事实上的标准,没有哪一种通用的文件压缩、归档系统不支持它们。
编写压缩程序往往不能对数据的整个字节进行处理,而是要按照二进制位来读写和处理数据,因此对数据压缩时的速度是比较慢的。算术压缩可以表示小数个二进制位,并由此可以接近无损压缩的熵极限。算术编码实际上采用了化零为整的思想来表示小数个二进制位的。
目前,常用的数据压缩软件实现的是无损压缩,要求压缩比最大,速度最快,单靠某一种压缩算法不能达到理想的结果,它由综合了几种压缩算法因此往往是几个压缩算法共同实现的,单靠一个压缩算法已达不到理想的压缩效果。
2.3  本软件压缩加密的实现
对计算机系统加口令和对文件加锁与对文件加密是有本质区别的。对文件加密是最难破解,几乎是不可能的,也是不可逆的过程。如果密钥丢失,即使软件作者也无能为力。因此,只要是对数据进行加密的软件都对软件自身的可靠性有更高的要求,哪怕是在加密时过程中,如果相对一个字节中的一位发生了错误,加密后的文件都将再无法打开!
本软件采用的加密算法主要为AES算法,是不可逆的。
本软件采用的压缩算法主要是LZ77改进算法,同时结合了其它几种压缩算法,压缩结果为无损压缩。
图1 为软件的加密流程图。解密是加密的逆过程,系统会根据加密文件的类型自动进行解压缩和解密过程。


 
使用本软件对文件或文件夹进行加密后,生成的文件扩展名为cyl。该文件是特定格式文件,只有该软件可以识别并对其进行解密。该软件安装到系统中后,自动设定系统注册表,将cyl文件类型与该软件关联,并在鼠标右键中注册菜单,因此使用非常方便。本软件不对零字节的文件进行加密。在加密压缩库中采用多线程可后台处理。如果在加密的同时选择了“压缩”,压缩和加密同时处理,加密速度稍慢一些。该软件在进行压缩加密时,记忆了原始文件的相关信息,并进行了后台校验,保证加密/压缩、解密/解压过程的准确对应,确保用户数据信息的安全、无误操作。由于该软件采用了复杂加密算法,如果用户忘记了密码,加密文件便无法再解密。
本软件有三种加密方法:一般方式加密、寄生方式加密和自解密方式加密。相对于一般方式加密,寄生方式加密就是在进行加密时,用户可以选择加密寄生文件,那么加密完成后所生成的文件类型和寄生文件是同一类型,也就是说加密文件寄生在宿主文件中。自解密加密最后产生的加密文件是可执行文件,可以脱离本软件自行解密,同时还可以在加密前对加密后的文件设定大小进行文件分割,便于用户通过其它介质转存。每一种加密方式都可以选择是否需要压缩。
由于本软件的操作是通过鼠标右键菜单来进行的,因此,用户如果选择了寄生方式加密,解密时需要先把待解密文件的后缀改为cyl,再用鼠标右键菜单进行解密。
图2  是本软件界面示意图。





 
图2  软件界面示意图
2.4  实现技术难点
a.    对整个文件夹的压缩加密和解密。文件夹下可以包含很多文件和文件夹,而且可以有很多层,在加密的时候就需要同时分析并记录文件夹的结构层次,确保加密的准确性和解密的可靠性。
b.    寄生方式加密的实现。寄生方式加密就是把加密后的文件寄生在宿主文件中,同时不影响宿主文件的使用。例如宿主文件是JPG格式图像文件,待加密文件为一个任意格式的文件,使用寄生加密方式,加密后的文件寄生在JPG图像宿主文件中,加密文件的格式和宿主文件一样也是JPG格式类型,用图片查看器软件打开加密文件即显示出和宿主文件一模一样的图像。采用这种方式加密伪装性非常强,更加隐蔽,加密和解密方法也更加复杂。
3  结束语
虽然我们在日常的应用中,面对很多熟知的压缩软件和加密软件,例如WinRar、WinZip等,这些软件也逐渐成为了当前大家默认的业界应用标准。然而,也正是它们的通用性和普遍性使它们缺乏个性化的应用特色,采用口令保护的方式对压缩文件进行加密也是形同虚设,有许多破解软件都能够轻而易举地获取口令。我们自主开发研制的新型加密压缩软件,经过多层次、多方面的应用测试以及近年来用户的广泛使用,以其专业的加密技术,具有个性特色的寄生加密、自解密加密和文件分割等功能以及友好实用简单的应用界面而得到用户的肯定。可以肯定地说,经过本软件加密的文件,破解的可能性几乎为零。当然,随着作者在加密压缩软件实现技术方面的不断创新应用,同时结合应用反馈来的一些有用信息,必将使该新型加密压缩软件的功能更加强大,更加完善,切实为用户的重要信息提供一道坚不可摧的安全防线。


参考文献
[1]《Windows核心编程》    Microsoft公司〔美〕著
[2]《Microsoft Visual C++ 6.0 程序员指南》    Beck Zaratian〔美〕著
[3]《C常用算法程序集》    徐士良著 

回复列表 (共1个回复)

沙发


我朋友做了一指标软件,想做定向加密,愿付费,不知可否帮忙?

我来回复

您尚未登录,请登录后再回复。点此登录或注册