对称和非对称加密体制
对称密码体制的问题
加密能力与解密能力是捆绑在一起的
密钥更换、传递和交换需要可靠信道,密钥分发困难
密钥管理困难
无法满足不认识的人之间通信的保密要求
不能实现数字签名
非对称密码体制
加密能力和解密能力是分开的
密钥分发简单
需要保存的密钥两大大减少
可满足不认识的人之间保密通信
可以实现数字签名
公开密钥密码体制
仅根据密码算法和加密密钥来确定解密密钥在计算上是不可行的
两个密钥的任何一个都可用来加密,另一个用来解密
公钥密码体制的组成
明文:算法的输入,可读信息或数据
加密算法:对明文进行各种转换
公钥和私钥:算法的输入,分别用于加密和解密
密文:算法的输出,依赖于明文和密钥
解密算法:根据密文和密钥,还原明文
公钥密码体制的应用
加密/解密:发送方用接收方的公钥对消息加密
数字签名:发送方用其私钥对消息签名,可以对整体消息签名或对消息的摘要签名
密钥交换:通信双方交换会话密钥
RSA算法
基于大合数的质因子分解问题的困难性
select
p
p
,
calculate
n=p∗q
n
=
p
∗
q
calculate
ϕ(n)=(p−1)(q−1)
ϕ
(
n
)
=
(
p
−
1
)
(
q
−
1
)
select integer
e
e
,
calculate
d
d
, -1
modϕ(n)
m
o
d
ϕ
(
n
)
public key,
KU={e,n}
K
U
=
{
e
,
n
}
private key,
KR={d,n}
K
R
=
{
d
,
n
}
加密
for plaintext:
M<n
M
<
n
, ciphertext:
C=M
C
=
M
e
e
(
n
n
)
解密
for ciphertext:
plaintext:
M=C
M
=
C
d
d
(
n
n
<script type="math/tex" id="MathJax-Element-101">n</script>)
针对RSA的计时攻击
类似通过观察他人转动保险柜拨号盘的时间长短来猜测密码
可能的解决方法
不变的幂运行时间,可能会降低性能
在求幂运算中加入随机延时
隐蔽:在执行幂运算之前先将密文乘上一个随机数