1.非对称加密与数字签名
a.非对称加密
在非对称加密中有不同的密钥:私钥(private key)和公钥(public key)。如果A和B进行通信,A需要创建两个密钥:一个私钥和一个公钥,A把公钥分发给社区,公钥不需要保密(但需要提供身份验证和数据完整性,防止他人冒充A)。B向A发送信息时使用A的公钥加密明文,A收到信息后可用自己的密钥解密。
使用PA表示A的公钥,使用SA表示A的私钥,M表示信息,C表示密文,σ表示数据签名,则信息的传递方式为:
B 不安全信道[传输C=PA(M)] A
M -----> [B使用PA加密] ========================================> [A使用SA解密] -----> M=SA(C)
b.数字签名
数字签名用于验证消息发送者信息,当A向B发送消息是,B需要检查发送者(A)的身份,这时A可以用自己的私钥进行签名,B可用A的公钥进行验证。
A B
----> [A使用SA签名] ---- ----> [B使用PA验证σ] ------
| | | |
| | | v
| | | [判断M是否等于PA(σ)] --> 接受?
| | | ^
| v 不安全信道[传输(M, σ=SA(M))] | |
M-----------[传输M]----------> ================================> -------------[传输M]---------
Signature = Sign(Message, sa)
Verify(Message, Signature, pa) = True/False
2.对应ssh命令
a.登录远程主机
远程登录主机”host”时,在本地输入命令(host_name可以是主机的ip地址):
$ ssh user_name@host_name
请求登录host,这时会询问是否接受host的公钥,接收后会要求输入你的登录密码,输入的密码会用host的公钥进行加密,host接收加密后的登录信息后,会用自己的私钥解密,确认后会允许登录。这样你的登录信息就不会泄露给他人(即便被他人截获登录信息,但无host私钥,所以无法获得你的登录信息)。
b.生成自己的公钥与私钥
在本地输入命令:
$ ssh-keygen -t rsa -C "you-key-comment"
会在在目录~/.ssh
中生成私钥: id_rsa
, 公钥: id_rsa.pub
。
c.上传公钥与免密码登录(数字签名)
输入命令上传公钥到host:
$ ssh-copy-id user_name@host_name
host会最后一次要求你输入密码确认身份,密码正确后会将公钥加到host的/home/user_name/.ssh/authorized_keys
文件中,此后你再次登录时,host会向你发送信息,你用自己的私钥进行数字签名后发送给host,host用你的公钥进行验证,验证成功后会允许登录,不需要输入密码。
- older
- Newer