图像加密与实现

更新时间:2024-05-27 15:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

图像加密与实现

Abstract

II

目 录

目 录

1 绪论 .............................................................. 1 1.1 研究背景 ...................................................... 1 1.2 研究方法 ...................................................... 1 1.3 研究内容 ...................................................... 2 2 关键技术 .......................................................... 3 2.1 报文摘要技术 .................................................. 3 2.1.1 单向散列函数 .............................................. 4 2.1.2 单向散列函数技术 .......................................... 4 2.2 数字图像技术 .................................................. 5 2.2.1 数字水印的概念 ............................................ 5 2.2.2 数字水印的要求 ............................................ 6 2.2.3 数字水印的原理及其通用模型 ................................ 6 2.3 数字图像加密技术 .............................................. 8 2.3.1 数字图像加密的原理与通用模型 .............................. 8 2.3.2 数字图像加密的典型算法 .................................... 8 3 算法实现 ......................................................... 11 3.1 采用的算法 ................................................... 11 3.2 算法流程图 ................................................... 12 3.3 报文摘要提取 ................................................. 12 3.4 数字图像水印 ................................................. 17 3.4.1 位图的位面 ............................................... 17 3.4.2 LSB算法模型 ............................................. 17 3.4.3 LSB算法的实现 ........................................... 18 3.5 混合加密 ..................................................... 19 3.5.1 DES算法 ................................................. 19 3.5.2 RSA公开密钥密码体制 ..................................... 25 3.5.3 混合加密的实现 ........................................... 26 4 一种基于现代密码体制的图像加密算法 ............................... 28 4.1现代密码体制 ................................................. 28

III

目 录

4.2 AES简介 ...................................................... 29 4.2.1 AES的来源 ............................................... 29 4.2.2 AES算法描述 ............................................. 30 4.3 基于AES的数字图像置乱 ....................................... 31 4.4 实验结果与分析 ............................................... 32 4.4.1 图像的置乱效果 ........................................... 32 5 总结 ............................................................. 33 参考文献 ........................................................... 34 致谢 ............................................................... 35

IV

绪 论

1 绪论

1.1 研究背景

随着Internet技术与多媒体技术的飞速发展,数字化信息可以以不同的形式

在网络上方便、快捷地传输。多媒体通信逐渐成为人们之间信息交流的重要手段。人们通过网络交流各种信息,进行网上贸易等。因此,信息的安全与保密显得越来越重要。信息的安全与保密不仅与国家的政治、军事和外交等有重大的关系,而且与国家的经济、商务活动以及个人都有极大的关系。随着信息化社会的到来,数字信息与网络已成为人们生活中的重要组成部分,他们给我们带来方便的同时,也给我们带来了隐患:敏感信息可能轻易地被窃取、篡改、非法复制和传播等。因此信息安全已成为人们关心的焦点,也是当今的研究热点和难点。

多媒体数据,尤其是图像,比传统的文字蕴涵更大的信息量,因而成为人类社会在信息利用方面的重要手段。因此针对多媒体信息安全保护技术的研究也显得尤为重要,多媒体信息安全是集数学、密码学、信息论、概率论、计算复杂度理论和计算机网络以及其它计算机应用技术于一体的多学科交叉的研究课题。 1.2 研究方法

多媒体信息安全技术的研究主要有两种方法:多媒体信息加密和多媒体信息

隐藏技术。

多媒体信息加密技术:我们可以把多媒体数据作为文本数据流一样看待,使用传统的加密算法进行加密。传统的加密方法如DES、3-DES 或RSA等也能满足多媒体应用中的要求。然而,新型的多媒体应用就需要新的数据加密技术。近年来,在这方面的研究取得了一些成果,主要针对视频数据和图像数据。 多媒体信息隐藏技术:密码学技术仅仅隐藏了了信息的内容,而信息隐藏技术不但信息的内容而且隐藏了信息的存在。广义上的信息隐藏技术包括隐写术,数字水印,数字指纹,隐蔽信道,阈下信道,低截获概率通信和匿名通信等,狭义上的信息隐藏技术通常指隐写术与数字水印。其中,数字水印技术在图像论证方面有较广泛的应用。

信息加密与信息隐藏从不同的角度保证信息的安全,如果我们将信息加密与信息隐藏有机地相结合,可进一步提高信息的安全性。

1

绪 论

1.3 研究内容

数字图像比声音、文字等蕴涵更多的信息,因而在多媒体信息中占有举足轻

重的地位,数字图像信息安全是多媒体信息安全的重要组成部分。因此本文以数字图像为基础,研究数字图像信息安全技术。图像信息安全技术包括图像加密和图像认证等。

2

关键技术

2 关键技术

本课题旨在分析数字图像的结构和特点,对数字图像进行加密和解密,即:利用一定的算法对一副图像进行加密以达到不暴露原始图像的目的,然后进行解密以达到恢复原始图像的目的。同时,为了鉴别出图像是否被篡改,要求满足图像认证的要求。认证的目的是检测对图像数据的修改,以确定载体信息的完整性和真实性。可用易碎水印和报文摘要来实现图像认证。虽然只用报文摘要也能达到图像认证的目的,这种方法认证的精确度比较高,但是在传输过程中难免会受到噪声等的干扰,故使用报文摘要可能会达不到预期的目的,同时,因为数字水印也有图像认证的功能,因此,本系统采用报文摘要结合易碎水印来实现该目的。 2.1 报文摘要技术

在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中

的篡改和伪造和则要用报文鉴别的方法。报文鉴别是这样一种过程,它使得通信的接收方能够验证所收到的报文的真伪。

近年来,广泛使用报文摘要MD进行报文鉴别。发送端将可变长度的报文m经过报文摘要算法后得出固定长度的报文摘要H(m)。然后对H(m)进行加密,得出EK(H(m)),并将其追加在报文m后面发送出去。接收端将EK(H(m))解密还原为H(m),再将收到的报文进行摘要运算,得出的是否为此 H(m)。如不一样,则可断定收到的报文不是发送端发送的。

报文摘要是多对一的单向散列函数的例子。要做到不可伪造,报文摘要算法必须满足以下两个条件:

(1)任给一个报文摘要值x,若想得到一个报文y使得H(y)=x,则在计算上是不可行的。

(2)若想找到任意两个报文x和y,使得H(x)=H(y),则在计算上是不可行的。

上述的两个条件表明:若(m, H(m))是发送者产生的报文和报文摘要对,则攻击者不可能伪造出另一个报文y,使得y与x具有同样的报文摘要。发送者可以对进行数字签名,使报文成为可检验的和不可抵赖的[2]。

3

关键技术

2.1.1 单向散列函数

要设计一个接收任意长度输入的函数特别是单向散列函数是很困难的事,在

实际中,单向散列函数建立在压缩函数的想法上。给定一长度为m的输入,单向函数输出长为n的散列值。压缩函数的输入是消息分组和文本前一分组的输出。输出是到该点的所有分组的散列,即分组Mi的散列为:

Hi?f?Mi,hi?1? 公式(2-1)

该散列值和下一轮消息分组一起,作为压缩函数下一轮的输入。最后一分组的散列就成为整个消息的散列。散列的信息应该包含整个消息长度的某种二进制表示。这种方法能消除由不同长度的消息可能会具有相同的散列值所带来的潜在的安全问题,这种技术有时称之为增强的MD。 2.1.2 单向散列函数技术

目前的单向散列技术主要有以下几种: (1)Snetru算法

Snetru算法是Rslph Merkle设计的一种单向散列函数,它将任意长度的消息散列成128或256位的值。首先将消息分成为512-m的分组(m是散列值的长度)。若输出是128位散列值,则每分组384位长;若输出是256位散列值,则分组256位长。

(2)N-Hash 算法

N-Hash是由日本电话电报公司的研究人员发明的,他们曾于1990年发明了FEAL。N-Hash使用128位消息分组及一个与FEAL类似的复杂随机函数,并产生128位散列值。每个128位分组的散列是这一分组和上一分组的散列的函数。整个消息的散列是最后一个消息分组的散列。随机初始值I可以是用户设置的任意值(甚至为全零)。

(3)MD4算法

MD4是Ron Rivest设计的单向散列函数,MD表示消息摘要,对于输入消息,算法产生128位散列值(或消息摘要)。

(4)MD5算法

MD5是MD4的改进版,它比MD4更复杂,但设计思想相似,并且也产生128位散列。在一些初始化处理之后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成

4

关键技术

一个128位散列值。

(5)安全散列算法

NIST NSA一道设计了与DDS一起使用的安全散列算法SHA,SHA是用于标准的算法,该标准规定一种保证数字签名算法(DSA)安全所必需的安全散列算法(SHA)。当输入是长度小于264位的消息时,SHA产生一称为消息摘要的160位输出,然后将该摘要输入到用于计算消息签名的DSA中。SHA基于的原则与MIT的Ronald L Rivest 教授在设计MD4消息摘要算法时所用的原理相似,并且模仿了该算法。

(6)几种算法的比较

Snefru的安全性取决于可逆分组密码函数E,它用几轮运算使数据随机化。对于轮数少于八的Snefru,已被证明是不安全的,最近,Merkle 建议使用至少八轮的Snefru,但是如此多轮的算法比MD5或SHA要慢得多。N-Hash算法已被证明不安全 。MD5是MD4的改进版,安全性更高,更难于被破译。SHA 算法主要是与数字签名算法一起使用的安全散列算法,与MD4非常相似,主要的改变是添加了扩展转换,并且为产生更快的雪崩效应而将上一轮的输出送至下一轮。本课题使用单向散列函数的目的是为了实现图像认证,故选用安全性较高的MD5算法[4]。 2.2 数字图像技术 2.2.1 数字水印的概念

日程生活中为了鉴别纸币的真伪,人们通常将纸币对着光源,会发现真的纸

币中有清晰的图像信息显示出来,这就是我们熟悉的“水印”。之所以采用水印技术是因为水印有其独特的性质:第一,水印是一种几乎不可见的印记,必须放置于特定环境下才能被看到,不影响物品的使用;第二水印的制作和复制比较复杂,需要特殊的工艺和材料,而且印刷品上的水印很难被去掉。因此水印常也被应用于诸如支票、证书、护照、发票等重要印刷品中,长期以来判定印刷品真伪的一个重要手段就是检验它是否包含水印。

借鉴普通水印的含义和功能,人们采用类似的概念保护诸如数字图像、数字音乐这样的多媒体数据,因此就产生了“数字水印”的概念。所谓“数字水印”是往多媒体数据中添加的某些数字信息,比如将在数码相片中添加摄制者的信息,在数字影碟中添加电影公司的信息等等。与普通水印的特性类似,数字水印在多媒体数据中(如数码相片)也几乎是不可见的,也很难被破坏掉。因此数字水印

5

关键技术

在今天的计算机和互联网时代大有可为[1]。 2.2.2 数字水印的要求

数字水印是往多媒体数据(如图像、声音、视频信号等)中添加某些数字信

息以达到图像认证等作用。在绝大多数的情况下,我们希望添加的信息是不可察觉的,并且希望攻击者在不破坏数据本身质量的情况下无法将水印去掉。同时,在嵌入水印的过程中,我们又不可以破坏原来的文件,即不能让人们发觉水印的存在,因此,不可见性是数字水印的首要要求。

鲁棒性问题对数字水印同样非常重要。有效的数字水印应该能够承受大量不同的物理和几何失真,包括有意的(如恶意攻击)或无意的(如图像压缩,滤波、扫描与复印,噪音污染、尺寸变化等等)。显然在经过这些操作后,鲁棒的水印算法应仍能从水印图像中提取出嵌入的水印或证明水印的存在。若攻击者试图删除水印则将导致多媒体产品的彻底破坏。因此,我们还需要达到鲁棒性的要求。 2.2.3 数字水印的原理及其通用模型

从图像处理的角度看,嵌入水印信号可以视为在强背景下迭加一个弱信号,只要迭加的水印信号强度低于HVS的对比度门限,HVS就无法感到信号的存在。对比度门限受视觉系统的空间、时间和频率特性的影响。因此,通过对原始图像作一定的调整,有可能在不改变视觉效果的情况下嵌入一些信息。从数字通信的角度看,水印嵌入可理解为在一个宽带信道(载体图像)上用扩频通信技术传输一个窄带信号(水印信号)。尽管水印信号具有一定的能量,但分布到信道中任一频率上的能量是难以检测到的。水印的译码(检测)则是一个有噪信道中弱信号的检测问题[3]。

设载体图像为I,水印信号为W,密钥为K,则水印嵌入可用公式(2-2)描述。

Iw?F?I,W,K? 公式(2-2)

式中F表示水印嵌入策略(算法).水印的嵌入过程如图2-1所示。 有两种常用的水印嵌入公式:

ViViw?Vi?aWi

?Vi?1?aWi? 公式(2-3)

w

6

关键技术

密 钥 水印信息 载体信息 水印嵌入算法 含水印 载体信息 图2-1 水印信号嵌入

其中Vi,Viw分别表示载体图像像素和嵌入水印的图像像素;Wi为水印信号分

量,0≤i≤K;α为强度因子。为了保证在不可见的前提下,尽可能提高嵌入水印的强度,α的选择必须考虑图像的性质和视觉系统的特性。

图2-2,图2-3是水印提取与检测流图。图2-2,图2-3中的虚框部分表示在提取或判断水印信号时原始数据不是必要的。

在某些水印系统中,水印可以被精确地抽取出来,这一过程被称作水印提取。比如在完整性确认应用中,必须能够精确地提取出插入的水印,并且通过水印的完整性来确认多媒体数据的完整性。如果提取出的水印发生了部分的变化,最好还能够通过发生变化的水印的位置来确定原始数据被篡改的位置。

对于强壮水印,通常不可能精确地提取出插入的原始水印,因为一个应用如果需要强壮水印,说明这个应用很可能遭受到各种恶意的攻击,水印数据历经这些操作后,提取出的水印通常已经面目全非。这时我们需要一个水印检测过程,见图2-3。通常水印检测的第一步是水印提取,然后是水印判决。水印判决的通常做法是相关性检测。选择一个相关性判决标准,计算提取出的水印与指定的水印的相关值,如果相关值足够高,则可以基本断定被检测数据含有指定的水印。从以上论述可以看出,水印提取的任务是从嵌入水印的数据中提取水印信号,而水印检测的任务是判断某一数据内容中是否存在指定的水印信号。另外,水印检测的结果依赖于一个阈值,当相关性检测的结果超过这个阈值时,给出含有指定水印的结论。这实际上是一个概率论中的假设检验问题。当提高相关性检测的阈值时,虚检概率降低,漏检概率升高;当降低相关性检测的阈值时,虚检概率升高,漏检概率降低。所谓虚检(false positive),就是将没有水印信号的数据误认为含有水印信号。所谓漏检(false negative),就是未能从含有水印信号的数据中检测到水印信号。在实际的水印应用中,更注重对虚检概率的控制。

[5]

7

关键技术

水印信息 水印信息提取算法 水印信息 水印信息载体算法 密 钥 水印信息 密 钥 含水印否? 载体信息 原载体信息

图2-2水印信号提取 图2-3水印信号检测

2.3 数字图像加密技术

2.3.1 数字图像加密的原理与通用模型

数字图像加密就是在发送端采用一定的算法作用于一幅图像明文,使其变成

不可识别的密文,达到图像保密的目的。在接收端采用相应的算法解密,恢复出原文。其通用算法模型如图2-4所示。

加密 原文图像 密 文 解密 原文图像 密钥 密钥

图2-4 数字图像加密通用模型

2.3.2 数字图像加密的典型算法

目前国内外对数字图像加密的研究主要采用以下几种方法: (1)基于矩阵变换像素置换的图像加密技术

1)Arnold变换,俗称猫脸变换.设像素的坐标x , y ∈S = {0, 1, 2, ?, N-1},

则Arnold变换为:

?x,??1??? ??y,??1???1??x????modN,x,y??0,1,?,N?1? 公式(2-4) ???2??y? Arnold变换可以看做是裁剪和拼接的过程。通过这一过程将离散化的数字图

像矩阵S中的点重新排列。由于离散数字图像是有限点集,这种反复变换的结果, 在开始阶段S中像素点的位置变化会出现相当程度的混乱,但由于动力系统固有的特性, 在迭代进行到一定步数时会恢复到原来的位置。

2)按幻方做图像像素置乱变换。这种变换实质上是矩阵的初等变换, 并且由

8

关键技术

于幻方矩阵是一有限维矩阵, 经过n次置换, 又会回到原来的位置, 因而也可以用(1)所述的方法加以破译, 固其加密效果也是不好的。但若能把初等矩阵变换转化为某种非线性变换则有可能增强置乱效果, 再结合其它的现代密码学的一些成熟的加密算法如DES,RSA等则可以增加算法的保密性。

(2)基于秘密分割与秘密共享的图像加密技术

秘密分割就是把消息分割成许多碎片, 每一个碎片本身并不代表什么, 但把这些碎片放到一起消息就会重现出来。这种思想用于图像数据的加密上就是在发送端先要把图像数据按某种算法进行分割, 并把分割后的图像数据交给不同的人来保存; 而在接收端需要保存秘密的人的共同参与才能恢复出原始待传输的图像数据。

(3)基于现代密码体制的图像加密技术

这种加密技术就是把待传输的图像看做明文,通过各种加密算法,如DES,RSA 等, 在密钥的控制下,达到图像数据的保密通信。这种加密机制的设计思想是加密算法可以公开,通信的保密性完全依赖于密钥的保密性(即满足Kerckhoffs 假设)。其原理框图如图2-5所示。

密码分析 明文 加 密 (原始图像) (加密图像) 密文 解 密 原始图像 原始明文 [6]

加密密钥 解密密钥

图2-5 密钥控制下的保密通信框图

其中: 加密密钥和解密密钥可以相同也可以不同, 并依此来划分出两种基本的密码算法,即对称算法和非对称算法(也叫公开密钥算法。 基于密钥的算法通常有以下两类:

1) 对称算法

对称算法,又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加解密密钥是相同的。这些算法也叫秘密密钥算法或单钥算法, 它要求发送方和接受方在安全通信之前商定一个密钥。对称算法的安全性完全依赖于密钥, 泄露密钥就意味着任何人都能对消息进行解密。只要通信需要保密,密钥就必须保密。对称算法又可分为两类。一次只对明文中的单个位(或字节)运算的算法称为流密码。另一类算法是对明文的一组位进行运算,

9

关键技术

叫分组密码 ,如IBM的DES算法。

2) 公开密钥算法

即:用作加密的密钥不同于用作解密的密钥,并且解密密钥不能根据加密密钥计算出来。之所以叫做公开密钥算法,是因为加密密钥能够公开,即任何人都能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这种体制中,加密密钥叫做公开密钥,简称公钥。解密密钥叫做私人密钥,简称私钥。利用公钥密码体制进行保密通信时,加密密钥可以公开,只保密解密密钥就能达到保密通信。解密密钥和加密密钥不同,从一个难以推出另一个,其设计规律都是把推算解密密钥的问题等效为一个难以求解的数学问题。通信双方无须事先交换密钥就可建立起保密通信,它解决了通信双方进行保密通信的密钥分配问题。它不需要铺设专门的安全传输线路,也不需要专门信使在通信双方传递密钥,因而可以节约大量费用。在公钥密码体制中, 最重要的有RSA 体制、背包体制、ElGamal体制、Robin 体制、椭圆曲线体制及多维RSA体制等。它们的共同点都是基于陷门单向函数的概念,把问题归结为某一数学难题的求解。其中背包体制在最初提出5年中被认为是安全的,但此算法在20世纪80年代初就被Shamir完全破译了。

10

算法实现

3 算法实现

3.1 采用的算法

近年来,随着国际互联网络与多媒体技术的迅速发展,数字图像己经逐渐克

服了往日因存储量巨大而带来的种种问题,成为信息表达方式的主流,数字图像信息的安全问题成为国际上研究的焦点问题。数字图像具有信息量大、信息表达直观的特点,它的安全保密显然与以往在计算机上所面对的文本数据截然不同。数字图像信息安全保密是结合数学、密码学、信息论、计算机视觉以及其它计算机应用技术的多学科交叉的研究课题。数字图像的加密技术是当代信息安全领域中比较活跃的一个研究方向。它结合了数学、密码学、信息论、计算机视觉以及其它计算机应用技术的多门学科。随着科技的发展,尤其是多媒体技术的发展,出现了更多的、新的图像加密算法,而按照不同的分类标准,图像加密算法还可以作其他不同的分类。

通过阅读一定量的资料了解到该课题目前在国内外的研究状况和相应的发展趋势。经过反复的思考,本课题打算按以下思路着手设计,以求最终能以程序实现该课题。

即:DES和RSA的混合加密算法,先随机产生一个DES密钥,用此密钥加密图像,得到扩展名为.bmp.mcs的文件1,然后采用RSA加密算法对随机产生的DES密钥进行加密将得到的密文加到文件1的文件头里面去。这样如果想得到原文件就必须先破解文件头,而文件头是由RSA加密的,安全性比较高,想破解并不是件容易的事,同时又由于DES加密速度快,适用于大文件的加密,且安全性不高,而RSA加密速度慢,适用于小文件的加密,但安全性很高,两者的结合即满足了速度的要求,又满足了安全性的要求。同时,为了满足图像鉴定的要求,特引进数字水印技术,即:采用一散列函数作用原图像,以提取一报文摘要,然后将此报文摘要作为水印信息嵌入到原始图像中,经加密解密后,再在解密后的图像中提取水印信息,然后判断此水印信息和原报文摘要是否相同,若相同,说明原始图像没有被篡改过,否则说明原始图像已被篡改。

11

算法实现

3.2 算法流程图

RSA加密此密钥 数据流 DES密钥 加密图像 文件头 摘要水印 原始图像 摘要水印 DES加密 加密图像 摘要水印 解密 解密后图像 算法 摘要 作为水印信息 摘要水印 3.3 报文摘要提取

MD5算法是由 Rivest(RSA中的R)于1991年提出的Hash算法。今天已成为最广泛使用的Hash算法。MD5算法并非是Rivest提出的首个Hash 算法,1990年Rivest就已提出了一个Hash算法 MD4,并被接受为标准,MD5算法是MD4算法的改进。MD5和MD4算法都是将消息划分成512位的消息块进行处理,最终形成128位的信息摘要。

实现MD5算法主要经过以下五个步骤: (1) 补位

补位的目标是使输入的消息长度,从任意值变成一个新的长度n,使得n=448(mod512),即通过补位使消息长度差64位成为512的整数倍,即使原消息的长度正好满足要求,也需要进行补位。补位的补丁包括一个1,剩下的全是0,在原消息之后。特别地,如果原消息的长度正好满足要求,则补位包括一个1和512个0。

12

MD5 提取水印对此,看是否一致?以达到图像认证的目的! 摘要

图3-1 算法流程图

算法实现

(2) 追加长度

在追加长度前,通过补位,消息长度已经变成模512余448,接下来的追加长度将在消息后继续补充64位的信息,新消息将是512的整数倍。追加长度的信息由64位表示,被追加到已补的信息后,如果原消息长度超过64位,只使用低64位。追加的长度是原消息的长度,而不是补位后的信息长度。

(3)缓冲区初始化

为了计算Hash函数的结果,需首先设置128位的缓冲区。缓冲区除接受Hash函数最终结果外,还记录中间结果。

在图3-2中,将缓冲区分成4等份,即4个32位寄存器(A,B,C,D),每个32位寄存器也被称为字。 Buffer n Block n 512位A B 128位C D 第一轮 第二轮 M[k] A B C D + CLSS + + 第三轮 第四轮 T[i] CLSS+ + + + 128位+ A B C D

Buffer n+1 图3-2 缓冲区 n->n+1 示意图 图3-3 四轮算法

赋初值:

A: 0x01234567 B: 0x89abcdef

C: 0xfedcba98 D: 0x76543210 ABCD构成 buffer0。 (4)消息迭代

从buffer0开始,进行算法的主循环,循环的次数是消息中512位消息分组

13

算法实现

的数目,将上面四个变量复制到另外的变量中:A到a,B到b,C到c,D到d。主循环有四轮,每轮很相似,每一轮进行16次操作,每次操作对a,b,c 和d中的其中三个作一次线性函数运算,然后将所得的结果加上第四个变量,文本的一个子分组和一个常数,再将所得的结果向右环移一个不定的数,并加上或中之一,最后用该结果取代a,b,c或d中之一。主循环的运算过程见图3-4。

消息分组 A B C D 第一轮 第二轮 第三轮 第四轮 A B C D 图3-4 MD5主循环

在四轮运算中,有四种函数,分别为F(X,Y,Z),G(X,Y,Z),H(X,Y,Z)和I(X,Y,Z):

F(X,Y,Z)=(X and Y) or (not (X) and Z) G(X,Y,Z)=(X and Z) or (Y and not (Z)) H(X,Y,Z)=X xor Y xor Z I(X,Y,Z)=Y xor (X or not(Z))

这些函数是这样设计的:如果 X,Y 和 Z 的对应位是独立和均匀的,那么结果的每一位也应是独立和均匀的。函数 F 是按逐位方式操作:如果 X,那么 Y,否则 Z。函数H是逐位奇偶操作符。

设 Mj 表示消息的第j个子分组(从 0 到 15),<<

FF(a,b,c,d,Mj,s,ti)表示a=b+((a+(F(b,c,d)+ Mj + ti)<<

第1轮:

FF (a, b, c, d, M[ 0], 11, 0xd76aa478);

14

算法实现

FF (d, a, b, c, M[ 1], 12, 0xe8c7b756); FF (c, d, a, b, M[ 2], 13, 0x242070db); FF (b, c, d, a, M[ 3], 14, 0xc1bdceee); FF (a, b, c, d, M[ 4], 11, 0xf57c0faf);

FF (d, a, b, c, M[ 5], 12, 0x4787c62a); FF (c, d, a, b, M[ 6], 13, 0xa8304613); 第2轮:FF (b, c, d, a, M[ 7], 14, 0xfd469501); FF (a, b, c, d, M[ 8], 11, 0x698098d8); FF (d, a, b, c, M[ 9], 12, 0x8b44f7af); FF (c, d, a, b, M[10], 13, 0xffff5bb1); FF (b, c, d, a, M[11], 14, 0x895cd7be); FF (a, b, c, d, M[12], 11, 0x6b901122); FF (d, a, b, c, M[13], 12, 0xfd987193); FF (c, d, a, b, M[14], 13, 0xa679438e); FF (b, c, d, a, M[15], 14, 0x49b40821);

GG (a, b, c, d, M[ 1], 21, 0xf61e2562); GG (d, a, b, c, M[ 6], 22, 0xc040b340); GG (c, d, a, b, M[11], 23, 0x265e5a51); GG (b, c, d, a, M[ 0], 24, 0xe9b6c7aa); GG (a, b, c, d, M[ 5], 21, 0xd62f105d); GG (d, a, b, c, M[10], 22, 0x2441453); GG (c, d, a, b, M[15], 23, 0xd8a1e681); GG (b, c, d, a, M[ 4], 24, 0xe7d3fbc8); GG (a, b, c, d, M[ 9], 21, 0x21e1cde6); GG (d, a, b, c, M[14], 22, 0xc33707d6); GG (c, d, a, b, M[ 3], 23, 0xf4d50d87); GG (b, c, d, a, M[ 8], 24, 0x455a14ed); GG (a, b, c, d, M[13], 21, 0xa9e3e905); GG (d, a, b, c, M[ 2], 22, 0xfcefa3f8); GG (c, d, a, b, M[ 7], 23, 0x676f02d9);

15

算法实现

GG (b, c, d, a, M[12], 24, 0x8d2a4c8a);

第3轮:

HH (a, b, c, d, M[ 5], 31, 0xfffa3942);

HH (d, a, b, c, M[ 8], 32, 0x8771f681); HH (c, d, a, b, M[11], 33, 0x6d9d6122); HH (b, c, d, a, M[14], 34, 0xfde5380c); 第4轮:

HH (a, b, c, d, M[ 1], 31, 0xa4beea44); HH (d, a, b, c, M[ 4], 32, 0x4bdecfa9); HH (c, d, a, b, M[ 7], 33, 0xf6bb4b60); HH (b, c, d, a, M[10], 34, 0xbebfbc70); HH (a, b, c, d, M[13], 31, 0x289b7ec6); HH (d, a, b, c, M[ 0], 32, 0xeaa127fa); HH (c, d, a, b, M[ 3], 33, 0xd4ef3085); HH (b, c, d, a, M[ 6], 34, 0xe4881d05); HH (a, b, c, d, M[ 9], 31, 0xd9d4d039); HH (d, a, b, c, M[12], 32, 0xe6db99e5); HH (c, d, a, b, M[15], 33, 0x1fa27cf8); HH (b, c, d, a, M[ 2], 34, 0xc4ac5665);

II (a, b, c, d, M[ 0], 41, 0xf4292244); II (d, a, b, c, M[ 7], 42, 0x432aff97); II (c, d, a, b, M[14], 43, 0xab9423a7); II (b, c, d, a, M[ 5], 44, 0xfc93a039); II (a, b, c, d, M[12], 41, 0x655b59c3); II (d, a, b, c, M[ 3], 42, 0x8f0ccc92); II (c, d, a, b, M[10], 43, 0xffeff47d); II (b, c, d, a, M[ 1], 44, 0x85845dd1); II (a, b, c, d, M[ 8], 41, 0x6fa87e4f); II (d, a, b, c, M[15], 42, 0xfe2ce6e0); II (c, d, a, b, M[ 6], 43, 0xa3014314); II (b, c, d, a, M[13], 44, 0x4e0811a1);

16

算法实现

II (a, b, c, d, M[ 4], 41, 0xf7537e82); II (d, a, b, c, M[11], 42, 0xbd3af235); II (c, d, a, b, M[ 2], 43, 0x2ad7d2bb); II (b, c, d, a, M[ 9], 44, 0xeb86d391);

(5)输出结果

最后再将a,b,c和d 还原为 A,B,C,和D,将ABCD组合起来,就构成原消息的摘要。

3.4 数字图像水印

为达到达到图像认证的目的,特引入易碎水印来实现。易碎水印对某些变换(如压缩)具有较低的鲁棒性,因而在所有的数字水印应用中,认证水印具有最低级别的鲁棒性要求。鉴于空间域LSB水印模型具有较低的鲁棒性,故本课题采用LSB算法。 3.4.1 位图的位面

在一幅用多比特值表示其灰度的图像来说,其中每个比特可看作表示了一个二值平面,也称作“位面”。1 幅灰度级用8 bit表示的图像有8个位面,一般用0代表最低位面,位面7代表最高位面。

正因为图像具有位面这种性质,在位图数字水印处理的算法中,因为水印往往隐藏在不为人视觉所察觉的位置,这样位面就提供了一种实施的很好方案。水印信息隐藏在这些看似噪声的位置进行处理,其对图像的破坏就不会太大,当然,在加入水印之前,首先要选择好信息具体加入的位面位置,不能将水印信息加入在存在图像视觉信息的位面上,因此,一般的LSB算法中,水印一般加在图像的后4 位。在图像中加入水印信息,最直接想到的方法就是直接修改图像像素的像素值,空间域水印算法就是基于这种思想的。 3.4.2 LSB算法模型

LSB算法采用直接改变图像中像素的最后一位bit值来嵌入水印信息。根据上一节提供的理论,我们可以看出,在图像的后四位嵌入水印信息,一般都不会对图像造成视觉上的影响。因此,后四位均是LSB数字水印的嵌入范围。嵌入水印的过程可以分为两个阶段,其分别为:嵌入过程、提取过程。就整体设计方案而言,可以用下面的模型来概括:

17

[7]

算法实现

原图:也就是原始图像,也是不含有水印信息的图像。 密图:指含有水印的图像。

水印:要嵌入到原始图片中的一段信息,可以是文字,也可以是图像。 水印的基本模型如图3-5所示。

原图 嵌入 密图 水印 图3-5 LSB 水印总体模型

提取 水印 3.4.3 LSB算法的实现

如果在一个256*256 大小的24位“py.bmp”中隐藏了一个文本文件“1.txt”。根据算法的原理,将信息嵌入到图像的最低位上,即每8个位中使用一个位来嵌入水印信息。所以,水印信息大小将可以最大为宿主文件的八分之一。那么,在该大小的位图中可最大可隐藏的字符数为256*256/8=8192个,约汉字4000多个。由此可见,在隐藏信息的容量非常大.算法具体如下:

1)嵌入水印信息

第一步:读入载体文件,并显示它;

第二步:决定载体的LSB 及嵌入的位数,采用嵌入图像中所有像素的最后一位;

第三步:对载体图像做预处理,置其LSB 为0; 第四步:将水印信息以ASCII 码的形式读入,并存储;

第五步:在每一个像素的第LSB 位上,存储水印信息的一个bit ; 第六步:显示嵌入水印信息的图像;

2) 读取水印信息

第一步:读入含有水印信息的图像; 第二步:得到每一个像素点的LSB 位;

第三步:由每 8 个LSB 位组成一个ASCII 还原水印信息; 第四步:将还原的信息进行重新组合,得到水印文件; 第五步:将水印信息显示出来;

这种算法的优点在于简单,方便,嵌入信息量大。但是,其缺点是鲁棒性不

18

算法实现

强,这也正是本课题所需[8]。 3.5 混合加密 3.5.1 DES算法

DES即数据加密标准,最初是IBM的W.Tuchman和C.Meyers等人提出的一个数据加密算法Lucifef,它于1976年被美国国家标准局正式用于商业和政府非要害信息的加密。DES是典型的加解密钥相同的对称密码体制,其优势在于加解密速度快、算法易实现、安全性好。目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在PQS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与PQS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。

DES是分组加密算法,它以64位(二进制)为一组对数据加密,64位明文输入,64位密文输出。密钥长度为 56位,但密钥通常表示为64位,并分为8组每组第8位作为奇偶校验位,以确保密钥的正确性。作

(1) 基于DES算法的数字图像加密

将DES算法用于数字图像加密,可以考虑将图像色彩的二维数据转化为一维数据,对一维数据按64比特为一组进行分组加密。

(2)DES算法概要

1)对输入的明文从右向左按顺序每64位分为一组(不足64位时在高位补0),并按组进行加密或解密。

2)进行初始置换。

3)将置换后的明文分成左右两组,每组32位。

4)进行16轮相同的变换,包括密钥变换,每轮变换如下图3-6所示。

19

算法实现

密钥(56位) Li?1(32位) Li?1(32位) 第6步 第4步 28位循环左移 28位循环右移 32位—48位 扩展置换 第7步 56位—48位 第5步 48位—32位 第8步 S盒代替 压缩置换 第9步 P盒置换 第10步 第11步 Li(32位) Ri(32位) 密钥(56位) 图3-6一轮DES 变换

(3)DES算法加密过程 1) 初始置换

初始置换就是对输入的64位二进制明文P=P1P2?P64 按照矩阵3-1的规则,改变明文P的顺序,矩阵中的数字代表明文在64位二进制序列中的位置。

20

算法实现

矩阵3-1初始置换

? 58 50 42 34 26 18 10 2 ??? 60 52 44 36 28 20 12 4 ??? 62 54 46 38 30 22 14 6 ??? 64 56 48 40 32 24 16 8 ?? ? 57 49 41 33 25 17 9 1 ???? 59 51 43 35 27 19 11 3 ?? 61 53 45 37 29 21 13 5 ????? 63 55 47 39 31 23 15 7 ??

初始置换矩阵中共有8行8列,共64个元素,其元素的排列是有规律的,可以把上面4行和下面4行分成2组,取名为L和R。

2) 明文分组

将置换后的明文,即新的64位二进制序列,按顺序分为左,右两组,每组都是32位。

3) 密钥置换

密钥置换就是按矩阵3-2的规则改变密钥的顺序。

矩阵3-2 密钥置换

? 57 49 41 33 25 17 9 ??? 1 58 50 42 34 26 18??? 10 2 59 51 43 35 27??? 19 11 3 60 52 44 36?? ? 63 55 47 39 31 23 15??? 7 62 54 46 38 20 22??? 14 6 54 46 45 37 29??? 21 13 5 28 20 12 4???? 密钥置换矩阵中共有8行7列,56 个元素。其元素的排列是有规律的,可以把上面4行和下面4行分为2组,取名为KL,KR,由于取消了原64位密钥中的奇偶校验位,在密钥置换矩阵3-2中就不会出现8,16,24,32,40,48,56,64这些数值了。

4) 密钥分组,移位,合并

将置换后的56位密钥按顺序分成左右两个部分KL,KR,每部分27位,根据DES算法轮数(迭代次数),分别将两个部分KL,KR地区循环左移1位或2位,每轮循环左移位数按照密钥移位个数表3-1选取。

21

算法实现

表3-1 每轮密钥循环左移位数

迭代次数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 右移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

例如:KL0=c1c2?c28,KR0=d1d2?d28由于是第1次迭代,循环左移位数是1,所以,KL0=c2c3?c28c1,KR0=d2d3?d28d1,KLKR两组密钥循环左移后,再合并成56位密钥,例如:K1=c2c3?c28c1d2d3?d28d1,合并后 56 位密钥一方面用于产生子密钥,另一方面为下次迭代运算做准备。

5) 压缩置换

按照密钥置换矩阵3-3,从56位密钥中产生48位子密钥。密钥压缩置换矩阵中共有48位元素,在密钥压缩置换表中看不到9,18,22,25,35,38,43,54这8个元素,因为这些元素已被压缩了。

矩阵3-3 密钥压缩压缩置换

? 14 17 11 24 1 5 ??? 3 28 15 6 21 10??? 23 19 12 4 26 8??? 16 7 27 20 13 2??? 41 52 31 37 47 55? ?? 30 40 51 45 33 48??? 44 49 39 56 34 53????? 46 42 50 36 29 32??6) 扩展置换

将原明文数据的右半部分R从32位扩展成48位,扩展置换按照扩展置换矩阵3-4规则进行。

22

算法实现

矩阵3-4 扩展置换

? 32 1 2 3 4 5 ??? 4 5 6 7 8 9 ??? 8 9 10 11 12 13 ??? 12 13 14 15 16 17 ?? ? 16 17 18 19 20 21 ??? 20 21 22 23 24 25 ??? 24 25 26 27 28 29 ????? 28 29 30 31 32 1 ??7) 子密钥和扩展置换后的数据异或运算

将子密钥和扩展置换后的数据按位进行异或运算,然后,将得到的48位结果送到S盒代替。

8) S盒替换

将48位数据按顺序每6位分为一组,共分成8组,并分别输入到S1,S2?S8盒中,每个S盒的输出为4位,再将每个S盒的输出拼接成32位,S盒如图3-7所示。

48位输入 6位 S1 S8 ?????? 4位 32位输出 图3-7 S 盒

DES的S盒的使用方法是:设S盒的输入为6位二进制数 b1b2b3b4b5b6,把 b1 b6这两位二进制数转换成十进制,并作为S盒的行号 i,把 b2b3b4b5这4位二进制数转换成十进制数,并作为S盒的列号j,则对应S盒的(i,j)元素就为S盒的十进制输出,再将该十进制数转换为二进制数,就得到S盒的4位二进制输出。

23

算法实现

S盒替换是DES的核心部分,整个变换过程是非线性的(而DES算法的其它变换都是线性的),提供了很好的混乱数据效果,比DES算法其它步骤提供的安全性更好。

9) P盒置换

将S盒输出的32位二进制数据按P盒置换矩阵3-5进行置换。

矩阵3-5 P盒置换

? 16 7 20 21 29 12 28 17 ??? 1 15 23 26 5 28 31 10 ?? ? 2 8 24 14 32 27 3 9 ???? 19 13 30 6 22 11 4 25 ?例如:将S盒输出的第16位变换成第1位,S盒输出的第1位变换成第9位。 10)P盒输出与原64位数据进行异或运算

将P盒输出的32位二进制与原64位数据分组的左半部分Li进行异或运算,得到分组的右半部分Ri。

11)Ri-1-Li

将原分组的右半部分Ri-1作为分组的左半部分Li。 12)重复4—11步,循环操作16轮。 13)逆初始置换

经过16轮的DES运算后,将输出的L16,R16合并起来。形成64位的二进制数,最后按照逆初始置换矩阵3-6进行逆初始置换,就可以得到密文[9]。

矩阵3-6 逆初始置换

? 40 8 48 16 56 24 64 32 ??? 39 7 47 15 55 23 63 31 ??? 38 6 46 14 54 22 62 30 ??? 37 5 45 13 53 21 61 29 ?? ? 36 4 44 12 52 20 60 28 ??? 35 3 43 11 51 19 59 27 ??? 34 2 42 10 50 18 58 26 ????? 33 1 41 9 49 17 57 25 ??(4)DES算法解密过程

DES算法加密和解密过程使用相同的算法,并使用相同的加密密钥和解密密钥,两者的区别是:

1) DES 加密时是从L0,R0到L15,R15进行变换,而解密时是从L15,R15

24

算法实现

到L0,R0进行变换的。

2) 加密时各轮的加密密钥为K0K1?K15,而解密时各轮的解密密钥为K15K14?K0。

3) 加密时密钥循环左移,而解密时循环右移。 (5)三重DES 算法

为了提高算法的安全强度,本课题采用三重DES加密,它的基本方法是:用两个密钥对一个分组进行三次加密,即加密时,先用第一个密钥加密,然后用第二个密钥解密,最后再用第一个密钥加密。解密时,先用第一个密钥解密,然后用第二个密钥加密,最后再用第一个密钥解密。相关图示如下图3-8所示。

加密

DES DES DES 明文 K1 K2 K3 密文 DES DES DES 解密

图3-8 三重DES

3.5.2 RSA公开密钥密码体制

原理:根据数论,寻求两个大素数比较简单,而把两个大素数的乘积分解则极其困难。在这一体制中,每个用户有两个密钥:加密密钥pk={e,n},和解密密钥 sk={d,n}。用户把加密密钥公开,使得任何其它用户都可以使用。而对解密密钥中的d 则保密[10]。

这里,n为两个大素数p和q的乘积(素数p和q一般为100位以上的十进制数)。e和d 满足一定的关系.当敌手已知e 和n 时并不能求出d。

(1)加密算法

若用整数X表示明文,用整数Y表示密文(X 和Y 均小于n ),则加密和解

25

算法实现

密运算为:

加密:Y?Xemodn

解密:X?Ydmodn 公式(3-1)

(2)密钥的产生 1)计算n 。

用户秘密地选择两个大素数p和q,计算出n=pq,n 称为RSA算法的模数,明文必须用小于n 的数来表示,实际上n 是几百比特长的数。加密消息m 时,首先将它分成比n小的数据分组(采用十六进制数,选取小于n 的16 的最大次幂),也就是说,p和q为 100 位的素数,那么n 将有 200 位,每个消息分组m 应小于200位长(如果需要加密固定的消息分组,那么可以在它的左边填充一些0 并确保该数比n小)。加密后的密文c,将由相同长度的分组ci组成。

加密公式简化为: ci?mie?modn? 公式(3-2) 解密时,取每一个加密后的分组ci并计算:

dmi?ci?modn? 公式(3-3)

2)计算??n?。用户再计算出n的欧拉函数,即:

??n???p?1???q?1?.??n? 公式(3-4)

3)选择e。从?0,??n??1?,中选择一个与??n?互素的数e作为公开的加密指数。

4)计算d。用户计算出满足下式的d:ed?1mod??n? 作为解密指数,得出: d?e?1mod??p?1??q?1?? 公式(3-5) 5)得出所需要的公开密钥和私有密钥。

公开密钥 (即加密密钥) pk??e,d? 私有密钥 (即解密密钥) sk??d,n? 3.5.3 混合加密的实现

本设计使用 DES 作为对称密钥算法加密原图像,使用RSA作为公开密钥算法加密DES密钥。本设计特点如下:

(1) 提供了两个加密接口.混合加密,DES加密。

(2) 本设计的DES可以进行1次DES加密(标准DES加密)和3次DES加密。它会根据密钥长度,自动选择加密方案。当密钥长度在64位以内时它将使用标准

26

算法实现

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

一种基于现代密码体制的图像加密算法

4.4 实验结果与分析 4.4.1 图像的置乱效果

采用上面介绍的方法进行图像置乱,效果如图4-4所示。

(a)原图 (b)置乱图(3轮AES)

(c)置乱图(11轮AES) (d)复原图(3轮、11轮AES)

图4-4 图像置乱与恢复

可见,只需应用3轮的AES即可达到很好的置乱效果。AES算法在设计时己经考虑了差分攻击与线性攻击(例如,S盒构造中有限域逆操作的使用导致了线性逼近和差分分布表中的各项趋近于平均分布),因此4轮以上的AES对差分攻击和线性攻击基本上是免疫的。因而在图像置乱时,可以根据实际需要采用一定轮数的AES进行图像加密。

32

总 结

5 总结

通过以上的综述我们可以看出,图像加密后的安全性是相对于密钥长度而言的,密钥长度越长,破译就越麻烦,安全性就越高。当对一幅加密图像进行攻击时,嵌在内部的数字水印或多或少的会受到一定的破坏。图像认证的价值在于图像在经过攻击之后是否可以提取出与原始信息不同的水印信息来说明图像已被篡改。也就是说,此时的水印应具有最低要求的鲁棒性。

多体媒体信息安全尤其是数字水印技术是一个新兴的研究领域,如今还有许多未触及的研究课题,现有技术也需要改进和提高。通过对现有技术的分析,数字水印技术今后可能的研究方向为:

(1)现有水印算法分析

通过对现有的数字水印算法的鲁棒性、安全性、抗攻击性等特性的研究,并结合数字信号处理技术,寻找出它们之间的关系,从而发现更加好的数字水印技术。

(2)基于特征的数字水印技术

因基于统计特征的数字水印技术容易受到非线形 等变换方法的攻击,而基于图像高层特征的数字水印技术如基于边界信息等则具有较好鲁棒性,因此可能成为今后的研究重点。

通过以上的综述我们应该看到,在今后相当长的时间里,信息安全必将成为一个重要的研究课题。伴随作网络技术和多媒体数字技术的进步,各种网络应用技术的不断发展,信息安全技术必然要遇到这样那样的新问题,这就需要我们提出新的理论、新的技术区解决新的难题。

33

参考文献

参考文献

[1] 谷大武,钱勇,白英彩.数字图像版权的水印保护[M].北京:清华大学出版社,2001.5 [2] 钟伟,余松煌,马希信. 基于分块DCT的自适应水印算法[M].2001.10

[3] 宋玉杰,刘瑞祯,谭铁牛.数字水印在印刷品防伪中的应用[J].中国图形图像学报,2006.5 [4] 卿斯汉. 密码学与计算机网络安全[M].北京:清华大学出版社,2005.2 [5] 李昌刚,韩正之,张浩然.图象加密技术综述[M].计算机研展.2002.10

[6] 陈勇,孙劲庚.一种混沌密码序列的产生[M].南京:解放军理工大学出版社,2005.1 [7] 孙圣和,陆哲明.数字水印处理技术[J].电子学报,2002.8 [8] 孙跃华,计算机密码学的新进展[J].中国计量学院学报,2007.12

[9] 王炳锡,陈琦,邓峰森.数字水印技术[M].西安:西安电子科技大学出版社,2003.11 [10] 张照之,扬义先,马晓敏.信息理论密码学的新进展及研究问题[J].电子学报,2006.7 [11] 商艳红. 数字图像加密技术的研究[D].北方工业大学硕士学位论文, 2005.5 [12] 李昌刚, 韩正之, 张浩然.图像加密技术综述[J].计算机研究与发展, 2002.10 [13] 李昌刚, 韩正之. 图像加密技术新进展[J].信息与控制,2003.7 [14] 卢振泰. 数字图像加密技术研究[D].中山大学硕士论文,2004.6

[15] Bruce Schneier 著.吴世忠,祝世雄,张文政,译.应用密码学[M].西安:机械工业出版社,2004.10

34

致 谢

致谢

首先向所有帮助过我的老师和同学们表示衷心的感谢,谢谢你们的帮助和大力的支持,没有你们的帮助,我是不可能完成这项艰巨的任务的。再次谢谢你们。 我还要特别感谢我的指导老师刘直良,他在知识背景和算法设计方面给了我很大的启发和帮助,同时也是他将我带进了数字水印的世界。再次衷心地感谢他。同时,还要感谢同学在图像加密方面对我的帮助。

另外,我还要感谢机房的老师们,是他们给了我一个方便的学习环境,同时也给了我很大的精神鼓励。谢谢你们,你们辛苦了。

最后,我要衷心感谢系里能给我接触这样一个前沿课题的机会,让我从中受益匪浅,学到了许多新的知识。非常感谢!

35

本文来源:https://www.bwwdw.com/article/yc77.html

Top