算法实现
DES 加密,当密钥长度超过64位后,系统将设置第2密钥,并启用3次 DES 加密。其密钥长度可达112位,并且它还具有很强的扩展性,提供了3种加解密接口:文件接口,文件句柄接口(可以供其他加密系统使用,本设计的混合加密模块就是使用这个接口),和内存缓冲区接口。另外它还能检验密钥的正确性,因为加密时,它将加密后的密钥密文也存入文件中,解密时,先用当前密钥解密密钥密文,如果所得的密钥明文与当前密钥相同,则当前密钥应该是正确的。
(3) 本设计的RSA密钥长度最大可达600位16进制数(约合720位10进制数)。 加/解密时你可以从文件中导入密钥。
(4) 本设计产生RSA密钥对的速度非常快,一般在3秒以内。产生后,你可将密钥对导出为文本文件[11]。
27
一种基于现代密码体制的图像加密算法
4 一种基于现代密码体制的图像加密算法
4.1现代密码体制
随着计算机网络不断渗透到各个领域,密码学的应用也随之扩大。密码学是研究如何将可懂的明文变为不可懂的密文的过程(加密过程),以及从不可懂的密文恢复到可懂的明文的过程(解密过程或密码分析过程)。古典密码学中提出的加密方案是一种算法保护的方案,在保密方案安全的情况下,可能收到一定的安全效果,但是,随着保密方案的泄露,被加密信息的安全就没有了安全保证。
抛开算法的复杂度不考虑,现代密码学与古典密码学比较,显著不同之处在于:相对于古典密码学加解密流程(如图4-1所示),现代密码学加解密流程中在加密端和解密端分别多了加密密钥和解密密钥(如图4-2所示)。这样,对于加密的明文信息的保护转变为对密钥信息的保护,从而提高了加密的安全性和加密算法的生命力[12]。
明文 加 密 加密方案 解密方案 密文 解 密 原始明文 图4-1古典密码学加解密流程
明文 加 密 加密 算法 加密 密钥 解密 算法 解密 密钥 密文 解 密 原始明文 图4-2现代密码学加解密流程
现代密码学思想的核心内容是:密码体系的强度不能依赖于对算法内部机制的保密。因为当密码内部机制被有意或无意泄露以后,一个强度高的密码体制还能依靠它的密钥来维持它的安全性,而一个强度依赖算法内部机理的体制,其安
28
一种基于现代密码体制的图像加密算法
全问题难以保证。这是荷兰密码学家 A.Kerckhoffs(1835一1903)最早阐述的原则:密码的安全必须完全寓于密钥之中。
根据密钥类型不同将现代密码体制分为两类:一类是对称密码体制,另一类是非对称密码体制。对称密码体制是加密和解密均采用同一把密钥,算法实现速度极快,因此有着广泛的应用。最著名的是美国数据加密标准DES,AES(高级加密标准)和欧洲数据加密标准IDEA。
非对称密码体制采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。该体制的安全性都是基于复杂的数学难题。RSA系统是最典型的方法,原理简单易于使用。 DSA(Data Signature Algorition)是基于离散对数问题的数字签名标准,它仅提供数字签名,不提供数据加密功能。另外还有安全性高、算法实现性能好的椭圆曲线加密算法 ECC(Elliptic Curve Cryptography)等等。
在实际应用中,非对称密码体制并没有完全取代对称密码体制,这是因为非对称密码体制是基于尖端的数学难题,计算非常复杂,安全性高,但实现速度却远远赶不上对称密码体制。因而非对称密码体制通常被用来加密关键性的、核心的机密数据,而对称密码体制通常被用来加密大量的数据。对于具有大存储量的图像来说,结合对称密码体制的加密方案将是科学的、实用的。在下一节中,我们将提出一种基于AES的数字图像加密方案[13]。 4.2 AES简介 4.2.1 AES的来源
近年来,DES(Data Encryption Standard)已逐渐显现出许多不足之处,其安全性受到了挑战。NIST(National Institute of Standards and Technology)于1999年发布了一个新版本的DES标准,该标准指出DES仅能用于遗留的系统,同时3DES将取代DES成为新的标准。然而,3DES的根本缺点在于用软件实现该算法的速度比较慢。3DES中轮的数量三倍于DES中轮的数量,故其速度慢得多。另外,DES和3DES的分组长度均为64位。就效率和安全性而言,分组长度应该更长。
一种新的、安全强度高、适合软硬件实现的高效加密标准一高级数据加密标准AES应运而生。2000年10月,美国国家标准和技术协会宣布从15种候选算法中选取出Rijndael算法,作为新的对称加密算法标准,称为AES。Rijndael的作者是比利时的密码学家 Joan Daemaen博士和VincentRijmen博士[15]。
29
一种基于现代密码体制的图像加密算法
4.2.2 AES算法描述
AES算法的加密、解密流程图如图4-3所示。 位变换 轮密钥10 轮密钥 行移位 位变换 行移位 轮密钥 128bit密文 轮密钥 轮密钥 位变换 位变换 初始密钥 轮密钥1 初始密钥 128 bit明文 128 bit明文 第1行移位 轮密钥2 列混合 行移位 第1轮轮 列混合 加密流程解密流程可见,在解密时,只需将所有操作的逆变换逆序进行,并逆序使用密钥编排方案即可。而AES算法有其特殊性,即解密本质上和加密有相同的结构,因而存在“等价逆密码”,这个“等价逆密码”能通过原变换的一系列逆变换来实现AES算法的解答,这些逆变换按与AES算法加密相同的顺序进行。只是密钥扩展有所不同,即先应用原密钥扩展,再将InvMixColumns应用到除第1轮和最后一轮外的
第10第10轮轮 128bit密文 图4-3 AES算法加密解密流程图
30
一种基于现代密码体制的图像加密算法
所有轮密钥上。此解密算法称为直接解密算法。在这个算法中,不仅步骤本身与加密不同,而且步骤出现的顺序也不相同。为了便于实现,通常将唯一的非线性步骤 (SubBytes)放在轮变换的第1步。Rijndael的结构使得有可能定义一个等价的解密算法,其中所使用的步骤次序与加密相同,只是将每一步改成它的逆,并改变密钥编排方案。 4.3 基于AES的数字图像置乱
由于AES算法的状态矩阵是以8-bit(Byte)为单元的4?4矩阵,矩阵元素的值在O至255之间,这与通常所用的图像的灰度相吻合。因此,对于一幅图像,将其数字化后得到一个矩阵,对该矩阵采用AES进行分块处理(不同的图像块在图像中无重叠地排列),即从左上角开始,每4?4分块矩阵用AES算法加密一次,再将各分块组合,则可以得到与原来不同的矩阵,从而改变了图像像素的灰度值,达到数字图像置乱的目的。显然,图像的恢复过程即是对各分块矩阵的逆运算过程,也就是对置乱后的图像矩阵每4?4分块用AES算法解密一次。在具体实现的过程中,如果图像矩阵行值或列值不是4的倍数,则在底部或右部补O,使之成为完整分块[14]。
基于以上的分析,下面给出程序基本流程: (1) 图像加密流程
1)给定需要加密的图像X以及初始密钥Sk;
2)用KeyExpansion函数对初始密钥sk进行扩展,计算11轮密钥key; 3)读入图像信息存入矩阵X中P??pij?n?m,pij??0,1,?,255?;
4)对矩阵X的每4?4分块采用AES算法加密一次,将结果存入原分块; 5)输出加密图像tX。 (2) 图像解密流程
1)得到加密图像tX,以及密钥;
2)用KeyExpansion函数对初始密钥Sk进行扩展,计算H轮密钥key; 3)读入图像信息存入矩阵X中P??pij?n?m,pij??0,1,?,255?;
4)对矩阵tX的每4?4分块采用AES算法解密一次,将结果存入原分块; 5)输出解密图像。
31