网络安全支付终端及其网络安全支付方法\n技术领域\n[0001] 本发明涉及网络技术,尤其涉及一种实现网络安全支付的终端及其方法。\n背景技术\n[0002] 随着电子商务的普及与发展,网络在线支付由于具有快捷、方便的特点,逐渐被人们接受。在利用开放网络进行交易时,首先必须保证交易数据和客户信息的安全性,必须建立一个安全网络和安全方便的交易通道。为了保证远程支付终端安全访问银行系统,各种各样的安全方法提出,大致思路就是在远程支付终端与银行后台之间建立安全链路。比如,申请号为200710175608.8的“实现网络安全支付方法及客户端”中国专利申请提出了一种采用专用操作系统并配置防火墙及进程监控来保证网上交易的安全性的方法;申请号为200410063796.1的“具SSL保护功能的安全网关及方法”中国专利提出了一种通过建立SSL安全通道的方法来保证网络安全的方法。为了进一步加强网络安全,设计人员通常将IPSEC、SSL、DSL等安全技术进行整合。\n[0003] IPSEC(Internet Protocol Security)是一系列基于IP网络(包括Intranet、Extranet和Internet)的开放性IP安全标准,它工作在网络层,对接收到的IP数据包进行加密和/或认证处理。SSL(Secure SocketLayer)是国际上最早应用于电子商务的一种网络安全协议,工作在传输层,在传输协议(如TCP)之上为高层协议提供数据封装、压缩、加密等基本功能的支持。DSL(Digital Subscriber Line)是基于普通电话线的宽带接入技术,与SSL一样,工作在传输层,在TCP协议上实现安全通道建立。\n[0004] 为了实现安全链路建立,IPSEC、SSL、DSL都需要事先将安全协议客户端程序植入终端设备。IPSEC将安全协议客户端程序植入到操作系统协议层中,工作在TCP层上。SSL和DSL将安全协议客户端程序植入到应用层中。比如,Microsoft IE浏览器,其内嵌入了SSL安全机制,当IE访问https://打头的网站时,SSL安全机制被激活,终端设备与被访问网站之间建立安全通道,实现网络安全交易。然而,不同的安全机制必须分别安装各自独立的安全协议客户端程序,在同一台终端设备上不能以统一的架构来实现多种安全协议,也就是说,现有的安全协议客户端程序的实现不具备通用性。\n[0005] 在这种情况下,如果需要在终端设备上采用多套安全机制来保证终端设备的安全性,则需要移植多套独立的安全协议客户端程序。在这些安全协议客户端程序中,分别包含多套独立的加解密算法、身份认证等模块,而加解密算法和身份认证等操作均涉及大量复杂计算,占用内存空间大。\n[0006] 对于PC机而言,其CPU速率高,内存资源大,处理能力强,所以在PC机上实现多套安全机制并存相对容易,处理速度可被用户接受。而对于嵌入式设备,由于其配置要求较低,不具备硬盘那样大容量的存储介质,因此,多套安全机制中的加解密算法和身份认证等操作将会造成嵌入式CPU的处理速度降低,以至于令用户无法接受,系统性能大大降低。\n发明内容\n[0007] 为了解决上述问题,本发明提供一种网络安全支付终端及其方法,以在不对现有终端设备的CPU和内存等硬件配置造成负担的情况下实现安全协议客户端程序的统一实现和多种安全协议的兼容,从而实现更加安全的网络支付方式。\n[0008] 为了实现以上目的,本发明提供的一种安全机制客户端系统,包括:控制模块,用于调用接口模块从公共模块获取该系统所使用的安全机制与其它安全机制的共同处理部分的结果,与网关服务器和/或执行身份认证的服务器交互,进行数据传输;接口模块,用于与公共模块交互;公共模块,用于实现该系统所使用的安全机制与其它安全机制的共同处理部分。\n[0009] 在所述安全机制的共同处理部分为数据包的加解密操作的情况下,执行以下网络安全支付步骤:控制模块向网关服务器发送建立连接请求,请求消息中包括经由接口模块从公共模块接收的客户端支持的加解密算法类型等信息;在数据传输过程中,控制模块调用接口模块向公共模块发送待加解密的数据包及其加解密类型等信息,公共模块根据控制模块在接口模块中设置的加解密类型等信息对数据包进行加解密,并将加解密的数据包经由接口模块发送给控制模块;当控制模块从网关服务器接收到链路断开信息或者将链路断开信息发送到网关服务器时,安全通道断开。\n[0010] 所述公共模块可以是一个单独的CPU或芯片。在该CPU或芯片中,可执行数据包的加解密操作,或者可存储有执行身份认证所需的信息,包括该客户端终端设备ID和身份认证参数等。此时,执行以下网络安全支付步骤:控制模块调用接口模块从所述CPU或芯片中获取终端设备ID和身份认证参数等信息,并将这些信息发送给执行身份认证的服务器;\n接收到所述信息的服务器对终端设备进行认证。\n[0011] 此外,本发明提供一种在其中实现多种安全机制的安全机制客户端系统,包括:多个控制模块,分别对应于该系统所用的多种安全机制,分别用于调用接口模块从公共模块获取所述多种安全机制的共同处理部分的结果,与相应网关服务器和/或执行身份认证的服务器交互,进行相应安全通道中的数据传输;接口模块,用于与公共模块交互;驱动模块,用于对所述多种安全机制利用的资源进行协调;公共模块,用于实现所述多种安全机制的共同处理部分。\n[0012] 在所述安全机制的共同处理部分为数据包的加解密操作的情况下,执行以下网络安全支付步骤:所述多个控制模块分别向相应网关服务器发送建立连接请求,请求消息中包括经由接口模块从公共模块接收的客户端支持的加解密算法类型等信息;在数据传输过程中,在驱动模块的协调下,各个控制模块分别调用接口模块向公共模块发送待加解密的数据包及其加解密类型等信息,公共模块根据各个控制模块在接口模块中设置的加解密类型等信息对数据包进行加解密,并将加解密的数据包经由接口模块发送给相应的控制模块;当各个控制模块从相应网关服务器接收到链路断开信息或者将链路断开信息发送到相应网关服务器时,相应的安全通道断开。\n[0013] 所述公共模块可以是一个单独的CPU或芯片,在该CPU或芯片中,可执行数据包的加解密操作,或者可存储有执行身份认证所需的信息,包括该客户端终端设备ID和身份认证参数等。此时,执行以下网络安全支付步骤:控制模块调用接口模块从所述CPU或芯片中获取终端设备ID和身份认证参数等信息,并将这些信息发送给执行身份认证的服务器;接收到所述信息的服务器对终端设备进行认证。\n[0014] 相应地,提供包括如上所述的安全机制客户端系统和网络安全支付系统。在该网络安全支付系统中,还包括:网关服务器,用于与终端支付设备建立安全通道;执行身份认证的服务器,用于对终端支付设备进行身份认证;后台业务服务器,用于与网关服务器交互,进行实际的安全支付交易处理。执行身份认证的服务器可与网关服务器集成在一起。\n[0015] 相应地,提供一种网络安全支付方法,包括以下步骤:在客户端安装上述第一种安全机制客户端系统;在进行数据传输和/或身份认证过程中,控制模块调用接口模块从公共模块获取该系统所使用的安全机制与其它安全机制的共同处理部分的结果,利用这些结果与网关服务器和/或执行身份认证的服务器交互,进行数据传输。\n[0016] 此外,相应地,还提供一种可实现多种安全机制的网络安全支付方法,包括以下步骤:在客户端安装上述第二种安全机制客户端系统;在进行数据传输和/或身份认证过程中,所述多个控制模块分别调用接口模块从公共模块获取所述多种安全机制的共同处理部分的结果,利用这些结果与相应网关服务器和/或执行身份认证的服务器交互,进行相应安全通道中的数据传输。本发明抽取各种安全机制实现中的共同处理部分,并形成一个支持多种安全机制协议的访问的统一接口与该共同处理部分交互,从而以统一的架构实现安全协议客户端程序。通过这种架构,可在不对现有终端设备的CPU和内存等硬件配置造成负担的情况下简单而有效地支持多种安全协议的兼容与扩展。此外,将涉及复杂计算的共同部分移植到单独的CPU或芯片中,从而降低主CPU的处理负担,提高了系统处理性能。\n附图说明\n[0017] 图1a和图1b分别是IPSEC安全机制客户端系统的通用实现方式和本发明实现方式;\n[0018] 图2a和图2b分别是IPSEC安全机制和SSL安全机制并存的客户端系统的通用实现方式和本发明实现方式;\n[0019] 图3是图2b所示安全机制客户端系统的数据包传输流程图;\n[0020] 图4是根据本发明的终端支付设备的硬件框图;\n[0021] 图5是图4所示终端支付设备的软件框架图;\n[0022] 图6是图4所示终端支付设备进行安全支付的流程图。\n具体实施方式\n[0023] 本发明适用于采用一种安全机制的终端设备,也适用于采用多种安全机制的终端设备。以下,将结合附图和实施例对本发明进行详细说明。\n[0024] (一种安全机制客户端系统的实现)\n[0025] 首先,将对采用一种安全机制的客户端系统的实现方式进行说明。以下,将以IPSEC安全机制作为示例进行描述。\n[0026] 图1a是IPSEC安全机制在客户端系统中的通用实现方式。如前所述,事先将IPSEC客户端程序,即,协议模块100嵌入到操作系统协议层中。用户需要进行网络交易时,系统激活IPSEC客户端系统,协议模块100与IPSEC网关服务器握手,建立IPSEC安全通道。根据RFC2401 Security Architecture for the Internet Protocol规范要求,IPSEC安全通道建立包含以下步骤:\n[0027] (1).终端向IPSEC网关服务器发送一消息;\n[0028] (2).终端上的协议模块100检查IP筛选器,查看数据包是否需要受保护以及需要受到何种保护;\n[0029] (3).协议模块100通知IKE(Internet Key Exchange)开始安全协商;\n[0030] (4).IPSEC网关服务器上的IKE收到请求安全协商通知;\n[0031] (5).终端与网关服务器之间建立第一阶段SA(SecurityAssociation),各自生成共享″主密钥″(注:若两机在此前通信中已经建立起第一阶段SA,则可直接进行第二阶段SA协商);\n[0032] (6).协商建立第二阶段SA:入站SA和出站SA。SA包括密钥和SPI;\n[0033] (7).终端上的协议模块100使用出站SA对上层应用数据DATA形成的数据包进行签名(完整性检查)与/或加密;\n[0034] (8).协议模块100将数据包递交IP层,再由IP层将数据包转发至网关服务器;\n[0035] (9).网关服务器网络适配器驱动程序收到数据包并提交给IPSec协议模块;\n[0036] (10).网关服务器上的IPSec协议模块使用入站SA检查完整性签名与/或对数据包进行解密;\n[0037] (11).IPSEC协议模块将解密后的数据包提交上层TCP/IP驱动程序,再由TCP/IP驱动程序将数据包提交应用服务器的接收应用程序。\n[0038] 以上步骤(3)~(4)对加密算法(包括DES或3DES)、hash算法(包括MD5或SHA)、认证方法(包括证书认证、预置共享密钥认证或Kerberos V5认证)、DH(Diffie-Hellman)组的选择进行协商;步骤(5)~(6)确认使用AH(Authentication Header,认证头)或ESP(Encapsulating Security Payload,封装安全载荷),使用MD5或SHA算法,如果加密,确定是采用DES还是3DES。经过前6步,终端协议模块100与IPSEC网关服务器协议模块之间已经建立唯一的协商认证机制。只有掌握这种机制的终端和服务器才能对传输的数据执行正确的加解密操作。在步骤(7)中上层应用数据DATA封包到达协议模块100后,协议模块100用指定的加密算法,比如MD5或DES算法,对应用数据包DATA进行加密封包,并加入ESPHeader,然后加上AH和新的IP地址,其中以协议模块100所在的设备IP地址作为新的数据来源地址,以对方IPSEC服务器的IP地址作为新的目的地址,最后计算杂凑函数值并加在AH中。最后将加密封装后的新数据包发送出去。该数据包经过路由到达IPSEC网关服务器。步骤(9)中IPSEC网关服务器网络适配器将收到数据包提交给网关服务器上的IPSEC协议处理模块,IPSEC协议处理模块对接收的数据包进行拆包、解密,还原出原始数据DATA,提交给上层。终端协议模块100在执行AH和ESP封包操作过程中,均涉及计算复杂的加密算法的执行,比如SHA、MD5、DES或3DES。这种实现方式对CPU频率、内存容量都有较高的要求,在PC机上实现没有问题,但是在嵌入式设备上实现存在造成性能瓶颈的问题。\n[0039] 图1b是根据本发明实现的采用IPSEC安全机制的客户端系统的框图。在该IPSEC客户端系统中,将协议模块100划分为控制模块110、接口模块130和公共模块150三个部分,其中,控制模块110用于调用接口模块130从公共模块150获取IPSEC与其它安全机制实现的共同处理部分的结果,与IPSEC网关服务器交互,进行数据传输;接口模块130用于与公共模块150交互;公共模块150用于实现IPSEC与其它安全机制的共同处理部分。\n[0040] 这里,安全机制的共同处理部分是指多种安全机制客户端程序中涉及复杂计算的共同处理部分,比如,数据包的加解密运算和身份认证等操作,这些操作的实现复杂,占用内存空间较大,造成系统运行速度降低。因此,本发明提取各种安全机制实现中的共同部分,并形成与这些共同部分的统一接口,由各个安全机制在建立安全链路和通道过程中调用,从而以统一的架构实现各种安全机制客户端程序,为多种安全机制的兼容与扩展提供简单有效的实现方式。\n[0041] 此外,除了以软件实现公共模块150之外,为了降低终端设备的CPU的处理负担,减少安全机制实现对系统内存的占用率,还可将在公共模块150中实现的涉及复杂计算的共同部分移植到单独的CPU或芯片(以下,称为安全芯片150)中实现,终端设备中的主CPU和安全芯片之间利用接口模块130进行通信和数据交换。而控制模块110和API接口130不涉及复杂计算,对CPU、内存要求不高,可以直接运行在主CPU上。\n[0042] 以下,将以数据包的加解密操作作为多种安全机制的共同处理部分的示例对图1b所示客户端系统与IPSEC网关服务器之间建立安全通信的过程进行说明。在该示例中,接口模块130实现为包括如下所示接口函数的API接口:\n[0043] int RAND_Byte(unsigned char*buf,int num):表示生成长度为num个字节的随机数,其中*buf为产生随机数的存贮空间地址;\n[0044] int Encry_ALG_Type(int num,unsigned char*buff):给出当前登记在册的加密算法种类数量和算法类型,函数参数num存放算法种类数量,buf中存放算法描述,比如DES、3DES、RSA等。\n[0045] int SHA1(unsigned char*buf,unsigned char*md,size_tnum):表示用消息摘要md对*buf存储空间中长度为num的数据执行SHA1摘要算法操作;\n[0046] int Encrypt_DES(unsigned char*buf,int len):表示对buf中字节长度为len的数据包进行DES加密操作,加密操作中使用的密钥由对应的SA关联来描述;\n[0047] int Decrypt_DES(unsigned char*buf,int len):表示对buf中字节长度为len的数据包进行DES解密操作,解密操作中使用的密钥由对应的SA关联来描述;\n[0048] int SenddatatoChip(unsigned char*buff_in,unsigned char*buff_out,int len1,int len2):表示向安全芯片150送入数据或者从安全芯片150送出数据,其中,buff_in和len1分别表示送入安全芯片150的数据的存储空间地址和长度,buff_out和len2分别表示安全芯片150送出数据的存储空间地址和长度。\n[0049] 其他MD5、RSA、3DES、SM1、SM3等算法实现API定义类似。在系统设计中,以上接口支持多种安全协议的访问。\n[0050] 调用以上定义的加密函数将数据封包之后,调用SenddatatoChip函数将数据送达公共模块150,由公共模块150执行相关操作。\n[0051] 根据本发明的IPSEC安全通信过程包括以下过程:\n[0052] (1)安全通道协商建立\n[0053] 当终端设备需要与IPSEC网关服务器建立IPSEC安全通道时,系统激活IPSEC客户端系统。首先由控制模块110启动IKE向IPSEC网关服务器发起建立连接请求,请求消息中包括客户端支持的加解密算法类型等信息。加解密算法类型信息存储在安全芯片150中,控制模块110调用Ency_ALG_Type函数向安全芯片150发送获取加解密算法类型信息的请求。API接口130与安全芯片150交互,安全芯片150将本芯片支持的加解密类型(包括客户端支持的加解密类型)等参数发送给控制模块110,控制模块110将这些参数包含在请求消息中发送给IPSEC网关服务器。安全通道协商建立后,终端设备和IPSEC网关服务器各自形成1对SA关联,分别为入站SA和出站SA。\n[0054] (2)数据传输过程\n[0055] 在数据传输过程中,数据包需要进行加解密操作。\n[0056] 控制模块110从IP层接收待加密的IP数据包,并调用SHA1函数对接收的IP数据包执行摘要算法操作,然后将该IP数据包发送给安全芯片150。安全芯片150根据API接口130送来的数据和指令对整个数据包进行完整性校验,并利用SenddatatoChip函数将校验结果存放在其中的buff_out中,从而反馈给控制模块110。如果数据完整且未被篡改,则控制模块110根据出站关联SA的描述,调用Encrypt_DES和SenddatatoChip函数将IP数据包发送到安全芯片150进行DES加密,API接口130与安全芯片150交互,安全芯片150根据控制模块110在Encrypt_DES函数中定义的相关参数对该数据包进行加密,并将处理结果利用SenddatatoChip函数返回给控制模块110,控制模块110然后将加密的IP数据包发送到链路层。对于其它加密等算法的实现,与上述实现方式类似。\n[0057] 或者,控制模块110从链路层接收待解密的IP数据包,根据入站关联SA的描述,调用Decrypt_DES和SenddatatoChip函数将数据包发送到安全芯片150进行DES解密。\nAPI接口130与安全芯片150交互,安全芯片150根据控制模块110在Decrypt_DES函数中定义的相关参数对该数据包进行解密,并将处理结果利用SenddatatoChip函数返回给控制模块110。控制模块110根据入站关联SA的描述,再次调用SHA1函数对数据包执行摘要算法操作,并将该数据包发送给安全芯片150。安全芯片150根据API接口130送来的数据和指令对整个数据包的完整性进行检查。控制模块110根据SenddatatoChip函数返回参数判定接收数据包数否完整并且是否被篡改。若数据完整,且未被篡改,则控制模块110将解密的IP数据包发送到IP层。对于其它解密等算法的实现,与上述实现方式类似。\n[0058] (3)安全通道断开过程\n[0059] 当控制模块110从IPSEC网关服务器接收到链路断开信息或者控制模块110将链路断开信息发送到IPSEC网关服务器时,安全通道断开。\n[0060] 除了以上数据包的加解密示例之外,还可在安全芯片150中写入执行身份认证所需的信息,包括终端设备ID或者身份认证参数等,这些参数用于进行终端设备的身份认证,从而做到仅具有合法身份的终端设备才能进入合法身份的后台的效果。关于身份认证的执行流程,在本领域存在多种实现方式,核心内容大致相似,属于现有技术,因此,这里省略其描述。\n[0061] 为了实现以上方法,API接口130还可包括以下接口函数:\n[0062] Int SetCPEID(unsigned char*buff_in,int len):表示将终端ID写入安全芯片\n150中;对于安全支付类终端产品,每一个终端设备对应唯一的ID,ID可以存放在安全芯片中,也可以存放在终端设备内存中,在该函数定义中特指将设备ID存放在安全芯片中,其中,*buff_in存放设备ID序列号的首地址,len表示ID序列号所占存储空间长度;\n[0063] Int GetCPEID(unsigned char*buff_out,int len):表示从安全芯片150中读取终端设备ID信息,其中,*buff_out存放设备ID序列号的首地址,len表示ID序列号所占存储空间长度;\n[0064] Int GetCERTdate(char*CERTTime,int len):表示读取相应网关服务器给终端设备颁发的身份证书的到期时间,其中,*CERTTime存放设备证书的到期时间,len表示日期的长度;\n[0065] Int GetCPEIDParam(int Authflag,char *time,char*Param,int length):表示获取终端设备的身份认证参数,其中,Authflag为输入参数,Authflag=1表示这台设备经过了授权操作,使用的证书为合法证书,time表示当前系统时间,为输入参数,*Param输出参数,用以存放身份参数,len表示当前输出身份参数的长度。\n[0066] 在执行身份认证之前,需要校验终端设备所持的身份证书是否到期。此时,控制模块110调用GetCERTdate函数要求从安全芯片150获取身份证书的到期时间,安全芯片150利用SenddatatoChip函数将身份证书的到期时间返回给控制模块110,控制模块110再将到期时间转发给对方用于执行身份认证的服务器(该服务器可以与IPSEC网关服务器集成,也可以是单独的身份认证服务器)。只有在校验该终端设备的身份证书还没有到期的情况下,才开始执行身份认证。\n[0067] 在身份认证过程中,在对方服务器要求获取终端设备ID时,控制模块110调用GetCPEID函数要求从安全芯片150获取终端设备ID,安全芯片150利用SenddatatoChip函数将终端设备ID返回给控制模块110,控制模块110再将终端设备ID转发给对方服务器。\n在对方服务器要求获取终端设备身份认证参数时,控制模块110调用GetCPEIDParam函数要求从安全芯片150获取身份认证信息,安全芯片150利用SenddatatoChip函数将身份认证信息返回给控制模块150,控制模块150再将身份认证信息转发给对方服务器。对方服务器对接入号为ID的终端设备进行身份校验,校验使用的参数为接口函数GetCPEIDParam的返回参数。无论身份校验成功与否,对方服务器向控制模块110通知当前身份校验结果。\n当终端身份校验成功后,IPSEC服务器才允许终端办理应用业务。\n[0068] 这里,指出,安全芯片150中还可存储多种安全机制实现所需的其它信息(比如,授权证书),可类似地定义与这些信息的接口函数。而且,以上API接口130仅仅是示例性定义,本发明并不限于这些接口函数定义,所有能够实现本发明功能的API接口都应包括在本发明的保护范围内。\n[0069] (多种安全机制客户端系统的实现)\n[0070] 接着,将对采用多种安全机制的客户端系统的实现方式进行说明。以下,将以IPSEC安全机制和SSL安全机制作为示例进行描述。\n[0071] 图2a是SSL和IPSEC两套完全独立的安全机制并存的通用实现方式。如图2a所示,事先分别根据每个安全机制实现所处的协议层位置将SSL客户端系统程序和IPSEC客户端程序嵌入到终端设备中,即,将SSL协议模块201移植到应用层中,将IPSEC协议模块\n202移植到操作系统中协议层中。\n[0072] 用户需要进行网络交易时,系统激活相应的客户端系统。当需要建立SSL安全通道时,SSL客户端系统被激活,SSL协议模块201与SSL网关服务器握手,建立安全通道。当需要建立IPSEC安全通道时,IPSEC客户端系统被激活,IPSEC协议模块202与IPSEC网关服务器握手,建立安全通道。在这种模式下,SSL协议中需要的加解密和身份认证等操作均由SSL协议模块211完成,IPSEC协议中需要的加解密和身份认证等操作均由IPSEC协议模块212完成。比如,当我们访问http://打头的网站时,Microsoft IE浏览器自动激活SSL客户端系统,浏览器中事先移植的SSL协议模块211与SSL网关服务器建立安全通道后,用户才能浏览对应网站信息。这种实现方式对CPU频率、内存容量都有较高的要求,在PC机上实现没有问题,但是在嵌入式设备上实现存在造成性能瓶颈的问题。\n[0073] 图2b是根据本发明的实现方式。类似于图1b,分别将SSL协议模块211和IPSEC协议模块212分为控制模块、接口模块和公共模块三个部分。这里,由于SSL和IPSEC在建立安全链路过程中需要的涉及复杂计算的操作存在相同部分,因此,可采用同一个接口模块和公共模块,公共模块用于实现多种安全机制的共同处理部分,接口模块支持多种安全协议的访问,用于与公共模块交互,并将各种安全机制实现的共同处理部分的结果发送给相应的控制模块。因此,如图2b所示,根据本发明的安全机制客户端系统包括SSL协议模块211、IPSEC协议模块212、接口模块230和公共模块250,SSL协议模块211和IPSEC协议模块212分别用于调用接口模块230从公共模块250获取共同处理部分的结果,与SSL网关服务器和IPSEC网关服务器交互,进行SSL安全通道和IPSEC安全通道中的数据传输。\n这里,与一种安全机制的客户端系统实现相同,也可将在公共模块250中涉及的复杂计算移植到一个单独的CPU或芯片(以下,称为安全芯片250)中,以在不对主CPU的处理性能造成负担的情况下进行安全可靠的网上支付。\n[0074] 另外,为了避免多套安全机制访问公共模块250或安全芯片250时出错,增加了一个驱动模块240,用以对该系统所用多种安全机制需利用的资源进行协调。实现方式为将驱动模块240分为应用接口层2401和驱动接口层2402实现。应用接口层2401和驱动接口层\n2402直接采用FIFO通信机制进行同步。当然Socket、消息队列、信号量等多进程同步机制也可使用。应用接口层2401负责接收控制模块211和212的请求,并把需要执行的数据和指令送到指定的FIFO中。驱动接口层2402逐条从FIFO中读取数据,调用SenddatatoChip函数实现与安全芯片250的交互,完成指定加解密操作。\n[0075] 以下,将以数据包的加解密操作作为安全机制的共同部分的示例对图3b所示客户端系统与IPSEC网关服务器之间建立安全通信的过程进行说明。该示例中的接口模块\n230的具体实现与以上所示API接口相同。\n[0076] 如上所述,对于SSL和IPSEC建立安全链路过程中使用的相同加解密算法,安全芯片250中的加解密算法可以合并为1套,对应的API接口230也可以合并为1套。对于使用的不同的加解密算法,需要在安全芯片250中增加不同部分的实现,并增设对应的API接口函数。在实际实现中,安全芯片250已经实现了多种加解密算法,算法种类满足IPSEC和SSL使用算法的要求。\n[0077] 同时,为了保障2套安全机制访问安全芯片250均有效,利用驱动模块240来解决资源协调问题,以避免2套安全机制访问安全芯片时出错。如上所述,驱动模块240分为应用接口层2401和驱动接口层2402。应用接口层2401负责接收控制模块211和212的请求,并把需要执行的数据和指令送到指定的FIFO中。控制模块211和212的请求通过上述定义的API来实现,比如RAND_Byte、SHA1、Encrypt_DES和Decrypt_DES等函数。驱动接口层2402逐条从FIFO中读取数据,调用SenddatatoChip函数实现与安全芯片250的交互,完成指定加解密操作。由于2401和2402之间采用FIFO通信机制,因此确保了SSL和IPSEC可同时访问安全芯片250,完成自己期望的操作任务。\n[0078] 在驱动模块240的协调下,SSL和IPSEC安全通信过程包括以下过程:\n[0079] (1)安全通道协商建立\n[0080] 当终端设备需要分别与SSL网关服务器和IPSEC网关服务器建立SSL安全通道和IPSEC安全通道时,系统分别激活SSL客户端系统和IPSEC客户端系统,SSL控制模块211和IPSEC控制模块212分别向SSL网关服务器和IPSEC网关服务器发送建立连接请求,请求消息中包括经由接口模块230从公共模块250接收的客户端支持的加解密算法类型等信息。\n[0081] (2)数据传输过程\n[0082] 在这个过程中,主要涉及数据包的加解密和传输。参照图3,按照以下流程进行数据包加解密和传输:\n[0083] A)数据包加密过程\n[0084] 步骤1、SSL控制模块211将用户通过应用界面200输入的界面数据(比如,账户和密码等)按要求整理成数据包,调用Encrypt_DES和SenddatatoChip函数将该数据包发送到安全芯片250进行加密;安全芯片250完成加密操作后利用SenddatatoChip函数将加密的数据包返回给SSL控制模块211;SSL控制模块211将接收到的加密数据包发送到IP层;\n[0085] 步骤2、IPSEC模块212调用Encrypt_DES和SenddatatoChip函数将从IP层接收的数据包发送到安全芯片250进行加密;安全芯片250完成加密操作后利用SenddatatoChip函数将加密的数据包返回给IPSEC模块212;IPSEC模块212将接收到的加密数据包发送到链路层。\n[0086] B)数据包解密过程\n[0087] 步骤1、IPSEC模块212调用Decrypt_DES和SenddatatoChip函数将从链路层接收的数据包发送到安全芯片250进行解密;安全芯片250完成解密操作后利用SenddatatoChip函数将解密的数据包返回给IPSEC模块212;IPSEC模块212将接收到的解密数据包发送到IP层;\n[0088] 步骤2、SSL控制模块211调用Decrypt_DES和SenddatatoChip函数将从IP层接收的数据包发送到安全芯片250进行解密;安全芯片250完成解密操作后利用SenddatatoChip函数将解密的数据包返回给SSL控制模块211;SSL控制模块211将接收到的解密数据包发送到应用界面以显示给用户,用户看见明文。\n[0089] (3)安全通道断开过程\n[0090] 当SSL控制模块211或IPSEC控制模块212从SSL网关服务器或IPSEC网关服务器接收到链路断开信息或者SSL控制模块211或IPSEC控制模块212将链路断开信息发送到SSL网关服务器或IPSEC网关服务器时,SSL安全通道或IPSEC安全通道断开。\n[0091] 与上类似,除了可在安全芯片250中执行数据包的加解密操作之外,还可在安全芯片250中写入执行身份认证所需的信息,包括终端设备ID或者身份认证参数等。\n[0092] 在执行身份认证之前,需要校验终端设备所持的身份证书是否到期。此时,SSL控制模块211和/或IPSEC控制模块212调用GetCERTdate函数要求从安全芯片250获取身份证书的到期时间,安全芯片250利用SenddatatoChip函数将身份证书的到期时间返回给SSL控制模块211和/或IPSEC控制模块212,SSL控制模块211和/或IPSEC控制模块212再将到期时间转发给对方进行身份认证的服务器(该服务器可以与相应网关服务器集成,也可以是单独的身份认证服务器)。只有在校验该终端设备的身份证书还没有到期的情况下,才开始执行身份认证。\n[0093] 在身份认证过程中,在对方服务器要求获取终端设备ID时,SSL控制模块211和/或IPSEC控制模块212调用GetCPEID函数要求从安全芯片250获取终端设备ID,安全芯片250利用SenddatatoChip函数将终端设备ID返回给SSL控制模块211和/或IPSEC控制模块212,SSL控制模块211和/或IPSEC控制模块212再将终端设备ID转发给对方服务器。在对方服务器要求获取终端设备身份认证参数时,SSL控制模块211和/或IPSEC控制模块212调用GetCPEIDParam函数要求从安全芯片250获取身份认证信息,安全芯片\n250利用SenddatatoChip函数将身份认证信息返回给SSL控制模块211和/或IPSEC控制模块212,SSL控制模块211和/或IPSEC控制模块212再将身份认证信息转发给对方服务器。对方服务器对接入号为ID的终端设备进行身份校验,校验使用的参数为接口函数GetCPEIDParam的返回参数。无论身份校验成功与否,对方服务器向SSL控制模块211和/或IPSEC控制模块212通知当前身份校验结果。当终端身份校验成功后,相应服务器才允许终端办理应用业务。\n[0094] 此外,安全芯片250中还可存储多种安全机制实现所需的其它信息(比如,授权证书),可类似地定义与这些信息的接口函数。\n[0095] 这里指出,网络支付安全机制使用的加解密算法主要包括DES、3DES、MD5、AES、HASH、RSA、SM1、SM2、SM3、SMS4、SSF33、SSF28、ECC、SHA等等。本发明提出的安全芯片可以实现上述所有加解密算法,当然考虑实现成本也可以只实现上述部分加解密算法。具体实现哪些算法与上层采用的安全机制相关,比如上层采用SSL安全机制,当然DES、3DES、RSA属于必选项。\n[0096] 以下,将参照图4和图5对包含图1b和图2b所示安全机制客户端系统的终端支付设备进行说明。\n[0097] 图4是终端支付设备的硬件架构的示意图。如图4所示,整个终端支付设备包括:\n电源401;键盘402,输入用户账号、密码等数据;磁卡读取接口403,读取用户账号;串口\n404,进行设备的升级和调试;LCD显示器405;CPU最小系统406,其中嵌入有图1b或图2b所示的控制模块和接口模块;安全芯片407;对外接口408,包括RJ45、RJ11和BT/WLAN等。\n该终端支付设备访问后台网关服务器的接口可以是网口、电话线接口、蓝牙和WLAN等任何上网接入方式。\n[0098] 这里,安全芯片407不仅实现安全机制的加解密和/或身份认证等复杂操作,而且还作为设备身份进入安全通道的唯一标识,即在安全芯片407中存储有相应网关服务器颁发的授权证书作为设备身份标识。为了确保安全芯片的安全性,进而保证终端支付设备的安全性,安全芯片407具有自毁功能。当终端支付设备受到非正常操作时,比如,后盖打开或者收到非事先定义的指令,安全芯片407自动擦出其中存储的身份标识信息,并将芯片状态设置为复位状态。设备恢复工作需要专业人员重新加载安全芯片程序,程序加载可以通过串口完成。\n[0099] 图5是图4所示终端支付设备的软件架构的示意图。如图5所示,在应用程序层中,包括:主界面501,即,设备主要人机界面,用户通过人机界面完成支付操作;系统设置\n502,完成终端设备参数的配置,比如,对于支持网络接入的终端设备,需要配置IP地址等参数;支付交易503,完成支付办理业务,比如转账、余额查询、交费等;原始注入504,完成设备初始参数的注入,比如设备的身份标识;芯片授权505,管理安全芯片的证书下载和授权(这里,为了保证设备安全性,每台设备的数字证书定期需要升级,证书过期,后台网关服务器禁止设备办理支付业务);软件升级506,完成安全设备应用软件的升级,升级方式可支持串口本地升级,也可支持网络远程升级。此外,API 507包括图1b或图2b所示接口模块,驱动层510对应于图2b所示驱动模块。\n[0100] 当支付终端包含2种以上的安全机制时,软件系统需要支持多种安全机制进程访问安全芯片的能力。因此,在安全芯片的驱动开发中,需要支持多进程工作模式。多进程工作模式属于本领域编程人员公知的技术,因此,省略其描述。\n[0101] 以下,将以查询账户金额为例说明上述安全支付终端的交易过程。该终端要求建立IPSEC和SSL安全通道。事先分别将IPSEC客户端系统移植到操作系统协议层中,将SSL客户端系统移植到应用程序层中,比如,移植到交易支付模块中。IPSEC网关服务器和SSL网关服务器与终端支付设备建立安全通道,后台业务服务器与IPSEC网关服务器和SSL网关服务器交互,进行实际的安全支付交易处理。\n[0102] 图6是用户办理账户查询业务的操作流程图。如图6所示,该操作流程包括以下步骤:\n[0103] (1)用户通过主界面501选择办理账户余额查询业务\n[0104] (2)终端激活IPSEC客户端系统,IPSEC客户端系统与后台IPSEC网关服务器建立IPSEC安全通道;\n[0105] (3)终端激活SSL客户端系统,SSL客户端系统与后台SSL网关服务器建立SSL安全通道,这里,SSL安全通道建立在IPSEC安全通道基础之上;\n[0106] (4)将用户输入的账户、密码等信息通过建立的SSL+IPSEC安全通道发送到后台业务服务器;\n[0107] (5)后台业务服务器将当前账户的余额通过建立的SSL+IPSEC安全通道送到终端系统界面,供用户核实;\n[0108] (6)用户退出账户余额查询业务办理界面;\n[0109] (7)终端界面系统向终端SSL控制模块发送断开安全通道请求,终端SSL控制模块向后台SSL网关服务器发送断开安全通道请求,后台SSL网关服务器响应断开链路请求,链路断开;\n[0110] (8)终端界面系统向终端IPSEC控制模块发送断开安全通道请求,终端IPSEC客户端系统控制模块向后台IPSEC网关服务器发送断开安全通道请求,后台IPSEC网关服务器响应断开链路请求,链路断开;\n[0111] (9)用户交易结束,系统回到主界面。\n[0112] 从以上描述可看出,本发明抽取各种安全机制实现中的共同处理部分,并为该部分形成一个统一接口,由各个安全机制在建立安全链路和通道过程中调用,从而以简单有效的方式实现了安全协议客户端程序的统一实现和多种安全协议的兼容与扩展。此外,将涉及复杂计算的共同部分移植到单独的芯片中,从而降低主CPU的处理负担,提高了系统处理性能。\n[0113] 应该理解,本发明并不限于以上所公开的具体实施例,任何本领域的技术人员在此基础之上容易想到的修改和变型都应包括在本发明的保护范围内。
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |