ssh两种认证方式的原理介绍 您所在的位置:网站首页 身份认证的优缺点 ssh两种认证方式的原理介绍

ssh两种认证方式的原理介绍

2024-06-07 10:01| 来源: 网络整理| 查看: 265

SSH是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。虽然任何网络服务都可以通过SSH实现安全传输,SSH最常见的用途是远程登录系统,人们通常利用SSH来传输命令行界面和远程执行命令。ssh 协议交互过程如下: 图片来源网络,侵删

SSH以非对称加密方式实现身份验证,主要有以下两种:

基于密码的安全验证

基于密钥的安全验证

下面就对这两种方法展开介绍:

基于密码的安全验证

是使用自动生成的公钥-私钥对来简单地加密网络连接,随后使用密码认证进行登录。具体过程如下:

1、客户端发送登录请求,ssh user@hostname 2、服务器接受请求,将服务器的公钥 ser_rsa.pub 发送给客户端 3、客户端输入密码,密码使用 ser_rsa.pub 加密后发送给服务器(敏感信息安全传输) 4、服务器接受加密后的密码,使用服务器私钥 ser_rsa 解密,匹配认证密码是否合法(如果合法!登录成功)

至此,身份认证通过,然后是交换会话密钥(对称加密)

5、客户端生成会话数据加密 sess_key,使用 ser_rsa.pub 加密后传输给服务器(会话密钥) 6、服务器获取到后使用 ser_rsa 解密,得到sess_key

使用会话密钥对之后传递的数据进行加密。注:使用对称加密效率高。

7、客户端和服务器通过 sess_key 进行会话数据安全传输

但是,这种认证方式无法避免“中间人”攻击,可能会有别的服务器在冒充真正的服务器。 图片来源网络,侵删 如图所示,如果有人截获了登录请求,然后冒充服务器,将伪造的公钥发给客户端,那么客户端很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。可以设想,如果攻击者插在客户端与服务器之间,用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。

所以一般在首次登录服务器时,系统会出现下面的提示:

  $ ssh user@host   The authenticity of host 'host (192.168.100.1)' can't be established.   RSA key fingerprint is 2d:37:16:58:4d:28:c2:42:2d:37:16:58:4d.   Are you sure you want to continue connecting (yes/no)?

确认之后,就可以登录(其实在实际生活中并没有什么用啊?谁会去手动比对fingerprint~) 当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台服务器,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

基于密钥的安全验证

客户端生成一对公钥和私钥,并将自己的公钥储存在服务器上。客户端请求登录的时候,服务器会随机生成一个字符串并用客户端的公钥进行加密,客户端收到之后用自己的私钥解密后,再发回来。服务器收到后进行比对,如果比对成功,就证明用户是可信的,直接允许登录,不再要求密码。从而避免了“中间人”攻击。具体过程如下: 在这里插入图片描述

基于密钥的安全验证简单的描述如图中所示。但在实际传输过程中所有的数据都是需要加密以保证数据传输安全,即同样会生成会话密钥,使用会话密钥对传输数据进行加密的过程。详细过程如下:

Ac:客户端公钥 Bc:客户端私钥 As:服务器公钥 Bs:服务器私钥

***在认证之前,客户端需要将公钥 Ac 放到服务器上。*** ##使用服务器的公钥密钥交换数据,得到q 1、客户端发送登录请求,ssh user@hostname 2、服务器接受请求,将服务器的公钥 As 发送给客户端 服务器生成会话ID(session id),设为 p,发送给客户端。 3、客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。 客户端将 r 用 As 进行加密,结果发送给服务器。 4、服务器用 Bs 进行解密,获得 r。 服务器进行 r xor p 的运算,获得 q。

至此,服务器和客户端都知道了会话密钥q,以后的传输数据都将被 q 加密。

##使用客户端的公钥密钥传交换数据,确认身份,避免中间人攻击。 5、服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端 6、客户端使用 Bc 解密 S(x) 得到 x 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥 客户端将 n(q+x) 发送给服务器 7、服务器计算 q + x 的 md5 值 m(q+x) 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功。

至此,服务器和客户端认证通过,可以使用会话密钥进行加密和解密传输

8、客户端和服务器通过 q 进行会话数据安全传输

风险点:在将客户端公钥Ac放置到服务器这一步,核实Ac的来源至关重要,因为SSH只验证客户端是否拥有与公钥相匹配的私钥,只要接受公钥且私钥匹配服务器就会授予许可。这样的话,一旦接受了恶意攻击者的公钥,那么系统也会把攻击者视为合法用户。

ps:文中提到了非对称加密(密钥对)和对称加密(会话密钥),需要自行查询资料进行了解。

参考链接: https://my.oschina.net/sallency/blog/1547785 https://blog.csdn.net/marywang56/article/details/78784608



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有