SSH基于密钥认证的原理

SSH的体系结构图如下:
SSH基于密钥认证的原理_第1张图片
    传输层协议(The Transport Layer Protocol)提供服务器认证,数据机密性,信息完整性 等的支持;
    用户认证协议(The User Authentication Protocol) 则为服务器提供客户端的身份鉴别;
    连接协议(The Connection Protocol) 将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用; 各种高层应用协议可以相对地独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制 。

SSH安全验证级别

第一种级别(基于口令的安全验证)
    只要知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证正在连接的服务器就是想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。
第二种级别(基于密匙的安全验证)需要依靠密匙
    采用数字签名的方法来认证客户端。目前,设备上可以利用RSA和 DSA两种公共密钥算法实现数字签名。

SSH基于密钥认证的原理

前提
Ac:客户端公钥, Bc:客户端密钥 ,As:服务器公钥, Bs :服务器密钥 。在认证之前,客户端需要通过某种方法将公钥 Ac 登录到服务器上。
认证过程分为两个步骤:
1. 会话密钥(session key)生成
1). 客户端请求连接服务器,服务器将 As 发送给客户端。
2). 服务器生成会话ID(session id),设为 p,发送给客户端。
3). 客户端生成会话密钥(session key),设为 q,并计算 r = p xor q。
4). 客户端将 r 用 As 进行加密,结果发送给服务器。
5). 服务器用 Bs 进行解密,获得 r。
6). 服务器进行 r xor p 的运算,获得 q。
7). 至此服务器和客户端都知道了会话密钥q,以后的传输都将被 q 加密。
2. 认证
1) 服务器生成随机数 x,并用 Ac 加密后生成结果 S(x),发送给客户端
2) 客户端使用 Bc 解密 S(x) 得到 x
3) 客户端计算 q + x 的 md5 值 n(q+x),q为上一步得到的会话密钥
4) 服务器计算 q + x 的 md5 值 m(q+x)
5) 客户端将 n(q+x) 发送给服务器
6) 服务器比较 m(q+x) 和 n(q+x),两者相同则认证成功

你可能感兴趣的:(网络通信)