一种基于JavaCard共享接口的访问控制方法及系统与流程

文档序号:18523576发布日期:2019-08-24 10:01阅读:185来源:国知局
一种基于JavaCard共享接口的访问控制方法及系统与流程

本申请涉及数据访问领域,特别涉及一种基于javacard共享接口的访问控制方法及系统。



背景技术:

目前,客户端通过共享接口对服务端进行数据访问时,服务端接收到客户端的数据访问请求就发送响应消息,以允许客户端对服务端进行数据访问。由于有些客户端是未知的客户端,其发送的数据访问请求可能是恶意的数据访问请求,导致安全风险较大。

因此,如何提高客户端和服务端之间数据访问的安全性是本领域技术人员亟需解决的技术问题。



技术实现要素:

本申请的目的是提供一种基于javacard共享接口的访问控制方法及系统,能够提高客户端和服务端之间数据访问的安全性。

为解决上述技术问题,本申请提供一种基于javacard共享接口的访问控制方法,包括:

通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符;

查找服务端的应用注册信息表并判断所述应用注册信息表中是否存在所述客户端的所述应用标识符;

若是,则将所述服务端的服务端对象转换为共享类型对象以允许所述客户端进行数据访问。

优选地,所述查找服务端的应用注册信息表并判断所述应用注册信息表中是否存在所述客户端的所述应用标识符之前,还包括:

在接收所述客户端发送的select命令后,响应fci信息至所述客户端;

在接收所述客户端发送的getchallenge命令后,生成预设长度的第一随机数并响应至所述客户端;

在接收所述客户端利用rsa公钥对所述第一随机数加密得到的认证数据后,利用所述rsa公钥对应的rsa私钥对所述认证数据进行解密得到明文,并将所述明文与所述第一随机数进行比较,得到比较结果;

将所述比较结果发送至所述客户端以判断所述比较结果的正确性;

若所述比较结果为false,则所述客户端执行结束流程操作;

若所述比较结果为true,则接收所述客户端通过addregistry命令或deleteregistry命令发送的访问控制记录密文信息;其中,所述访问控制记录密文信息是所述客户端利用所述rsa公钥对所述应用标识符对应的访问控制记录信息进行加密而得到的密文信息;

在利用所述rsa私钥对所述访问控制记录密文信息进行解密后,依据所述addregistry命令或所述deleteregistry命令,在所述应用注册信息表中添加或删除所述访问控制记录信息。

优选地,所述将所述服务端的服务端对象转换为共享类型对象以允许所述客户端进行数据访问,包括:

接收所述客户端发送的数据读取请求;

将所述数据读取请求对应的数据信息响应至所述客户端。

优选地,所述将所述服务端的服务端对象转换为共享类型对象以允许所述客户端进行数据访问,包括:

在接收所述客户端发送的数据更新请求前,生成第二随机数并响应至所述客户端;

在接收所述客户端利用3des算法或sm4算法对所述第二随机数加密得到的认证密文后,利用所述3des算法或所述sm4算法对所述认证密文进行解密得到明文数据,并将所述明文数据与所述第二随机数进行比较,得到认证结果;

将所述认证结果发送至所述客户端以判断是否有权限对所述服务端进行数据更新;

若无所述权限,则所述客户端执行结束流程操作;

若有所述权限,则所述客户端对所述服务端执行数据更新操作。

本申请还提供一种基于javacard共享接口的访问控制系统,包括:

应用标识符获取模块,用于通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符;

应用标识符存在判断模块,用于查找服务端的应用注册信息表并判断所述应用注册信息表中是否存在所述客户端的所述应用标识符;

数据访问模块,用于若所述应用注册信息表中存在所述应用标识符,则将所述服务端的服务端对象转换为共享类型对象以允许所述客户端进行数据访问。

优选地,该基于javacard共享接口的访问控制系统还包括:

fci信息响应模块,用于在接收所述客户端发送的select命令后,响应fci信息至所述客户端;

第一随机数生成模块,用于在接收所述客户端发送的getchallenge命令后,生成预设长度的第一随机数并响应至所述客户端;

比较结果获取模块,用于在接收所述客户端利用rsa公钥对所述第一随机数加密得到的认证数据后,利用所述rsa公钥对应的rsa私钥对所述认证数据进行解密得到明文,并将所述明文与所述第一随机数进行比较,得到比较结果;

比较结果正确性判断模块,用于将所述比较结果发送至所述客户端以判断所述比较结果的正确性;

结束流程操作执行模块,用于若所述比较结果为false,则所述客户端执行结束流程操作;

访问控制记录密文信息接收模块,用于若所述比较结果为true,则接收所述客户端通过addregistry命令或deleteregistry命令发送的访问控制记录密文信息;其中,所述访问控制记录密文信息是所述客户端利用所述rsa公钥对所述应用标识符对应的访问控制记录信息进行加密而得到的密文信息;

应用注册信息表更改模块,用于在利用所述rsa私钥对所述访问控制记录密文信息进行解密后,依据所述addregistry命令或所述deleteregistry命令,在所述应用注册信息表中添加或删除所述访问控制记录信息。

优选地,所述数据访问模块,包括:

数据读取请求接收单元,用于接收所述客户端发送的数据读取请求;

数据信息响应单元,用于将所述数据读取请求对应的数据信息响应至所述客户端。

优选地,所述数据访问模块,包括:

第二随机数生成单元,用于在接收所述客户端发送的数据更新请求后,生成第二随机数并响应至所述客户端;

认证结果获取单元,用于在接收所述客户端利用3des算法或sm4算法对所述第二随机数加密得到的认证密文后,利用所述3des算法或所述sm4算法对所述认证密文进行解密得到明文数据,并将所述明文数据与所述第二随机数进行比较,得到认证结果;

权限判断单元,用于将所述认证结果发送至所述客户端以判断是否有权限对所述服务端进行数据更新;

结束流程操作执行单元,用于若无所述权限,则所述客户端执行结束流程操作;

数据更新操作执行单元,用于若有所述权限,则所述客户端对所述服务端执行数据更新操作。

本申请所提供的一种基于javacard共享接口的访问控制方法,包括:通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符;查找服务端的应用注册信息表并判断所述应用注册信息表中是否存在所述客户端的所述应用标识符;若是,则将所述服务端的服务端对象转换为共享类型对象以允许所述客户端进行数据访问。

该方法服务端先是获取客户端的应用标识符,再查找所述应用注册信息表并判断所述应用注册信息表中是否存在所述客户端的所述应用标识符,若存在该应用标识符,则将服务端对象转换为共享类型对象以允许所述客户端进行数据访问。可见,该方法存在数据访问授权机制,即只有已经授权的客户端才能对服务端进行数据访问,能够提高客户端和服务端之间数据访问的安全性。本申请还提供一种基于javacard共享接口的访问控制系统,亦具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的一种基于javacard共享接口的访问控制方法的流程图;

图2为本申请实施例所提供的一种基于javacard共享接口的访问控制系统的结构框图。

具体实施方式

本申请的核心是提供一种基于javacard共享接口的访问控制方法,能够提高客户端和服务端之间数据访问的安全性。本申请的另一核心是提供一种基于javacard共享接口的访问控制系统。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

目前,客户端通过共享接口对服务端进行数据访问时,服务端接收到客户端的数据访问请求就发送响应消息,以允许客户端对服务端进行数据访问。由于有些客户端是未知的客户端,其发送的数据访问请求可能是恶意的数据访问请求,导致安全风险较大。本申请提供的一种基于javacard共享接口的访问控制方法,能够提高客户端和服务端之间数据访问的安全性。具体请参考图1,图1为本申请实施例所提供的一种基于javacard共享接口的访问控制方法的流程图,该基于javacard共享接口的访问控制方法具体包括:

s101、通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符;

本申请实施例的执行主体为服务端,该服务端具体可为serverapplet。在通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符之前,客户端通过调用客户端方法函数获取服务端的共享接口对象。上述客户端具体可为clientapplet,上述客户端方法函数具体可为clientmethod,上述服务端方法函数具体可为servermethod。

其中,clientmethod和servermethod均为api,clientmethod:publicstaticshareablegetappletshareableinterfaceobject(aidserveraid,byteparameter);servermethod:publicshareablegetshareableinterfaceobject(aidclientaid,byteparameter)。在此对卡片操作系统以及应用标识符均不作具体限定,应由本领域技术人员根据实际情况作出相应的设定,卡片操作系统具体可以为金融卡的操作系统、sim卡的操作系统、inse的操作系统及ese的操作系统;应用标识符具体可为aid。故步骤s101具体可为:clientapplet通过调用clientmethod方法获取serverapplet的共享接口对象(shareableinterfaceobject),第一个参数为serverapplet的aid对象;卡片操作系统通过serverapplet的aid在卡片的应用注册信息表中找到对应的serverapplet入口,调用serverapplet的servermethod方法,servermethod方法的第一个参数为clientapplet的aid对象。

s102、查找应用注册信息表并判断应用注册信息表中是否存在客户端的应用标识符;

上述应用注册信息表具体可为aidregistry,数据结构为链表但不局限于此,亦可为数组、记录文件等,可保存多条访问控制记录信息(aid和key)。步骤s102具体可为:serverapplet查找自己的aidregistry,判断是否存在servermethod方法第一个参数指定的clientappletaid并将查找结果返回给servermethod方法。当应用服务提供方需要对一个clientapplet进行授权时,需要通过外部应用程序(tsm平台、手机客户端、pc桌面工具程序等)对serverapplet添加一条或多条访问控制记录信息到aidregistry(同一个aid可对应多组key,可通过密钥索引区分)。

进一步地,上述查找服务端的应用注册信息表并判断应用注册信息表中是否存在客户端的应用标识符之前,通常还可以包括:在接收客户端发送的select命令后,响应fci信息至客户端;在接收客户端发送的getchallenge命令后,生成预设长度的第一随机数并响应至客户端;在接收客户端利用rsa公钥对第一随机数加密得到的认证数据后,利用rsa公钥对应的rsa私钥对认证数据进行解密得到明文,并将明文与第一随机数进行比较,得到比较结果;将比较结果发送至客户端以判断比较结果的正确性;若比较结果为false,则客户端执行结束流程操作;若比较结果为true,则接收客户端通过addregistry命令或deleteregistry命令发送的访问控制记录密文信息;其中,访问控制记录密文信息是客户端利用rsa公钥对应用标识符对应的访问控制记录信息进行加密而得到的密文信息;在利用rsa私钥对访问控制记录密文信息进行解密后,依据addregistry命令或deleteregistry命令,在应用注册信息表中添加或删除访问控制记录信息。如果想要对多个clientapplet进行授权或取消授权操作,只需多次重复上述流程即可。访问控制记录信息添加成功后,即代表该记录信息中的aid所表示的clientapplet是一个合法的,经过应用服务提供方授权的clientapplet。当然,此方案是与卡片形态无关的。对于金融卡,应用服务提供方可以通过pc桌面工具和读卡器,对serverapplet的aidregistry做添加或删除记录操作,以达到授权或取消授权目的;如果是sim卡,那么上述流程既可以通过手机客户端与serverapplet进行交互来实现,也可以通过tsm平台使用gsm03.48数据短信与serverapplet进行交互来实现;如果是inse或ese,可通过手机客户端与serverapplet进行交互来实现。

本申请实施例能够体现访问授权机制的灵活性,应用服务提供方可通过访问授权机制,动态的添加或删除访问serverapplet数据的clientapplet,并能保证clientapplet的合法性,增强了serverapplet的使用场景和服务能力。本申请实施例通过在serverapplet添加的访问授权机制和数据访问安全认证机制,既可动态添加多个clientapplet通过共享接口访问serverapplet数据,又可对动态添加的多个clientapplet的合法性和后续数据访问的安全性得到有效的保证,增强了serverapplet的使用场景和服务能力。

s103、若应用注册信息表中存在客户端的应用标识符,则将服务端的服务端对象转换为共享类型对象以允许客户端进行数据访问。

本申请实施例对于若应用注册信息表中不存在客户端的应用标识符这种情况的后续操作不作具体限定,通常服务端发送空指针至上述客户端。clientapplet在通过共享接口对serverapplet进行数据访问之前,必须先经过serverapplet的授权确认,并获取到serverapplet的shareableinterfaceobject,在serverapplet的shareableinterfaceobject获取成功后,clientapplet就可以对serverapplet进行数据访问操作了。当然,根据具体的业务需求,数据的访问权限还可根据其安全级别不同进行额外的区分,比如非敏感信息可直接读取,敏感信息需额外认证才可读取;数据的读操作可直接进行,更新操作需额外认证才能进行等等。

进一步地,上述将服务端的服务端对象转换为共享类型对象以允许客户端进行数据访问,通常包括:接收客户端发送的数据读取请求;将数据读取请求对应的数据信息响应至客户端。具体地,clientapplet通过shareableinterfaceobject直接调用共享接口的readdata()方法对serverapplet进行数据读取操作,serverapplet将要读取的数据信息响应给clientapplet。

进一步地,上述将服务端的服务端对象转换为共享类型对象以允许客户端进行数据访问,通常包括:在接收客户端发送的数据更新请求前,生成第二随机数并响应至客户端;在接收客户端利用3des算法或sm4算法对第二随机数加密得到的认证密文后,利用3des算法或sm4算法对认证密文进行解密得到明文数据,并将明文数据与第二随机数进行比较,得到认证结果;将认证结果发送至客户端以判断是否有权限对服务端进行数据更新;若无权限,则客户端执行结束流程操作;若有权限,则客户端对服务端执行数据更新操作。本申请实施例中安全认证算法的类型不固定于非对称或对称算法,也不固定于国际算法或国密算法;非对称算法和对称算法、国密算法和国密算法均可相互替换,当然亦可采用两者相结合的方式。

上述过程具体如下:

(1).clientapplet通过shareableinterfaceobject调用共享接口的getchallenge()方法;serverapplet生成随机数,响应给clientapplet;

(2).clientapplet使用指定key对获取到的随机数采用3des或sm4算法加密得到认证密文,并将此认证密文通过shareableinterfaceobject调用共享接口的externalauth()方法发送给serverapplet;serverapplet使用aidregistry中的相同key采用同样的算法对接收到的认证密文做解密操作得到明文数据,与第(1)步生成的随机数进行比较,serverapplet将比较结果作为认证结果保存,同时将认证结果响应给clientapplet;

(3).clientapplet根据响应的认证结果判断是否有权限对serverapplet进行数据更新操作:若认证成功,clientapplet通过shareableinterfaceobject调用共享接口的updatedata()方法对serverapplet进行数据更新操作,serverapplet更新数据并将更新结果响应给clientapplet;若认证失败,则流程结束。但如果认证失败了,clientapplet仍要进行数据更新操作,serverapplet会根据认证结果拒绝处理,并响应异常错误状态字给clientapplet。

本申请提供的一种基于javacard共享接口的访问控制方法,服务端先是通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符,再查找应用注册信息表并判断应用注册信息表中是否存在客户端的应用标识符,若存在该应用标识符,则将服务端对象转换为共享类型对象以允许客户端进行数据访问。可见,该方法存在数据访问授权机制,即只有已经授权的客户端才能对服务端进行数据访问,能够提高客户端和服务端之间数据访问的安全性。

下面对本申请实施例提供的一种基于javacard共享接口的访问控制系统进行介绍,下文描述的基于javacard共享接口的访问控制系统与上文描述的基于javacard共享接口的访问控制方法可相互对应参照。

请参考图2,图2为本申请实施例所提供的一种基于javacard共享接口的访问控制系统的结构框图;该基于javacard共享接口的访问控制系统包括:

应用标识符获取模块201,用于通过卡片操作系统对服务端方法函数的调用获取客户端的应用标识符;

应用标识符存在判断模块202,用于查找服务端的应用注册信息表并判断应用注册信息表中是否存在客户端的应用标识符;

数据访问模块203,用于若应用注册信息表中存在应用标识符,则将服务端的服务端对象转换为共享类型对象以允许客户端进行数据访问。

基于上述实施例,本实施例中该基于javacard共享接口的访问控制系统通常还可以包括:

fci信息响应模块,用于在接收客户端发送的select命令后,响应fci信息至客户端;

第一随机数生成模块,用于在接收客户端发送的getchallenge命令后,生成预设长度的第一随机数并响应至客户端;

比较结果获取模块,用于在接收客户端利用rsa公钥对第一随机数加密得到的认证数据后,利用rsa公钥对应的rsa私钥对认证数据进行解密得到明文,并将明文与第一随机数进行比较,得到比较结果;

比较结果正确性判断模块,用于将比较结果发送至客户端以判断比较结果的正确性;

结束流程操作执行模块,用于若比较结果为false,则客户端执行结束流程操作;

访问控制记录密文信息接收模块,用于若比较结果为true,则接收客户端通过addregistry命令或deleteregistry命令发送的访问控制记录密文信息;其中,访问控制记录密文信息是客户端利用rsa公钥对应用标识符对应的访问控制记录信息进行加密而得到的密文信息;

应用注册信息表更改模块,用于在利用rsa私钥对访问控制记录密文信息进行解密后,依据addregistry命令或deleteregistry命令,在应用注册信息表中添加或删除访问控制记录信息。

基于上述实施例,本实施例中数据访问模块203通常包括:

数据读取请求接收单元,用于接收客户端发送的数据读取请求;

数据信息响应单元,用于将数据读取请求对应的数据信息响应至客户端。

基于上述实施例,本实施例中数据访问模块203通常包括:

第二随机数生成单元,用于在接收客户端发送的数据更新请求前,生成第二随机数并响应至客户端;

认证结果获取单元,用于在接收客户端利用3des算法或sm4算法对第二随机数加密得到的认证密文后,利用3des算法或sm4算法对认证密文进行解密得到明文数据,并将明文数据与第二随机数进行比较,得到认证结果;

权限判断单元,用于将认证结果发送至客户端以判断是否有权限对服务端进行数据更新;

结束流程操作执行单元,用于若无权限,则客户端执行结束流程操作;

数据更新操作执行单元,用于若有权限,则客户端对服务端执行数据更新操作。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。

以上对本申请所提供的一种基于javacard共享接口的访问控制方法及系统进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1