




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SSL协议分析 2906303015 马德元摘要:SSL是一种在客户端和服务器端之间建立安全通道的协议。SSL一经提出,就在Internet上得到广泛的应用。SSL最常用来保护Web的安全。为了保护存有敏感信息Web的服务器的安全,消除用户在Internet上数据传输的安全顾虑。Open SSL是一个支持SSL认证的服务器它是一个源码开放的自由软件,支持多种操作系统。Open SSL软件的目的是实现一个完整的、健壮的、商业级的开放源码工具,通过强大的加密算法来实现建立在传输层之上的安全性。Open SSL包含一套SSL协议的完整接口,应用程序应用它们可以很方便的建立起安全套接层,进而能够通过网络进行安全的数据传输。SSL is a client and server is established between the security channel protocol. SSL is put forward, it has been widely used in Internet. SSL most commonly used to protect the security of Web. In order to protect sensitive information being Web server security, remove users in Internet data transmission security concerns.Open SSL is a SSL authentication server. It is an open source free software, support for multiple operating system. Open SSL software is designed to achieve a complete, robust, commercial open source tools, through a strong encryption algorithm to achieve the established in the transport layer security. Open SSL contains a set of SSL protocol complete interface, applications and they can be very convenient to establish secure sockets layer, and then through the network secure data transmission .SSL协议概述SSL 是Secure socket Layer英文缩写,它的中文意思是安全套接层协议,指使用公钥和私钥技术组合的安全网络通讯协议。SSL协议是网景公司(Netscape)推出的基于 WEB应用的安全协议,SSL协议指定了一种在应用程序协议(如Http、Telenet、NMTP和FTP等)和TCP/IP协议之间提供数据安全性分层的机制,它为TCP/IP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,确保数据在传送中不被改变,即确保数据的完整性。 SSL 以对称密码技术和公开密码技术相结合,可以实现如下三个通信目标: (1)秘密性: SSL客户机和服务器之间传送的数据都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。 (2)完整性: SSL利用密码算法和散列(HASH)函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息受到破坏。(3)认证性:利用证书技术和可信的第三方认证,可以让客户机和服务器相互识别对方的身份。为了验证证书持有者是其合法用户(而不是冒名用户), SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。SSL协议的体系结构 SSL协议位于TCP/IP协议模型的网络层和应用层之间,使用TCP来提供一种可靠的端到端的安全服务,它是客户/服务器应用之间的通信不被攻击窃听,并且始终对服务器进行认证,还可以选择对客户进行认证。SSL协议在应用层通信之前就已经完成加密算法、通信密钥的协商以及服务器认证工作,在此之后,应用层协议所传送的数据都被加密。SSL实际上是共同工作的两层协议组成,如图1所示。从体系结构图可以看出SSL安全协议实际是SSL握手协议、SSL修改密文协议、SSL警告协议和SSL记录协议组成的一个协议族。握手协议修改密文协议报警协议SSL记录协议TCPIP 图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握手协议包含四个阶段:第一个阶段建立安全能力;第二个阶段服务器鉴别和密钥交换;第三个阶段客户鉴别和密钥交换;第四个阶段完成握手协议。SSL协议的实现 基于OpenSSL的程序可以被分为两个部分:客户机和服务器,使用SSL协议使通信双方可以相互验证对方身份的真实性,并且能够保证数据的完整性和机密性。建立SSL通信的过程如图2所示。图2 SSL通信过程 SSL通信模型采用标准的C/S结构,除了在TCP层上进行传输之外,与普通的网络通信协议没有太大的区别,基于OpenSSL的程序都要遵循以下几个步骤:(1) OpenSSL初始化 在使用OpenSSL之前,必须进行相应的协议初始化工作,这可以通过下面的函数实现: int SSL_library_int(void);(2) 选择会话协议 在利用OpenSSL开始SSL会话之前,需要为客户端和服务器制定本次会话采用的协议,目前能够使用的协议包括TLSv1.0、SSLv2、SSLv3、SSLv2/v3。 需要注意的是,客户端和服务器必须使用相互兼容的协议,否则SSL会话将无法正常进行。(3) 创建会话环境 在OpenSSL中创建的SSL会话环境称为CTX,使用不同的协议会话,其环境也不一样的。申请SSL会话环境的OpenSSL函数是: SSL_CTX *SSL_CTX_new(SSL_METHOD * method); 当SSL会话环境申请成功后,还要根据实际的需要设置CTX的属性,通常的设置是指定SSL握手阶段证书的验证方式和加载自己的证书。制定证书验证方式的函数是: int SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int(*verify_callback),int(X509_STORE_CTX *); 为SSL会话环境加载CA证书的函数是: SSL_CTX_load_verify_location(SSL_CTX *ctx,const char *Cafile,const char *Capath); 为SSL会话加载用户证书的函数是: SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,int type); 为SSL会话加载用户私钥的函数是: SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx,const char* file,int type); 在将证书和私钥加载到SSL会话环境之后,就可以调用下面的函数来验证私钥和证书是否相符: int SSL_CTX_check_private_key(SSL_CTX *ctx);(4) 建立SSL套接字 SSL套接字是建立在普通的TCP套接字基础之上,在建立SSL套接字时可以使用下面的一些函数: SSL *SSl_new(SSL_CTX *ctx); /申请一个SSL套接字 int SSL_set_fd(SSL *ssl,int fd);) /绑定读写套接字 int SSL_set_rfd(SSL *ssl,int fd); /绑定只读套接字 int SSL_set_wfd(SSL *ssl,int fd); /绑定只写套接字(5) 完成SSL握手 在成功创建SSL套接字后,客户端应使用函数SSL_connect( )替代传统的函数connect( )来完成握手过程: int SSL_connect(SSL *ssl); 而对服务器来讲,则应使用函数SSL_ accept ( )替代传统的函数accept ( )来完成握手过程: int SSL_accept(SSL *ssl); 握手过程完成之后,通常需要询问通信双方的证书信息,以便进行相应的验证,这可以借助于 下面的函数来实现: X509 *SSL_get_peer_certificate(SSL *ssl); 该函数可以从SSL套接字中提取对方的证书信息,这些信息已经被SSL验证过了。 X509_NAME *X509_get_subject_name(X509 *a); 该函数得到证书所用者的名字。(6) 进行数据传输 当SSL握手完成之后,就可以进行安全的数据传输了,在数据传输阶段,需要使用SSL_read( ) 和SSL_write( )来替代传统的read( )和write( )函数,来完成对套接字的读写操作: int SSL_read(SSL *ssl,void *buf,int num); int SSL_write(SSL *ssl,const void *buf,int num);(7) 结束SSL通信 当客户端和服务器之间的数据通信完成之后,调用下面的函数来释放已经申请的SSL资源: int SSL_shutdown(SSL *ssl); /关闭SSL套接字 void SSl_free(SSL *ssl); /释放SSL套接字 void SSL_CTX_free(SSL_CTX *ctx);/释放SSL会话环境SSL协议功能:SSL协议提供的服务主要有:1)认证用户和服务器,确保数据发送到正确的客户机和服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。SSL协议优缺点:由于安全套接字协议(SLL)的成本低、速度快、使用简单,对现在网络系统不需要进行大的修改,因而目前取得了广泛的应用。但是SSL协议也有缺点:首先,客户的信息可能先到商家,被商家阅读,这样,客户资料的安全性就得不到保证;其次,SSL只能保证资料信息传递的安全,而传递过程是否有人截取就无法保证了。所以,SSL并没有实现电子支付所要求的保密性、完整性,而且多方互相认证也是很困难的。SSL协议范围:通过原理的介绍,我们可以知道,利用SSL协议可以有效加强我们的信息传输保密性。利用这一点,我们就可以将其应用到WEB服务器的安全访问上,邮件的安全传输上等。 识别一个网站是否启用了SSL安全协议最简单最直接的办法就是看它的网址信息,通常的我们看到的都是以http:/开头的网址,而采用了该安全协议后,网址的开头是:https:/,多了一个S。 对于网站经营者来说,提升网站知名度,增加网站访问量意味着更多的商机。但不时出现的欺诈钓鱼网站总给人以防不胜防的感觉。如何更好的发挥SSL证书的作用,提升网站的可信度,降低欺诈钓鱼的风险?网站可以采用以下几种方法。l 在敏感交易界面,高端SSL证书对于网站来说,并不是说所有的页面均需部署SSL证书。网站只需在一些需要提交关键数据的交易页面提供SSL证书安全保护。但关键页面的SSL证书,一定要选择经过身份验证、拥有良好品牌信誉的SSL证书,否则客户将无法对网站身份进行有效判断。l 网站提供识别欺诈钓鱼网站的方法鉴于国内客户网站安全知识匮乏的现状,网站在部署SSL证书后,最佳的方式是在交易页面同时以文字或图片的方式告知客户SSL证书功能及识别欺诈钓鱼网站的简单方法,从而提升网民继续完成交易的信心。l 放置VeriSign信任签章为了让更多的客户了解网站采用了SSL证书安全技术,网站安全值得信赖。拥有VeriSign SSL证书的网站可以各页面或交易页面的显著位置放置VeriSign信任签章(VeriSign Trust Seal)。作为世界范围内最被认可的安全标记,其应对欺诈钓鱼方面的作用显著。VeriSign SSL证书客户,不需要支付任何额外费用。l 升级绿色地址栏绿色地址栏技术是VeriSign扩展验证(EV)SSL证书特有功能,是目前反击钓鱼网站最为先进的武器,没有客户不会对地址栏颜色的变化无动于衷。对于拥有强烈安全需求、客户群庞大、品牌知名度极高的网站,绿色地址栏一定是最好的选择。SSL 的安全漏洞:虽然一个网站可能使用了SSL 安全技术,但这并不是说在该网站中正在输入和以后输入的数据也是安全的。所有人都应该意识到SSL 提供的仅仅是电子商务整体安全中的一小部份解决方案。SSL 在网站上的使用可能会造成管理员对其站点安全性的某些错觉。使用了SSL 的网站所可能受到的攻击和其它服务器并无任何区别,同样应该留意各方面的安全性。简言之,加密和数字证书,SSL 的主要组成,从来都无法保护服务器?它们仅仅可以保护该服务器所收发的数据。SSL 常见安全问题下面三种:1 、攻击证书 类似Verisign之类的公共CA机构并不总是可靠的,系统管理员经常犯的错误是过于信任Verisign等的公共CA机构。例如,如果Verisign发放一个证书说我是“某某某”,系统管理员很可能就会相信“我是某某某”。但是,对于用户的证书,公共CA机构可能不象对网站数字证书那样重视和关心其准确性。例如,Verisign发放了一个“keyman 组织的证书,而我是其中一员”JACK“。当一个网站要求认证用户身份时,我们提交了”JACK“的证书。你可能会对其返回的结果大吃一惊的。更为严重的是,由于微软公司的IIS 服务器提供了”客户端证书映射“(Client Certificate BBS.bitsCN.com网管论坛Mapping )功能,用于将客户端提交证书中的名字映射到NT系统的用户帐号,在这种情况下我们就能够获得该主机的系统管理员特权! 如果黑客不能利用上面的非法的证书突破服务器,他们可以尝试暴力攻击(brute-force attack)。虽然暴力攻击证书比暴力攻击口令更为困难,但仍然是一种攻击方法。要暴力攻击客户端认证,黑客编辑一个可能的用户名字列表,然后为每一个名字向CA机构申请证书。每一个证书都用于尝试获取访问权限。用户名的选择越好,其中一个证书被认可的可能性就越高。暴力攻击证书的方便之处在于它仅需要猜测一个有效的用户名,而不是猜测用户名和口令。 2 、窃取证书除上面的方法外,黑客还可能窃取有效的证书及相应的私有密钥。最简单的方法是利用特洛伊木马。这种攻击几乎可使客户端证书形同虚设。它攻击的是证书的一个根本性弱点:私有密钥?整个安全系统的核心?经常保存在不安全的地方。对付这些攻击的唯一有效方法或许是将证书保存到智能卡或令牌之类的设备中。 3 、安全盲点系统管理员没办法使用现有的安全漏洞扫描(vulnerability scanners)或网络入侵侦测系统(intrusion detection systems ,IDS ),来审查或监控网络上的SSL 交易。网络入侵侦测系统是通过监测网络传输来找寻没有经过认证的活动。任何符合已知的攻击模式或者并未经过政策上授权的网络活动都被标起来以供系统管理者检视。而要让IDS 能够发生作用,IDS 必须能够检视所有的网络流量信息,但是SSL 的加密技术却使得通过http传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论