260 likes | 449 Views
公钥密码学与 RSA. 对称密码体制的缺陷. 公钥密码学. 是密码学一次伟大的革命 1976 年, Diffie 和 Hellman 在 “ 密码学新方向 ” 一文中提出 使用两个密钥:公密钥、私密钥 加解密的非对称性 公钥加密算法是基于数学函数而不是对位的形式的简单操作。 是对对称密码的重要补充 公钥加密一般用于消息认证和密钥分配。. 公钥密码学解决的基本问题. 密钥交换 对称密码进行密钥交换的要求: 已经共享一个密钥 利用密钥分配中心 数字签名 与传统的签名比较. 公钥密码体制. 重要特点 仅根据密码算法和加密密钥来推导解密密钥在计算上不可行
E N D
公钥密码学 • 是密码学一次伟大的革命 • 1976年,Diffie和Hellman 在“密码学新方向”一文中提出 • 使用两个密钥:公密钥、私密钥 • 加解密的非对称性 • 公钥加密算法是基于数学函数而不是对位的形式的简单操作。 • 是对对称密码的重要补充 • 公钥加密一般用于消息认证和密钥分配。
公钥密码学解决的基本问题 • 密钥交换 • 对称密码进行密钥交换的要求: • 已经共享一个密钥 • 利用密钥分配中心 • 数字签名 • 与传统的签名比较
公钥密码体制 • 重要特点 • 仅根据密码算法和加密密钥来推导解密密钥在计算上不可行 • 两个密钥中的任何一个都可用来加密,另一个用来解密。 • 六个组成部分: • 明文、密文;公钥、私钥; • 加密、解密算法
公钥密码体制的加密功能 • A向B发消息X, • B的公钥为KUb,私钥为KRb • 加密 Y = EKUb(X) • 解密 X = DKRb(Y)
公钥密码体制的认证 • A向B发送消息X • A的公钥为KUa,私钥为KRa • “加密”: Y = EKRa(X) (数字签名) • “解密”: X = DKUa(Y) • 注意:不能保证消息的保密性
关于公钥密码的几种误解 • 公钥密码比传统密码安全? 任何加密方案的安全性都依赖于密钥的长度和破解密码的计算工作。所以公钥加密不必常规加密更安全。用户只要保护他的私钥,接收的通信就是安全的 • 公钥密码是通用方法,所以传统密码已经过时? 传统密码用来加密大批量数据,公钥密钥用来进行密钥分配。
RSA算法 • 由MIT的 Rivest, Shamir & Adleman 在 1977 提出 • 最著名的且被广泛应用的公钥加密体制 • 明文、密文是0到n-1之间的整数,通常n的大小为1024位或309位十进制数
RSA算法描述 • 加密: C=Me mod N, where 0≤M<N • 解密: M=Cd mod N • 公钥为(e,N), 私钥为(d,N) • 必须满足以下条件: • 计算Me和Cd是比较容易的 • 由e和n确定d是不可行的
RSA 密钥产生过程 • 随机选择两个大素数 p, q • 计算 N=p.q • 注意 ø(N)=(p-1)(q-1) • 选择 e使得1<e<ø(N),且gcd(e,ø(N))=1 • 解下列方程求出 d • e.d=1 mod ø(N) 且 0≤d≤N • 公布公钥: KU={e,N} • 保存私钥: KR={d,p,q}
RSA 的使用 • 发送方要加密明文M: • 获得接收方的公钥 KU={e,N} • 计算: C=Me mod N, where 0≤M<N • 接收方解密密文C: • 使用自己的私钥 KR={d,N} • 计算: M=Cd mod N • 注意:M必须比N小
为什么RSA 可以加解密 • 因为 Euler 定理的一个推论: • Mkø(n)+1 = M mod N • RSA 中: • N=p.q • ø(N)=(p-1)(q-1) • 选择 e & d 使得ed=1 mod ø(N) • 因此 存在k使得e.d=1+k.ø(N) • 因此Cd = (Me)d = M1+k.ø(N) = M mod N
RSA Example • Select primes: p=17 & q=11 • Computen = pq =17×11=187 • Compute ø(n)=(p–1)(q-1)=16×10=160 • Select e : gcd(e,160)=1; choose e=7 • Determine d: de=1 mod 160 and d < 160 Value is d=23 since 23×7=161= 1×160+1 • Publish public key KU={7,187} • Keep secret private key KR={23,17,11}
RSA Example cont • sample RSA encryption/decryption is: • given message M = 88 (nb. 88<187) • encryption: C = 887 mod 187 = 11 • decryption: M = 1123 mod 187 = 88
RSA 密钥生成 • 必须做 • 确定两个大素数:p, q • 选择e或者d,并计算d或者e • 素数测试是重要的算法 • 由e求d要使用到扩展Euclid算法
RSA 的安全性 • 三种攻击 RSA的方法: • 强力穷举密钥:尝试所有可能的密钥。因此,e 和d 的位数越大,算法就越安全。然而,在密钥产生和加密解密中使用的计算都非常复杂,所以密钥越大,系统运行越慢。 • 时间攻击:依赖解密算法的运行时间
RSA 的安全性 • 数学攻击 :实质上是对两个素数乘积的分解. RSA的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。现在,人们已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢。
RSA 的安全性 • 例如:1977年RSA的三个发明者邀请《Scientific American》的读者参加比赛,去解密他们在Martin Gardner 的Mathematical Games 专栏中列出的一段密码,并提供奖励。他们认为在1015 年内都不会发生的事。在1994年4月,一个工作组使用1600多台计算机,只经过8个月的工作,就破解了这段密码。该比赛使用的公钥的长度(n的大小)是129位十进制数字。这样的结果并没有使RSA失效,他只是意味必须使用更大的密钥。 • 当前小于1024位的N已经被证明是不安全的,自己使用中不要使用小于1024位的RSA,最好使用2048位的。
RSA算法 • RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。 • RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法
RSA算法 • 此外还正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。 • 对付以上攻击,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。
RSA算法的优缺点 • 优点是密钥空间大 • 缺点 • 1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。 • 2)速度太慢。由于进行的都是大数计算,使得RSA最快的情况也比DES慢上倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。由于RSA 的分组长度太大,为保证安全性,n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。