一种Java卡的应用身份验证方法及验证系统与流程

文档序号:12491086阅读:249来源:国知局
一种Java卡的应用身份验证方法及验证系统与流程

本发明涉及通信领域,尤其涉及一种Java卡的应用身份验证方法及验证系统。



背景技术:

智能卡(Smart Card)是一种带有微型处理器和存储器芯片的微型集成电路卡片,具有运算能力和信息存储功能。智能卡包括传统的智能卡和Java智能卡,与传统卡片相比,Java智能卡不仅具有平台无关性,更重要的是支持一卡多应用,且具有更高的安全性。

Java卡的出现使得一卡多应用成为可能。在同一张卡片上安装来自不同领域的应用,带来的是应用之间的数据安全问题。Java卡设计规范中定义了防火墙来对不同的应用之间的内存空间进行隔离和访问控制。默认情况下,一个应用不能访问其他应用的方法、属性,即使其方法和属性是Public。但由于业务需要,应用间难免会有需要互相调用的情况,比如支付应用,在支付环节发送验证码验证用户信息时,需要调用短信应用程序。因此,Java卡防火墙提供一套用于不同应用程序之间数据共享的机制。主要实现方式是提供共享服务的应用程序通过继承指定接口程序,可为其他应用程序提供数据。共享机制的具体流程如下描述:

1.应用程序应用B定义了一个共享接口SI,并在SI中定义将要被其他应用所访问的方法,用一个类C来实现该SI;

2.应用程序应用A要调用应用B中的某个方法,需要通过调用系统获取SI对象的方法,向JCRE(Java card run-time environment,Java卡运行时环境)请求应用B的共享接口对象引用;

3.JCRE接收到请求后,查找内部应用注册表,找到应用B,将应用A的请求以Java卡API中的函数getShareAbleInterface(AID,PARA)的方法发送给B;

4.应用B接到请求后,判断是否与A进行共享,如果同意,则返回一个共享接口对象的引用给JCRE,再转发给应用A。

可以发现,JCRE是通过AID(application identifier,应用标识)直接查找应用A和应用B的引用信息,且应用B是通过AID来判断对方的身份,这带来的安全隐患是:如果恶意应用设置了一个与A相同的AID,那么就可以实现对应用B的方法或数据的访问。若仅仅只是靠AID来验证,那安全系数比较低。考虑Java卡在安装应用时,AID应该是唯一的,即当卡片中已经存在一个应用A,那么不可能再安装一个AID与A相同的应用。然而,Java卡上的应用是可以被某些攻击进行反编译的,反编译时可以获得应用A的AID,然后再将应用A从卡片内删除,重新安装一个具有A的AID的恶意应用,这样就可以通过共享接口非法来获取应用B的数据。



技术实现要素:

本发明实施例提供一种Java卡的应用身份验证方法及验证系统,以解决现有技术中,Java卡上多个应用进行共享时,应用验证可靠性低,信息安全性差的问题。

第一方面,本发明实施例提供了一种Java卡的应用身份认证方法,应用于Java卡,包括:

第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求;

所述JCRE按预设步骤对所述第一应用进行正向身份验证;

当所述正向身份验证通过后,所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求;

所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限;

当所述第一应用具有所述共享接口引用权限时,所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息;

所述JCRE发送所述第三通信信息至所述第一应用。

进一步,上述在所述当所述第一应用具有所述共享接口引用权限时,所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息的步骤之后,还包括步骤:

所述JCRE按所述预设步骤对所述第二应用进行反向身份验证;

所述JCRE发送所述第三通信信息至所述第一应用的步骤,具体为:

当所述反向身份验证通过后,所述JCRE发送所述第三通信信息至所述第一应用。

进一步,上述所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限的步骤,包括:

所述第二应用获取共享接口权限库,所述共享接口权限库包括多个应用的应用信息;

判断所述第一应用的应用信息是否与所述共享接口权限库中的任意应用信息匹配,生成判断结果。

进一步,上述所述预设步骤,包括:

获取待验证应用的安全域中的应用密钥和标准验证参数;

根据所述密钥对所述待验证应用的安全组件进行解密,生成应用序列号;

根据预设算法对所述应用序列号进行运算,生成待验证参数;

根据所述待验证参数和所述标准验证参数,确定验证结果。

进一步,上述所述预设算法为哈希算法。

另一方面,本发明实施例还提供了一种一种Java卡的应用身份验证系统,包括:

第一发送模块,用于控制第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求;

验证模块,用于控制所述JCRE按预设步骤对所述第一应用进行正向身份验证;

第二发送模块,用于在所述正向身份验证通过后,控制所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求;

第一判断模块,用于控制所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限;

第三发送模块,用于在所述第一应用具有所述共享接口引用权限时,控制所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息;

第四发送模块,用于控制所述JCRE发送所述第三通信信息至所述第一应用。

进一步,上述所述验证模块,还用于在第二应用发送第三通信信息至所述JCRE之后,控制所述JCRE按所述预设步骤对所述第二应用进行反向身份验证;

所述第四发送模块,具体用于在当所述反向身份验证通过后,控制所述JCRE发送所述第三通信信息至所述第一应用。

进一步,上述所述第一判断模块包括:

第一获取单元,用于控制所述第二应用获取共享接口权限库,所述共享接口权限库包括多个应用的应用信息;

判断单元,用于判断所述第一应用的应用信息是否与所述共享接口权限库中的任意应用信息匹配,生成判断结果。

进一步,上述所述验证模块,包括:

第二获取单元,用于获取待验证应用的安全域中的应用密钥和标准验证参数;

第一生成单元,用于根据所述密钥对所述待验证应用的安全组件进行解密,生成应用序列号;

第二生成单元,用于根据预设算法对所述应用序列号进行运算,生成待验证参数;

确定单元,用于根据所述待验证参数和所述标准验证参数,确定验证结果。

进一步,上述所述预设算法为哈希算法。

本发明实施例通过JCRE分别与第一应用和第二应用进行通信,并在第一应用发送第一通信信息时,对第一应用进行正向身份验证,若第一应用通过正向身份验证,则表示第一应用为合法应用,将第一应用的应用信息以及共享接口引用请求发送至第二应用。本发明实施例可有效检测出第一应用被恶意篡改和替换的情况,提高第一应用和第二应用之间通信的数据安全性,防止用户隐私泄露。

附图说明

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

图1是本发明的Java卡的应用身份验证方法第一实施例的流程示意图;

图2是图1中S102的详细流程示意图;

图3是图1中S104的详细流程示意图;

图4是是本发明的Java卡的应用身份验证方法第二实施例的流程示意图;

图5是本发明的验证系统的第一实施例的结构示意图;

图6是图5中的验证模块120的结构示意图;

图7是图5中的第一判断模块140的结构示意图;

图8是本发明的验证系统的第一实施例的结构示意图。

具体实施方式

为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

当本发明实施例提及“第一”、“第二”等序数词时,除非根据上下文其确实表达顺序之意,应当理解为仅仅是起区分之用。

如图1所示,为本发明的Java卡的应用身份验证方法的第一实施例的流程示意图。该方法包括S101-S106。

S101,第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求。

在本实施例中,若第一应用在运行中需要调用第二应用,此时发送第一通信信息至JCRE,第一通信信息中包含对第二应用的共享接口引用请求。共享接口引用请求包括共享接口的名称以及共享目的。

S102,所述JCRE按预设步骤对所述第一应用进行正向身份验证。

正向身份验证的目的是验证第一应用的合法性,防止第一应用被篡改或替换后的恶意操作。

如图2所示,在S102中,所述预设步骤,包括:

S1021,获取待验证应用的安全域中的应用密钥和标准验证参数。

每个应用提供商具有一个相应的安全域,安全域负责提供各类安全服务,包括应用密钥管理、加密解密、针对应用进行数字签名的生成与验证。在应用安装到Java卡前,应用提供商使用自身持有的应用密钥SK对应用序列号SN(私密的,区别于AID)进行AES加密(一种对称密码算法),将加密后的信息作为CAP文件的一部分安装到Java卡中,这一部分称为安全组件。同时,应用提供商提供的该密钥SK存放到相应的安全域中。另外,对应用序列号SN进行一个预设算法,得到标准验证参数,存放到安全域中。具体到S102中,本步骤获取第一应用的安全域中的应用密钥和标准验证参数。

S1022,根据所述密钥对所述待验证应用的安全组件进行解密,生成应用序列号。

由于密钥的加密方法为AES加密,故对安全组件进行解密(对称密码算法的加解密使用同一个密钥),得到应用序列号。

S1023,根据预设算法对所述应用序列号进行运算,生成待验证参数。

在本实施例中,所述预设算法为哈希算法。标准验证参数为哈希值M,待验证参数为哈希值M’。

S1024,根据所述待验证参数和所述标准验证参数,确定验证结果。

当哈希值M与哈希值M’相同时,判断正向身份验证通过。否则正向身份验证失败。

S103,当所述正向身份验证通过后,所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求。

上述应用信息包括应用名称、应用类型或共享权限。

S104,所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限。

如图3所示,本实施例中,S104进一步包括:

S1041,所述第二应用获取共享接口权限库,所述共享接口权限库包括多个应用的应用信息;

上述第二应用可以内置有共享接口权限库,用于识别可共享的应用名称、应用类型以及共享权限。

S1042,判断所述第一应用的应用信息是否与所述共享接口权限库中的任意应用信息匹配,生成判断结果。

若第二应用识别第一应用的应用信息与共享接口权限库中的任意应用信息匹配,则生成第一应用具有所述共享接口引用权限的判断结果,否则第一应用不具有所述共享接口引用权限的判断结果。

S105,当所述第一应用具有所述共享接口引用权限时,所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息。

S106,所述JCRE发送所述第三通信信息至所述第一应用。

当JCRE发送第三通信信息后,第一应用可实现共享所述第二应用。

本发明实施例通过获取所述系统的快速启动应用名单,并根据该快速启动应用名单将快速启动应用的运行数据装载于系统的虚拟内存中,进而可以在接收到快速启动应用的启动指示时,从该虚拟内存中读取相应的运行数据,启动所述待启动的应用。本发明实施例,快速启动应用名单体现了用户的需求,将快速启动应用的运行数据装载于系统的虚拟内存中,可以使启动应用时可以直接从虚拟内存中读取相应运行数据,以此实现按照用户需求提升应用的启动速度。

如图2所示,为本发明的Java卡的应用身份验证方法的第二实施例的流程示意图。

S201,第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求。

S202,所述JCRE按预设步骤对所述第一应用进行正向身份验证。

S203,当所述正向身份验证通过后,所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求。

S204,所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限。

S205,当所述第一应用具有所述共享接口引用权限时,所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息。

本实施例中,步骤S201至步骤S205,与本发明的Java卡的应用身份验证方法的第一实施例的对应步骤的原理相同,此处不再赘述。

S206,所述JCRE按所述预设步骤对所述第二应用进行反向身份验证。

反向身份验证的方式可参考S1021至S1024,此处不再赘述。反向身份验证的目的在于对第三通信信息的发送主体的合法性进行身份验证,以防止恶意应用冒充第二应用发送第三通信信息,进一步提高了本发明实施例的数据安全性。

S207,当所述反向身份验证通过后,所述JCRE发送所述第三通信信息至所述第一应用。

本发明实施例通过在JCRE收到第三通信信息时,对第二应用进行反向身份验证,可避免第二应用的共享自由被恶意应用控制,进一步提高了本发明实施例的应用验证可靠性,增强了信息安全性,可有效防止用户隐私泄露。

上文对本发明的Java卡的应用身份验证方法的实施例作了详细介绍。下面将相应于上述方法的验证系统作进一步阐述。

如图5所示,为本发明的Java卡的应用身份验证系统的第一实施例的结构示意图。

本实施例中,验证系统100包括第一发送模块110、验证模块120、第二发送模块130、第一判断模块140、第三发送模块150和第四发送模块160。其中,

第一发送模块110,与验证模块120相连接,用于控制第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求。

在本实施例中,若第一应用在运行中需要调用第二应用,此时发送第一通信信息至JCRE,第一通信信息中包含对第二应用的共享接口引用请求。共享接口引用请求包括共享接口的名称以及共享目的。

验证模块120,与第二发送模块130相连接,用于控制所述JCRE按预设步骤对所述第一应用进行正向身份验证。

正向身份验证的目的是验证第一应用的合法性,防止第一应用被篡改或替换后的恶意操作。

如图6所示,验证模块120包括第二获取单元121、第一生成单元122、第二生成单元123和确定单元124。其中,

第二获取单元121,与第一生成单元122连接,用于获取待验证应用的安全域中的应用密钥和标准验证参数。

每个应用提供商具有一个相应的安全域,安全域负责提供各类安全服务,包括应用密钥管理、加密解密、针对应用进行数字签名的生成与验证。在应用安装到Java卡前,应用提供商使用自身持有的应用密钥SK对应用序列号SN(私密的,区别于AID)进行AES加密(一种对称密码算法),将加密后的信息作为CAP文件的一部分安装到Java卡中,这一部分称为安全组件。同时,应用提供商提供的该密钥SK存放到相应的安全域中。另外,对应用序列号SN进行一个预设算法,得到标准验证参数,存放到安全域中。具体到第二获取单元121中,本单元获取第一应用的安全域中的应用密钥和标准验证参数。

第一生成单元122,与第二生成单元123连接,用于根据所述密钥对所述待验证应用的安全组件进行解密,生成应用序列号。

由于密钥的加密方法为AES加密,故对安全组件进行解密(对称密码算法的加解密使用同一个密钥),得到应用序列号。

第二生成单元123,与确定单元124连接,用于根据预设算法对所述应用序列号进行运算,生成待验证参数。

在本实施例中,所述预设算法为哈希算法。标准验证参数为哈希值M,待验证参数为哈希值M’。

确定单元124,用于根据所述待验证参数和所述标准验证参数,确定验证结果。

当哈希值M与哈希值M’相同时,判断正向身份验证通过。否则正向身份验证失败。

第二发送模块130,与第一判断模块140相连接,用于在所述正向身份验证通过后,控制所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求。

上述应用信息包括应用名称、应用类型或共享权限。

第一判断模块140,与第三发送模块150相连接,用于控制所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限。

如图7所示,本实施例中,第一判断模块140包括第一获取单元141和判断单元142。其中,

第一获取单元141,与判断单元142连接,用于控制所述第二应用获取共享接口权限库,所述共享接口权限库包括多个应用的应用信息;

上述第二应用可以内置有共享接口权限库,用于识别可共享的应用名称、应用类型以及共享权限。

判断单元142,用于判断所述第一应用的应用信息是否与所述共享接口权限库中的任意应用信息匹配,生成判断结果。

若第二应用识别第一应用的应用信息与共享接口权限库中的任意应用信息匹配,则生成第一应用具有所述共享接口引用权限的判断结果,否则第一应用不具有所述共享接口引用权限的判断结果。

第三发送模块150,与第四发送模块160相连接,用于在所述第一应用具有所述共享接口引用权限时,控制所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息。

第四发送模块160,用于控制所述JCRE发送所述第三通信信息至所述第一应用。

当JCRE发送第三通信信息后,第一应用可实现共享所述第二应用。

本发明实施例通过获取所述系统的快速启动应用名单,并根据该快速启动应用名单将快速启动应用的运行数据装载于系统的虚拟内存中,进而可以在接收到快速启动应用的启动指示时,从该虚拟内存中读取相应的运行数据,启动所述待启动的应用。本发明实施例,快速启动应用名单体现了用户的需求,将快速启动应用的运行数据装载于系统的虚拟内存中,可以使启动应用时可以直接从虚拟内存中读取相应运行数据,以此实现按照用户需求提升应用的启动速度。

如图8所示,为本发明的Java卡的应用身份验证系统的第二实施例的结构示意图。本实施例中,验证系统200包括,第一发送模块210、验证模块220、第二发送模块230、第一判断模块240、第三发送模块250和第四发送模块260。其中,

第一发送模块210,与验证模块220相连接,用于控制第一应用发送第一通信信息至JCRE,所述第一通信信息包括以第二应用为对象的共享接口引用请求。

验证模块220,与第二发送模块230相连接,用于控制所述JCRE按预设步骤对所述第一应用进行正向身份验证。

第二发送模块230,与第一判断模块240相连接,用于在所述正向身份验证通过后,控制所述JCRE发送第二通信信息至所述第二应用,所述第二通信信息包括所述第一应用的应用信息以及所述共享接口引用请求。

第一判断模块240,与第三发送模块250相连接,用于控制所述第二应用根据所述应用信息判断所述第一应用是否具有共享接口引用权限。

第三发送模块250,与验证模块220相连接,用于在所述第一应用具有所述共享接口引用权限时,控制所述第二应用发送第三通信信息至所述JCRE,所述第三通信信息包括共享接口确认信息。

本实施例中,第一发送模块210、验证模块220、第二发送模块230、第一判断模块240和第三发送模块250与本发明的Java卡的应用身份验证系统的第一实施例的对应模块的原理相同,此处不再赘述。

验证模块220,与第四发送模块260连接,还用于在第二应用发送第三通信信息至所述JCRE之后,控制所述JCRE按所述预设步骤对所述第二应用进行反向身份验证。

反向身份验证的目的在于对第三通信信息的发送主体的合法性进行身份验证,以防止恶意应用冒充第二应用发送第三通信信息,进一步提高了本发明实施例的数据安全性。

第四发送模块260,用于在当所述反向身份验证通过后,控制所述JCRE发送所述第三通信信息至所述第一应用。

本发明实施例通过在JCRE收到第三通信信息时,对第二应用进行反向身份验证,可避免第二应用的共享自由被恶意应用控制,进一步提高了本发明实施例的应用验证可靠性,增强了信息安全性,可有效防止用户隐私泄露。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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