第七章 密码学与信息加密.docx

上传人:b****6 文档编号:3905462 上传时间:2022-11-26 格式:DOCX 页数:21 大小:376.06KB
下载 相关 举报
第七章 密码学与信息加密.docx_第1页
第1页 / 共21页
第七章 密码学与信息加密.docx_第2页
第2页 / 共21页
第七章 密码学与信息加密.docx_第3页
第3页 / 共21页
第七章 密码学与信息加密.docx_第4页
第4页 / 共21页
第七章 密码学与信息加密.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第七章 密码学与信息加密.docx

《第七章 密码学与信息加密.docx》由会员分享,可在线阅读,更多相关《第七章 密码学与信息加密.docx(21页珍藏版)》请在冰豆网上搜索。

第七章 密码学与信息加密.docx

第七章密码学与信息加密

第八章密码学与信息加密

内容提要

⏹本章介绍密码学的基本概念。

⏹介绍加密领域中两种主流的加密技术:

⏹DES加密(DataEncryptionStandard)

⏹RSA加密(Rivest-Shamir-Adleman)

⏹并用程序实现这两种加密技术的算法。

最后介绍目前常用的加密工具PGP(PrettyGoodPrivacy),使用PGP产生密钥,加密文件和邮件。

一、密码学概述

1、密码学概述

⏹密码学是一门古老而深奥的学科,对一般人来说是非常陌生的。

长期以来,只在很小的范围内使用,如军事、外交、情报等部门。

计算机密码学是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。

⏹随着计算机网络和计算机通讯技术的发展,计算机密码学得到前所未有的重视并迅速普及和发展起来。

在国外,它已成为计算机安全主要的研究方向。

2、密码技术简介

⏹密码学的历史比较悠久,在四千年前,古埃及人就开始使用密码来保密传递消息。

⏹两千多年前,罗马国王JuliusCaesare(恺撒)就开始使用目前称为“恺撒密码”的密码系统。

但是密码技术直到本20世纪40年代以后才有重大突破和发展。

⏹特别是20世纪70年代后期,由于计算机、电子通信的广泛使用,现代密码学得到了空前的发展。

3、消息和加密

⏹遵循国际命名标准,加密和解密可以翻译成:

“Encipher(译成密码)”和“(Decipher)(解译密码)”。

也可以这样命名:

“Encrypt(加密)”和“Decrypt(解密)”。

⏹消息被称为明文。

用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密,图8-1表明了加密和解密的过程。

4、明文密文

⏹明文用M(Message,消息)或P(Plaintext,明文)表示,它可能是比特流、文本文件、位图、数字化的语音流或者数字化的视频图像等。

⏹密文用C(Cipher)表示,也是二进制数据,有时和M一样大,有时稍大。

通过压缩和加密的结合,C有可能比P小些。

⏹加密函数E作用于M得到密文C,用数学公式表示为:

E(M)=C。

解密函数D作用于C产生M,用数据公式表示为:

D(C)=M。

先加密后再解密消息,原始的明文将恢复出来,D(E(M))=M必须成立。

5、鉴别、完整性和抗抵赖性

⏹除了提供机密性外,密码学需要提供三方面的功能:

鉴别、完整性和抗抵赖性。

这些功能是通过计算机进行社会交流,至关重要的需求。

⏹鉴别:

消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。

⏹完整性:

消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。

⏹抗抵赖性:

发送消息者事后不可能虚假地否认他发送的消息。

6、算法和密钥

⏹现代密码学用密钥解决了这个问题,密钥用K表示。

K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间。

加密和解密运算都使用这个密钥,即运算都依赖于密钥,并用K作为下标表示,加解密函数表达为:

⏹EK(M)=C

⏹DK(C)=M

⏹DK(EK(M))=M,如图8-2所示。

⏹有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:

⏹EK1(M)=C

⏹DK2(C)=M

⏹函数必须具有的特性是,DK2(EK1(M))=M,如图8-3所示。

7、对称算法

⏹基于密钥的算法通常有两类:

对称算法和公开密钥算法(非对称算法)。

对称算法有时又叫传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。

⏹在大多数对称算法中,加解密的密钥是相同的。

对称算法要求发送者和接收者在安全通信之前,协商一个密钥。

对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。

对称算法的加密和解密表示为:

⏹EK(M)=C

⏹DK(C)=M

8、公开密钥算法

⏹公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。

⏹之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。

加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。

⏹公开密钥K1加密表示为:

EK1(M)=C。

公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:

DK2(C)=M。

9、DES对称加密技术

DES(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。

10、DES算法的历史

⏹美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。

⏹加密算法要达到的目的有四点。

⏹提供高质量的数据保护,防止数据XX的泄露和未被察觉的修改;

⏹具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;

⏹DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;

⏹实现经济,运行有效,并且适用于多种完全不同的应用。

11、DES算法的安全性

⏹DES算法正式公开发表以后,引起了一场激烈的争论。

1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机器需要两千万美元。

⏹1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5×107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间可以降到2.5小时。

可见这种机制是不安全的。

12、DES算法的安全性

⏹1997年1月28日,美国的RSA数据安全公司在互联网上开展了一项名为“密钥挑战”的竞赛,悬赏一万美元,破解一段用56比特密钥加密的DES密文。

计划公布后引起了网络用户的强力响应。

一位名叫RockeVerser的程序员设计了一个可以通过互联网分段运行的密钥穷举搜索程序,组织实施了一个称为DESHALL的搜索行动,成千上万的志愿者加入到计划中,在计划实施的第96天,即挑战赛计划公布的第140天,1997年6月17日晚上10点39分,美国盐湖城Inetz公司的职员MichaelSanders成功地找到了密钥,在计算机上显示了明文:

“Theunknownmessageis:

Strongcryptographymakestheworldasaferplace”。

13、DES算法的原理

⏹DES算法的入口参数有三个:

Key、Data、Mode。

其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式有两种:

加密或解密。

⏹DES算法是这样工作的:

如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。

14、DES算法的实现步骤

⏹DES算法实现加密需要三个步骤:

⏹第一步:

变换明文。

对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。

⏹第二步:

按照规则迭代。

规则为

⏹Li=Ri-1

⏹Ri=Li⊕f(Ri-1,Ki)(i=1,2,3…16)

⏹经过第一步变换已经得到L0和R0的值,其中符号⊕表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。

f和Ki将在后面介绍。

15、第三步:

对L16R16利用IP-1作逆置换,就得到了密文y。

加密过程如图8-4所示。

从图中可以看出,DES加密需要四个关键点:

1、IP置换表和IP-1逆置换表。

2、函数f。

3、子密钥Ki。

4、S盒的工作原理。

16、

(1)IP置换表和IP-1逆置换表

⏹输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换IP表如表8-1所示。

58

50

12

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

⏹将输入64位比特的第58位换到第一位,第50位换到第二位,依此类推,最后一位是原来的第7位。

L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。

比如:

置换前的输入值为D1D2D3…D64,则经过初始置换后的结果为:

L0=D58D50...D8,R0=D57D49...D7。

⏹经过16次迭代运算后。

得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。

逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换IP-1,又将第40位换回到第1位,其逆置换IP-1规则表8-2所示。

17、逆置换表IP-1

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

(2)函数f

函数f有两个输入:

32位的Ri-1和48位Ki,f函数的处理流程如图8-5所示。

E变换的算法是从Ri-1的32位中选取某些位,构成48位。

即E将32比特扩展变

换为48位,变换规则根据E位选择表,如表8-3所示。

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

Ki是由密钥产生的48位比特串,具体的算法下面介绍。

将E的选位结果与Ki

作异或操作,得到一个48位输出。

分成8组,每组6位,作为8个S盒的输入。

每个S盒输出4位,共32位,S盒的工作原理将在第第四步介绍。

S盒的输出作为P变换的输入,P的功能是对输入进行置换,P换位表如表8-4所示。

16

7

20

21

29

12

28

17

1

15

23

26

5

18

31

10

2

8

24

14

32

27

3

9

19

13

30

6

22

11

4

25

(3)子密钥ki

假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。

K的下标i的取值范围是1到16,用16轮来构造。

构造过程如图8-6所示。

首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其

前28位为C0,后28位为D0。

PC1选位如表8-5所示。

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

30

22

14

6

61

53

45

37

29

21

13

5

28

20

12

4

⏹第一轮:

对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。

其中LS1是左移的位数,如表8-6所示。

1

1

2

2

2

2

2

2

1

2

2

2

2

2

2

1

⏹表8-6中的第一列是LS1,第二列是LS2,以此类推。

左移的原理是所有二进位向左移动,原来最右边的比特位移动到最左边。

其中PC2如表8-7所示。

⏹表8-6中的第一列是LS1,第二列是LS2,以此类推。

左移的原理是所有二进位向左移动,原来最右边的比特位移动到最左边。

其中PC2如表8-7所示。

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

⏹第二轮:

对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。

如此继续,分别得到K3,K4…K16。

(4)S盒的工作原理

⏹S盒以6位作为输入,而以4位作为输出,现在以S1为例说明其过程。

假设输入为A=a1a2a3a4a5a6,则a2a3a4a5所代表的数是0到15之间的一个数,记为:

k=a2a3a4a5;由a1a6所代表的数是0到3间的一个数,记为h=a1a6。

在S1的h行,k列找到一个数B,B在0到15之间,它可以用4位二进制表示,为B=b1b2b3b4,这就是S1的输出。

⏹DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、最后一次用K0,算法本身并没有任何变化。

DES的算法是对称的,既可用于加密又可用于解密。

17、DES算法的应用误区

⏹DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。

而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。

18、DES算法的程序实现

⏹根据DES算法的原理,可以方便的利用C语言实现其加密和解密算法。

程序在VC++6.0环境下测试通过

⏹在VC++6.0中新建基于控制台的Win32应用程序,算法如程序proj8_1.cpp所示。

⏹设置一个密钥匙为数组charkey[8]={1,9,8,0,9,1,7,2},要加密的字符串数组是str[]="Hello",利用Des_SetKey(key)设置加密的密钥,调用Des_Run(str,str,ENCRYPT)对输入的明文进行加密,其中第一个参数str是输出的密文,第二个参数str是输入的明文,枚举值ENCRYPT设置进行加密运算。

程序执行的结果如图8-7所示。

二、RSA算法的原理

1、1976年,Diffie和Hellman在文章“密码学新方向(NewDirectioninCryptography)”中首次提出了公开密钥密码体制的思想,1977年,Rivest、Shamir和Adleman三个人实现了公开密钥密码体制,现在称为RSA公开密钥体制,它是第一个既能用于数据加密也能用于数字签名的算法。

这种算法易于理解和操作,算法的名字以发明者的名字命名:

RonRivest,AdiShamir和LeonardAdleman。

但RSA的安全性一直未能得到理论上的证明。

它经历了各种攻击,至今未被完全攻破。

2、RSA体制可以简单描述如下:

(1)、生成两个大素数p和q。

(2)、计算这两个素数的乘积n=p×q。

⏹(3)、计算小于n并且与n互质的整数的个数,即欧拉函数φ(n)=(p-1)(q-1)。

⏹(4)、选择一个随机数b满足1

⏹(5)、计算ab=1modφ(n)。

⏹(6)、保密a,p和q,公开n和b。

⏹利用RSA加密时,明文以分组的方式加密:

每一个分组的比特数应该小于log2n比特。

加密明文x时,利用公钥(b,n)来计算c=xbmodn就可以得到相应的密文c。

解密的时候,通过计算camodn就可以恢复出明文x。

⏹选取的素数p和q要足够大,从而乘积n足够大,在事先不知道p和q的情况下分解n是计算上不可行的。

⏹常用的公钥加密算法包括:

RSA密码体制、ElGamal密码体制和散列函数密码体制(MD4、MD5等)。

3、RSA体制可以简单描述如下:

(1)、生成两个大素数p和q。

(2)、计算这两个素数的乘积n=p×q。

⏹(3)、计算小于n并且与n互质的整数的个数,即欧拉函数φ(n)=(p-1)(q-1)。

⏹(4)、选择一个随机数b满足1

⏹(5)、计算ab=1modφ(n)。

⏹(6)、保密a,p和q,公开n和b。

⏹利用RSA加密时,明文以分组的方式加密:

每一个分组的比特数应该小于log2n比特。

加密明文x时,利用公钥(b,n)来计算c=xbmodn就可以得到相应的密文c。

解密的时候,通过计算camodn就可以恢复出明文x。

⏹选取的素数p和q要足够大,从而乘积n足够大,在事先不知道p和q的情况下分解n是计算上不可行的。

⏹常用的公钥加密算法包括:

RSA密码体制、ElGamal密码体制和散列函数密码体制(MD4、MD5等)。

4、RSA算法的安全性

⏹RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。

假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。

目前,RSA的一些变种算法已被证明等价于大数分解。

不管怎样,分解n是最显然的攻击方法。

现在,人们已能分解多个十进制位的大素数。

因此,模数n必须选大一些,因具体适用情况而定

5、RSA算法的速度

⏹由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。

速度一直是RSA的缺陷。

一般来说只用于少量数据加密。

⏹RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。

RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。

6、RSA算法的程序实现

⏹根据RSA算法的原理,可以利用C语言实现其加密和解密算法。

RSA算法比DES算法复杂,加解密的所需要的时间也比较长。

⏹本案例利用RSA算法对文件的加密和解密。

算法根据设置自动产生大素数p和q,并根据p和q的值产生模(n)、公钥(e)和密钥(d)。

利用VC++6.0实现核心算法,如图8-8所示。

编译执行程序,如图8-9所示。

该对话框提供的功能是对未加密的文件进行加密,并可以对已经加密的文件进行解密。

⏹在图8-9中点击按钮“产生RSA密钥对”,在出现的对话框中首先产生素数p和素数q,如果产生100位长度的p和q,大约分别需要10秒左右,产生的素数如图8-10所示。

利用素数p和q产生密钥对,产生的结果如图8-11所示。

⏹必须将生成的模n、公密e和私密d导出,并保存成文件,加密和解密的过程中要用到这三个文件。

其中模n和私密d用来加密,模n和公密e用来解密。

将三个文件分别保存,如图8-12所示。

在主界面选择一个文件,并导入“模n.txt”文件到RSA模n文本框,导入“私密.txt”文件或者“公密.txt”,加密如果用“私密.txt”,那么解密的过程就用“公密.txt”。

反之依然,加密过程如图8-13所示。

⏹加密完成以后,自动产生一个加密文件,如图8-14所示。

⏹解密过程要在输入文件对话框中输入已经加密的文件,按钮“加密”自动变成“解密”。

选择“模n.txt”和密钥,解密过程如图8-15所示。

解密成功以后,查看原文件和解密后的文件,如图8-16所示。

二、PG技术

1、(PrettyGoodPrivacy)加密技术是一个基于RSA公钥加密体系的邮件加密软件,提出了公共钥匙或不对称文件的加密技术

⏹PGP加密技术的创始人是美国的PhilZimmermann。

他的创造性把把RSA公钥体系和传统加密体系的结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为目前几乎最流行的公钥加密软件包。

⏹由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,IDEA加解密的速度比RSA快得多。

PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。

收件人同样是用RSA解出随机密钥,再用IEDA解出原文。

这样的链式加密既有RSA算法的保密性(Privacy)和认证性(Authentication),又保持了IDEA算法速度快的优势。

2、PGP加密软件

⏹PGP加密软件最新版本是8.0.2,使用PGP8.0.2i可以简洁而高效地实现邮件或者文件的加密、数字签名。

⏹PGP8.0.2的安装界面如图8-17所示。

下面的几步全面采用默认的安装设置,因为是第一次安装,所以在用户类型对话框中选择“No,IamaNewUser”,如图8-18所示

⏹根据需要选择安装的组件,一般根据默认选项就可以了:

“PGPdiskVolumeSecurity”的功能是提供磁盘文件系统的安全性;“PGPmailforMicrosoftOut

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1