利用智能卡为外部设备应用提供加解密服务的方法

文档序号:7921784阅读:425来源:国知局
专利名称:利用智能卡为外部设备应用提供加解密服务的方法
技术领域
本发明涉及智能卡领域,更具体地,涉及利用智能卡为外部设备应用提供加解密
服务的方法以及包括这种智能卡的设备。
背景技术
当前,智能卡广泛应用在电信、金融等很多领域中。安全性是智能卡应用的基础, 主要包括以下几个方面智能卡在物理结构上的不可攻破,智能卡在软件体系中的健壮性, 以及基于不可攻破算法的加解密服务。目前,加解密服务越来越受到人们的关注,成为智能 卡应用的重要内容。通常,在智能卡芯片在设计过程中,会加入硬件协处理器专门为加解密 服务提供支持,使运算速度更快,加解密安全性更高。当前的智能卡中的加解密服务一般都 是提供给卡内操作系统以及卡内应用使用的。 智能卡的一个例子是嵌入到诸如手机、PDA等的移动终端中使用的电信sim卡。随
着智能卡应用的发展,将有越来越多的智能卡可以与各种类型的终端一起使用。很多终端 设备本身没有加解密功能,或者即使终端设备上的应用程序能够提供加解密服务,由于处
理资源的限制,由终端上的应用程序所提供的加解密服务可能比较耗时并且安全级别低。 因此需要一种为上述终端设备提供安全的加解密服务的手段。

发明内容
考虑到现有技术的上述问题,本发明提供了一种利用智能卡为外部设备应用提供 加和/或解密服务的方法,包括与智能卡连接的外部设备上的应用模块向所述智能卡中 的加解密代理模块发送加和/或解密命令;所述加解密代理模块根据所述加和/或解密命 令调用所述智能卡中的加解密服务模块来执行加和/或解密操作;以及所述加解密代理模 块将执行所述加和/或解密操作所得到的加和/或解密结果返回给所述外部设备上的应用 模块。 另一方面,本发明提供了一种与智能卡连接的设备,该设备包括应用模块,所述应 用模块向所述智能卡发送加和/或解密命令,所述智能卡进一步包括加解密服务模块,用 于提供加和/或解密服务;以及加解密代理模块,用于根据所述加和/或解密命令调用所述 加解密服务模块来执行加和/或解密操作,并且将执行所述加和/或解密操作所得到的加 和/或解密结果返回给所述应用模块。 另一方面,本发明提供了一种智能卡,包括加解密服务模块,用于提供加和/或 解密服务;加解密代理模块,用于接收从所述智能卡外部的应用模块向所述智能卡发送的 加和/或解密命令,根据所述加和/或解密命令调用所述加解密服务模块来执行加和/或 解密操作,并且将执行所述加和/或解密操作所得到的加和/或解密结果返回给所述应用 模块。 通常智能卡中具有的加解密服务模块具备专用于加解密和抗破坏的特性,例如该 加解密服务模块利用专用的加解密协处理器提供加解密服务,因此具有优化的处理性能和较高的安全性,通过本发明的上述技术方案,本发明提供了一种实用并且有效的方式来利 用智能卡芯片内的加解密服务为不同种类的外部终端设备提供安全的加解密服务。


在下文中结合附图对本发明具体实施例进行详细的说明,其中
图1示出了包含智能卡的终端设备的示意图; 图2示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的一种实现方式的示意框图; 图3示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的方法的流程图; 图4示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的另一种实现方式的示意框图; 图5示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的另一种实现方式的示意框图; 图6示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的另一种实现方式的示意框图; 图7示出了按照本发明一个优选实施例、利用智能卡为外部设备应用提供加和/ 或解密服务的另一种实现方式的示意框图;以及 图8示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的方法的流程图。
具体实施例方式
在下文中,将参考附图通过具体实施例对本发明进行描述,应该注意,本发明并不 限于以下描述的实施例。在下面说明的实施例中,以基于诸如java卡的多应用智能卡技术 进行说明,但是应该注意,本发明并不限于Java卡的应用。 图1是包含智能卡的终端设备10的示意图,该终端设备诸如是手机、PDA、游戏机、 便携式计算机等能够运行应用程序的设备,并且该终端设备上插入有一个诸如java卡的 智能卡,其中该智能卡中提供了专门的加解密服务模块。 图2示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的一种实现方式的示意框图。如图2所示,应用模块110例如是与智能卡相连的外 部终端设备10上运行的应用程序。该应用模块110需要进行加和/或解密运算,该加和/ 或解密运算例如是RSA、DSA、 AES、3DES、DES、RC2算法以及MD5、 SHA1、 SHA_256、 SHA-384和 SHA-512散列算法等各种本领域已知的加解密算法。智能卡20与外部终端设备10相连,包 括加解密代理模块210和加解密服务模块220,其中,加解密服务模块220能够提供上述全 部或一部分加解密运算功能,并且不限于上述加解密运算。 图3示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解 密服务的方法的流程图。在步骤S310中,应用模块110向智能卡20中的加解密代理模块 210发送加和/或解密命令。例如,应用模块110要对一段数据进行DES加密操作,则该应 用模块110可以将执行DES加密操作所需要调用的方法、与该方法相关的信息、以及相应的参数编码在加密命令中,该要调用的方法例如包括设置密钥、执行DES加密、或执行其它的加密或解密,该参数例如包括加密密钥、要解密的数据等。在步骤S320,加解密代理模块210根据应用模块发送的加密命令,调用智能卡20中的加解密服务模块220来执行相应的加密操作。例如,加解密代理模块210根据加密命令中包含的"要调用的方法"调用加解密服务模块220中相应的方法,比如设置密钥、执行DES加密等。在步骤S330,加解密代理模块210将执行上述加密操作所得到的加密结果返回给外部设备上的应用模块110。按照上面相同的流程,也可以执行解密操作。 图4示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解密服务的一种具体实现方式的示意框图。如图4所示,通过在java卡应用系统之上的小应用程序(即plet)4210来实现图2中所示的加解密代理模块。该小应用程序4210与应用模块4110之间通过自定义的应用程序协议数据单元(APDU)命令进行通信。具体而言,应用模块4110生成自定义的APDU命令,并将该APDU命令经由所述智能卡的操作系统发送给加解密代理模块4210。加解密代理模块4210根据接收到的APDU命令中包含的要调用的方法以及相应的参数等信息,调用加解密服务模块中相应的加和/或解密方法来进行相应的加和/或解密操作,并将结果通过自定义的APDU命令返回到卡外的应用模块4110。
图5示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解密服务的另一种具体实现方式的示意框图。与图4所示的实施例不同,如图5所示,通过修改Java卡的应用系统,以底层程序5210来实现图2中所示的加解密代理模块,该底层程序5210与应用模块150之间通过自定义的应用程序协议数据单元(APDU)命令进行通信。这样做的好处是加解密代理模块510实现在操作系统中,可以直接根据APDU命令调用加解密服务模块520中相应的加和/或解密服务,具有更高的执行效率和安全性。
图4和5中举例说明的具体实现方式,需要智能卡外的应用模块知道自定义APDU命令的构造的具体细节,在开发该应用模块的过程中需要了解自定义APDU的每个字段的含义,这样对设备应用程序的开发带来了一定的难度。 图6示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解密服务的另一种具体实现方式的示意框图。该实现方式利用java卡支持的远程方法调用(RMI)机制,在Java卡内实现一个远程服务应用,并且定义一个远程调用接口 6220,供Java卡外的应用程序使用。如图6所示,通过在java卡应用系统之上的RMI小应用程序6210来实现图2中所示的加解密代理模块210。 Java卡外的终端设备上的应用模块6110通过与RMI小应用程序6210关联的自定义远程调用接口 ,将要调用的方法和相应的参数输入到通用RMI桩(Stub)模块6230,该通用的RMI桩模块解析与该要调用的方法相关的信息,并将该要调用的方法、相关的信息以及相应的参数编码在APDU命令中,然后将该APDU命令经由Java卡的操作系统发送到作为加解密代理模块的RMI小应用程序6210。加解密代理模块6210根据接收到的APDU命令调用加解密服务模块6220中相应的加和/或解密服务来进行相应的加和/或解密操作,并将加和/或解密结果通过APDU命令经由该RMI桩模块和该远程调用接口返回给应用模块6110。 图7示出了按照本发明一个实施例、利用智能卡为外部设备应用提供加和/或解密服务的另一种具体实现方式的示意框图。如图7所示,通过修改Java卡应用系统,以RMI底层程序7210来实现图2中所示的加解密代理模块210,并且由系统开发者提供与作为加解密代理模块的RMI底层程序7210相关联的远程加解密服务应用程序接口 (API) 7130以 及相应的远程加解密服务API实施模块7140,该远程加解密服务API对于Java卡外的应用 模块来说是公开的,该应用模块可以通过调用该公开的远程加解密服务API来使用java卡 中提供的加解密服务。 在一个具体实现中,Java卡外的终端设备上的应用模块7110或7120调用上述 公开的远程加解密服务API 7130中的方法并且设置与该方法对应的参数,远程加解密API 实施模块7140解析与该调用的方法相关的信息,并将所解析的信息、方法和对应的参数编 码到APDU命令中,然后将所编码的APDU命令发送到作为加解密代理模块的RMI底层程序 7210。加解密代理模块7210然后根据接收到的APDU命令调用加解密服务模块7220中相 应的加和/或解密服务来进行相应的加和/或解密操作,并将结果通过APDU命令经由远程 加解密服务API实施模块7140返回给应用模块7110或7120。 图7所示的实施方式相对于图6所示的实施方式具备进一步的优点。首先,由于 加解密代理模块是在java卡操作系统中实现的,并且由操作系统的开发者提供了与之对 应的远程加解密服务API和远程加解密服务API实施模块,从而为应用程序提供了公开的 远程加解密服务API来使用java卡中所提供的加解密服务。其次,支持java卡的通用 RMI stub通常不具备加扰、加密功能,因此在APDU命令传送过程中可能存在风险,而利用 系统开发者提供的远程加解密服务API实施模块,可以对APDU命令进行加扰,或者在形成 APDU命令之前对需要传送的参数进行加扰。本领域技术人员知道,在Java卡的环境中,利 用APDU命令进行应用模块和加解密代理模块之间的通信,当采用其他技术时,可以采用其 他的消息格式来进行应用模块和加解密代理模块之间的通信。 图8示出了基于图7所示的具体实现方式描述的利用智能卡为外部设备应用提供 加和/或解密服务的方法的流程图。在该实施例中,不妨假设Java卡外的应用模块7110 需要利用智能卡内的硬件协处理器来完成一次DES加密功能。 在步骤S810中,应用模块7110调用公开的远程加解密服务API 7130中的方法并 且设置相应的参数。例如,在最开始应用模块7110要调用的方法为"设置密钥",例如函数 "DES. SetKey",并且所设置的相应的参数为一个DES密钥。 在步骤S820中,远程加解密服务API 7130将DES密钥传输给远程加解密服务API 实施模块7140。该API实施模块7140接下来要执行以下任务解析与该"设置密钥"方法 相关的信息,例如要远程调用的加解密包、类、方法、以及参数等;加扰要传送的信息;以及 将加扰后的传送信息发送至Java卡内。 在步骤S830中,远程加解密服务API实施模块7140根据应用模块7110通过API
7130所调用的不同方法确定需要传送到Java卡的内容,例如,包、类、方法、参数内容为加
密包、DES类、设置密钥方法以及所设置的密钥参数,然后模块7140将这些内容编码到一定
格式的消息中,例如,在Java卡的环境中,将这些内容编码到APDU命令中。 在步骤S840中,远程加解密服务API实施模块7140按照预定的方式对该APDU命
令进行加扰。 在步骤S850中,远程加解密服务API实施模块7140将加扰的APDU命令发送到 Java卡系统。 在步骤S860中,Java卡操作系统中的作为加解密代理模块的RMI底层程序7110接收该APDU命令。 在步骤S870中,该加解密代理模块7210对所接收的APDU命令进行解扰。
在步骤S880中,该加解密代理模块7210根据远程加解密服务API实施模块7140在步骤S830中所采取的APDU命令编码规则,确定应用模块7110需要调用的方法、诸如该方法所在的包、类等与该方法相关的信息、以及相应的参数,此时,该方法为"设置DES密钥",相应的参数为DES密钥,相关的信息例如为加密包、DES类等。 在步骤S890中,该加解密代理模块7210调用加解密服务模块7220的"设置DES密钥"方法,将DES密钥设置到硬件协处理器中。 在步骤S895中,该加解密代理模块7210将响应APDU命令返回到远程加解密服务
API实施模块7140,并且该模块7140将相应的响应结果返回给应用模块7110。 接下来,可以重复上述步骤S810-S895,以继续执行加和/或解密操作。 例如,在步骤S810中,应用模块7110要执行的操作为利用先前设置的密钥对一段
数据进行DES加密,因此调用公开的远程加解密服务API7130中的"执行DES加密"方法并
且设置相应的参数,该"执行DES加密"方法例如是函数"DES. Encrypt",并且所设置的相应
的参数为待加密的数据。 在步骤S820中,远程加解密服务API 7130将待加密的数据传输给远程加解密服务API实施模块7140。 在步骤S830中,远程加解密服务API实施模块7140根据所调用的"执行DES加密"方法解析所要调用的加解密包、类、方法、参数,此时,API实施模块7140根据加密包中DES类的执行DES加密方法以及所设置的待加密数据参数确定要传送到Java卡的内容,并将这些内容编码到APDU命令中。 在步骤S840中,远程加解密服务API实施模块7140按照预定的方式对该APDU命令进行加扰。 在步骤S850中,远程加解密服务API实施模块7140将加扰的APDU命令发送到Java卡系统。 在步骤S860中,Java卡操作系统中的作为加解密代理模块的RMI底层程序7210接收该APDU命令。 在步骤S870中,该加解密代理模块7210对所接收的APDU命令进行解扰。
在步骤S880中,该加解密代理模块7210根据远程加解密服务API实施模块7140在步骤S830中所采取的APDU命令编码规则,确定应用模块7110需要调用的方法、与该方法相关的信息、以及相应的参数,此时,该方法为执行DES加密,相应的参数为待加密的数据。 在步骤S890中,该加解密代理模块7210调用加解密服务模块的"执行DES加密"的方法,由硬件协处理器对所传送的数据进行DES加密。 在步骤S895中,该加解密代理模块7210将加密操作的结果数据编码到响应APDU命令中,并将该响应APDU命令返回到远程加解密服务API实施模块7140,并且该模块7140将相应的响应结果返回给应用模块7110。 如上所述,为了给Java卡外的应用模块提供对数据的加和/或解密服务,可以重复执行步骤S810到步骤S895。本领域技术人员应该理解,虽然上面以DES加密为例描述
8了上述实施例,但是上述方法可以用于各种类型的加和/或解密操作,并且上述操作过程 只是一个具体实施例,可以进行各种适当的修改和变形。例如,可以以APDU命令为单位对 每次传送的数据进行加解密操作,也可以在java卡中缓存多次传送的数据,集中进行加解 密操作,例如,也可以不执行由远程加解密API实施模块在步骤S803中执行的解析过程,而 在APDU命令中只传送方法、密钥、数据这样的参数,而由加解密代理模块来执行上述解析 过程。为了便于理解的目的,具体描述了上述操作过程的细节,但是本领域技术人员清楚本 发明的实现不必包含所有的细节。本领域技术人员在所公开实施例的基础上,通过改变某 些步骤的执行顺序,添加、合并、拆分某些步骤,可以对上述过程进行适当地修改。
上面各个实施例中所公开的方法,可以使用软件的方式来实现。
本领域技术人员应当理解,在本发明上述实施例的启示下,可以得到本发明实施 例的各种变形,并且在不偏离本发明的精神或范围的情况下,本文中所定义的一般原理也 可以应用到其他实施例中。因此本发明并不局限于本文中所示的实施例,而且要求与本文 中所公开的原理和新颖特征相一致的最广的范围。
权利要求
一种利用智能卡为外部设备应用提供加和/或解密服务的方法,包括与智能卡连接的外部设备上的应用模块向所述智能卡中的加解密代理模块发送加和/或解密命令;所述加解密代理模块根据所述加和/或解密命令调用所述智能卡中的加解密服务模块来执行加和/或解密操作;以及所述加解密代理模块将执行所述加和/或解密操作所得到的加和/或解密结果返回给所述外部设备上的应用模块。
2. 如权利要求1所述的方法,其中,所述发送加和/或解密命令的步骤进一步包括由 与所述加解密代理模块相关联的远程加解密应用程序接口 API实施模块生成所述加和/或 解密命令,并将所述加和/或解密命令发送到所述加解密代理模块。
3. 如权利要求2所述的方法,其中,所述生成加和/或解密命令的步骤进一步包括所 述应用模块调用与所述加解密代理模块相关联的远程加解密API中的方法并且设置与该 方法对应的参数,所述远程加解密API实施模块将所述方法和对应的参数编码到所述加和 /或解密命令中。
4. 如权利要求2所述的方法,其中,所述生成加和/或解密命令的步骤进一步包括所 述应用模块调用与所述加解密代理模块相关联的远程加解密API中的方法并且设置与该 方法对应的参数,所述远程加解密API实施模块解析与所述方法相关的信息,并将所述信 息、所述方法和所述对应的参数编码到所述加和/或解密命令中。
5. 如权利要求3或4所述的方法,其中,所述参数包括以下至少之一 加和/或解密密 钥、待加和/或解密的数据。
6. 如权利要求4所述的方法,其中,所述信息包括与所述方法相关的要调用的加解密 包、类。
7. 如权利要求3或4所述的方法,其中,所述生成加和/或解密命令的步骤进一步包 括所述远程加解密API实施模块对所述加和/或解密命令进行加扰。
8. 如权利要求7所述的方法,其中,所述执行加和/或解密操作的步骤进一步包括加 解密代理模块对所接收到的所述加和/或解密命令进行解扰。
9. 如权利要求3或4所述的方法,其中,所述执行加和/或解密操作的步骤包括所述 加解密代理模块根据接收到的加和/或解密命令中包含的所述方法和对应的参数,调用所 述加解密服务模块中的相应方法,以针对所述对应的参数执行加和/或解密操作。
10. 如权利要求1所述的方法,其中,所述智能卡包括Java卡,并且所述加和/或解密 命令包括应用程序协议数据单元APDU命令。
11. 一种与智能卡连接的设备,包括应用模块,所述应用模块向所述智能卡发送加和/或解密命令,所述智能卡进一步包括加解密服务模块,用于提供加和/或解密服务;加解密代理模块,用于根据所述加和/或解密命令调用所述加解密 服务模块来执行加和/或解密操作,并且将执行所述加和/或解密操作所 得到的加和/或解密结果返回给所述应用模块。
12. 如权利要求11所述的设备,其中,所述设备还包括与所述加解密代理模块相关联的远程加解密应用程序接口 API实施模块,该远程加解密应用程序接口 API实施模块生成 所述加和/或解密命令,并将所述加和/或解密命令发送到所述加解密代理模块。
13. 如权利要求12所述的设备,其中,所述设备还包括与所述加解密代理模块相关联 的远程加解密API,所述应用模块调用所述远程加解密API中的方法并且设置与该方法对 应的参数,所述远程加解密API实施模块解析与所述方法相关的信息,并将所述信息、所述 方法和所述对应的参数编码到所述加和/或解密命令中,并且对所述加和/或解密命令进 行加扰。
14. 一种智能卡,包括加解密服务模块,用于提供加和/或解密服务;加解密代理模块,用于接收从所述智能卡外部的应用模块向所述智能卡发送的加和/ 或解密命令,根据所述加和/或解密命令调用所述加解密服务模块来执行加和/或解密操 作,并且将执行所述加和/或解密操作所得到的加和/或解密结果返回给所述应用模块。
全文摘要
公开了一种利用智能卡为外部设备应用提供加和/或解密服务的方法,包括与智能卡连接的外部设备上的应用模块向所述智能卡中的加解密代理模块发送加和/或解密命令;所述加解密代理模块根据所述加和/或解密命令调用所述智能卡中的加解密服务模块来执行加和/或解密操作;以及所述加解密代理模块将执行所述加和/或解密操作所得到的加和/或解密结果返回给所述外部设备上的应用模块。
文档编号H04L29/06GK101753520SQ20081017833
公开日2010年6月23日 申请日期2008年11月28日 优先权日2008年11月28日
发明者李丞倍, 李华炜, 李相研, 罗栋元, 金亨一 申请人:爱思开电讯投资(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1