您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第2章信息安全机制5
第2章信息安全机制本章学习目标通过本章学习,读者应该掌握以下内容:对称加密机制及典型算法非对称加密机制及算法数字签名的原理数据完整性验证的原理及典型算法PGP的使用一个密码体制被定义为一对数据变换。2.1加密机制2.1.1密码学基础知识明文明文密文加密变换解密变换加密变换将明文和一个称为加密密钥的独立数据值作为输入,输出密文;解密变换将密文和一个称为解密密钥的数据值作为输入。加密解密M:明文C:密文KE:加密密钥KD:解密密钥MCKEKDCM加密解密密码算法——用于加密和解密的数学函数。受限制的算法——密码的安全性依赖于密码算法的保密,其保密性依赖于算法的安全性,不易控制。基于密钥的算法——密码体制的加密及解密算法公开,而密钥(即算法中的若干个可变参数)保密,其安全性依赖于密钥的安全性。2.1.2对称加密算法加密:Ek(M)=C解密:Dk(C)=M序列密码算法(streamcipher)分组密码算法(blockcipher)对称密码算法有很多种:DES、TripleDES、IDEA、RC2、RC4、RC5、RC6、GOST、FEAL、LOKI加密过程加密过程主要是重复使用混乱和扩散两种技术。混乱——是改变信息块,使输出位和输入位无明显的统计关系。扩散——是将明文位和密钥的效应传播到密文的其它位。DES是对称密钥加密的算法,DES算法大致可以分成四个部分:(1)初始变换(2)迭代过程(3)逆置换和(4)子密钥生成2.1.3DES算法DES算法描述(1)初始变换:首先把明文分成若干个64位的分组,然后通过一个初始变换(IP)将一个明文分组分成左半部分(L0)和右半部分(R0),各为32bit。(2)迭代过程:对Li、Ri然后进行16轮完全相同的运算(称为函数f),在运算过程中数据与密钥相结合。(3)逆置换和:经过16轮运算,左、右两部分合在一起经过一个末转换(初始转换的逆置换IP-1),输出一个64bit的密文分组。图6.5DES加密原理示意图左半部分32位右半部分32位新的左半部分新的右半部分密钥移位置换后的密钥f+返回本节密钥位移位,从密钥的56位中选出48位。①通过一个扩展置换将数据的左半部分扩展成48位,②并通过一个异或操作与48位密钥结合,③通过8个S盒(substitutionbox)将这48位替代成新的32位,④再依照P-盒置换一次。然后通过另一个异或运算,将复杂函数f的输出与左半部分结合成为新的右半部分。每一轮的运算过程:三重DES如上所言,DES一个致命的缺陷就是密钥长度短。对于当前的计算能力,56位的密钥长度已经抗不住穷举攻击,而DES又不支持变长密钥。但算法可以一次使用多个密钥,从而等同于更长的密钥。三重DES算法表示为:C=EK3(DK2(EK1(M)))通常取K3=K1,则上式变为:C=EK1(DK2(EK1(M)))DES的加密强度1995年,一百万美元制造出的机器平均3.5小时(最多不超过7小时),能破译56位密钥的DES算法。1997年1月28日美国RSA公司悬赏1万美元破译56位DES密码,1997年3月13日,Internet数万志愿者协助科罗拉多州1程序员,96天破译。研究还发现,机器的价格和破译速度之比是成线性的。摩尔定律:大约每经18个月计算机的计算能力就会翻一番。这意味着每5年价格就会下降到原来的百分之十,所以在1995年所需要的一百万美元到了2000年就只用花十万美元。2002年11月8日的新闻说到,破解109位密码,1万台PC要花费549天。那么,单台PC破解109位密码的能力也就需要549万天,约合15041年多一点。现在的技术先进多了,普通PC的运算能力也比文中提到的100万美元的机器强。使用普通PC现在穷举56位DES大约需要2.5小时(每秒运算30,000次DES算法)。使用快速DES算法可以把破解速度再提高100倍。应该如何决定密钥的长度呢?密钥的长度应该是越大越好!如果你的软硬件允许,就应该使用128位的密钥。加密成本低,速度快.个人的电脑都能够承受128位密钥的对称加密算法的加/解密运算,无论是速度还是成本上,56位和128位位密钥的加密差别不大。2.1.4RC5算法RC5是RonRevist发明的。RC5是具有参数变量的分组密码算法,其中可变的参量为:分组的大小、密钥的大小和加密的轮次。该算法主要使用了三种运算:异或、加、循环。研究表明:对15轮的RC5,差分攻击需要268个明文,而这里最多只可能有264个明文,所以对15轮以上的RC5的攻击是失败的。Rivest推荐至少使用12轮。2.1.5非对称加密体制公开密钥体制把信息的加密密钥和解密密钥分离,通信的每一方都拥有这样的一对密钥。加密密钥可以像电话号码一样对外公开,由发送方用来加密要发送的原始数据;解密密钥则由接收方秘密保密,作为解密时的私用密钥。2.1.5非对称加密体制公开密钥加密算法的核心是一种特殊的数学函数――单向陷门函数(trap-dooronewayfunction)。该函数从一个方向求值是容易的,但其逆变换却是极其困难的,因此利用公开的加密密钥只能作正向变换,而逆变换只有依赖于私用的解密密钥这一“陷门”才能实现。2.1.5非对称加密体制优点:无需对密钥通信进行保密,所需传输的只有公开密钥。这种密钥体制还可以用于数字签名,即信息的接收者能够验证发送者的身份,而发送者在发送已签名的信息后不能否认。被认为是一种比较理想的的计算密码的方法。2.1.5非对称加密体制缺陷:加密和解密的运算时间比较长,这在一定程度上限制了它的应用范围。公认比较安全的是RSA算法及其变种Rabin算法。算法表示为:Ek1(M)=CDk2(C)=MDk2(Ek1(M))=M(k1和k2为一对密钥中的私有密钥和公开密钥)2.1.6RSA算法RSA算法的思路如下:为了产生两个密钥,先取两个大素数,p和q。为了获得最大程度的安全性,两数的长度一样。计算乘积n=p*q随机选取加密密钥e,使e和(p-1)*(q-1)互素。计算解密密钥d,d满足ed≡1mod(p-1)(q-1),即d≡e-1mod(p-1)(q-1)(或e×dmodz=1)。则e和n为公开密钥,d是私人密钥。注:1、两个大数p和q应立即丢弃,不让人知道。2、一般选择公开密钥e比私人密钥d小。最常选用的e值有三个3,17,65537。2.1.6RSA算法加密消息时,首先将消息分成比n小的数据分组(采用二进制数,选到小于n的2的最大次幂),设mi表示消息分组,ci表示加密后的密文,它与mi具有相同的长度。加密过程:ci=mie(modn)解密过程:mi=cid(modn)2.1.6RSA算法举例1:取两个质数p=11,q=13,p和q的乘积为n=p×q=143,z=(p-1)×(q-1)=120;随机选e=7(与z=120互质的数)则公开密钥=(n,e)=(143,7)选取d,使得(e×d)modZ=1因为e×d=7×103=721满足e×dmodz=1;(即721mod120=1成立)p所以对于这个e值,可以算出其逆:d=103。则秘密密钥=(n,d)=(143,103)。举例1:取两个质数p=11,q=13,p和q的乘积为n=p×q=143,z=(p-1)×(q-1)=120;随机选e=7(与z=120互质的数)则公开密钥=(n,e)=(143,7)。选取d,使得(e×d)modZ=1因为e×d=7×103=721满足e×dmodz=1;(即721mod120=1成立)所以对于这个e值,可以算出其逆:d=103。则秘密密钥=(n,d)=(143,103)。公开密钥=(n,e)=(143,7)加密过程:ci=mie(modn)=mi7(mod143)秘密密钥=(n,d)=(143,103)解密过程:mi=cid(modn)=ci103(mod143)RSA的速度和安全性硬件实现:RSA比DES慢1000倍软件实现:RSA比DES慢100倍RSA-129(429位二进制,110位十进制)已由包括五大洲43个国家600多人参加,用1600台电脑同时产生820条指令数据,通过Internet网,耗时8个月,于1994年4月2日利用二次筛法分解出为64位和65位的两个因子,原来估计要用4亿年。(所给密文的译文为“这些魔文是容易受惊的鱼鹰”。这是有史以来最大规模的数学运算。)RSA的速度和安全性RSA-640(193位十进制)由德国信息技术安全局的一个小组于2005年11月,用80个OpetronCPU算了5个月,他们将因此而获得20000美元的奖金。3107418240490043721350750035888567930037346022842727545720161948823206440518081504556346829671723286782437916272838033415471073108501919548529007337724822783525742386454014691736602477652346609RSA2048(617位十进制)的分解奖金高达20万美元。因此,今天要用RSA,需要采用足够大的整数。512bit(154位)、1024bit(200位)已有实用产品。若以每秒可进行100万步的计算资源分解664bit大整数,需要完成1023步,即要用1000年。专家认为1024bit模在今后10年内足够安全。Simmons预测150位数将在本世纪被分解。目前,512bit模(约155位)在短期内仍十分安全,但大素数分解工作在的严重威胁,目前主要使用1024bit的模。大整数分解算法研究是当前数论和密码理论研究的一个重要课题2.1.7密钥与密码破译方法1、密钥的穷尽搜索破译密文最简单的方法,就是尝试所有可能的钥匙组合。2、密码分析在不知道钥匙的情况下,利用数学方法破译密文或找到秘密钥匙的方法,称为密码分析。密码分析有两个基本目标:利用密文发现明文,利用密文发现钥匙。3、其它密码破译方法(欺骗\偷窥\垃圾分析)2.2数据完整性机制密码学除了为数据提供保密方法以外,还可以用于其他的作用:鉴别(Authentication):消息的接收者可以确定消息的来源,攻击者不可能伪装成他人。抗抵赖(Nonrepudiation):发送者事后不能否认自己已发送的消息。完整性(Integrity):消息的接收者能够验证消息在传送过程中是否被修改;攻击者不可能用假消息来代替合法的消息。2.2.1数据完整性验证消息的发送者用要发送的消息和一定的算法生成一个附件,并将附件与消息一起发送出去;消息的接收者收到消息和附件后,用同样的算法与接收到的消息生成一个新的附件;把新的附件与接收到的附件相比较。消息消息附件H消息附件Hcompare+2.2.2单向散列函数单向散列函数(one-wayhashfunction),也叫压缩函数、收缩函数,是现代密码学的中心。散列函数是把可变长度的输入串(叫做预映射)转换成固定长度的输出串(叫做散列值)的一种函数。利用单向散列函数生成消息指纹可有两种情况:不带密钥的单向散列函数,这种情况下,任何人都能验证消息的散列值;带密钥的散列函数,散列值是预映射和密钥的函数,这样只有拥有密钥的人才能验证散列值。单向散列函数的算法实现有很多种,如Snefru算法、N-Hash算法、MD2算法、MD4算法、MD5算法,SHA-1算法等等。1.填充消息使用其长度恰好为一个比512的倍数仅小64bit的数。填充前消息+“1”+所需位数的“0”+64bit填充前消息的长度值这样填充后,可使消息的长度恰好为512的整数倍,且保证不同消息在填充后不相同。2.2.3消息摘要算法MD5算法描述:MD5以512bit的分组来处理输入文本,每一分组又划分为16个32bit的子分组。算法的输出由4个32bit分组组成,将它们级联形成一个12
本文标题:第2章信息安全机制5
链接地址:https://www.777doc.com/doc-1267192 .html