本章将会讲解会话层安全协议。了解会话层安全协议的作用。
一些传统的网络服务程序,如FTP、TELENT、RLOGIN、RSH和RCP,在本质上都是不安全的。因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就截获这些口令和数据。
而且,这些服务程序的安全验证方式也是有弱点的,就是很容易受到中间人(Man In TheMiddle)这种方式的攻击。
通过安全外壳协议(Seeure Shell Protocol.SSH)可以部分解决这样的问题。SSH是介于传输层和应用层之间的安全协议(即OSI模型中的会话层,图中显示了SSH在协会话层安生议栈中的位置),专为远程登录会话和其他网络服务提供安全性协议,通过使用SSH可以把所有传输的数据进行加密,这样“中间人”的攻击方式就不可能实现了。
SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。现行的SSH标准由IETE的Secure Shell工作小组(Secure Shell Group)制定。SSH易于安装、使用简单,一般的开源系统UNIX平台,包括FreeBSD、HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix、SCO等都可以运行SSH。而且在UNIX作平台以外,包括OS/2、VMS、BeOS、Java、Windows平台,都随系统附带有支持SSH的应用程序包。
SSH协议是一个分层协议,如图5-5所示。由三层组成,即传输层协议,用户认证协议,连接协议 同时,SSH协议框架还为许多高层的网络安全应用协议提供扩展支持。
(1)在SSH的协议框架中,传输层协议(The Transport Layer Protocol.TTLP)提供服务器身份认证、通信加密、数据完整性校验以及数据压缩等多项安全服务。
(2)用户认证协议(The User Authentication Protocol.TUAP)则为服务器提供客户端的身份鉴别机制。
(3)连接协议(The Conneetion Protocol.TCP)将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用:各种高层应用协议可以相对独立于SSH基本体系之外,并依靠这个基本框架,通过连接协议使用SSH的安全机制。
SSH传输层协议主要在不安全的网络中为上层应用提供一个加密的通信信道。
SSH传输层协议提供服务器身份认证、通信加密、数据完整性校验以及数据压缩等多项安全服务。双方通信所需要的密钥交换方式、公钥密码算法、对称密钥密码算法、消息认证算法和哈希算法等,都可以进行协商。
传输层协议通常运行于TCP/IP之上,也可以是其他可靠的底层协议,运行SSH传输层协议,产生一个会话密钥和一个唯一会话ID。
目前的SSH实现中,比较普遍的协议版本号是SSH2.0。但是因为还有一些网络设备上运行的是比较老的版本,所以实现时必须考虑版本兼容性问题。
当TCP连接建立之后,通信双方都必须向对方发送自己的版本字符串,其中包括SSH的协议版本号、软件版本号等,版本字符串的最长是255字节。
版本协商包括两种情况:
当新版本的客户端登录旧版本的服务器时,由于客户端不能去兼容服务器,所以遇到旧版本服务器的时候,客户端必须断开连接,使用旧版本再去登录。版本协商阶段,双方交互的数据都是以明文方式传输的。
版本协商成功后,双方就开始采用二进制数据包进行通信。由服务器向客户端发送第一个包.内容为自己的RSA主机密钥(Host Key)的公钥部分、RSA服务密钥(ServerKey)的公钥部分、支持的加密方法、支持的认证方法、次协议版本标志以及一个64位的随机数(Cookie)。这个包没有加密,以明文方式发送。
算法协商成功后,双方进入密钥交换阶段。密钥交换的目的是生成双方通信的公钥,用于后续数据的加密。这个密钥是经过双方协商产生的,双方中的任意一方都不能单独生成这个密钥。
密钥交换的基本原理如下(了解)
创作不易,求关注,点赞,收藏,谢谢~