10.5.2 网络安全协议
安全协议是建立在密码体制基础上的一种交互通信协议。它运用加密算法和协议逻辑来实现认证和密钥分配。安全协议是很多分布式系统安全的基础,确保这些协议的安全运行是十分重要的。目前,安全协议中有代表性的有IPSec、SSL、SSH、TLS、PGP、PEM、S-HPPT、S/MIME协议等。这些协议在金融、商务、政务、军事系统和社会生活中的应用日益普遍。
1.IPSec
IPSec(Internet Protocol Security)是工作在IP层的安全机制,用于保护一对主机之间、一对安全网关之间或者主机与安全网关之间的数据流安全。IPSec为IP报文段提供保密性、完整性、访问控制和数据源认证等安全保护服务。IPSec是一个协议族,包括会话初始化阶段的通信双方双向认证协议、密钥协商协议,以及对通信会话中每个IP报文保护协议。
IPSec定义了两类保护IP报文的协议:
(1)认证头AH(Authentication Header) 为IP报文提供无连接的完整性、数据源认证和抗重放攻击保护服务。
(2)有效荷载封装ESP(Encapsulating Security Payload) 为IP报文提供保密性、无连接完整性、数据源认证、抗重放攻击等保护服务。
在上述两种协议下,IPSec还定义了两种工作模式:
(1)传输模式 在原有IP报文中插入IPSec协议头(AH或ESP)和尾(ESP),报文按原有IP报文头包含的信息(如IP地址)进行传输。
(2)隧道模式 将原有IP报文作为一个新IP报文的数据域看待,被封装保护在一个新的IP报文中,再根据AH协议或ESP协议添加相应的头或尾。
在不同的应用场景下,适合使用不同的IPSec模式。安全网关和安全网关之间适合使用隧道模式;主机和主机之间适合使用传输模式;主机和安全网关之间适合使用隧道模式。
IPSec使用密钥交换协议(Internet Key Exchange,简称IKE)动态协商产生共享密钥,通过IKE双方协商安全算法及参数,即安全关联SA(Security Association,简称SA)。SA为AH和ESP操作提供用于认证、加密和签名等的密码算法,以及必须的参数(如密钥)。
假设两台主机A和B建立VPN连接,每台主机都处于IPSec策略激活状态,首先由A的IKE启动与B的IKE进行安全协商,两台主机初始化IKE安全关联SA及认证,各自生成共享“秘密”,产生各自的子密钥,完成双方认证。之后完成生成子SA协商,每个主机都建立一对SA实体,即入站SA和出站SA。主机A使用出站SA对IP数据包进行签名或加密封装,并发送给主机B。B接收到IP报文后使用入站SA检查消息的完整性或解密数据。
IPSec的一个优点是它对IP报文保护与密钥管理系统松散耦合,即使密钥管理系统发生变化,IPSec的安全机制也不需要进行修改。但是使用IPSec保护的数据包不能通过网络地址转换NAT协议,对IP地址的任何修改都会导致完整性检查失效。
2.SSL/TLS
安全套接层协议(Security Socket Layer,简称SSL)最早由Netscape公司提出并实现,之后经过多次修改被IETF所采纳,并制定为传输层安全标准(Transport Layer Se-curity,简称TLS)。它位于HTTP与TCP协议层之间,通过加密传输来保证数据的机密性;通过消息验证码机制来保护消息的完整性;通过数字证书来对发送和接受者的身份进行认证,能够对信用卡和个人信息提供较好的保护。从技术上讲TLS1.0和SSL3.0的差别非常微小,因此将这两个协议同时进行介绍。
在SSL中,一台客户机与主机连接首先要初始化握手协议,然后建立SSL对话,直到对话结束。安全套接层协议会对整个通信过程加密。SSL可以在客户和服务器之间建立一条加密通道,确保所传输的数据不被非法窃取。SSL安全加密机制功能是依靠数字证书来实现的。
SSL协议包括两个子协议:SSL记录协议和SSL握手协议。SSL记录协议规范数据传输格式,封装高层的协议,为SSL连接提供机密性和消息完整性服务;SSL握手协议规定如何协商相互的身份认证、加密算法、保护加密密钥等。类似的TLS也包括TLS记录协议和TLS握手协议。
SSL协议的优势在于它是与应用层协议无关的。应用层协议(如HTTP、FTP)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。但SSL也存在一些问题,如SSL提供的保密连接有很大的漏洞、无法协调电子交易各方的安全传输和信任关系等。
很显然,SSL增加了安全性,但却是以牺牲CPU资源与降低网络传输效率为代价的,所以只有那种安全性比较高的网站才适合在Web服务器上布置SSL,在使用之前需要对网站访问量作出合理判断及对服务器的性能进行衡量。
3.安全电子交易协议SET
安全电子交易协议(Secure Electronic Transaction,简称SET)是应用层安全协议,由VISA和Master Card两大信用卡公司联合推出。SET主要是为了解决用户、商家和银行之间通过信用卡支付的交易而设计的,以保证支付命令的机密、支付过程的完整、商户和持卡人的合法身份,以及可操作性。SET的核心技术主要有公钥加密、数字签名、数字信封、数字证书等。SET协议比SSL协议复杂,因为它不仅加密两个端点间的单个会话,还加密和认定三方间的多个信息。
SET是基于互联网的卡基支付和授权业务信息传输的安全标准,采取RSA公开密钥体系对通信双方进行认证,利用DES、RC4或任何标准对称加密方法进行信息的加密传输,并用Hash算法鉴别信息真伪或有无篡改。在SET体系中有一个关键的认证机构,认证机构根据X.509标准发布和管理证书。SET提供了以下服务:
1)给所有参与交易的每一方提供一个安全的通信管道。
2)使用X.509V3数字证书来提供可信赖的服务。
3)确保交易的隐秘性,唯有在必要时提供给交易双方所需的信息。
SET交易分为三个阶段:第一阶段为购买请求阶段,持卡人与商家确定所用支付方式的细节;第二阶段是支付的认定阶段,商家与银行核实,随着交易的进行,他们将得到支付;第三阶段为收款阶段,商家向银行出示所有交易的细节,然后银行以适当的方式转移货款。
一般来说,在SET规范的交易模式中,所参与的个体包括持卡人、特约商店、发卡行、收单行、支付网关、认证中心等,通过这些成员和相关软件可以在Internet上构造符合SET标准的安全支付系统,如图10-8所示。
通常一个SET交易会涉及以下事件或状态:
1)持卡人注册:持卡人必须在发送SET信息给特约商户之前向CA注册。
2)特约商店注册:特约商店必须在他们和消费者与支付网关交换SET信息之前向CA注册。
3)购买请求:从消费者送出给特约商店的信息,包含给特约商店的订单信息和给银行的支付命令。
图10-8 安全电子支付系统
4)支付授权:在特约商店与支付网关之间的交换,可以对特定账户信用卡持卡人的采购做授权。
5)支付请款:让特约商店可以从支付网关请求支付项。
6)证书询问与状态:如果CA无法快速完成一个证书请求的处理,它会发送一个消息给持卡人或特约商店,表明要请求者稍后再做确认。持卡人或特约商店会发送证书询问的消息,确定证书请求的状态,如果请求得到批准就会接收到证书。
7)采购询问:采购响应消息收到后,持卡人可以询问订单处理状态。
8)请款撤销:特约商店可以更正请求信息中的错误,如销售员输入错误的交易数量。
SET协议保证了电子交易的机密性、数据完整性、身份的合法性和不可否认性,同时还融合了信息可靠度、持卡人账户的认证、特约商店的认证等特色。SET协议为了提供消费者隐私权的保护,使用了一个重要的创新技术,即双重签名。它将交易信息分开,使得商店取得订购信息而银行接收支付信息;另外为了避免日后可能发生购买金额与商品内容的争议,因此,两笔信息间必须要有连接关系,若以人工操作的方式处理是在两份文件上盖一个相同的戳记,而应用到计算机系统上则是采用双重签名完成。