网络安全毕业设计 1.docx

上传人:b****3 文档编号:5217772 上传时间:2022-12-14 格式:DOCX 页数:11 大小:93.61KB
下载 相关 举报
网络安全毕业设计 1.docx_第1页
第1页 / 共11页
网络安全毕业设计 1.docx_第2页
第2页 / 共11页
网络安全毕业设计 1.docx_第3页
第3页 / 共11页
网络安全毕业设计 1.docx_第4页
第4页 / 共11页
网络安全毕业设计 1.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

网络安全毕业设计 1.docx

《网络安全毕业设计 1.docx》由会员分享,可在线阅读,更多相关《网络安全毕业设计 1.docx(11页珍藏版)》请在冰豆网上搜索。

网络安全毕业设计 1.docx

网络安全毕业设计1

 

北京市西城经济科学大学

毕业设计

题目:

SSL协议的分析实现及应用

 

姓名:

**********************

学号:

K*********

学院:

北京市西城经济科学大学

专业:

计算机网络与安全管理

指导教师:

**********************

 

2011年5月30日

本人声明

声明内容如下:

我声明,本设计及其研究工作是由本人在导师指导下独立完成的,在完成设计时所利用的一切资料均已在参考文献中列出。

摘要

目前,随着Internet的快速发展,互联网上的信息安全越来越引起人们的关注。

特别是近年来网上银行、电子商务和电子政务的发展,如何保证传输信息,特别是交易信息的保密性、完整性已成为继续解决的问题。

安全套接层协议(SecuritySocketLayerProtocol,简称SSL)是Internet上进行保密通信的一个安全协议。

关键词:

加密算法,数据传输,SSL协议,SSL实现,SSL缺陷

目录:

1.引言

  SSL是一种在客户端和服务器端之间建立安全通道的协议。

SSL一经提出,就在Internet上得到广泛的应用。

SSL最常用来保护Web的安全。

为了保护存有敏感信息Web的服务器的安全,消除用户在Internet上数据传输的安全顾虑。

OpenSSL是一个支持SSL认证的服务器.它是一个源码开放的自由软件,支持多种操作系统。

OpenSSL软件的目的是实现一个完整的、健壮的、商业级的开放源码工具,通过强大的加密算法来实现建立在传输层之上的安全性。

OpenSSL包含一套SSL协议的完整接口,应用程序应用它们可以很方便的建立起安全套接层,进而能够通过网络进行安全的数据传输。

1.1SSL协议概述

SSL是SecuresocketLayer英文缩写,它的中文意思是安全套接层协议,指使用公钥和私钥技术组合的安全网络通讯协议。

SSL协议是网景公司(Netscape)推出的基于WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,即确保数据的完整性。

 SSL以对称密码技术和公开密码技术相结合,可以实现如下三个通信目标:

1.(秘密性:

SSL客户机和服务器之间传送的数据都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。

2.完整性:

SSL利用密码算法和散列(HASH)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。

3.认证性:

利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。

为了验证证书持有者是其合法用户(而不是冒名用户),SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。

1.2SSL协议的体系结构

SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。

SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。

SSL实际上是共同工作的两层协议组成,如表1.1所示。

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

握手

协议

修改密  

文协议

报警

协议

       SSL记录协议

          TCP

          IP

         

表1.1 SSL体系结构

       SSL记录协议为SSL连接提供了两种服务:

一是机密性,二是消息完整性。

为了实现这两种服务,SSL记录协议对接收的数据和被接收的数据工作过程是如何实现的呢?

SSL记录协议接收传输的应用报文,将数据分片成可管理的块,进行数据压缩(可选),应用MAC,接着利用IDEA、DES、3DES或其他加密算法进行数据加密,最后增加由内容类型、主要版本、次要版本和压缩长度组成的首部。

被接收的数据刚好与接收数据工作过程相反,依次被解密、验证、解压缩和重新装配,然后交给更高级用户。

       SSL修改密文协议是使用SSL记录协议服务的SSL高层协议的3个特定协议之一,也是其中最简单的一个。

协议由单个消息组成,该消息只包含一个值为1的单个字节。

该消息的唯一作用就是使未决状态拷贝为当前状态,更新用于当前连接的密码组。

为了保障SSL传输过程的安全性,双方应该每隔一段时间改变加密规范。

       SSL告警协议是用来为对等实体传递SSL的相关警告。

如果在通信过程中某一方发现任何异常,就需要给对方发送一条警示消息通告。

警示消息有两种:

一种是Fatal错误,如传递数据过程中,发现错误的MAC,双方就需要立即中断会话,同时消除自己缓冲区相应的会话记录;第二种是Warning消息,这种情况,通信双方通常都只是记录日志,而对通信过程不造成任何影响。

SSL握手协议可以使得服务器和客户能够相互鉴别对方,协商具体的加密算法和MAC算法以及保密密钥,用来保护在SSL记录中发送的数据。

SSL握手协议允许通信实体在交换应用数据之前协商密钥的算法、加密密钥和对客户端进行认证(可选)的协议,为下一步记录协议要使用的密钥信息进行协商,使客户端和服务器建立并保持安全通信的状态信息。

SSL握手协议是在任何应用程序数据传输之前使用的。

SSL握手协议包含四个阶段:

第一个阶段建立安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别和密钥交换;第四个阶段完成握手协议。

2.SSL协议工作原理

SSL协议处于互联网多层协议集的传输层上,运行在TCP/IP协议之上而在其他高层协议(如HTTP、Telnet、FTP和IMAP等)之下,如表2.1所示。

在建立一次SSL连接之前,首先建立TCP/IP连接。

SSL协议可以让应用层协议透明地加以应用。

运行时,支持SSL协议的服务器可以同一个支持SSL协议的客户机彼此认证自己,还允许这两个机器之间建立安全的加密连接,同时保证信息在传输过程中的完整性。

SSL协议可以分为4个子协议:

SSL握手协议、SSL更改密码规程协议、SSL报警协议和SSL记录协议,其中最重要的两个协议是握手协议和记录协议。

SSL记录协议定义了数据传送的格式,它位于一些可靠的传输层协议之上(如TCP),用于各种更高层协议的封装。

SSL握手协议位于SSL记录协议之上,并被SSL记录协议所封装。

它描述建立安全连接的过程,在客户和服务器传送应用层数据之前,该协议允许服务器与客户机之间协商加密算法和会话密钥,完成通信双方的身份验证等功能。

应用层协议(HTTP、Telnet、FTP、IMAP等)

SSL握手协议

SSL更改密码规程协议

SSL报警协议

SSL记录协议

TCP协议

IP协议

表2.1SSL协议的分层结构

3.SSL记录协议

SSL记录协议(RecordProtocol)定义了传输的格式,包括记录头和记录数据格式的规定。

发送方记录层的工作过程如图3.1所示:

图3.1记录层的工作过程

1.记录层从上层接收到任意大小的应用层数据块,把数据快分成不超过214字节的分片。

2.记录层用当前的会话状态中给出的压缩算法静分片压缩成一个压缩快,压缩操作是可选的。

3.每个会话都有相应“加密规格”指定了对称加密算法和MAC算法。

记录层用指定的MAC算法对压缩块计算MAC,用指定的对称加密算法加密压缩块和MAC,形成密文块。

4.对密文块添加SSL记录头,然后送到传输层,传输层受到这个SSL记录层数据单元后,记上TCP报头,得到TCP数据包。

图3.2SSL记录协议中数据项的格式

4.SSL握手协议

图4.1SSL建立新会话时的握手过程

建立新会话时的握手过程

握手协议用于数据传输之前。

它可以进行服务器与客户之间的身份鉴别,同时通过服务器和客户协商,决定采用的协议版本、加密算法,并确定加密数据所需的对称密钥,随后采用公钥加密技术产生共享机密信息(例如对称密钥)。

每次连接,握手协议都要建立一个会话。

会话中包含了一套可在多次会话中使用的加密安全参数,从而减轻了每次建立会话的负担。

然而,必须指出的是,SSL中的每次连接时,在握手协议中产生的对称密钥都是独特的,这种每次更换密钥的方法显然在更大程度上确保了系统的不易攻破性。

根据是否验证对方的证书,SSL的握手过程可以分为以下三种验证模式:

客户和服务器都被验证;只验证客户机,不验证服务器,这是Internet上使用最广泛的形式;客户和服务器都不验证,也称为完全匿名模式。

SSL握手协议建立一个新的会话的过程如图4.2所示,具体如下:

阶段1:

确定一些相关参数,包括协议版本、会话ID、加密规格、压缩算法和初始随机数

(1)客户端发送client_hello消息给服务器,向服务器传送客户端支持的SSL协议的版本号、加密算法的种类、MAC算法的种类、会话标识、密码属性(如hash块的大小),以及其他服务器和客户端之间通信所需要的各种信息。

(2)服务器以server_hello向客户应答,服务器端传选定的SSL协议的版本号、加密算法的种类、MAC算法的种类、密码属性及其他相关信息。

阶段2:

服务器端发送自身证书(或临时公钥)及证书请求,最后发送hello阶段结束信号。

(3)如果需要验证服务器,服务器将发送certificate消息。

服务器首先建立一个随机数,然后对这个随机数进行数字签名,将这个含有签名的随机数和服务器的证书,放在certificate消息中发送给客户端。

若不需要验证服务器证书,服务器发送包含其临时公钥的server_key_exchange消息。

(4)若服务器需要验证客户,则发送certificate_request消息

(5)服务器发送hello_done消息,表示双方握手过程中的hello阶段结束。

阶段3:

客户端验证服务器端证书、发送自身证书、交换对称密钥。

(6)客户利用服务器传过来的信息验证服务器的合法性,发送certificate_verify消息,确定验证通过。

服务器的合法性包括:

证书是否过期,发行服务器证书的CA是否可靠,发行者证书的公钥能否正确解开服务器证书的“发行者的数字签名”,服务器证书上的域名是否和服务器的实际域名相匹配。

如果合法性验证没有通过,通信将断开;如果合法性验证通过,则将继续进行下一步。

(7)客户端先随机产生一个用于后面通信的预主密码(pre-master-key),然后用服务器的公钥(从服务器的证书中获得)对其加密,再将加密后的预主密码通过client_key_exchange消息传给服务器。

(8)如果服务器要求客户的身份认证(在握手过程中为可选),客户端会首先建立一个随机数,然后对这个随机数进行数字签名,将这个含有签名的随机数和客户自己的证书放在certificate消息中,发送给服务器端。

如果客户端没有证书,则会回应no_certificate告警。

阶段4:

双方确定加密规格,结束握手协议。

(9)客户端向服务器端发出chenge_cipher_spec信息,指明后面的数据通信将“预主密码”为对称密钥,同时向服务器发送finished消息,表示完成了与服务器的握手。

(10)服务器检验客户证书和签名随机数的合法性,发送certificate_verify消息。

具体的合法性验证包括:

客户的证书使用日期是否有效,为客户提供证书的CA是否可靠,发行CA的公钥能否正确解开客户证书的发行CA的数字签名,检查客户的证书是否在证书撤销列表(CRL)中。

检验如果没有通过,则通信立刻中断;如果验证通过,则服务器将用自己的私钥解开加密的“预主密码”,然后执行一系列步骤来产生通信使用的主密码(master-key)(客户端也将通过同样的方法产生相同的主密码)。

(11)服务器向客户端发出change_cipher_spec信息,指明后面的数据通信将使用预主密码为对称密钥,同时发送finished消息,通知客户端服务器端的握手过程结束。

(12)SSL的握手部分结束,SSL安全通道的数据通信开始,客户和服务器开始使用相同的对称密钥进行数据通信,同时进行通信完整性的检验。

2)恢复一个已存在会话时的握手过程

由上可以看出,SSL协议的握手过程是非常好使的,为了减少握手过程的交互次数,以及对网络带宽的占用,可将双方经过完整握手过程建立起来的会话状态记录下来。

在以后连接时,采用会话重用技术恢复会话过程,免去会话参数的协商。

SSL握手协议恢复一个已存在的会话的过程如图5-5所示。

客户端发送client_hello消息给服务器,其中的sessionid是要恢复的会话的标识,服务器在会话缓存中检查是否有这个会话标识:

若有,服务器将在相应的会话状态下建立一个新的连接,服务器发送含有sessionid的server_hello;若没有,服务器会生成一个新的sessionid,建立一个新的会话过程。

当通过恢复一个会话建立一个连接时,这个新的连接将继承这个会话状态下的压缩算法、加密规格和预主密码。

但该连接会产生新的随机数和通信密码。

图4.2SSL恢复一个已存在会话时的握手过程

5.SSL协议的实现

基于OpenSSL的程序可以被分为两个部分:

客户机和服务器,使用SSL协议使通信双方可以相互验证对方身份的真实性,并且能够保证数据的完整性和机密性。

建立SSL通信的过程如图5.1所示。

图5.1 SSL通信过程

SSL通信模型采用标准的C/S结构,除了在TCP层上进行传输之外,与普通的网络通信协议没有太大的区别,基于OpenSSL的程序都要遵循以下几个步骤:

5.1OpenSSL初始化

在使用OpenSSL之前,必须进行相应的协议初始化工作,这可以通过下面的函数实现:

intSSL_library_int(void);

5.2选择会话协议

在利用OpenSSL开始SSL会话之前,需要为客户端和服务器制定本次会话采用的协议,目前能够使用的协议包括TLSv1.0、SSLv2、SSLv3、SSLv2/v3。

需要注意的是,客户端和服务器必须使用相互兼容的协议,否则SSL会话将无法正常进行。

5.3创建会话环境

在OpenSSL中创建的SSL会话环境称为CTX,使用不同的协议会话,其环境也不一样的。

申请SSL会话环境的OpenSSL函数是:

SSL_CTX*SSL_CTX_new(SSL_METHOD*method);

当SSL会话环境申请成功后,还要根据实际的需要设置CTX的属性,通常的设置是指定SSL握手阶段证书的验证方式和加载自己的证书。

制定证书验证方式的函数是:

intSSL_CTX_set_verify(SSL_CTX*ctx,intmode,int(*verify_callback),int(X509_STORE_CTX*));

为SSL会话环境加载CA证书的函数是:

SSL_CTX_load_verify_location(SSL_CTX*ctx,constchar*Cafile,constchar*Capath);

为SSL会话加载用户证书的函数是:

SSL_CTX_use_certificate_file(SSL_CTX*ctx,constchar*file,inttype);

为SSL会话加载用户私钥的函数是:

SSL_CTX_use_PrivateKey_file(SSL_CTX*ctx,constchar*file,inttype);

在将证书和私钥加载到SSL会话环境之后,就可以调用下面的函数来验证私钥和证书是否相符:

intSSL_CTX_check_private_key(SSL_CTX*ctx);

5.4建立SSL套接字

SSL套接字是建立在普通的TCP套接字基础之上,在建立SSL套接字时可以使用下面的一些函数:

SSL*SSl_new(SSL_CTX*ctx); 

//申请一个SSL套接字

intSSL_set_fd(SSL*ssl,intfd);) 

//绑定读写套接字

intSSL_set_rfd(SSL*ssl,intfd); 

//绑定只读套接字

intSSL_set_wfd(SSL*ssl,intfd);

//绑定只写套接字

5.5完成SSL握手

在成功创建SSL套接字后,客户端应使用函数SSL_connect()替代传统的函数connect()来完成握手过程:

intSSL_connect(SSL*ssl);

而对服务器来讲,则应使用函数SSL_accept()替代传统的函数accept()来完成握手过程:

intSSL_accept(SSL*ssl);

握手过程完成之后,通常需要询问通信双方的证书信息,以便进行相应的验证,这可以借助于下面的函数来实现:

X509*SSL_get_peer_certificate(SSL*ssl);

该函数可以从SSL套接字中提取对方的证书信息,这些信息已经被SSL验证过了。

X509_NAME*X509_get_subject_name(X509*a);

该函数得到证书所用者的名字。

5.6进行数据传输

当SSL握手完成之后,就可以进行安全的数据传输了,在数据传输阶段,需要使用SSL_read()和SSL_write()来替代传统的read()和write()函数,来完成对套接字的读写操作:

intSSL_read(SSL*ssl,void*buf,intnum);

intSSL_write(SSL*ssl,constvoid*buf,intnum);

5.7结束SSL通信

当客户端和服务器之间的数据通信完成之后,调用下面的函数来释放已经申请的SSL资源:

intSSL_shutdown(SSL*ssl); 

//关闭SSL套接字

voidSSl_free(SSL*ssl);

 //释放SSL套接字

voidSSL_CTX_free(SSL_CTX*ctx); 

//释放SSL会话环境

6.SSL协议的缺陷

根据以上内容可知,SSL协议所采用的加密算法和认证算法使它具有一定的安全性,能够在一定程度上抵抗某些攻击。

除此之外SSL协议具备很强的灵活性,在浏览器中大都建有SSL功能。

但是SSL协议也有很多缺陷,具体如下:

6.1密钥管理问题

设计一个安全秘密的密钥交换协议是很复杂的,因此,SSL握手协议中客户机和服务器在互相发送自己能够支持的加密算法时,是以明文传送的,存在被攻击修改的可能。

6.2加密强度问题

服务器证书分为高端和低端两种,高端证书加密强度比低端证书高。

SSL通信中具体达到的加密强度与客户操作系统、浏览器版本、网络服务器的所采用的证书等因素相关。

如许多客户的系统不支持128位强度的加密链接,即便服务器证书可以支持128位,客户端也自动降低加密强度,除非他采用了支持SCG技术的服务器证书(强制型),方可实现128位加密强度。

因此,客户机的性能将会影响到SSL的安全性。

6.3数字签名问题

SSL协议对握手之后的通信内容没有数字签名功能,即没有抗否认服务。

若要增加数字签名功能,则需要在协议中打“补丁”。

这样做,在用于加密密钥的同时又用于数字签名,这在安全上存在漏洞。

后来PKI体系完善了这种措施,即双密钥机制,将加密密钥和数字签名密钥二者分开,成为双证书机制。

这是PKI完整的安全服务体系。

6.4必须建立在可靠连接基础上

SSL协议的底层协议仅限于TCP协议。

由于SSL要求有TCP通道,所以对于使用UDP协议的DNS类型的应用场合是不适合的。

6.5多方通信表现欠佳

由于SSL的连接本质上是一对一的,所以在通信方只有两个的情况下它会工作的很好。

在多对多的环境中,它的表现欠佳。

7.结束语

SSL协议采用数字证书进行双端实体认证,用非对称加密算法进行密钥协商,用对称加密算法将数据加密后进行传输以保证数据的保密性,并且通过计算数字摘要来验证数据在传输过程中是否被篡改和伪造,从而为敏感数据在Internet上的传输提供了一种安全保障手段。

OpenSSL是一个开放源代码的SSL协议的产品实现,它采用C语言作为开发语言,具备了跨系统的性能。

调用OpenSSL 的函数就可以实现一个SSL加密的安全数据传输通道,从而保护客户端和服务器之间数据的安全。

参考文献

1.袁艺,林生,朱渊超.信息安全专题讲座:

浅析计算机漏洞及修补措施.《保密工作》2009年第2期。

2.徐震,邓亚平.SET的安全性分析与改进.重庆邮电学院学报,2005,17(6),745~748

3.马瑞萍.SSL安全性分析研究.网络安全技术与应用;2001,12期,17~2

4.周龙骧.电子商务协议研究综述.软件学报,2001,12

5.李海泉,李健.计算机网络安全与加密技术.北京:

科学出版社,2001

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1