基于CSP获取远端加密指令的方法及系统与流程

文档序号:12040710阅读:349来源:国知局
基于CSP获取远端加密指令的方法及系统与流程
本发明涉及CSP加密技术领域,具体涉及一种基于CSP获取远端加密指令的方法及系统。

背景技术:
CSP(CryptographicServiceProvider,加密服务提供程序)是为Windows系列操作系统制订的底层加密接口,实现数据的加密、解密、数字签名、验证和数据摘要等加密指令操作。应用通过CryptoAPI系列函数调用,其操作对象为容器,一个容器内有加密公私钥对、加密证书、签名公私钥对和签名证书。可以通过容器完成加解密、签名验签等操作。CSP是Windows安全应用的基础,在Windows操作系统上实现https安全浏览(即SSL安全数据通信)和实现安全隧道(如Ipsec)功能,都必需有CSP参与密码运算。现有CSP的架构图如图1所示,在应用层ApplicationLayer运行了三个应用程序ApplicationA、ApplicationB及ApplicationC,中间层SystemLayer的CryptoAPI部分为操作系统层面,所有对U盾的访问都会先送到这一层,然后根据U盾的厂家和型号不同,访问对应的厂家CSP模块(图1中的ServiceProviderLayer层的各个CSP模块:(CSP)#1、(CSP)#2、(CSP)#3),再由具体的厂家CSP模块实现对U盾设备的真实访问。应用程序访问U盾时,是通过调用CryptoAPI的API函数,实现对厂家CSP模块的调用的。以下为使用到的CryptoAPI的25个API函数。1CPAcquireContext2CPReleaseContext3CPGenKey4CPDeriveKey5CPDestroyKey6CPSetKeyParam7CPGetKeyParam8CPExportKey9CPImportKey10CPEncrypt11CPDecrypt12CPCreateHash13CPHashData14CPHashSessionKey15CPDestroyHash16CPSignHash17CPVerifySignature18CPGenRandom19CPGetUserKey20CPSetProvParam21CPGetProvParam22CPSetHashParam23CPGetHashParam24CPDuplicateHash25CPDuplicateKey图1中的这种现有的CSP架构显示出的是典型的本地访问U盾的方式,而随着网络信息技术的飞速发展,网络交易的广泛应用,本地访问U盾的方式对于网络交易场所有了极大的限制,操作者希望能够在远程安全的访问到U盾,实现随时随地的网络安全交易等工作。

技术实现要素:
本发明提供一种基于CSP获取远端加密指令的方法及系统,能够实现远程安全访问U盾,以解决上述问题。本发明实施例提供的一种基于CSP获取远端加密指令的方法,包括步骤:A:分别建立本地的第一CSP模块和建立远端设备的CSP调用模块;B:第一CSP模块通过本地的CryptoAPI获取由应用程序发出的加密指令请求,并对该加密指令请求进行编码生成申请数据包,将该申请数据包发送至远端设备的CSP调用模块;C:CSP调用模块将该申请数据包翻译成与远端设备的CryptoAPI相对应的CSP函数调用并通过远端设备的CryptoAPI访问远端设备上所连接的加密智能卡设备的第二CSP模块,通过该第二CSP模块读取该加密智能卡设备的加密指令;D:CSP调用模块将加密指令转换成结果数据包,并将该结果数据包发回所述第一CSP模块,第一CSP模块将结果数据包翻译为加密指令,并通过本地的CryptoAPI将加密指令发送到该应用程序。优选地,所述步骤A之后还包括关联注册的步骤E:将第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。优选地,所述关联注册的步骤包括:E1:通过本地的CryptoAPI调用第一CSP模块,由第一CSP模块向所述CSP调用模块发送获取第二CSP模块配置信息的请求;E2:CSP调用模块通过远端设备的CryptoAPI将所述获取第二CSP模块配置信息的请求发送至第二CSP模块并获取第二CSP模块配置信息,然后将第二CSP模块配置信息发回第一CSP模块;E3:将第一CSP模块获取的第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。优选地,第一CSP模块与CSP模块之间通过socket网络双向传输数据。优选地,所述加密智能卡设备为U盾。基于上述实施例中的基于CSP获取远端加密指令的方法,本发明实施例还提供了一种基于CSP获取远端加密指令的系统,包括:CSP模拟单元和程序模拟单元,用于分别建立本地的第一CSP模块和建立远端设备的CSP调用模块;加密指令请求单元,用于第一CSP模块通过本地的CryptoAPI获取由应用程序发出的加密指令请求,并对该加密指令请求进行编码生成申请数据包,将该申请数据包发送至远端设备的CSP调用模块;加密指令获取单元,用于CSP调用模块将该申请数据包翻译成与远端设备的CryptoAPI相对应的CSP函数调用并通过远端设备的CryptoAPI访问远端设备上所连接的加密智能卡设备的第二CSP模块,通过该第二CSP模块读取该加密智能卡设备的加密指令;加密指令反馈单元,用于CSP调用模块将加密指令转换成结果数据包,并将该结果数据包发回所述第一CSP模块,第一CSP模块将结果数据包翻译为加密指令,并通过本地的CryptoAPI将加密指令发送到该应用程序。优选地,还包括关联注册单元,用于将第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。优选地,所述关联注册单元包括:远端CSP模块配置信息请求单元,用于通过本地的CryptoAPI调用第一CSP模块,由第一CSP模块向所述CSP调用模块发送获取第二CSP模块配置信息的请求;远端CSP模块配置信息获取单元,用于CSP调用模块通过远端设备的CryptoAPI将所述获取第二CSP模块配置信息的请求发送至第二CSP模块并获取第二CSP模块配置信息,然后将第二CSP模块配置信息发回第一CSP模块;配置信息替换单元,用于将第一CSP模块获取的第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。上述技术方案可以看出,由于本发明实施例基于CSP框架在本地创建了一个标准的第一CSP模块来模拟厂家的CSP模块,在远端设备创建了CSP调用模块来模拟应用层的应用程序,通过第一CSP模块和CSP调用模块的通信对接实现了在本地设备上对远端设备所连接的加密智能卡设备中的第二CSP模块的访问,从而使得本地运行的应用程序能够获取该远端设备上连接的加密智能卡设备的加密指令。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。图1是现有的CSP架构图;图2是本发明实施例1中基于CSP获取远端加密指令的方法的流程图;图3是本发明实施例1中的CSP扩展架构图;图4是本发明实施例1中关联注册步骤的流程图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。实施例1:本发明实施例提供一种基于CSP获取远端加密指令的方法,如图2所示,包括如下步骤。步骤101:分别建立本地的第一CSP模块和建立远端设备的CSP调用模块。在本步骤中第一CSP模块的创建和CSP调用模块的创建可以同时进行也可以分开进行,其主要目的是建立CSP扩展架构,该CSP扩展架构如图3所示,第一CSP模块为标准的CSP模块,因此能够模拟实际加密智能卡设备中的CSP模块,加密智能卡设备为内置微型智能卡处理器的能够提供加密算法的装置,具体地,在本发明实施例中加密智能卡设备采用U盾,U盾是用于网上银行电子签名和数字认证的工具,它内置微型智能卡处理器,采用1024位非对称密钥算法对网上数据进行加密、解密和数字签名,确保网上交易的保密性、真实性、完整性和不可否认性。CSP调用模块用于模拟远端设备上应用层的应用程序,其能够像应用程序一样通过CryptoAPI去访问CSP模块,CryptoAPI作为MicrosoftWindows的一部分提供的应用程序编程接口(API)。CryptoAPI提供了一组函数,这些函数允许应用程序在对用户的敏感私钥数据提供保护时以灵活的方式对数据进行加密或数字签名。实际的加密操作是由称为加密服务提供程序(CSP)的独立模块执行。因此,本发明实施例中CSP调用模块是与应用程序一样位于应用层运行。本步骤中建立第一CSP模块和CSP调用模块后,第一CSP模块的配置信息已经记录在系统注册表内,CSP模块配置信息包括了程序位置、程序名字、具体厂家加密智能卡设备型号(例如U盾型号),使得系统能够根据该配置信息准确调用到该CSP模块,但是由于系统默认识别的CSP模块配置信息为具体厂家的CSP模块配置信息(即第二CSP模块配置信息),因此,在本地设备上需要进行对第一CSP模块和第二CSP模块关联注册的步骤,即将第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。这一关联注册的步骤可以通过人为修改系统注册表的方式进行关联,但由于系统注册表作为公共配置文件不宜被用户随意修改,因此本发明实施例提供了一种自动实现关联注册的步骤,如图4所示。步骤1011:通过本地的CryptoAPI调用第一CSP模块,由第一CSP模块向所述CSP调用模块发送获取第二CSP模块配置信息的请求。本发明实施例中第一CSP模块与CSP调用模块之间实现socket网络传输功能,即第一CSP模块与CSP模块之间通过socket网络双向传输数据。本步骤中第一CSP模块会将所述获取第二CSP模块配置信息的请求进行编码处理并生成一个请求数据包,以便于数据的安全可靠传输,通过数据包的形式将该获取第二CSP模块配置信息的请求发送给CSP调用模块。步骤1012:CSP调用模块通过远端设备的CryptoAPI将所述获取第二CSP模块配置信息的请求发送至第二CSP模块并获取第二CSP模块配置信息,然后将第二CSP模块配置信息发回第一CSP模块。本步骤中CSP调用模块接收到上一步骤1011中的请求数据包后,会对请求数据包进行翻译,生成CSP函数调用,以使得该获取第二CSP模块配置信息的请求能够通过远端设备的CryptoAPI访问到第二CSP模块上,从而获取第二CSP模块配置信息,然后将第二CSP模块配置信息发回第一CSP模块,可以理解此处在发回之前仍然会对第二CSP模块配置信息进行编码,生成一个结果数据包,然后将该结果数据包发回给第一CSP模块,而第一CSP模块仍然会将该结果数据包进行翻译,还原出第二CSP模块配置信息。步骤1013:将第一CSP模块获取的第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。至此步骤已经完成关联注册,由此可见,当系统中相应的应用程序需要调用CSP模块时,由于第二CPS模块配置信息被替换为第一CSP模块配置信息,因此应用程序会根据替换后的CSP模块配置信息启动第一CSP模块进行远程访问第二CSP模块,接下来会对远程访问的步骤做进一步说明。步骤102:第一CSP模块通过本地的CryptoAPI获取由应用程序发出的加密指令请求,并对该加密指令请求进行编码生成申请数据包,将该申请数据包发送至远端设备的CSP调用模块。系统中运行的应用程序需要加密服务时,例如工行网银程序需要访问U盾获取密钥,该应用程序会通过CryptoAPI发送一个加密指令请求至CSP模块,由于本发明实施例中以第一CSP模块来模拟现有的本地CSP模块,因此第一CSP模块会通过本地的CryptoAPI获取由该应用程序发出的加密指令请求,并且如上述步骤1011中一样对加密指令请求进行编码生成一个申请数据包,然后将该申请数据包发送到远端设备的CSP调用模块,从而实现了一种“管道中转”的作用。步骤103:CSP调用模块将该申请数据包翻译成与远端设备的CryptoAPI相对应的CSP函数调用并通过远端设备的CryptoAPI访问远端设备上所连接的加密智能卡设备的第二CSP模块,通过该第二CSP模块读取该加密智能卡设备的加密指令。本发明实施例中与CryptoAPI相对应的CSP函数调用共涉及到25个,在本文的背景技术中已经对该25个函数调用做出了介绍,此处不再赘述。可以理解,CSP调用模块在接收到上一步骤102中的请求数据包后仍然会以上述步骤1012中的方式进行翻译,生成函数调用,从而通过远端设备的CryptoAPI访问到第二CSP模块获取到加密指令。至此,整个远程CSP访问通道已经建立成功。步骤104:CSP调用模块将加密指令转换成结果数据包,并将该结果数据包发回所述第一CSP模块,第一CSP模块将结果数据包翻译为加密指令,并通过本地的CryptoAPI将加密指令发送到该应用程序。本步骤中CSP调用模块同样一上述步骤1012中的方式将上一步骤103中的加密指令进行转换(即编码)生成一个结果数据包,然后将该结果数据包发回第一CSP模块,第一CSP模块将结果数据包进行翻译还原成加密指令,此时的第一CSP模块相当于本地U盾中的CSP模块具有加密指令,并能够把加密指令通过本地的CryptoAPI发放给之前发出请求的应用程序。可以理解的是,本发明实施例对现有加密流程并没有影响,只是以虚拟CSP模块(第一CSP模块)代替了原来的CSP模块(厂家具体的CSP模块),让获取CSP句柄时获取的是远端设备上的CSP模块,从而达到使用远端设备上的U盾来进行加解密的目的。因此,对于具体的加密流程在本发明实施例中不予具体介绍。由以上技术方案可以看出,本发明的技术思想是:基于CSP框架扩展了U盾技术,使计算机不仅仅可以访问本机的智能卡设备,还能够访问插在远程计算机的智能卡设备,通过该设备使用基于智能卡的安全应用。基于CSP框架的智能卡设备,都支持通用CSP接口,并提供一个CSP模块(即为厂家CSP),本发明实施例实现了一个虚拟的CSP模块(以下称为虚拟CSP),安装在本地计算机上,而厂家CSP安装在远程计算机上,加密智能卡设备(以下称为U盾)也同样插在远程计算机上,虚拟CSP支持通用CSP接口(25个系统API),代替厂家CSP接收来自计算机安全应用的访问,转发到远程计算机的厂家CSP上,并接收来自厂家CSP的返回信息,转发回计算机安全应用,从而实现了厂家CSP安全访问的重定向,也就实现了U盾安全访问的重定向。让用户在使用远程计算机上的U盾时,使用感受与在本机使用U盾一致。本发明可以应用在桌面和应用虚拟化等应用场景中,将对应用的虚拟使用扩展到智能卡设备领域。实施例2:本发明实施例基于上述实施例1中的方法提供了一种基于CSP获取远端加密指令的系统,包括:CSP模拟单元和程序模拟单元,用于分别建立本地的第一CSP模块和建立远端设备的CSP调用模块;加密指令请求单元,用于第一CSP模块通过本地的CryptoAPI获取由应用程序发出的加密指令请求,并对该加密指令请求进行编码生成申请数据包,将该申请数据包发送至远端设备的CSP调用模块;加密指令获取单元,用于CSP调用模块将该申请数据包翻译成与远端设备的CryptoAPI相对应的CSP函数调用并通过远端设备的CryptoAPI访问远端设备上所连接的加密智能卡设备的第二CSP模块,通过该第二CSP模块读取该加密智能卡设备的加密指令;加密指令反馈单元,用于CSP调用模块将加密指令转换成结果数据包,并将该结果数据包发回所述第一CSP模块,第一CSP模块将结果数据包翻译为加密指令,并通过本地的CryptoAPI将加密指令发送到该应用程序。为了实现第一CSP模块与第二CSP模块的关联注册,本系统中还包括关联注册单元,用于将第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。具体地,所述关联注册单元包括:远端CSP模块配置信息请求单元,用于通过本地的CryptoAPI调用第一CSP模块,由第一CSP模块向所述CSP调用模块发送获取第二CSP模块配置信息的请求;远端CSP模块配置信息获取单元,用于CSP调用模块通过远端设备的CryptoAPI将所述获取第二CSP模块配置信息的请求发送至第二CSP模块并获取第二CSP模块配置信息,然后将第二CSP模块配置信息发回第一CSP模块;配置信息替换单元,用于将第一CSP模块获取的第二CSP模块的配置信息替换为本地第一CSP模块的配置信息后填入操作系统注册表中。使用时,只需要运行关联注册单元即可完成第一CSP模块与第二CSP模块的自动关联注册。需要说明的是,上述系统和系统内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,ReadOnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁盘或光盘等。以上对本发明实施例所提供的一种基于CSP获取远端加密指令的方法及系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1