网银支付 加密解密说明

前言

 本文主要说明在第三方支付系统开发过程中,网银支付接口开发开发随笔总结。

一、常用加密类型分类

1、对称加密:采用单钥对信息进行加密和解密,即同一个秘钥既可以对信息进行加密,也可以进行解密。此类型称之为对称加密。特点速度快,常用于对大量数据信息或文件加密时使用。常用例子:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES。

具体java例子可详见附件:DesUtil

2、非对称加密:采用公钥和私钥双钥形式对信息进行加密和解密,其中公钥和私钥是成对存在的,即使用公钥对信息加密后的密文只用使用其相应的私钥才可以进行解密,反之也毅然。相对对称加密而言叫做非对称加密。安全性非常好,但加密和解密耗时较长,比较适用于小数据量加密解密。常用例子:数字签名、RSA。

具体java例子可参见附件:RsaUtil

二、数据传输流程说明

1、术语解释

公钥:非对称加密算法双钥对中可向外界公开的称为公钥 (PublicKey)。在网银支付时一般需第三方支付系统将自己的公钥提供给银行,同时银行也会将它们的公钥提供给第三方支付系统。

私钥:非对称加密算法双钥对中不可向外界公开的称为私钥 (PrivteKey)。在网银支付时私钥一般需第三方支付系统妥善保存在自己系统中用于对接收到的银行指令进行验证。

加密解密:在非对称加密中,使用公钥对信息处理称之为加密,使用私钥对公钥处理后的加密密文反转过程称为解密,加密解密在对称加密算法中不做解释。

签名验证签名:只能使用在非对称加密算法中,使用私钥进行签名,公钥进行验证签名,原理是使用私钥对信息生成加密hashCode摘要,同信息一同发送给公钥持有方,公钥持有方会使用公钥对信息生成加密hashCode摘要与私钥生成的进行比较的过程就要做签名、验证签名。

2、流程说明

注:Au:第三方支付公钥        Ai:第三方支付私钥       Bu:银行公钥     Bi:银行私钥

(1)第三方支付-->银行流程:第三方支付系统向银行发送信息流程

第三方支付系统会使用自己的私钥对传输传输信息进行签名,签名后将签名密文信息与信息一同使用银行提供给第三方支付系统银行公钥进行加密。加密后将信息传输给银行,银行接收到第三方支付系统传输过来的信息,首先会用银行自己的私钥对信息进行解密,解密后再使用第三方支付系统提供给银行的公钥信息对信息进行验证签名,验证通过后此流程完成。

(2)银行--->第三方支付:银行向第三方支付系统发送信息流程

银行会使用自己的私钥对传输信息进行签名,签名后将原文和密文信息一同使用第三方支付系统提供的公钥信息进行加密,将加密后信息传输给第三方支付系统,第三方支付系统接受到银行发送过来的信息后,使用自己的私钥对信息进行解密,再使用银行提供的公钥对解密后信息进行验证签名,验证签名通过后此流程完成。

三、CA数字证书

CA数字证书的使用目的是为了防止您提供给对方的公钥信息不被他人替换,其原理只是到相关证书中心进行申请,证书中心会对你的信息和公钥信息一起加密,从而获得一个只属于你的证书就是CA数字证书。对方在验证签名过程中需要使用证书中心的提供的公钥来解开你的CA数字证书,从而获得你的公钥信息进行验证签名,从而确认你的身份。

四、HTTPS

简单讲是HTTP的安全版,通道使用的依旧是HTTP通道(端口由80变为了443),只是在其通道的基础上添加了SSL安全基础,即在http通道的基础上增加了身份验证和传输加密。其中SSL协议在网络层次上位于HTTP之后TCP/IP之间,为数据通讯提供安全支持。
SSL协议可分为两层:
SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

SSL协议提供的服务主要有:
1)认证用户和服务器,确保数据发送到正确的客户机和服务器;
2)加密数据以防止数据中途被窃取;
3)维护数据的完整性,确保数据在传输过程中不被改变。


SSL协议的使用流程说明:
1)当客户端向服务器发送一个会话连接请求。
2)服务器接收到客户端的请求后,会根据客户端的会话请求信息进行判断此客户端是否已经存在对称加密密钥,从而判断是否需要产生一个新的密钥,如果需要客户端产生一个新的对称密钥,会将SSL 协议的版本号,加密算法的种类,随机数数字签名、CA数字证书及其他相关信息响应给客户端。
3)客户端接收到服务器端的响应信息,会通过CA数字证书是否过期、发行服务器证书的CA是否可靠、使用CA证书中存储的公钥能否正确验证服务端的数字签名、服务器证书上的域名是否与服务器的实际域名相同等手段对服务端响应信息进行验证。
4)客户端验证服务端通过后,会使用服务端的响应信息生成一个对称密钥(通讯密码),然后使用服务端的公钥(可从CA证书中获取)对此密钥加密,然后将加密后的密文信息传输给服务器。(如果服务端需要对客户端进行验证时,可要求客户端生成一个随机数,然后使用ca证书进行数字签名,然后将签名密文和随机数一同发给服务端,服务端使用CA证书对其进行验证签名,验证通过后即服务端验证客户端完成)
5)服务器接收到客户端请求后,会对其检查客户端传过来的密文,使用自己的私钥对其进行解密,获得对称密码(通讯密码)。
6)客户端会向服务端表明发出信息,表明以后与其通讯会使用此对称密码对进行通讯。
7)服务端接收到客户端发出的使用此密码的消息后,会将对称密码记录下来,在第2)步就对其进行判断。
8)此流程完成后就可以安全使用HTTPS进行通话了。通话过程中会使用对称密钥对通话信息进行加密。

//HTTPS 参考地址如下所示

http://hi.baidu.com/zkheartboy/item/f5f729925c1d8bf129164757

猜你喜欢

转载自timerbin.iteye.com/blog/1958497