第2章 密码学应用基础_第1页
第2章 密码学应用基础_第2页
第2章 密码学应用基础_第3页
第2章 密码学应用基础_第4页
第2章 密码学应用基础_第5页
已阅读5页,还剩148页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章密码学应用基础本章学习重点掌握内容:密码学基本术语密码体制分类私钥密码体制的主要特点公钥密码体制的主要特点杂凑函数的基本概念典型密码算法3/19/20241第2章密码学应用基础2.1概述2.2私钥密码体制2.3公钥密码体制2.4杂凑函数2.5密码算法应用实例——PGP2.6实验——PGP加密并签名邮件3/19/202422.1概述

密码学(Cryptology)是研究密码编制、密码破译和密钥管理的一门综合性应用科学。其主要研究内容包括两个分支:密码编码学(Cryptography)和密码分析学(Cryptanalytics),两者既相互对立,又相互促进发展。密码编码学是研究如何对信息进行编码实现信息的隐蔽;密码分析学是研究如何分析破译密码。3/19/202432.1概述2.1.1密码学发展历史分为三个阶段第一阶段是从古代到1949年。这一时期被称作“科学密码学的前夜”,所研究的内容被称为古典密码学。第二阶段是从1949年到1975年。1949年Shannon发表的“保密系统的信息理论”一文标志着密码学从此成为一门科学,由此拉开了现代密码学研究的序幕。该文,奠定了密码学的理论基础。(私钥密码体制)第三阶段从1976年至今。非对称密钥提出,开创了公钥密码学的新纪元。

(公钥密码体制)3/19/202442.1概述2.1.2密码学基本术语

明文、密文

被隐蔽的消息被称做明文(PlainText),通常用P或M表示。隐蔽后的消息被称做密文(CipherText),通常用C表示。发送者、接收者在信息传送过程中,主动提供信息的一方称为发送者,得到信息的一方称为接收者。3/19/202452.1.2密码学基本术语加密、解密、加密算法、解密算法将明文变换成密文的过程称为加密(Encryption)。将密文变换成明文的过程称为解密(Decryption)。对明文进行加密时所采用的一组规则称为加密算法(EncryptionAlgorithm)。通常用E表示。对密文进行解密时所采用的一组规则称为解密算法(DecryptionAlgorithm)。通常用D表示。密钥加密和解密算法的操作通常都是在一组密钥(Key)的控制下进行的,分别称为加密密钥和解密密钥。通常用Ke和Kd表示。3/19/202462.1.2密码学基本术语截收者在消息的传输和处理系统中,除了信息的合法授权接收者外,还有非授权者,他们通过各种手段,如:搭线窃听、电磁窃听、声音窃听等来窃取机密信息,称其为截收者。主动攻击、被动攻击攻击者主动向系统窜扰,采用删除、更改、增填、重放、伪造等手段向系统注入假消息,以达到一定的目的,这样的攻击手段称作主动攻击;对一个密码系统采取截获密文进行分析的这类攻击称作被动攻击。密码系统通常简称为密码体制(Cryptosystem),由五元组(M,C,K,E,D)构成密码系统模型参见图2-1。五元组(M,C,K,E,D)描述如下:明文空间M,它是全体明文的集合;密文空间C,它是全体密文的集合;C=EK(M),M=DK(C)3/19/20247密钥空间K,它是全体密钥的集合,其中每一个密钥K均由加密密钥和解密密钥组成;加密算法E,它是由明文空间到密文空间的加密变换;解密算法D,它是由密文空间到明文空间的解密变换。3/19/20248密码系统模型3/19/202492.1.3密码体制分类根据密钥的特点对称密码体制(SymmetricCryptosystem)单钥(One-Key)体制或私钥(PrivateKey)体制或传统密码体制(ClassicalCryptosystem);非对称密码体制(AsymmetricCryptosystem)。双钥(Two-Key)或公钥(PublicKey)密码体制。3/19/202410对称加密体制:这种体制的加密密钥和解密密钥相同或者本质上相同(即从其中一个可以很容易地推出另一个)。非对称加密体制:这种体制的加密密钥和解密密钥不相同,而且从其中一个很难推出另一个。通常将加密密钥公开,称为公钥;解密密钥严格保密,称为私钥。

3/19/2024112.1.3密码体制分类根据加密模式的不同,私钥密码体制可以分为序列密码和分组密码。

1、序列密码:又称为流密码。这种体制是将明文M看成是连续的比特流或字符流(m1m2m3…),并用密钥序列K(k1k2k3…)中的第i个元素ki对明文中的mi进行逐位加密。

这种密码由于没有固定的规律可寻,因此也不容易被破解。但由于这种序列密码是密钥对明文的逐位加密,因此需要和明文等长的密钥序列,如果明文太长,将不利于密钥的制订和管理。3/19/2024122、分组密码:先将明文划分为固定长度的数据组,以组为单位进行加密。即用一个固定的变换对一个比较大的明文数组进行操作。这种密码的密钥相对较短,因此出于安全的考虑,加密变换的算法起着至关重要的作用。

流密码和分组密码的区别:流密码是将明文消息按字符逐位加密;分组密码是将明文消息先进行分组,再逐组加密。目前多数私钥密码体制采用的是分组密码体制,仅有少量的加密体制采用的是流密码体制。

3/19/202413需要指出:无论哪种密码体制,密码算法的安全性依赖于密钥的安全。或者说,一个密码系统的安全性不依赖于算法,而仅与密钥有关。3/19/202414密码体制发展过程:1.古典密码体制2.私钥密码体制3.现代密码体制3/19/2024151.古典密码体制经典加密技术:替代技术:替代是指明文中的每个元素被映射为另一元素;置换技术:置换是指明文中的元素被重新排列;3/19/2024161.单表替代(monoalphabetic)每一个明文字母被任意地对应到一个密文字母。密钥有26字母长。明文字母:abcdefghijklmnopqrstuvwxyz

密文字母:DKVQFIBJWPESCXHTMYAUOLRGZN(密码本)明文:ifwewishtoreplaceletters密文:WIRFRWAJUHYFTSDVFSFUUFYA3/19/202417替代技术——凯撒密码最早的替代密码算法首先用于军事每一个字母用后面的第3个字母替代例如:meetmeafterthetogapartyPHHWPHDIWHUWKHWRJDSDUWB规则:明文中的每一个字母按照英文字母的顺序被排在其后面的第三个字母所替代而产生相应的密文。

3/19/202418凯撒密码的原理:c≡m+kmod26

令26个字母分别对应于整数0~25比如a=1,b=2……y=25,z=0。

凯撒加密变换实际上是

c≡m+kmod26,k叫密钥。

比如:

datasecurity对应数据序列

4,1,20,1,19,5,3,21,18,9,20,25

k=5时,得密文序列

9,6,25,6,24,10,8,0,23,14,25,4

如果选取k1,k2两个参数,其中k1与26互素,令c≡k1m+k2mod26。这种变换称为仿射变换

3/19/202419凯撒密码-安全性仅有26种可能性A映射到A,B,..Z蛮力攻击(穷举攻击)试尽所有可能性需要能够识别什么是明文例如:破解密文"GCUAVQDTGCM"3/19/2024202.多表替代技术——Vigenere(维吉尼亚)这是一种典型的多表替代密码,相当于多个凯撒密码,即一个明文字母可以表示为多个密文字母。方法如下:

设密钥k=k1k2…kn,明文M=m1m2…mn,加密变换Ek(M)=c1c2…cn。

其中:ci≡(mi+ki)mod26,i=1,2…n。

例如,M=datasecurity,k=best。首先将M分解为长为4的序列datasecu

rity

每一节利用密钥k=best加密得密文c=Ek(M)=EELTTIUNSMLR总结:把每一个密钥字母作为一个凯撒密码来加密明文。3/19/2024212.多表替代技术——Playfair密码英国人CharlesWheatstone于1854发明,但以他的朋友BaronPlayfair命名。通过加密两个字母来增进安全性。Playfair密码的密钥为5*5的矩阵:关键词为MONARCHYMONARCHYBDEFGI/JKLPQSTUVWXZ矩阵构造规则:从左至右,从上至下填入该关键词的字母(去除重复字母),然后再以字母表顺序将余下的字母填入矩阵剩余空间。字母I和J看作一个字母。3/19/202422Playfair密码-编码原则将明文中的双字母组合成一个单元对待重复字母插入X

balloon”转变为"balxloon"同一行的两个字母,以右边的字母来代替如“ar”用“RM”代替同一列的两个字母,以下边的字母来代替如“mu”用“CM”代替否则用对角线的字母代替如“hs”用“BP”代替

MONARCHYBDEFGI/JKLPQSTUVWXZ3/19/202423Hill密码由纽约Hunter大学的数学家LesterHill于1929年发明。Hill在35岁时(1926年)获得Yale大学的博士学位。Hill加密算法的基本思想是将明文字母通过线性变换将它们转换为密文字母。取m个连续明文字母,用m个密文字母替代。C1=(k11p1+k12p2+k13p3)mod26C2=(k21p1+k22p2+k23p3)mod26C3=(k31p1+k32p2+k33p3)mod26加密:C=Ek(P)=KP解密:P=Dk(C)=K-1C3/19/202424Hill密码的例子1例子:当m=2时,明文元素x=(x1,x2),密文元素y=(y1,y2)

若K=

,可得K-1=若对明文

july加密,它分成2个元素(j,u),(l,y),分别对应于(9,20),(11,24),有

于是对july加密的结果为DELW。3/19/202425Hill密码的例子为了解密,Bob计算

因此,得到了正确的明文“july”3/19/202426Hill密码的例子2例如:密钥(密码学中好象没有"密匙"一词)矩阵

13

02明文:HITHERE去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元:

HITHEREE

8(H)20(T)5(E)5(E)

9(I)8(H)18(R)5(E)

HI经过矩阵运算转换为IS,具体算法参考下面的说明:

|13|8=1*8+3*9=35MOD26=9=I

|02|9=0*8+2*9=18MOD26=18=R3/19/202427网络加密方式(补充)2.2.1链路加密

2.2.2节点加密

2.2.3端-端加密

3/19/2024281链路加密链路加密是目前最常用的一种加密方法,通常用硬件在网络层以下(1、2层)的物理层和数据链路层中实现,它用于保护通信节点间传输的数据。图2-4表示了这种加密方式的原理。

链路加密方式有两个缺点;一是全部报文都以明文形式通过各节点的计算机中央处理机,在这些节点上数据容易受到非法存取的危害;二是由于每条链路都要有一对加密/解密设备和一个独立的密钥,维护节点的安全性费用较高,因此成本也较高。3/19/2024292节点加密节点加密是链路加密的改进,其目的是克服链路加密在节点处易遭非法存取的缺点。其加密原理如图2-5所示。3/19/2024303端-端加密

网络层以上的加密,通常称为端—端加密。端—端加密是面向网络高层主体进行的加密,即在协议表示层上对传输的数据进行加密,而不对下层协议信息加密。协议信息以明文形式传输,用户数据在中间节点不需要加密。端—端加密原理如图2-6所示。3/19/202431端—端加密具有链路加密和节点加密所不具有的优点:(1)成本低。出于端—端加密在中间任何节点上都不解密,即数据在到达目的地之前始终用密钥加密保护着,所以仅要求发送节点和最终的目标节点具有加密/解密设备,而链路加密则要求处理加密信息的每条链路均配有分立式密钥装置。(2)端—端加密比链路加密更安全。(3)端—端加密可以由用户提供,因此对用户来说这种加密方式比较灵活。3/19/2024322.私钥密码体制私钥密码的加密、解密密钥相同或者容易互相推出。根据对明文加密方式的不同,私钥密码体制可分为流密码和分组密码。流密码也叫序列密码,是指一次仅对单个比特(字节)进行运算的算法;分组密码是将明文消息分组(每组含多个字符),逐组加密。常见的私钥密码算法有:DES、AES、IDEA、RC4、RC5等。3/19/202433私钥密码算法比较算法名称算法类型算法参数算法特点DES分组密码分组长度:64比特密钥长度:64比特迭代圈数:16圈从1977年公布以来,使用最广泛的分组密码算法,算法简单易实现。目前为保证其安全性,常使用双重或三重DESAES分组密码分组长度(可变):128、192、256比特密钥长度(可变):128、192、256比特迭代圈数(可变)10,12,14圈2000年公布的最新分组密码加密标准,是目前常用的安全强度较高的分组密码,常用分组长度为128比特,密钥长度为128比特,迭代圈数为10圈IDEA分组密码分组长度:64比特密钥长度:128比特迭代圈数:8圈1992年正式使用以来,被较多使用的一种安全、效率较高的分组密码,被成功用于PGP邮件加密系统中。RC4流密码密钥长度可变1987年RSA公司开发的流密码算法;采用OFB模式,加密速度快,约为DES的10倍RC5分组密码RSA公司1994年设计,既适合于硬件实现又适合于软件实现。Blowfish分组密码分组长度:64比特密钥长度可变,最长可达448比特适合于内存较大的微处理器,不适合于分组交换、经常更换密钥和单向函数中。3/19/202434DES对称加密技术DES(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES使用一个56位的密钥以及附加的8位奇偶校验位,产生最大64位的分组大小。攻击DES的主要形式被称为蛮力的或彻底密钥搜索,即重复尝试各种密钥直到有一个符合为止。

3/19/202435DES算法的历史美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的有四点:提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握;DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;实现经济,运行有效,并且适用于多种完全不同的应用。3/19/202436DES算法的安全性

DES算法正式公开发表以后,引起了一场激烈的争论。1977年Diffie和Hellman提出了制造一个每秒能测试106个密钥的大规模芯片,这种芯片的机器大约一天就可以搜索DES算法的整个密钥空间,制造这样的机器需要两千万美元。1993年R.Session和M.Wiener给出了一个非常详细的密钥搜索机器的设计方案,它基于并行的密钥搜索芯片,此芯片每秒测试5×107个密钥,当时这种芯片的造价是10.5美元,5760个这样的芯片组成的系统需要10万美元,这一系统平均1.5天即可找到密钥,如果利用10个这样的系统,费用是100万美元,但搜索时间可以降到2.5小时。可见这种机制是不安全的。3/19/202437

DES算法的安全性

1997年1月28日,美国的RSA数据安全公司在互联网上开展了一项名为“密钥挑战”的竞赛,悬赏一万美元,破解一段用56比特密钥加密的DES密文。计划公布后引起了网络用户的强力响应。一位名叫Rocke

Verser的程序员设计了一个可以通过互联网分段运行的密钥穷举搜索程序,组织实施了一个称为DESHALL的搜索行动,成千上万的志愿者加入到计划中,在计划实施的第96天,即挑战赛计划公布的第140天,1997年6月17日晚上10点39分,美国盐湖城Inetz公司的职员MichaelSanders成功地找到了密钥,在计算机上显示了明文:“Theunknownmessageis:Strongcryptographymakestheworldasaferplace”。3/19/202438DES算法的原理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的输出结果。3/19/202439DES算法的实现步骤DES算法实现加密需要三个步骤:第一步:变换明文。对给定的64位比特的明文x,首先通过一个置换IP表来重新排列x,从而构造出64位比特的x0,x0=IP(x)=L0R0,其中L0表示x0的前32比特,R0表示x0的后32位。第二步:按照规则迭代。规则为Li=Ri-1Ri=Li⊕f(Ri-1,Ki)

(i=1,2,3…16)经过第一步变换已经得到L0和R0的值,其中符号⊕表示的数学运算是异或,f表示一种置换,由S盒置换构成,Ki是一些由密钥编排函数产生的比特块。f和Ki将在后面介绍。3/19/202440第三步:对L16R16利用IP-1作逆置换,就得到了密文y。加密过程如图8-4所示。3/19/202441DES加密的四个关键点:从图中可以看出,DES加密需要四个关键点:1、IP置换表和IP-1逆置换表。2、函数f。3、子密钥Ki。4、S盒的工作原理。3/19/202442(1)IP置换表和IP-1逆置换表输入的64位数据按置换IP表进行重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换IP表如表8-1所示。58501234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157IP置换表3/19/202443IP置换与逆置换将输入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所示。3/19/202444逆置换表IP-140848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725IP-1逆置换表3/19/202445(2)函数f函数f有两个输入:32位的Ri-1和48位Ki,f函数的处理流程如图8-5所示。3/19/202446E变换E变换的算法是从Ri-1的32位中选取某些位,构成48位。即E将32比特扩展变换为48位,变换规则根据E位选择表,如表8-3所示。3212345456789891011121312131415161716171819202120212223242524252627282928293031321E位选择表3/19/202447Ki是由密钥产生的48位比特串,具体的算法下面介绍。将E的选位结果与Ki作异或操作,得到一个48位输出。分成8组,每组6位,作为8个S盒的输入。每个S盒输出4位,共32位,S盒的工作原理将在第四步介绍。S盒的输出作为P变换的输入,P的功能是对输入进行置换,P换位表如表8-4所示。1672021291228171152326518311028241432273919133062211425P换位表3/19/202448(3)子密钥ki假设密钥为K,长度为64位,但是其中第8、16、24、32、40、48、64用作奇偶校验位,实际上密钥长度为56位。K的下标i的取值范围是1到16,用16轮来构造。构造过程如图8-6所示。3/19/202449首先,对于给定的密钥K,应用PC1变换进行选位,选定后的结果是56位,设其前28位为C0,后28位为D0。PC1选位如表8-5所示。57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124PC1选位表3/19/202450第一轮:对C0作左移LS1得到C1,对D0作左移LS1得到D1,对C1D1应用PC2进行选位,得到K1。其中LS1是左移的位数,如表8-6所示。1122222212222221LS移位表3/19/202451表8-6中的第一列是LS1,第二列是LS2,以此类推。左移的原理是所有二进位向左移动,原来最左边的比特位移动到最右边。其中PC2如表8-7所示。14171124153281562110231912,42681672720132415231374755304051453348444939563453464250362932PC2选位表3/19/202452第二轮:对C1,D1作左移LS2得到C2和D2,进一步对C2D2应用PC2进行选位,得到K2。如此继续,分别得到K3,K4…K16。3/19/202453(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的算法是对称的,既可用于加密又可用于解密。3/19/202454DES算法的应用误区

DES算法具有比较高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。3/19/2024552.2私钥密码体制

2.2.1简化DES(S-DES)(不讲)为了帮助读者加深对DES算法的理解,掌握DES算法的结构,本节介绍简化DES(S-DES)。S-DES与DES有着相似的性质和结构,但是参数要比DES小得多算法结构如图所示3/19/2024563/19/2024572.2.1简化DES(S-DES)(不讲)S-DES算法描述S-DES的密钥产生在S-DES算法中,由收发双方共享的10位密钥通过置换和移位操作产生了两个8位密钥,这两个8位密钥被分别用在加解密的不同阶段,如图描述了密钥产生过程。下面介绍其产生过程3/19/2024582.2.1简化DES(S-DES)(不讲)置换P10置换P10被定义为:移位操作(LS-1)LS-1表示循环左移一位。置换P8从移位操作输出的10位密钥中选取8位,按下表的规则运用置换P8:移位操作LS-2LS-2表示循环左移2位。352741019866374851003/19/2024592.2.1简化DES(S-DES)S-DES加密(不讲)S-DES加密过程包括4个函数,5步操作。下面根据这些函数使用的先后顺序对这四个函数进行详细介绍。3/19/2024602.2.1简化DES(S-DES)初始置换(IP)S-DES算法的输入是一个8位明文分组,我们首先使用函数对其进行初始置换函数 S-DES算法最复杂的部分,它由置换函数和代换函数组合而成。函数可按如下方式表达。设L和R分别是的八位输入的左边4位和右边4位。F是一个4位到4位的映射。则函数可以表示为其中,SK是子密钥,第一轮取值为K1,第二轮取值为K2,是按位异或函数。263148573/19/2024612.2.1简化DES(S-DES)(不讲)函数F主要包括4步操作。第一步:E/P扩展置换操作41232341第二步:与子密钥异或相加将8位子密钥K1与E/P扩展置换输出的八位按位异或。S盒运算将第二步的输出结果分为左右两部分,各4位。将左4位输入到中得到一个2位的输出。将右4位输入中产生另一个2位的输出。

S盒的操作规则如下:第1位和第4位作为一个2位二进制数决定了S盒的行,第2位和第3位决定了S盒的列。输出也是一个2位的二进制数。3/19/202462S盒列行0123S001032132102021333132S1001231201323010321023/19/2024632.2.1简化DES(S-DES)(不讲)第四步:置换操作P4接下来,由和的输出组成的4位数据再进行如下置换操作:2431交换函数SW函数只改变输入的最左边4位。交换函数SW将输入的左4位和右4位交换,这样再次作用的就是不同的4位了。交换函数SW的输出被第二次输入到函数,逆置换()在S-DES算法的最后,使用的逆置换如下表所示:413572863/19/2024642.2私钥密码体制2.2.2DES简介

S-DES与DES的算法结构相同,但DES的参数较大,其输入为64位分组,函数迭代16圈,因此需要产生16个子密钥。DES的初始输入密钥为64位,其中有效密钥为56位(初始密钥的第8i(i=1,…,8)比特是奇偶校验位),利用子密钥生成算法由56位密钥产生16个48位子密钥。3/19/2024652.2.2DES简介DES的意义具体表现在以下几个方面它公开展示了能完全适应某一历史阶段中信息安全要求的一种密码体制的构造方法;它是世界上第一个数据加密标准,并确立了这样一个原则,即算法的细节可以公开而密钥必须是保密的;它极大地推动了密码算法标准化工作;它的出现及引发的讨论确立了安全设计和使用分组密码的若干准则,并引发了分组密码设计的高潮;它推动了密码分析理论和技术的快速发展,先后出现了差分分析、线性分析等多种新的有效的密码分析方法。3/19/2024662.2.2DES简介多重DES

双重DES双重DES的密钥长度为112比特,可有效地增加算法强度三重DES算法

3/19/2024672.2私钥密码体制

2.2.3高级加密标准AESAES的基本要求:比三重DES快而且至少和三重DES一样安全,分组长度为128比特,密钥长度为128/192/256比特。流程框图3/19/2024682.2私钥密码体制2.2.4分组密码工作模式

指以某个分组密码算法为基础,构造一个分组密码系统方法,构造出的分组密码系统不仅可以解决对任意长度的明文加密问题,还可以构造随机数生成器、流密码、消息认证码及杂凑函数等。实质:研究在不同应用环境中如何使用分组密码算法。

主要有:电码本,密码分组链接,密码反馈,输出反馈

共4种工作模式。3/19/2024691.电码本ECB(ElectronicCodeBook)模式

特点:

最简单的分组密码工作模式是电码本(ECB)模式,每次使用相同的密钥处理一个固定长度为n位的明文分组(以DES为例,就是64位明文分组)。主要优点:无差错传播。在传输过程中,一个密文分组的丢失或传输错误不影响其它分组的正确解密,即传输中的差错不会传播到其它分组块。不同明文分组的加密可并行实施,尤其是硬件实现时速度很快。主要缺点有:容易暴露明文的数据模式,即相同明文会生成相同密文,无法抵御统计攻击。无法抵抗组的重放、嵌入和删除等攻击。为了克服该模式的弱点,可以在加密处理中引入少量的记忆等。3/19/2024702.密码分组链接CBC(CipherBlockChaining)模式(可将重复的明文组加密成不同的密文组)加密模式可以表示为其解密模式可以表示为

加密第一组明文时,需要与一个初始矢量(IV)异或后再加密,即

解密最后一组密文时,也需要初始矢量(IV)的参与,即3/19/202471CBC模式的优缺点CBC模式的优点有:能够隐蔽明文数据模式,相同的明文分组未必蕴涵着相同的密文分组。在一定程度上能够识别攻击者在密文传输中是否对数据作了窜改,如组的重放、嵌入或删除等。具有自同步功能。密文出现丢块和错块不影响后续密文块的脱密。若从第t块起密文块正确,则第t+1个明文块就能正确求出。模式的缺点:CBC模式的缺点是具有有限的错误传播特性。3/19/2024723.s比特密码反馈CFB(CipherFeedback)模式加密算法可以表示为:CFB模式的解密算法可以表示为3/19/2024734.s比特输出反馈OFB(OutputFeedback)模式

OFB用加密函数的输出填充OFB的移位寄存器,CFB模式则用密文单元来填充移位寄存器。优点是传输过程中在某位上发生的错误不会影响其它位。OFB的缺点是,抗消息流篡改攻击的能力不如CFB,即密文中的某位取反,恢复出的的明文相应也取反。3/19/2024744-1S位输出反馈加密模式3/19/2024754-2S位输出反馈解密模式3/19/2024763.公钥密码体制公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来,或者至少在可以计算的时间内不能计算出来。之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公开密钥K1加密表示为:EK1(M)=C。公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:DK2(C)=M。3/19/2024772.3公钥密码体制2.3.1概述

序号对称密码公钥密码密钥数量加密和解密使用相同的密钥加密和解密使用不同密钥密钥种类密钥必须保密存放私钥保密存放,公钥公开存放密钥管理通信前,收发双方必须实现密钥共享通信前,收发双方无需实现密钥共享速度非常快慢用途用来做大量资料的加密用来加密小文件或对信息签字等不太保密的应用(数字签名、密钥交换)3/19/202478公钥密码体制

常规密钥密码体制采用的是对称方法,使用相同的密钥。缺点:从加密的算法和密码,可以推导出解密的算法和密码。在多个发送者和单一接收者来说,不方便。如何安全地分发密钥。3/19/202479公钥密码体制

能够有效计算公钥PK和私钥SK。从已知的公钥PK不能推导出私钥SK。发送方用公钥PK进行加密,而接收方用私钥SK进行解密,还原出明文,即:

DSK(EPK(P))=P。3/19/202480公钥密码学的历史76年Diffie和Hellman发表了“密码学的新方向”,奠定了公钥密码学的基础公钥技术是二十世纪最伟大的思想之一改变了密钥分发的方式可以广泛用于数字签名和身份认证服务78年,RSA算法PKI3/19/202481如:银行有很多客户,每个客户都用公钥加密,而银行则用私钥解密。公开密钥密码体制的实际应用

3/19/202482公钥密码体制

加密密钥和解密密钥各不相同,发送信息的人利用接收者的公钥发送加密信息,接收者再利用自己专有的私钥进行解密。目前公钥体制广泛的用于CA认证,数字签名和密钥交换等领域。非对称加密的基本原理依赖于大整数因子分解的困难性和复杂性

3/19/202483RSA算法过程(1)密钥产生过程①选择p和q。其中p和q都是素数,且p和q不相等;②计算n=pq;③计算H(n)=(p-1)(q-1);④选择整数e,使之满足gcd(H(n),e)=1,1<e<H(n);⑤计算d,使之满足(d*e)modH(n)=1;⑥得到公钥PU={e,n},私钥PR={d,n}。3/19/202484非对称加密算法RSA——加密原理密文=(明文)emodn明文=(密文)dmodn私钥={d,n}公钥={e,n}3/19/202485RSA算法过程(2)加密明文M<n,由加密公式C=Memodn得到密文。解密密文C<n,由解密公式M=Cdmodn得到明文。3/19/202486RSA示例

首先产生公钥和私钥①选择了两个素数,例如选择p=11,q=13②现在计算n=pq,这意味着n=11*13=143③现在必须计算H(n)=(p-1)(q-1)=10*12=120④选择对于H(n)=120的一个互质数为e,这里选择e=7⑤必须决定d,以便使(d*e)modH(n)=1,因此(d*7)mod120=1,并且d必须小于120可以得到d=103(103乘以7等于721.721除以120等于6,余数为1)⑥私钥是{103,143}⑦公钥是{7,143}3/19/202487RSA示例如果希望发送的消息为9(明文),可以使用加密公式:密文=97mod143=48收到加密之后,要使用解密算法:明文=48103mod143=9加解密的过程如图3-5所示。

3/19/202488RSA示例3/19/202489RSA举例1举例:1.选择p=7,q=17。2.计算n=p*q=119,Φ(n)=(p-1)*(q-1)=96。3.选e=5,因为5和96互素。4.根据5dmod96=1,得d=77。5.公钥为(5,117),私钥为77。如:明文为P=6密文:C=Pemodn=65mod119=41。解密:P=Cdmodn=4177mod119=6。3/19/202490

每个合数都可以唯一地分解出素数因子

6=2·3 999999=3·3·3·7·11·13·37 27641=131·121

从2开始试验每一个小于等于√27641的素数。素数:只能被1和它本身整除的自然数;否则为合数。整数n的十进制位数因子分解的运算次数所需计算时间(每微秒一次)

50 1.4x1010 3.9小时 75 9.0x1012 104天 100 2.3x1015 74年

200 1.2x1023 3.8x109年 300 1.5x1029 4.0x1015年

500 1.3x1039 4.2x1025年3/19/202491素数p,q的选取为了抵抗现有的整数分解算法,对RSA模n的素因子p和q还有如下要求:(1)|p-q|很大,通常p和q的长度相同;(2)p-1和q-1分别含有大素因子p1和q1(3)P1-1和q1-1分别含有大素因子p2和q2(4)p+1和q+1分别含有大素因子p3和q33/19/202492加密指数e的选取为了提高加密速度,通常取e为特定的小整数,如EDI国际标准中规定e=216+1,ISO/IEC9796中甚至允许取e=3。这时加密速度一般比解密速度快10倍以上。

e=216+1优于e=3之处在于它能够抵抗对RSA的小加密指数攻击3/19/202493实现中的问题

(1)如何计算abmodn

(2)如何判定一个给定的整数是素数? (3)如何找到足够大的素数p和q?3/19/202494:a=bmodn,则b=amodna=bmodn,b=cmodn,则a=cmodnamodn=bmodn,则(a-b)modn=0[(amodn)+(bmodn)]modn=(a+b)modn[(amodn)-(bmodn)]modn=(a-b)modn[(amodn)*(bmodn)]modn=(a*b)modn例:计算8744mod12数论运算法则3/19/202495例:明文m为“inclub”。则操作过程如下:1、设计密钥公钥(e,n)和私钥(d,n)令p=3,q=11。取e=3,计算:n=p*q=33,求出φ(n)=(p-1)(q-1)=20计算:e×dmodφ(n)=1,即在与55互素的数中选取与40互素的数得:d=7(保密数)。因此:公钥对为(3,33),私钥对为(7,33)。2、加密:按1-26的次序排列字母,用公钥(3,55)加密:令a-00,b-01,…,y-24,z-25。

用户A查到n和e后,将消息m加密:EB(i)=083mod33=17,EB(n)=133mod33=19,EB(c)=023mod33=8,EB(l)=113mod33=11,EB(u)=203mod33=14,EB(b)=013mod33=1,

c=EB(m)=171908111401,它对应的密文为c=rtilob

。3、解密:DB(r)=177mod33=8,即明文i,依次计算即可

还原成功。3/19/2024963/19/202497

RSA体制不仅能实现通信保密,还能实现数字签名,因而特别适用于现代密码通信的要求。RSA公钥密码体制至少有以下一些优点:(1)数学表达式简单,在公钥密码体制中是最容易理解和实现的一个。(2)RSA的安全性基于大数分解的困难性。RSA公钥密码体制的安全性比较高。(3)RSA公钥密码体制具有一些传统密码体制不能实现的一些功能,如认证、鉴别和数字签名等,特别适合于现代密码通信。

3/19/2024982.3.1概述公钥密码体制必须具有如下特性:给定公钥,要确定出私钥是计算上不可行的。公钥密码体制有两种基本模型,一种是加密模型;另一种是认证模型。公钥密码体制可以简化密钥的管理,并且可通过公开系统如公开目录服务来分配密钥。3/19/2024992.3.1概述加密模式:用接收方的公钥加密信息。Alice将秘密信息加密后发送给Bob:Bob用其私钥解密获得秘密信息;认证模式:用发送方的私钥签名信息Alice将签名后的信息发送给Bob;Bob用Alice的公钥解签确认信息来自于Alice;

3/19/20241002.3.1概述加密认证模式:Alice先使用Bob的公钥加密消息,接着再使用自身私钥签名。

Bob用Alice公钥解签,确认信息是从Alice处发出;接着,Bob用自身私钥对加密信息解密获得明文信息。

3/19/2024101公钥密码体制安全性公钥密码体制中公开的信息多,因此对算法设计者来说,公钥密码体制设计比对称密码设计更具有挑战性。目前常用的公钥密码体制,其安全性基础多是来自于数学难解问题,一类是基于大整数因子分解问题,另一类是基于离散对数问题。3/19/20241022.3.2RSA加密体制RSA是最常见的公钥算法之一。其优点是简单,易理解;其缺点是算法实现速度较慢。步骤:1、公钥和私钥的生成算法

独立的选取两个大素数P1和P2(通常为100到200位的十进制数字),计算欧拉函数值

随机选一整数e,1≤e≤G(n),e在模下有逆元:公式3/19/20241032.3.2RSA加密体制那么:公钥为n,e,私钥为d2、加密算法3、解密算法

在采用RSA算法进行通信前,通信双方都必须产生一对密钥,即需要做以下工作:确定两个大素数p,q选择e或d,并计算d或者e3/19/2024104RSA加密的一个实例举例:1.选择p=7,q=17。2.计算n=p*q=119,Φ(n)=(p-1)*(q-1)=96。3.选e=5,因为5和96互素。4.根据5dmod96=1,得d=77。5.公钥为(5,117),密钥为77。如:明文为P=6密文:C=Pemodn=65mod119=41。解密:P=Cdmodn=4177mod119=6。3/19/2024105利用RSA加密时,明文以分组的方式加密:每一个分组的比特数应该小于log2n比特。加密明文x时,利用公钥(e,n)来计算c=xemodn就可以得到相应的密文c。解密的时候,通过计算x=cdmodn就可以恢复出明文x。选取的素数p和q要足够大,从而乘积n足够大,在事先不知道p和q的情况下分解n是计算上不可行的。常用的公钥加密算法包括:RSA密码体制、ElGamal密码体制和散列函数密码体制(MD4、MD5等)。3/19/20241062.3公钥密码体制2.3.3RSA签名体制(不讲)数字签名需要满足以下四个条件:收方能够确认或证实发放的签字,但不能伪造;发方发出签字消息后,不能再否认他所签发的消息;收方对已收到的签字消息不能否认;第三方可以确认收发双方之间的消息传递,但不能伪造这一过程。3/19/20241072.3.3RSA签名体制(不讲)RSA签名算法算法参数两个保密的大素数p和q,计算,;选一个整数e,满足,且;计算d,满足;e为公钥,d为私钥。签名算法设消息为M,对其签名验证算法接收方收到消息M和签名后,验证是否成立,若成立,则说明该签字有效。3/19/20241082.4杂凑函数信息安全研究的两个重要方面是保密和认证。

各种私钥和公钥体制可以实现保密功能。

认证是防止主动攻击的重要技术,对于保证开放网络环境安全有着重要作用。

根据认证目的的不同,认证包括实体认证和消息认证两类。实体认证是验证信息发送者的真实性,包括对信源、信宿的认证和识别;消息认证是验证信息的完整性,保证数据在传输或存储过程中未被篡改、重放。杂凑函数(又称哈希函数)是认证和数字签名的基本组成部分。3/19/20241092.4杂凑函数

杂凑函数是将任意长的数字串M映射成为一个较短的定长输出数字串h的函数,通常用H表示,H(M)要易于计算,称为M的杂凑值,也称为杂凑码或数字指纹。杂凑函数可以按其是否有密钥控制划分成为两大类:一类是有密钥控制的,称为密码杂凑函数;另一类是无密钥控制的,称为一般杂凑函数。无密钥控制的一般杂凑函数,其杂凑值是输入值的函数,不具有身份认证功能,只用于检测接收数据的完整性;有密钥控制的单向杂凑函数,只有持有密钥的人才能计算出相应的杂凑值,因此具有身份验证功能。3/19/20241102.4.1消息认证码(有密钥控制的杂凑函数)消息认证码利用密钥来生成一个固定长度的数据块,并将该数据块附加在消息之后。使用消息认证码的前提是通信双方共享密钥。MAC值是消息和密钥的函数,即,其中,M表示输入的变长消息,C表示MAC函数,K是通信双方共享密钥。计算出MAC值后,发送方将MAC值附于消息后发给接收方。接收方收到消息后,首先利用共享密钥重新计算出MAC值,并将接收到的MAC与其重新计算出的MAC进行比较,如果相同,则表示消息未被篡改并来自真正的发送方。3/19/20241112.4.1消息认证码1、消息认证

三种典型使用模式

3/19/20241122、消息认证和保密性:与明文有关的认证使用前提是双方共享K1和k2,过程为:先将消息作为输入,计算MAC,将MAC附加在消息之后,对整个消息块加密。3/19/20241133、消息认证和保密性:与密文有关的认证使用前提是双方共享K1和k2,过程为:先将消息加密,然后将此密文作为输入,计算MAC,将MAC附加在上述密文之后形成待发送的信息快。3/19/20241142.4.2一般杂凑函数一般杂凑函数不使用密钥,仅是输入消息的函数,其目的是产生消息的“指纹”,因此,杂凑值也称为消息摘要、报文摘要等。一般杂凑函数通常具有以下几个特性:可应用于任意大小的数据块并产生定长的输出;对任何给定的M,用硬件和/或软件均容易实现。单向性:对任何给定的杂凑值h,找到满足H(M)=h的M在计算上是不可行的。显然,对一个杂凑值h,由M计算h=H(M)是容易的,但要产生一个,使H()等于给定的杂凑值h是困难的。这种特性正是密码技术所需要的特性。抗弱碰撞性:对任何给定的分组M,找到满足且的在计算上是不可行的。抗强碰撞性:找到任何满足的数据对在计算上是不可行的。3/19/2024115一般杂凑函数的几种应用方法杂凑函数可以提供报文认证、数字签名及保密等功能。其基本用法有以下几种:1、提供消息认证2、提供认证和保密性3、提供认证和数字签名4、提供认证、数字签名和保密性3/19/20241162.4.3SHA—1算法MD5和SHA-1是经典的杂凑算法,但MD5逐渐被SHA-1算法取代。安全杂凑算法(Securehashalgorithm,SHA)是由美国标准技术研究所(NIST)设计并于1993年公布的一种标准算法(FIPSPUB180),1995年又公布了FIPSPUB180-1,通常称之为SHA-1。可将任何数据块,无论其多长,都压缩为160位的序列。将此序列保存在磁盘上,即为数字指纹文件,可以用来验证信息的真伪。该算法对输入按512位进行分组,并以分组为单位进行处理。3/19/2024117SHA1(SecureHashAlgorithm)又叫安全哈希加密技术,是当今世界最先近的加密算法。主要用于文件身份识别、数字签名和口令加密等.

对于明文信息A,通过SHA1算法,生成一条160位长的识别码B。且明文信息A和识别码B之间同时满足以下条件:

1、对于任意两条不同的明文信息A1、A2,其识别码B1、B2都不相同。

2、无法通过逆向算法由识别码B倒推出明文信息A。

3/19/2024118SHA-1的应用1——口令加密应用在MOONCRM系统中。(

MOONCRM系统以客户为中心,将与客户相关的交往记录、销售机会、报价等信息资源进行整合,形成完整的客户资料档案库。

)MOONCRM系统的用户密码采用SHA1加密存储,即服务器上存储的只是由用户密码生成的识别码,而用户密码本身并没有存储在服务器上。用户输入登陆口令时,系统会根据输入口令生成相应识别码并与系统中所存储的识别码进行比较,如二者一致,则认为口令正确。系统中没有存储用户原始的口令值,即使有人获得口令文件,也无法破解用户登陆密码,确保用户密码绝对安全。3/19/2024119SHA-1的应用2——“验明正身”文件的SHA1值就像人的指纹,是文件的数字指纹,是唯一的,一个文件对应一个唯一的SHA1值,一般用来确认你的文件和官方发布的是否一致。如果官方原版文件被别人做过手脚,那么算出来的SHA1值就会不同。所以SHA1值是用来“验明正身”的。有些居心叵测的人在官方系统光盘里面加入木马程序、广告程序等,然后再放出来给人下载,如果你不检查SHA1值就贸然安装就中招了,可以在网上下载一个数字指纹检验器来计算你下载回来的系统文件的SHA1值,然后到微软的MSDN去查看官方发布的SHA1值,如果两者相等,说明你下载的文件是和官方提供的是一样的,你可以放心的安装了。这就是SHA1值的用处,其他地方不用SHA1值的3/19/20241202.4.3SHA—1算法(不讲)SHA-1算法步骤第一步:填充报文。填充报文的目的是使报文长度为512的倍数减去64。若报文本身已经满足上述长度要求,仍然需要进行填充,因此,填充位数在[1,512]。填充方法是在报文后附加一个1和若干个0,然后附上表示填充前报文长度的64位数据(最高有效位在前)。3/19/20241212.4.3SHA—1算法第二步:初始化缓冲区。杂凑函数的中间结果和最终结果保存于160位的缓冲区中,缓冲区由5个32位的寄存器(A、B、C、D、E)组成,将这些寄存器初始化为下列32位的整数(16进制值):A=0x67452310,B=0xEFCDAB89,C=0x98BADCFE,D=0x10325476,E=C3D2E1F0。(与MD5不同,SHA-1中的寄存器存储方式为:最高有效字节存储在低地址字节位置。)3/19/20241222.4.3SHA—1算法第三步:执行算法主循环。每次循环处理一个512位的分组,故循环次数为填充后报文的分组数,参见图2-16,其中为压缩函数模块。3/19/20241232.4.3SHA—1算法算法的核心是压缩函数,参见图2-17。它由四轮运算组成,四轮运算结构相同。每轮的输入是当前要处理的512位的分组()和160位缓冲区A、B、C、D、E的内容。每轮所使用的逻辑函数不同,分别为,第四轮的输出与第一轮的输入相加得到压缩函数的输出。SHA-1的处理过程可归纳如下:其中IV=缓冲区A、B、C、D、E的初值;

=处理第q个报文分组时最后一轮的输出;+=模加法;L=报文分组数(包括填充位和长度域);

=第q个链接变量;MD=报文摘要。3/19/20241242.4.3SHA—1算法下面,详细讨论每轮处理512位分组的过程。SHA-1中每一轮要对缓冲区A、B、C、D、E进行20步迭代。因此,压缩函数共有80步。每步迭代如图所示。3/19/20241252.4.3SHA—1算法也就是说,每步具有下述形式:其中A,B,C,D,E=缓冲区的5个字;;第t步使用的基本逻辑函数;

32位的变量循环左移s位;从当前分组导出的32位的字;加法常量;+=模加法。3/19/20241262.4.3SHA—1算法每轮使用一个逻辑函数,其输入均为32位的字,输出为一个32位的字,它们执行位逻辑运算,其定义参见表2-8。轮3/19/20241272.4.3SHA—1算法每轮使用一个加法常量。第t步使用的加法常量为,其中。其定义参见表2-9。加法常量轮数步骤编号t加法常量(16进制)第一轮5A827999第二轮6ED9EBA1第三轮8F1BBCDC第四轮CA62C1D63/19/20241282.4.3SHA—1算法每步使用从512位的报文分组导出一个32位的字。因为共有80步,所以要将16个32位的字()扩展为80个32位的字()。其扩展过程为:前16步迭代中的值等于报文分组的第t个字,其余64步迭代中等于前面某4个值异或后循环左移一位的结果。SHA-1将报文分组的16个字扩展为80个字供压缩函数使用,这种大量冗余使被压缩的报文分组相互独立,所以,对给定的报文,找出具有相同压缩结果的报文会非常复杂。3/19/2024129Hash算法

Hash算法是信息认证技术中的关键技术,它通常有三种实现方式:(1)数学上的单向函数,例如基于因子分解或离散对数问题的Hash函数,往往具有很好的密码学性质,且满足Hash函数的单向、无碰撞基本要求。但是由于其工程上的缺点,计算量大、速度慢,不实用,因此目前工程上没有采用这种技术。(2)分组密码系统,例如通过DES、IDEA和LOKI等高强度密码系统的级联,可以实现性能较好的Hash算法,但这类算法依赖于密钥,如果加密和Hash压缩使用同样的密码体制,会带来严重的安全问题,因此我们在加密和Hash压缩时一般使用不同的分组密码体制,以保证其安全性。(3)软件的Hash算法,利用计算机软件系统的简单变化和函数,通过圈函数迭代,同

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论