26
公公公公公公 RSA

公钥密码学与 RSA

  • Upload
    shayla

  • View
    167

  • Download
    0

Embed Size (px)

DESCRIPTION

公钥密码学与 RSA. 对称密码体制的缺陷. 公钥密码学. 是密码学一次伟大的革命 1976 年, Diffie 和 Hellman 在 “ 密码学新方向 ” 一文中提出 使用两个密钥:公密钥、私密钥 加解密的非对称性 公钥加密算法是基于数学函数而不是对位的形式的简单操作。 是对对称密码的重要补充 公钥加密一般用于消息认证和密钥分配。. 公钥密码学解决的基本问题. 密钥交换 对称密码进行密钥交换的要求: 已经共享一个密钥 利用密钥分配中心 数字签名 与传统的签名比较. 公钥密码体制. 重要特点 仅根据密码算法和加密密钥来推导解密密钥在计算上不可行 - PowerPoint PPT Presentation

Citation preview

Page 1: 公钥密码学与 RSA

公钥密码学与 RSA

Page 2: 公钥密码学与 RSA

对称密码体制的缺陷 1 ) 密 钥 分 配 问 题 通 信 双 方 要 进 行 加 密 通 信 , 需 要 通 过 秘 密的 安 全 信 道 协 商 加 密 密 钥 , 而 这 种 安 全 信 道 可 能 很 难 实 现 ;

2 ) 密 钥 管 理 问 题 在 有 多 个 用 户 的 网 络 中 , 任 何 两 个 用 户 之间 都 需 要 有 共 享 的 秘 密 钥 , 当 网 络 中 的 用 户 n 很 大 时 , 需要 管 理 的 密 钥 数 目 是 非 常 大 2/)1( nn 。

3 ) 没 有 签 名 功 能 : 当 主 体 A 收 到 主 体 B 的 电 子 文 挡 ( 电 子数 据 ) 时 , 无 法 向 第 三 方 证 明 此 电 子 文 档 确 实 来 源 于 B 。

Page 3: 公钥密码学与 RSA

公钥密码学 是密码学一次伟大的革命

1976 年, Diffie 和 Hellman 在“密码学新方向”一文中提出

使用两个密钥:公密钥、私密钥 加解密的非对称性 公钥加密算法是基于数学函数而不是对位的形

式的简单操作。 是对对称密码的重要补充 公钥加密一般用于消息认证和密钥分配。

Page 4: 公钥密码学与 RSA

公钥密码学解决的基本问题 密钥交换

对称密码进行密钥交换的要求: 已经共享一个密钥 利用密钥分配中心

数字签名 与传统的签名比较

Page 5: 公钥密码学与 RSA

公钥密码体制 重要特点

仅根据密码算法和加密密钥来推导解密密钥在计算上不可行

两个密钥中的任何一个都可用来加密,另一个用来解密。

六个组成部分: 明文、密文;公钥、私钥; 加密、解密算法

Page 6: 公钥密码学与 RSA

公钥密码体制

Page 7: 公钥密码学与 RSA

公钥密码体制的加密功能 A 向 B 发消息 X , B 的公钥为 KUb, 私钥为 KRb

加密 Y = EKUb(X) 解密 X = DKRb(Y)

Page 8: 公钥密码学与 RSA

公钥密码体制的加密

Page 9: 公钥密码学与 RSA

公钥密码体制的认证 A 向 B 发送消息 X A 的公钥为 KUa ,私钥为 KRa

“ 加密”: Y = EKRa(X) (数字签名) “ 解密”: X = DKUa(Y) 注意:不能保证消息的保密性

Page 10: 公钥密码学与 RSA

具有保密与认证的公钥体制

Page 11: 公钥密码学与 RSA

对称密码 公钥密码

一般要求:1 、加密解密用相同的密钥2 、收发双方必须共享密钥

安全性要求:1 、密钥必须保密2 、没有密钥,解密不可行3 、知道算法和若干密文不足以确定密钥

一般要求:1 、加密解密算法相同,但使用不同的密钥2 、发送方拥有加密或解密密钥,而接收方拥有另一个密钥安全性要求:1 、两个密钥之一必须保密2 、无解密密钥,解密不可行3 、知道算法和其中一个密钥以及若干密文不能确定另一个密钥

Page 12: 公钥密码学与 RSA

关于公钥密码的几种误解 公钥密码比传统密码安全? 任何加密方案的安全性都依赖于密钥的长度

和破解密码的计算工作。所以公钥加密不必常规加密更安全。用户只要保护他的私钥,接收的通信就是安全的

公钥密码是通用方法,所以传统密码已经过时? 传统密码用来加密大批量数据,公钥密钥用

来进行密钥分配。

Page 13: 公钥密码学与 RSA

RSA 算法 由MIT 的 Rivest, Shamir &

Adleman 在 1977 提出 最著名的且被广泛应用的公钥加密体制 明文、密文是 0到 n-1 之间的整数,通常 n 的大小为 1024 位或 309 位十进制数

Page 14: 公钥密码学与 RSA

RSA 算法描述 加密: C=Me mod N, where 0≤M<N 解密: M=Cd mod N 公钥为( e, N ), 私钥为( d, N)

必须满足以下条件: 计算 Me和 Cd是比较容易的 由 e和 n 确定 d 是不可行的

Page 15: 公钥密码学与 RSA

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}

Page 16: 公钥密码学与 RSA

RSA 的使用 发送方要加密明文 M:

获得接收方的公钥 KU={e,N} 计算 : C=Me mod N, where 0≤M<N

接收方解密密文 C: 使用自己的私钥 KR={d,N} 计算 : M=Cd mod N

注意: M 必须比 N 小

Page 17: 公钥密码学与 RSA

为什么 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

Page 18: 公钥密码学与 RSA

RSA Example1. Select primes: p=17 & q=112. Compute n = pq =17×11=1873. Compute ø(n)=(p–1)(q-1)=16×10=1604. Select e : gcd(e,160)=1; choose e=75. Determine d: de=1 mod 160 and d < 160

Value is d=23 since 23×7=161= 1×160+16. Publish public key KU={7,187}7. Keep secret private key KR={23,17,11}

Page 19: 公钥密码学与 RSA

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

Page 20: 公钥密码学与 RSA

RSA 密钥生成 必须做

确定两个大素数: p, q 选择 e 或者d,并计算 d或者 e

素数测试是重要的算法 由 e 求 d要使用到扩展 Euclid算法

Page 21: 公钥密码学与 RSA

RSA 的安全性 三种攻击 RSA 的方法 :

强力穷举密钥 :尝试所有可能的密钥。因此, e 和 d 的位数越大,算法就越安全。然而,在密钥产生和加密解密中使用的计算都非常复杂,所以密钥越大,系统运行越慢。

时间攻击:依赖解密算法的运行时间

Page 22: 公钥密码学与 RSA

RSA 的安全性 数学攻击 :实质上是对两个素数乘积的分解 . RSA 的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保 RSA 算法的安全性。现在,人们已能分解多个十进制位的大素数。因此,模数 n 必须选大一些,因具体适用情况而定。目前,人们已能分解 140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢。

Page 23: 公钥密码学与 RSA

RSA 的安全性 例如: 1977 年 RSA 的三个发明者邀请《 Scientific A

merican》的读者参加比赛,去解密他们在 Martin Gardner 的 Mathematical Games 专栏中列出的一段密码,并提供奖励。他们认为在 1015 年内都不会发生的事。在 1994 年 4月,一个工作组使用 1600多台计算机,只经过 8个月的工作,就破解了这段密码。该比赛使用的公钥的长度( n 的大小)是 129 位十进制数字。这样的结果并没有使 RSA失效,他只是意味必须使用更大的密钥。

当前小于 1024 位的 N 已经被证明是不安全的,自己使用中不要使用小于 1024 位的 RSA ,最好使用 2048位的。

Page 24: 公钥密码学与 RSA

RSA 算法 RSA 算法是第一个既能用于数据加密也能用于

数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对 RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度, RSA 密钥至少为 500 位长,一般推荐使用 1024 位。

RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是 RSA 算法

Page 25: 公钥密码学与 RSA

RSA 算法 此外还正在积极寻找攻击 RSA 的方法,如选择

密文攻击,一般攻击者是将某一信息作一下伪装 (Blind) ,让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。

对付以上攻击,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用 One-Way Hash Function 对文档作 HASH处理,或同时使用不同的签名算法。

Page 26: 公钥密码学与 RSA

RSA 算法的优缺点 优点是密钥空间大 缺点 1) 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一

次一密。 2)速度太慢。由于进行的都是大数计算,使得 RSA 最快的情况也

比 DES慢上倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。由于 RSA 的分组长度太大,为保证安全性, n 至少也要 600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前, SET(Secure Electronic Transaction)协议中要求 CA采用 2048比特长的密钥,其他实体使用 1024 比特的密钥。为了速度问题 ,目前人们广泛使用单 , 公钥密码结合使用的方法 ,优缺点互补 : 单钥密码加密速度快 ,人们用它来加密较长的文件 ,然后用 RSA 来给文件密钥加密 ,极好的解决了单钥密码的密钥分发问题。