欢迎来到通信人在线![用户登录] [免费注册]

安全套接字层(SSL)技术介绍

浏览:5109  来源:通信人在线  日期:2009-03-24
 

Web在当今已经是十分流行的工具,伴随着Internet的流行,Web的安全性已经变得十分重要。目前在Web方面的安全性有不少解决方案,最常用的是安全套接字层协议。

SSLSecure Sockets LayerSSL)协议是由Netscape公司提出的1个安全协议,它是在套接字端口上工作,可以用在任何建立在套接字端口上的协议,包括telnetftphttp等等。很多SSL的功能也是IPv6的一部分。SSL提供了对一个对话(session)进行加密、对1个服务器(有时一个客户机)甚至一个信息进行鉴别的功能,SSL握手协议和应用协议都在SSL记录协议上操作。SSL记录层运行在TCP上。对话建立需要58个信息来完成,对于服务器的鉴别,SSL建筑在密钥认证机制的基础上,但是,在1个对话内SSL不提供密钥重新协商功能。

所有SSL协议可以传送最高达32 767 B的数据,每一个数据有一个23B的协议头,这个协议头包含了1个安全转义功能、一个指明是否有填充信息的标志、信息的长度等信息,2B的头表示没有填充而3B则表示有填充的信息。协议头数据结构如下:

#S长度

长度

填充长度

这里,#位为0表示3B头部,最大长度32767B;为1表示2B头部,最大长度16383BS位表示安全转义功能是否存在。在SSL记录协议头部,没有协议版本信息。

在一个记录内,有三种部件:MAC-DATA、实际数据(Actual-Data)和填充数据(Padding-Data)。MAC代表信息鉴别码(Message Authentication Code),实际数据是需要发送的实际数据,填充数据就是在数据不到有关长度时用作填充的无用数据。MAC-DATA是一个密钥、数据、填充以及序号的哈稀(hash)函数,这个密钥是(发送者)写密钥,它和(接受者)读密钥是相同的。对于基于块的加密方法,可能数据不是正好加密所需的块长度(或块长度的倍数),这时就需要填充数据。

序号是一个32位无符号的整数,每发送一个数据,就调整这个序号,当数字大于0xFFFFFFFF时,重新设置为0。如果发送错误,如鉴别失败、解密失败、或其他问题,会产生I/O差错,同时关闭连接。

当一台计算机企图使用SSL建立连接时发生握手操作,在SSL中,有3类基本握手,第一类是最近(比如100s)没有连接存在,第二类是有一系列的连接存在时的握手,第三类是当需要客户机鉴别时的握手。

第一类握手的基本过程如图1所示。当一个客户机希望建立安全连接,它发送CLIENT-HELLO消息,包括一个质疑以及希望或能够支持的加密体系;服务器以SERVER-HELLO消息作为回答,包括连接标识、密钥证书以及服务器可以支持的加密体系,加密体系的选择由客户机负责;然后,客户机检验服务器的公开密钥,并且向服务器发送CLIENT-MASTER-KEY消息,这是一个随机产生的主密钥,这个密钥在发送时由服务器的公开密钥加密;发送CLIENT-MASTER-KEY后,客户机发送CLIENT-FINISHED消息,包括被客户写密钥加密的连接标识;服务器发送SERVER-VERIFY消息,包括一个被服务器写密钥加密的对客户机的质疑;最后,服务器发送SERVER-FINISHED消息,包含了一个被服务器写密钥加密的新的对话标识。服务器写密钥从CLIENT-MASTER-KEY消息中的主密钥中产生。

1SSL第一类握手协议

对于第二类握手,整个过程基本相似,如图2所示。如果已经存在一个对话,那么,客户机发送CLIENT-HELLO消息,包括一个质疑、对话标识以及希望或能够支持的加密体系;服务器以SERVER-HELLO消息作为回答,包括连接标识、密钥证书以及服务器可以支持的加密体系,这时设置“对话标识命中”位;客户机发送CLIENT-FINISHED消息,包括被客户写密钥加密的连接标识;服务器发送SERVER-VERIFY消息,包括一个被服务器写密钥加密的对客户机的质疑;最后,服务器发送SERVER-FINISHED消息,包含了一个被服务器写密钥加密的对话标识。

2SSL第二类握手协议

对于第三类握手方式,需要使用客户机鉴别,那么,服务器必须在适当的时间发送REQUEST-CERTIFICATE消息,包括一个质疑和期望的鉴别方法,客户机以CLIENT-CERTIFICATE消息作为回答,这个消息包括客户机的证书类型、证书本身以及其他回答数据,最后服务器才发送SERVER-FINISH消息,如图3所示。

3SSL第三类握手协议

整个过程中使用了好几个密钥:服务器公开密钥、主密钥、客户机读密钥、客户机写密钥等等。客户机写密钥和客户机读密钥从主密钥、顺序字、质疑、连接标识等的安全哈稀(Secure Hash)算法得到。常用的哈稀算法是MD5算法。

如前所述,SSL实际上是应用层(如HTTP协议,浏览器使用)和运输层(TCPInternet的传输控制协议)之间的协议,它的两个主要目标是为私有信息的安全交换提供加密方法以及提供认证服务,这样用户可以知道服务器是它所声称的。它加密应用层产生的信息M,然后把结果传给运输层,再传送给服务器端的运输层。那个运输层再传给它的SSL实体,这里它被解密为M,最后传给服务器应用层。

SSL已经开发出很多版本,每一种都比前一种安全有提高,且有更多的选项。

最后,我们再简单提一下TLSTransport Layer Security)。TLSIETF为最终替代SSL的目的而基于SSL 3.0开发的。TLSSSL间有一些差异,比如,怎样定义填充字符以产生正确长度的块和TLS支持附加的报警码(当有不正确情况时报警给用户的码字)等。尽管TLSSSL一般不互通信,不过TLS有能力恢复为SSL 3.0

百度云服务器
© 2004-2024 通信人在线 版权所有 备案号:粤ICP备06113876号 网站技术:做网站