本发明涉及计算机应用技术领域,具体涉及一种数字认证设备接口系统。
背景技术:
数字认证设备(即usbkey)是一种usb接口的硬件设备,其内置智能卡芯片或者单片机,具备一定的存储空间,能够存储用户的私钥以及数字证书,利用数字认证设备内置的公钥算法实现对用户身份的认证。
在实际业务应用过程中,为加强操作系统登录的安全性,经常选择使用数字认证设备等人体工程学设备强化验证用户身份。而随着各终端安全登录产品的发展成熟,相应数字认证设备厂商也迅速发展起来。不同厂商生产的数字认证设备的规格和标准往往都不相同,即提供给上层业务系统识别的接口各不相同,比如支持pkcs11设备接口、skf设备接口标准,甚至自定义设备访问接口等。在一个业务操作的过程中,如果直接调用厂商提供的数字认证设备接口,可能导致更换数字认证设备以后,由于数字认证设备的接口不同,所以业务功能调用数字认证设备的方法也需要调整,因此给数字认证设备的应用以及业务系统的集成都造成很大障碍。另外,数字认证设备厂商分别实现两套接口支持linux、windows操作系统,在软件实现过程要求数字认证设备不仅用于本地终端,还要能适应远程访问。
作为终端安全登录系统的底层模块,数字认证设备接口会被各种上层应用模块调用,所以需要对数字认证设备硬件资源访问操作出调度安排,否则不可避免会出现线程安全性、进程安全性问题。因此,如何解决业务系统对不同数字认证设备接口的兼容成为目前亟待解决的课题。
技术实现要素:
为此,本发明提供一种数字认证设备接口系统,用于解决现有技术中存在的业务系统无法对不同数字认证设备接口实现兼容,导致数字认证设备接口适配较为复杂的缺陷。
本发明提供一种数字认证设备接口系统,包括:设备封装层、业务实体层和服务提供层;
所述设备封装层,用于对目标数字认证设备对应的具体函数接口进行封装,提供包含目标函数接口的动态库;
所述业务实体层,用于将业务实体信息存储到预设的网络服务器和数字认证设备中,并通过访问所述设备封装层的所述动态库,根据业务实体类型的不同封装相应的目标函数接口;
所述服务提供层,用于为预设的应用场景提供相应的服务,实现访问数字认证设备并完成相应的远程业务操作。
进一步的,所述服务提供层,具体用于在网络浏览器访问本地数字认证设备、远程访问非本地数字认证设备、跨进程提权操作以及不同操作系统之间互操作场景下提供相应的辅助服务;以及,在远程登录本地数字认证设备的应用场景下提供识别用户身份的服务。
进一步的,所述服务提供层,具体用于构建tcp传输控制协议通信服务和websocket协议通信服务,基于所述tcp传输控制协议通信服务或所述websocket协议通信服务提供安全认证,并提供相应的辅助通信信道,实现协议通信包按照预定格式进行通信。
进一步的,所述服务提供层,具体还用于针对多个数字认证设备提供业务实体对应的目标函数接口,实现同时访问所述多个数字认证设备并完成相应的远程业务操作。
进一步的,所述设备封装层,还用于定义抽象接口类,将所述数字认证设备对应sdk接口函数适配为抽象接口,在所述抽象接口之下实现对不同数字认证设备对应sdk接口函数的调用,实现所述抽象接口类。
进一步的,所述设备封装层,具体可用于:
根据所述数字认证设备类型的差异,加载相应的包含目标函数接口的动态库,并获取相应的导出函数地址;
枚举所述数字认证设备后,构建用于存储数字认证设备基本信息的设备元素链表;其中,所述设备元素链表中的设备元素包含索引编号、设备序列号、设备会话句柄、设备访问互斥锁中的至少一种信息;
打开所述数字认证设备时,确定所述数字认证设备对应的实际设备序列号;以所述实际设备序列号为索引,遍历所述设备元素链表,查找与所述数字认证设备对应的设备会话句柄,并获取相应的设备访问互斥锁;
打开所述数字认证设备后,根据所述实际设备序列号,验证或修改所述数字认证设备对应的个人识别码;
关闭所述数字认证设备时,释放所述设备访问互斥锁,并存储当前访问数字认证设备对应的所述索引编号,当再次打开所述数字认证设备时基于所述索引编号定位并获取相应的设备访问互斥锁。
进一步的,所述设备封装层,具体还用于获取所述数字认证设备的属性信息,根据所述属性信息判断所述数字认证设备是否可读写文件,若是,则调用相应的目标函数接口实现相应的业务操作。
进一步的,所述业务实体层,具体用于在终端安全登录业务过程中,确定所述数字认证设备和终端操作系统账户信息之间的关联关系;将数字认证设备和终端操作系统账户信息之间的关联关系存储到预设的网络服务器中;以及若所述数字认证设备中具备存储空间,则调用所述设备封装层中的读写目标函数接口,将所述数字认证设备和终端操作系统账户信息之间的关系写入所述数字认证设备中相应的存储文件中。
进一步的,所述业务实体层,具体用于在实现网络版安全登录过程中,通过web浏览器页面或者通过网络服务远程访问所述网络服务器读写所述数字认证设备和终端操作系统账户信息之间的关联关系,实现本地终端账户登录或者域账户登录。
采用本发明提供的所述的数字认证设备接口系统,能够对不同数字认证设备厂商接口作最小化设定,且简单易行,有效降低了数字认证设备接口适配的复杂度,有利于统一实现不同安全登录系统数字认证设备接口,避免实现不同中间业务接口。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的数字认证设备接口系统的结构示意图;
图2为本发明提供的数字认证设备接口系统的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明利用软件分层的方法,定义一个多层级数字认证设备接口实现支持实现终端安全登录等软件产品。下面基于本发明所述的数字认证设备接口系统,对其实施例进行详细描述。如图1和2所示,其为本发明提供的数字认证设备接口系统的结构示意图,具体实现过程中:为适应不同厂商的数字认证设备(即usbkey)设备驱动和接口的差异,本发明定义一个独立的设备封装层101;为集中解决业务应用需求问题,本发明定义一个独立的业务实体层102;另外,为兼顾本地访问、远程访问数字认证设备的需求,本发明还定义一个独立的上层服务提供层103。
所述设备封装层101,用于对目标数字认证设备对应的具体函数接口进行封装,提供包含所需业务功能或者设备对应的目标函数接口的动态库。具体的,所述设备封装层101是抽象出的一个独立的软件层次,以统一提供软件外观层。
其中,所述目标函数接口至少可包括:用于枚举设备的接口,对上层提供多个目标数字认证设备信息进行枚举,所述目标数字认证设备信息包括设备唯一序列号、设备类型、是否可读写等;用于打开设备的接口,对内部共享数据实现同步安全保护,提供事务控制;用于关闭设备的接口,结束一个数字认证设备的访问事务,退出同步安全保护;用于获取设备唯一序列号、设备类型的接口;用于验证个人识别码(即pin码)的接口,提供验证个人识别码,并返回剩余重试次数;用于解锁个人识别码的接口,当锁定用户个人识别码后,能够重新初始化用户个人识别码;用于格式化设备的接口,实现初始化用户个人识别码、最大重试次数等;用于读设备空间的数据的接口,实现读取私有数据或者读取公有数据,该数据内容为二进制流格式,并为每条数据记录分配唯一索引号,控制唯一索引号的生成,以及屏蔽数字认证设备关于目录、文件的层级关系;用于写设备空间数据的接口,可实现写入私有数据、也可写公有数据,数据内容为二进制流格式;用于清除设备空间数据的接口,可一次清理一个或多个数据记录;用于查找设备空间数据的接口,可按照数据记录唯一编号或者将数据归类,可一次查询多个数据记录。
在具体实施过程中,所述设备封装层101用于定义抽象接口类,将所述数字认证设备对应sdk接口函数适配为抽象接口,在所述抽象接口之下实现对不同数字认证设备对应sdk接口函数的调用,并实现所述抽象接口类。
其中,所述实现所述抽象接口类具体可以包括:
根据所述数字认证设备类型的差异,加载相应的包含目标函数接口的动态库,并获取相应的导出函数地址。
枚举所述数字认证设备后,构建用于存储数字认证设备基本信息的设备元素链表。其中,所述设备元素链表中的设备元素包含索引编号、设备序列号、设备会话句柄、设备访问互斥锁等中的至少一种信息。比如,在具体实施过程中,pkcs11设备接口需要调用c_getslotlist函数接口枚举设备,调用c_gettokeninfo函数接口获取设备唯一序列号;skf设备接口则需要调用skf_enumdev枚举设备,连接skf_connectdev设备后,获取skf_getdevinfo设备唯一序列号。
打开所述数字认证设备时,确定所述数字认证设备对应的实际设备序列号;以所述实际设备序列号为索引,遍历所述设备元素链表,查找与所述数字认证设备对应的设备会话句柄,并获取相应的设备访问互斥锁。比如,在具体实施过程中,pkcs11设备接口需要调用c_opensession函数接口打开、调用c_closesession函数接口关闭设备会话;skf设备接口则需要调用skf_enumapplication函数接口枚举应用,为保持与pkcs11兼容,一般调用skf_openapplication函数接口打开第一个应用,调用skf_closeapplication函数接口关闭应用。
打开所述数字认证设备后,根据所述实际设备序列号,验证或修改所述数字认证设备对应的个人识别码。比如pkcs11设备接口需要调用c_login函数接口验证pin码,然后调用c_logout函数接口退出验证,调用c_setpin函数接口修改。skf设备接口则需要调用skf_verifypin验证,调用skf_changepin修改pin码。
获取所述数字认证设备的属性信息,根据所述属性信息判断所述数字认证设备是否可读写文件,若是,则调用相应的目标函数接口实现相应的业务操作。比如,pkcs11设备接口需要调用c_findobjects函数接口查找文件,调用c_getattributevalue函数接口读取文件内容,写文件用c_setattributevalue函数接口。skf设备接口则需要调用skf_enumfiles枚举应用下的文件列表信息,并用skf_readfile读具体文件内容,写文件用skf_writefile。需要说明的是,读写接口在usbkey设备中有其独特性,并非每个usbkey都能实现读写操作,若usbkey设备允许读写,则提供读、写、删除usbkey空间数据操作。其中,pin码操作包括验证用户pin码、修改pin码、解锁用户pin码等。
另外,为了提高效率,当关闭所述数字认证设备释放所述设备访问互斥锁时,可暂存当前访问数字认证设备对应的所述索引编号,当再次打开该数字认证设备时基于所述索引编号能够实现快速定位并获取相应的设备访问互斥锁。
所述业务实体层102,用于将业务实体信息存储到预设的网络服务器和数字认证设备中,并通过访问所述设备封装层101的所述动态库,根据业务实体类型的不同封装相应的目标函数接口,实现访问所述数字认证设备并完成相应的业务操作。
比如,在终端安全登录业务过程中,所述业务实体层102用于确定所述数字认证设备和终端操作系统账户信息之间的关联关系,并判断所述数字认证设备的读写属性,若不可读写,则将数字认证设备和终端操作系统账户信息之间的关联关系存储到预设的本地文件空间及网络服务器中;以及若可读写,并且所述数字认证设备中具备存储空间,则调用所述设备封装层101中的读写目标函数接口,将所述数字认证设备和终端操作系统账户信息之间的关系写入所述数字认证设备中相应的存储文件及网络服务器中。
在具体实施过程中,实现安全登录时,所述业务实体层102,由于每类业务信息都与数字认证设备产生关联,可以有n对m的关系,因此可为每类业务分配相应的唯一编号,并将该唯一编号与数字认证设备对应唯一编号进行绑定,产生关联关系。
所述业务实体信息可统一记录在服务端中,并备份存储于数字认证设备空间。针对每类业务实体,可调用设备封装层101封装独立的查询、读、写、删除操作接口,实现访问本地数字认证设备并完成相应的业务操作。为优化操作效率,操作接口支持多数字认证设备集合参数,批量操作业务记录,在此不再详细赘述。需要说明的是,如果数字认证设备无法提供空间,可在终端系统中建立业务缓存记录,通过网络传输同步终端的缓存记录。具体的,所述业务实体信息可包括登录账户、终端唯一id以及数字认证设备序列号之间的关联信息,以及安全登录系统权限、数字认证设备之间的关联信息等。
另外,所述业务实体层102还可用于访问所述网络服务器读写所述数字认证设备和终端操作系统账户信息之间的关联关系,实现本地终端账户登录或者域账户登录。比如访问远程网络服务器,利用http协议利用url(uniformresourcelocator,统一资源定位器)发送post请求,上传或下载数字认证设备的关联信息。除此之外,扩展的业务例子还可包括利用数字认证设备实现终端点数授权控制,以及利用数字认证设备标记三员身份信息(admin/secret/audit)等,在此不再一一展开详细赘述。
所述服务提供层103用于为预设的应用场景提供相应的服务,实现访问数字认证设备并完成相应的远程业务操作。比如,所述服务提供层103可用于在网络浏览器访问本地数字认证设备场景下提供解除所述网络浏览器读写操作系统中硬件权限约束的服务,服务提供层运行于特权用户权限下,能够避免普通系统用户访问数字认证设备硬件权限不足的场景;也可在远程访问非本地数字认证设备、跨进程提权操作以及不同操作系统之间互操作场景下提供相应的辅助服务以及用于在远程登录本地数字认证设备的应用场景下提供识别用户身份的服务等。其中,所述进程包括系统安全进程和服务进程等。
在远程登录应用场景下提供识别用户身份的服务过程中,所述服务提供层103可用于构建tcp传输控制协议(tcp,transmissioncontrolprotocol)通信服务和websocket协议通信服务,优选的,基于所述tcp传输控制协议通信服务或所述websocket协议通信服务提供安全认证,并提供相应的辅助通信信道,通过设计相应的通信报文结构,实现协议通信包按照预定格式进行传输通信。该辅助通信信道能够提供诊断信息、提供备份通道,保证主通信信道可靠工作。
需要说明的是,在具体实施过程中还可基于其他协议提供相应的通信服务,在此不再一一赘述。
下面以其中两种典型协议为例进行具体说明,可首先从预设的两种典型协议中选择目标协议类型,比如tcp传输控制协议或者websocket协议。其中,若基于tcp传输控制协议可提供securesocketlayer(ssl安全认证),并采用短连接方法,当一个远程服务完成后,断开该tcp传输控制协议连接关系。若基于websocket协议可提供ssl安全认证,并采用短连接方法,当一个远程服务完成后,自动断开该websocket连接关系。为了保证服务可用性,提供诊断信息输出和备用通信信道。其中,若选择tcp传输控制协议服务,则提供用户数据报协议(udp,userdatagramprotocol)服务,用于判断服务活跃状态、收发诊断信息。若选择websocket服务,则提供http服务,用于判断服务活跃状态、收发诊断信息。协议通信包可采用json(javascriptobjectnotation)格式,每次服务包含一次应答过程。通信协议命令采用字符串格式定义,每个通信协议命令保证唯一不相同。具体的,服务提供层json协议通信请求包,统一采用utf-8(8位元,universalcharacterset/unicodetransformationformat)字符集来表示,包含操作码、设备id、usbkey序列号以及相应的协议命令等信息。服务提供层json协议通信响应包,统一采用utf-8字符集来表示,包含操作码、设备id操作结果码以及相应协议命令等信息。
其中,json协议操作码统一使用小写英文字符表示,比如"init-keyinterface"、"enum-device"、"find-device"、"verify-pin"、"unlock-pin"、"change-pin"等。所述通信结果码区分成功或失败场景,比如:1操作成功;2操作失败;3函数参数错误;4查找设备失败;5请求非法;6请求json格式错误;7请求功能码无效;8个人识别码操作失败;9数据不存在;10加载usbkey设备接口失败。具体协议命令中设备接口初始化对应操作码为“init-keyinterface”;枚举设备对应操作码为“enum-device”;设备是否存在对应操作码为“find-key”;校验设备pin码对应操作码为“verify-pin”;解锁用户pin码对应操作码为“unlock-pin”;修改用户pin码对应操作码为“change-pin”;绑定登录终端对应操作码为“bind-key”;解除终端绑定对应操作码为“unbind-key”。需要说明的是,上述关于json通信协议的实例描述仅仅是示例性的,并非完整的提供设备封装层的服务,本发明技术方案不限于上述所列举的内容,在此不再一一赘述。
另外,所述服务提供层103还用于针对数字认证设备提供业务实体对应的目标函数接口,比如基于业务实体对象提供每种业务实体的查询、读、写、删除远程操作接口,实现访问所述数字认证设备并完成相应的业务操作。为优化效率,还可提供针对多个数字认证设备的批量查询、读、写、删除远程操作接口,在此不再详细赘述。
采用本发明提供的所述的数字认证设备接口系统,能够对不同数字认证设备厂商接口作最小化设定,且简单易行,有效降低了数字认证设备接口适配的复杂度,有利于统一实现不同安全登录系统数字认证设备接口,避免实现不同中间业务接口,同时兼顾本地访问、远程访问的需求。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是软件单元。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施上述方案内容。
通过以上的实施方式的描述内容,本领域的技术人员可以清楚地了解到各实施方式能够借助通用硬件平台的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以具备特殊功能的硬件或者软件产品的形式体现出来,该硬件或者软件产品可以通过计算机设备(可以是个人计算机,服务器,或者网络设备等)实现各个实施例或者实施例的某些部分所述的功能。
最后应说明的是:以上实施例仅用来说明本发明的具体技术方案,而非对其进行限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员也应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种数字认证设备接口系统,其特征在于,包括:设备封装层、业务实体层和服务提供层;
所述设备封装层,用于对目标数字认证设备对应的具体函数接口进行封装,提供包含目标函数接口的动态库;
所述业务实体层,用于将业务实体信息存储到预设的网络服务器和数字认证设备中,并通过访问所述设备封装层的所述动态库,根据业务实体类型的不同封装相应的目标函数接口;
所述服务提供层,用于为预设的应用场景提供相应的服务,实现访问数字认证设备并完成相应的远程业务操作。
2.根据权利要求1所述的数字认证设备接口系统,其特征在于,所述服务提供层,具体用于在网络浏览器访问本地数字认证设备、远程访问非本地数字认证设备、跨进程提权操作以及不同操作系统之间互操作场景下提供相应的辅助服务;以及,在远程登录本地数字认证设备的应用场景下提供识别用户身份的服务。
3.根据权利要求2所述的数字认证设备接口系统,其特征在于,所述服务提供层,具体用于构建tcp传输控制协议通信服务和websocket协议通信服务,基于所述tcp传输控制协议通信服务或所述websocket协议通信服务提供安全认证,并提供相应的辅助通信信道,实现协议通信包按照预定格式进行通信。
4.根据权利要求3所述的数字认证设备接口系统,其特征在于,所述服务提供层,具体还用于针对多个数字认证设备提供业务实体对应的目标函数接口,实现同时访问所述多个数字认证设备并完成相应的远程业务操作。
5.根据权利要求1所述的数字认证设备接口系统,其特征在于,所述设备封装层,还用于定义抽象接口类,将所述数字认证设备对应的sdk接口函数适配为抽象接口,在所述抽象接口之下实现对不同数字认证设备对应sdk接口函数的调用,实现所述抽象接口类。
6.根据权利要求1所述的数字认证设备接口系统,其特征在于,所述设备封装层,具体还用于获取所述数字认证设备的属性信息,根据所述属性信息判断所述数字认证设备是否可读写文件,若是,则调用相应的目标函数接口实现相应的业务操作。
7.根据权利要求1所述的数字认证设备接口系统,其特征在于,所述业务实体层,具体用于在终端安全登录业务过程中,确定所述数字认证设备和终端操作系统账户信息之间的关联关系,并判断所述数字认证设备的读写属性,若不可读写,则将数字认证设备和终端操作系统账户信息之间的关联关系存储到预设的本地文件空间及网络服务器中;以及若可读写,并且所述数字认证设备中具备存储空间,则调用所述设备封装层中的读写目标函数接口,将所述数字认证设备和终端操作系统账户信息之间的关系写入所述数字认证设备中相应的存储文件及网络服务器中。
8.根据权利要求1所述的数字认证设备接口系统,其特征在于,所述业务实体层,具体用于在实现网络版安全登录过程中,通过web浏览器页面或者通过网络服务远程访问网络服务器读写所述数字认证设备和终端操作系统账户信息之间的关联关系,实现本地终端账户登录或者域账户登录。
技术总结