基于SSL的安全数据通道的理论与实践

电子科技 2004年第6期(总第177期)

40

基于SSL 的安全数据通道的理论与实践

徐永强,马建峰

(西安电子科技大学 计算机网络与信息安全教育部重点试验室,陕西 西安 710071)

摘 要 客户机和服务器之间的数据传输的安全性是影响网络应用的关键因素。文章简述了SSL 的基本原理、分层结构。然后以应用广泛的自由软件OpenSSL 为例,介绍了如何构建基于SSL 的安全数据通道。

关键词 SSL 协议; 握手协议; 记录协议; OpenSSL 中图分类号 TP309

1 引言

随着计算机网络技术的发展,Internet 已成为全球信息基础设施的骨干网络。电子商务和电子政务等正在日益改变人们的生活方式,WWW 、FTP 、SMTP 、等服务已深入人们的日常生活。Internet 这一开放的环境在带给人们极大便利的同时,也使人们面临着各种安全威胁。网络安全已成为阻碍计算机网络应用的重要因素,也是亟待解决的难题之一。SSL (Security Socket Layer )协议是Netscape 公司推出的安全协议,旨在基于Internet 建立安全的数据传输通道,它一共有3个版本。之后,IETF 形成TLS 工作组,制定作为Internet 标准的TLS 第一个版本TLSv1.0,它实际上是SSLv3.1,和SSLv3.0非常接近,并且保持了向后的兼容性。下面主要讨论的是SSLv3.0。

2 SSL 协议介绍

SSL 是在Internet 基础上提供的一种保证私密性和可靠性的安全协议。它采用数字证书和公私钥结合的加密算法,能使客户/服务应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择的对客户进行认证。在分层结构上,它建立在TCP 之上而位于应用层协议(HTTP 、FTP 、SMTP 、 Telnet 等)协议之下。而它本身也是一个两层协议,包括下层的记录协议和上层的握手协议,整个层次关系如图1所示。

收稿日期: 2004-04-02

 

SSL 的优势在于它与应用层协议的独立无关

性。高层的应用层协议能透明地建立于SSL 协议之上。在上层应用协议通信之前,SSL 协议就完成了加密算法、通信密钥的协商和相互之间的认证,之后整个会话期间的数据传输都是经过加密的。目前,SSL 提供的安全数据传输通道提供了如下的3种基本的安全服务: 

l 秘密性 SSL 客户机和服务器之间通过握手

协议协商的密码算法和密钥,在两者之间建立一条安全通道,之后所有的数据传输都是经过加密处理的,使得第三方得到的只是无意义的密文。

l 认证性 利用数字证书技术和可信的第三方

CA ,SSL 要求通信双方在握手期间交换数字证书,通过验证来保证双发身份的合法性。 l 完整性 SSL 利用密码算法和哈希函数,提供

完整性的服务,使得经过SSL 处理的数据能完整的传输到通讯对方。 (1) 握手协议

握手协议的目的是在客户与服务器真正传输

图1 SSL 协议的结构图

基于SSL 的安全数据通道的理论与实践

电子科技/2004年6月15日

应用层数据之前建立安全机制,也就是为记录层协议提供安全参数。当协议的客户和服务器开始第一次通信时,要通过握手协议协商协议版本,选择密钥交换算法、数据加密算法和哈希算法,相互进行认证,并使用所选的密钥交换算法交换共享的秘密,最后双方根据共享的秘密产生所需的数据加密算法和哈希算法的参数。消息交互过程如下:

首先客户机向服务器端发送ClientHello 消息,该消息内容有:一个可变长的会话标识符、客户机支持的密码算法列表、客户机支持的压缩算法列表、客户机支持的协议版本号、客户机产生的随机数等。服务器接收到ClientHello 消息后,回应ServerHello 消息,该消息内容有:服务器支持的协议版本、服务器产生的随机数、会话标识、服务器从客户机支持的密码列表中选择的密码组、服务器从客户机支持的压缩算法列表中选择的压缩算法等。然后,服务器向客户机发送Certificate 消息,将自己的证书发给客户机,用于客户机对服务器的认证。接着服务器向客户机发送ServerKeyExchange 消息,用于协商密钥交换算法。然后服务器可选的发送CertificateRequest 消息,要求客户机的证书。客户机收到服务器的CertificateRequest 消息后,回应Certificate 消息,发送自己的证书给服务器,用于服务器对自己的认证。如果客户没有自己的证书,那么它发送空的证书给服务器。接着客户端发送ClientKeyExchange 消息,从而完成对预主密钥premaster secret 的协商。如果客户机的证书还具有签名能力的话,那么它还应当在ClientKeyExchange 消息后发送CertificateVerify 消息,用于对客户证书的验证。在发送CertificateRequest 消息后,服务器可以发送一个hello 已完成消息ServerHelloDone ,用以标识服务器对hello 及相关消息处理完毕,其后的工作就是等待客户端的响应。此时,客户服务器双方的通讯参数协商基本完成,双方根据协商好的预主密钥premaster secret ,再采用协商好的算法分别计算需要的主密钥master secret 以及相应的会话密钥和其他参数。最后,客户机也许会发送ChangeCipherSpec 消息,改变密码规范意味着需要将预生效的密码规范复制为现行密码规范,也即启动新的通讯参数。并且客户机对Finished 消息加密后发给服务器,服务器收到后同样发送ChangeCipherSpec 消息和Finished 消息。至此,握手过程全部结束,建立安全通道所需的协商工作已经完成,然后就可以安全的传输应用数据了。

(2)记录协议

记录协议为上层协议如握手协议服务,在发送端,它将上层传来的数据进行分组、压缩、形成MAC 、加密,然后进行传输。在接收端,记录协议进行相反的处理过程。其中所需的密码参数是在握手过程中产生的,过程如下图所示。

3 用OpenSSL 实现SSL 安全通道

OpenSSL 是继承于SSLeay 的Open Source 软件,当前版本是OpenSSL0.9.7d 。OpenSSL 实现了SSL2.0、SSL32.0和TLS1.0。它能应用到各种操作系统中,被众多的开发和研究人员使用。下面介绍如何用OpenSSL 建立安全的数据传输通道。具体的安装方法请参考OpenSSL 的手册。

使用openssl 的ssl 库的ssl 应用包含如下步骤:

(1) 初始化库:调用一个初始化函数SSL_library_init()。

(2) 建立SSL 环境:调用函数SSL_CTX_new ()。SSL 环境即我们说的上下文,用一个结构ssl_ctx 表示,该环境包括可被多个ssl 连接公用的设置和参数,如连接方法、(由ssl_method 结构表示)、验证方法、可重用的ssl 会话(ssl_session 结构表示)、超时设置、可重用的密码组(ssl_cipher 结构表示)列表、证书、CA 等。

(3) 建立SSL 连接:调用函数SSL_NEW (SSL_CTX *ctx )创建新的SSL 结构。完成SSL 环境建立后(由SSL_CTX 结构表示),可以基于此环境建立多个SSL 连接,一个SSL 结构代表一个SSL 连接,其中保存了该连接所需要的数据。新建的SSL 结构从SSL 环境ssl_ctx 继承连接方法、验证方法、超时设置、可用的密码组列表、证书、CA 等设置。可以对SSL 进行重新设置以取代从环境中继承的缺省设置,新作的设置只对该SSL 有效,与从同一环境中创建的其他SSL 结构无关。必须为每个SSL 设置底层的通信信道。

图2 记录协议处理流程

基于SSL 的安全数据通道的理论与实践

IT Age/Mar. 15, 2004

42(4) 用SSL 连接完成应用数据交换:调用函数ssl_read(ssl *ssl,char *buf,int num)从ssl 中读取num 个字节的数据到buf 中;调用函数ssl_write(ssl *ssl,char *buf,int num)将buf 中num 个字节的数据写入ssl 中。

(5) 关闭连接释放资源:调用函数ssl_shutdown(ssl *ssl)关闭ssl 连接、调用函数ssl_free(ssl *ssl)释放ssl 结构、调用函数ssl_ctx_free(ssl_ctx *ctx)释放ssl_ctx 结构。

4 结束语

SSL 是IETF 已经标准化的协议集合,几乎所有的现有Web 浏览器和服务器都支持它,并且它支持众多的密码体制,提供了身份认证机制,保证了网络通信的机密性和完整性。自由软件OpenSSL 实现了SSL,并且突破了美国密码出口限制,提高了密码强度,从而得到广泛应用。

参考文献

1 OpenSSL 源程序及文档. https://www.360docs.net/doc/8318257982.html,, 2004.

2 Frier A, KarIton P, Kocher P. The SSL3.0 Protocol. Netscape Communications Corp.1996.

3 [美]Bruce Schneier.应用密码学——协议、算法与C 源程序. 北京:机械工业出版社, 2000.

4杨波. 现代密码学. 北京:清华大学出版社, 2003 .

作者简介 

徐永强(1976-,男,硕士研究生,研究方向:网络安全 马建峰(1963-,男,博士生导师,研究方向:网络安全,密码学

电话: 88202429, 130******** Email :xyq1250@https://www.360docs.net/doc/8318257982.html, 西安电子科技大学177信箱(710071)

The Theory and Practice of the SSL Based Safe Data Channel

Xu Y ongqiang, Ma jianfeng

(Ministry of Education Key Laboratory of Computer Netwroks and Information Security,

Xidian University, Xi’an 710071, China)

Abstract: The security of data transmission between the client and the server is the key factor that affects the application of networks. This article presents a brief introduction to the principle and layered structure of SSL, followed by a discussion of how to build a safe data channel based on SSL with the open-source soft OpenSSL as an example. Keywords: SSL protocol; handshake protocol; record protocol; OpenSSL

(上接第39页)

IPSec and its Application in Windows2000 Network

Cao Jianchun, Shen Shujuan

(1.Yellow River Conservancy Technical Institute, Kaifeng 475000, China;

2. Zhengzhou University, Zhengzhou 450052, China )

Abstract: IPsec employs authenticity and confidentiality at the IP layer. Windows2000 has the pre-deployed IPSec policy contained, so that it can deploy IPSec with convenience. This paper tests and verifies IPSec through FTP and puts forward protocols that can't be protected by IPSec.

Keywords: IPSec; network security; data protection

相关文档
最新文档