(十)SSL协议(待修)

SSL协议

SSL(Secure Sockets Layer)为“安全套接层协议 ”,它是网景(Netscape)公司提出的基于 WEB 应用的安全协议。SSL协议指定了一种在应用程序协议(如HTTP、Telnet、NNTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证。SSL可以和应用层的http协议配合形成https,也可以保证邮件协议的安全。当前版本为3.0。

SSL协议主要用于提高应用程序之间数据的安全性。该安全协议主要提供对用户和服务器的认证;对传送的数据进行加密和隐藏;确保数据在传送中不被改变。它能使客户一服务器应用之间的通信不被攻击者窃听。SSL协议提供的服务主要有:

1)鉴别机制:认证用户和服务器,确保数据发送到正确的客户机和服务器;

2)保护隐私:加密数据以防止数据中途被窃取;

3)数据完整性:确保数据在传输过程中不被改变。

SSL 提供的安全服务:

1) SSL 服务器鉴别,允许用户证实服务器的身份。支持 SSL 的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥。

2) SSL 客户鉴别,SSL 的可选安全服务,允许服务器证实客户的身份。

3) 加密的 SSL 会话,对客户和服务器间发送的所有报文进行加密,并检测报文是否被篡改。

1、SSL协议结构

安全套接层协议SSL:SSL/TLS位于传输层和应用层之间,可以细分为两个子层,分别是SSL记录协议层、SSL握手协议层。 SSL记录协议层:主要的作用是进行数据的封装,压缩,加密等;SSL握手协议层:主要的作用是进行通信双方的身份认证,秘钥管理协商等。

 从体系结构图可以看出SSL安全协议实际是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。

SSL记录协议为SSL连接提供了两种服务:一是机密性,二是消息完整性。为了实现这两种服务,SSL记录协议接收传输的应用报文,将数据分片成可管理的块,进行数据压缩(可选),应用MAC(校验消息),接着利用IDEA、DES、3DES或其他加密算法进行数据加密,最后增加由内容类型、主要版本、次要版本和压缩长度组成的首部。被接收的数据刚好与接收数据工作过程相反,依次被解密、验证、解压缩和重新装配,然后交给更高级用户。

SSL记录协议主要用来实现对数据块的分块、加密解密、压缩与解压缩、完整性检查及封装各种高层协议。SSL记录协议工作原理--将消息分割为多个片段;对每个片段进行压缩;加上片段编号(防止重放攻击)计算消息验证码MAC值(保证数据完整性),追加在压缩片段;对称密码加密;加上数据类型、版本号、压缩后的长度组成的报头, 就是最终的报文数据;

SSL修改密文协议是使用SSL记录协议服务的SSL高层协议的3个特定协议之一,也是其中最简单的一个。协议由单个消息组成,该消息只包含一个值为1的单个字节。该消息的唯一作用就是使未决状态拷贝为当前状态,更新用于当前连接的密码组。为了保障SSL传输过程的安全性,双方应该每隔一段时间改变加密规范。

SSL报警协议是用来为通信的对方传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:一种是Fatal错误,如传递数据过程中,发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录;第二种是Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

SSL握手协议允许通信实体在交换应用数据之前协商密钥的算法、加密密钥和对客户端进行认证的协议,为下一步记录协议要使用的密钥信息进行协商,使客户端和服务器建立并保持安全通信的状态信息。SSL握手协议是在任何应用程序数据传输之前使用的。SSL握手协议包含四个阶段:第一个阶段建立安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别和密钥交换;第四个阶段完成握手协议。

2、SSL协议的特性

SSL提供了两台机器间的安全连接。支付系统通过在SSL连接上传输信用卡卡号的方式来构建,在线银行和其他金融系统也常常构建在SSL之上。大部分Web浏览器和Web服务器都内置了SSL协议,比较容易应用。SSL协议建立在可靠的传输层协议(如TCP)之上,与应用层协议无关。它在应用层协议通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作。高层的应用层协议(如HTTP,FTP,TELNET等)可以透明地建立于SSL协议之上。应用层协议所传送的数据都会被加密,从而保证通信的私密性。SSL协议提供的安全信道有以下三种特性:

私密性:在握手协议定义了会话密钥后,所有的消息都被加密。

确认性:尽管会话的客户端认证是可选的,但是服务器端始终是被认证的。

可靠性:传送的消息包括消息完整性检查。

3、SSL的会话与连接

1)SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。

2)SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。

一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。

每一个会话(或连接)都存在一组与之相对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,用会话(或连接)中的加密解密、认证等安全功能的实现。在SSL通信过程中,通信算法的状态通过SSL握手协议实现同步。

根据SSL协议的约定,会话状态由以下参数来定义:

  • (1)会话标识符:是由服务器选择的任意字节序列,用于标识活动的会话或可恢复的会话状态。
  • (2)对方的证书:会话对方的X.509v3证书。该参数可为空。
  • (3)压缩算法:在加密之前用来压缩数据的算法。
  • (4)加密规约(Cipher Spec):用于说明对大块数据进行加密采用的算法,以及计算MAC所采用的散列算法。
  • (5)主密值:一个48字节长的秘密值,由客户和服务器共享。
  • (6)可重新开始的标识:用于指示会话是否可以用于初始化新的连接。

连接状态由以下参数来定义:

  • (1)服务器和客户器的随机数:是服务器和客户为每个连接选择的用于标识连接的字节序列。
  • (2)服务器写MAC密值:服务器发送数据时,生成MAC使用的密钥,长度为128 bit。
  • (3)客户写MAC密值,服务器发送数据时,用于数据加密的密钥,长度为128 bit 。
  • (4)客户写密钥:客户发送数据时,用于数据加密的密钥,长度为128 bit。
  • (5)初始化向量:当使用CBC模式的分组密文算法是=时,需要为每个密钥维护初始化向量。
  • (6)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。

4、建立和恢复SSL连接的具体步骤

建立安全能力

1)客户端发送初始信息

客户端通过SSL协议把服务器需要的客户端的SSL版本信息,加密算法设置,与会话有关的数据,发送给服务器。

2)服务器发送初始信息及自己证书,请求客户端证书

服务器通过SSL协议把自己的SSL的版本信息,加密算法设置,与会话有关的数据和其它通信需要的信息发给客户端。服务器把自己的证书发给客户端(从USBKey中读取)。同时,服务器端请求客户端的证书。

服务器鉴别与密钥交换

3)客户端验证服务器证书

客户端使用这些服务器发来的信息认证服务器。如果服务器不能被认证,那么客户将被提示一个警告,并且通知客户不能建立加密和认证连接。如果服务器被成功认证,客户端将进入第四步。

4)客户端生成握手的初始密钥

使用到目前为止的所有数据生成握手过程。客户端(和服务器合作之下)为会话创建一个pre-master secret(一个用在对称加密密钥生成中的46字节的随机数字)。使用服务器的公共密钥加密(在第二步的服务器的证书中获得公共密钥),然后把这个加了密的pre-master secret发送给服务器。

客户机鉴别与密钥交换

5)客户端发送自己证书

由于系统中服务器请求客户端认证,客户端也需要标记一个特殊的数据包,客户端和服务器都知道的。在这个过程中,客户端发送一个通过pre-master secret加密过的标记的数据包和客户端自己的证书(从USBKey中读取)给服务器。

6)服务器验证客户端证书

服务器就认证客户端证书。如果客户端认证不通过,会话将被终止。如果客户端被认证通过,服务器将使用私有密钥解密pre-master secret,然后执行一系列步骤生成master secret。

7)双方生成会话密钥

客户端和服务器端使用master secret去生成会话密钥。会话密码是在ssl 会话的时候对称密钥,被用来加密、解密信息、校验信息完整性(检查会话过程中任何数据改变)。这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。

8)客户端通知服务器SSL准备完成

客户端发送一个信息给服务器端,通知服务器端以后的信息将被会话密码加密,然后客户端发送一个单独(加密)信息表示客户端部分的握手会话已经完成。

9)服务器通知客户端SSL准备完成

服务器发送一个信息通知客户端未来的会话信息将被会话密码加密,然后服务器发送一个单独(加密)信息表示服务器部分的握手会话部分已经完成。

完成

10)握手结束,正式会话

SSL握手会话结束,开始正式的会话。客户端和服务器端使用会话密钥加密解密数据并且互相传送校验完整性。

11)终止

这是一个正常的操作过程和加密隧道。在任何时候,当内部或者外部触发条件(不是自动就是用户手动),任何一端就要重新协商会话,所有的流程将从新开始。

SSL会话恢复:

会话恢复是指只要客户端和服务器已经通信过一次,它们就可以通过会话恢复的方式来跳过整个握手阶段二直接进行数据传输。

5、SSL协议的工作流程:

服务器认证阶段:

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

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

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

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

用户认证阶段:

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

6、SSL协议规范

SSL的体系结构中包含两个协议子层,其中底层是SSL记录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)

①SSL记录协议

SSL记录协议是为高层协议提供基本的安全服务。SSL记录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。记录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。

在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据组成的。所有的SSL通信包括握手消息、安全空白记录和应用数据都使用SSL记录层。

②SSL握手协议

SSL握手协议的作用是协调客户和服务器的状态,使双方能够达到状态的同步。SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)、应用数据协议(Application Data Protocol) 和 SSL告警协议(SSL Alert Protocol)。握手层的这些协议是对SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。

SSL握手协议包含两个阶段,第一个阶段用于建立私密性通信信道,第二个阶段用于客户认证。

第一阶段是通信的初始化阶段,首先SSL要求服务器向浏览器出示证书。证书包含有一个公钥,这个公钥是由一家可信证书授权机构签发的。通过内置的一些基础公共密钥,客户的浏览器可以判断服务器证书正确与否。然后,浏览器中的SSL软件发给服务器一个随机产生的传输密钥,此密钥由已验证过的公钥加密。由于传输密钥只能由对应的私有密钥来解密,这证实了该服务器属于一个认证过的公司。随机产生的传输密钥是核心机密,只有客户的浏览器和此公司的Web服务器知道这个数字序列。这个两方共享密钥的密文可以通过浏览器安全地抵达Web服务器,Internet上的其他人无法解开它。

第二阶段的主要任务是对客户进行认证,此时服务器已经被认证了。服务器方向客户发出认证请求消息。客户收到服务器方的认证请求消息后,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的证书后,给客户回送认证成功消息,否则返回错误消息。到此为止,握手协议全部结束。

③SSL交易过程

接下来的通信中,SSL采用该密钥来保证数据的保密性和完整性。这就是SSL提供的安全连接。这时客户需要确认订购并输入信用卡号码。SSL保证信用卡号码以及其他信息只会被此公司获取。客户还可以打印屏幕上显示的已经被授权的订单,这样就可以得到这次交易的书面证据。大多数在线商店在得到客户的信用卡号码后出示收到的凭据,这是客户已付款的有效证据。至此,一个完整的SSL交易过程结束。

但是,SSL提供的保密连接有根大的漏洞。SSL除了传输过程以外不能提供任何安全保证,SSL并不能使客户确信此公司接收信用卡支付是得到授权的。在Internet上,经常会出现一些陌生的店铺,正因如此,网上商店发生欺诈行为的可能性要比街头店铺大得多。进一步说,即使是一个诚实的网上商店,在收到客户的信用卡号码后如果没有采用好的方法保证其安全性,那么信用卡号也很容易被黑客通过商家服务器窃取。

从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过数字签名和数字证书可实现浏览器和Web服务器双方的身份验证,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。

SSL购物流程

参考:

SSL协议原理详解

猜你喜欢

转载自blog.csdn.net/weixin_42369053/article/details/119035452