安全套接层协议(Secure Socket Layer Protocol)是由美国网景(Netscape)公司开发的在网络会话层上的安全协议,用于浏览器和Web服务器之间的安全连接。它通过数字签名和数字证书实现客户机和服务器的身份验证,通过公开密钥和私有密钥保证通信安全,并广泛应用于电子商务的安全电子支付环节。
(一)SSL协议概述
SSL协议运行在传输层协议和应用层协议之间,在TCP/IP网络分层结构中的位置如图4-8所示。
图4-8 TCP/IP网络层次结构中的SSL协议层
SSL协议完全独立于应用层协议,为其提供“透明”的服务,即在应用层开始通信之前,客户机和服务器已完成了加密算法、会话密钥的协商以及服务器的认证工作。随后的应用层传输数据都被加密,保证客户机与服务器的通信不被窃听。SSL提供的基本安全服务功能如下:
1.服务器认证
支持SSL协议的客户机软件可以对服务器的数字证书进行认证。在客户端,所有可信任的认证机构都在一个列表中,采用公钥密码技术验证服务器证书中的CA数字签名,确认该服务器是否是可信任的。例如,消费者向商家发送订购信息之前,商家服务器首先将自己的数字证书发给消费者机器,通过认证后客户机再将相关信息传给服务器。
2.客户机认证
与服务器认证类似,支持SSL协议的服务器软件可以对客户机的数字证书进行认证。
3.保证数据传输的机密性和完整性
经过认证的服务器和客户机之间可以形成安全通道,利用双方约定的会话密钥实现加密通信。由信息发送方加密,信息接收方解密。对于传输的数据,有一套检测机制能够判定信息是否被篡改,保证数据的完整性。
(二)SSL协议的内容
SSL协议描述了通信双方的握手过程规范和传输数据的组织格式。协议共分为两层,下层是SSL记录协议,上层包括三个子协议,即握手协议、更改密码规程协议和报警协议,其中最重要的是记录协议和握手协议。
1.SSL记录协议
SSL记录协议规定了数据组成的格式,传输的数据都封装在记录中。
记录是由记录头和长度不为0的记录数据组成。记录头可以是2字节或3字节长的编码,其中的信息有:记录头的类型、记录数据的长度、记录数据中是否有填充数据。当记录头的最高值为1时,表示不含填充数据,且记录头为2字节,那么记录数据的最大长度为32767字节,当记录头的最高位为0时,表示含有填充数据、且记录头为3字节,记录数据最大长度为16383字节。SSL记录数据由消息认证码MAC、实际数据和填充数据组成。MAC用于数据的完整性检查。填充数据是在使用块加密算法时,将实际数据填补成块数的整倍数。
2.SSL握手协议(www.daowen.com)
握手协议规定了双方进行通信时产生加密算法和密钥的协商过程。握手的过程分成两个阶段:
第一阶段:建立私密性通信通道。双方都发出Hello消息,对方都能够正确地接收,这时可以确定是否需要一个新的密钥。如果不需要,则进入握手的第二阶段;如果需要新密钥,则服务器端发出的消息可以使客户端产生一个新密钥。这个消息中包含了服务器的证书、加密约定和连接标识,为客户端对服务器的认证提供了条件。若客户端成功地产生了密钥,它向服务器发出消息Client—Master—Key,服务器向客户端返回消息Server—Verify;若客户端不能成功地产生密钥,则它向服务器发送一个出错的消息。
第二阶段:主要任务是对客户端进行认证,这是可以选择的。服务器向客户端发出认证请求消息Request—Certificate,客户端发出自己的证书,服务器认证完成后返回一个消息Server—Finish。握手协议完成。
(三)基于SSL协议的银行卡支付过程
基于SSL协议的银行卡支付涉及多个参与方,如客户端浏览器(持卡人)、商家服务器、银行服务器、CA认证机构,有可能还有第三方机构的支付网关。但是,在真正的支付过程中CA认证机构是不参与通信的,它仅是离线颁发数字证书。银行卡的支付有两种解决方案。
1.持卡人通过商家服务器向银行发送账户信息
(1)持卡人与商家服务器建立SSL连接,登录网站,向商家发出购买请求。
(2)商家响应持卡人请求,发出“同意支付”等信息,包括银行或支付网关的数字证书。
(3)持卡人使用得到的银行或支付网关的公开密钥加密支付信息,并将其与购买信息捆绑,发送给商家服务器。
(4)商家使用银行或支付网关的公开密钥加密支付信息,并将其与持卡人的加密支付信息一起发送给银行或支付网关服务器,请求支付。
(5)银行或支付网关服务器用自己的私钥解密商家发来的消息,这时,商家的账户信息和持卡人的支付信息转到了银行内部网,由发卡银行验证卡的有效性,并完成账户之间的资金结算。
(6)银行或支付网关服务器用自己的私钥加密支付结果,发送给商家。
(7)商家服务器用银行或支付网关的公钥解密结果,并发送给持卡人。
(8)商品配送。
2.持卡人直接向银行服务器发送账户信息
这种解决方案较前一种更加安全,但在支付流程和消息内容上有些差别。持卡人与商家服务器、银行或支付网关服务器分别建立SSL连接,账户信息根本不从商家服务器过,直接传送到银行或支付网关。
在基于SSL的银行卡支付过程中,SSL协议只是建立了持卡人的客户机到商家服务器、银行或支付网关服务器的安全信息通道,而持卡人的身份真实性和交易双方的不可抵赖性并没有得到根本解决。因此,SSL协议与完备的PKI体系结合才能更好地支持这种支付过程。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。