OpenSSL-SSL协议

来源:互联网 发布:js中的splice方法 编辑:程序博客网 时间:2024/05/27 09:48

一、OpenSSL简介

OpenSSL是一个基于密码学的安全开发包,整个软件包大概可以分成三个主要的功能部分:SSL协议库、应用程序以及密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。OpenSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。其核心是对SSL协议的实现。

二、SSL协议

简介:

    SSL协议(Secure Sockets Layer)安全套接字层协议,是为网络通信提供安全及数据完整性的一种安全协议。用以保障在Internet上数据传输的安全,利用数据加密(Encryption)技术,确保数据在网络上的传输过程中不会被截取及窃听。

OpenSSL结构:

       SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它使客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商,以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。

SSL协议实际上是SSL握手协议、SSL修改密文协议、SSL报警协议和SSL记录协议组成的一个协议族。协议结构如下表

握手协议

修改秘文协议

报警协议

SSL记录协议

TCP

IP

 

SSL握手协议:

握手协议是SSL高层协议中尤为重要的协议。

握手阶段分成五步。

       1)客户端给出协议版本号、一个客户端生成的随机数(Client random),以及客户端支持的加密方法。

       2)服务端确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数(Server random)。

       3)客户端确认数字证书有效,然后生成一个新的随机数(Premaster secret),并使用数字证书中的公钥,加密这个随机数,发给服务端。

       4)服务端使用自己的私钥,获取客户端发来的随机数(即Premaster secret)。

       5)客户端和服务端根据约定的加密方法,使用前面的三个随机数,生成"对话密钥"(session key),用来加密接下来的整个对话过程。

 

SSL修改秘文协议:

       为了保障SSL传输过程的安全性,客户端和服务器双方应该每隔一段时间改变加密规范。所以有了SSL修改密文协议。SSL修改密文协议是3个高层的特定协议中最简单的一个。

在客服端和服务器完成握手协议之后,它需要向对方发送相关消息(该消息只包含一个值为1的单字节),通知对方随后的数据将用刚刚协商的密码规范算法和关联的密钥处理,并负责协调本方模块按照协商的算法和密钥工作。

 

SSL报警协议:

       SSL报警协议是用来为对等实体传递SSL的相关警告。如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。警示消息有两种:

   1)Fatal错误,如传递数据过程中发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录。

   2)Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

 

SSL记录协议:

SSL记录协议为SSL连接提供两种服务:机密性和报文完整性。

在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据(长度不为0)组成的。所有的SSL通信都使用SSL记录层,记录协议封装上层的握手协议、报警协议、修改密文协议。SSL记录协议包括记录头和记录数据格式的规定。

SSL记录协议定义了要传输数据的格式,它位于一些可靠的传输协议之上(如TCP),用于各种更高层协议的封装。主要完成分组和组合、压缩和解压缩,以及消息认证和加密等。

SSL记录协议主要操作流程如图所示。


SSL记录协议的操作流程

图中的五个操作简单介绍如下:

1)每个上层应用数据被分成214字节或更小的数据块。记录中包含类型、版本号、长度和数据字段。

2)压缩是可选的,并且是无损压缩,压缩后内容长度的增加不能超过1024字节。

3)在压缩数据上计算消息认证MAC。

4)对压缩数据及MAC进行加密。

5)增加SSL记录。

 

SSL记录协议字段的结构如下表所示:

内容类型

主要版本

次要版本

压缩长度

明文(可压缩)

MAC(0,16或20位)

SSL记录协议字段的结构

由上表可看出SSL记录协议字段结构主要由内容类型、主要版本、次要版本、压缩长度组成,具体内容如下:

1)内容类型(8位):封装的高层协议。

2)主要版本(8位):使用的SSL主要版本。对于SSL v3已经定义的内容类型是握手协议、警告协议、改变密码格式协议和应用数据协议。

3)次要版本(8位):使用的SSL次要版本。对于SSL v3.0,值为0。

4)压缩长度(16位):明文数据(如果选用压缩则是压缩数据)以字节为单位的长度。

MAC:

       Message Authentication Codes消息认证码为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。

利用MAC算法验证消息完整性的过程:

       1)发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。

       2)接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。

       3)如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。

0 0
原创粉丝点击