第5章 密码技术_第1页
第5章 密码技术_第2页
第5章 密码技术_第3页
第5章 密码技术_第4页
第5章 密码技术_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

参考书籍密码学导引,冯登国等,科学出版社密码编码学与网络安全:原理与实践,WilliamStallings,电子工业出版社密码工程实践指南,SteveBurnett等著,冯登国等译,清华大学出版社,RSA数据安全公司官方密码学指南第5章密码技术本章学习目标密码通信系统的模型对称密钥密码体制和非对称密钥密码体制的加密方式和各自的特点代码加密,替换加密,变位加密,以及一次性密码簿加密等4种传统加密方法的加密原理常见的密码破译方法及防止密码破译的措施DES算法的加密原理RSA公开密钥密码算法的原理引言计算机网络安全主要包括系统安全及数据安全两方面的内容。网络系统安全一般采用防火墙、病毒查杀、安全防范等被动措施;而数据安全则主要采用现代密码技术对数据进行主动保护,如数据加密。5.1密码技术概述密码技术包括密码算法设计、密码分析、安全协议、身份认证、消息确认、数字签名、密钥管理、密钥托管等。可以说密码技术是保护大型通信网络上传输信息的惟一实现手段,是保障信息安全的核心技术。它不仅能够保证机密性信息的加密,而且能完成数字签名、身份验证、系统安全等功能。所以,使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和准确性,防止信息被篡改、伪造和假冒。5.1密码技术概述7基本术语明文(Plaintext):需隐藏的信息;密文(

Ciphertext):对明文加密产生的结果;加密(Encryption):把明文转变为密文的操作;解密(Decryption):把密文转变为明文的操作;加密算法(EncryptionAlgorithm):加密使用的信息变换规则;解密算法(DecryptionAlgorithm):对密文解密所采用的一组规则密码编码学(Cryptography):

主要研究对信息进行编码,实现对信息的隐蔽.密码分析学(Cryptanalytics):主要研究加密消息的破译或消息的伪造.Key:密钥,对加密与解密过程进行控制的参数E(p):EncryptionTransformation加密变换D(c):DecryptionTransformation解密变换5.1.1密码通信系统的模型加密就是一种变换,它把明文P从明文信息空间Sp变换到密文信息空间Sc,Ek就是实现这种变换的带有参数K的加密变换函数Ek:Sp→Sc,式中参数K称为密钥。解密变换破译5.1.2密码学与密码体制密码学(Cryptography)包括密码加密学和密码分析学以及安全管理、安全协议设计、散列函数等内容。密码体制设计是密码加密学的主要内容,密码体制的破译是密码分析学的主要内容,密码加密技术和密码分析技术是相互依存、相互支持、密不可分的两个方面。目前,密钥系统很多。按如何使用密钥的不同,密码体制可分为对称密钥密码体制和非对称密钥密码体制。对称密钥密码体制要求加密解密双方拥有相同的密钥。而非对称密钥密码体制是加密解密双方拥有的密钥不相同,且加密密钥和解密密钥是不能相互算出的。对称密钥密码体制对称密码体制是从传统的简单换位发展而来的。其主要特点是:加解密双方在加解密过程中要使用完全相同或本质上等同(即从其中一个容易推出另一个)的密钥,即加密密钥与解密密钥是相同的。所以称为传统密码体制或常规密钥密码体制,也可称之为私钥、单钥或对称密码体制。其通信模型如下图所示。密钥

密文

明文

明文

加密

解密

对称密钥密码体制的加密方式序列密码

将明文消息按字符逐位地加密序列密码一直是作为军事和外交场合使用的主要密码技术。它的主要原理是:通过有限状态机制产生性能优良的伪随机序列,使用该序列加密信息流,得到密文序列。所以,序列密码算法的安全强度完全决定于它所产生的伪随机序列的好坏。分组密码分组密码的工作方式是将明文分成固定长度的组,如64位一组,用同一密钥和算法对每一块加密,输出也是固定长度的密文。对称密钥密码体制的特点优点:加解密速度快、安全强度高、使用的加密算法比较简便高效、密钥简短和破译极其困难。缺点:不太适合在网络中单独使用;对传输信息的完整性也不能作检查,无法解决消息确认问题;缺乏自动检测密钥泄露的能力。非对称密钥密码体制在该体制中,密钥成对出现,一个为加密密钥(即公开密钥PK),可以公之于众,谁都可以使用;另一个为解密密钥(秘密密钥SK),只有解密人自己知道;这两个密钥在数字上相关但不相同,且不可能从其中一个推导出另一个,也就是说:即便使用许多计算机协同运算,要想从公共密钥中逆算出对应的私人密钥也是不可能的,用公共密钥加密的信息只能用专用解密密钥解密。其通信模型如下图所示。公开密钥

密文

明文

明文

加密

解密

私有密钥

公开密钥加密系统的优势与传统的加密系统相比,公开密钥加密系统有明显的优势,不但具有保密功能,还克服了密钥发布的问题,并具有鉴别功能用户可以把用于加密的密钥公开地分发给任何人。由于公开密钥算法不需要联机密钥服务器,密钥分配协议简单,所以极大地简化了密钥管理。公开密钥加密不仅改进了传统加密方法,还提供了传统加密方法不具备的应用,这就是数字签名系统混合加密体制5.2加密方法

5.2.1加密系统的组成尽管密码学的数学理论相当高深,但加密的概念却十分简单。加密就是把数据和信息(称为明文)转换为不可辨识形式(称为密文)的过程,使不应了解该数据和信息的人无法识别。任何加密系统,不论形式多么复杂,至少包括以下4个组成部分:待加密的报文,也称明文。加密后的报文,也称密文。加密、解密装置或称算法。用于加密和解密的密钥,它可以是数字,词汇或者语句。5.2.2四种传统加密方法代码加密发送秘密消息的最简单做法,就是使用通信双方预先设定的一组代码。代码可以是日常词汇、专有名词或特殊用语,但都有一个预先指定的确切含义。它简单有效,得到广泛的应用。代码简单好用,但只能传送一组预先约定的信息。当然,可以将所有的语意单元(如每个单词)编排成代码簿,加密任何语句只要查代码簿即可。不重复使用的代码是很安全的。代码经过多次反复使用,窃密者会逐渐明白它们的意义,代码就逐渐失去了原有的安全性。举例密文:黄姨白姐安全到家了。明文:黄金和白银已经走私出境了。替换加密由于英文字母中各字母出现的频度早已有人进行过统计,所以根据字母频度表可以很容易对这种替换密码进行破译。举例将字母a,b,c,…,x,y,z的自然顺序保持不变,但使之与D,E,F,…,A,B,C分别对应(即相差3个字符)若明文为student,则对应的密文为VWXGHQW(此时密钥为3)。变位加密代码加密和替换加密保持着明文的字符顺序,只是将原字符替换并隐藏起来。变位加密不隐藏原明文的字符,但却将字符重新排序,即把明文中的字母重新排列,字母本身不变,但位置变了。常见的变位加密方法有列变位法和矩阵变位法。简单的变位加密:首先选择一个用数字表示的密钥,写成一行,然后把明文逐行写在数字下。按密钥中数字指示的顺序,逐列将原文抄写下来,就是加密后的密文。列变位法:将明文字符分割成为五个一列的分组并按一组后面跟着另一组的形式排好,最后不全的组可以用不常使用的字符填满。矩阵变位法:把明文中的字母按给定的顺序安排在一个矩阵中,然后用另一种顺序选出矩阵的字母来产生密文。变位加密举例简单的变位加密密钥:4168257390明文:来人已出现住在平安里

0123456789密文:里人现平来住已在出安列变位法(这里的密钥是数字5)明文:WHATYOUCANLEARNFROMTHISBOOK分组排列为:W H A T YO U C A NL E A R NF R O M TH I S B OO K X X X密文;WOLFHOHUERIKACAOSXTARMBXYNNTOX。矩阵变位法明文ENGINEERING按行排在3*4矩阵中给定一个置换密文为:NIEGERNENIG。21加密的基本方法例3

如将明文ENGINEERING按行排在3*4矩阵中,如下所示。

若给定一个置换:1234ENGINEERING3.加密的基本原理

根据给定的置换,按第2列,第4列,第1列,第3列的次序排列,就得到密文:NIEGERNENIG

在这个加密方案中,密钥就是矩阵的行数m和列数n,即m*n=3*4,以及给定的置换矩阵。也就是: k=(m*n,f)1234NIEGERNENIG一次性密码簿加密密码簿的每一页上都是一些代码表,可以用一页上的代码来加密一些词,用后撕掉或烧毁;再用另一页上的代码加密另一些词,直到全部的明文都被加密。破译密文的惟一办法,就是获得一份相同的密码簿。举例加密过程:(明文与密码按位异或计算)明文:101101011011密码:011010101001密文:110111110010解密过程:(密文与密码按位异或计算)密文:110111110010密码:011010101001明文:1011010110115.3密钥与密码破译方法正如不同的计算机系统使用不同长度的口令一样,不同的加密系统也使用不同长度的密钥。一般地说,在其他条件相同的情况下,密钥越长,破译密码越困难,加密系统就越可靠。常见系统的口令及其对应的密钥长度系统口令长度密钥长度银行自动取款机密码4位数字约14个二进制位UNIX系统用户帐号8个字符约56个二进制位密钥的穷尽搜索破译密文最简单的方法,就是尝试所有可能的密钥组合。在这里,假设破译者有识别正确解密结果的能力。虽然大多数的密钥尝试都是失败的,但最终总会有一个密钥让破译者得到原文,这个过程称为密钥的穷尽搜索。密钥的穷尽搜索,可以用简单的机械装置,但效率很低,甚至达到不可行的程度。如果加密系统密钥生成的概率分布不均匀,比如有些密钥组合根本不会出现,而另一些组合则经常出现,那么密钥的有效长度则减小了很多。破译者在了解这一底细之后,就可能大大加快搜索的速度。密码分析 密码学不断吸引探索者的原因,是由于大多数加密算法最终都未能达到设计者的期望。许多加密算法,可以用复杂的数学方法和高速的计算机运算来攻克。结果,即使在没有密钥的情况下,也会有人解开密文。经验丰富的密码分析员,甚至可以在不知道加密算法的情况下破译密码。密码分析就是在不知道密钥的情况下,利用数学方法破译密文或找到秘密密钥。其他密码破译方法除了对密钥的穷尽搜索和进行密码分析外,在实际生活中,对手更可能针对人机系统的弱点进行攻击,而不是攻击加密算法本身,以达到其目的。欺骗用户,套出密钥;在用户输入密钥时,应用各种技术手段,“窥视”或“偷窃”密钥内容;利用加密系统实现中的缺陷或漏洞;对用户使用的加密系统偷梁换柱;从用户工作生活环境的其他来源获得未加密的保密信息,比如进行“垃圾分析”;让口令的另一方透露密钥或信息;威胁用户交出密钥。5.4数据加密标准DES算法

5.4.1

DES算法概述为了建立适用于计算机系统的商用密码,美国国家标准局(NBS)于1973年5月和1974年8月两次发布通告,向社会征求密码算法,IBM公司提出的算法lucifer中选。并于1976年11月被美国政府采用,lucifer随后被美国国家标准局和美国国家标准协会(AmericanNationalStandardInstitute,ANSI)承认。1977年1月以数据加密标准DES(DataEncryptionStandard)的名称正式向社会公布。DES是一种分组密码,是专为二进制编码数据设计的。

DES中是否存在陷门?

所谓陷门,就是在算法的设计中设计者留了一个后门,知道某一秘密的人可进入这一后门获得使用该算法的用户的秘密信息(包括密钥)。

关于这一点至今未得到证实。

DES算法加密流程输入64位的明文。初始变换IP,换位操位。16轮乘积变换(迭代运算),在每轮处理中,64位的密钥(去掉8个奇偶校验位,实际上是56位)经过了变换、左移若干位、再变换,得出一个惟一的、48位的轮次子密钥,每个子密钥控制一轮对数据加密运算的乘积变换。逆初始变换IP-1,这是第(2)步的逆变换。输出64位密文。DES加密算法描述DES加密算法描述为:Ek(m)=IP-1*T16*T15*…*T1*IP(m)。其中:IP为初始变换,IP-1是IP的逆初始变换,Ti(i=1,2,…,16)是16轮乘积变换(迭代)运算。DES算法的加密过程如下:将64位明文数据用初始变换IP置换,得到一个乱序的64位明文,然后分成左右等长的、各32位的两个分组,分别记为L0和R0。接着在48位的子密钥K1、K2、…、K16分别作用下,进行16轮完全类似的乘积变换(迭代)运算,第i轮的乘积变换(迭代)运算得到Li和Ri,最后一轮(第16轮)的乘积变换(迭代)运算得到L16和R16,需将其左右交换位置,得到64位数据R16L16。最后再用初始逆变换IP-1进行置换,产生64位密文数据。DES解密算法描述DES算法是对称的,既可用于加密又可用于解密。DES的解密过程和DES加密完全类似,只不过将16轮的子密钥序列K1、K2、…、K16的顺序倒过来,即第一轮用第16个子密钥K16,第2轮用K15,依此类推。DES解密算法为:m=Ek-1[Ek(m)]=IP-1*T1*T2*…*T16*IP[Ek(m)]。5.4.2

DES算法加密原理DES算法大致可以分成四个部分:初始变换乘积变换(迭代运算)逆初始变换子密钥生成初始变换IP表的意思是:明文中的第58位移到第1位,明文中的第50位移到第2位,……,以此类推。在初始换位表IP的作用下,得到一个乱序状态的64位明文,其中前面32位是L0,后面32位是R0,即:

L0=m58m50m42m34…m16m8 R0=m57m49m41m33…m5m7初始变换是换位操作。换位时不用密钥,仅对64位明文m进行换位操作。用IP表示:

初始变换逆初始变换

IP-1的作用是:将通过IP初始变换后已处于乱序状态的64位数据,变换到原来的正常位置。例如,明文m中的第60位数据m60在初始变换后处于第9位,而通过逆初始变换,又将第9位换回到第60位;第1位数据m1经过初始变换后,处于第40位,在逆初始变换IP-1作用下,又将第40位换回到第1位。逆初始变换用IP-1表示,它和IP互逆。IP-1满足:IP*IP-1=IP-1*IP=I逆初始变换IP-1表:乘积变换(迭代)过程

DES算法的核心部分是迭代运算。DES加密时把明文以64位为单位分成块。64位的明文数据经初始变换后进入加密迭代运算:每轮开始时将输入的64位数据分成左、右长度相等的两半,右半部分原封不动地作为本轮输出数据的左半部分,即下一轮迭代输入数据的左半部分;同时对右半部分进行一系列的变换:先用轮函数f作用于右半部分,然后将所得结果(32位数据)与输入数据的左半部分进行逐位异或,最后将所得数据作为本轮输出的64位数据的右半部分。这种加密迭代运算要重复16次。如图所示。

乘积变换(迭代)过程

DES第i轮乘积变换(迭代)过程f(Ri-1,Ki)的功能:将32位的输入转化为32位的输出DES:FunctionFExpansion:32

48S-box:64Permutation图中,Li-1和Ri-l分别是第i-1轮迭代结果的左右两部分,各32位。L0,R0是初始输入经IP变换后的结果。Ki是64位密钥产生的、长度为48位的子密钥。迭代运算的关键在于轮函数f(Ri-1,Ki)。轮函数f(Ri-1,Ki)的功能是将32位的输入转化为32位的输出,见上图中的黑框框住部分。为了将32位的右半部分与56位的密钥相结合,需要进行两个变换:通过重复某些位将32位的右半部分扩展为48位,而56位密钥则通过选择其中的某些位则减少至48位。轮函数f由扩展置换运算E、与子密钥Ki的逻辑异或运算、选择压缩运算(S-盒代换)、以及置换P组成。下面先介绍这几种运算。(1)扩展置换运算E扩展置换运算E的作用是将32位的输入扩展为48位的输出。第i轮迭代的64位输入数据分为左右两个大小相等的部分L(i-1)、R(i-1)

,每部分为一个32位二进制的数据块。把R(i-1)视为由8个4位二进制的数据块组成(4列8行),把它们扩充为8个6位二进制的块(最左边、最右边各增加一列,变为6列8行)。用E(R(i-1))表示这个变换,称为扩展置换运算E:32位的R(i-1)排成4列8行扩展列,扩展方法为:把前一列数据后面紧跟的那个数据添上去扩展列,扩展方法为:把后一列数据前面的那个数据添上去扩展后变为6列8行,共48位(2)与子密钥Ki的逻辑异或运算在第i轮迭代中,使用48位二进制的子密钥(由56位密钥生成)K(i)

,Ki如何产生的将在后面介绍。K(i)=k1(i)k2(i)…k48(i)

Ki与E(R(i))作逻辑异或运算——“⊕”是按位作不进位加法运算。即:1⊕0=0⊕l=l,0⊕0=1⊕l=0。所以,输出仍是48位,组成8行(每行为1组,共8组),每行6位(每组6位)。(3)选择压缩运算(S-Box代换或S-盒代换)DES算法共有8个S-盒,分别为S1、S2、…、S8。每个S-盒为一非线性代换,每盒输入为6位,输出为4位,8个S-盒共输出32位。所以,选择压缩运算的作用是:将扩展置换运算E的结果与子密钥逻辑异或运算后的48位输出,顺序分成8组,每组6位,分别通过S1、S2、…、S8后又压缩为32位。假设Si盒(i=1、2、…、8)的6个输入端为

b1b2b3b4b5b6其中第1位和第6位组成的二进制数确定Si的行(b1b6行—0~3行),中间4位二进制数用来确定Si的列(b2b3b4b5列—0~15列)。在S表中找出Si的相应行、列位置的十进制数(S表中的元素每行都是十进制数0~15的某一种排列),将其转化为4位二进制数,便是Si盒的输出,参见下表。DES:S-boxS(1):14041301021511080310061205090007001507041402130110061211090503080401140813060211151209070310050015120802040901070511031410000613例如,假设S2的输入为101001,则行数和列数的二进制表示分别是11和0100,即第3行和第4列,S2的第3行第4列的十进制数为3,用4位二进制数表示为0011,所以S2的输出为0011。f(Ri-1,Ki)的功能:将32位的输入转化为32位的输出(4)置换P(P-Box置换Permutation)置换函数P将S-盒的32位输出作为输入并改变其数据顺序,改变后的顺序如下:即若32位输入为:a1,a2,…,a32,则输出为:a16,a7,a20,a21,…,a11,a4,a25。S-盒输出的32位经P置换,最后得到32位的:f(Ri-1,Ki)。(5)每轮的迭代输出把Li-1与f(Ri-1,Ki)逻辑异或(按位相加),形成Ri,且令Ri-1为Li,即得到第i轮迭代加密后的输出LiRi:

Li=Ri-1

Ri=Li-1⊕f(Ri-1,Ki)可以看出,DES加密算法的每一次迭代都用换位法和置换法对上一次迭代的输出进行加密变换。为了使最后输出的密文与原始输入的明文没有明显的函数关系,DES算法采用16次迭代。进行16轮完全类似的迭代运算后,将所得左、右长度相等的两半L16和R16交换,得64位数据R16L16,以保证加密和解密的对称性。子密钥的生成流程PC-1、PC-2代表不同的两个子密钥换位表,C0、D0表示两个28位的数据,LSi表示循环左移。

首先,用子密钥换位表1(PC-1)对给定的64位密钥数据K进行变换作用:去掉其中的8位奇偶校验位——第8、16、24、32、40、48、56、64位,并对剩下的、实际有效的56位密钥进行重新排序,输出56位的数据顺序如下:例如:假设C1=c1c2…c28,D1=d1d2…d28,进行第2轮迭代,应循环左移l位,故:C2=c2c3…c28c1,D2=d2d3…d28dl

但接下来进行的第3轮迭代,应循环左移2位,故:

C3=c4c5…c28c1c2c3,D3=d4d5…d28dld2d3其次,将经过PC-l变换后得到的56位数据分为左右等长、各28位的两部分,分别记为C0和D0

C0=k57k49k41…k52k44k36 D0=k63k55k47…k20k12k4接着进行循环左移(用LSi表示)。每轮迭代时,循环左移的位数不尽相同:当i=1、2、9、16时,LSi循环左移1位;其它情况下,LSi循环左移2位。循环左移的位数如下表所示:最后,用子密钥换位表2(PC-2)对每轮的56位数据CiDi进行变换作用:去掉其中的8位数据(去掉第9、18、22、25、35、38、43、54位),同时对剩下的48位数据进行重新排序,作为本轮迭代的子密钥Ki。所以,PC-2的作用是从56位中选出48位输出:PC-21417112415328156211023191242681672720132415231374755304051453348444939563453464250362932f(Ri-1,Ki)的功能:将32位的输入转化为32位的输出小结DES算法进行16轮完全类似的迭代运算后,最后进行逆初始变换。这样,就用密钥把输入的64位明文数据转换成了64位看起来被完全打乱了的密文数据。DES的强度56位密钥的使用理论上的强度,97年$100000的机器可以在6小时内用穷举法攻破DES实际攻破的例子,97年1月提出挑战,有人利用Internet的分布式计算能力,组织志愿军连接了70000多个系统在96天后攻破DES算法的本质关键在于8个S-BOXDES的强度

据美国(华尔街报)1999年3月8日报导,由Verisign公司(一个信息保密安全公司)经理AnilPereira分析指出,欲破解一个秘密密钥长度为128位的DES加密要比破解一个秘密密钥长度为40位的DES加密要困难300X1042倍(300Septillion倍)。也就是说如以300MC奔腾CPU的PC机破解40位DES加密要花3个小时计,那么用同样的PC机来破解一个128位DES加密就要花去900X1042小时。这在一个人的有生之年是不可能做到的。目前尚无报导是否有数百人同时用数百台大型计算机利用互联网分布处理来破128位DES加密的事情。但可以肯定这种做法所花代价对于普通的商密来讲,肯定是不值的。DES的强度5.5

RSA公开密钥密码算法RSA公开密钥密码系统是由R.Rivest、A.Shamir和L.Adleman三位教授提出的,RSA的取名就是来自于这三位发明者姓氏的第一个字母。在迄今为止的所有公钥密码体系中,RSA系统是最著名、理论上最为成熟完善、使用最广泛的一种公钥密码体制。它的安全性是基于大整数的分解,而体制的构造是基于Euler定理。RSA算法的原理这种算法的要点在于,它可以产生一对密钥,一个人可以用密钥对中的一个加密消息,另一个人则可以用密钥对中的另一个解密消息。同时,任何人都无法通过公钥确定私钥,也没有人能使用加密消息的密钥解密。只有密钥对中的另一把可以解密消息。RSA算法的演算过程密钥配制过程假设m为需要加密传送的报文,密钥配制过程就是设计出公开密钥PK与秘密密钥SK。任选两个不同的大素数p与q(注意:p,q必须保密),使得n=p×q>m;设z=(p-1)(q-1),则可找出任意一个与z互素的正整数e,即e与(p-1)(q-1)互素;利用辗转相除法,可计算其逆d,使之满足:e×dmod(p-1)(q-1)=1,其中mod是整数求余运算。公开密钥为:PK=(n,e),用于加密,可以公开出去(在网络、电话簿等公开媒体上公布);其中没有包含任何有关n的因子p和q的信息。秘密密钥为:SK=(n,d),用于解密,必须保密;显然d中隐含有因子p和q的信息。故n和e可公开,而p,q,d是保密的。RSA算法的演算过程加密设m为要传送的明文,利用公开密钥(n,e)加密,c为加密后的密文。则加密公式为:c=m^emodn,(0≤c<n)。解密利用秘密密钥(n,d)解密。则解密公式为:m=c^dmodn,(0≤m<n)。关于RSA算法的几点说明要求e与(p-1)(q-1)互质,是为了保证e×dmod(p-1)(q-1)有解。计算d采用求两数最大公因子的辗转相除法。在实际应用中,通常首先选定e,再找出素数p和q,使得e×dmod(p-1)(q-1)=1成立。这样做较容易一些。虽然破译者可以通过将n分解成p×q的办法来解密,但是目前无法证明这是惟一的办法。因数分解是个不断发展的领域。自RSA算法发明以来,越来越有效的因数分解方法不断发现,降低了破译RSA算法的难度,只是至今还未达到动摇RSA算法根基的程度。RSA算法中,n的长度是控制算法可靠性的重要因素。RSA公开密钥密码系统举例取两个质数p=11,q=13,p和q的乘积为n=p×q=143,算出另一个数z=(p-1)×(q-1)=120;再选取一个与z=120互质的数,例如e=7,则公开密钥=(n,e)=(143,7)。对于这个e值,可以算出其逆:d=103。因为e×d=7×103=721,满足e×dmodz=1;即721mod120=1成立。则秘密密钥=(n,d)=(143,103)。设张小姐需要发送机密信息(明文)m=85给李先生,她已经从公开媒体得到了李先生的公开密钥(n,e)=(143,7),于是她算出加密值:c=m^emodn=85^7mod143=123并发送给李先生。李先生在收到密文c=123后,利用只有他自己知道的秘密密钥计算:m=c^dmodn=123^103mod143=85,所以,李先生可以得到张小姐发给他的真正的信息m=85,实现了解密。RSA的速度

由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。

RSA的安全性RSA公开密钥密码体制的安全性取决于从公开密钥(n,e)计算出秘密密钥(n,d)的困难程度。就目前的计算机水平用1024位的密钥是安全的,2048位是绝对安全的RSA用于身份验证和数字签名身份验证和数字签名的原理实用数字签名技术针对RSA的攻击方法选择密文攻击过小加密指数e其他对RSA的攻击法数字签名传统签名的基本特点:能与被签的文件在物理上不可分割签名者不能否认自己的签名签名不能被伪造容易被验证数字签名是传统签名的数字化,基本要求:能与所签文件“绑定”签名者不能否认自己的签名签名不能被伪造容易被验证数字签名方案先对消息M作一个摘要H(M)然后发送方用自己的私钥对H(M)进行加密,得到签名EKRa(H(M))连同消息M一起,发送出去B收到复合的消息之后,把签名提取出来B用A的公钥对签名解密得到H’B计算所收到消息的摘要H(M’)如果H’=H(M’),则消息确实是A产生的对明文进行加密,有两种情况需要这样作:

1、您向朋友传送加密数据,您希望只有您的朋友可以解密,这样的话,您需要首先获取您朋友的密钥对中公开的那一个密钥,e及n。然后用这个密钥进行加密,这样密文只有您的朋友可以解密,因为对应的私钥只有您朋友拥有。

对明文进行加密,有两种情况需要这样作:

2、您向朋友传送一段数据附加您的数字签名,您需要对您的数据进行MD5之类的运算以取得数据的"指纹",再对"指纹"进行加密,加密将使用您自己的密钥对中的不公开的私钥。您的朋友收到数据后,用同样的运算获得数据指纹,再用您的公钥对加密指纹进行解密,比较解密结果与他自己计算出来的指纹是否一致,即可确定数据是否的确是您发送的、以及在传输过程中是否被篡改。对明文进行加密,有两种情况需要这样作:

密钥的获得,通常由某个机构颁发(如CACertificateAuthority认证中心)

当然也可以由您自己创建密钥,但这样作,您的密钥并不具有权威性。

计算方面,按公式计算就行了,如果您的加密强度为1024位,则结果会在有效数据前面补0以补齐不足的位数。补入的0并不影响解密运算。

数字签名技术的原理数字签字系统也试图保证以下两点:(1)文件内容没有被改动;(2)文件出自签字人之手或经过签字人批准(即签字没有被改动)。1.数字签字系统是公开密钥加密技术与报文分解函数(MDF)相结合的产物。报文分解函数是能把信息集合提炼为一个数字串的单向不可逆数学函数。首先,用报文分解函数把要签署的文件内容提炼为一个很长的数字,称为报文分解函数的值。签字人用公开密钥加密系统中的秘密钥匙来加密这个报文分解函数值,生成所谓的“数字签字”。该过程表示如下图所示。数字签名技术的原理2.收件人在收到经数字签字的文件以后,对此数字签字进行鉴定:用签字人的公开钥匙来解开”数字签字”,获得报文分解函数值;重新计算文件的报文分解函数,比较其结果。如果完全相符,文件内容的完整性、正确性和签字的真实性都得到了保障。因为如果文件被改动,或者有人在没有秘密钥匙的情况下冒充签字,都将使数字签字的鉴定过程失败。该流程表示如下图:两种数字签名方案在某种意义上,数字签字系统比手签字或印章更为有效。一份10余页的手签文件很难保证每页的内容均不会被改动或替换,但数字签字却能保证文件的每一字符都未经过任何改动。目前,美国国家标准局和国家安全局正在建立数字签字标准DSS(DigitalSignatureStandard);以用于政府和商业文件签字。通过后的DSS标准将使得数字签字与手签字具有同样的法律效力。

报文分解函数(MDF)报文分解函数是一个单向数学函数,它能够把任意信息的集合提炼为一个大数。MD5报文分解函数,它是MIT(麻省理工学院)的Rivest教授发现的,由RSADSI公司公司发行,无须专利执照就可以免费使用。MD5报文分解函数可以把任意长度的信息,经过提炼、概括,转变为一个128位的大数,而且,这几乎是唯一的。这个128位的2进制数字可以表示为32位的16进制数,或者说,表示为一个16字节的字符串。即使两条信息只相差一个字符,它们的MD5函数值也会完全不同。报文分解函数(MDF)从数学上看,可能会有无数的报文具有同样的MD5函数值,因为MD5只产生一个16字节的数字。理论上讲,如果报文长度均为17个字节;那么其中必有256条报文具有和其它报文相同的MD5函数值。这是因为,17个字节的报文总共比16个字节的MD5码多256种可能性,这多出来的256条报文必然和其它报文重复使用MD5码。那么,为什么又说MD5码是十分可靠的呢?这是因为它有128位,也就有可能存在着2^128=3.4X10^38种不同的MD5码。HashFunctionHash是一种直接产生认证码的方法Hash函数:h=H(x),

要求:可作用于任何尺寸数据且均产生定长输出H(x)能够快速计算单向性:给定h,找到x使h=H(x)在计算上不可行WeakCollisionResistence(WCR):

给定x,找到yx使H(x)=H(y)在计算上不可行StrongCollisionResistence(SCR):找到yx使H(x)=H(y)在计算上不可行生日攻击理论基础理论基础若k1.182m/2

2m/2,则k个在[1,2m]的随机数中有两个数相等的概率不低于0.5若k0.83n1/2,两个在[1,n]的k个随机数集合有交集的概率不小于0.5因此,当Hash算法选用N位的Hash值时,两组消息(选择k=N/2)中有一对消息产生相同Hash值的概率超过0.5生日攻击例子ThisLetterisIamwritingtointroduceyoutotoyouMr.--AlfredP.--Barton,......Letter2与Letter1中的信含义不同。各自组合出2k封信件,

然后在两个组中找到两封hash值相同的信!Letter1:Letter2:......对策:Hash值足够长,64-〉128-〉160-〉256hash函数通用模型由Merkle于1989年提出几乎被所有hash算法采用具体做法:把原始消息M分成一些固定长度的块Yi最后一块padding并使其包含消息M的长度设定初始值CV0压缩函数f,CVi=f(CVi-1,Yi-1)最后一个CVi为hash值hash函数模型图bY0nIV=CV0fbY1nfbYL-1nCVL-1fCV1nnIV=initialvalue初始值CV=chainingvalue链接值Yi=ithinputblock(第i个输入数据块)f=compressionalgorithm(压缩算法)n=lengthofhashcode(散列码的长度)b=lengthofinputblock(输入块的长度)CVLMD5算法作者:RonaldRivest算法输入:任意长度的消息输出:128位消息摘要处理:以512位输入数据块为单位MD5:示意图MD5步骤第一步:padding补长到512的倍数最后64位为消息长度的低64位一定要补长(64+1~64+512),内容为100…0第二步把结果分割为512位的块:Y0,Y1,…YL-1第三步初始化MDbuffer,128位常量(4个字),进入循环迭代,共L次每次:一个输入128位,另一个输入512位,结果输出128位,用于下一轮输入第四步最后一步的输出即为散列结果128位MD5的每一步运算示意图每一轮中16步的每一步运算结构ABCDABCD+++CLSs+gX[k]T[i]Functiongg(b,c,d)1F(b,c,d)(bc)(bd)2G(b,c,d)(bd)(cd)3H(b,c,d)bcd4I(b,c,d)c(bd)关于MD5MD5使用little-endian生日攻击模式+64位可计算

128位hash值太短MD5不是足够安全的Dobbertin在1996年找到了两个不同的512-bit块,它们在MD5计算下产生相同的hash至今还没有真正找到两个不同的消息,它们的MD5的hash相等SecureHashAlgorithm简介1992年NIST制定了SHA(128位)1993年SHA成为标准1994年修改产生SHA-1(160位)1995年SHA-1成为新的标准SHA-1要求输入消息长度<264SHA-1的摘要长度为160位基础是MD4SHA-1算法结构与MD5类似第一步:pading与MD5相同,补齐到512的倍数第二步分块第三步初始化MDbuffer,160位常量(5个字)进入循环,160输入+512输入-〉160输出第四步最后的输出为SHA-1的结果压缩函数每一轮中20步的每一步运算结构常量从消息

块导出SHA-1算法结论SHA-1使用big-endian抵抗生日攻击:160位hash值没有发现两个不同的512-bit块,它们在SHA-1计算下产生相同的“hash”速度慢于MD5安全性优于MD5U盾是保护在网上客户电子交易安全如果你的电脑被中了木马,那么在你交易的过程中,你的银行帐号密码,都可能被泄漏。这样黑客就可以对你的帐号进行转帐了。而且你到银行也没法解释,因为帐号和密码都是你的.你的电子邮件被别人破解了,别人用你邮件骂了你老板一顿,导致你辞职。U盾是保护在网上客户电子交易安全上面两个例子这就涉及到两个问题,网上的信息如何保证是安全的?别人如何确认网上的信息是你发的?这就是PKI体系研究的话题,U盾就是为了解决上述问题的。通过非对称密钥,可以保证上述的案例不会出现。

工行以及其他银行出U盾这个产品就是为了解决网上交易出现的问题,这样保证网上交易的安全性,这样也是对本银行客户的负责。U盾是保护在网上客户电子交易安全什么样的U盾是安全的呢?根据U盾的原理,只有私钥不能导出的U盾才是安全的U盾。就算黑客知道了你的帐户和密码,也不能对你的银行帐户进行非法操作。除非他抢了你的U盾!客户U盾是一个带智能芯片、形状类似于U盘的硬件设备,是工商银行与微软等国际知名公司共同合作开发,并应用了智能芯片信息加密技术的一种数字签名工具。一旦您把自己在银行的账户纳入此U盾管理,在网上银行办理转账汇款、B2C支付等业务都必须启用客户U盾进行验证,而客户U盾是唯一的、不可复制的,任何人都无法利用您的身份信息和账户信息通过互联网盗取您的资金。U盾是保护在网上客户电子交易安全采用的是非对称密钥机制,1024位的RSA密钥算法.

SecureHashAlgorithm简介1992年制定了SHA(128位)1993年SHA成为标准1994年修改产生SHA-1(160位)1995年SHA-1成为新的标准SHA-1要求输入消息长度<264SHA-1的摘要长度为160位SHA-1算法结构与MD5类似第一步:补位补长度与MD5相同,补齐到512的倍数第二步分块第三步初始化MDbuffer,160位常量(5个字)进入循环,160输入+512输入-〉160输出第四步最后的输出为SHA-1的结果第一步:补位与补长度

假设对字符串“abc”产生消息摘要。首先,将它转换成位字符串如下:

01100001

01100010

01100011(0x61,0x62,0x63——16进制,该字符串长度24位)

补位是这样进行的:先补一个

温馨提示

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

评论

0/150

提交评论