首页 理论教育 计算机网络工程实用技术|6.5.1SSLVPN

计算机网络工程实用技术|6.5.1SSLVPN

时间:2023-11-16 理论教育 版权反馈
【摘要】:SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。图6-10 SSL与OSI参考模型之间的关系3)身份认证。为了验证证书持有者是其合法用户,SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。SSL使用安全的单向哈希函数计算校验码,保证传输数据的完整性。

计算机网络工程实用技术|6.5.1SSLVPN

1.SSL(SecureSocketLayer)协议简介

Netscape公司于1993年提出了网络安全通信协议SSL(Secure Sockets Layer)。它是一个建立在TCP/IP上提供秘密通信的安全协议。它为通信双方提供可靠连接方式下的防窃听、防篡改、防信息伪造的秘密通信。SSL最初是通过加密HTTP连接为Web浏览器提供安全而引入的,现在已成为通用Internet服务的安全工具。当前流行的客户端浏览器软件(Netscape Navigator、Microsoft Internet Explorer),绝大多数的服务器应用(Netscape、Mi-crosoft、Apache、Oracel、NSCA)以及证书授权机构(CA)如VeriSign等都支持SSL。目前一般通用之规格为40比特之安全标准,美国则已推出128比特之更高安全标准,但限制出境。只要3.0版本以上I.E.或Netscape浏览器即可支持SSL。

SSL是一个分层协议,介于可靠的传输层协议和应用层协议之间,为通信双方的TCP/IP连接提供服务器认证、消息完整性、通信数据加密和可选的客户端认证服务。因为这种设置,它可以独立地操作于Internet应用和连接协议。

SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持。SSL协议可分为两层:SSL记录协议(SSL Record Protocol),建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持;SSL握手协议(SSL Hand-shake Protocol),建立在SSL记录协议之上,用于在实际的数据传输开始前,通信双方进行身份认证、协商加密算法、交密密钥等。SSL与OSI参考模型之间的关系如图6-10所示。

(1)SSL提供的安全服务

SSL使用公钥密码系统和技术进行通信双方的通信实体身份的认证和会话密钥的协商,使用对称密码算法对SSL连接上传输的敏感数据进行加密。通过这两种技术的结合,SSL提供了以下安全服务。

1)保密性。SSL利用每次连接协商的密码算法和密钥,建立起一个安全通道,对双方传输的应用层数据进行加密传输。以后在安全通道中传输的所有信息都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的秘闻信息。

2)完整性。SSL利用密码算法和哈希函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,并在传输过程中不会被篡改。

978-7-111-37869-3-Chapter06-11.jpg

图6-10 SSL与OSI参考模型之间的关系

3)身份认证。利用证书技术和可信的第三方认证,可以让通信双方相互识别对方的身份。为了验证证书持有者是其合法用户,SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。

4)访问控制。基于数字证书的认证方式,使SSL能够对网络访问实施灵活的访问控制机制。

(2)安全通道的特点

SSL协议位于可靠的面向连接的传输层协议和应用层协议之间,在传输层的基础上为应用程序提供了一条安全通道,该通道具有以下3个特性。

1)提供可机密性服务。在一次简单的握手之后,所有信息利用对称密钥技术加密后进行传输。

2)实现了身份验证。SSL使用X.509数字证书和公钥加密技术验证对方身份。

3)提供了完整性服务。SSL使用安全的单向哈希函数计算校验码,保证传输数据的完整性。

2.SSL协议的工作流程

为了了解SSL的工作原理,首先看一个应用:假定A方与B方要利用SSL进行秘密通信,则他们的交互过程如图6-11所示。

A方与B方进行通信时,首先初始化握手协议,以建立一个SSL对话时段。握手结束后,将对通信进行加密,并且检查信息的完整性,直到该对话时段结束为止。每个SSL对话时只发生一次握手,一次SSL握手将发生以下事件:

1)A和B进行交互,认证双方的身份。客户机和服务器交换X.509证明以便双方相互确认。该过程中可以交换全部的证书串,也可以选择只交换一些底层的证书。证书的验证包括:校验有效日期和验证证书的签名权限等。

978-7-111-37869-3-Chapter06-12.jpg

图6-11 A方与B方利用SSL 通信的交互过程

2)双方协商确定一组密码套件用于加密需传播的信息,客户机随机地产生一组密钥,它们用于信息加密和MAC计算。这些密钥要先通过服务器的公开密钥加密再送往服务器。总共有3个密钥分别用于服务器到客户机到服务器的通信。

3)双方协商加密信息时使用的密钥。信息加密算法和哈希函数是综合在一起使用。一般的SSL实现方案是:客户机提供自己支持的所有算法清单,服务器选择它认为最有效的密码。服务器管理者可以使用或禁止某些特定的密码。

4)双方使用协商的加密算法和加密密钥加密交换的信息。

由此,可以得出SSL协议的工作流程分服务器认证和用户认证两个阶段。

1)服务器认证阶段。

①客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接。

②服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息。

③客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器。

④服务器恢复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。

2)用户认证阶段。在此之前,服务器已经通过了客户认证,这一阶段主要完成对客户的认证。经认证的服务器发送一个询问给客户,客户则返回(数字)签名后的询问和其公开密钥,从而向服务器提供认证。

3.SSL协议的安全性

SSL协议能够提供安全的连接,但是客户和服务器系统、密钥和应用也必须安全。因为在SSL信道之外的任何安全漏洞都可能导致SSL安全连接失去作用。

SSL协议的设计是为了建立客户和服务器间的安全连接。协议的设计基于许多传统的假设,比如使用的加密函数和哈希函数是安全的,证书和数字签名是不可以伪造的,防止攻击者具有捕获、修改、删除和重发或篡改安全信道中消息的能力。

(1)记录层协议的安全性

SSL记录层协议是将从上层协议接收的数据,按握手协议的协商结果进行分段、压缩和加密,最后把密文交给网络传输协议进行处理。它主要通过对称加密算法来保证数据的机密性,同时使用加密的消息校验码来保证数据的完整性。

SSL记录层协议使用握手过程中协商的对称加密算法和会话密钥对所有的应用层数据进行加密传输。在SSL中,每次会话都有一个主密钥,使用该会话建立的每一连接使用主密钥临时生成不同的临时对称密钥,连接结束后将不再使用。客户端和服务器端在两个方向上使用的加密密钥不同,因此,可以有效地防止窃听。(www.xing528.com)

SSL记录层协议在形成MAC码时加入了消息序列号。经过哈希计算的MAC密文、序列号、消息长度、消息内容和两个固定的字符串产生的MAC码,不仅可以防止重放攻击,还可以防止数据不会遭到延迟、重排和删除等攻击。

在使用哈希函数时,SSL记录层协议经常同时使用MD5和SHA对输出的数据进行散列,从而保证一种算法中的后门不会破坏整个协议。另外,MAC密钥可比加密密钥长,这样即使加密密钥被破坏,消息还可以防止被篡改。

(2)握手协议的安全性

握手协议是SSL协议的核心,主要完成身份认证、协商密码套件和密钥交换的功能。因此,重点从以下4个方面进行分析。

1)认证模式。SSL协议支持3种认证模式:双方认证、服务器认证和完全匿名。无论何时进行服务器认证,信道都应该有足够的安全措施抵御“中间人”攻击。当面临这种攻击时,完全匿名会话天生就很脆弱。匿名的服务器不能认证客户,因为客户发送的“证书验证”消息中包含了签名,但是该签名也许是针对服务器证书消息和其他消息的。证书帮助证明这段签名是提供给此服务器验证的签名。因此,SSL的一般应用都不要求使用匿名认证方式。当进行服务器认证时,服务器的验证消息必须提供合法的证书串。客户方逐级验证证书串时应该能找到服务器认可的CA。同样,被认证的客户必须为服务器提供能接受的证书。各方负责验证对方的证书的合法性和有效性。SSL的认证是通过认证对方提供的X.509证书来实现的。

2)密钥交换。密钥交换的目的是创建一个通信的双方知道而攻击者不知道的预主密钥,预主密钥用来产生主密钥,主密钥用来生成会话过程中的加密密钥。

完全匿名的连接只提供针对被动监听的保护,除非使用一个独立的防主动攻击的信道,验证消息没有被攻击者替换。在担心遭受中间人攻击的情况下服务器的认证是必要的,因此,可以采用RSA密钥交换和认证方式。RSA的密钥交换和认证是结合在一起的。在验证了服务器的证书后,客户方使用服务器的公钥加密了一个预主密钥,通过成功解密预主密钥,并产生正确的验证消息,服务器就能证明它是服务器证书的所有者。

服务器通过验证消息认证客户。客户首先为主密钥和已有的握手消息签名,并将签名结果加入到验证消息中,然后将消息发送给服务器。握手消息包括服务器的证书和一个服务器请求消息的随机数。服务器的证书保证了客户产生的签名消息是提供给该服务器的。服务器问候消息的随机数标记签名属于当前握手过程。

3)会话密钥重用。当使用旧的会话密钥再次建立连接时,使用客户端和服务器端新的问候消息的随机数与会话中的主密钥进行哈希计算,得到互不相同的每一个连接的会话密钥和MAC密钥。在主密钥没有失密前,产生会话密钥和MAC密钥的哈希函数是安全的,所以此时的连接是安全的,而且独立于以前的连接。但是,只要第三方得到了该会话的主密钥,利用问候消息中的随机数就可以生成会话密钥和MAC密钥。要解决上述问题,就必须完全禁止会话密钥的重用,强迫执行一次完整地握手,以保证主密钥的唯一性,同时加强对主密钥的保护。

此外,会话密钥重用需要客户端和服务器端都同意,如果一方怀疑会话已经失效或证书已经过期,它都会要求重新进行完整的握手过程。在会话ID被注销前,攻击者都可能假冒失密的一方。因此,一般会话ID的生命周期上限为24小时。运行在相对不安全环境中的应用必须杜绝将会话ID存放在稳定的存储器中。

4)攻击检测。攻击者试图影响握手双方的信息交换,使它们选择错误的加密算法。一旦攻击者改变了一条或多条握手消息,客户端和服务器端就会计算出不同的握手消息的哈希值。这样,双方都不会接收对方的验证消息。没有主密钥,攻击者就不能得到加密密钥和MAC密文。假如攻击者修改了验证消息,在解密修改过的验证消息后,通信双方就能验证出其中的MAC信息错误,因此,攻击就被检测到了。

(3)防抵赖性

在对消息完整性要求较高的应用中,常常要求具有防抵赖的能力。SSL的握手过程中,客户端使用了服务器端的公钥,对客户端密钥交换消息中预主密钥进行ERSA或DH加密,从而保证只有拥有私钥的服务器才能得到预主密钥,进而计算出双方使用的唯一的会话密钥和MAC密钥。在考虑使用足够强度的密码算法和相对较短的握手时间的情况下,该握手过程是不可抵赖的。但是,这种防御抵赖并不完美,尤其是在进行应用数据传输时,由于使用了双方共享的对称密钥加密,因此,不能防止通信双方的抵赖行为。任意一方都可以利用共享的密钥对一条虚假的消息进行加密,而谎称是对方发送的消息。

该问题的实质是接收端能对收到的消息进行源验证。因此要求发送端在发送的消息中加入数字签名。通常有3种加入数字签名的方法:一是让每个发送者为其发出的每条消息都加上数字签名,这样可以切实有效地验证数据源的身份。只是代价太高,因为目前的数字签名技术速度都比较慢。另一种方法是发送者在发送完所有应用数据之后,将自己对所发送的应用数据的数字签名发给客户端,客户端利用证书中的公钥进行验证。这种方法能有效验证数据源,但是只能在收到所有消息后才能鉴别信息的真假,增加了数据的延迟时间,这往往是很多应用程序所不能容忍的。第3种技术主张只用一个数字签名,同时采用一个同步密钥散列技术,使得只要收到下一个消息,就能对当前消息进行验证,从而缩短延迟。第3种技术可以有效防止有人对数据进行拦截,并在其中插入人造的数据块。它对接收者的唯一要求是维持一个小的能容纳下一个包的散列数据的缓冲区,但这也对发送者提出了苛刻的要求:要求其在发送第一块数据之前就已经知道所有的输出数据。

在SSL中实施这种技术时,握手协议可以不作任何改动,主要是在数据传输时加入特殊的处理。此时,应用数据的传输过程中增加了一个数据接收状态。

对于SSL的不同的实现可能存在不同的安全问题,SSL v3.0说明书中存在的弱点并不一定出现在SSL的实现中,在现实中,可以通过周密的设计来避免这些弱点。另外,美国对出口密码算法的密钥长度的限制,导致SSL的加密强度大大消弱,所以必须对其算法进行替换。

4.SSLVPN

SSL VPN一般的实现方式是在企业的防火墙后面放置一个SSL代理服务器。如果用户希望安全地连接到公司网络上,那么当用户在浏览器上输入一个URL后,连接将被SSL代理服务器取得,并验证该用户的身份,然后SSL代理服务器将提供一个远程用户与各种不同的应用服务器之间的连接。

5.SSLVPN的基本功能

SSL VPN是一款专门针对B/S和C/S应用的SSL VPN产品,具有以下完善实用的功能:

1)提供了基于SSL协议和数字证书的强身份认证和安全传输通道。

2)提供了先进的基于URL的访问控制。

3)提供了SSL硬件加速的处理和后端应用服务的负载平衡

4)提供了基于加固的系统平台和IDS技术的安全功能。

6.SSLVPN系统协议

由SSL、HTTPS、SOCKS这3个协议相互协作共同实现。

7.SSLVPN的特点

1)安装简单、易于操作,无需安装客户端软件。

2)具有认证加密、访问控制、安全信息备份、负载平衡等功能。

3)使用标准的HTTPS协议传输数据,可以穿越防火墙,不存在地址转换的问题,而且不改变用户网络结构,适合复杂应用环境。

8.SSLVPN的工作原理可用以下几个步骤来描述

1)SSL VPN生成自己的根证书和服务器操作证书。

2)客户端浏览器下载并导入SSL VPN的根证书。

3)通过管理界面对后端网站服务器设置访问控制。

4)客户端通过浏览器使用HTTPS协议访问网站时,SSL VPN接受请求,客户端实现对SSL VPN服务器的认证。

5)服务器端通过口令方式认证客户端。

6)客户端浏览器和SSL VPN服务器端之间所有通信建立了SSL安全通道。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈