CN112100586B - 一种访问不同密码设备的系统及方法 - Google Patents
一种访问不同密码设备的系统及方法 Download PDFInfo
- Publication number
- CN112100586B CN112100586B CN202010849959.8A CN202010849959A CN112100586B CN 112100586 B CN112100586 B CN 112100586B CN 202010849959 A CN202010849959 A CN 202010849959A CN 112100586 B CN112100586 B CN 112100586B
- Authority
- CN
- China
- Prior art keywords
- password
- interface
- equipment
- unit
- application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
本发明提出一种访问不同密码设备的系统,包括用于与应用程序单元里不同应用程序进行通信的密码接口单元;包括用于驱动密码设备单元里不同接口类型的密码设备的密码设备驱动单元;以及用于提供应用程序单元里不同应用程序与密码设备单元里不同接口类型的密码设备进行通信的密码设备应用接口单元,所述密码设备应用接口单元通过将应用程序单元访问密码设备单元的访问信息进行APDU命令的封装、通信数据包的组装并发送给密码设备;以及接收密码设备单元返回的响应信息并进行拆包解析,并返回给应用程序;从而满足不同应用程序访问不同接口类型的密码设备的需求,提高设备及系统的兼容性。
Description
技术领域
本发明涉及密码技术领域,具体涉及一种访问不同密码设备的系统及方法。
背景技术
随着信息化技术的快速发展,信息安全问题日益受到重视,能为应用程序提供安全保障的密码安全服务彰显其不可或缺性和重要性;通常采用密码设备来为用户的应用程序提供相应的密码服务,提高信息的安全传输,常用的密码设备通常包括有智能密码钥匙、安全芯片、加密卡、安全TF卡、安全SD卡、安全终端等,不同密码设备的接口类型也不同,这样会导致不同接口类型的密码设备与用户的应用程序进行信息交互时会存在差异性,而且针对不同的用户的应用程序也存在C#、java和web的差异性,由于差异性会带来额外的开发工作量,无法对不同的密码设备进行兼容性的访问。
因此如何设计一种访问不同密码设备的系统及方法,满足不同应用程序访问不同接口类型的密码设备的需求,提高设备及系统的兼容性是目前急需解决的问题。
发明内容
本发明针对上述问题,有必要提供一种访问不同密码设备的系统及方法,满足不同应用程序访问不同接口类型的密码设备的需求,提高设备及系统的兼容性。
本发明第一方面提出一种访问不同密码设备的系统,包括:密码接口单元,包括用于与应用程序单元里不同应用程序进行通信的多个标准接口;根据访问应用程序的类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口,通过所述标准接口接收访问应用程序对被访问密码设备的访问信息,以及上传被访问密码设备返回的响应信息至对应应用程序;
密码设备应用接口单元,用于提供应用程序单元里不同应用程序与密码设备单元里不同接口类型的密码设备进行通信的统一应用接口;通过所述密码设备应用接口单元将所述密码接口单元接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包;以及将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并上传给所述密码接口单元;
密码设备驱动单元,包括用于驱动密码设备单元里不同接口类型的密码设备的多个驱动;根据被访问密码设备的接口类型选择相应的驱动,通过所述驱动将所述密码设备应用接口单元组装的访问数据包发送给被访问密码设备以及将被访问密码设备返回的响应数据包发送给所述密码设备应用接口单元。
进一步的,所述访问信息包括密码服务指令、访问数据和被访问密码设备的设备句柄;所述密码设备应用接口单元包括:应用接口模块、业务逻辑模块和设备模块;所述业务逻辑模块包括设备管理接口和密码服务接口;
所述应用接口模块,用于提供不同的接口函数、参数说明、设备类型的定义和密钥结构数据类型;所述接口函数包括设备管理接口函数和多种密码服务接口函数,每个密码服务接口函数对应一种密码服务指令;
所述设备管理接口,用于调用所述设备管理接口函数,实现对所述密码设备单元中不同密码设备的设备枚举并获取设备信息,以及打开/关闭被访问密码设备,并获取/释放设备句柄;
所述密码服务接口,用于接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令,以及依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息;
所述设备模块,包括对应密码设备单元里密码设备的不同接口类型设置的多个通信模块,每个通信模块内置有一种接口数据格式;根据所述访问信息里的设备句柄选择相应的通信模块,用于将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包,以及将从被访问密码设备接收的响应数据包进行拆包,获得APDU响应。
进一步的,所述设备管理接口函数包括:
设备枚举接口函数:用于遍历所有设备模块,并遍历每个设备模块的设备节点,通过所述设备模块在所述密码设备单元中查询所述设备节点对应的密码设备的设备信息,根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;
设备打开接口函数,用于根据用户指令打开指定密码设备,并获取设备句柄;
设备关闭接口函数,用于根据用户指令关闭指定密码设备,并释放设备句柄。
进一步的,所述密码设备应用接口单元还包括文件系统接口和访问控制接口;所述文件系统接口,包括密码设备文件系统中的专用文件DF和基本文件EF;所述基本文件EF包括密钥文件、公钥文件、私钥文件或二级制文件;在根处的专用文件DF为主文件MF;所述访问控制接口,用于提供和用户权限有关的接口验证PIN口令和外部认证,以及提供对密钥或文件的操作权限。
进一步的,所述应用程序单元包括C#应用程序、Java应用程序和各种WEB程序;所述密码接口单元包括与C#应用程序对应的PKCS#11标准接口、CSP标准接口和国密标准接口、与Java应用程序对应的JNI接口,与WEB程序对应的ActiveX接口、NPAPI接口和WebSocket服务接口;所述密码设备单元中的密码设备包括安全智能密码钥匙、安全TF卡、安全芯片、安全终端和PCI/PCI-E密码卡;所述密码设备的接口类型至少包括SD接口、USB接口、SPI接口、PCI/PCI-E接口;所述密码设备驱动单元至少包括SD驱动、USB驱动、SPI驱动、PCI/PCI-E驱动。
本发明第二方面还提出一种访问不同密码设备的方法,包括应用程序单元、密码设备单元、以及前述的系统,所述应用程序单元包括不同应用程序,所述密码设备单元包括不同接口类型的密码设备,所述应用程序单元通过所述通用接口系统访问不同密码设备的通用接口系统,具体步骤包括:
应用程序单元里的应用程序根据其类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口将访问信息发送至密码设备应用接口单元;
所述密码设备应用接口单元将接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包后发送至密码设备驱动单元;
所述密码设备驱动单元根据被访问密码设备的接口类型选择相应的驱动将组装后的访问数据包发送至被访问密码设备;
被访问密码设备对访问数据包进行相应密码处理,生成响应数据包,并将响应数据包通过所述密码设备驱动单元里相应的驱动返回至所述密码设备应用接口单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并通过所述密码接口单元里相应的标准接口返回给所述应用程序单元的相应的应用程序。
其中,所述密码设备应用接口单元的密码服务接口,接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令;
所述密码设备应用接口单元的设备模块,根据所述访问信息里的设备句柄选择相应的通信模块,并通过相应的通信模块将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包发送至密码设备驱动单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息,具体包括:
所述密码设备应用接口单元的设备模块,接收被访问密码设备返回的响应数据包,并通过相应的通信模块进行拆包获得APDU响应;
所述密码设备应用接口单元的密码服务接口,接收APDU响应,并依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息。
进一步的,在应用程序对密码设备进行访问之前还包括:应用程序下发设备枚举指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,根据设备枚举指令调用设备枚举接口函数对所述密码设备单元中不同密码设备进行设备枚举操作,所述设备枚举操作具体包括:遍历所有设备模块,并遍历每个设备模块的设备节点,再通过所述设备模块查询所述密码设备单元中相应的密码设备的设备信息;根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;
应用程序根据可用密码设备个数和对应的设备信息确定被访问密码设备,并下发设备打开指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备打开接口函数对被访问密码设备进行设备打开操作,获取设备句柄;
在应用程序访问密码设备获取响应信息之后还包括:应用程序下发设备关闭指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备关闭接口函数对被访问密码设备进行设备关闭操作,释放设备句柄。
进一步的,所述密码设备应用接口单元还包括文件系统接口和访问控制接口;所述文件系统接口,包括密码设备文件系统中的专用文件DF和基本文件EF;所述基本文件EF包括密钥文件、公钥文件、私钥文件或二级制文件;在根处的专用文件DF为主文件MF;所述访问控制接口,用于提供和用户权限有关的接口验证PIN口令和外部认证,以及提供对密钥或文件的操作权限。。
进一步的,所述应用程序单元包括C#应用程序、Java应用程序和各种WEB程序;所述密码接口单元包括与C#应用程序对应的PKCS#11标准接口、CSP标准接口和国密标准接口、与Java应用程序对应的JNI接口,与WEB程序对应的ActiveX接口、NPAPI接口和WebSocket服务接口;所述密码设备单元中的密码设备包括安全智能密码钥匙、安全TF卡、安全芯片、安全终端和PCI/PCI-E密码卡;所述密码设备的接口类型至少包括SD接口、USB接口、SPI接口、PCI/PCI-E接口;所述密码设备驱动单元至少包括SD驱动、USB驱动、SPI驱动、PCI/PCI-E驱动。
本发明具有突出的实质性特点和显著的进步,具体的说:本发明应用程序单元包括有不同类型的C#应用程序、JAVA程序和浏览器,密码接口单元包括有对应C#应用程序的PKCS#11标准接口、CSP标准接口和国密标准接口、对应JAVA程序的JNI接口、对应浏览器的ActiveX接口等;密码设备单元包括不同接口类型的密码设备;密码设备应用接口单元为应用程序单元中的各种程序访问不同接口类型的密码设备提供统一应用接口,提高不同应用程序访问接口类型的不同密码设备的兼容性;且由于密码设备应用接口单元兼容所有的密码设备机制,如果有新增、更改密码设备,只需通过设备枚举在密码设备应用接口单元里新增或替换相应的信息即可,无需变更密码接口单元;同时由于密码设备应用接口单元能够实现密码设备的证书操作、认证以及其他密码服务,因此密码接口单元无需重新编写代码适配密码设备,对应调用密码设备应用接口单元相关的功能即可;通过在密码设备驱动单元内设置特定的驱动,即可加载相应类型的密码设备,兼容性可扩展好。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出本发明一种访问不同密码设备的系统示意图;
图2示出本发明一种访问不同密码设备的系统中密码设备应用接口单元的示意图;
图3示出本发明一种访问不同密码设备的方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中组件。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
如图1所示,本发明第一方面提出一种访问不同密码设备的系统,包括:密码接口单元、密码设备应用接口单元和密码设备驱动单元;
所述密码接口单元,包括用于与应用程序单元里不同应用程序进行通信的多个标准接口;根据访问应用程序的类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口,通过所述标准接口接收访问应用程序对被访问密码设备的访问信息,以及上传被访问密码设备返回的响应信息至对应应用程序;
具体的,所述应用程序单元包括C#应用程序、Java应用程序和各种WEB程序;所述密码接口单元包括与C#应用程序对应的PKCS#11标准接口、CSP标准接口和国密标准接口、与Java应用程序对应的JNI接口,与WEB程序对应的ActiveX接口、NPAPI接口和WebSocket服务接口;
密码设备应用接口单元,用于提供应用程序单元里不同应用程序与密码设备单元里不同接口类型的密码设备进行通信的统一应用接口;通过所述密码设备应用接口单元将所述密码接口单元接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包;以及将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并上传给所述密码接口单元;
密码设备驱动单元,包括用于驱动密码设备单元里不同接口类型的密码设备的多个驱动;根据被访问密码设备的接口类型选择相应的驱动,通过所述驱动将所述密码设备应用接口单元组装的访问数据包发送给被访问密码设备以及将被访问密码设备返回的响应数据包发送给所述密码设备应用接口单元。
具体的,所述密码设备单元中的密码设备包括安全智能密码钥匙、安全TF卡、安全芯片、安全终端和PCI/PCI-E密码卡;所述密码设备的接口类型至少包括SD接口、USB接口、SPI接口、PCI/PCI-E接口;所述密码设备驱动单元至少包括SD驱动、USB驱动、SPI驱动、PCI/PCI-E驱动。
需要说明的是,所述密码设备单元中密码设备的接口类型还可以是UART、7816、IIC、ADB;密码设备驱动单元还可以是串口驱动、ISO7816驱动、IIC驱动、ADB驱动等。
如图2所示,具体的,所述访问信息包括密码服务指令、访问数据和被访问密码设备的设备句柄;所述密码设备应用接口单元包括:应用接口模块、业务逻辑模块和设备模块;所述业务逻辑模块包括设备管理接口和密码服务接口;
所述应用接口模块,用于提供不同的接口函数、参数说明、设备类型的定义和密钥结构数据类型;所述接口函数包括设备管理接口函数和多种密码服务接口函数,每个密码服务接口函数对应一种密码服务指令;所述密码服务指令至少包括证书操作、认证以及其他密码服务指令。
所述设备管理接口,用于调用所述设备管理接口函数,实现对所述密码设备单元中不同密码设备的设备枚举并获取设备信息,以及打开/关闭被访问密码设备,并获取/释放设备句柄;
所述密码服务接口,用于接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令,以及依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息;
所述设备模块,包括对应密码设备单元里密码设备的不同接口类型设置的多个通信模块,每个通信模块内置有一种接口数据格式;根据所述访问信息里的设备句柄选择相应的通信模块,用于将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包,以及将从被访问密码设备接收的响应数据包进行拆包,获得APDU响应。
具体的,所述设备模块,根据密码设备通信数据包组包方式至少划分为USB智能卡模块、USB大容量存储模块、SPI设备模块、SD设备模块、PCI/PCIE设备模块。
需要说明的是,应用接口模块中对设备类型的定义和设备模块存在对应关系,例如设备类型为:USB_MS、USB_SCARD、SD、SD_SPI、SPI、PROXY;对应设备模块为:USB大容量设备模块、USB智能卡模块、SD设备模块、SD_SPI模块、SPI模块、代理设备模块;对应支持的平台会依据设备类型而不同:SD_SPI 和SPI模块对应Linux\Android、单片机;USB_MS对应Windows、Linux\Android;PROXY对应Windows、Linux。
需要注意的是,密码设备单元里不同接口类型的密码设备的指令集可以相同也可以不同,且密码设备的指令集可以用通用的ISO7816协议规范,也可以为用户为了保密自定义的数据格式;所述密码设备的指令集可以通过设备枚举获取。
具体的,所述设备管理接口函数包括:
设备枚举接口函数:用于遍历所有设备模块,并遍历每个设备模块的设备节点,通过所述设备模块在所述密码设备单元中查询所述设备节点对应的密码设备的设备信息,根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;优选的,所述设备信息包括设备的名称、证书信息、指令集以及支持的密码服务类型等;
设备打开接口函数,用于根据用户指令打开指定密码设备,并获取设备句柄;
设备关闭接口函数,用于根据用户指令关闭指定密码设备,并释放设备句柄。
需要说明的是,所述设备句柄包括:所述设备模块、访问密码设备的文件句柄、访问互斥信息以及其他必要信息。
在具体的实施例中,密码设备包括安全芯片,应用程序调用密码设备应用接口单元的流程一般如下四个阶段:
1)调用设备管理接口执行设备枚举操作:下发设备枚举指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,接收设备枚举指令后,遍历所有设备模块,并遍历每个设备模块的设备节点,再通过所述设备模块查询所述密码设备单元中相应的安全芯片的设备信息;根据获取的设备信息判断可用安全芯片个数,并返回可用安全芯片个数和对应的设备信息;
2)调用设备管理接口执行设备打开操作:根据可用安全芯片个数和对应的设备信息确定被访问安全芯片,并下发设备打开指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口根据用户指令打开指定安全芯片,获取指定安全芯片的设备句柄,以供后续访问该安全芯片;
3)调用密码服务接口和设备模块实现与指定安全芯片的通信,并使用安全芯片提供的密码服务处理;
所述密码设备应用接口单元的密码服务接口,接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据指定安全芯片的指令集将被调用密码服务接口函数封装成相应的APDU命令;
所述密码设备应用接口单元的设备模块,根据所述访问信息里的设备句柄选择相应的SPI通信模块,并通过SPI通信模块依据内置的数据包组包方式将封装后的APDU命令组装成与指定安全芯片的接口数据格式一致的访问数据包发送至密码设备驱动单元;发送至密码设备驱动单元;
所述密码设备驱动单元根据指定安全芯片的接口类型选择相应的SPI驱动将组装后的访问数据包发送至指定安全芯片,指定安全芯片对访问数据包进行相应密码处理,生成响应数据包,并将响应数据包通过所述密码设备驱动单元里相应的驱动返回至所述密码设备应用接口单元;
所述密码设备应用接口单元的设备模块,接收指定安全芯片返回的响应数据包,并通过相应的SPI通信模块依据内置的数据包组包方式进行拆包获得APDU响应;
所述密码设备应用接口单元的密码服务接口,接收APDU响应,并依据指定安全芯片的指令集将拆包后获得的APDU响应进行解封装,获得响应信息;
4)调用设备管理接口执行设备关闭操作:下发设备关闭指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备关闭接口函数对指定安全芯片进行设备关闭操作,释放设备句柄。
具体的,所述密码设备应用接口单元还包括文件系统接口和访问控制接口;所述文件系统接口,包括有密码设备文件系统中的专用文件DF、基本文件EF;所述基本文件EF包括密钥文件、公钥文件、私钥文件或二级制文件;在根处的专用文件DF为主文件MF;所述访问控制接口,用于提供和用户权限有关的接口验证PIN口令和外部认证,以及提供对密钥或文件的操作权限。
需要说明的是,不同文件类型对应不同的访问权限,例如私钥文件对应的访问权限为使用/更改;公钥文件对应的访问权限为使用/更改;MF/DF对应的访问权限为建立/擦除。
需要说明的是,密码设备还可以是第三方密码设备、软件密码模块等。
如图3所示,本发明第二方面还提出一种访问不同密码设备的方法,包括应用程序单元、密码设备单元、以及前述的系统,所述应用程序单元包括不同应用程序,所述密码设备单元包括不同接口类型的密码设备,所述应用程序单元通过所述通用接口系统访问不同密码设备的通用接口系统,具体步骤包括:
应用程序单元里的应用程序根据其类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口将访问信息发送至密码设备应用接口单元;
所述密码设备应用接口单元将接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包后发送至密码设备驱动单元;
所述密码设备驱动单元根据被访问密码设备的接口类型选择相应的驱动将组装后的访问数据包发送至被访问密码设备;
被访问密码设备对访问数据包进行相应密码处理,生成响应数据包,并将响应数据包通过所述密码设备驱动单元里相应的驱动返回至所述密码设备应用接口单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并通过所述密码接口单元里相应的标准接口返回给所述应用程序单元的相应的应用程序。
所述密码设备应用接口单元将接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包后发送至密码设备驱动单元,具体包括:
所述密码设备应用接口单元的密码服务接口,接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令;
所述密码设备应用接口单元的设备模块,根据所述访问信息里的设备句柄选择相应的通信模块,并通过相应的通信模块将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包发送至密码设备驱动单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息,具体包括:
所述密码设备应用接口单元的设备模块,接收被访问密码设备返回的响应数据包,并通过相应的通信模块进行拆包获得APDU响应;
所述密码设备应用接口单元的密码服务接口,接收APDU响应,并依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息。
需要说明的是,密码设备应用接口单元通过调用相应的密码服务接口函数实现密码设备操作、发证、密码服务等基本业务功能,密码接口单元无需重新编写代码适配密码设备,对应调用密码设备应用接口单元相关的功能即可;且密码设备应用接口单元兼容所有的密码设备机制,如果有新增、更改密码设备只需替换密码设备应用接口单元里相应的信息即可,无需变更密码接口单元的信息。
具体的,在应用程序对密码设备进行访问之前还包括:应用程序下发设备枚举指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,根据设备枚举指令调用设备枚举接口函数对所述密码设备单元中不同密码设备进行设备枚举操作,所述设备枚举操作具体包括:遍历所有设备模块,并遍历每个设备模块的设备节点,再通过所述设备模块查询所述密码设备单元中相应的密码设备的设备信息;根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;
应用程序根据可用密码设备个数和对应的设备信息确定被访问密码设备,并下发设备打开指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备打开接口函数对被访问密码设备进行设备打开操作,获取设备句柄;
在应用程序访问密码设备获取响应信息之后还包括:应用程序下发设备关闭指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备关闭接口函数对被访问密码设备进行设备关闭操作,释放设备句柄。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种访问不同密码设备的系统,其特征在于:包括
密码接口单元,包括用于与应用程序单元里不同应用程序进行通信的多个标准接口;根据访问应用程序的类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口,通过所述标准接口接收访问应用程序对被访问密码设备的访问信息,以及上传被访问密码设备返回的响应信息至对应应用程序;
密码设备应用接口单元,用于提供应用程序单元里不同应用程序与密码设备单元里不同接口类型的密码设备进行通信的统一应用接口;通过所述密码设备应用接口单元将所述密码接口单元接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包;以及将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并上传给所述密码接口单元;
密码设备驱动单元,包括用于驱动密码设备单元里不同接口类型的密码设备的多个驱动;根据被访问密码设备的接口类型选择相应的驱动,通过所述驱动将所述密码设备应用接口单元组装的访问数据包发送给被访问密码设备以及将被访问密码设备返回的响应数据包发送给所述密码设备应用接口单元。
2.根据权利要求1所述的访问不同密码设备的系统,其特征在于,所述访问信息包括密码服务指令、访问数据和被访问密码设备的设备句柄;所述密码设备应用接口单元包括:应用接口模块、业务逻辑模块和设备模块;所述业务逻辑模块包括设备管理接口和密码服务接口;
所述应用接口模块,用于提供不同的接口函数、参数说明、设备类型的定义和密钥结构数据类型;所述接口函数包括设备管理接口函数和多种密码服务接口函数,每个密码服务接口函数对应一种密码服务指令;
所述设备管理接口,用于调用所述设备管理接口函数,实现对所述密码设备单元中不同密码设备的设备枚举并获取设备信息,以及打开/关闭被访问密码设备,并获取/释放设备句柄;
所述密码服务接口,用于接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令,以及依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息;
所述设备模块,包括对应密码设备单元里密码设备的不同接口类型设置的多个通信模块,每个通信模块内置有一种接口数据格式;根据所述访问信息里的设备句柄选择相应的通信模块,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包,以及将从被访问密码设备接收的响应数据包进行拆包,获得APDU响应。
3.根据权利要求2所述的访问不同密码设备的系统,其特征在于,所述设备管理接口函数包括:
设备枚举接口函数:用于遍历所有设备模块,并遍历每个设备模块的设备节点,通过所述设备模块在所述密码设备单元中查询所述设备节点对应的密码设备的设备信息,根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;
设备打开接口函数,用于根据用户指令打开指定密码设备,并获取设备句柄;
设备关闭接口函数,用于根据用户指令关闭指定密码设备,并释放设备句柄。
4.根据权利要求1所述的访问不同密码设备的系统,其特征在于,所述密码设备应用接口单元还包括文件系统接口和访问控制接口;所述文件系统接口,包括密码设备文件系统中的专用文件DF和基本文件EF;所述基本文件EF包括密钥文件、公钥文件、私钥文件或二级制文件;在根处的专用文件DF为主文件MF;所述访问控制接口,用于提供和用户权限有关的接口验证PIN口令和外部认证,以及提供对密钥或文件的操作权限。
5.根据权利要求1所述的访问不同密码设备的系统,其特征在于,所述应用程序单元包括C#应用程序、Java应用程序和各种WEB程序;所述密码接口单元包括与C#应用程序对应的PKCS#11标准接口、CSP标准接口和国密标准接口、与Java应用程序对应的JNI接口、与WEB程序对应的ActiveX接口、NPAPI接口和WebSocket服务接口;所述密码设备单元中的密码设备包括安全智能密码钥匙、安全TF卡、安全芯片、安全终端和PCI/PCI-E密码卡;所述密码设备的接口类型至少包括SD接口、USB接口、SPI接口、PCI/PCI-E接口;所述密码设备驱动单元至少包括SD驱动、USB驱动、SPI驱动、PCI/PCI-E驱动。
6.一种访问不同密码设备的方法,其特征在于,包括应用程序单元、密码设备单元、以及权利要求1-5任一项所述的系统,所述应用程序单元包括不同应用程序,所述密码设备单元包括不同接口类型的密码设备,所述应用程序单元通过所述系统访问不同密码设备,具体步骤包括:
应用程序单元里的应用程序根据其类型和被访问密码设备的设备信息在密码接口单元里选择相关的标准接口将访问信息发送至密码设备应用接口单元;
所述密码设备应用接口单元将接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包后发送至密码设备驱动单元;
所述密码设备驱动单元根据被访问密码设备的接口类型选择相应的驱动将组装后的访问数据包发送至被访问密码设备;
被访问密码设备对访问数据包进行相应密码处理,生成响应数据包,并将响应数据包通过所述密码设备驱动单元里相应的驱动返回至所述密码设备应用接口单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息并通过所述密码接口单元里相应的标准接口返回给所述应用程序单元的相应的应用程序。
7.根据权利要求6所述的访问不同密码设备的方法,其特征在于:所述密码设备应用接口单元将接收的访问信息封装成相应的APDU命令,将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包后发送至密码设备驱动单元,具体包括:
所述密码设备应用接口单元的密码服务接口,接收访问信息,根据所述访问信息里的密码服务指令调用相应的密码服务接口函数,并将所述访问信息里的访问数据作为被调用密码服务接口函数的参数数据,依据被访问密码设备的指令集将被调用密码服务接口函数封装成相应的APDU命令;
所述密码设备应用接口单元的设备模块,根据所述访问信息里的设备句柄选择相应的通信模块,并通过相应的通信模块将封装后的APDU命令组装成与被访问密码设备的接口数据格式一致的访问数据包发送至密码设备驱动单元;
所述密码设备应用接口单元将被访问密码设备单元返回的响应数据包进行拆包,获得APDU响应,并将APDU响应进行解封装,获得响应信息,具体包括:
所述密码设备应用接口单元的设备模块,接收被访问密码设备返回的响应数据包,并通过相应的通信模块进行拆包获得APDU响应;
所述密码设备应用接口单元的密码服务接口,接收APDU响应,并依据被访问密码设备的指令集将拆包后获得的APDU响应进行解封装,获得响应信息。
8.根据权利要求7所述的访问不同密码设备的方法,其特征在于,在应用程序对密码设备进行访问之前还包括:应用程序下发设备枚举指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,根据设备枚举指令调用设备枚举接口函数对所述密码设备单元中不同密码设备进行设备枚举操作,所述设备枚举操作具体包括:遍历所有设备模块,并遍历每个设备模块的设备节点,再通过所述设备模块查询所述密码设备单元中相应的密码设备的设备信息;根据获取的设备信息判断可用密码设备个数,并返回可用密码设备个数和对应的设备信息;
应用程序根据可用密码设备个数和对应的设备信息确定被访问密码设备,并下发设备打开指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备打开接口函数对被访问密码设备进行设备打开操作,获取设备句柄;
在应用程序访问密码设备获取响应信息之后还包括:应用程序下发设备关闭指令给所述密码设备应用接口单元,所述密码设备应用接口单元的设备管理接口,调用设备关闭接口函数对被访问密码设备进行设备关闭操作,释放设备句柄。
9.根据权利要求6所述的访问不同密码设备的方法,其特征在于,所述密码设备应用接口单元还包括文件系统接口和访问控制接口;所述文件系统接口,包括密码设备文件系统中的专用文件DF和基本文件EF;所述基本文件EF包括密钥文件、公钥文件、私钥文件或二级制文件;在根处的专用文件DF为主文件MF;所述访问控制接口,用于提供和用户权限有关的接口验证PIN口令和外部认证,以及提供对密钥或文件的操作权限。
10.根据权利要求6所述的访问不同密码设备的方法,其特征在于,所述应用程序单元包括C#应用程序、Java应用程序和各种WEB程序;所述密码接口单元包括与C#应用程序对应的PKCS#11标准接口、CSP标准接口和国密标准接口、与Java应用程序对应的JNI接口,与WEB程序对应的ActiveX接口、NPAPI接口和WebSocket服务接口;所述密码设备单元中的密码设备包括安全智能密码钥匙、安全TF卡、安全芯片、安全终端和PCI/PCI-E密码卡;所述密码设备的接口类型至少包括SD接口、USB接口、SPI接口、PCI/PCI-E接口;所述密码设备驱动单元至少包括SD驱动、USB驱动、SPI驱动、PCI/PCI-E驱动。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849959.8A CN112100586B (zh) | 2020-08-21 | 2020-08-21 | 一种访问不同密码设备的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010849959.8A CN112100586B (zh) | 2020-08-21 | 2020-08-21 | 一种访问不同密码设备的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100586A CN112100586A (zh) | 2020-12-18 |
CN112100586B true CN112100586B (zh) | 2022-04-08 |
Family
ID=73753205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010849959.8A Active CN112100586B (zh) | 2020-08-21 | 2020-08-21 | 一种访问不同密码设备的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100586B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112787996B (zh) * | 2020-12-25 | 2022-03-15 | 郑州信大捷安信息技术股份有限公司 | 一种密码设备管理方法及系统 |
CN114297697A (zh) * | 2021-12-31 | 2022-04-08 | 奇安信科技集团股份有限公司 | 模拟方法、调试方法、装置、电子设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646206A (zh) * | 2013-12-24 | 2014-03-19 | 北京可信华泰信息技术有限公司 | 一种兼容不同密码设备的访问方法 |
US9584325B1 (en) * | 2014-12-04 | 2017-02-28 | Amazon Technologies, Inc. | User-configurable cryptographic interface controller |
CN107977565A (zh) * | 2016-10-25 | 2018-05-01 | 航天信息股份有限公司 | Usbkey接口系统及与usbkey连接的方法 |
CN109981260A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | 一种基于统一接口的证书密钥管理系统及方法 |
-
2020
- 2020-08-21 CN CN202010849959.8A patent/CN112100586B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103646206A (zh) * | 2013-12-24 | 2014-03-19 | 北京可信华泰信息技术有限公司 | 一种兼容不同密码设备的访问方法 |
US9584325B1 (en) * | 2014-12-04 | 2017-02-28 | Amazon Technologies, Inc. | User-configurable cryptographic interface controller |
CN107977565A (zh) * | 2016-10-25 | 2018-05-01 | 航天信息股份有限公司 | Usbkey接口系统及与usbkey连接的方法 |
CN109981260A (zh) * | 2017-12-27 | 2019-07-05 | 航天信息股份有限公司 | 一种基于统一接口的证书密钥管理系统及方法 |
Non-Patent Citations (1)
Title |
---|
基于国密标准的密码服务中间件设计思路;王俊人等;《通信技术》;20180430(第04期);947-952 * |
Also Published As
Publication number | Publication date |
---|---|
CN112100586A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7503064B2 (en) | Framework for providing a security context and configurable firewall for computing systems | |
EP2731381B1 (en) | Method for changing the mobile network operator in an embedded sim on basis of special privilege | |
US11126753B2 (en) | Secure processor chip and terminal device | |
US8768250B2 (en) | Enhanced near field communication terminal, smart card and communication method thereof | |
EP2388968B1 (en) | System and method for downloading application | |
US20080046898A1 (en) | Method and System for Implementing an External Trusted Platform Module | |
WO2021223278A1 (zh) | Sim卡配置分发方法及系统 | |
CN112100586B (zh) | 一种访问不同密码设备的系统及方法 | |
CN101872334A (zh) | 一种复合型usb设备及其实现方法 | |
KR20180133837A (ko) | 내장 sim에서의 키 관리방법, 및 그를 위한 내장 sim과 기록매체 | |
US11907931B2 (en) | Method and system for managing virtual electronic card, secure chip, terminal and storage medium | |
EP3588275B1 (en) | Suspending and resuming a card computing device | |
CN109587142A (zh) | 一种面向业务流的数据安全接入模块和设备 | |
CN106375996A (zh) | 一种虚拟用户身份识别卡保护方法、应用处理器及终端 | |
CN107786411A (zh) | 应用程序间通信隧道连接/验证方法/系统、介质及设备 | |
WO2013174321A1 (zh) | 执行命令的方法、装置、智能卡及移动终端 | |
CN112464222B (zh) | 安全设备、对应的系统、方法和计算机程序产品 | |
EP2682861B1 (en) | Program calling method, and mobile device | |
CN113900588A (zh) | 一种带内管理装置、方法及计算机设备 | |
CN112131562B (zh) | 一种使用安卓设备内置密码服务的方法及系统 | |
CN106940655A (zh) | 基于可信执行环境集成虚拟机的方法、终端 | |
CN112513905A (zh) | 用于实现虚拟智能卡服务的方法和系统 | |
CN114765778A (zh) | 一种用户识别模块卡、信息处理方法及终端 | |
CN117874793A (zh) | 一种应用程序终端 | |
CN118921363A (zh) | 一种配置文件下载方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |