美文网首页
密码学笔记5——公钥密钥及RSA密码

密码学笔记5——公钥密钥及RSA密码

作者: 自学java的菜鸟小赵 | 来源:发表于2020-09-03 19:50 被阅读0次

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}

举书上一个例子

AEC64B02E548192390A2E3FA8CC10AD1.png

RSA的实例加密过程

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

2DA708531306D5DBA572DB96619EE87D.png

相关文章

网友评论

      本文标题:密码学笔记5——公钥密钥及RSA密码

      本文链接:https://www.haomeiwen.com/subject/jrqosktx.html