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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了密码学笔记5——公钥密钥及RSA密码相关的知识,希望对你有一定的参考价值。

参考技术A

发送方
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发送数据,不能保证数据的真实性。

发送方
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,所以任何人都可以加密得到明文,不能保证数据的秘密性

发送方
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才能进行解密,保证了数据的秘密性

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=(M e) d mod n=M^ed mod n
这里,私钥为d,n,公钥为e,n

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

SSH公钥登录且禁止密码登录及更改默认端口

1、ssh生成公私钥

ssh-keygen -t rsa -C "[email protected]"
生成密钥的位置如下,id_rsa是私钥、id_rsa.pub是公钥:
?  .ssh pwd
/Users/xxxxx/.ssh
?  .ssh ls
config      id_rsa      id_rsa.pub  known_hosts

注意:id_rsa一定不能泄露,否则。。。

2、设置密钥登录

到需要登录的服务器工作目录,把刚刚生成的公钥内容拷贝到,远程服务器下的authorized_keys文件中

[[email protected] .ssh]# ls
authorized_keys  known_hosts
[[email protected] .ssh]#

保存之后退出终端,使用如下语句测试是否能正常登录(不需要输入密码)

ssh [email protected]45.110.28.89

3、禁止密码登录

[[email protected] ssh]# pwd
/etc/ssh
[[email protected] ssh]# vim sshd_config

PasswordAuthentication 改为 no 

4、修改默认端口(22)

[[email protected] ssh]# vim sshd_config

找到#Port 22一行,默认是注释掉的,去掉注释之后填写自己的端口,最大不要超过65535

5、重新加载配置文件后生效

/etc/init.d/sshd reload

 

以上是关于密码学笔记5——公钥密钥及RSA密码的主要内容,如果未能解决你的问题,请参考以下文章

公钥密码→RSA详解

密码学---公钥密码---RSA算法

SSH公钥登录且禁止密码登录及更改默认端口

密码技术3非对称加密

rsa密码体系是啥样的密码体系

密码学第五讲-非对称加密RSA原理简介及使用