前言
1977年,美国国家标准局,即现在的美国国家标准与技术研究院(NIST)发布了数据加密标准(DES),这是地球上第一个用于文本信息加密的标准(为美国政府服务)。由于DES的密钥长度仅为56位,20世纪末的个人计算机已经可以在有限的时间内借助穷举密钥方法破译DES。于是2002年,NIST发布了高级加密标准(AES)取代DES。AES的密钥长度可以取128位、192位或256位,至今仍然为文本信息的加密标准。
然而,在数字图像加密方面,全球仍然没有一个标准密码算法,同时也没有衡量图像密码算法优劣的一系列标准指标。有些学者认为基于文本数据的AES算法不适合于数字图像加密,由于数字图像具有数据量巨大、信息冗余度大、相邻像素点相关性强等特点,AES用于数字图像加密可能存在加密速度慢、加密效果差的缺点。事实上,这种观点忽视了AES的强大数据加密能力。本书首先从DES和AES算法的阐述开始,详细分析了这两种数据加密算法应用于图像加密时的性能特点;然后以基于AES的图像密码算法的性能为比较基准,研究了3种基于混沌系统的图像密码算法。
全书内容共分为7章。
第1章首先回顾了图像密码技术的研究历程,按时间顺序,从Shannon关于保密通信的杰作开始,一直阐述到本书截稿时图像密码算法的最新研究成果;然后展示了本书使用的灰度图像以及3个软件平台,即MATLAB、Eclipse C和Visual Studio。其中,Eclipse C用于C语言开发,第2章的DES使用了C语言;而Visual Studio用于C#语言开发,全部章节的图像密码算法均使用了C#语言。
第2章首先详细介绍了DES算法结构及其实现方法,然后介绍了TDES(三重数据加密标准)算法及其在图像加密方面的应用技术,并给出了MATLAB、C语言和C#语言工程。一般地,由于MATLAB库函数丰富,所以MATLAB常用于图像密码算法快速实现,但是,MATLAB程序是解释执行的(MATLAB库函数除外),故MATLAB程序不能用于客观地评价图像密码算法的执行效率;C语言是比较图像密码算法执行速度的最佳语言,但是C语言程序调试复杂且图形界面设计难度大;C#语言的执行效率较C语言稍差,但是基于面向对象技术,程序健壮,本书借助C#语言评价图像密码算法效率。
第3章首先深入分析了AES算法的实现技术,并设计了其MATLAB和C#实现代码,接着,基于AES设计了两种图像密码系统,即AES-S和AES-D。AES-S系统是基于CBC模式使用AES加密大数据的标准结构。AES-D系统包含两个AES-S系统,实现了图像分块的双向加密处理。此外,附录B介绍了优化的AES图像加密MATLAB代码。
第4章在第3章的基础上,即以基于AES的图像密码系统(AES-S和AES-D系统)为例,从图像加密/解密速度、密钥空间、信息熵、统计特性(包括相关性分析与直方图分析)和敏感性分析(包括密钥敏感性分析、明文敏感性分析和密文敏感性分析)等方面讨论图像密码系统的性能评价方法,并在本书使用的计算机配置下给出“优秀最低速度标准”和“合格最低速度标准”的定义方法及其数值,以衡量图像密码系统的加密/解密速度。
第5章研究了一种典型的明文关联的图像密码系统(PRIC),其由两个明文无关的扩散模块和一个明文关联的置乱模块组成,采用了“扩散—置乱—扩散”的系统结构。通过设计PRIC系统的MATLAB程序和C#程序,详细分析了PRIC的安全性能,并得出PRIC是一款优秀的图像密码系统的结论。
第6章研究了一种加密算法与解密算法共享的新型图像密码系统EADASIC。在EADASIC系统中,加密算法(含密码发生器)与解密算法(含密码发生器)完全相同,因此,EADASIC系统输入为明文图像和密钥时,输出为密文图像;而输入为密文图像和密钥时,输出为还原后的明文图像。在详细介绍EADASIC系统结构和算法的基础上,设计了其MATLAB程序和C#程序,并详细分析了其安全性能。仿真结果表明,EADASIC系统(含密码发生器)的执行速度高于“优秀最低速度标准”,而EADASIC系统(不含密码发生器)的执行速度超过了30Mb/s。EADASIC系统是一种高速图像密码系统。
第7章介绍了一种重要的新型图像密码系统,即融合了公钥和私钥的新型图像密码系统PKPKCIC,现有的图像密码系统大都隶属于对称密码系统,即通信双方共享相同的私钥(即私密钥),加密处理和解密处理均由私钥出发生成密码矩阵,然后进行加密和解密处理。一般地,通信双方约定的私钥将在一定时间内持续使用,这使得已知/选择明文或已知/选择密文攻击成为可能。融合公钥与私钥的新型图像密码系统中,每次加密使用不同的公钥,公钥与密文一起通过公共信道发送到接收方,公钥借助私钥生成密码矩阵,密文图像对公钥极其敏感,从而可以挫败各种被动攻击,或者说,使得各种密码分析方法的效率与穷举密钥方法相当。在详细介绍PKPKCIC系统算法的基础上,设计了其实现的MATLAB程序和C#程序,详细分析了其安全性能(包括公钥敏感性分析),证实了PKPKCIC系统是一种优秀的图像密码系统。
本书是《混沌数字图像加密》(清华大学出版社,2016)的姊妹篇。在《混沌数字图像加密》中详细阐述了分级密钥图像密码算法、明文关联图像密码算法、明文关联置乱加密算法、加密与解密共享密码算法等,且算法均基于MATLAB语言实现。本书第5章基于《混沌数字图像加密》第5.3节的图像密码算法,并基于C#语言进行了算法实现。本书第6章和第7章是全新的图像密码算法。值得一提的是,本书使用的具体的混沌系统只是代表,可以选用任何能产生优秀伪随机序列的混沌系统替代本书中算法使用的混沌系统(密码发生器算法需要做相应的调整)。此外,书中的MATLAB程序、C语言工程和C#程序都是完整的代码呈现,本书使用巧妙的方法组织各个程序,使其成为一个层层独立可运行又逐层关联叠加完整的工程。
需要强调的是:全书仿真使用的计算机配置为Intel Core i7-4720HQ四核处理器(主频为2.60GHz)、32GB DDR3L 1600MHz内存、128GB SSD固态硬盘、Windows 10(64位)操作系统,使用的软件包括Eclipse C/C++(MinGW编译器)、Visual Studio 2017(社区版)、MATLAB R2016a(版本号:9.0.0.341360,64位)、Mathematica 11、Word 2017、Visio 2017和福昕PDF阅读器等。书中的算法均由MATLAB和C#语言实现,针对DES密码算法设计了C语言的实现代码,由于篇幅所限,书中的C#项目仅包含算法的加密与解密处理部分(算法性能分析可参考MATLAB代码)。感谢这些优秀的数学软件、程序设计软件和文档编辑软件。数学家C.Moler的Experiments with MATLAB和程序设计大师P.Deitel、H.Deitel父子的Visual C#2012 How to Program对作者也有很大的帮助。
本著作由国家自然科学基金(编号:61762043,61562035,61702238)、江西省自然科学基金(编号:20161BAB202058)和江西省教育厅科学技术研究项目(编号:GJJ160426)资助出版,特此真挚鸣谢。
特别感谢江西财经大学罗良清教授、江西财经大学钟元生教授、南昌大学周南润教授、华东交通大学汤鹏志教授、江西财经大学党建武教授、广东海洋大学叶国栋教授、湘潭大学李澄清教授,以及我的两位授业恩师洪时中教授与陈天麒教授,对我科研工作的指导和对本书出版的大力支持。我的两位授业恩师虽已退休多年,仍然时刻关注着科技发展和学术动态,是我从事科研工作的巨大精神支柱。感谢我的爱人贾晓天老师在烦琐的资料整理上为我节约了大量时间;感谢同事廖汉程博士、胡冬萍博士、唐颖军博士和吴文华副教授等在科研工作上的共识、讨论与支持;感谢清华大学出版社赵凯编辑的细致工作。
本书在回顾图像密码技术研究领域时引用了大量同行专家、学者的文献,这些参考文献均为该研究领域中颇有影响力且备受关注的研究成果,但是限于篇幅,相信仍有大量重要的文献资料被疏漏(特别是中文文献资料),敬请同行专家、学者谅解。
由于作者水平和能力有限,且该研究领域飞速发展,书中难免有不妥之处,恳请同行专家、学者和读者朋友批评指正。
张勇 于江西财经大学枫林园
2019年1月