1、Triple-DES三重两钥DES(tri-DES/2)112-bites(equivalent to 34 digits)Any Number between 0 to 5192296858534827628530496329220095 两个密钥K1,K2 Encrypt with K1 Decrypt with K2 Encrypt with K1加密:C=E(K1,D(K2,E(K1,M)记为:C=EDEK1,K2(M)解密:M=D(K1,E(K2,D(K1,C)记为:M=DEDK1,K2(C)三重三钥DES(tri-DES/3)Key Space:168-bites加密算法:C=E(
2、K3,D(K2,E(K1,M)E=D(K3,E(K2,D(K1,C)AESAdopted as a standard by the National institude of standards&Technology at 2001Dev by Rijndael(2 belgian cyptogphers)Key:128/192/256bits(equivalent to 78 digits)Block of M:16bytes=128bitsAny Number between 0 to 1579208923731619542357098500868790785326998466564056
3、4039457584007913129639935AESNational Security Agency approved AES in june 2003 for pretecting top-level secrets within US gov agencies密钥的管理和分发使用同样的密钥的范围一次泄漏,全部泄漏一个特定key使用次数越多,就增加了被窃取的机会解决方法:一钥一密定期更换密钥的管理和分发密钥的分发 问题?改进!非对称加密算法算法和密钥 明文M,密文C,加密E,解密D密钥用K表示 K可以是很多数值里的任意值,密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥,即
4、运算都依赖于密钥,并用K作为下标表示,加解密函数表达为:E(M,k)=C D(C,k)=M D(E(M,k),k)=M,如图所示。加密解密明文密文原始明文密钥密钥有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下,加密和解密的函数表达式为:E(M,K1)=C D(C,K2)=M函数必须具有的特性是,D(E(M,K1),K2)=M,如图所示。加密解密明文密文原始明文加密密钥解密密钥对称算法基于密钥的算法通常有两类:对称算法和公开密钥算法(非对称算法)。在对称算法中,加解密的密钥是相同的。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法
5、的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加解密。对称算法的加密和解密表示为:E(M,K)=C D(C,K)=M公开密钥算法公开密钥算法(非对称算法)的加密的密钥和解密的密钥不同,而且解密密钥不能根据加密密钥计算出来之所以叫做公开密钥算法,是因为加密密钥能够公开,但只有用相应的解密密钥才能解密信息。加密密钥叫做公开密钥(简称公钥),解密密钥叫做私人密钥(简称私钥)。公开密钥加密:E(M,K1)=C公开密钥解密:D(C,K2)=M。采用信箱的比喻任何人都可以从邮箱的信封人口塞进信件但是取信的权力却仅仅在于持有邮箱钥匙的人的手上这个众人皆知的信封入口就是“公钥”(Public Key
6、)而你持有的邮箱钥匙就是“私钥”(Private Key)公开密钥算法BobAlice公开密钥算法使用公钥密码算法进行通信 Alice和Bob选用一个公开密钥密码系统 Bob将他的公开密钥传送给Alice Alice用Bob的公开密钥加密她的消息,然后传送给Bob Bob用他的私人密钥解密Alice的消息。(一一)对称加密对称加密1.基本原理对称和非对称加密算法的比较对称和非对称加密算法的比较密文 加密密 码算法明文明文 解密密 码算法密钥密钥2.特点:速度较快,有时比非对称加密快1000倍。但由于密钥的对称性,收发双方必须共享密钥,密钥管理不方便,也不安全,密钥总数随着用户数的增加迅速增加。
7、3.应用:主要用于长明文的加密,如文件,网络,数据库加密.4.常用算法:(分流加密算法和分组加密算法两种)(续续1)对称加密对称加密算法算法类型类型密钥长度密钥长度说明说明DES对称分组密码56位目前最常用的加密算法,然而其安全性能较差TripleDES对称分组密码168位(112位有效)对DES作了一些比较好的改进,而且它也能满足当前的安全需要Blowfish对称分组密码长度可变(可以达到448位)长的密钥长度提供了很好的安全性RC4对称流密码长度可变(通常从长计议40到128位)快速的流密码。主要用在SSL中。使用不当128位密钥时安全性比较好AES对称分组密码长度可变(128位、192或
8、明或暗256位)替代DES的新密码算法。虽然还没有广泛应用,但是它很可能提供很好的安全性关于流加密和分组加密流(序列)加密:将明文按字符逐位加密,密文除了与加密算法和密钥有关之外,同时也是位置的函数分组(块)加密:将明文分组,逐组加密,密文仅与加密算法和密钥有关,与被加密的数据在明文中的位置无关公钥私钥明文密文明文加密密码算法解密密码算法(二二)非对称加密非对称加密1.原理(续续1)非对称加密非对称加密2.特点:加解密的密钥不同,密钥的安全性高;但加解密的速度慢,强度低,对选择明文攻击比较脆弱。3.应用:主要用于短消息和对称密钥的加密。如SSL,PGP,和S/MIME中.4.常用算法:算法算法
9、类型类型密钥说明密钥说明说明说明RSA非对称分组密码长度可变(通常为512、1024、或者2048位)最流行的公钥算法。它的美国专利于2000年9月到期。可以免费使用.E1 Gamal非对称分组密码长度可变(通常为512、1024、或者2048位)不如RAS常用,但也用于一些协议,如PGP混合加密系统基于对称和非对称加密的优缺点,可以考虑在加密传输中结合运用两种加密方法如何进行?RSA算法RSA算法的原理 1976年,Diffie和Hellman在文章“密码学新方向(New Direction in Cryptography)”中首次提出了公开密钥密码体制的思想1977年,Rivest、Sha
10、mir和Adleman三个人实现了公开密钥密码体制,现在称为RSA公开密钥体制,它是第一个既能用于数据加密也能用于数字签名的算法。这种算法易于理解和操作,算法的名字以发明者的名字命名:Ron Rivest,Adi Shamir和Leonard Adleman。RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。RSA算法描述1RSA体制生成密钥的过程可以简单描述如下:(1)、生成两个大素数p和q。(2)、计算这两个素数的乘积n=pq。(3)、计算欧拉函数(n)=(p-1)(q-1)。欧拉函数参见教材p63(4)、选择一个随机数e满足1e(n),并且e和(n)互质,即gc
11、d(b,(n)=1。(5)、计算ed=1 mod(n)。同余:ed-1能被(n)整除(参见教材63页)(6)、保密d,p和q,公开n和eRSA算法描述2RSA加密过程可以简单描述如下:对于一个明文消息,首先将它分解成小于模数n的数据分组。例如p和q都是100位的素数,n则为200位,每个数据分组应当小于200位 对于每个数据分组Mi,按下列公式进行加密:Ci=Mie mod n 其中e是加密密钥 将每个加密的密文分组组合成密文输出RSA算法描述3RSA解密过程可以简单描述如下:对于每个数据分组C,按下列公式进行加密:MiCid mod n 其中d是解密密钥 将每个解密的明文分组组合成明文输出R
12、SA算法描述4利用RSA加密时,明文以分组的方式加密。选取的素数p和q要足够大,从而乘积n足够大(300位以上),在事先不知道p和q的情况下分解n是计算上不可行的。常用的公钥加密算法包括:RSA密码体制、ElGamal密码体制和散列函数密码体制(MD4、MD5等)。RSA算法举例1选P=47,Q=71,e=79 求d=?n=3337(n)=(p-1)(q-1)=3220 79*d=1mod3220 d=1019 注意e和d都与n互素选明文m6882326879666683进行加密 首先要对分块,这里模数为4位,如果每个分组选3位,则m被分成6个数据分组:m1688 m2 232 m3 687
13、m4 966 m5 688 m6 003(位数不足,左边用0补齐)加密:C1 68879mod33371570.将密文分组组合成密文输出:C1570 2756 2091 2276 2423 158 解密:m115701019mod3337688,m2RSA算法举例2选P=3,Q=11,e=3 求d=?在求出d的基础上,对明文public进行加密 首先要对明文编码,使其转化为数字形式如:a=00,b=01,z=25 密文:09 14 01 11 17 08RSA算法的安全性 RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA就一定需要作大数分解。
14、假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定 RSA算法的安全性对RSA攻击的方法 蛮力攻击,即尝试所有可能的密钥。因此e和d的位数越大,就越安全 致力于将n分解成两个素数因子p和q的乘积。因为知道p和q,就可以由e,p,q求出密钥d。但是这是一个艰巨的工作。94年4月,1600台计算机用了8个月的时间,破译了n长度为129个十进制数字的RSA密钥。在实际应用中,n的长度一般都在300位以上。RSA算法的速度 由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一RSA 实验室目前建议:对于普通公司使用的密钥大小为 1024 位,对于极其重要的资料,使用双倍大小,即 2048 位