SSH加密认证原理

一、背景介绍

博主最近将自己写的一些代码上传到Github,在配置Github的环境时对其SSH认证原理甚是疑惑,因此进行了一番了解,并记录于此。

二、SSH简介

简单说,SSH(Secure Shell)是一种非对称加密与对称加密算法相结合的安全网络协议,用于计算机通信加密。一个SSH会话的建立过程分为两个阶段:第一阶段,双方沟通并同意建立一个加密连接通道以供后续信息传输用;第二阶段,对请求接入的用户进行身份验证以确定服务器端是否要给该用户开放访问权限。

三、SSH工作原理

1.共同建立加密通道

使用SSH协议进行认证时,首先要建立一个加密通道,此加密通道是一个对称加密的过程,使用同一个密钥进行加密与解密,那么如何使服务器与客户端都能安全地获得这个密钥呢?

第一种方法是,首先服务端会通过非对称加密,产生一个公钥和私钥,在客户端发起请求时,服务端将公钥暴露给客户端(这个公钥可以被任意暴露),客户端在获取公钥后,会先产生一个由256位随机数字组成的会话密钥(这里称为口令),客户端通过公钥将这个口令加密,发送给服务器端,服务器端通过私钥进行解密,获取到通讯口令,之后,客户端和服务端的信息传递,都通过这个口令进行对称的加密。

由于第一种方法存在数据被窃的可能,因此就有安全性更高的第二种方法。第二种方法使用DH(Diffie-Hellman)密钥交换算法来生成加密信道的密钥。假设有A、B两方,A作为发送者,B作为接收者,通过下面的几个步骤就可以构建出一个只属于双方的密钥口令:
1) 首先A、B双方,在通信前构建专属于自己的密钥对,假设分别是公钥A,私钥A,公钥B,私钥B;
2) A将自己的公钥A暴露给B,B通过私钥B和公钥A经过一定的运算产生出本地的密钥B;
3) 同样,B将自己的公钥B暴露给A,A通过私钥A和公钥B经过一定的运算产生出本地的密钥A;
4)最后,这个算法有意思的一点就是,密钥A和密钥B是一致的,这样A、B双方就拥有了一个属于双方的“秘密”口令。

2.用户认证及权限开放

会话加密通道建立后,SSH开始进入用户认证阶段,以登陆远程计算法。认证方式有两种,第一种是“密码认证”,第二种是“公钥认证”。

1) 密码认证
在建立了加密通道后,服务器要求客户端输入密码,客户端输入的密码经过上述的通道加密传输给服务器。

2) 公钥认证
SSH密钥对的验证过程起始于上一部分加密通道建立之后,其具体执行步骤如下:客户端发送自己的密钥ID给服务器端服务器在自己的authorized_keys文件中检查是否有此ID的公钥如果有,则服务器生成一个随机数,用该公钥加密之服务器将加密后的随机数发给客户端客户端用私钥解密该随机数,然后在本地为随机数做MD5哈希客户端将该MD5哈希发给服务器端服务器端为一开始自己生成的随机数也做一个MD5哈希,然后用通讯通道“公共的密钥”将该哈希加密,再跟客户端发来的内容进行对比。如果双方内容一致,则通过验证,开放访问权限给客户端

简单来说,服务器端用公钥加密信息,客户端用私钥解密信息以证明自己持有私钥。


参考:
[1] 理解SSH的加密与连接过程
[2] SSH加密原理、RSA非对称加密算法学习与理解
[3] 浅谈远程登录时,ssh的加密原理
[4] SSH加密登录协议
[5] ssh公钥私钥认证原理

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值