第九章安全电子交易协议教学内容:9.1SSL协议9.2SET协议概述9.3SSL与SET协议的比较9.4在线支付9.5本章小结9.6习题学习目标:1、掌握SSL的概念、安全内容及体系结构并理解其安全漏洞。2、掌握SET的概念、安全目标及工作流程并了解其安全保障。3、掌握SSL和SET协议的不同。4、了解网上安全支付和手机支付的应用电子商务实施初期采用的安全措施部分告知(partialorder)。在网上交易中将最关键的数据,如信用卡帐号及交易金额等略去,然后再用电话告知,以防泄密。另行确认(orderconfirmation)。在网上传输交易信息之后,再用电子邮件对交易进行确认,才认为有效。在线服务(onlineservice)。为了保证信息传输的安全,用企业提供的内部网来提供联机服务。实现真正安全的网上购物,必须进入应用SSL或SET的网站。SSL是对会话的保护。SSL所提供的安全业务有实体认证、完整性、保密性,还可通过数字签名提供不可否认性。SET是一种以信用卡为基础的,在因特网上交易的付款协议,利用公钥体系对通信双方进行认证,用加密算法对信息加密传输,并用散列函数算法来鉴别信息的完整性。9.1SSL协议SSL所提供的安全业务类似于S-HTTP:有实体认证,完整性,保密性,还可通过数字签名提供不可否认性。一、SSL协议的概念SSL协议(SecureSocketLayer,安全套接层)是由网景(Netscape)公司推出的一种安全通信协议,在1995年发表。它能够对信用卡和个人信息提供较强的保护。SSL是对计算机之间整个会话进行加密的协议。在SSL中,采用了公开密钥和私有密钥两种加密方法。它是一个保证任何安装了安全套接层的客户和服务器间事务安全的协议,该协议向基于TCP/IP的客户/服务器应用程序提供了客户端和服务器的鉴别、数据完整性及信息机密性等安全措施。目的是为用户提供互联网和企业内联网的安全通信服务。是保证计算机之间通信安全的一种协议。秘密通道internetSSL支持HTTP,是其安全版,名为HTTPS。在URL前用HTTPS协议就意味着要和服务器之间建立一个安全的连接。例如,输入的URL为https://,就会同amazon.com建立安全的连接,这时浏览器状态栏会显示出一个锁表示已建立安全连接,如图下所示。SSL有两种安全级别:40位和128位。这是指每个加密交易所生成的私有会话密钥的长度。会话密钥是加密算法为在安全会话过程中将明文转成密文所用的密钥。密钥越长,加密对攻击的抵抗就越强。美国政府批准可以出口较短的48位密钥,但不允许128位密钥的出口。你可根据互联网Explorer和Netscape浏览器状态条上锁头的开关来判别洲览器是否进入了SSL会话。如果未进入,则锁头处于打开状态。一旦会话结束,会话密钥将被永远抛弃,以后的会话也不再使用。二、SSL提供的安全内容SSL提供的安全内容:机密性,完整性和认证性1、机密性:加密数据以隐藏被传送的数据。2、完整性:确保数据在传输过程中不被改变。3、认证性:认证用户和服务器,使得它们能够确信数据将被发送到正确的客户机和服务器上。三、SSL体系结构SSL协议建立在传输层和应用层之间,包括两个子协议:SSL记录协议和SSL握手协议,其中记录协议在握手协议下端。1、SSL记录协议在SSL协议中,所有的传输数据都被封装在记录中。记录是由记录头和记录数据组成的。所有的SSL通信包括握手消息、安全空白记录和应用数据都使用SSL记录层。2、SSL握手协议SSL握手协议允许服务器与客户机在应用程序传输和接收数据之前互相认证、协商加密算法和密钥。它包含两个阶段,第一个阶段用于建立私密性通信信道,第二个阶段用于客户认证。HTTPSFTPSSSL握手协议SSL记录协议TCPIPSSL协议与TCP/IP协议间的关系第一阶段是通信的初始化阶段,首先SSL要求服务器向浏览器出示证书。证书包含有一个公钥,这个公钥是由一家可信证书授权机构签发的。通过内置的一些基础公共密钥,客户的浏览器可以判断服务器证书正确与否。然后,浏览器中的SSL软件发给服务器一个随机产生的传输密钥,此密钥由已验证过的公钥加密。由于传输密钥只能由对应的私有密钥来解密,这证实了该服务器属于一个认证过的公司。随机产生的传输密钥是核心机密,只有客户的浏览器和此公司的Web服务器知道这个数字序列。这个两方共享密钥的密文可以通过浏览器安全地抵达Web服务器,Internet上的其他人无法解开它。第二阶段的主要任务是对客户进行认证,此时服务器已经被认证了。服务器方向客户发出认证请求消息。客户收到服务器方的认证请求消息后,发出自己的证书,并且监听对方回送的认证结果。而当服务器收到客户的证书后,给客户回送认证成功消息,否则返回错误消息。到此为止,握手协议全部结束。四、SSL的优缺点由于SSL协议的成本低、速度快、使用简单,对现有网络系统不需进行大的修改,因而目前取得了广泛的应用。但是SSL协议也有缺点:首先,客户的信息可能先到商家,被商家阅读,这样客户资料的安全性就得不到保证;其次,SSL只能保证资料信息传递的安全,而传递过程是否有人截取就无法保证了。所以,SSL并没有实现电子支付所要求的保密性、完整性,而且多方互相认证也是很困难的。五、SSL安全数字证书是一种能在完全开放系统中准确标识某些主体的机制。一个数字证书包含的信息必须能鉴定用户身份,确保用户就是其所持有证书中声明的用户。除了唯一的标识信息外,数字证书还包含了证书所有者的公共密钥。数字证书的使用允许SSL提供认证功能--保证用户所请求连接的服务器身份正确无误。在信用卡号或PIN号码等机密信息被发送出去前让用户确切知道通讯的另一端的身份是毫无疑问的重要的。很明显的,SSL技术提供了有效的认证。然而大多数用户并未能正确意识到通过SSL进行安全连接的必需性。除非越来越多的用户了解SSL和安全站点的基本知识,否则SSL仍不足以成为保护用户网络连接的必需技术。除非用户能够充分意识到访问站点时应该注意安全连接标识,否则现有的安全技术仍不能称为真正有效。目前几乎所有处理具有敏感度的资料,财务资料或者要求身分认证的网站都会使用SSL加密技术(当你看到https在你的网页浏览器上的URL出现时,你就是正在使用具有SSL保护的网页服务器。)。在这里我把SSL比喻成是一种在浏览器跟网络服务器之间“受密码保护的导管”(cryptographicpipe),也就是我们常说的安全通道。这个安全通道把使用者以及网站之间往返的资料加密起来。但是SSL并不会消除或者减弱网站所将受到的威胁性。在SSL这个安全通道的背后,一般没有受到SSL防护的网站一样具备了相同的网页服务器程序,同样的网页应用程序,CGI的script以及后端数据库。目前普遍存在这么一个错误的认识:很多系统管理者却认为,受到SSL防护的网页服务器自动就变得安全了。其实不然,事实上,受到SSL防护的网页服务器同样还是会受到与一般其它网站服务器遭受攻击的威胁,受到SSL防护的网页服务器不一定是万无一失的。(一)SSL的安全漏洞虽然一个网站可能使用了SSL安全技术,但这并不是说在该网站中正在输入和以后输入的数据也是安全的。所有人都应该意识到SSL提供的仅仅是电子商务整体安全中的一小部份解决方案。SSL在网站上的使用可能会造成管理员对其站点安全性的某些错觉。使用了SSL的网站所可能受到的攻击和其它服务器并无任何区别,同样应该留意各方面的安全性。简言之,加密和数字证书,SSL的主要组成,从来都无法保护服务器--它们仅仅可以保护该服务器所收发的数据。SSL常见安全问题下面三种:1、攻击证书类似Verisign之类的公共CA机构并不总是可靠的,系统管理员经常犯的错误是过于信任Verisign等的公共CA机构。例如,如果Verisign发放一个证书说我是“某某某”,系统管理员很可能就会相信“我是某某某”。但是,对于用户的证书,公共CA机构可能不象对网站数字证书那样重视和关心其准确性。例如,Verisign发放了一个“keyman组织的证书,而我是其中一员“JACK”。当一个网站要求认证用户身份时,我们提交了“JACK”的证书。你可能会对其返回的结果大吃一惊的。更为严重的是,由于微软公司的IIS服务器提供了“客户端证书映射”(ClientCertificateMapping)功能,用于将客户端提交证书中的名字映射到NT系统的用户帐号,在这种情况下我们就能够获得该主机的系统管理员特权!如果黑客不能利用上面的非法的证书突破服务器,他们可以尝试暴力攻击(brute-forceattack)。虽然暴力攻击证书比暴力攻击口令更为困难,但仍然是一种攻击方法。要暴力攻击客户端认证,黑客编辑一个可能的用户名字列表,然后为每一个名字向CA机构申请证书。每一个证书都用于尝试获取访问权限。用户名的选择越好,其中一个证书被认可的可能性就越高。暴力攻击证书的方便之处在于它仅需要猜测一个有效的用户名,而不是猜测用户名和口令。2、窃取证书除上面的方法外,黑客还可能窃取有效的证书及相应的私有密钥。最简单的方法是利用特洛伊木马。这种攻击几乎可使客户端证书形同虚设。它攻击的是证书的一个根本性弱点:私有密钥--整个安全系统的核心--经常保存在不安全的地方。对付这些攻击的唯一有效方法或许是将证书保存到智能卡或令牌之类的设备中。3、安全盲点系统管理员没办法使用现有的安全漏洞扫描(vulnerabilityscanners)或网络入侵侦测系统(intrusiondetectionsystems,IDS),来审查或监控网络上的SSL交易。网络入侵侦测系统是通过监测网络传输来找寻没有经过认证的活动。任何符合已知的攻击模式或者并未经过政策上授权的网络活动都被标起来以供系统管理者检视。而要让IDS能够发生作用,IDS必须能够检视所有的网络流量信息,但是SSL的加密技术却使得通过http传输的信息无法让IDS辨认。再者,虽然我们可以用最新的安全扫描软件审查一般的网页服务器来寻找已知的安全盲点,这种扫描软件并不会检查经过SSL保护的服务器。受到SSL保护的网页服务器的确拥有与一般服务器同样的安全盲点,可是也许是因为建立SSL连结所需要的时间以及困难度,安全漏洞扫描软件并不会审查受到SSL保护的网页服务器。没有网络监测系统再加上没有安全漏洞审查,使得最重要的服务器反而成为受到最少防护的服务器。(二)、解决方法至于如何保护证书的安全,你可以采用IDS(IntrusionDetectionSystem),它是一种用于监测攻击服务器企图的技术和方法。典型的IDS监视网络通讯,并将其与保存在数据库中的已知攻击“特征”或方法比较。如果发现攻击,IDS可以提醒系统管理员、截断连接或甚至实施反攻击等。问题在于如果网络通讯是加密的,IDS将无法监视。这反而可能会使攻击更为轻松。假设在一个典型的被防火墙和IDS防护的DMZ环境中,黑客能轻松地探测被SSL保护的网站,因为SSL对数据的加密使得IDS无法正常监测攻击。通常一台单一的网站服务器会同时使用SSL和普通的TCP协议。由于黑客攻击的服务器而不是网络连接,他们可以选择任意一种途径。通过SSL途径,黑客知道SSL加密为他们带来的好处,这样更容易避开IDS系统的监测。在这里我主要介绍的是如何解决系统管理员没办法使用现有的安全漏洞扫描或网络入侵侦测系统而存在的网页服务器安全盲点的情况,目前解决这个困扰的常用方法大致有以下三种:1、通过Proxy代理服务器的SSL我们可以在一个SSLProxy代理程序上使用这项资料审查技术。SSLProxy是一个在连接埠80上接收纯文字的HTTP通讯请求的软件,它会将这些请求通过经由SSL加密过的连结,转寄到目标网站。我们在连接埠80开一个听取的socket,通过上述的OpenSSL指令,将所有进入这个proxy的数据传送出去