1.公钥密码
- 将密钥K一分为二:ke和kd,ke专门加密,kd专门解密,ke!=kd
- 由密钥ke不能计算出kd,于是可以将密钥ke公开
- 由于ke!=kd且ke不能计算出kd,所以kd便成为用户的指纹,方便实现数字签名
2.公钥密码的基本工作方式
- 设M为明文,C为密文,E为加密算法,D为解密算法
- 每一个用户都配对一堆密钥,ke和kd
- 将所有的用户的公开的密钥ke存放与共享的密钥数据库中PKDB
- 保密的解密钥kd由用户妥善保管
(1).确保数据的秘密性
发送方
a.A首先查PKDB,查到B的公开的加密钥keB
b.A用KeB加密M得到密文C:C=E(M,KeB)
c.A发C给B
接受方
a.B接受C
b.B用自己的KdB解密,得到明文M=D(C,KdB)=D(E(M.KeB),KdB)
安全性分析
1.只有B才有KdB,因此只有B才能解密,确保了数据的秘密性
2.任何人都可以查PKDB得到B的KeB,所以任何人都可以冒充A给B发送数据,不能保证数据的真实性。
(2).确保数据的真实性
发送方
a.A首先用自己的KdA对M进行解密,得到C=D(M,kdA)
b.A发C给B
接受方
a.B接受C
b.B查PKDB查到A公开的加密钥KeA
c.B用KeA加密C,得到明文M=E(C,KeA)=E(D(M,KdA),KeA)
安全性分析
1.只有A才有KdA,因此只有A才能解密,确保了数据的真实性
2.任何人都可以查PKDB得到A的KeA,所以任何人都可以加密得到明文,不能保证数据的秘密性
(3).确保数据的真实性和秘密性
发送方
a.A首先用自己的KdA对明文M进行解密得到S=D(M,KdA)
b.A查PKDB,查到B公开的密钥KeB
c.A用KeB加密S得到C=E(S,KeB)
d.A发C给B
接受方
a.B接受C
b.B用自己的KdB解密C,得到S=D(C,KdB)
c.B查PKDB,查到Ade公开密钥KeA
d.B用A的公开的加密钥KeA加密S,得到M=E(S,KeA)
安全性分析
1.只有A才有KdA,因此只有A才能解密,确保了数据的真实性
2.只有B才有KdB,只有B才能进行解密,保证了数据的秘密性
3.RSA密码
1.加解密算法
a.随机选择两个大素数p和q,而且保密
b.计算n=pq,公开n
c.计算O(n)=(p-1)(q-1) 对O(n)保密(这里O(n)代表计算n的欧拉函数)
d.随机选择一个正整数e,1<e<O(n)且gcd(e,O(n))=1,将e公开
e.根据ed=1modO(n),求出d,并对d保密
加密:C=M^e mod n
解密:M=C^d mod n=(Me)d mod n=M^ed mod n
这里,私钥为{d,n},公钥为{e,n}
举书上一个例子

RSA的实例加密过程
这里明文对应的每一个字母分别与一个两位的十进制数对应(a=00,A=26)

网友评论