GP常用功能介绍

上传人:沈*** 文档编号:99433480 上传时间:2022-05-31 格式:DOC 页数:21 大小:341.50KB
返回 下载 相关 举报
GP常用功能介绍_第1页
第1页 / 共21页
GP常用功能介绍_第2页
第2页 / 共21页
GP常用功能介绍_第3页
第3页 / 共21页
点击查看更多>>
资源描述
wordGP常用功能介绍GP常用功能介绍11. 前言31.1 目标31.2 参考文档32. 安全域介绍32.1 安全域分类32.1.1 安全域密钥分散42.1.2 用户信息结构42.2 安全域密钥说明42.3 安全域密钥分散53. SCP02的外部认证63.1 外部认证的APDU命令63.1.1 INITIALIZE UPDATE命令63.1.2 会话密钥分散73.1.3 EXTERNAL AUTHENTICATE命令73.2 计算APDU的MAC94. 卡内容管理94.1 卡内容装载和安装94.1.1 卡内容的装载104.1.2 卡内容的安装104.2 卡内容移除124.2.1 应用的移除134.2.2 可执行装载文件的移除134.2.3 可执行装载文件和相关应用的移除144.3 内容的移交(context Extradition)145. APDU命令参考155.1 CLASS字节编码155.2 一般性的错误情形165.3 INSTALL命令165.3.1 命令消息165.3.2 命令消息中发送的数据字段175.3.3 响应消息215.4 LOAD命令215.4.1 命令消息215.4.2 响应消息221. 前言1.1 目标本文档主要介绍GlobalPlatform上安全域,应用常用操作内容,以方便使用都快速掌握必要信息。1.2 参考文档2. 安全域介绍卡片管理器作为GlobalPlatform架构中的首要组件起到了GlobalPlatform卡片中心管理者的作用,特定的密钥和安全管理应用被称作安全域,负责确保发卡方和其他安全域提供者之间的密钥的完全隔离。安全域负责提供各类安全服务,包括密钥管理、加密解密、针对其提供者发卡方、应用提供方、授权管理者的应用进展数字签名的生成与验证。当发卡方、应用提供方、授权管理者等卡外实体要用到的秘钥从其他是提取隔开来时,可以通过新的安全域来代理它们的实现这个需求。2.1 安全域分类作为卡外授权机构的卡片内代表的安全域,依据现有的三种授权机构,可以划分为三种主流类型:主安全域:卡片上首要的、强制性存在的安全域,是卡片管理者(通常是发卡方)在卡片内的代表;辅助安全域:卡片上次要的、可选择地存在的安全域,是应用提供方或发卡方以与它们的代理方在卡片内的代表;授权管理者安全域:一种特殊类型的辅助安全域,授权管理者负责将某种安全策略贯彻到所有加载到卡片的应用代码上,授权管理者安全域就是授权管理者在卡片内的代表,卡片上可能存在多个这样的安全域。2.1.1 安全域密钥分散HealthInfo info = new HealthInfo(Activity activity,Handlerhandler);handler用于执行交互。2.1.2 用户信息结构接口返回一个.cosw.health.pojo.Info对象,此对象包含用户信息。如下表:变量名称变量类型变量说明nameString用户名称genderString姓别ethnicString民族birthdayString生日idCardString某某号address1String用户地址1address2String用户地址22.2 安全域密钥说明安全域的密钥都是静态的方式存在于卡片内的,是在安全域实例化后,对它进展个人化(Put Key)时写入卡内的。一般是由后端系统根据根密钥派生出来的安全域密钥。KEYDATA密钥数据是每个IC卡应用分区都可以访问的一个数据单元,KMC标识符是INITIALIZE UPDATE命令响应数据的一局部,并给定位IC卡发行商的KMC提供了方便。在IC卡上必须存在个人化主密钥KMC的版本号,这个主密钥用来为每个应用生成初始的个人化密钥KENC、KMAC和KDEK。必须为每XIC卡生成一个加密分散密钥KENC,并把它写入相应的应用中。这个密钥用来生成IC卡密文和验证主某某文。如果密文的安全等级要求STORE DATA命令的数据字段是加密的,这个分散密钥还用来在CBC模式下对该命令的数据字段进展解密。KENC是一个16 字节112比特加奇偶校验位的DES密钥。KENC密钥用以下方法推算:KENC := DES3KMC KEYDATA的6个最低有效字节| F0 | 01 | DES3KMC KEYDATA的6个最低有效字节 | 0F | 01。必须为每XIC卡生成一个校验码分散密钥KMAC并写入相应的IC卡。这个密钥用来校验EXTERNAL AUTHENTICATE命令使用的C-MAC。同时当STORE DATA 命令的密文安全级要求命令中的数据采用MAC时,这个密钥也用来校验STORE DATA 命令使用的C-MAC。KMAC是一个16字节112比特加奇偶校验位的DES密钥。KMAC应采用以下方法导出:KMAC := DES3KMC KEYDATA的6个最低有效字节 | F0 | 02 | DES3KMC KEYDATA的6个最低有效字节 | 0F | 02。必须为每XIC卡生成一个密钥加密分散密钥KDEK并将它写入相应的IC卡。这个密钥用来在ECB模式下对STORE DATA命令收到的某某数据进展解密。KDEK是一个16字节112比特加奇偶校验位的DES密钥。KDEK应采用以下方法导出:KDEK := DES3KMC KEYDATA 的6个最低有效字节 | F0 | 03 | DES3KMC KEYDATA 的6个最低有效字节 | 0F | 03。2.3 安全域密钥分散简单的说密钥分散就是用根密钥对分散数据进展一次加密,得出的结果就是子密钥。【样例】:根密钥密钥数据(KEYDATA)=000000007147分散因子kmac=000000007147F0020000000071470F02分散因子kdek=000000007147F0030000000071470F03用根密钥(KMC)对分散因子进展3DES运算:分散出kenc=4E891150F7A210E474A50083B0F2F910分散出kmac=64E9EFAC8792D5F3F9BE16667B734A6B分散出kdek=5CCFBF18DCA7FF987C0B90C92EF25712【代码】:mons-card工程:.GPExternalAuth.java/ 分散出主密钥byte keys = GPExternalAuth.PBOCDiversifyKey(kmc, keyData);3. SCP02的外部认证卡和卡外实体都可以扮演一个安全消息发送实体和接实体的角色。SCP02提供了安全的以下3个级别:实体认证(安全级别00) 卡认证卡外实体,卡外实体认证卡,证明了卡外实体知道与卡一样的秘密。完整性和数据来源认证(安全级别01) 接收实体(卡或卡外实体)确信收到的数据确实按照正确的顺序来自一个被认证过的发送实体(卡或卡外实体),并且没有被更改正。数据的某某性(安全级别03) 从发旁顾实体(卡或卡外实体)到接收实体(卡或卡外实体)正在被传输的数据不能被认证的其它实体看到。3.1 外部认证的APDU命令3.1.1 INITIALIZE UPDATE命令参见:80 50 + P1 + P2 + Lc + Data +Le代码值含义CLA80INS50INITIALIZE UPDATEP1xx密钥版本号P200引用控控制参数P2Lc08主机随机数据长度Dataxx.主机随机数Le00PS: 如果P1值为00如此选择第一个可用密钥进展初始化。响应数据:名字长度备注密钥派生数据10字节一般由后端系统用来派生卡静态密钥密钥信息2字节包含了密钥的版本号和安全通道的协议标识符序列计数器2字节卡内一个递增的计数器,它用于创建会话密钥卡随机数6字节内部生成的随机数卡认证码8字节认证码3.1.2 会话密钥分散3.1.3 EXTERNAL AUTHENTICATE命令卡片认证主机,并确定所有后续命令所需的安全级别。84 82 + P1 + P2 + Lc + Data + Le代码值含义CLA84INS82EXTERNAL AUTHENTICATEP1xx安全级别(00,01,03)P200引用控控制参数P2Lc10主机认证码与MAC长度Dataxx.主机认证码与MACLe不存在【样例】:主机随机数据:8050返回数据:0001 /计数器750B1A97528A /卡随机数29D47693D80ED6BA /卡认证码kenc=4E891150F7A210E474A50083B0F2F910kmac=64E9EFAC8792D5F3F9BE16667B734A6Bkdek=5CCFBF18DCA7FF987C0B90C92EF25712进展3DES-CBC iv全0运算:SENC=EAA4B56F2E23B38306D4C72FD47C5DDDSMAC=31A41E63BAD0E361C40F2A51D6EA3BDCSDEK=F6F687747BB0BD383E9C2A119182BF88验证认证码:主机随机数+卡片计数器+卡片随机数据 0001750B1A97528A+80000000000000001)2) 上一步结果与0001750B1A97528A 异域得到:33BE27EAA205079A3) 上一步结果用SENC加密,得到:41568684C2E16CFC4) 上一步结果与8000000000000000异域得到:C1568684C2E16CFC5) 上一步结果用SENC加密,得到:29D47693D80ED6BA6) 得到的结果与卡片上送数据里的认证码一样,通过。 计算新的认证码:卡片计数器+卡片随机数据+主机随机数0001750B1A97528A 计算过程与上面一样,得出结果:FD1FC70AA3606C0C生成不带MAC的命令:8482010010FD1FC70AA3606C0C计算MAC: 补80后:8482010010FD1FC70AA3606C0C800000用SMAC密钥作为计算用的KEY,1) 数据前8字节与全0作异或,再与KEY做DesEcb加密2) 数据后面每8字节与前面加密结果异或后再与KEY做DesEcb加密3) 最后8字节与前面加密结果异或后做3DesEcb加密计算出的MAC:26D39D76DD8B27EF计算MAC后的命令:APDU=8482010010FD1FC70AA3606C0C26D39D76DD8B27EF下一条计算MAC时的向量(IV):26D39D76DD8B27EF3.2 计算APDU的MAC一般80开始的APDU需转换成84开始的带MAC的APDU。计算时需将80转换成84,Lc上加上8(mac的长度)。【样例】:SMAC= 31A41E63BAD0E361C40F2A51D6EA3BDC向量(iv): 26D39D76DD8B27EF用smac密钥对iv时行Des CBC加密(向量全0)得到:AE75D6E14F934E2FAPDU补80后:1) 数据前8字节与全0异或,再与KEY做DesEcb加密2) 数据后面每8字节与前面加密结果异或后再与KEY做DesEcb加密3) 最后8字节与前面加密结果异或后做3DesEcb加密计算出的MAC:61DE01E2179AFE5D4. 卡内容管理4.1 卡内容装载和安装描述了卡内容装载和安装的两个可能的阶段:装载和安装过程4.1.1 卡内容的装载在装载阶段中,使用了两个不同的APDU命令INSTALL和LOAD的屡次出现的组合。以下APDU命令的顺序适用于装载:l INSTALLfor load命令是发起装载的请求命令。INSTALLfor load命令的数据域详细记录了装载文件相关的要求。l 根据文件的大小和卡的通讯缓冲区的大小,使用多个LOAD命令来分块传输装载文件l 在将装载请求和装载文件交给OPEN处理前,INSTALL和LOAD命令由发行者安全域处理。在文件装载的任何阶段,如果OPEN检查到卡内资源不足以完成文件装载操作,或任意一步数据校验失败了,OPEN将终止装载过程,返回相应的错误,回收分配给安装过程的任何存储器资源。4.1.2 卡内容的安装INSTALLfor install命令用来请求一个应用的安装。发行者安全域处理INSTALL命令后才将安装请求转发给OPEN来处理。安装的内部处理超出了本规X的X围。无论如何,假定安装过程包括实例的创建和应用数据存储空间的分配。安装后,OPEN将在GP注册表中注册一些有关应用生命周期状态、与安全域关联信息、应用的权限信息的附加信息。装载和安装流程:图6-3是装载和安装一个应用到GP卡的例子。在这个例子里,装载文件被装载到卡上并作为一个可执行装载文件存储在存储器中,在文件装载完成后,立即执行了文件的安装过程。图 4-1:装载和安装流程图安装流程:图6-4是一个从已经存在于卡上的可执行装载文件中安装应用的例子。图 4-2:安装流程图4.2 卡内容移除如下图是删除应用程序,可执行加载文件或两者的示例:4.2.1 应用的移除应用的移除包括移除应用的实例以与应用相关的数据。在应用移除过程中,下面运行时行为要求适用于OPEN。OPEN将:l 确认被删除的应用在GP注册表中有条目。l 确认应用当前没有在其它逻辑通道上选定。l 确认卡内没有其它应用引用该应用。l 确认卡内没有其它应用引用该应用的数据l 如果要删除的是一个安全域,要保证卡上没有有应用与可执行装载文件与该安全域关联。l 移除GP的注册表中该应用的条目。l 如果该应用具有缺省被选择的权限,将这个缺省被选择的权限分配给发行者安全域。l 释放可变永久存储器空间并标记为可用。如果OPEN确定上面验证中任意一步失败,OPEN将不发起删除过程,并通知发行者安全域返回相应的响应。一旦这个或相关的删除过程开始,它们将在当前卡会话内全部完成,或者由于中断事件的原因,至少GP注册表的更新将在下一个卡会话中完成。4.2.2 可执行装载文件的移除可执行装载文件包含多个可执行模块。这个移除操作适用于可执行装载文件。物理上的移除可以发生在可变永久存储器中,然而在不可变永久存储器中只能发生逻辑上的移除。可执行装载文件移除过程中,下面运行时行为要求适用于OPEN。OPEN将:l 确认在GP注册表中存在被删除的可执行装载文件相关的条目。l 确认在卡内没有其它应用或可执行装载文件对该可执行装载文件进展引用。l 从GP注册表中移除可执行装载文件条目以与可执行装载文件中存在的可执行模块的条目。l 释放可变永久存储器空间并将其标记为可用。如果OPEN确定上面验证中任意一步失败,OPEN将不发起删除过程,并通知发行者安全域返回相应的响应。一旦这个删除过程开始,它将在当前卡会话内全部完成,或者由于中断事件的原因,至少GP注册表的更新将在下一个卡会话中完成。删除可执行装载文件的例子:4.2.3 可执行装载文件和相关应用的移除可执行装载文件包含可执行模块,应用从可执行模块安装。这项可选的功能删除可执行装载文件与所有相关的应用。物理上的移除可以发生在可变永久存储器中,然而在不可变永久存储器中只能发生逻辑上的移除。4.3 内容的移交(context Extradition)GP卡内容移交过程允许先前被安装的应用与一个不同的安全域相关联。在OPEN允许移交前,发行者安全域将验证移交请求。在卡内容移交过程中,下面运行时行为要求适用于OPEN。OPEN将:l 确认在GP注册表中存在被移交的应用。l 检查请求移交的安全域是被移交应用相关联的安全域。l 确认应用将被移交到的安全域AID存在于GP的注册表中。l 确认这个安全域具有安全域的权限。l 确认这个安全域处于一个有效的生命周期状态也就是:PERSONALIZE。l 请求这个安全域明确它是否承受卡内容的移交。移交流程:5. APDU命令参考 第11章。5.1 CLASS字节编码所有GlobalPlatform命令中的类字节将遵守ISO/IEC7816-4,并且将按照下表进展编码:CLA含义00ISO/IEC7816中定义的命令。80私有命令。84带安全消息的私有命令。表 0-1:CLA字节编码注意:上表中所定义的类字节编码的值和本章后面的节与附录D和E中都假定为0的逻辑通道号如,只对根本逻辑通道有效。类字节中的位b1和b2根据ISO/IEC7816可以设置为所要求的逻辑通道号。l 位1和2设置为00的类字节表示在根本逻辑通道上的收到的命。l 位1和2设置为011、102或者113的类字节表示在辅助的逻辑通道上收到的命令。注意:在这个规X的此版本中只为消息的完整性定义了MAC5.2 一般性的错误情形下表描述了可以被任何命令返回的错误情形:SW1SW2含义6400未指定。6700LC中错误的长度。6881逻辑通道不支持或没有激活。6982安全状态不满足。6985使用条件不满足。6A86P1P2不正确。6D00无效的指令INS。6E00无效的类CLA。表 5-2:一般错误情形5.3 INSTALL命令INSTALL命令被发送给安全域来开始或执行卡内容管理所要求的不同步骤。5.3.1 命令消息INSTALL命令消息将按照下表进展编码:代码值含义CLA80或84INSE6INSTALL。P1xx引用控制参数P1。P200引用控制参数P2。Lcxx数据字段的长度。Dataxxxx安装的数据和MAC如果存在。Le00表 5-3:INSTALL命令消息引用控制参数P1INSTALL命令的引用控制参数P1按照下表进展编码:b8b7b6b5b4b3b2b1含义100000For personalization010000For extradition001X00For make selectable00X100For install000010For loadXXRFU表 5-4:INSTALL命令引用控制参数P1b6到b1应该按照下面进展编码:b6=1:当前选定的安全域将个人化与它相关的应用中的一个,并且将期待后来的STORE DATA命令。b5=1:应用将被移交。b4=1:应用将变成可以选择的。用于即将安装的应用或者一个已经安装的应用。b3=1:应用将被安装。b2=1:装载文件将被装载。期待后续的LOAD命令。for install和for make selectable的选项可以组合使用。引用控制参数P2引用控制参数P2总是设置为00。5.3.2 命令消息中发送的数据字段命令消息的数据字段包含LV编码的数据。这个LV编码的数据不需要分割符就可表达。INSTALLfor load的数据字段下表描述了INSTALLfor load命令的数据字段:存在字节长度名字强制的1装载文件AID的长度。强制的5-16装载文件AID。强制的1安全域AID的长度。条件的0-16安全域AID。强制的1装载文件数据块Hash的长度。条件的0-n装载文件数据块Hash。强制的1装载参数字段的长度。条件的0-n装载参数字段。强制的1装载Token的长度。条件的0-n装载Token。表 5-5:INSTALLfor load命令数据字段装载文件数据块Hash和装载Token对于委托管理是必须的。如果装载文件包含一个或多个DAP块,那么装载文件数据块Hash是强制的。在其它情况下,装载文件数据块Hash是可选的并且是可以被卡验证的。装载文件AID和装载参数将与装载文件数据块如果有的话中包含的信息是一致的。INSTALLfor install的数据字段下表描述了INSTALLfor install命令的数据字段:存在字节长度名字强制的1可执行装载文件AID的长度。强制的5-16可执行装载文件AID。强制的1可执行模块AID的长度。强制的5-16可执行模块AID。强制的1应用AID的长度。强制的5-16应用AID。强制的1应用权限的长度。强制的1应用权限。强制的1安装参数字段的长度。强制的2-n安装参数字段。强制的1安装Token的长度。条件的0-n安装Token。表 5-6:INSTALLfor install命令数据字段安装Token对于委托管理是强制的。如果不使用委托管理,安装Token是不存在的。可执行模块AID是先前被装载的可执行模块的AID。可执行模块是存在于可执行装载文件中的。GlobalPlatform卡使用实例AID表示安装的应用被选定时的AID。应用权限的存在是需要的。如果一个应用只被安装了,没有使用一样的INSTALL命令变成可选择的,缺省的被选定的权限不能被设置。实例AID、应用权限和应用特定的参数对于应用来说应该是的。INSTALLfor make selectable的数据字段下表描述了INSTALLfor make selectable命令的数据字段:存在字节长度名字强制的1长度=00。强制的1长度=00。强制的1应用AID的长度。强制的5-16应用AID。强制的1应用权限的长度。强制的1应用权限。强制的1长度=00。强制的1安装Token的长度。条件的0-n安装Token。表 5-7:INSTALLfor make selectable命令数据字段如果缺省的被选定的权限在应用权限字段中设置,根据节6.6.2.4-应用权限中定义的规如此更新GlobalPlatform注册表。任何在应用权限字段中设置的其它权限都将被卡忽略。安装Token对于INSTALLfor make selectable命令委托管理是强制的。INSTALLfor extraditon的数据字段下表描述了INSTALLfor extraditon命令的数据字段:存在字节长度名字强制的1安全域AID的长度。强制的5-16安全域AID。强制的1长度=00。强制的1应用AID的长度。强制的5-16应用AID。强制的1长度=00。强制的1长度=00。强制的1移交Token的长度。条件的0-n移交Token。表 5-8:INSTALLfor extraditon命令数据字段安全域AID明确这个应用将被移交到那个安全域。这个应用当前相关的安全域是当前选定的应用。INSTALLfor personalization的数据字段下表描述了INSTALLfor personalization命令的数据字段:存在字节长度名字强制的1长度=00。强制的1长度=00。强制的1应用AID的长度。强制的5-16应用AID。强制的1长度=00。强制的1长度=00。强制的1长度=00。表 5-9:INSTALLfor personalization命令数据字段INSTALLfor load和INSTALLfor install的参数装载和安装参数字段是包括可选的系统特定的参数和应用特定的参数的TLV结构的值。系统特定的参数的存在对于装载和安装都是可选的,甚至如果它们存在,也不要求系统注意它们,如它们的存在不是期望的,内容可以被忽略。下表确定了装载参数字段可能使用的Tag:Tag长度值名字存在EF可变系统特定参数条件的C62非易失性存储器上代码空间限制不易失代码空间限制可选的C72易失数据空间限制易失性存储器上数据空间限制可选的C82不易失数据空间限制非易失性存储器上数据空间限制可选的表 5-10:装载参数Tag在INSTALLfor load命令中TagC6、C7和C8的存在明确所需卡上可用资源的最小数量。如果剩余的卡的资源对于装载和后续的安装是不足的,这个指示允许OPEN拒绝装载请求。下表确定了安装参数字段可能使用的Tag:Tag长度值名字存在C9可变应用特定参数强制的EF可变系统特定参数条件的C72易失数据空间限制可选的C82不易失数据空间限制可选的CA可变可选的EA可变可选的表 5-11:安装参数Tag当在INSTALLfor install命令中存在时,包含在tagC9长度+数据的信息将被传递给正在被安装的应用。在INSTALLfor install命令中tagC7或C8的存在明确分配给应用的卡上资源的最小数量。这个信息可以被OPEN用来验证应用的资源请求。5.3.3 响应消息在响应消息中总是返回一个数据字段。数据字段的内容只是在委托管理的情况下才是有意义的,如:INSTALLfor install、INSTALLfor install和make selectable或INSTALLfor extradition命令发送给具有委托管理权限的安全域,一个收条将存在于数据字段中,这依赖于卡发行者的安全策略。5.4 LOAD命令本节定义了为装载一个装载文件的LOAD命令的数据字段中传输的装载文件的结构。ICC内部处理或装载文件的存储超出了本规X的X围。多个LOAD命令可以用来传输一个装载文件到卡中。这个装载文件被分成多个便于传输的小块。每一个LOAD命令将从00开始进展编号。LOAD命令的编号是连续的,每次增加1。装载文件的最后一块时将通知卡。当接收到装载文件的最后一块后,卡将执行先于LOAD命令的对装载文件必要的内部处理和在INSTALLfor load命令中标识的任何附加的处理。5.4.1 命令消息LOAD命令按照下表进展编码:代码值含义CLA80或84INSE8LOAD。P1xx引用控制参数P1。P2xx块号。Lcxx数据字段的长度。Dataxxxx装载数据和MAC如果存在。Le00表 5-12:LOAD命令消息结构引用控制参数P1下表描述了引用控制参数P1的编码,该参数用于指示命令消息中包含的块是否是最后一块。b8b7b6b5b4b3b2b1含义0不是最后一块。1最后一块。XXXXXXXRFU。表 5-13:LOAD命令引用控制参数P1引用控制参数P2引用控制参数P2包含了块号,并且将按照顺序从00到FF进展编码。5.4.2 响应消息在响应消息中总是返回一个数据字段。数据字段的内容只在委托管理的情况下才有意义,如:最后一个LOAD命令发送给具有委托管理权限的安全域,一个收条将存在于数据字段中,这依赖于卡发行者的安全策略。21 / 21
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!