1、摘 要摘 要随着Internet技术与多媒体技术的飞速发展,数字化信息可以以不同的形式在网络上方便、快捷地传输。多媒体通信逐渐成为人们之间信息交流的重要手段。多媒体信息安全技术的研究主要有两种方法:多媒体信息加密和多媒体信息隐藏技术。信息加密与信息隐藏从不同的角度保证信息的安全,如果我们将信息加密与信息隐藏有机地相结合,可进一步提高信息的安全性。本课题的目的是实现一个安全性比较高的图像信息安全算法, 图像信息的安全主要包括图像加密和图像认证,图像加密的目的是将一幅图像明文通过一定的算法使其变成不可识别的密文,以防止攻击者截获原图像信息。图像加密有多种方法,本课题采用的算法是基于DES和RSA的
2、混合加密。虽然加密可以使原文信息不被暴露,但一旦原文被接收并被篡改,加密就显得无能为力了。此时,就需要图像认证的技术。图像认证的作用就是鉴定原图像有没有被篡改,以保护发送者的利益。为实现图像认证的目的,本课题采用报文摘要结合数字水印的方法。最后,本课题从安全性角度实现了二者的结合,使得图像信息的安全得到了进一步的提高。 关键词:信息安全;图像加密 ;图像认证 ;数字水印 IAbstractAbstractWith the Internet technology and the rapid development of multimedia technology, digital informa
3、tion can be transfered in different forms on the web quickly and easily. Multimedia communication has gradually become an important means of information exchange between people. Multimedia Information Security Technology there are two main ways: multimedia information and multimedia information hidi
4、ng encryption technology. Message encryption and information hiding information from different angles to ensure the security, if we hide the information encrypted with the organic combination of information, can further enhance information security.The goal of this topic is realizing a high-security
5、 pictorial information security algorithm, the pictorial information security mainly includes the image encryption and the image authentication, the goal of image encryption is turning a pictorial information to be distinguished through a certain algorithm,which preventing the aggressor capture the
6、original map.The image encryption has many kinds of methods,this topic uses the algorithm of the mix encryption which is based on on DES and the RSA. Although encryption may cause the original text information not be exposed, but once the original text is received and is tampered with, the encryptio
7、n appeared helplessly. This time,needs the image authentication technology. The image authentications function is appraising if the original map picture has been tampered with, which is to protect the transmissions benefit. In order to realize the image authentication goal, this topic uses the metho
8、d of a telegram abstract union numeral watermark.Finally, this topic has realized the two union from the secure angle,enable the security of pictorial information obtaining further enhancement. Keywords :Security;Image encryption;Image Authentication;Digital WatermarkingII目 录目 录1 绪论11.1 研究背景11.2 研究方
9、法11.3 研究内容22 关键技术32.1 报文摘要技术32.1.1 单向散列函数42.1.2 单向散列函数技术42.2 数字图像技术52.2.1 数字水印的概念52.2.2 数字水印的要求62.2.3 数字水印的原理及其通用模型62.3 数字图像加密技术82.3.1 数字图像加密的原理与通用模型82.3.2 数字图像加密的典型算法83 算法实现113.1 采用的算法113.2 算法流程图123.3 报文摘要提取123.4 数字图像水印173.4.1 位图的位面173.4.2 LSB算法模型173.4.3 LSB算法的实现183.5 混合加密193.5.1 DES算法193.5.2 RSA公开
10、密钥密码体制253.5.3 混合加密的实现264 一种基于现代密码体制的图像加密算法284.1现代密码体制284.2 AES简介294.2.1 AES的来源294.2.2 AES算法描述304.3 基于AES的数字图像置乱314.4 实验结果与分析324.4.1 图像的置乱效果325 总结33参考文献34致谢35IV绪 论1 绪论1.1 研究背景 随着Internet技术与多媒体技术的飞速发展,数字化信息可以以不同的形式在网络上方便、快捷地传输。多媒体通信逐渐成为人们之间信息交流的重要手段。人们通过网络交流各种信息,进行网上贸易等。因此,信息的安全与保密显得越来越重要。信息的安全与保密不仅与国
11、家的政治、军事和外交等有重大的关系,而且与国家的经济、商务活动以及个人都有极大的关系。随着信息化社会的到来,数字信息与网络已成为人们生活中的重要组成部分,他们给我们带来方便的同时,也给我们带来了隐患:敏感信息可能轻易地被窃取、篡改、非法复制和传播等。因此信息安全已成为人们关心的焦点,也是当今的研究热点和难点。 多媒体数据,尤其是图像,比传统的文字蕴涵更大的信息量,因而成为人类社会在信息利用方面的重要手段。因此针对多媒体信息安全保护技术的研究也显得尤为重要,多媒体信息安全是集数学、密码学、信息论、概率论、计算复杂度理论和计算机网络以及其它计算机应用技术于一体的多学科交叉的研究课题。 1.2 研究
12、方法 多媒体信息安全技术的研究主要有两种方法:多媒体信息加密和多媒体信息隐藏技术。 多媒体信息加密技术:我们可以把多媒体数据作为文本数据流一样看待,使用传统的加密算法进行加密。传统的加密方法如DES、3-DES 或RSA等也能满足多媒体应用中的要求。然而,新型的多媒体应用就需要新的数据加密技术。近年来,在这方面的研究取得了一些成果,主要针对视频数据和图像数据。多媒体信息隐藏技术:密码学技术仅仅隐藏了了信息的内容,而信息隐藏技术不但信息的内容而且隐藏了信息的存在。广义上的信息隐藏技术包括隐写术,数字水印,数字指纹,隐蔽信道,阈下信道,低截获概率通信和匿名通信等,狭义上的信息隐藏技术通常指隐写术与
13、数字水印。其中,数字水印技术在图像论证方面有较广泛的应用。 信息加密与信息隐藏从不同的角度保证信息的安全,如果我们将信息加密与信息隐藏有机地相结合,可进一步提高信息的安全性。 1.3 研究内容 数字图像比声音、文字等蕴涵更多的信息,因而在多媒体信息中占有举足轻重的地位,数字图像信息安全是多媒体信息安全的重要组成部分。因此本文以数字图像为基础,研究数字图像信息安全技术。图像信息安全技术包括图像加密和图像认证等。 35关键技术2 关键技术本课题旨在分析数字图像的结构和特点,对数字图像进行加密和解密,即:利用一定的算法对一副图像进行加密以达到不暴露原始图像的目的,然后进行解密以达到恢复原始图像的目的
14、。同时,为了鉴别出图像是否被篡改,要求满足图像认证的要求。认证的目的是检测对图像数据的修改,以确定载体信息的完整性和真实性。可用易碎水印和报文摘要来实现图像认证。虽然只用报文摘要也能达到图像认证的目的,这种方法认证的精确度比较高,但是在传输过程中难免会受到噪声等的干扰,故使用报文摘要可能会达不到预期的目的,同时,因为数字水印也有图像认证的功能,因此,本系统采用报文摘要结合易碎水印来实现该目的。 2.1 报文摘要技术 在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造和则要用报文鉴别的方法。报文鉴别是这样一种过程,它使得通信的接收方能够验证所收到的报文的真伪。 近年来
15、,广泛使用报文摘要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),则在计算上是不可行的。 上述的
16、两个条件表明:若(m, H(m)是发送者产生的报文和报文摘要对,则攻击者不可能伪造出另一个报文y,使得y与x具有同样的报文摘要。发送者可以对进行数字签名,使报文成为可检验的和不可抵赖的2。 2.1.1 单向散列函数 要设计一个接收任意长度输入的函数特别是单向散列函数是很困难的事,在实际中,单向散列函数建立在压缩函数的想法上。给定一长度为m的输入,单向函数输出长为n的散列值。压缩函数的输入是消息分组和文本前一分组的输出。输出是到该点的所有分组的散列,即分组的散列为: 公式(2-1)该散列值和下一轮消息分组一起,作为压缩函数下一轮的输入。最后一分组的散列就成为整个消息的散列。散列的信息应该包含整个
17、消息长度的某种二进制表示。这种方法能消除由不同长度的消息可能会具有相同的散列值所带来的潜在的安全问题,这种技术有时称之为增强的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
18、使用128位消息分组及一个与FEAL类似的复杂随机函数,并产生128位散列值。每个128位分组的散列是这一分组和上一分组的散列的函数。整个消息的散列是最后一个消息分组的散列。随机初始值I可以是用户设置的任意值(甚至为全零)。 (3)MD4算法 MD4是Ron Rivest设计的单向散列函数,MD表示消息摘要,对于输入消息,算法产生128位散列值(或消息摘要)。(4)MD5算法 MD5是MD4的改进版,它比MD4更复杂,但设计思想相似,并且也产生128位散列。在一些初始化处理之后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形
19、成一个128位散列值。 (5)安全散列算法 NIST NSA一道设计了与DDS一起使用的安全散列算法SHA,SHA是用于标准的算法,该标准规定一种保证数字签名算法(DSA)安全所必需的安全散列算法(SHA)。当输入是长度小于264位的消息时,SHA产生一称为消息摘要的160位输出,然后将该摘要输入到用于计算消息签名的DSA中。SHA基于的原则与MIT的Ronald L Rivest 教授在设计MD4消息摘要算法时所用的原理相似,并且模仿了该算法。 (6)几种算法的比较 Snefru的安全性取决于可逆分组密码函数E,它用几轮运算使数据随机化。对于轮数少于八的Snefru,已被证明是不安全的,最近
20、,Merkle 建议使用至少八轮的Snefru,但是如此多轮的算法比MD5或SHA要慢得多。N-Hash算法已被证明不安全 。MD5是MD4的改进版,安全性更高,更难于被破译。SHA 算法主要是与数字签名算法一起使用的安全散列算法,与MD4非常相似,主要的改变是添加了扩展转换,并且为产生更快的雪崩效应而将上一轮的输出送至下一轮。本课题使用单向散列函数的目的是为了实现图像认证,故选用安全性较高的MD5算法4。 2.2 数字图像技术 2.2.1 数字水印的概念 日程生活中为了鉴别纸币的真伪,人们通常将纸币对着光源,会发现真的纸币中有清晰的图像信息显示出来,这就是我们熟悉的“水印”。之所以采用水印技
21、术是因为水印有其独特的性质:第一,水印是一种几乎不可见的印记,必须放置于特定环境下才能被看到,不影响物品的使用;第二水印的制作和复制比较复杂,需要特殊的工艺和材料,而且印刷品上的水印很难被去掉。因此水印常也被应用于诸如支票、证书、护照、发票等重要印刷品中,长期以来判定印刷品真伪的一个重要手段就是检验它是否包含水印。 借鉴普通水印的含义和功能,人们采用类似的概念保护诸如数字图像、数字音乐这样的多媒体数据,因此就产生了“数字水印”的概念。所谓“数字水印”是往多媒体数据中添加的某些数字信息,比如将在数码相片中添加摄制者的信息,在数字影碟中添加电影公司的信息等等。与普通水印的特性类似,数字水印在多媒体
22、数据中(如数码相片)也几乎是不可见的,也很难被破坏掉。因此数字水印在今天的计算机和互联网时代大有可为1。 2.2.2 数字水印的要求 数字水印是往多媒体数据(如图像、声音、视频信号等)中添加某些数字信息以达到图像认证等作用。在绝大多数的情况下,我们希望添加的信息是不可察觉的,并且希望攻击者在不破坏数据本身质量的情况下无法将水印去掉。同时,在嵌入水印的过程中,我们又不可以破坏原来的文件,即不能让人们发觉水印的存在,因此,不可见性是数字水印的首要要求。 鲁棒性问题对数字水印同样非常重要。有效的数字水印应该能够承受大量不同的物理和几何失真,包括有意的(如恶意攻击)或无意的(如图像压缩,滤波、扫描与复
23、印,噪音污染、尺寸变化等等)。显然在经过这些操作后,鲁棒的水印算法应仍能从水印图像中提取出嵌入的水印或证明水印的存在。若攻击者试图删除水印则将导致多媒体产品的彻底破坏。因此,我们还需要达到鲁棒性的要求。 2.2.3 数字水印的原理及其通用模型 从图像处理的角度看,嵌入水印信号可以视为在强背景下迭加一个弱信号,只要迭加的水印信号强度低于HVS的对比度门限,HVS就无法感到信号的存在。对比度门限受视觉系统的空间、时间和频率特性的影响。因此,通过对原始图像作一定的调整,有可能在不改变视觉效果的情况下嵌入一些信息。从数字通信的角度看,水印嵌入可理解为在一个宽带信道(载体图像)上用扩频通信技术传输一个窄
24、带信号(水印信号)。尽管水印信号具有一定的能量,但分布到信道中任一频率上的能量是难以检测到的。水印的译码(检测)则是一个有噪信道中弱信号的检测问题3。 设载体图像为I,水印信号为W,密钥为K,则水印嵌入可用公式(2-2)描述。 公式(2-2)式中F表示水印嵌入策略(算法).水印的嵌入过程如图2-1所示。有两种常用的水印嵌入公式: 公式(2-3)密 钥水印信息含水印载体信息水印嵌入算法载体信息图2-1 水印信号嵌入其中分别表示载体图像像素和嵌入水印的图像像素;为水印信号分量,0iK;为强度因子。为了保证在不可见的前提下,尽可能提高嵌入水印的强度,的选择必须考虑图像的性质和视觉系统的特性。 图2-
25、2,图2-3是水印提取与检测流图。图2-2,图2-3中的虚框部分表示在提取或判断水印信号时原始数据不是必要的。 在某些水印系统中,水印可以被精确地抽取出来,这一过程被称作水印提取。比如在完整性确认应用中,必须能够精确地提取出插入的水印,并且通过水印的完整性来确认多媒体数据的完整性。如果提取出的水印发生了部分的变化,最好还能够通过发生变化的水印的位置来确定原始数据被篡改的位置。 对于强壮水印,通常不可能精确地提取出插入的原始水印,因为一个应用如果需要强壮水印,说明这个应用很可能遭受到各种恶意的攻击,水印数据历经这些操作后,提取出的水印通常已经面目全非。这时我们需要一个水印检测过程,见图2-3。通
26、常水印检测的第一步是水印提取,然后是水印判决。水印判决的通常做法是相关性检测。选择一个相关性判决标准,计算提取出的水印与指定的水印的相关值,如果相关值足够高,则可以基本断定被检测数据含有指定的水印。从以上论述可以看出,水印提取的任务是从嵌入水印的数据中提取水印信号,而水印检测的任务是判断某一数据内容中是否存在指定的水印信号。另外,水印检测的结果依赖于一个阈值,当相关性检测的结果超过这个阈值时,给出含有指定水印的结论。这实际上是一个概率论中的假设检验问题。当提高相关性检测的阈值时,虚检概率降低,漏检概率升高;当降低相关性检测的阈值时,虚检概率升高,漏检概率降低。所谓虚检(false positi
27、ve),就是将没有水印信号的数据误认为含有水印信号。所谓漏检(false negative),就是未能从含有水印信号的数据中检测到水印信号。在实际的水印应用中,更注重对虚检概率的控制5。 水印信息水印信息提取算法水印信息密 钥载体信息水印信息水印信息载体算法密 钥原载体信息含水印否? 图2-2水印信号提取 图2-3水印信号检测 2.3 数字图像加密技术 2.3.1 数字图像加密的原理与通用模型 数字图像加密就是在发送端采用一定的算法作用于一幅图像明文,使其变成不可识别的密文,达到图像保密的目的。在接收端采用相应的算法解密,恢复出原文。其通用算法模型如图2-4所示。原文图像密 文原文图像加密解密
28、密钥密钥图2-4 数字图像加密通用模型2.3.2 数字图像加密的典型算法 目前国内外对数字图像加密的研究主要采用以下几种方法: (1)基于矩阵变换像素置换的图像加密技术 1)Arnold变换,俗称猫脸变换.设像素的坐标x , y S = 0, 1, 2, , N-1, 则Arnold变换为: 公式(2-4)Arnold变换可以看做是裁剪和拼接的过程。通过这一过程将离散化的数字图像矩阵S中的点重新排列。由于离散数字图像是有限点集,这种反复变换的结果, 在开始阶段S中像素点的位置变化会出现相当程度的混乱,但由于动力系统固有的特性, 在迭代进行到一定步数时会恢复到原来的位置。 2)按幻方做图像像素置
29、乱变换。这种变换实质上是矩阵的初等变换, 并且由于幻方矩阵是一有限维矩阵, 经过n次置换, 又会回到原来的位置, 因而也可以用(1)所述的方法加以破译, 固其加密效果也是不好的。但若能把初等矩阵变换转化为某种非线性变换则有可能增强置乱效果, 再结合其它的现代密码学的一些成熟的加密算法如DES,RSA等则可以增加算法的保密性6。 (2)基于秘密分割与秘密共享的图像加密技术 秘密分割就是把消息分割成许多碎片, 每一个碎片本身并不代表什么, 但把这些碎片放到一起消息就会重现出来。这种思想用于图像数据的加密上就是在发送端先要把图像数据按某种算法进行分割, 并把分割后的图像数据交给不同的人来保存; 而在
30、接收端需要保存秘密的人的共同参与才能恢复出原始待传输的图像数据。 (3)基于现代密码体制的图像加密技术 这种加密技术就是把待传输的图像看做明文,通过各种加密算法,如DES,RSA 等, 在密钥的控制下,达到图像数据的保密通信。这种加密机制的设计思想是加密算法可以公开,通信的保密性完全依赖于密钥的保密性(即满足Kerckhoffs 假设)。其原理框图如图2-5所示。 加 密密码分析解 密明文(原始图像)密文(加密图像)原始明文原始图像加密密钥解密密钥图2-5 密钥控制下的保密通信框图其中: 加密密钥和解密密钥可以相同也可以不同, 并依此来划分出两种基本的密码算法,即对称算法和非对称算法(也叫公开
31、密钥算法。 基于密钥的算法通常有以下两类: 1) 对称算法 对称算法,又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加解密密钥是相同的。这些算法也叫秘密密钥算法或单钥算法, 它要求发送方和接受方在安全通信之前商定一个密钥。对称算法的安全性完全依赖于密钥, 泄露密钥就意味着任何人都能对消息进行解密。只要通信需要保密,密钥就必须保密。对称算法又可分为两类。一次只对明文中的单个位(或字节)运算的算法称为流密码。另一类算法是对明文的一组位进行运算,叫分组密码 ,如IBM的DES算法。 2) 公开密钥算法 即:用作加密的密钥不同于用作解密的密钥,并且解密密钥不
32、能根据加密密钥计算出来。之所以叫做公开密钥算法,是因为加密密钥能够公开,即任何人都能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。在这种体制中,加密密钥叫做公开密钥,简称公钥。解密密钥叫做私人密钥,简称私钥。利用公钥密码体制进行保密通信时,加密密钥可以公开,只保密解密密钥就能达到保密通信。解密密钥和加密密钥不同,从一个难以推出另一个,其设计规律都是把推算解密密钥的问题等效为一个难以求解的数学问题。通信双方无须事先交换密钥就可建立起保密通信,它解决了通信双方进行保密通信的密钥分配问题。它不需要铺设专门的安全传输线路,也不需要专门信使在通信双方传递密钥,因而可以节约大量费用。在公钥密码体
33、制中, 最重要的有RSA 体制、背包体制、ElGamal体制、Robin 体制、椭圆曲线体制及多维RSA体制等。它们的共同点都是基于陷门单向函数的概念,把问题归结为某一数学难题的求解。其中背包体制在最初提出5年中被认为是安全的,但此算法在20世纪80年代初就被Shamir完全破译了。 算法实现3 算法实现3.1 采用的算法 近年来,随着国际互联网络与多媒体技术的迅速发展,数字图像己经逐渐克服了往日因存储量巨大而带来的种种问题,成为信息表达方式的主流,数字图像信息的安全问题成为国际上研究的焦点问题。数字图像具有信息量大、信息表达直观的特点,它的安全保密显然与以往在计算机上所面对的文本数据截然不同
34、。数字图像信息安全保密是结合数学、密码学、信息论、计算机视觉以及其它计算机应用技术的多学科交叉的研究课题。数字图像的加密技术是当代信息安全领域中比较活跃的一个研究方向。它结合了数学、密码学、信息论、计算机视觉以及其它计算机应用技术的多门学科。随着科技的发展,尤其是多媒体技术的发展,出现了更多的、新的图像加密算法,而按照不同的分类标准,图像加密算法还可以作其他不同的分类。通过阅读一定量的资料了解到该课题目前在国内外的研究状况和相应的发展趋势。经过反复的思考,本课题打算按以下思路着手设计,以求最终能以程序实现该课题。 即:DES和RSA的混合加密算法,先随机产生一个DES密钥,用此密钥加密图像,得
35、到扩展名为.bmp.mcs的文件1,然后采用RSA加密算法对随机产生的DES密钥进行加密将得到的密文加到文件1的文件头里面去。这样如果想得到原文件就必须先破解文件头,而文件头是由RSA加密的,安全性比较高,想破解并不是件容易的事,同时又由于DES加密速度快,适用于大文件的加密,且安全性不高,而RSA加密速度慢,适用于小文件的加密,但安全性很高,两者的结合即满足了速度的要求,又满足了安全性的要求。同时,为了满足图像鉴定的要求,特引进数字水印技术,即:采用一散列函数作用原图像,以提取一报文摘要,然后将此报文摘要作为水印信息嵌入到原始图像中,经加密解密后,再在解密后的图像中提取水印信息,然后判断此水
36、印信息和原报文摘要是否相同,若相同,说明原始图像没有被篡改过,否则说明原始图像已被篡改。 3.2 算法流程图 原始图像DES密钥数据流摘要摘要水印加密图像解密后图像摘要RSA加密此密钥对此,看是否一致?以达到图像认证的目的!解密文件头加密图像提取水印DES加密MD5算法作为水印信息图3-1 算法流程图3.3 报文摘要提取 MD5算法是由 Rivest(RSA中的R)于1991年提出的Hash算法。今天已成为最广泛使用的Hash算法。MD5算法并非是Rivest提出的首个Hash 算法,1990年Rivest就已提出了一个Hash算法 MD4,并被接受为标准,MD5算法是MD4算法的改进。MD5
37、和MD4算法都是将消息划分成512位的消息块进行处理,最终形成128位的信息摘要。实现MD5算法主要经过以下五个步骤: (1) 补位 补位的目标是使输入的消息长度,从任意值变成一个新的长度n,使得n=448(mod512),即通过补位使消息长度差64位成为512的整数倍,即使原消息的长度正好满足要求,也需要进行补位。补位的补丁包括一个1,剩下的全是0,在原消息之后。特别地,如果原消息的长度正好满足要求,则补位包括一个1和512个0。 (2) 追加长度 在追加长度前,通过补位,消息长度已经变成模512余448,接下来的追加长度将在消息后继续补充64位的信息,新消息将是512的整数倍。追加长度的信
38、息由64位表示,被追加到已补的信息后,如果原消息长度超过64位,只使用低64位。追加的长度是原消息的长度,而不是补位后的信息长度。 (3)缓冲区初始化 为了计算Hash函数的结果,需首先设置128位的缓冲区。缓冲区除接受Hash函数最终结果外,还记录中间结果。 128位位Buffer n 在图3-2中,将缓冲区分成4等份,即4个32位寄存器(A,B,C,D),每个32位寄存器也被称为字。Buffer n+1128位位Block n第一轮第二轮第三轮第四轮+A512位位BCD A B C DA B C D+MkTi 图3-2 缓冲区 n-n+1 示意图 图3-3 四轮算法 赋初值: A: 0x0
39、1234567 B: 0x89abcdef C: 0xfedcba98 D: 0x76543210 ABCD构成 buffer0。 (4)消息迭代 从buffer0开始,进行算法的主循环,循环的次数是消息中512位消息分组的数目,将上面四个变量复制到另外的变量中:A到a,B到b,C到c,D到d。主循环有四轮,每轮很相似,每一轮进行16次操作,每次操作对a,b,c 和d中的其中三个作一次线性函数运算,然后将所得的结果加上第四个变量,文本的一个子分组和一个常数,再将所得的结果向右环移一个不定的数,并加上或中之一,最后用该结果取代a,b,c或d中之一。主循环的运算过程见图3-4。 第一轮第二轮第三轮
40、第四轮消息分组ABCDDCBA图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是逐位奇偶操作符。 设
41、 Mj 表示消息的第j个子分组(从 0 到 15),s 表示循环左移s位,则四种操作为: FF(a,b,c,d,Mj,s,ti)表示a=b+(a+(F(b,c,d)+ Mj + ti)s) GG(a,b,c,d,Mj,s,ti)表示a=b+(a+(G(b,c,d)+ Mj + ti)s) HH(a,b,c,d,Mj,s,ti)表示a=b+(a+(H(b,c,d)+ Mj + ti)s) II(a,b,c,d,Mj,s,ti)表示a=b+(a+(I(b,c,d)+ Mj + ti)s) 这四轮(64步)是: 第1轮: FF (a, b, c, d, M 0, 11, 0xd76aa478); F
42、F (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);FF (b, c, d, a, M 7, 14, 0xfd469501);FF (a, b, c, d, M 8, 11, 0x698098d8);FF
43、 (d, a, b, c, M 9, 12, 0x8b44f7af);FF (c, d, a, b, M10, 13, 0xffff5bb1);FF (b, c, d, a, M11, 14, 0x895cd7be);FF (a, b, c, d, M12, 11, 0x6b901122);FF (d, a, b, c, M13, 12, 0xfd987193);FF (c, d, a, b, M14, 13, 0xa679438e);FF (b, c, d, a, M15, 14, 0x49b40821);第2轮: GG (a, b, c, d, M 1, 21, 0xf61e2562);G
44、G (d, a, b, c, M 6, 22, 0xc040b340);GG (c, d, a, b, M11, 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, M10, 22, 0x2441453);GG (c, d, a, b, M15, 23, 0xd8a1e681);GG (b, c, d, a, M 4, 24, 0xe7d3fbc8);GG (a, b, c, d, M 9, 21, 0x21e1cde6);GG (d,
45、 a, b, c, M14, 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, M13, 21, 0xa9e3e905);GG (d, a, b, c, M 2, 22, 0xfcefa3f8);GG (c, d, a, b, M 7, 23, 0x676f02d9);GG (b, c, d, a, M12, 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, M11, 33, 0x6d9d6122); HH (b, c, d, a, M14, 34, 0xfde5380c); HH (a, b, c, d, M 1, 31, 0xa4beea44); HH (d, a, b, c, M 4,