发明内容
有鉴于此,本发明提供了一种智能存储卡的控制方法,能够基于存储卡实现功能扩展并实现对其管理。
本发明提供的一种智能存储卡的控制方法,所述智能存储卡中包括存储卡控制器和物理存储介质,所述智能存储卡中还承载有用于实现增值应用的增值应用模块,该方法包括:
应用程序发送命令数据包,其中携带有用于确定该命令数据包操作对象的目标类型、用于存储卡控制器获取命令的命令编码信息;
存储卡控制器根据所述目标类型选择物理存储介质或增值应用模块为操作对象,并对所述命令编码信息解码得到对应的命令,利用解码得到的命令对选择的操作对象进行相应操作,然后向应用程序发送应答数据包,该应答数据包中携带有表示所述相应操作是否成功的应答编码信息;
其中,所述命令分为四类,按照其使用权限级别由低至高依次为第一类命令、第二类命令、第三类命令、第四类命令;
利用第二类命令对选择的操作对象进行相应操作之前,该方法进一步包括:应用程序通过与智能存储卡的第一级认证;
利用第三类命令对选择的操作对象进行相应操作之前,该方法进一步包括:应用程序通过与智能存储卡的第一级和第二级认证;
利用第四类命令对选择的操作对象进行相应操作之前,该方法进一步包括:应用程序通过与智能存储卡的第一级、第二级和第三级认证。
所述命令数据包中进一步携带有:用于表示命令数据包的数据包类型标识、用于表示该命令数据包所对应的协议版本号、该命令数据包的序列号、该命令数据包用于携带数据的数据域、该命令数据包的数据域长度;
所述应答数据包中进一步携带有:用于表示应答数据包的数据包类型标识、用于表示该应答数据包所对应的协议版本号、该应答数据包的序列号、该应答数据包的数据域、该应答数据包的数据域长度。
在所述智能存储卡中设置用于记录已通过认证等级的权限寄存器;
利用第二类至第四类命令对选择的操作对象进行相应操作之前,该方法进一步包括:存储卡控制器根据权限寄存器中记录的认证等级判断是否有权限利用当前命令对选择的操作对象进行相应操作。
所述第一类命令包括:对智能存储卡进行复位的命令、读取智能存储卡版本信息的命令、发送应用协议数据单元APDU的命令、读物理存储介质中普通区域的命令、写物理存储介质中普通区域的命令、读物理存储介质中隐藏区域的命令、写物理存储介质中隐藏区域的命令、以及分别用于认证的认证请求命令。
所述智能存储卡版本信息包括:产品分类号、产品版本号、产品序列号、生产厂家名称的编码信息、生产厂家名称的长度、生产厂家名称、协议版本号。
在所述智能存储卡中设置控制寄存器,其中记录有物理存储介质是否可读写的使能信息。
所述认证请求命令中包括第一级认证请求命令,所述第一级认证包括:
应用程序将命令数据包中的编码信息设置为认证请求命令的命令编码信息,并将包含有用于识别当前使用应用程序的用户身份的特征信息的第一级认证请求命令,携带于命令数据包的数据域中发送至存储卡控制器;
存储卡控制器对命令数据包中的特征信息与智能存储卡中存储的特征信息进行匹配,并将包含有匹配结果的第一级认证结果携带于应答数据包的数据域中返回给应用程序。
所述第一级认证请求命令中进一步包括:第一级认证请求命令的命令标识、第一级认证请求命令的长度、标识当前第一级认证交互的会话标识、以及特征信息的类型;
所述第一级认证结果中进一步包括:第一级认证结果的应答标识、第一级认证结果的长度、标识当前第一级认证交互的会话标识、认证结果为失败时的失败原因、表示是否进行密钥协商的密钥协商标识。
所述认证请求命令中包括第二级认证请求命令,所述第二级认证包括:
应用程序将命令数据包中的编码信息设置为认证请求命令的编码信息,生成第一随机数,并将包含有第一随机数的第二级认证请求命令携带于命令数据包的数据域中发送至存储卡控制器;
存储卡控制器利用预设的密钥种子对第一随机数进行哈希Hash运算得到第一Hash运算结果,将包含有第一Hash运算结果的第二级认证应答携带于应答数据包的数据域中返回给应用程序;
应用程序利用与存储卡控制器相同的密钥种子对其生成的第一随机数进行Hash运算,并将得到的第二Hash运算结果与应答数据包中的第一Hash运算结果进行比较,如果二者相同,则将表示认证成功的第二级认证结果携带于命令数据包的数据域发送至存储卡控制器。
所述第二级认证请求命令中进一步包括:第二级认证请求命令的命令标识、第二级认证请求命令的长度、标识当前第二级认证交互的会话标识、Hash算法类型标识、Hash算法密钥长度、Hash算法的密钥、密钥种子标识;
所述第二级认证应答中进一步包括:第二级认证应答的应答标识、第二级认证应答的长度、标识当前第二级认证交互的会话标识、Hash运算错误时的错误原因、第一Hash运算结果的长度。
所述认证请求命令中包括第三级认证请求命令,所述第三级认证包括:
应用程序将命令数据包中的编码信息设置为认证请求命令的编码信息,并生成第二随机数与第三级认证请求命令一起携带于命令数据包的数据域中发送至存储卡控制器;
存储卡控制器生成第三随机数,并对第三随机数与命令数据包中的第二随机数进行异或运算,然后利用智能存储卡中的预设公钥证书所对应的私钥对异或运算结果进行数字签名;将包含有所述公钥证书和数字签名的第三级认证应答携带于应答数据包的数据域中返回给应用程序;
应用程序利用应答数据包中的公钥证书对数字签名进行验证,如果验证通过,则将表示认证成功的第三级认证结果携带于命令数据包的数据域发送至存储卡控制器。
所述第三级认证请求命令中进一步包括:第三级认证请求命令的命令标识、第三级认证请求命令的长度、标识当前第三级认证交互的会话标识;
所述第三级认证应答中进一步包括:第三级认证应答的应答标识、第三级认证应答的长度、标识当前第三级认证交互的会话标识、异或运算或签名处理错误时的错误原因、数字签名的算法类型标识、第三随机数、数字签名长度、公钥证书长度。
在所述智能存储卡中设置用于记录物理存储介质读写使能信息的控制寄存器;
利用解码得到的命令对物理存储介质进行相应操作之前,该方法进一步包括:存储卡控制器根据控制寄存器中记录的读写使能信息,判断是否允许利用当前命令对物理存储介质进行读写操作。
所述使能信息包括:表示物理存储介质是否可访问的通用使能信息、表示物理存储介质的普通区域是否可写的写使能信息、表示物理存储介质的普通区域是否可读的读使能信息。
所述第二类命令包括:读控制寄存器的命令、写控制寄存器的命令、表示同时发送多个应用协议数据单元APDU的命令。
在所述智能存储卡中设置用于记录下载和预个人化使能信息的特殊控制寄存器;
利用解码得到的命令对选择的操作对象进行相应操作之前,该方法进一步包括:存储卡控制器根据特殊控制寄存器中记录的下载和预个人化使能信息,判断是否允许下载应用程序和/或是否允许预个人化。
所述第三类命令包括:读特殊控制寄存器的命令、写特殊控制寄存器的命令。
所述第四类命令包括:写智能存储卡版本信息的命令、测试智能存储卡的命令、初始化智能存储卡的命令、读智能存储卡中密钥的命令、写智能存储卡中密钥的命令。
由上述技术方案可见,本发明充分利用了存储卡现有的总线资源,在存储卡中增设包含有增值应用模块因而能够通过增值应用模块实现功能扩展,使得增值应用的实现不再受限于SIM卡,因而便于增值业务运营商的增值业务拓展,且具有较强的兼容性和可升级性。而且,本发明由应用程序通过命令数据包实现对智能存储卡的管理,从而能够保证智能存储卡的正常工作。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
图1为本发明实施例中智能存储卡的结构示意图。如图1所示,本实施例中的智能存储卡包括:物理接口、存储卡控制器、物理存储介质、智能卡芯片。其中,物理接口、存储卡控制器、物理存储介质均为现有存储卡中的结构;而智能卡芯片中则承载有用于实现增值应用的增值应用模块,能够脱离SIM卡实现各种增值应用。
其中,增值应用模块可以按照现有SIM卡的方式,经终端设备的透传与网络侧交互来实现增值应用,SIM与网络侧的交互方式为本领域技术人员所能够实现,且本发明主要针对如何控制管理智能存储卡、而不针对实现增值应用所涉及的交互,因而在本文中不再赘述。
物理存储介质和智能卡芯片中的增值应用模块均可看作智能存储卡中可访问的资源,而本发明所述的资源管理主要是指对智能卡芯片的管理。
本实施例可以通过如下方式来实现应用程序对智能卡芯片的访问:
1、开发驱动程序,以使得应用程序能够访问到物理存储介质之外的地址。如何按照上述要求开发驱动程序为本领域技术人员所能实现,在此不再赘述。
2、使用存储卡扩展协议定义专用于访问智能卡芯片的命令,且保证存储卡控制器能够识别。如何定义专用命令为本领域技术人员所能实现,在此不再赘述。
3、将智能卡芯片的地址映射在物理存储介质的预设地址,使得存储卡控制器能够根据访问地址实现对扩展应用芯片的定位,在应用程序需要访问扩展应用芯片时,存储卡控制器能够定位扩展应用芯片的地址。如何实现地址映射以及基于地址映射的定位也为本领域技术人员所能实现,在此不再赘述。
上述3种方式均能够保证应用程序能够访问到智能卡芯片,但相比之下,开发驱动程序具有较高的开发难度、需要较长的开发周期;使用存储卡扩展协议则需要修改手机终端和存储卡控制器;而地址映射的方式则不具有前两种方式的缺陷。因此,本实施例中较佳地采用地址映射的方式。
参见图2,访问智能存储卡中的物理存储介质时,应用程序与智能存储卡通过应用接口、驱动程序和终端设备进行交互。
仍参见图2,以地址映射方式保证应用程序能够访问到智能卡芯片为例,应用程序依次通过预设的接口文件、驱动程序、终端设备向智能存储卡中的智能卡芯片发送命令数据包,以供智能卡芯片中的增值应用模块执行相应的操作。相应地,智能卡芯片中的增值应用模块也会通过反向的路径向应用程序返回应答数据包。
其中,接口文件映射于物理存储介质中映射有智能卡芯片的预设地址,该接口文件遵从文件系统原理,占用磁盘空间的基本单位不是字节而是簇,即使某个接口文件只有一个字节,也会分配到一个最小单元、即一个簇。
应用接口需要向智能卡芯片发送命令数据包时,只需将该命令数据包写入在接口文件中,而写入在接口文件中的命令通过命令数据包的方式经由驱动程序、终端设备发送至智能存储卡,且该命令数据包的目标操作对象即可被设置为映射有智能卡芯片的预设地址。
然后,智能存储卡中的存储卡控制器判断命令数据包的目标操作对象是否为表示扩展应用芯片的预设地址。如果目标操作对象为该预设地址,则将接口协议程序转至对扩展应用类型标识对应的扩展应用芯片操作的入口程序,并将该命令数据包传送至对应的扩展应用芯片。
以上是对智能存储卡的结构及其基本工作原理的简要说明,下面,再针对智能存储卡的控制方法进行详细说明。
图3为本发明实施例中智能存储卡的控制方法的示例性流程图。如图3所示,该方法包括:
步骤301,应用程序向所述智能存储卡发送命令数据包,其中携带有用于确定该应用命令数据包操作对象的目标类型、用于智能存储卡中的存储卡控制器获取命令的命令编码信息。
步骤302,智能存储卡中的存储卡控制器根据目标类型选择物理存储介质或增值应用模块为操作对象,并对命令编码信息进行解码得到对应的命令,利用解码得到的命令对选择的操作对象进行相应操作。
在本实施例中,可以将命令分为四类,按照其使用权限级别由低至高依次为第一类命令、第二类命令、第三类命令、第四类命令。
智能存储卡利用第二类命令对选择的操作对象进行相应操作之前,需要应用程序通过与智能存储卡的第一级认证;
智能存储卡利用第三类命令对选择的操作对象进行相应操作之前,需要应用程序通过与智能存储卡的第一级和第二级认证;
智能存储卡利用第四类命令对选择的操作对象进行相应操作之前,需要应用程序通过与智能存储卡的第一级、第二级和第三级认证。
如果没有通过相应等级的认证,则操作失败。
为了记录已通过认证等级,可以在所述智能存储卡中设置权限寄存器,该权限寄存器的各标志位可如表1所示。
表1
在智能存储卡利用第二类至第四类命令对选择的操作对象进行相应操作之前,智能存储卡中的存储卡控制器可以根据权限寄存器中记录的认证等级判断是否有权限利用当前命令对选择的操作对象进行相应操作。
步骤303,智能存储卡中的存储卡控制器向应用程序发送应答数据包,其中携带有表示相应操作是否成功的应答编码信息。
在本步骤中,应答成功是指对成功执行了命令相应的操作;对于表示失败的应答编码信息,按照失败原因还可分为多种,如表2所示。
表2
步骤304,应用程序对应答编码信息进行解码,获知操作是否成功。
至此,本流程结束。
需要说明的是,并不是所有的命令都需要应答,因而上述流程中的步骤303~步骤304为可选的步骤。
可见,基于如图1所示的结构,只需在存储卡中加入智能卡芯片即可实现功能扩展,且通过如上所述的流程即可实现对智能存储卡的管理控制。例如对智能存储卡中的资源进行管理、对智能存储卡的身份认证和权限授予等。
在本实施例中,命令数据包和应答数据包的格式如表3所示。
名称 |
含义 |
数据字段1 |
数据包类型标识 |
数据字段2 |
协议版本号 |
数据字段3 |
目标类型 |
数据字段4 |
命令/应答编码信息 |
数据字段5 |
数据包序列号 |
数据字段6 |
数据域的长度 |
数据字段7 |
数据域 |
表3
在表1中,除了必要的目标类型、以及编码信息之外,命令数据包和应答数据包中还可以包括:数据包类型标识、数据包所对应的协议版本号、数据包的序列号、数据域、数据包的数据域长度。
数据包类型标识用于表示该应用接口数据包是命令数据包还是应答数据包,例如可用0x53AC表示命令数据包,0xAC53表示应答数据包;
协议版本号表示应用接口数据包遵循的协议版本号,例如可用0x01表示第一版协议,其余类推;
目标类型表示应用接口数据包的操作对象,例如可用0x01表示操作对象为片智能卡芯片中的增值应用模块,0x02表示操作对象为物理存储介质,其余保留做扩展对象操作;
命令/应答类型编码则包括数据域内携带的命令/应答的编码信息,用于对命令/应答解码;例如,命令数据包中的编码信息为0x0,则存储卡控制器即可根据0x0解码得到表示复位的命令;应答数据包中的编码信息为0,则终端应用程序可根据0解码得到表示成功的应答;实际上,上述方式的编码信息也可看作是命令标识,而得到编码信息的一方可以根据预设的编码信息与命令/应答的对应关系,获知对应的命令/应答;
数据包序列号可占用4个字节,例如可用第一个字节表示数据包的发送月份,从1~12(十进制),第二个字节表示数据包的发送日期,从1~31(十进制);后两个字节表示当天发送的序列号,从0x0000~0xFFFF。
数据域的长度表示数据包内带的数据长度,数据长度最大为500(十进制),如果没有数据,则为0。如果数据域的长度不为0,则数据域中可携带命令或应答的相关数据。
以下,再对各种命令及其编码信息进行详细说明。
如前所述,本实施例中可以按照命令的使用权限将所有命令划分为四个类别。
其中,第一类命令向普通用户开放;第二类命令用于高级应用、对普通用户受限开放;第三类命令用于智能存储卡厂商内部应用,基于厂商自行开发的软件对开发机构开放;第四类命令用于智能存储卡厂商内部设置,仅限于厂商内部使用。
这样,本实施例即可针对智能存储卡的生产、开发、以及用户级应用,分别对相应的功能实现控制管理。
在本实施例中,第一类命令可以包括:对智能存储卡进行复位的命令、读取智能存储卡版本信息的命令、发送应用协议数据单元(APDU)的命令、读物理存储介质中普通区域的命令、写物理存储介质中普通区域的命令、读物理存储介质中隐藏区域的命令、写物理存储介质中隐藏区域的命令、以及分别用于认证的认证请求命令。
相应地,第一类命令的编码信息可如表4所示。
表4
对于对智能存储卡进行复位的命令,命令数据包中的数据域长度为0;其对应的应答数据包中,应答编码信息表示复位是否成功,而数据域中则携带有表示复位应答的标识。
表4中所示的智能存储卡版本信息包括:产品分类号、产品版本号、产品序列号、生产厂家名称的编码信息、生产厂家名称的长度、生产厂家名称、协议版本号,具体参见表5。
表5
对于发送APDU的命令,数据域中则携带的数据为APDU。其中,APDU中可携带用于与网络侧交互以实现增值应用的数据。应用程序接收到智能存储卡发送的数据域中携带有APDU的应答数据包后,可将该APDU透传至网络侧;在接收到网络侧的APDU后,可将该APDU携带于编码信息表示发送APDU的命令数据包中发送至智能存储卡。
如前所述,由于增值应用模块可以按照现有SIM卡的方式,经终端设备的透传与网络侧交互来实现增值应用,且SIM与网络侧的交互方式为本领域技术人员所能够实现,因而APDU中涉及所述交互的相关数据在本文中不再赘述。
对于读物理存储介质中普通区域和隐藏区域的命令,数据域中则携带有地址编号;对于写物理存储介质中普通区域和隐藏区域的命令,数据域中则携带有地址编号、以及待写入的数据,具体参见表6。
表6
对于身份认证的命令,可分为第一级认证请求命令、第二级认证请求命令、以及第三级认证请求命令。
这三种认证请求命令可以如表4所示采用相同的命令编码信息,但分别在数据域中携带不同的命令标识,当然,也可采用不同的命令编码信息,这样就无需在数据域中携带命令标识。
第一级认证也可称作简单认证,该流程包括:
1a、应用程序将命令数据包中的编码信息设置为认证请求命令的命令编码信息,并将包含有用于识别当前使用应用程序的用户身份的特征信息的第一级认证请求(SimAuthRequire)命令,携带于命令数据包的数据域中发送至智能存储卡;
1b、智能存储卡中的存储卡控制器对命令数据包中的特征信息与智能存储卡中存储的特征信息进行匹配,并将包含有匹配结果的认证结果(SimAuthResult)信息携带于应答数据包的数据域中返回给应用程序。当然,本步骤也可以将应答数据包的应答编码信息设置为表示成功的应答编码信息,而不在数据域中携带AuthResult信息。如果智能存储卡中存储的特征信息在物理存储介质中,则携带有SimAuthRequire命令的命令数据包的目标操作对象表示物理存储介质,否则,表示智能卡芯片中的增值应用模块。
其中,SimAuthRequire的格式如表7所示,其中包括:SimAuthRequire的命令标识、SimAuthRequire的长度、标识当前第一级认证交互的会话标识(SessionID)、特征信息(CharInfo)、以及特征信息的类型(CharInfoCat)。
字段 |
长度 |
类型 |
SimAuthRequire的命令标识 |
2字节 |
整型 |
SimAuthRequire的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
保留字段 |
2字节 |
整型 |
特征信息 |
1字节 |
整型 |
特征信息的类型 |
变量 |
整型/字符串 |
表7
在表7中,特征信息类型至少可以包括:用户名和密码、智能存储卡的唯一标识,分别由0x00和0x01表示。特征信息为应用程序和智能存储卡间共享的信息,长度任意。
SimAuthResult的格式如表8所示,其中包括:SimAuthResult的应答标识、SimAuthResult的长度、标识当前第一级认证交互的SessionID、认证结果(VerifyResult)为失败时的失败原因、表示是否进行密钥协商的密钥协商标识(KAFlag)。
字段 |
长度 |
类型 |
应答标识 |
2字节 |
整型 |
第一级认证结果的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
失败原因 |
2字节 |
整型 |
认证结果 |
1字节 |
整型 |
密钥协商标识 |
1字节 |
整型 |
保留字段 |
2字节 |
整型 |
表8
第二级认证也可称作有限认证,该流程包括:
2a、应用程序将命令数据包中的编码信息设置为认证请求命令的编码信息,生成64bit的第一随机数,并将包含有第一随机数的第二级认证请求(LimAuthRequire)命令携带于命令数据包的数据域中发送至智能存储卡;
2b、智能存储卡中的存储卡控制器利用预设的密钥种子对第一随机数进行哈希(Hash)运算得到第一Hash运算结果,将包含有第一Hash运算结果的第二级认证应答(LimAuthResponse)携带于应答数据包数据域中返回给应用程序;如果预设的密钥种子存储于物理存储介质,则携带有LimAuthRequire命令的命令数据包的目标操作对象表示物理存储介质,否则表示智能卡芯片中的增值应用模块;
2c、应用程序利用与存储卡控制器相同的密钥种子对其生成的第一随机数进行Hash运算,并将得到的第二Hash运算结果与应答数据包中的第一Hash运算结果进行比较,如果二者相同,则将表示认证成功的第二级认证结果(LimAuthResult)携带于命令数据包的数据域发送至智能存储卡。
其中,LimAuthRequire的格式如表9所示,其中包括:LimAuthRequire的命令标识、LimAuthRequire的长度、标识当前第二级认证交互的SessionID、Hash算法类型标识(HashAlgorithm)、Hash算法密钥长度(HashKeyLen)、Hash算法的密钥(HashKey)、密钥种子标识(SeedID)、第一随机数。
字段 |
长度 |
类型 |
LimAuthRequire的命令标识 |
2字节 |
整型 |
LimAuthRequire的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
HashAlgorithm |
4字节 |
整型 |
HashKeyLen |
2字节 |
整型 |
HashKey |
变量 |
整型 |
SeedID |
2字节 |
整型 |
第一随机数 |
8字节 |
整型 |
保留字段 |
2字节 |
整型 |
表9
LimAuthResponse的格式如表10所示,包括:LimAuthResponse的应答标识、LimAuthResponse的长度、标识当前第二级认证交互的SessionID、Hash运算错误时的错误原因、第一Hash运算结果的长度、第一Hash运算结果(HashVal)。
字段 |
长度 |
类型 |
LimAuthResponse的应答标识 |
2字节 |
整型 |
LimAuthResponse的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
错误原因 |
2字节 |
整型 |
第一Hash运算结果的长度 |
2字节 |
整型 |
HashVal |
变量 |
整型 |
保留字段 |
2字节 |
整型 |
表10
第三级认证也可称作增强认证,该流程包括:
3a、应用程序将命令数据包中的编码信息设置为认证请求命令的编码信息,并生成第二随机数与第三级认证请求(EnhAuthRequire)命令一起携带于命令数据包的数据域中发送至智能存储卡;
3b、智能存储卡中的存储卡控制器生成第三随机数,并对第三随机数与命令数据包中的第二随机数进行异或运算,然后利用智能存储卡中的预设公钥证书所对应的私钥对异或运算结果进行数字签名;将包含有公钥证书和数字签名的第三级应答(EnhAuthResponse)携带于应答数据包数据域中返回给应用程序;如果预设的公钥证书及其对应的私钥存储于物理存储介质,则携带有EnhAuthRequire命令的命令数据包的目标操作对象表示物理存储介质,否则表示智能卡芯片中的增值应用模块;
3c、应用程序利用应答数据包中的公钥证书对数字签名进行验证,如果验证通过,则将表示认证成功的第三级认证结果(EnhAuthResult)携带于命令数据包的数据域发送至智能存储卡。
其中,EnhAuthRequire的格式如表11所示,包括:EnhAuthRequire的命令标识、EnhAuthRequire的长度、标识当前第三级认证交互的SessionID、第二随机数。
字段 |
长度 |
类型 |
EnhAuthRequire的命令标识 |
2字节 |
整型 |
EnhAuthRequire的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
第二随机数 |
8字节 |
整型 |
保留字段 |
2字节 |
整型 |
表11
EnhAuthResponse的格式如表12所示,包括:EnhAuthResponse的应答标识、EnhAuthResponse的长度、标识当前第三级认证交互的SessionID、异或运算或签名处理错误时的错误原因、数字签名的算法类型标识(SignAlgorithm)、第三随机数、数字签名长度(SignLen)、数字签名(Signature)、公钥证书长度(PKCertificateLen)、公钥证书(PKCertificate)。
字段 |
长度 |
类型 |
EnhAuthResponse的应答标识 |
2字节 |
整型 |
EnhAuthResponse的长度 |
2字节 |
整型 |
SessionID |
2字节 |
整型 |
错误原因 |
2字节 |
整型 |
SignAlgorithm |
2字节 |
整型 |
第三随机数 |
8字节 |
整型 |
SignLen |
2字节 |
整型 |
Signature |
变量 |
整型/字符串 |
PKCertificateLen |
2字节 |
整型 |
PKCertificate |
变量 |
整型/字符串 |
保留字段 |
2字节 |
整型 |
表12
上述各级认证之间的关系可以如图4所示。智能存储卡开始与应用程序交互后,便可以使用第一类命令以实现普通应用;经过第一级认证后可使用第二类命令以实现高级应用,同时可以使用第一类命令以实现普通应用;经过第二级认证后可使用第三类命令以实现厂商内部应用并最终交由发卡商使用,同时可使用第二类命令以实现高级应用,也可以使用第一类命令以实现普通应用;经过第三级认证后可使用第四类命令以实现厂商内部应用并由厂商自己使用,同时可使用第三类命令以实现厂商内部应用并最终交由发卡商使用,也可使用第二类命令以实现高级应用,还可使用第一类命令以实现普通应用。
上述各级认证所涉及的加解密、Hash运算、以及密钥协商等过程均为本领域技术人员所能够实现,在本文中不再赘述。
在本实施例中,可以在智能存储卡中设置用于记录物理存储介质读写使能信息的控制寄存器。这样,在利用解码得到的命令对物理存储介质进行相应操作之前,可以根据控制寄存器中记录的读写使能信息,判断是否允许利用当前命令对物理存储介质进行读写操作。
控制寄存器中表示读写使能信息的各标志位可以如表13所示,包括:表示物理存储介质是否可访问的通用使能信息、表示物理存储介质的普通区域是否可写的写使能信息、表示物理存储介质的普通区域是否可读的读使能信息。
表13
而本实施例中的第二类命令则主要是针对控制寄存器的,具体包括:读控制寄存器的命令、写控制寄存器的命令,第二类命令还可以包括表示同时发送多个APDU的命令。
第二类命令的命令编码信息参见表14。
表14
此外,在本实施例中,还可以在智能存储卡中设置用于记录下载和预个人化使能信息的特殊控制寄存器。这样,在利用解码得到的命令对选择的操作对象进行相应操作之前,可以根据特殊控制寄存器中记录的下载和预个人化使能信息,判断是否允许下载应用程序和/或是否允许预个人化。对于如何实现预个人化为本领域技术人员所能够实现,在此不再赘述。
特殊控制寄存器中表示读写使能信息的各标志位可以如表15所示。
表15
而本实施例中的第三类命令则主要是针对特殊控制寄存器的,具体包括:读特殊控制寄存器的命令、写特殊控制寄存器的命令。第三类命令的命令编码信息参见表16。
表16
本实施例中的第四类命令包括:写智能存储卡版本信息的命令、测试智能存储卡的命令、初始化智能存储卡的命令、读智能存储卡中密钥的命令、写智能存储卡中密钥的命令。第四类命令的编码信息参见表17。
表17
其中,测试智能存储卡的命令可针对不同的测试对象,对应不同对象的测试命令具有不同的测试命令标识,具体参见表18。
表18
对于如何实现回环测试为本领域技术人员所能够实现,在此不再赘述。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。