密码学笔记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密码的主要内容,如果未能解决你的问题,请参考以下文章