基于SSL 连接在线支付方案的设计
2015-11-28张宝燕
张宝燕
(晋中学院,山西 晋中 030600)
计算机技术、企业管理理念都随着生产社会化的浪潮快速发展和更新,在线安全支付系统在这个大环境下也应运而生,并且正在越来越广泛地应用到方方面面。实现在线安全支付系统,有助于将计算机技术应用到实际的购买活动中,方便用户的购买,做到足不出户,就能买到想要的产品商品;对于在线安全支付领域[1-3]存在的问题和潜在的问题,都能够通过对系统的设计和使用体现出来,丰富在线安全支付领域的研究内涵。在线安全支付系统的设计,同时也对企业产生深远影响,对它们的销售渠道在线支付方式,都是很大的改变。
1 在线安全支付方案设计
网上购物系统中一般可以分为购买和支付两大部分,买家通过因特网使用网银行卡进行网上购物。其中在浏览商户网站时需要用户登录验证身份合法性;选购商品,放入购物车。这些操作完成后,进入收银台,商户根据购物车内容,生成付款单,将付款单和商户对该付款单的数字签名一起交消费者确认。一旦消费者确认支付,则该付款单和商户对该付款单数字签名将自动转发银行在线支付支付平台。对于支付部分:支付平台用商户在线支付签名公钥对付款单的商户身份及数据一致性,以及其他的诸如数据合法性、重复在线支付记录、日志处理记录作为辅助商户不可否认的依据。支付平台的支付页面会对商户在线支付请求进行会话建立,密钥协商传输等工作。
在系统中为了防止机器人登录网页进行频繁非法的操作,采用了图片验证技术,也即是验证码填写(或者叫做附加码),该图片通过服务器端的验证码生产服务程序产生,采用随机函数生成验证码,再通过对验证码颜色、字体、大小、显示高度等四个方面的随机设定,最终画成按照上述随机要求的验证码图片,并传输到浏览器上,让用户识别该图片上的内容,并填写在<input >控件当中。对于目前的计算机计算能力而言,总是正确的快速的自动识别图片中的内容是一个复杂的运算,机器人去做这种操作需要耗费的资源和最终获取到验证码得到的利益不成正比。前者要远远大于后者,因此验证码能够一定程度上防止机器人的频繁无意义访问,而需要强调的是,用户的安全性和权限,仍然要依靠密码的复杂设置和妥善保密。这是唯一确保用户合法权限和利益的有效保证。
方法getsFont 用于返回字体设置,包括大小颜色等。随机产生各种颜色,使得数字的颜色呈现随机性,增加程序通过像素点颜色分析图片中文字的难度。随机产生数字,让验证码产生多样性,让敌手不能找到数字产生的规律性,从而只能以猜测的方式获得竞争挑战游戏的胜利,详情如图1 验证码验证流程图所示。
图1 验证码验证流程图
1.1 PKI 证书设计
本文设计采用了X.509 证书,该证书经过了多个版本的改进扩展是一种商用的成熟的广泛使用的证书系统。证书同样使用了自签名,使得证书本身不会被随意的篡改。证书的核心部分就是证书持有者的公钥,也包含了身份的其他信息,具体包括如下:基本信息部分:版本、认证机构CA、序列号;签名声明部分:算法选取、安全参数;SSL 使用者标示;有效期:开始时间、结束时间;公钥描述声明部分:算法声明、安全参数、公钥;SSL 使用者序列号;扩展部分;签名可选项集合声明:算法列表、参数列表、加密部分[4-7]。
该证书是公钥基础设施PKI 部分的主体证书设计部分,它的设计包括了身份验证,加密解密传输,文本签名等功能,在实际的网络环境中实现信息的安全有效传输,确保信息的安全性。该证书通过可信任第三方机构CA 机构颁发,用户可以通过注册购买使用该证书。
1.2 加密与信息传输模块设计
前面已经提到,SSL 握手和数据传输的性能分析,具体到模块的设计部分:
SSL 握手协议部分具体为证书交换,Gen(1k)产生随机数r,具体构造表达式如下:
加密的文本结构表达式为:C=Encry(Bpub,(Encry(Apri,H(M)))||Encry(Bpub,M)。在在线安全支付过程中,中间会有代理服务器的存在,所以,这里客户端和服务器之间,往往会先经过代理服务器,把C 加密文本交给代理服务器,然后再转交给接收方。在解密部分,接收端解密H'(M)=Decry(Apub,Decry(Bpri,C))。M'=Decry(Bpri,C2)。分别从身份验证和选择性密文解密验证了文本的身份合法性,然后再通过测试函数比对H(M')==H'(M)。这里面M 通常为会话密钥k=r||日期序列号,例如k=r| |2014031206012。k 协商之后,开始DES 加密信息传输。
图2 SSL 握手流程图
加密信息文本结构表达式为C2=Encry(k,H(M))| |Encry(k,M)。到解密接受端,H2'(M)=Decry(k,C)。M'=Decry(k,C2)。同样测试H(M')==H'(M)的相等性,然后如果验证错误的话,启动预警应急功能,向对方提出警示关闭或者审查网络连接。
这里分为了RSA 和DES 加密两部分,散列函数是MD5算法,RSA 用于SSL 握手,DES 用于会话信息加密解密传输。DES 加密模块服务于一次商户在线支付会话当中,其会话密钥动态生成,有公钥加密体制RSA 负责传输该次会话密钥。
在在线安全支付的订单提交阶段,系统和用户的交互就会在建立的SSL 信道通信内进行。包括了SSL 建立,会话密钥协商,在线支付信息加密传输,异常报警提示等功能[8-10]。
1.3 在线支付商户SSL 握手
构建SSL 公钥证书java 存储对象,且在在线支付前完成证书交换。建立SSL 安全信道,完成SSL 握手。等完成证书构建和交换之后,开始下一步构建RSA 加密的会话密钥协商。
其中证书结构如前面提到的X.509 标准,包括了基本信息部分:版本、认证机构CA、序列号;签名声明部分:算法选取、安全参数;SSL 使用者标示;有效期:开始时间、结束时间;公钥描述声明部分:算法声明、安全参数、公钥;SSL 使用者序列号;扩展部分;签名可选项集合声明:算法列表、参数列表、加密部分。双方在下载对方的证书之后,知道了对方的公钥Apub,Bpub,然后通过服务器方产生随机数r 作为消息M,这里面H 散列函数就是MD5 算法,Encry 函数为RSA 加密函数,这里私钥记为Apri,Bpri。详情见图2 SSL 握手流程图所示。
1.4 RSA 加密会话密钥
RSA 加密算法构建会话密钥,将随机产生的密钥r 通过RSA 加密模块传输到客户端。
这里面RSA 大素数为768 位比特的标准,RSA 参数初始化过程需要产生两个768 比特位的大素数P,Q,其N=P* Q,M=(P-1)* (Q-1),然后随机选取e1,使得e1和N互质;再计算在modM 运算下,求e1的逆元e2,这样Apub=(n,e1),Apri=(n,e2)密钥对就产生了,分别记Apub为公钥,Apri为私钥。其过程如图3 RSA 加密流程图所示。
图3 RSA 加密流程图
2 结束语
在线安全支付系统是对传统商品在线支付环境的扩充,也是在线安全支付运作模式的集中体现,支付模块,采用了RSA 公钥加密和DES 对称加密相结合的方式,并且用MD5算法验证商户身份。通过实际的使用验证了该在线支付系统的好处。该方案能够为在线支付提供安全保障。
[1]程亮,刘辉.一种基于三因素认证的网络支付安全认证模式[J].计算机应用,2008(7):1810-1811.
[2]文林彬.电子商务中ssl 协议的安全性分析[J].现代商业,2007(18):194-195.
[3]吴禀雅.国内当前网上支付方式研究[J].浙江金融,2007(5):64.
[4]何宗要,方党生,李晓强.基于图像特征和公钥密码系统的易损水印算法[J].计算机应用,2006(1):90-92.
[5]李二亮,刘云强.浅议第三方支付平台[J].电子商务,2005(9):92-94.
[6]魏利明,陈相宁.PKI 技术分析[J].网络安全技术与应用,2005(3):19-21.
[7]谢琳,卢建军.电子商务中第三方电子支付平台分析[J].计算机应用研究,2003(12):149-151.
[8]刘渊,周世兵,孙亚民.网上在线支付数字签名的研究与设计[J].计算机应用研究,2003(11):110-112.
[9]郭晶晶,李腊元.基于SET 协议的电子商务支付系统的研究[J].计算机应用,2002(3):68-70.
[10]周龙骧.电子商务协议研究综述[J].软件学报,2001(7):1014-1031.