非对称加密 SSH免密登录过程
概念
用户拥有自己的一对公钥和私钥,其中公钥可以被任意公开,而私钥必须自行保管。
明文被公钥加密后形成密文,需要对应的私钥才能解密;反之被私钥加密的密文需要对应的公钥才能解密。
明文加密
如果窃听者C获取到了密文,没有用户B的私钥也无法解密,保证了数据传输的安全。
数字签名
由于只有用户自己才能拥有自己的私钥,所以用户可以用私钥将明文加密作为数字签名,让其他用户通过对应的公钥确认自己的身份(与需要发送的数据一起发送)。
但这里存在安全隐患,黑客H可能篡改用户B保存的用户A的公钥c,改为为自己的公钥h,这样就能成功冒充用户A通过身份认证,与B进行接下来的数据传输。
为了避免这一情况,用户B选择不相信自己保存的用户A公钥,而是要求用户A同时发送自己的公钥过来,而送过来的途中需要确保安全,所以引入了证书中心(Certificate Authority),对A发送的信息与公钥使用证书中心的私钥加密(让用户B知道这个数据一定是证书中心发来的,从而信任),然后用户B使用证书中心的公钥(存在于操作系统或浏览器中)解密,得到A的密文和A的公钥。
SSH登录
客户端向主机发送登录请求。
主机检查在~/.ssh/中是否有客户端的公钥,且在信任列表.ssh/authorized_keys中。
- 如果不在,就要求客户端输入用户密码登录,并发送主机的公钥给客户端,客户端将输入的用户名密码用主机公钥加密,发送回主机,主机用私钥解密,如果输入正确就登录成功。
- 如果在,主机还需要确认客户端身份,发送主机公钥和用客户端公钥加密的验证信息给主机,主机用自己的私钥解密验证信息(证明身份),再用主机公钥加密发回给主机,主机用自己的私钥解密后,核对验证信息,如果无误则登录成功。
posted on 2021-05-08 01:37 JuShen_Wang 阅读(117) 评论(0) 编辑 收藏 举报