公钥密码算法
公钥密码实现认证与保密
-
保密性
-
认证
- 认证算法
- 加密整条消息
- 加密部分消息(消息摘要)
- 认证不能够保证消息的机密性
- 所有有Bob公钥的人都可以查看消息
- 认证算法
-
认证+保密
对称密码和公钥密码的区别
RSA算法描述
-
RSA算法中的元素
- 两个素数,p、q,保密
- n = qp,公开
- e , g c d ( ϕ ( n ) , e ) = 1 e, gcd(\phi(n),e)=1 e,gcd(ϕ(n),e)=1,公开
- d , d ≡ e − 1 m o d ϕ ( n ) d, d\equiv e^{-1} mod \space \phi(n) d,d≡e−1mod ϕ(n),保密
-
密钥产生
- 选择pq,pq都是素数且不相等
- 计算n=p*q
- 计算 ϕ ( n ) = ( q − 1 ) ∗ ( p − 1 ) \phi(n)=(q-1)*(p-1) ϕ(n)=(q−1)∗(p−1)
- 选择e,满足 g c d ( ϕ ( n ) , e ) = 1 ; 1 < e < ϕ ( n ) gcd(\phi (n),e) = 1;1<e<\phi(n) gcd(ϕ(n),e)=1;1<e<ϕ(n),e一般为65537
- 计算d,满足 d ≡ e − 1 m o d ϕ ( n ) d \equiv e^{-1} mod \space\phi(n) d≡e−1mod ϕ(n) 等价于 e d ≡ 1 m o d ϕ ( n ) ed \equiv 1\space mod \space \phi(n) ed≡1 mod ϕ(n),扩展欧几里得算法解
- 得到公钥 {e,n}
- 得到私钥 {d,n}
-
加解密
-
RSA的安全性
- 强力攻击(穷举法):尝试所有可能的私有密钥
- 数学分析攻击:等价于分解两个素数的乘积
- 计时攻击,记录计算机解密消息用的时间
- 选择密文攻击,利用RSA算法的性质
几个问题
-
公钥密码与对称密码的区别
- 公钥密码基于数学难题
- 对称密码基于扩散和混淆
- 对称密码只有一个密钥,公钥密码有两个独立的密钥
-
公钥密码比对称密钥安全吗?
- 加密算法的安全性依赖于密钥长度和破解密文需要的计算量,并不能说公钥密码比对称密码安全
-
公钥密码能够取代对称密码吗?
- 公钥密码和对称密码各有各的应用场景
- 公钥密码加密所需的计算量大,但能够胜任密钥管理,以及签名这类应用
- 对称密码加密速度快,计算量小,能够在普通的通信对话中使用
-
公钥密码实现密钥分配比对称密码容易吗?
- 公钥密码实现密钥分配也需要协议,通常包含中心代理,不比对称密钥容易
-
对称密钥的两个难题
- 数字签名问题
- 密钥分配问题