网络安全是实现电子商务的基础,而一个通用性强,安全可靠的网络协议则是实现电子商务安全交易的要害技术之一,它也会对电子商务的整体性能产生很大的影响。由美国Netscape公司开发和倡导的SSL协议(Secure Sockets Layer,安全套接层),它是目前安全电子商务交易中使用最多的协议之一,内容主要包括协议简介、记录协议、握手协议、协议安全性分析以及应用等。本文在简单介绍SSL协议特点和流程的基础上,具体介绍了SSL协议的应用和配置过程。
1 SSL协议简介
SSL作为目前保护Web安全和基于HTTP的电子商务交易安全的事实上的,被许多世界知名厂商的Intranet和Internet网络产品所支持,其中包括Netscape、Microsoft、IBM 、Open Market等公司提供的支持SSL的客户机和服务器产品,如IE和Netscape浏览器,IIS、Domino Go WebServer、Netscape Enterprise Server和Appache等Web Server等。
SSL采用对称密码技术和公开密码技术相结合,提供了如下三种基本的安全服务:
秘密性。SSL客户机和服务器之间通过密码算法和密钥的协商,建立起一个安全通道。以后在安全通道中传输的所有信息都经过了加密处理,网络中的非法窃听者所获取的信息都将是无意义的密文信息。
完整性。SSL利用密码算法和hash函数,通过对传输信息特征值的提取来保证信息的完整性,确保要传输的信息全部到达目的地,可以避免服务器和客户机之间的信息内容受到破坏。
认证性。利用证书技术和可信的第三方CA,可以让客户机和服务器相互识别的对方的身份。为了验证证书持有者是其合法用户(而不是冒名用户),SSL要求证书持有者在握手时相互交换数字证书,通过验证来保证对方身份的合法性。
SSL协议的实现属于SOCKET层,处于应用层和传输层之间,由SSL记录协议(SSL RECORD PROTOCOL)和SSL握手协议(SSL HAND-SHAKE PROTOCOL)组成的,其结构如图1所示:
SSL可分为两层,一是握手层,二是记录层。SSL握手协议描述建立安全连接的过程,在客户和服务器传送应用层数据之前,完成诸如加密算法和会话密钥的确定,通信双方的身份验证等功能;SSL记录协议则定义了数据传送的格式,上层数据包括SSL握手协议建立安全连接时所需传送的数据都通过SSL记录协议再往下层传送。这样,应用层通过SSL协议把数据传给传输层时,已是被加密后的数据,此时TCP/IP协议只需负责将其可靠地传送到目的地,弥补了 TCP/IP协议安全性较差的弱点。
Netscape公司已经向公众推出了SSL的参考实现(称为SSLref)。另一免费的SSL实现叫做SSLeay。SSLref和SSLeay均可给任何TCP/IP应用提供SSL功能,并且提供部分或全部源代码。Internet号码分配当局(IANA)已经为具备SSL功能的应用分配了固定端口号,例如,带SSL的HTTP(https)被分配以端口号443,带SSL的SMTP(ssmtp)被分配以端口号465,带SSL的NNTP (snntp)被分配以端口号563。
微软推出了SSL版本2的改进版本,叫做PCT(私人通信技术)。SSL和PCT非常类似。它们的主要差别是它们在版本号字段的最显著位(The Most Significant Bit)上的取值有所不同:SSL该位取0,PCT该位取1。这样区分之后,就可以对这两个协议都给予支持。
1996年4月,IETF授权一个传输层安全(TLS)工作组着手制订一个传输层安全协议(TLSP),以便作为标准提案向IESG正式提交。TLSP将会在许多地方酷似SSL。
2 SSL安全性
目前,几乎所有操作平台上的WEB浏览器(IE、Netscatp)以及流行的Web服务器(IIS、Netscape Enterprise Server等)都支持SSL协议。因此使得使用该协议便宜且开发成本小。但应用SSL协议存在着不容忽视的缺点:
1. 系统不符合国务院最新颁布的《商用密码治理条例》中对商用密码产品不得使用国外密码算法的规定,要通过国家密码治理委员会的审批会碰到相当困难。
2. 系统安全性差。SSL协议的数据安全性其实就是建立在RSA等算法的安全性上,因此从本质上来讲,攻破RSA等算法就等同于攻破此协议。由于美国政府的出口限制,使得进入我国的实现了SSL的产品(Web浏览器和服务器)均只能提供512比特RSA公钥、40比特对称密钥的加密。目前已有攻破此协议的例子:1995年8月,一个法国学生用上百台工作站和二台小型机攻破了Netscape对外出口版本;另外美国加州两个大学生找到了一个“陷门”,只用了一台工作站几分钟就攻破了Netscape对外出口版本。
但是,一个安全协议除了基于其所采用的加密算法安全性以外,更为要害的是其逻辑严密性、完整性、正确性,这也是研究协议安全性的一个重要方面,假如一个安全协议在逻辑上有问题,那么它的安全性其实是比它所采用的加密算法的安全性低,很轻易被攻破。从目前来看,SSL比较好地解决了这一问题。不过SSL协议的逻辑体现在SSL握手协议上,SSL握手协议本身是一个很复杂的过程,情况也比较多,因此我们并不能保证SSL握手协议在所有的情况下逻辑上都是正确的,所以研究SSL协议的逻辑正确性是一个很有价值的问题。
另外,SSL协议在“重传攻击”上,有它独到的解决办法。SSL协议为每一次安全连接产生了一个128位长的随机数——“连接序号”。理论上,攻击者提前无法猜测此连接序号,因此不能对服务器的请求做出正确的应答。但是计算机产生的随机数是伪随机数,它的实际周期要远比2128小,更为危险的是有规律性,所以说SSL协议并没有从根本上解决“信息重传”这种攻击方法,有效的解决方法是采用“时间戳”。但是这需要解决网络上所有节点的时间同步问题。
总的来讲,SSL协议的安全性能是好的,而且随着SSL协议的不断改进,更多的安全性能、好的加密算法被采用,逻辑上的缺陷被弥补,SSL协议的安全性能会不断加强。
3 windows 2000中SSL的配置与应用
SSL的典型应用主要有两个方面,一是客户端,如浏览器等;另外一个就是服务器端,如Web服务器和应用服务器等。目前,一些主流浏览器(如IE和 Netscape等)和IIS、Domino Go WebServer、Netscape Enterprise Server、Appache等Web服务器都提供了对SSL的支持。要实现浏览器(或其他客户端应用)和Web服务器(或其他服务器)之间的安全SSL 信息传输,必须在Web服务器端安装支持SSL的Web服务器证书,在浏览器端安装支持SSL的客户端证书(可选),然后把URL中的“http://” 更换为“https://”。
SSL安全协议要求基于客户机/服务器模型的安全通信对服务器进行认证,所以,必须对服务器(如Web服务器)配置证书。下面以Windows 2000种提供的Internet 信息服务器IIS 5.0(以后简称IIS)为例来谈一下在Web服务器中请求和安装服务器证书的基本步骤与技巧,并给出配置安全通信(如SSL)的一般方法。
在一个基于客户机/服务器(更为普遍的是浏览器/Web服务器)模型的安全应用中,要求服务器端必须配备安全证书,以在网络通信中代表Web服务器的身份,客户端也可以使用Web服务器证书所提供的公钥来为Web服务器加密信息(Web服务器加密证书)或使客户端验证Web服务的签名(Web服务器签名证书)。
利用IIS申请服务器证书的时候,IIS本身先产生公私钥对,并产生相应的证书请求信息,最后把该信息提交给CA(该CA只能为Windows 2000企业CA或其他商业CA,Windows 2000独立CA不能签发服务器证书),由CA签发以后形成证书。其具体步骤如下:
1. 在Windows 2000中选择“开始”→“程序”→“治理工具”→“Internet 服务治理器”,启动IIS治理界面。
2. 选中主机名下的“默认Web站点” 项,右击,在弹出式菜单中选择“属性”菜单项,并在弹出的对话框中选择“目录安全性”标签页,如图2所示。
3. 单击“安全通信”下的“服务器证书”按钮(假如该IIS以前没有安装过Web服务器证书,“安全通信”下的“查看证书”和“编辑”按钮都是不可用的),弹出Web服务器证书向导对话框,显示目前Web服务器证书的状态,并指导用户安装或删除证书。单击“下一步”按钮继续。
4. 接下来弹出的对话框要求用户选择Web服务器证书的产生方式,如图3所示,选择“创建一个新证书”项,单击“下一步”按钮继续。
图3 选择Web服务器证书的产生方式
5. 在接着弹出的对话框中,要求用户选择证书请求的发送方式。假如选择稍后发送,系统将把证书请求保存为一个文件,可以在以后的任何时候把该请求发送给CA来请求证书;假如选择马上发送,则会把请求直接发送给CA,CA将把产生的证书自动安装到IIS(对Windows 2000企业CA而言,假如是其他CA,产生的方式可能会有所不同)。选择马上发送到在线CA,单击“下一步”按钮继续。
6. 接下来的对话框中要求输入新证书的名称和密钥长度,对服务器证书而言,一般选择1024位或以上长度。选择好后单击“下一步”按钮继续。
7. 然后在弹出的对话框中输入证书中要求的组织信息,如组织名称和组织部门。单击“下一步”按钮继续。
8. 接下来的对话框要求用户输入拥有此证书的Web站点的公用名称,它必须是一个合法的域名称,对同一网络中的不同证书,该名称唯一。假如服务器在 Internet上,公用名称应为有效的DNS名;假如服务器在Intranet中,公用名称可以为计算机的NetBIOS名,即计算机名。输入完后单击 “下一步”继续。
9. 在接下来的对话框中输入证书中要求的地理信息,如国家名、省名和市名,输入完毕后,单击“下一步”按钮继续。
10. 然后系统要求用户输入处理证书请求的证书颁发机构,该CA一般本系统中可用的在线CA。单击“下一步”按钮继续。
11. 然后系统弹出证书信息总结对话框,单击“下一步”按钮继续,则CA系统处理证书请求,并产生用户要求的Web服务器证书,然后单击系统弹出的“完成”按钮,即完成了Web服务器证书的申请。
至此,已经完成了Web服务器证书的申请和安装任务,然后就可以对IIS进行安全配置。单击图2所示的“安全通信”中的“查看”按钮,可以查看前面申请的 Web服务器证书;单击“编辑”按钮,弹出如图4所示的“安全通信”设置对话框。可以在此对话框中设置安全Web服务器时一些属性,如在访问该服务器时是否需要SSL通道、是否使用128位强加密、是否需要验证客户端证书、是否把证书映射到用户账号,以使用客户证书来控制对资源的方式等。
图4 IIS Web服务器证书的安全配置
默认情况下忽略客户证书,即用户访问配置好SSL服务器证书的Web站点时,不需要提交自己的证书。至此,其他用户就可以采用SSL安全方式来访问配置好SSL服务器证书的Web站点了,即在浏览器地址栏内输入类似“https://….”字样的URL地址。
4 结论
由于出口限制和其他原因,目前的浏览器(包括IE和Netscape)只能支持56位对称密钥和512位非对称密钥长度的SSL连接,这在实际应用中是非常不安全的,安全的SSL系统需要至少128位对称密钥和1024位非对称密钥长度。在SSL的客户机/服务器模式下,即使服务器端可以支持位数更多的密钥长度,具有较高的安全强度,但由于客户端的限制,实际SSL连接中只能使用客户端较低位数的密钥长度来进行安全信息传输。所以很多安全系统的客户端大都安装了一个SSL代理程序,它直接接管浏览器发送和接收的信息,利用安全的密钥长度与服务器进行交互(必要的时候还需要在服务器端安装SSL服务器代理)。
上一篇 SSL协议介绍