存取方法

文档序号:6475053阅读:220来源:国知局
专利名称:存取方法
技术领域
本发明是有关于一种插入PC和携带电话等终端的存储卡,以及对存储卡的存取方法。
背景技术
过去,存储卡的用途是在于插入终端,使终端能够存储数据。以下举出现有的存储卡的一个例子(如,特愿2003-91704号公报)。
卡具备从终端接受各种命令并对命令做出响应的命令端子(CMD列),以及接受数据的输入并进行数据输出的数据端子(DAT列)。
在如第1图所示的现有存储卡的例子中,端子4602为CMD列,而端子4607、4608、4609为DAT列,分别为DAT0、DAT1、DAT2。而端子C2-01是兼用为数据输入/输出用(CD)和卡检测用(CD)的CD/DAT3。在DAT0~DAT3,有仅使用DAT0的模式,以及同时使用DAT0~3而实现比仅使用DAT0时高4倍的传输速度的模式。
接着,使用第2图说明现有卡的卡内模块结构。
卡内模块由下述部件构成处理命令接收部件4701,与CMD列4602连接,用于接收命令和发送响应;数据发送/接收部件4702,与DAT列4607、4608、4609、C2-01连接,进行数据的发送/接收;存储区域4704;以及存储区域存取部件4703,根据接收的命令对存储区域4704进行数据的读写。
接下来说明在现有存储卡的数据读写时的处理动作。这里假设数据的输出是设定为仅使用DAT0端子4607的模式,但也可为合并使用DAT1端子4608、DAT2端子4609、DTA3端子4610的模式。
首先,终端向卡的CMD列4602发送数据读取命令。该读取命令是为如图7所示的格式,由6位的命令码401和32位的命令自变量402构成。数据读取命令中的命令自变量存储读取开始地址。
从终端接收到命令的处理命令接收部件4701参照命令码401识别出其为数据读取命令。
然后处理命令接收部件4701参照命令自变量402调查所指定的地址是否正确,也就是调查指定的地址是否位于卡对应的范围内,若地址为错误时则返回意指错误的响应码。若地址正确则返回意指正常的响应码。
处理命令接收部件4701将响应送回终端后,对于存储区域存取部件4703向指定的地址进行读取请求。
存储区域存取部件4703从存储区域4704的指定地址读取数据,发送到数据发送/接收部件4702。
数据发送/接收部件4702通过DAT0列4607向终端进行读取数据的输出。
如上述般的存储卡能够由终端指定地址自由地进行卡的读写。
在如上述的卡中,在闪存的特定区域设定存取限制来用作安全保护区域,在想仅使许可存取的特定终端能够进行存取时,上述文献中的卡能够进行使用IC卡命令的灵活认证。然而,IC卡的标准命令格式的APDU(Applicationprotocol data unit,应用协议数据单元)仅能够进行256字节的数据发送/接收,并且因为是为半双工协议,所以每当主机进行命令发送时必须进行响应接收,而难以进行高速数据传输。因此可考虑使用IC卡命令以灵活配合安全政策的方式进行认证处理后,使用存储卡命令进行数据传输的方式,但该方式却难以确认IC卡命令发行者和发行存储卡命令的主机上的应用是否相同。
因此,将在使用IC卡命令的认证处理过程中生成的信息用作验证IC卡命令和存储卡命令的发行者是否一致的验证数据包含在存储卡命令时,也就是说,将存取区域指定信息(要存取的地址等)和认证用的验证数据包含在命令自变量中,而数据读取命令的命令自变量402的大小是如上述般地固定为32位,因此若为提高安全性而增加认证用验证数据的大小,就会使存取区域指定信息的长度变短而使存取可能的区域受到限制。相对地,如果减小验证数据的大小,则会降低安全性。
若为解决上述问题而改变现有的数据读取命令格式,则有可能导致无法对现有的存储卡进行存取。
另外,如果使现有的数据读取命令和对设有安全保护区域的存储卡的数据读取命令独立并存,则在终端侧必须视存储卡的种类而进行切换,使对存储卡的存取复杂化,不利终端使用。因此,虽然必须分别定义为发送验证数据的命令和为进行数据的读取或写入的存储卡命令,将两个命令组合向安全保护区域进行存取,但却无法在两个命令之间确认命令发行者是否一致。

发明内容
本发明的目的在于解决上述问题,而该目的通过下列方式达成存取在存储卡内没有存取限制的区域时使用由上述数据读取命令代表的存储卡命令,对于设有存取限制的安全保护区域则首先由指定存取区域的存储卡命令向存储卡发送存取区域指定信息,然后向存储卡发送在主机和存储卡之间使用IC卡命令进行灵活的认证处理时所共享或事先共享的密钥信息,以及安全保护区域的读取或写入用存储卡命令,该安全保护区域的读取或写入用存储卡命令包含使用上述存取区域指定信息生成的认证用的验证数据,由此,使命令结构为对安全保护区域的数据写入和从安全保护区域的数据读取的两个阶段,不需要变更存储卡命令的格式,而且即使命令自变量较少也不会使安全性降低,从而提供了一种能够对安全保护区域进行存取的存取方法。
根据本发明的一个实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行向所述存储装置发送指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证信息,并且以所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行和所述存储装置将有关对该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,发送指定所述存储装置的存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证信息,并且以所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行和所述存储装置将验证用密钥共享化的步骤;发送指定所述存储装置的存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行和所述存储装置将有关该存储装置的可存取区域的可区域信息共享化的步骤;和所述存储装置将与所述可存取区域对应的验证用密钥共享化的步骤;参照所述可能区域信息,发送指定所述存储装置的存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密的验证数据合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行使用第一处理系统命令,和所述存储装置将有关该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,使用第二处理系统命令发送指定所述存储装置的存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证信息,使用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行使用第一处理系统命令,和所述存储装置将验证用密钥共享化的步骤;使用第二处理系统命令发送指定所述存储装置的存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制的非反窜改性的第二区域;以及所述机器能够存取的第三区域;并具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;该方法包括所述机器执行使用第一处理系统命令,和所述存储装置将有关该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,使用第二处理系统命令发送指定所述第二区域的存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证信息,使用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制的非反窜改性的第二区域;以及所述机器能够存取的第三区域;并具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;该方法包括所述机器执行使用第一处理系统命令,和所述存储装置将验证用密钥共享化的步骤;使用第二处理系统命令发送指定对所述第二区域的存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存储装置是一种被机器读写的存储装置,包括处理命令接收部件,在接收指定存取区域的指定信息的同时,合并接收基于所述指定信息的验证信息以及读取或写入命令;指定信息验证部件,使用所述验证信息对所述指定信息进行验证处理;存储区域,存储数据;存储区域存取部件,当所述验证处理成功时,根据所述处理命令对所述存储区域的所述指定区域进行读取或写入;数据发送部件,将所述存储区域存取部件读取的数据发送到所述机器;以及数据接收部件,从所述机器接收写入数据。
根据本发明的其它实施例,信息机器是一种能够读写存储装置的信息机器,包括指定信息决定部件,决定读取或写入的区域,并决定指定所述区域的指定信息;验证信息生成部件,基于所述指定信息进行所述验证信息的生成处理;处理命令发送部件,发送所述指定信息,并且合并发送所述验证信息以及读取或写入的处理命令;数据发送部件,当所述处理命令为写入时,向所述存储装置发送数据;数据接收部件,当所述处理命令为读取时,从所述存储装置接收数据;以及数据存储部件,存储传输到所述存储装置的数据或从所述存储装置接收的数据。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行发送指定对所述存储装置的存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,该方法包括所述机器执行使用第一处理系统命令将有关对所述存储装置的可存取区域的可区域信息共享化的步骤;使用第一处理系统命令将与所述可存取区域对应的验证用密钥共享化的步骤;使用第二处理系统命令发送指定对所述存储装置的存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;而所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
根据本发明的其它实施例,存取方法是一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制并且为大容量的非反窜改性的第二区域;以及所述机器能够存取并且为大容量的第三区域;并具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;该方法包括所述机器执行使用第一处理系统命令,和所述存储装置将有关对该存储装置的可存取区域的可区域信息共享化的步骤;使用第一处理系统命令,将与所述可存取区域对应的验证用密钥共享化的步骤;使用第二处理系统命令发送指定对所述第二区域的存取区域的指定信息的步骤;以及使用第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥将有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;另外,所述存储装置执行接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。


图1是显示现有的存储卡的端子结构图;图2是显示现有的存储卡内的模块结构图;图3是显示本发明的实施例1中存储卡的内部模块结构图;图4是显示本发明的实施例1中存储卡的端子结构图;图5是显示本发明的实施例1中终端的内部结构图;图6是显示本发明的实施例1中在卡和终端之间进行的处理概要图;图7是显示本发明的实施例1中APDU的发送/接收方法的顺序的示意图;图8是显示本发明的实施例1中响应APDU的发送处理的顺序的示意图;图9是显示本发明的实施例1中存储卡的命令格式的示意图;图10是显示本发明的实施例1中闪存的内部结构图;图11是显示本发明的实施例1中的安全保护区域的内部结构图;图12是显示本发明的实施例1中安全保护区域的各应用用区域的内部结构图;图13是显示本发明的实施例1中对话密钥共享以及可存取区域共享顺序的示意图;图14是为详细说明本发明的实施例1中在第13图的步骤903的处理的流程图;图15是为详细说明本发明的实施例1中在第13图的步骤905的处理的流程图;图16是为详细说明本发明的实施例1中在第11图的步骤907的处理的流程图;图17是显示为从本发明的实施例1中的终端读取安全保护区域的命令顺序图;图18是显示本发明的实施例1中的APDU发送命令的自变量格式的示意图;图19是显示本发明的实施例1中的APDU接收命令的自变量格式的示意图;图20是显示本发明的实施例1中的APDU发送命令的输入数据以及APDU接收命令的输出数据的格式的示意图;图21是显示本发明的实施例1中存取区域指定命令的输入数据格式的示意图;图22是显示本发明的实施例1中存取区域指定信息的示意图;图23是显示本发明的实施例1中为进行终端的正当性验证而由终端进行的验证数据的生成方法的示意图;图24是显示本发明的实施例1中为进行终端的正当性验证而由卡进行的验证数据的生成方法的示意图;图25是显示本发明的实施例1中为从终端对安全保护区域进行写入的命令顺序的示意图;图26是显示本发明的实施例2中存储卡的内部模块结构图;图27是显示本发明的实施例2中终端的内部结构图;图28是显示本发明的实施例2中从终端对卡的安全保护区域进行存取时的处理的流程图;图29是显示本发明的实施例2中区域指定命令的数据部的一个例子;图30是显示本发明的实施例2中第29图的存取区域指定信息的格式的示意图;图31是显示本发明的实施例2中比较信息的生成方法的一个例子;图32是显示本发明的实施例2中在内部备有验证用密钥共享部件时的卡的结构图;图33是显示本发明的实施例2中在内部备有验证用密钥共享部件时的终端的结构图;图34是显示本发明的实施例2中验证用密钥的共享方法的顺序图;图35是显示为说明本发明的实施例2中验证用密钥生成方法的图;图36是显示本发明的实施例2中使用SHA-1演算的比较信息生成方法的示意图;图37是显示本发明的实施例2中验证信息生成方法的示意图;图38是显示本发明的实施例2中存取命令的格式的示意图;图39是显示本发明的实施例2中使用数信息的验证数据生成处理的示意图;图40是显示本发明的实施例2中使用随机数的比较信息生成方法的示意图;图41是显示本发明的实施例2中使用随机数的验证数据生成处理的示意图;图42是显示本发明的实施例3中存储卡的内部模块结构图;图43是显示本发明的实施例3中终端的内部结构图;图44是显示本发明的实施例3中从终端对卡内安全保护区域进行的存取处理的流程图;图45是显示本发明的实施例3中第44图之后的存取处理的部分流程图;图46是显示本发明的实施例3存取有效表的一个例子;以及图47是显示本发明的实施例1存取有效表的一个例子。
具体实施例方式
以下参照附图详细说明本发明的实施例。然而,本发明并不限于本实施例,在不脱离其主旨的范围内可以各种形态加以实行。
(实施例1)下面使用图3说明本发明中卡内模块结构。然而,卡100的端子配置为如图4所示,其端子结构虽与第1图所示各端子的标号不同,但因其结构相同所以省略相关说明。
卡内模块由控制器106和闪存105构成。控制器106由下述部件构成命令接收部101,与CMD列相连接,进行命令接收和响应发送;数据发送/接收部102,与DAT列相连接;解密部107,对数据发送/接收部102发送/接收的数据以对话密钥施以解密处理,并且以闪存存储用密钥解密后进行与内存存取部104之间的数据转移;内存存取部104,对闪存105进行数据的读写;数据控制部103,根据接收的命令对内存存取部104、对话密钥共享部110、参数验证部108以及解密部107进行处理请求;参数存储部109,存储接收自终端200、用于存取安全保护区域的参数;参数验证部108,验证参数是否正确;对话密钥共享部110,和终端200交换认证用和解密用对话密钥;以及区域/对话密钥管理部111,存储对话密钥以及和对话密钥对应的安全保护区域。
接着,使用图5说明本实施例1中终端200的结构。
终端200具备命令发送部204,向卡100发送存储卡命令;数据发送/接收部件207,向卡100的DAT列发送数据;解密部件206,对数据发送/接收部件207发送的数据进行加密,并对接收的数据进行解密;对话密钥共享部件202,进行和卡100之间的对话密钥共享处理;指定信息决定部件201,根据安全保护区域存取命令决定存取的区域,生成区域指定信息;验证数据生成部203,从区域指定信息和对话密钥生成验证数据;以及数据存储部件205,存储发送的数据或接收的数据。
接着,使用图6说明在图3卡100和图5终端200之间所进行的处理概要。
在图6中,首先在终端200和卡100之间执行使用卡100IC卡命令的处理,也就是说,用于终端200和卡100的相互间认证的认证处理、为共享对话密钥的密钥共享处理以及从终端200向卡100内存储器分配可存取区域的区域号码(图中的区域No.x)的区域号码分配处理(步骤S401)。
在执行认证处理并确认彼此的正当性后,执行密钥共享处理以及区域号码分配处理,其结果,在终端200和卡100中,使能够向区域No.x表示的安全保护区域进行存取的验证用和密码用的对话密钥是以和区域号码(区域No.x)对应的方式被保持。
接着,在终端200和卡100之间执行使用存储卡命令的处理,也就是说,终端200至卡100的存取区域指定命令发送处理(步骤S402)、数据传输命令发送处理(步骤S403)以及卡100至终端200的加密数据发送处理(步骤S404)。
在存取区域指定命令发送处理中,为指定要存取的安全保护区域内的区域,将包含设定区域No.x、块地址和块长的数据的存取区域指定命令从终端200发送到卡100。在卡100中,根据从接收的存取区域指定命令中提取的区域No.x执行对安全保护区域的存取可否验证处理。
而且,在数据传输命令发送处理中,在终端200使用区域No.x、块地址、块长以及在步骤S401和卡100共享的验证用密钥做成验证数据,而包含这个验证数据的数据传输(Read)命令被发送到卡100。在卡100,通过接收的数据传输(Read)命令确认是使用和终端200所共享的验证用密钥的公开钥并根据区域No.x、块地址和块长做成验证数据,由此验证对步骤S402指定的安全保护区域的存取可否。
另外,加密数据发送处理还包括,使用和终端200之间共享的密码用密钥将与上述验证处理中结果为可存取的卡应用对应的卡100内的区域No.x所存储的数据加密,并将该加密数据发送到终端200。
以下将详细说明上述处理概要及处理顺序。
在终端200和对话密钥共享部110之间发送/接收的命令形态是依照一般IC卡所使用的APDU格式。也就是说,对话密钥共享部110采用IC卡应用的形态。
这里,使用图7的顺序图说明APDU的发送/接收方法。
首先说明有关终端200至卡100的命令APDU发送处理。这里,命令APDU是指将要在存储卡端执行的命令以APDU格式从终端200发送到存储卡,具体则是使用IC卡用命令。
首先,终端200做成要发送到对话密钥共享部110的命令APDU。终端200对第2图的卡100的CMD列22发送APDU发送命令(步骤S501)。
这个APDU发送命令和现有的数据读取命令相同,是为第7图所示的格式,由6位的命令码401和32位的命令自变量402构成。
APDU发送命令的命令自变量402是如图18所示,由表示输入到DAT0列27的数据为命令APDU的标记1401以及表示发送数据数目的1403构成。将标记1401和发送数据数目1403相加而不满32位时则存在未用字段1402。
输入到图4的DAT0列27的数据是以512字节为单位,发送数据数目1403表示该512字节单位输入的执行次数。
其次,卡100的命令接收部101接收终端200发送的命令(步骤S502),在识别出其为APDU发送命令后,通过CMD列22向终端200返回响应的同时(步骤S503),向数据控制部103通知已接收到APDU发送命令(步骤S504)。
接着,终端200从卡100的CMD列22接收APDU发送命令的响应(步骤S503),以第20图所示的格式将命令APDU1602输入到DAT0列27(步骤S505)。
在图20中,1601所表示的长度为之后的APDU1602的长度。根据长度栏1601和APDU1602的合计长来设定命令自变量的发送数据数目1403。另外,因为所述合计长不一定是512字节的倍数,因此附加填充段1603使成为512字节的倍数。
接着,卡100内部的数据发送部102从终端200接收输入到DAT0列27的命令APDU(步骤S505),同时向数据控制部103通知已接收到APDU命令(步骤S506)。然后数据控制部103从数据发送/接收部102读取命令APDU(步骤S507),将命令APDU转移到对话密钥共享部110(IC卡应用)(步骤S508)。
接着,对话密钥共享部110执行如命令APDU记述的处理(步骤S509),将在处理结果中产生的数据和状态信息做成响应APDU转移到数据控制部103(步骤S510)。这个状态信息是由ISO7816定义的状态字,表示是为正常结束或是异常结束的2字节的值。
接着,使用第8图的顺序图说明卡100至终端200的响应APDU的发送处理。这里,响应APDU是将卡100执行的命令APDU的处理结果从卡100发送到终端200。
这里,如所述命令APDU的发送方法中所述的,假设对话密钥共享部110输出的响应APDU是被数据控制部103持有的状态。
首先,终端200向卡100的CMD列22发送APDU接收命令(步骤S601)。该APDU接收命令和APDU发送命令一样地,和如第9图所示现有的数据读取命令的格式相同,由6位的命令码401和32位的命令自变量402构成。
APDU接收命令的命令自变量402是如图19所示,由未用字段1501和发送数据数目1502构成。发送数据数目1502不满32位时则存在未用字段1501。
从图4的DAT0列27输出的数据和APDU发送命令的输入数据同样地是以512字节为单位,发送数据数目1502表示该512字节单位输出的执行次数。
其次,卡100的命令接收部101接收终端200发送的命令(步骤S602),在识别出其为APDU接收命令后,通过CMD列22向终端200返回响应的同时(步骤S603),向数据控制部103通知已接收到APDU发送命令(步骤S604)。
接着,数据控制部103将从对话密钥共享部110收到的响应APDU转移到数据发送/接收部102(步骤S605)。
接着,终端200从卡100的CMD列22接收APDU接收命令的响应(步骤S603),通过DAT0列27从数据发送/接收部102读取响应APDU(步骤S606)。读取的响应APDU以图20所示的格式输出。因各个字段的详细说明和APDU发送命令输入时相同,所以予以省略。
如图10所示,设置在卡100的闪存105至少具有能够从终端200以现有的读取用命令以及写入用命令所代表的存储卡命令进行存取的一般区域(非反窜改性的存储区域)62,以及无法以所述现有的命令进行存取的安全保护区域(反窜改性的存储区域)61。而卡100则如图10所示,具有能够以IC卡命令进行存取的反窜改区域(TRMtamper resistant module)80。
安全保护区域61通常是仅能够从卡应用进行存取的状态,对于来自终端200的现有读取用命令和写入用命令则由命令接收部101排除存取。
本发明的存储卡能够在其内部设置多个卡应用,如图11所示,安全保护区域61能够将个别的区域(AP1用区域71~AP3用区域73)分配给各个应用。
以数据控制部103管理的存储用密码钥(Ks)将安全保护区域61加密。可以对整个安全保护区域61使用一个密码钥Ks,也能够为各个应用用的AP1用区域71~AP3用区域73个别准备存储用密码钥Ks_1~Ks_3。在本实施例中是为各个应用AP1~3准备存储用密码钥Ks_1~Ks_3。
其次,使用图12说明安全保护区域61内的各个应用用的AP1用区域71~AP3用区域73的内部结构。
这里,以卡应用AP1用区域71为例进行说明。AP1用区域71的内部为运用阶层构造的数据管理,该阶层构造使用目录DIR1、DIR2以及文件FILE1~FILE3。
卡应用AP1在AP1用区域71内执行目录移动,在存在有目的文件的目录DIR1、DIR2上进行对文件FILE1~FILE3的读写。
例如,卡应用AP1对文件FILE3进行存取时,先移动到目录DIR1,再移动到目录DIR2以后进行文件FILE3的读写。另外,在各个目录DIR1、DIR2能够做成或删除下层的目录或文件。
接着,使用图13~图16说明在卡100内的对话密钥共享部110和终端200之间执行的对话密钥共享顺序。
卡应用和终端200分别持有一对用于公开钥密码的公开钥和密钥,并且相互持有对方的公开钥。
对话密钥共享顺序中的命令形态是使用所述的APDU。之后的说明将不进行有关命令形态的表述,仅记述为命令APDU、响应APDU。
首先终端200通过发送SELECT命令APDU来进行卡应用AP1的选择(步骤901)。SELECT命令APDU是用于指定将之后的IC卡命令(命令APDU)发送到卡100内部的哪个应用的命令APDU,和其它命令APDU同样是使用APDU发送命令进行发送。
卡100在由终端200指定的卡应用AP1的选择正常结束时返回正常结束的响应APDU,没有正常结束时则返回异常结束的响应APDU(步骤902)。
接着,终端200执行处理903。该处理903可简单说明为生成能够对所选择的卡应用AP1进行存取的DATA2的处理。现参照图14的流程图详细说明处理903。
终端200生成随机数Rh(步骤S9031),并结合随机数Rh和终端200要存取的第12图所示的文件FILE3的文件名,并且以与卡应用AP1持有的密钥PriS对应的公开钥PubS加密来生成DATA1(步骤S9032),再将表示与终端200持有的密钥PriH对应的公开钥PubH的标识符号Info_PubH和DATA1结合来生成DATA2(步骤S9033)。
返回到图13,终端200为执行和卡应用之间的对话密钥共享,并且为执行可存取区域信息的共享,将包含在步骤S9033生成的DATA2的REQ_AREA_INFO命令发送到卡应用(步骤904)。
接收到REQ_AREA_INFO命令的卡应用AP1执行处理905。现参照第15图的流程图详细说明该处理905。
卡应用AP1从DATA2提取DATA1,以卡应用AP1持有的密钥PriS解密,获得随机数Rh和文件名FILE3(步骤S9051)。
接着,基于DATA2识别公开钥提取标识符号Info_PubH,参照文件FILE3的存取权限设定确认Info_PubH表示的公开钥PubH所对应的终端200能否进行存取。若没有权限进行存取,则视为错误向终端200返回响应APDU。如有权限进行存取,则取得FILE3的文件大小SIZE3(步骤S9052)。
接着,生成随机数Rs(步骤S9053),为使终端200能够通过安全保护区域存取命令对文件FILE3进行存取,在图47所示的存取有效表4500进行登记,将用于终端200使用安全保护区域命令进行存取时的区域号码X分配给文件FILE3,并和文件大小SIZE3一起存储到区域/对话密钥管理部111(步骤S9054)。该区域号码是指在终端200通过安全保护区域存取命令进行存取时,包含于由存取区域指定命令发送的存取区域指定信息的信息。
其次,结合随机数Rs、区域号码X和文件大小SIZE3生成DATA3(步骤S9055),以终端200的公开钥PubH对DATA3加密生成DATA4(步骤S9056)。
其次,对随机数Rs和随机数Rh施以“异或”运算和生成随机数R(步骤S9057),从随机数R生成密码用对话密钥Kd和验证用对话密钥Km(步骤S9058)。
接着,使对话密钥Kd和Km和区域号码X相对应,并存储到区域/对话密钥管理部111(步骤S9059)。
回到图13,卡100结束到这里为止的处理后向终端200发送包含DATA4的响应APDU(步骤906)。
接收到响应APDU的终端200从响应APDU提取DATA4执行处理907。现参照第16图的流程图详细说明该处理907。
终端200使用终端200的密钥PriH将DATA4解密取得DATA3(步骤S9071)。终端200从DATA3取得随机数Rs,对随机数Rs和随机数Rh施以互斥逻辑和生成随机数R(步骤S9072),从随机数R生成密码用对话密钥Kd和验证用对话密钥Km(步骤S9073)。
通过上述的步骤901至907,能够在终端200和卡100之间执行相互认证,而且如果有对终端200指定文件的存取权限时即会成为能够从终端200进行存取的状态,并能够共享进行存取时所需要的区域号码、分配给区域号码的文件大小SIZE3以及验证用对话密钥Km、密码用对话密钥Kd。
另外,在步骤904中从终端200传达到卡100的文件名不需要直接表示卡应用管理的文件,只要能够识别出卡应用是指示哪个文件即可。
而且,使终端200要存取的文件和在步骤S9054中对该文件进行使终端200能够存取的设定时所分配的区域号码总是相同,并且使终端200和卡100事先识别这些信息,由此可省略在步骤904中终端200要存取的文件名的通知,以及在步骤906中分配给文件的区域号码的通知。
另外,在本说明中已说明各个卡应用的形态为如图12所示,是为由目录和文件构成的阶层构造,并以目录名和文件名管理数据,但也可为将分配给卡应用的区域分割成适当大小,并将类似号码的标识符号分配给分割后的各个区域加以管理。此时,在第13图所示的处理顺序中使用所述标识符号来代替文件名FILE3。
接着,使用第17图和第3图说明有关从终端200向安全保护区域进行存取时的处理。图17的实线代表CMD列22、虚线代表DAT0列27的传输。
首先,终端200向卡100发送作为存储卡命令的存取区域指定命令(步骤1301)。该存取区域指定命令为如图9所示的格式,由6位的命令码401和32位的命令自变量402构成。
存取区域指定命令的命令自变量402为如图18所示,由表示输入到DAT0列27的数据为存取区域指定信息的标记1401和表示发送数据数目的1403构成。将标记1401和发送数据数目1403相加而不满32位时则存在未用字段1402。
输入到DAT0列27的数据是以512字节为单位,发送数据数目1403表示该512字节单位输入的执行次数。
其次,卡100的命令接收部101接收终端200发送的命令,在识别出其为存取区域指定命令后,向终端返回响应的同时向数据控制部103通知已接收到存取区域指定命令(步骤1302)。
接着,终端200从卡100的CMD列22接收存取区域指定命令的响应,以图21所示的格式将存取区域指定信息1702输入到DAT0列27(步骤1303)。
在图21中,1701所表示的长度为之后的存取区域指定信息1702的长度。根据长度栏1701和存取区域指定信息1702的合计长来设定命令自变量402的发送数据数目1403。另外,因所述合计长不一定是512字节的倍数,因此附加填充段1703使成为512字节的倍数。
如图22所示,存取区域指定信息1702由用于指定在第13图的步骤906中卡通知的区域号码X的区域号码1801、大于或等于0且同样由卡通知的文件大小SIZE3的范围内能够选择的存取开始地址1802、以及大于或等于1且在文件大小SIZE3减去存取开始地址1802的范围内能够选择的存取数据大小1803所构成。
接着,卡100内部的数据发送/接收部102接收从终端接收输入的存取区域指定信息1702,同时向数据控制部103通知已接收到存取区域指定信息1702。
其次,数据控制部103从数据发送/接收部102读取存取区域指定信息1702,核对区域号码1801是否是在第15图步骤S9054分配的区域号码X,以及核对存取开始地址和存取数据大小是否位于和区域号码X对应的文件的文件大小范围内,如有异常则将卡内部持有的错误标记设定为ON。
没有异常时,数据控制部103将存取区域指定信息1702(具体说来,就是区域号码1801和存取开始地址1802、存取数据大小1803)存储在如第3图所示的参数存储部109。
以上即为指定存取区域的处理。
说明对图10的安全保护区域61进行读取时的处理。
在图17中,终端200对卡100发送安全保护区域读取命令(步骤1304)。该安全保护区域读取命令为如第8图所示的格式,由6位的命令码401和32位的命令自变量402构成。
安全保护区域读取命令中的命令自变量402由验证数据构成,该验证数据用于验证发送安全保护区域读取命令的终端是否为发送存取区域指定命令的终端200,并且是否为经确认是通过对话密钥共享顺序而对区域号码X所表示的区域拥有存取权限的终端200。
现使用图23说明该验证数据的生成方法。
存取区域指定信息1702是存取区域指定命令中输入DAT027的参数。验证密钥2101是在图13的步骤907生成的验证用对话密钥Km。
终端200内部的验证数据生成部203是进行密码演算的模块,用于生成包含于安全保护区域存取(读取或写入)命令的验证数据。这里,进行被称为DES-MAC的MAC(Message Authentication Code,消息验证代码)生成处理。将对存取区域指定信息1702附加填充数据2105的2102用作输入数据,使用验证密钥2101进行使用DES密码的MAC生成处理,将MAC数据做成验证数据2104。
对于填充数据2105,可在终端200向卡100发送存取区域指定命令时和存取区域指定信息1702一起发送,也可赋予根据终端和卡之间事先决定的填充段生成规则生成的填充数据。
另外,在本实施例虽是使用DES-MAC做成验证数据,但也可使用其它算法。甚至能够根据用途选择验证算法。
另外,在没有必要认证终端是否正当,仅需要确认与存取区域指定命令的对应关系时可不使用加密处理,仅将使用SHA1(Secure Hash Algorithm 1,安全散列算法1)和MD5(Message Digest 5)算法的散列数据用作验证数据即可。
终端200通过上述验证数据生成处理生成32位的验证数据,并用作安全保护区域读取命令的自变量。
接着,卡100的命令接收部101接收终端200发送的命令,识别出其为安全保护区域读取命令而有关存取区域指定信息1702的错误标记被设定为ON时,返回错误作为响应。在有关存取区域指定信息1702的错误标记没有被设定为ON时,则如第15图所示,向终端返回正常响应(步骤1305)的同时向数据控制部103通知已接收到安全保护区域读取命令,将获得作为命令自变量402的验证数据2104交给参数验证部108。
其次,终端200从卡100的CMD列22接收有关安全保护区域读取命令的响应并等待数据从DAT0列27输出。
下面说明卡100的安全保护区域的数据输出处理。
卡100的参数验证部108对基于存取区域指定命令从终端200获得并存储在参数存储部109的存取区域指定信息1702进行读取,并从区域/对话密钥管理部111取得与包含于存取区域指定信息1702的区域号码X(1801)对应、并且在图15的步骤S9059存储的验证用对话密钥Km。
其次,卡100的参数验证部108使用验证用对话密钥Km和存取区域指定信息1702进行如图24所示的验证数据生成处理,生成验证数据1904。然而,这个验证数据生成处理和第23图所示由终端200执行的验证数据生成处理相同,在这里省略其详细说明。
其次,卡100的参数验证部108比较在上述验证数据生成处理生成的验证数据1904和基于安全保护区域读取命令的自变量从终端200获得的验证数据504,若两者不一致,则视为错误,不执行数据读取处理。若两者一致,则通知数据控制部103将前进到下一个数据读取处理。
其次,卡100的数据控制部103从参数存储部109读取存取区域指定信息1702,获得包含其中的区域号码X,从区域/对话密钥管理部111识别与区域号码对应的文件FILE3。
其次,卡100的数据控制部103确认文件FILE3为应用AP1用的区域,获得存储用密码钥Ks_1。
其次,卡100的数据控制部103从存取区域指定信息1702获得存取开始地址1802和存取数据大小1803,对于被当作文件FILE3管理的区域,将存取开始地址1802用作偏置、存取数据大小1803用作读取大小向内存存取部104进行数据读取请求。
其次,卡100的数据控制部103请求解密部107以存储用密码钥Ks_1对内存存取部104读取的数据进行解密。
其次,卡100的数据控制部103请求解密部107以密码用会话钥Kd对解密部107解密的数据进行加密。
其次,卡100的数据控制部103请求数据发送/接收部102将解密部107以密码用对话密钥Kd加密的数据发送到终端200。
根据上述处理,安全保护区域的数据能够在被对话密钥Kd加密的状态从卡100输出。
终端200在识别出能够从卡100输出数据后,如图17所示地从DAT0列27获得为对话密钥Kd加密后的状态的数据(步骤1306),由终端所持有的密码用对话密钥Kd将数据解密,获得存取区域指定信息1702指定的区域的数据。
接下参照图25说明对安全保护区域进行写入时的处理。
因终端200的存取区域指定命令的发送(步骤2001)、卡100对所述命令的响应(步骤2002)以及存取区域指定信息的发送(步骤2003)分别和在图17所示对安全保护区域的读取处理的步骤1301~1303相同,所以省略其说明。执行步骤2001~步骤2003后,终端200对卡100发送安全保护区域写入命令(步骤2004)。该安全保护区域写入命令为图8所示的格式,由6位的命令码401和32位的命令自变量402构成。
安全保护区域读取命令中的命令自变量402由验证数据1904构成,该验证数据1904用于验证发送安全保护区域读取命令的终端200是否为发送存取区域指定命令的终端200,并且是否为经确认是通过对话密钥共享顺序对区域号码X所表示的区域拥有存取权限的终端200。
这个验证数据的生成方法和安全保护区域读取命令相同,所以省略详细说明。
终端200通过验证数据生成处理生成32位的验证数据,并用作安全保护区域读取命令的自变量。
接着,卡100的命令接收部101接收终端200发送的命令,识别出其为安全保护区域写入命令而有设定关于存取区域指定信息1702的错误标记时,返回错误作为响应。
而在没有设定关于存取区域指定信息1702的错误标记时,则从CMD列22向终端200返回正常响应(步骤2005)的同时向数据控制部103通知已接收到安全保护区域写入命令,将获得并用作命令自变量的验证数据504交给参数验证部108。
其次,终端200从卡100的CMD列22接收有关安全保护区域写入命令的响应并对DAT0列27进行数据的输入。这里输入到DAT0列27的数据是以在图13的步骤907生成的密码用对话密钥Kd加密所生成的。而且,输入数据大小和存取区域指定信息1702指定的存取数据大小相同。
下面说明卡对安全保护区域的数据存储处理进行说明。
卡100的参数验证部108对基于存取区域指定命令从终端200获得并存储在参数存储部109的存取区域指定信息1702进行读取,并从区域/对话密钥管理部111取得与包含于存取区域指定信息1702的区域号码X(1801)对应、并且在图15的步骤S9059存储的验证用对话密钥Km。
其次,卡100的参数验证部108内部的验证数据生成部1903使用验证用对话密钥Km和存取区域指定信息1702进行如第24图所示的验证数据生成处理,生成验证数据1904。然而,这个验证数据生成处理和第23图所示由终端执行的验证数据生成处理相同,这里省略其详细说明。
其次,卡100的参数验证部108比较在上述验证数据生成处理生成的验证数据1904和基于安全保护区域读取命令的自变量从终端200获得的验证数据2101,若两者不一致,则视为错误,不执行数据读取处理。若两者一致,则通知数据控制部103将前进到下一个数据读取处理。
其次,卡100的数据控制部103从参数存储部109读取存取区域指定信息1702,获得包含其中的区域号码X,从区域/对话密钥管理部111识别与区域号码对应的文件FILE3。
其次,卡100的信息发送/接收部102接收从终端200输入的数据。
其次,卡100的数据控制部103因文件FILE3存在于应用AP1用的区域71中,从而获得与应用AP1用的区域71对应的存储用密码钥Ks_1。
其次,卡100的数据控制部103请求解密部107以密码用对话密钥Kd对信息发送/接收部102接收的数据进行解密。
其次,卡100的数据控制部103请求解密部107以存储用密码钥Ks_1对解密部107解密的数据进行加密。
其次,卡100的数据控制部103从存取区域指定信息1702获得存取开始地址1802和存取数据大小1803,对于被当作文件FILE3管理的区域,将存取开始地址1802用作偏置、存取数据大小1803用作写入大小向内存存取部104进行数据写入请求。
如上所述,用存储用密码钥Ks_1对终端200输入的以对话密钥Kd加密的数据进行加密后存储到闪存105。
在本实施例中虽然是以一个命令同时进行对话密钥的共享和有关可存取区域的信息的共享,但也可使用不同命令进行。
以上,如本发明所述,在可接收IC卡用命令和内存存取用命令的存储卡中,对于通常仅能够通过卡应用进行存取并且对来自终端的存取设有限制的卡应用使用的安全保护区域,通过卡应用和终端的彼此认证,由卡应用进行可存取设定,由此,可使用内存存取用命令从终端进行存取。
而且,为使卡应用能够进行存取可能设定的卡应用和终端之间的相互认证可使用IC卡命令而不是用途受限制的内存存取用命令,由此能够根据数据的安全等级灵活选择相互认证方式。
另外,即使在包含于内存存取用命令的自变量大小小如32位时,如本发明所述,将存取区域指定命令和安全保护区域存取的命令分离,通过使安全保护区域存取用的命令包含于验证数据,卡就能够进行下述验证,也就是说,进行存取区域指定的终端应用和发行安全保护区域存取用命令的终端应用以及持有验证用密钥的终端应用是否相同。
另外,通过每当进行安全保护区域存取时执行验证用和密码用对话密钥的共享处理,可将包含于安全保护区域存取的验证数据设定为适当的值,由此提高对重复不当存取的攻击的防御性。
另外,通过向卡通知终端要存取的文件并向其分配区域号码,再由卡向终端进行通知,由此可设定终端可存取的区域。而且,对多个文件执行同样的处理便能够成为可同时向多个文件进行存取的状态。
(实施例2)在本实施例中将说明终端已事先识别出区域指定命令指定的区域号码时的顺序。
首先使用第26图说明卡内模块的结构。然而,图26的卡500的端子结构是和图4所示的结构相同,在此省略其图示及说明。
卡500内模块由下述部件构成处理命令接收部件501,与CMD列连接,用于接收命令和发送响应;存储区域506,用于存储数据;存储区域存取部件505,进行对存储区域506的存取处理;数据发送部件502,与DAT列连接,将存储区域存取部件505读取的数据发送到外部机器;数据接收部件503,同样与DAT列连接,从外部机器接收数据;以及指定信息验证部件504,对处理命令接收部件501接收的指定信息进行验证。
接着,使用第27图说明终端600内模块结构。
终端600内模块由下述部件构成处理命令发送部件604,用于对卡500进行命令发送以及响应接收;数据发送部件605,对卡500进行数据发送;数据接收部件606,进行来自卡500的数据接收,指定信息决定部件601,决定存取的区域;验证信息生成部件602,从指定信息生成验证信息;以及数据存储部件603,存储发送到卡500的数据以及从卡500接收的数据。
接着,使用上述第26图以及图27、图28所示的流程图说明终端600对于卡500的安全保护区域进行存取时的处理。
首先终端600在指定信息决定部件601决定进行读取存取或写入存取的区域(步骤S2601),生成存取区域指定信息(步骤S2602)。其次,将此存取区域指定信息存储到数据存储部件603并将区域指定命令从处理命令发送部件604发送到卡500(步骤S603)。
图29表示出区域指定命令数据部的一个例子。
输入到DAT列27的数据是以512字节为单位,区域指定命令的数据部在存取区域指定信息2702的长度栏2701和存取区域指定信息字段2702的合计长不满512字节时追加填充段2703。在本实施例中,长度栏2701为2字节的长度,存取区域指定信息2702为如第30图所示,由1字节的区域号码2801、3字节的存取开始地址2802以及3字节存取数据大小2803构成。也就是说,合计为9字节而不满512字节,因此附加503字节的填充段2703。
接下来回到第28图,卡500在处理命令接收部件501接收到区域指定命令后(步骤S2604),在指定信息验证部件504确认存取区域指定信息2702,根据是否存在与区域号码2801对应的区域以及存取开始地址2802和存取数据大小2803是否位于区域号码2801所表示的区域的范围内来判断指定的区域是否正确(步骤S2605)。若指定的区域不正确,指定信息验证部件504将区域指定命令视为无效(步骤S2606)。若指定的区域正确,则保存存取区域指定信息2702,使用存取区域指定信息2702以及终端600和卡500之间共享的密钥生成比较信息(步骤S2607)。
图29表示出比较信息生成方法的一个例子。
验证数据生成部2902为进行密码演算的模块,在本实施例中执行被称为DES-MAC的MAC(Message Authentication Code,消息验证代码)生成处理。输入则是区域指定命令的数据部2704和终端600之间共享的验证用密钥2901。DES-MAC的输出结果虽为64位,但在本实施例中,作为比较对象的从终端600发送的验证信息为32位,所以在2903减少该输出,仅将前面32位用作比较信息2904。另外,验证用密钥2901可为与区域号码个别对应且固定的密钥,也可无视于区域号码而仅有一个密钥。
另外,如图32所示,卡700内部备有验证用密钥共享部件701,另外如图33所示,终端800内部备有验证用密钥共享部件801,可以每次在对安全保护区域进行存取时在卡700和终端800之间改变验证用密钥。然而,在第32、33图中,对于与第26、27图所示结构相同的部分赋予相同的标号。
接着,使用上述图32、图33、图34所示的顺序图以及图35所示的验证用密钥生成方法说明验证用密钥的共享方法。
在图34中,终端800在验证用密钥共享部件801生成随机数Ra,并生成包含该随机数Ra的对话密钥共享请求命令APDU,处理命令发送部件604将APDU发送命令发送到卡700的同时(步骤S3201)数据发送部件605将对话密钥共享请求命令APDU发送到卡700(步骤S3202)。
其次,卡700在处理命令接收部件501接收来自终端800的APDU发送命令,在数据接收部件503将从终端800接收的对话密钥共享请求命令APDU转交给验证用密钥共享部件701。
验证用密钥共享部件801生成随机数Rb,如第35图所示,对于从终端800接收的随机数Ra和随机数Rb结合的结果使用事先和终端800之间共享的主密钥K进行加密处理(DES-MAC处理)并生成对话密钥R。接着,卡700生成包含随机数Rb的响应APDU。
其次,终端800从处理命令发送部件604向卡700发送APDU接收命令(步骤S3203)。
其次,卡700在处理命令接收部件501接收来自终端800的APDU接收命令,并将包含先前生成的随机数Rb的响应APDU从数据发送部件502发送到终端800(步骤S3204)。
其次,终端800通过数据接收部件606从卡700接收响应APDU并转移到验证用密钥共享部件801。如第35图所示,验证用密钥共享部件801对于先前自己生成的随机数Ra与包含于响应APDU的随机数Rb结合的结果使用事先和卡700共享的主密钥K进行加密处理(DES-MAC处理)并生成对话密钥R。
以上即为在每当向安全保护区域进行存取就改变对话密钥的情况中,终端800和卡700之间的验证用密钥共享顺序。
然而,虽然在本实施例是使用DES-MAC,但也可使用其它密码算法。另外,若没必要对终端800是否正当、也就是说终端800是否持有相同密钥一事进行验证时,例如仅需验证区域指定命令的存取区域指定信息2702是否为终端的所求时,可不使用加密处理而在如第36图所示的验证数据生成部3401将使用SHA-1演算、MD5算法的散列演算和核对和演算的结果用作比较信息。使用这些算法时,如果比较对象为32位长则在3402减少该输出结果,仅使用其中的32位用作比较信息3403。
返回到第28图,终端800在验证数据生成部基于存取区域指定信息2702以及终端800和卡700之间共享的验证用密钥2901生成验证信息(步骤S2608)。
在图37标出有关此验证信息的生成方法。在验证信息生成部3502使用验证用密钥3501和区域指定命令的数据部2704进行加密处理并生成验证信息3504。其生成方法与如第31图所示的卡700的比较信息2904的生成方法完全相同。
接着,返回到图28,终端800将生成的验证信息3504附加到存取命令(读取)的自变量,并从处理命令发送部件604将存取命令发送出去(步骤S609)。
存取命令为如第38图所示的格式,命令码3601和命令自变量3602的长度分别为6位和32位。在存取命令中,验证信息3504存储在命令自变量3602。
接着,返回到图28,卡700在处理命令接收部件501接收存取命令(读取)(步骤S2610),在指定信息验证部件504确认区域指定命令是否已事先正常结束(步骤S2611)。若因没有接收到区域指定命令或所指定的区域不正确等因素而没有正常结束时,将存取命令视为错误并通知终端800(步骤S2612)。此时,终端800从卡700接收错误(步骤S2612A)。
如果区域指定命令已事先正常结束,指定信息验证部件504比较先前卡700生成的比较信息2904和存储在存取命令的命令自变量的验证信息3504(步骤S2613)。在比较的结果下,若验证信息3504为不当,则将存取命令视为错误并通知到终端800(步骤S2614)。此时,终端800从卡700接收错误(步骤S2614A)。若验证信息为正常,则指定信息验证部件504将存取区域指定信息2702通知到存储区域存取部件505,存储区域存取部件505从存储区域506内存取区域指定信息2702指定的区域读取数据,并将数据从数据发送部件502发送到终端800(步骤S2615)。
接着,终端800在数据接收部件606接收从卡700发送的读取数据(步骤S2616)并存储在数据存储部件603。
如上所述,即使包含于内存存取用命令的自变量大小小如32位时,如本发明所述,将存取区域指定命令和安全保护区域存取命令分离,通过使安全保护区域存取用的命令包含于验证数据,卡就能够进行下述验证,也就是说,进行存取区域指定的终端应用和发行安全保护区域存取用命令的终端应用以及持有验证用密钥的终端应用是否相同。
另外,下面将使用第39图所示的顺序图说明除了区域指定信息和验证用密钥,还使用从卡输出的随机数信息来生成验证数据的方法。然而,在第39图所示的各步骤中,对于和第28图所示顺序图的步骤相同的部分赋予相同的标号并省略其说明。
如图39所示,从终端800向卡700发送随机数取得命令(步骤S3701),由卡700生成随机数T,在卡700内部的指定信息验证部件504持有该随机数T的同时从数据发送部件502发送到终端800(步骤S3702)。终端800在数据接收部件606接收来自卡700的随机数T(步骤S3703)。
将随机数T用于验证信息生成处理时,卡700的比较信息生成处理(步骤S2607)以及终端800的验证信息生成处理(步骤S2608)分别如图40和图41所示,对随机数T和区域指定命令的数据部2704的结合进行加密处理,输出比较信息3804和验证信息3904。
如上所述,通过在验证信息的生成使用随机数信息,即使使用相同的区域指定信息和验证用密钥生成验证信息,因输出的验证信息随着随机数信息的改变而改变,从而能够更加提高安全性。
(实施例3)在本实施例将说明包含密钥的共享处理的顺序图的例子。
首先使用图42说明卡内模块的结构。然而,卡的端子结构是和第4图所示的结构相同,在此省略其图示及说明。
卡内模块由下述部件构成处理命令接收部件901,与CMD列连接,用于接收命令和发送响应;存储区域906,用于存储数据;存储区域存取部件905,进行对存储区域906的存取处理;数据发送部件902,与DAT列连接,将存储区域存取部件905读取的数据发送到外部机器;数据接收部件903,同样与DAT列连接,从外部机器接收数据;可能区域信息共享部907,与终端1000共享有关能够通过安全保护区域存取命令进行存取的区域的信息;以及指定信息验证部件904,使用验证用密钥对通过数据接收部件903接收的指定信息进行验证。
接着,使用图43说明终端内模块结构。
终端内模块由下述部件构成处理命令发送部件1004,用于对卡900进行命令发送以及响应接收;数据发送部件1005,对卡900进行数据发送;数据接收部件1006,接收来自卡900的数据,指定信息决定部件1001,决定存取的区域;可能区域信息共享部1007,共享有关能够通过安全保护区域存取命令进行存取的区域的信息;验证信息生成部件1002,从指定信息生成验证信息;以及数据存储部件1003,存储发送到卡900的数据以及从卡900接收的数据。
接着,使用上述图42以及图43、图44、图45所示的顺序图说明终端1000向卡900中的安全保护区域进行存取时的处理。
首先终端1000在指定信息决定部件1001决定进行读取存取或写入存取的区域A(步骤S4201),在可能区域信息共享部1007将为命令APDU的区域开放请求命令从处理命令发送部件1004发送到卡900(步骤S4202),该区域开放请求命令是用于请求许可对所述区域A进行基于安全保护区域存取命令的存取。区域开放请求命令包含表示终端1000的公开钥的标识符号Info_PubH,以及以卡900的公开钥PubS对表示区域A的标识符号a进行加密的数据。然而,命令APDU的发送方法和在实施例1说明的方法相同,所以省略其详细说明。
其次,接收到区域开放请求命令的卡900在可能区域信息共享部件907使用卡900本身的密钥PriS对包含于命令的加密数据进行解密(步骤S4203)。从终端1000的公开钥标识符号Info_PubH识别出发送命令的终端1000,并参考标识符号A所表示的区域A的存取权限来确认该终端1000是否有被许可对区域A进行存取(步骤S4205)。
若没有被许可,将表示区域开放失败的数据用作响应APDU从数据发送部件902发送到终端1000(步骤S4206)。若有被许可,将区域A的标识符号a和分配给区域A的区域号码X登记于指定信息验证部件904内的存取有效表4400(参照图46)(步骤S4207),该存取有效表4400是用于设定基于安全保护区域存取命令的存取可否。将与区域A对应的验证用密钥R登记在存取有效表4400(步骤S4208)。
接着,以终端1000的公开钥PubH对区域号码X、区域A的大小进行加密并用作响应APDU从数据发送部件902发送到终端1000(步骤S4209)。
接着,终端1000从处理命令发送部件1004将APDU接收命令发送到卡900,并使用数据接收部件1006从卡900获得响应APDU(步骤S4210)。然而,响应APDU的获得方法与在实施例1说明的方法相同,在此省略其详细说明。
其次,终端1000的可能区域信息共享部件1007以终端1000本身的密钥PriH对包含于响应APDU的加密数据进行解密(步骤S4211),获得区域号码X和以区域号码X表示的区域A的大小。终端1000将与区域A对应的对话密钥登记于验证信息生成部件1002。区域号码X是为了生成存取区域指定信息而被登记在指定信息决定部件1001(步骤S4212)。然后,进至图45图的流程图。
接着,终端1000在指定信息决定部件1001使用由可能区域信息共享部件1007登记的区域号码X生成存取区域指定信息(步骤S4213)。其次,将该存取区域指定信息存储在数据部2704(参照图29),将区域指定命令从处理命令发送部件1004发送到卡900(步骤S4214)。然而,区域指定命令的存取区域指定信息和实施例2相同,所以省略其详细说明。
其次,卡900在处理命令接收部件901接收来自终端1000的区域指定命令后(步骤S4215),在指定信息验证部件904确认存取区域指定信息,判断区域号码X是否有登记在存取有效表4400,并且基于第30图所示的存取开始地址2802和存取数据大小2803判断是否位于区域A的范围内(步骤S4216)。若所指定的区域不正确,指定信息验证部件904将区域指定命令视为无效(步骤S4217)。若所指定的区域正确,则保存存取区域指定信息,使用存取区域指定命令信息和登记在存取有效表4400内、与区域A对应的验证用密钥R生成比较信息(步骤S4218)。然而,比较信息的生成方法和实施例2相同,所以省略其详细说明。
接着,终端1000在验证信息生成部件1002使用存取区域指定信息和由可能区域信息共享部1007登记的对话密钥R生成验证信息(步骤S4219),并将其附加在存取命令(读取)的自变量,从处理命令发送部件1001将存取命令发送到卡900(步骤S4220)。然而,验证信息生成方法和存取命令发送方法和实施例2相同,所以省略其详细说明。
接着,卡900在处理命令接收部件901接收存取命令(读取)(步骤S4221),在指定信息验证部件904确认区域指定命令是否已事先正常结束(步骤S4222)。若因没有接收到区域指定命令或所指定的区域不正确等因素而没有正常结束时,将存取命令视为错误并通知到终端1000(步骤S4223)。此时,终端1000从卡900接收错误(步骤S4223A)。
若区域指定命令已事先正常结束,指定信息验证部件904比较先前卡900生成的比较信息和存储在存取命令的自变量的验证信息(步骤S4224)。在比较的结果下,若验证信息为不当,则将存取命令视为错误并通知到终端1000(步骤S4225)。此时,终端1000从卡900接收错误(步骤S4225A)。
若验证信息为正常,则指定信息验证部件904将指定信息通知到存储区域存取部件905,存储区域存取部件905从存储区域906内的区域指定命令所指定的区域读取数据,从数据发送部件902将数据发送到终端1000(步骤S4226)。
接着,终端1000在数据接收部件1006接收从卡900发送的读取数据并存储到数据存储部件1003(步骤S4227)。
其次,终端1000不需要对区域A进行基于安全保护区域存取命令的存取时,为使与区域A对应的区域号码X无效而做成区域无效命令APDU,并从数据发送部件1005发送到卡900(步骤S4228)。
其次,接收到区域无效命令APDU的卡900在存取有效表4400进行检索,若找到区域号码X,则将分配到表内区域号码X的区域标识符号a和对话密钥R连同区域号码R加以删除,使对指定区域号码X的区域A的基于安全保护区域存取命令的存取无效(步骤S4229)。
如上所述,对于安全保护区域内的某个区域,只有在必要时通过区域开放请求使该区域成为能够基于安全保护区域存取命令进行存取的状态,而在不需要时则通过区域无效请求使无法对该区域进行存取来提高安全性。
本说明书是根据2003年7月16日申请的日本专利No.2003-275672及2004年7月2日申请的日本专利No.2004-197453而来。该内容包皆含于此。
本发明的工业实用性在于,本发明合并使用内存命令和IC卡命令,在内存存取时通过使用内存命令可避免复杂的过程,同时能够以较少的命令自变量安全地对终端进行认证。
权利要求
1.一种机器对存储装置进行的存取方法,包括下列步骤所述机器发送对所述存储装置指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证信息,并且用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
2.一种机器对存储装置进行的存取方法,包括下列步骤所述机器和所述存储装置将有关对该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,发送对所述存储装置指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证信息,并且用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
3.一种机器对存储装置进行的存取方法,包括下列步骤所述机器和所述存储装置将验证用密钥共享化的步骤;发送对所述存储装置指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
4.一种机器对存储装置进行的存取方法,包括下列步骤所述机器和所述存储装置将有关对该存储装置的可存取区域的可区域信息共享化的步骤;和所述存储装置将与所述可存取区域对应的验证用密钥共享化的步骤;参照所述可能区域信息,发送对所述存储装置指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
5.一种机器对存储装置进行的存取方法,包括下列步骤所述机器和所述存储装置使用第一处理系统命令将有关对该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,使用第二处理系统命令发送对所述存储装置指定存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证信息,使用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
6.一种机器对存储装置进行的存取方法,包括下列步骤所述机器和所述存储装置使用第一处理系统命令将验证用密钥共享化的步骤;使用第二处理系统命令发送对所述存储装置指定存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
7.一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制的非反窜改性的第二区域;所述机器能够存取的第三区域;并且所述存储装置具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;所述存取方法包括下列步骤所述机器和所述存储装置使用第一处理系统命令将有关对该存储装置的可存取区域的可区域信息共享化的步骤;参照所述可能区域信息,使用第二处理系统命令发送对所述第二区域指定存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和有关所述指定信息的验证信息合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证信息,使用所述验证信息对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
8.一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制的非反窜改性的第二区域;所述机器能够存取的第三区域;并且所述存储装置具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;所述存取方法包括下列步骤所述机器和所述存储装置使用第一处理系统命令将验证用密钥共享化的步骤;使用第二处理系统命令发送对所述第二区域指定存取区域的指定信息的步骤;以及使用所述第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
9.一种能够由机器进行读写的存储装置,包括处理命令接收部件,在接收指定存取区域的指定信息的同时,合并接收基于所述指定信息的验证信息以及读取或写入命令;指定信息验证部件,使用所述验证信息对所述指定信息进行验证处理;存储区域,存储数据;存储区域存取部件,当所述验证处理成功时,根据所述处理命令对所述存储区域的所述指定区域进行读取或写入;数据发送部件,将所述存储区域存取部件读取的数据发送到所述机器;以及数据接收部件,从所述机器接收写入数据。
10.如权利要求9所述的存储装置,其特征在于所述指定信息验证部件使用所述验证信息和验证用密钥进行验证处理。
11.如权利要求10所述的存储装置,其特征在于还包括验证用密钥共享部件,和所述机器共享所述验证用密钥。
12.如权利要求9所述的存储装置,其特征在于,还包括可能区域信息共享部件,和所述机器共享表示对存储装置的可存取区域的可能区域信息。
13.一种能够读写存储装置的信息机器,其特征在于包括指定信息决定部件,决定读取或写入的区域,并决定指定所述区域的指定信息;验证信息生成部件,使用所述指定信息进行所述验证信息的生成处理;处理命令发送部件,发送所述指定信息,并合并发送所述验证信息以及读取或写入的处理命令;数据发送部件,当所述处理命令为写入时,向所述存储装置发送数据;数据接收部件,当所述处理命令为读取时,从所述存储装置接收数据;以及数据存储部件,存储发送到所述存储装置的数据或存储所述存储装置接收的数据。
14.如权利要求13所述的信息装置,其特征在于所述验证信息生成部件的所述验证信息的生成处理是使用所述指定信息和验证用密钥进行。
15.如权利要求14所述的信息装置,其特征在于,还包括验证用密钥共享部件,和所述存储装置共享所述验证用密钥。
16.如权利要求13所述的信息装置,其特征在于,还包括可能区域信息共享部件,和所述存储装置共享表示对该存储装置的可存取区域的可能区域信息。
17.一种机器对存储装置进行的存取方法,包括下列步骤所述机器发送对所述存储装置指定存取区域的指定信息的步骤;以及将发送到所述存取区域的处理命令和以验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
18.一种机器对存储装置进行的存取方法,包括下列步骤所述机器使用第一处理系统命令将有关对所述存储装置的可存取区域的可区域信息共享化的步骤;使用第一处理系统命令将与所述可存取区域对应的验证用密钥共享化的步骤;使用第二处理系统命令发送对所述存储装置指定存取区域的指定信息的步骤;以及使用第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
19.一种机器对存储装置进行的存取方法,所述存储装置包括对来自所述机器的存取设有限制的反窜改性的第一区域;对来自所述机器的存取设有限制并且为大容量的非反窜改性的第二区域;所述机器能够存取并且为大容量的第三区域;以及所述存储装置具备能够对至少是对所述第一区域的处理命令的第一处理系统命令以及至少是对所述第三区域的处理命令的第二处理系统命令进行判别的功能;所述存取方法包括下列步骤所述机器和所述存储装置使用第一处理系统命令将有关对该存储装置的可存取区域的可区域信息共享化的步骤;使用第一处理系统命令将与所述可存取区域对应的验证用密钥共享化的步骤;使用第二处理系统命令发送对所述第二区域指定存取区域的指定信息的步骤;以及使用第二处理系统命令将发送到所述存取区域的处理命令和以所述验证用密钥对有关所述指定信息的验证信息加密后的验证数据合并发送的步骤;所述存储装置接收所述指定信息的步骤;接收所述处理命令和所述验证数据,使用所述验证数据和所述验证用密钥对所述指定信息进行验证的步骤;以及当所述验证成功时执行所述处理命令的步骤。
全文摘要
将从终端指定存取区域的命令和进行存取的命令分离,在进行存取的命令的自变量包含终端的验证数据进行发送,由此能够对发行指定存取区域的命令的终端应用和发行进行存取命令的终端应用,以及持有验证用密钥的终端应用是否相同进行验证。
文档编号G06F12/14GK1701310SQ20048000100
公开日2005年11月23日 申请日期2004年7月15日 优先权日2003年7月16日
发明者高木佳彦, 菊地隆文 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1