1、第四章第四章 加密与认证技术加密与认证技术4.1 加密技术基础4.2 古典加密算法4.3 对称密码体系4.4 非对称密码体系4.5 认证技术4.1 加密技术基本理论4.1.1 加密技术的起源与发展数据加密技术已经有两千多年的历史了,古埃及人就用过象形文字来表述自己想要表达的意愿,但是随着时代的进步,古巴比伦和希腊都在用一些方法来开始保护他们的古文明和古文化。古典密码:远古1949年近代密码:19491975年现代密码:1976至今表4-1:密码技术的发展历程1949, Claude Shannons The Communication Theory of Secrecy System, 成为理
2、论基础成为理论基础19491967,Cryptographic Literature was barren1974, IBM: Luciffer Cipher, 128位密钥作分组加密位密钥作分组加密1975, Diffie-Hellman, A New Direction in Cryptography, 首次提出适应网络保密通信的公首次提出适应网络保密通信的公开密钥思想,揭开现代密码学研究的序幕,具有划时代的意义开密钥思想,揭开现代密码学研究的序幕,具有划时代的意义19761977,美国国家标准局正式公布实施,美国国家标准局正式公布实施DES,Data Encryption Standar
3、d19771978,Rivest, Shamir, Adelman 第一次提出公开密钥密码系统的实现方法第一次提出公开密钥密码系统的实现方法RSA1981,成立,成立International Association for Cryptology Research1985,ElGamal 提出概率密码系统提出概率密码系统 ElGamal方法方法19901992,Lai Xuejia and James: IDEA, The International Data Encryption Algorithm2000, AES, Advanced Encryption Standard4.1.2 加密
4、模型与密码体制密码体制的构成包括以下要素:M:明文消息空间C:密文消息空间K:密钥空间E:加密算法:CE(m,ke)D:解密算法:M =D(C ,kd)。4.1.3 密码技术分类1. 按时间分为古典密码与近现代密码密码技术的发展为三个过程,最早期的古代密码没有一定的规律,还不能成为一门科学,所以按照时间可以分为古典密码和近现代密码。2. 按加密方式分为分组密码与流密码(1)分组密码:取用明文的一个区块和钥匙,输出相同大小的密文区块(2)流密码:流密码也称为序列密码3按密钥方式分单钥密码与双钥密码(1)单钥体制:单钥密码体制也称为对称密码体制(2)双钥体制:双钥体制也称为非对称密码体制或公钥体制
5、(3)混合体制:采用双钥和单钥密码相结合的加密体制图4-2 序列密码的工作原理图4-3 混合加密体制4.1.4 密码学概述 密码学作为数学的一个分支,是研究信息系统安全保密的科学,是密码编码学和密码分析学的统称。(1)密码编码学密码编码学是使消息保密的技术和科学。密码编码学是密码体制的设计学,即怎样编码,采用什么样的密码体制保证信息被安全地加密。(2)密码分析学密码分析学是与密码编码学相对应的技术和科学,即研究如何破译密文的科学和技术。密码分析学是在未知密钥的情况下从密文推演出明文或密钥的技术。 常用的密码分析攻击有:唯密文攻击、已知明文攻击、选择明文攻击、自适应选择明文攻击、选择密文攻击、软
6、磨硬泡攻击等方法。4.2 古典密码算法4.2.1 古典密码的基本思想也称为传统密码技术,一般是指在计算机出现之前所采用的密码技术主要由文字信息构成不同的密码算法主要是由字符之间互相代换或互相之间换位所形成的算法。“替代”与“换位”主要有代码加密、代替加密、变位加密、一次性密码薄加密等4.2.2 古典密码的分类与算法1. 替代密码(1)单表替代密码单表替代密码的一种典型方法是凯撒(Caesar)密码,又叫循环移位密码。它的加密方法就是把明文中所有字母都用它右边的第k个字母替代,并认为Z后边又是A。这种映射关系表示为如下函数:F(a)=(a+k) mod n设k3;对于明文PCOMPUTE SYS
7、TEMS则密文C= Ek(M)=FRPSXRWHUVBVWHPV。(2)多表替代密码周期替代密码是一种常用的多表替代密码,又称为维吉尼亚(Vigenere)密码。这种替代法是循环的使用有限个字母来实现替代的一种方法。采用的算法为: f(a)=(a+Bi) mod n (i=(1,2,n)例如:以YOUR为密钥,加密明码文HOWAREYOU。P = HOWAREYOUK = YOURYOURYEk(M)= FCQRPSSFS2. 移位密码(1)列换位法将明文字符分割成为五个一列的分组并按一组后面跟着另一组的形式排好。如明文是:WHAT YOU CAN LEARN FROM THIS BOOK密文
8、则以下面的形式读出: WOFHOHURIKACOSXTAMBXYNTOX2. 移位密码(2)矩阵换位法这种加密是把明文中的字母按给定的顺序安排在一个矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。如将明文ENGINEERING按行排在3*4矩阵中,如下所示:给定一个置换 :3. 一次一密钥密码一次一密钥密码是指一个包括多个随机密码的密码字母集,这些密码就好像一个记事本,其中每页上记录一条密码。例如,如果消息是:ONETIMEPAD,而取自乱码本的密钥序列是:TBFRGFARFM,那么密文就是:IPKLPSFHGQ,因为(O+T)mod26I(N+B)mod26P(E+F)mod26K。使用一
9、次一密乱码本需要注意的是:密钥字母必须随机产生、密钥序列不能重复使用、尽管一次一密乱码本不能破译,但却只能局限于某些应用。4.2.3 转轮机在20世纪20年代,人们发明了各种机械加密设备用来自动处理加密。转轮机有一个键盘和一系列转轮,它是维吉尼亚密码的一种实现。第二次世界大战期间由德国人使用恩尼格马(Enigma)。4.3 对称密码算法4.3.1 对称密码算法基础1对称密钥密码思想对称密钥密码算法基本思想与传统密钥密码算法类似,采用移位和置换的方法。在该算法中,加密密钥和解密密钥相同或相近,由其中一个很容易得出另一个,加密密钥和解密密钥都是保密的。2. Feistel密码结构1973年IBM公
10、司的Horst Feistel描述了大部分的对称块密码算法所具有的结构,其中包括DES。3.数据加密标准的要求(1)必须提供高度的安全性;(2)具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又便于理解和掌握;(3)安全性应不依赖于算法的保密,其加密的安全性仅以加密密钥的保密为基础;(4)必须适用于不同的用户和不同的场合;(5)实现算法的电子器件必须很经济、运行有效;(6)必须能够验证,允许出口。4.3.2 DES算法简介1. DES算法概念与特点DES(Data Encryption Standard,数据加密标准)算法最初是由IBM公司所研制,于1977年由美国国家标准局颁布作为
11、非机密数据的数据加密标准,并在1981年由国际标准化组织作为国际标准颁布。DES是一个分组加密算法,它以64位为分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出。2DES对称加密算法初始置换(Initial Permutation,IP)是对输入的64位数据按照规定的矩阵改变数据位的排列顺序的换位变换,此过程与密钥无关。子密钥生成是由64位外部输入密钥通过置换和移位操作生成加密和解密所需的16组(每组56位)子密钥的过程。乘积变换过程非常复杂,是加密过程的关键。该过程通过16轮重复的替代、移位、异或和置换操作打乱原输入数据。逆初始置换(IP-1)与初始置换过程相同,只
12、是置换矩阵是初始置换的逆矩阵。(1)初始置换(IP)58 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 46 38 30 214 664 56 48 40 32 24 16 857 49 41 33 25 17 9159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7(2)子密钥生成第1步:PC1变换57 49 41 33 25 17 9158 50 42 34 26 1810 259 51 43 35 27 19 11 360 52 44 3663 55 47 39
13、 31 23 15 762 54 46 38 30 2214 661 53 45 37 29 21 13 528 20 12 4PC1变换。将56位密钥按置换选择1(PC-1)的规律(如表4-3)进行置换,变换后分为左右两路(C0、D0)各28位。表4-4 循环移位表轮轮12345678910 11 12 13 14 15 16位数位数1122222212222221表4-5 PC2变换表1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932(3)乘积变换初始置换后的数据分
14、为各32位的两部分,左部分为L0,右部分为R0,这样,L0 = D58D50D12.D8,R0 = D57D49D41D7。乘积变换过程就是将L0和R0按照乘积变换运算公式进行迭代运算,最后得出L16和R16。(3)乘积变换第1步:E变换。E变换是一个扩展变换,其过程是将32位的数据Ri-1变换成48位第2步:异或变换。将E变换输出的48位数据与48位的子密钥Ki进行异或运算,得到48位的S盒数据。第3步:S盒变换。将48位的S盒数据均分为8部分,每部分为6位,用8个S盒S1S8表示。每个S盒的输入为6位,变换后输出为4位,即经过8个S盒S1S8变换后输出为32位表4-6 E变换表321234
15、5456789891011121312131415161716171819202120212223242524252627282928293031321表4-7 S1转换表14 413 1215 11 8310 612 5907015 7414 213 110 612 11 95384114 813 6211 15 12 97310 5015 12 824917511 314 10 0613图4-8 S盒变换表4-8 P盒置换表16 720 21 29 12 28 17 115 23 26 518 31 102824 14 32 27 3919 13 30 622 11 425第4步:P变换。
16、P变换的过程是将S盒输出的32位数据进行位置变换得到一个新的32数据组,因此P变换为线性变换,其变换规则如表4-8所示。第5步:异或变换。P变换输出的32位数据与32位的Li-1异或后输出32位数据,此数据就是Ri。 (4)逆初始置换(IP-1)40 848 16 56 24 64 32 39 747 15 55 23 63 3138 646 14 54 22 62 30 37 545 13 53 21 61 2936 444 12 52 20 60 28 35 343 11 51 19 59 2734 242 10 50 18 58 26 33 141 949 17 57 25(6)DES算
17、法的安全性DES被公认为世界上第一个实用的密码算法标准DES的缺点是密钥位数太短(56位)算法的对称性存在一些弱密钥和半弱密钥其安全性完全依赖于对密钥的保护4.3.3 其他对称加密算法(1)TDEA算法TDEA(Triple Data Encryption Algorithm,三重DES)算法,其本质和DES算法是一致的。它是为了解决DES算法密钥过短的而出现的。在TDEA算法中,使用三个密钥,执行三次DES算法,该算法的总密钥长度为168位(56位的三倍)。(2)AES算法AES(Advanced Encryption Standard,高级加密标准)算法是一个非保密的、全球免费使用的分组加
18、密算法,并被确定为替代DES的数据加密标准。Rijndael算法具有加密强度高、可抵御所有已知攻击、运算速度快和灵活性好等特点,成为AES最合适的选择。(3)IDEA算法IDEA(International Data Encryption Algorithm,国际数据加密算法)是瑞士著名学者提出的。该算法是在DES算法的基础上发展起来的,类似于三重DES,也是一种分组密码算法,分组长度为64位,但密钥长度为128位。该算法就是用128位密钥对64位二进制码数据进行加密的,同样用128位密钥对64位密文进行解密变换。表4-9 对称密钥加密算法比较算法名称算法名称密钥长度(位)密钥长度(位)分组长
19、度(位)分组长度(位) 循环运算次数循环运算次数DES566416TDEA112、1686448AES128、192、25612810、12、14IDEA1286484.4 非对称密码算法4.4.1 非对称密码的思想非对称密钥密码算法也叫做公开密钥密码算法。在该算法中,信息发送方和接收方所使用的密钥是不同的,即加密密钥与解密密钥不同,且由其中的一个很难导出另一个。公钥密码体制应满足以下要求:(1)对任意明文进行加密变换是很容易的,并且若知道解密密钥,那么对密文的解密也是很容易的;(2)信息的发送方对任意明文进行加密变换后,接收方进行解密变换就可以得到明文;(3)若不知道解密密钥,那么即使知道加
20、密密钥,具体的加密与解密算法以及密文,确定明文在计算上也是不可行的。4.4.2 RSA算法1. RSA算法的原理RSA因其发明人Ronald L.Rivest、Adi Shamir和Leonard M.Adleman而得名。RSA的基础是数论的欧拉定理,它的安全性依赖于大数的因数。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法的秘密密钥利用公开信道传输分发不安全的问题。RSA是第一个比较完善的公开密钥算法,它既能用于加密也能用于数字签名。2. RSA算法的过程(1)随机地选取两个不同的大素数p和q(一般为100位以上的十进制数)予以保密;(2)计算 n = p q,作
21、为A的公开模数;(3)计算 Euler 函数: (n)=(p-1) (q-1)(4)随机地选取一个与(n)互素的整数e,作为A的公开密钥;(5)用欧几里德算法,计算满足同余方程 ed1 (mod (n) 的解d,作为A用户的保密密钥;(6)任何向A发送明文的用户,均可用A的公开密钥 e 和公开模数 n,根据式 C=Me (mod n) 得到密文C(7)用户A收到C后,可利用自己的保密密钥d,根据 M=Cd (mod n) 得到明文M3. RSA算法实例:对“HI”进行加密(1)选密钥 设p=5,q=11, 则n=55, (n)=40 取e=3, 公钥(3,55) 3d mod 40=1 则d=
22、27 ,私钥(27,55)(2)加密设明文编码为: 空格=00,A=01,B=02, ,Z=26 则明文 HI=0809C1=(08)3(mod 55)=512 (mod 55)=17 C2=(09)3(mod 55)=729 (mod 55)=14N=14,Q=17所以,密文为QN(3) 恢复明文M1=Cd (mod 55) =(17)27 (mod 55)=08 M2=Cd (mod 55) =(14)27 (mod 55)=09 因此明文为“HI”。3. RSA算法的安全性RSA算法的安全性建立在难于对大数进行质因数分解的基础上,因此大数n是否能够被分解是RSA算法安全的关键。由于用RS
23、A算法进行的都是大数运算,使得RSA算法无论是用软件实现还是硬件实现,其速度要比DES慢得多。因此,RSA算法一般只用于加密少量数据。RSA的发明者Rivest、Shamir和Adleman建议取p和q为100位以上的十进制数,这样,n为200位的十进制数。按每秒109次运算的高速计算机也要计算106年。4.4.3 其他非对称密码算法4.5 认证技术4.5.1 认证技术概述1. 认证技术的概念所谓“认证”即确认和证实,一般是为了确认身份的真实性和信息的有效性而采取的一些方法。同样的在网络环境中,认证技术是信息安全中的一个重要内容,也是电子商务安全的重要保障。认证主要采用对称密码、公钥加密、散列
24、函数等技术为电子商务活动中的信息完整性和不可否认性以及电子商务实体的身份真实性提供技术保障。4.5.1 认证技术概述2.认证技术的分类从鉴别对象上,认证技术分为消息认证和用户身份认证:(1)消息认证:用于保证信息来源的证实性和信息内容的完整性和不可否认性。(2)身份认证:鉴别用户身份。包括识别和验证两部分3. 消息认证的目的(1)消息内容认证(2)消息的源和宿认证(3)消息序号和操作时间的认证4. 身份认证的方法(1)用户名及密码方式(2)智能卡认证(3)动态令牌认证(4)身份认证系统(5)USB Key认证(6)生物识别技术4.5.2 消息验证码技术1. 消息验证码MAC消息验证码MAC(M
25、essage Authentication),是用来保证数据完整性的一种方法。MAC算法以密钥K(K是收、发双方共享的密钥)和变长消息M作为输入,计算出一个定长的函数值MAC=Ck(M),称为消息认证码或密码校验和。3. 常用的散列算法散列函数是公开的,对处理的过程不用保密,它的安全性来源于它的单向性。目前,常用的散列算法主要有MD5、SHA-1和RIPEMD-160。我国山东大学王小云教授等于2004年8月在美国加州召开的国际密码大会上所做的Hash函数研究报告中指出,她们已成功破译了MD4、MD5、HAVAL-128、RIPEMD-128等Hash算法。4.5.3 数字签名技术1.数字签名
26、的概念数字签名(Digital Signature)又称公钥签名或电子签章,是以电子形式存储于信息中或以附件或逻辑上与之有联系的数据,用于辨识数据签署人的身份,并表明签署人对数据中所包含信息的认可。数字签名的特点: 签名是可以被确认的 签名是不可伪造的 签名不可重用 签名是不可抵赖的 签名的信息不能篡改图4-12 直接签名与验证的工作原理表4-10 直接签名与可仲裁签名的特点名称名称具体实现具体实现优点优点缺点缺点直接数字签直接数字签名体制名体制发送者先对要签名的消息进行Hash处理,再用私钥对得到的验证码进行加密思想简单可行且易于实现有效性依赖于签名者私钥的安全性可仲裁的数可仲裁的数字签名体制字签名体制发送方先对消息执行签名操作,再将签名和被签消息一起发给仲裁者,仲裁者对其进行验证,通过验证的签名保证了其真实性,最后将消息和签名发送给接收者。签名者没有作弊的机会,签名不能被伪造更复杂,仲裁可能成为系统的瓶颈,仲裁者必须公正可信。本章小结古典密码常见的算法有:简单代替密码或单字母密码、多名或同音代替、多表代替,以及多字母或多码代替等。现代密码主要分为单钥密码体制和双钥密码体制两类最有影响的单钥密码是DES算法和IDEA算法优秀的双钥算法有基于素数因子分解问题的RSA算法和基于离散对数问题的ElGamal算法在认证技术领域,通过使用密码手段,一般可以实现消息认证和身份认证。