公钥密码
公钥密码学与RSA
公钥密码的特点
仅根据密码算法和加密密钥来确定解密密钥在计算熵是不可行的
公钥流程图
公钥密码和传统密钥的区别
传统密码 | 公钥密码 |
---|---|
一般要求:(1)加密和解密使用相同的密钥和算法(2)收发双方使用共享密钥 | 一般要求:(1)同一算法用于加密和解密,但加密和解密使用不同密钥(2)发送方拥有加密或解密密钥,而接受方拥有另一密钥 |
安全性要求(1)密钥必须是保密的(2)若没有其他信息,则解密消息是不可能或至少是不可行的(3)知道算法和若干密文不足以确定密钥 | 安全性要求:(1)两个密钥之一必须是保密的(2)若没有其他消息,则解密消息是不可能或至少是不可行的(3)知道算法和其中一个密钥以及若干密文不足以确定另一密钥 |
公钥密码体制
(1)保密性
(2)认证
(3)保密性和认证
公钥密码体制的应用
算法 | 加/解密 | 数字签名 | 密钥交换 |
---|---|---|---|
RSA | 是 | 是 | 是 |
椭圆曲线 | 是 | 是 | 是 |
Diffie-hellman | 否 | 否 | 是 |
DSS | 否 | 是 | 否 |
对公钥密码的要求
(1)B 产生一对密钥(公钥,私钥),在计算上是容易的
(2)已知公钥和要加密的消息,发送方A 产生相应的密文在计算上是容易的
(3)接收方B 使用其私钥对接收的密文解密以恢复明文在计算上是容易的
(4)已知公钥,攻击者确定私钥在计算上是不可行 的
(5)已知公钥和密文,攻击者要恢复明文M 在计算上是不可行的
(6)加密和解密函数的顺序可以交换
RSA 算法
算法步骤:
一、密钥产生:
(1)计算p,q
(2)计算n = pq
(3) 计算f(n) = (p-1)(q-1)
(4)选择整数e (与f(n)互素且小于f(n))
(5) 计算的,de = 1mod(f(n))
(6) 公钥 {e,n} 私钥{d,n}
计算方面的问题:
(1)快速幂
(2)拓展欧几里得算法求逆元