GP常用功能介绍_第1页
GP常用功能介绍_第2页
GP常用功能介绍_第3页
GP常用功能介绍_第4页
GP常用功能介绍_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/GP常用功能介绍27627GP常用功能介绍 1266331。前言 3236121.1目标 334391.2参考文档 3148752。安全域介绍 3302692。1安全域分类 3129542.1.1安全域密钥分散 4178312.1.2用户信息结构 494102。2安全域密钥说明 4114182.3安全域密钥分散 571153.SCP02的外部认证 660133。1外部认证的APDU命令 6287413。1。1INITIALIZEUPDATE命令 6192703.1.2会话密钥分散 7285243.1。3EXTERNALAUTHENTICATE命令 7296783。2计算APDU的MAC 987644.卡内容管理 9306614.1卡内容装载和安装 9230404.1。1卡内容的装载 10159334.1.2卡内容的安装 1057394.2卡内容移除 12199974。2。1应用的移除 13147274。2.2可执行装载文件的移除 1315954。2.3可执行装载文件和相关应用的移除 14245654.3内容的移交(contextExtradition) 1433835.APDU命令参考 15103235。1CLASS字节编码 15142785.2一般性的错误情形 16191485.3INSTALL命令 16252255。3.1命令消息 16107755。3.2命令消息中发送的数据字段 17254885。3。3响应消息 2144605。4LOAD命令 2163865.4。1命令消息 21120975。4。2响应消息 22前言目标本文档主要介绍GlobalPlatform上安全域,应用常用操作内容,以方便使用都快速掌握必要信息。参考文档GlobalPlatform卡片规范2.2安全域介绍卡片管理器作为GlobalPlatform架构中的首要组件起到了GlobalPlatform卡片中心管理者的作用,特定的密钥和安全管理应用被称作安全域,负责确保发卡方和其他安全域提供者之间的密钥的完全隔离。安全域负责提供各类安全服务,包括密钥管理、加密解密、针对其提供者(发卡方、应用提供方、授权管理者)的应用进行数字签名的生成与验证。当发卡方、应用提供方、授权管理者等卡外实体要用到的秘钥从其他是提取隔开来时,可以通过新的安全域来代理它们的实现这个需求.安全域分类作为卡外授权机构的卡片内代表的安全域,依据现有的三种授权机构,可以划分为三种主流类型:主安全域:卡片上首要的、强制性存在的安全域,是卡片管理者(通常是发卡方)在卡片内的代表;辅助安全域:卡片上次要的、可选择地存在的安全域,是应用提供方或发卡方以及它们的代理方在卡片内的代表;授权管理者安全域:一种特殊类型的辅助安全域,授权管理者负责将某种安全策略贯彻到所有加载到卡片的应用代码上,授权管理者安全域就是授权管理者在卡片内的代表,卡片上可能存在多个这样的安全域。安全域密钥分散HealthInfoinfo=newHealthInfo(Activityactivity,Handlerhandler);handler用于执行交互。用户信息结构接口返回一个对象,此对象包含用户信息。如下表:变量名称变量类型变量说明nameString用户名称genderString姓别ethnicString民族birthdayString生日idCardString身份证号address1String用户地址1address2String用户地址2安全域密钥说明安全域的密钥都是静态的方式存在于卡片内的,是在安全域实例化后,对它进行个人化(PutKey)时写入卡内的。一般是由后端系统根据根密钥派生出来的安全域密钥.KEYDATA(密钥数据)是每个IC卡应用分区都可以访问的一个数据单元,KMC标识符是INITIALIZEUPDATE命令响应数据的一部分,并给定位IC卡发行商的KMC提供了方便。在IC卡上必须存在‘个人化主密钥(KMC)'的版本号,这个主密钥用来为每个应用生成初始的个人化密钥(KENC、KMAC和KDEK)。必须为每张IC卡生成一个加密分散密钥(KENC),并把它写入相应的应用中.这个密钥用来生成IC卡密文和验证主机密文。如果密文的安全等级要求STOREDATA命令的数据字段是加密的,这个分散密钥还用来在CBC模式下对该命令的数据字段进行解密.KENC是一个16字节(112比特加奇偶校验位)的DES密钥。KENC密钥用以下方法推算:KENC:=DES3(KMC)[KEYDATA的6个最低有效字节||’F0'||‘01’]||DES3(KMC)[KEYDATA的6个最低有效字节||‘0F’||‘01’]。必须为每张IC卡生成一个校验码分散密钥(KMAC)并写入相应的IC卡。这个密钥用来校验EXTERNALAUTHENTICATE命令使用的C-MAC。同时当STOREDATA命令的密文安全级要求命令中的数据采用MAC时,这个密钥也用来校验STOREDATA命令使用的C—MAC。KMAC是一个16字节(112比特加奇偶校验位)的DES密钥。KMAC应采用以下方法导出:KMAC:=DES3(KMC)[KEYDATA的6个最低有效字节||'F0'||‘02’]||DES3(KMC)[KEYDATA的6个最低有效字节||‘0F’||‘02’]。必须为每张IC卡生成一个密钥加密分散密钥(KDEK)并将它写入相应的IC卡。这个密钥用来在ECB模式下对STOREDATA命令收到的机密数据进行解密。KDEK是一个16字节(112比特加奇偶校验位)的DES密钥。KDEK应采用以下方法导出:KDEK:=DES3(KMC)[KEYDATA的6个最低有效字节||’F0’||‘03']||DES3(KMC)[KEYDATA的6个最低有效字节||‘0F'||‘03’]。安全域密钥分散简单的说密钥分散就是用根密钥对分散数据进行一次加密,得出的结果就是子密钥.【样例】:根密钥(KMC)=4464748494A4B4C4D4E4F密钥数据(KEYDATA)=7分散因子kenc=7F71470F01分散因子kmac=7F71470F02分散因子kdek=7F71470F03用根密钥(KMC)对分散因子进行3DES运算:分散出kenc=4E891150F7A210E474A50083B0F2F910分散出kmac=64E9EFAC8792D5F3F9BE16667B734A6B分散出kdek=5CCFBF18DCA7FF987C0B90C92EF25712【代码】:commons-card工程:rd.GPExternalAuth.java//分散出主密钥byte[][]keys=GPExternalAuth。PBOCDiversifyKey(kmc,keyData);SCP02的外部认证卡和卡外实体都可以扮演一个安全消息发送实体和接实体的角色.SCP02提供了安全的以下3个级别:-实体认证(安全级别00)卡认证卡外实体,卡外实体认证卡,证明了卡外实体知道与卡相同的秘密。-完整性和数据来源认证(安全级别01)接收实体(卡或卡外实体)确信收到的数据确实按照正确的顺序来自一个被认证过的发送实体(卡或卡外实体),并且没有被更改过。-数据的机密性(安全级别03)从发旁顾实体(卡或卡外实体)到接收实体(卡或卡外实体)正在被传输的数据不能被认证的其它实体看到。外部认证的APDU命令INITIALIZEUPDATE命令参见:8050+P1+P2+Lc+Data+Le代码值含义CLA80INS50INITIALIZEUPDATEP1xx密钥版本号P200引用控控制参数P2Lc08主机随机数据长度Dataxx.。。主机随机数Le00PS:如果P1值为00则选择第一个可用密钥进行初始化.响应数据:名字长度备注密钥派生数据10字节一般由后端系统用来派生卡静态密钥密钥信息2字节包含了密钥的版本号和安全通道的协议标识符序列计数器2字节卡内一个递增的计数器,它用于创建会话密钥卡随机数6字节内部生成的随机数卡认证码8字节认证码会话密钥分散EXTERNALAUTHENTICATE命令卡片认证主机,并确定所有后续命令所需的安全级别。8482+P1+P2+Lc+Data+Le代码值含义CLA84INS82EXTERNALAUTHENTICATEP1xx安全级别(00,01,03)P200引用控控制参数P2Lc10主机认证码及MAC长度Dataxx..。主机认证码及MACLe不存在【样例】:主机随机数据:607088050返回数据:160007750B1A97528A29D47693D80ED6BA160001//计数器750B1A97528A//卡随机数29D47693D80ED6BA//卡认证码kenc=4E891150F7A210E474A50083B0F2F910kmac=64E9EFAC8792D5F3F9BE16667B734A6Bkdek=5CCFBF18DCA7FF987C0B90C92EF25712会话分散因子senc=000000000会话分散因子smac=0000000000会话分散因子sdek=0000000000进行3DES-CBCiv全0运算:SENC=EAA4B56F2E23B38306D4C72FD47C5DDDSMAC=31A41E63BAD0E361C40F2A51D6EA3BDCSDEK=F6F687747BB0BD383E9C2A119182BF88验证认证码:主机随机数+卡片计数器+卡片随机数据60708+0001750B1A97528A+80000用SENC对60708进行加密得到:33BF52E1B8925510上一步结果与0001750B1A97528A异域得到:33BE27EAA205079A上一步结果用SENC加密,得到:41568684C2E16CFC上一步结果与80000异域得到:C1568684C2E16CFC上一步结果用SENC加密,得到:29D47693D80ED6BA得到的结果与卡片上送数据里的认证码一样,通过。计算新的认证码:卡片计数器+卡片随机数据+主机随机数0001750B1A97528A+60708+80000计算过程与上面一样,得出结果:FD1FC70AA3606C0C生成不带MAC的命令:8482010010FD1FC70AA3606C0C计算MAC:补80后:8482010010FD1FC70AA3606C0C800000用SMAC密钥作为计算用的KEY,数据前8字节与全0作异或,再与KEY做DesEcb加密数据后面每8字节与前面加密结果异或后再与KEY做DesEcb加密最后8字节与前面加密结果异或后做3DesEcb加密计算出的MAC:26D39D76DD8B27EF计算MAC后的命令:APDU=8482010010FD1FC70AA3606C0C26D39D76DD8B27EF下一条计算MAC时的向量(IV):26D39D76DD8B27EF计算APDU的MAC一般80开始的APDU需转换成84开始的带MAC的APDU.计算时需将80转换成84,Lc上加上8(mac的长度)。【样例】:APDU:80E40080124F10544B4C435F81A000000A0转换:84E400801A4F10544B4C435F81A000000A0SMAC=31A41E63BAD0E361C40F2A51D6EA3BDC向量(iv):26D39D76DD8B27EF用smac密钥对iv时行DesCBC加密(向量全0)得到:AE75D6E14F934E2FAPDU补80后:84E400801A4F10544B4C435F81A000000A080数据前8字节与全0异或,再与KEY做DesEcb加密数据后面每8字节与前面加密结果异或后再与KEY做DesEcb加密最后8字节与前面加密结果异或后做3DesEcb加密计算出的MAC:61DE01E2179AFE5D卡内容管理卡内容装载和安装GPCardSpec_v2.2第9.3章描述了卡内容装载和安装的两个可能的阶段:装载和安装过程卡内容的装载在装载阶段中,使用了两个不同的APDU命令(INSTALL和LOAD)的多次出现的组合。以下APDU命令的顺序适用于装载:INSTALL[forload]命令是发起装载的请求命令。INSTALL[forload]命令的数据域详细记录了装载文件相关的要求.根据文件的大小和卡的通讯缓冲区的大小,使用多个LOAD命令来分块传输装载文件在将装载请求和装载文件交给OPEN处理前,INSTALL和LOAD命令由发行者安全域处理。在文件装载的任何阶段,如果OPEN检查到卡内资源不足以完成文件装载操作,或任意一步数据校验失败了,OPEN将终止装载过程,返回相应的错误,回收分配给安装过程的任何存储器资源.卡内容的安装INSTALL[forinstall]命令用来请求一个应用的安装。发行者安全域处理INSTALL命令后才将安装请求转发给OPEN来处理。安装的内部处理超出了本规范的范围。无论如何,假定安装过程包括实例的创建和应用数据存储空间的分配。安装后,OPEN将在GP注册表中注册一些有关应用生命周期状态、与安全域关联信息、应用的权限信息的附加信息。装载和安装流程:图6-3是装载和安装一个应用到GP卡的例子。在这个例子里,装载文件被装载到卡上并作为一个可执行装载文件存储在存储器中,在文件装载完成后,立即执行了文件的安装过程。图STYLEREF1\s6—SEQ图\*ARABIC\s13:装载和安装流程图安装流程:图6—4是一个从已经存在于卡上的可执行装载文件中安装应用的例子.图STYLEREF1\s6-SEQ图\*ARABIC\s14:安装流程图卡内容移除GPCardSpec_v2。2第9.5章下图是删除应用程序,可执行加载文件或两者的示例:应用的移除应用的移除包括移除应用的实例以及应用相关的数据。在应用移除过程中,下面运行时行为要求适用于OPEN。OPEN将:确认被删除的应用在GP注册表中有条目。确认应用当前没有在其它逻辑通道上选定。确认卡内没有其它应用引用该应用。确认卡内没有其它应用引用该应用的数据如果要删除的是一个安全域,要保证卡上没有有应用及可执行装载文件与该安全域关联。移除GP的注册表中该应用的条目。如果该应用具有缺省被选择的权限,将这个缺省被选择的权限分配给发行者安全域。释放可变永久存储器空间并标记为可用。如果OPEN确定上面验证中任意一步失败,OPEN将不发起删除过程,并通知发行者安全域返回相应的响应。一旦这个或相关的删除过程开始,它们将在当前卡会话内全部完成,或者由于中断事件的原因,至少GP注册表的更新将在下一个卡会话中完成。可执行装载文件的移除可执行装载文件包含(多个)可执行模块。这个移除操作适用于可执行装载文件。物理上的移除可以发生在可变永久存储器中,然而在不可变永久存储器中只能发生逻辑上的移除。可执行装载文件移除过程中,下面运行时行为要求适用于OPEN。OPEN将:确认在GP注册表中存在被删除的可执行装载文件相关的条目。确认在卡内没有其它应用或可执行装载文件对该可执行装载文件进行引用。从GP注册表中移除可执行装载文件条目以及可执行装载文件中存在的可执行模块的条目.释放可变永久存储器空间并将其标记为可用.如果OPEN确定上面验证中任意一步失败,OPEN将不发起删除过程,并通知发行者安全域返回相应的响应。一旦这个删除过程开始,它将在当前卡会话内全部完成,或者由于中断事件的原因,至少GP注册表的更新将在下一个卡会话中完成。删除可执行装载文件的例子:可执行装载文件和相关应用的移除可执行装载文件包含可执行模块,应用从可执行模块安装。这项可选的功能删除可执行装载文件及所有相关的应用.物理上的移除可以发生在可变永久存储器中,然而在不可变永久存储器中只能发生逻辑上的移除.内容的移交(contextExtradition)GP卡内容移交过程允许先前被安装的应用与一个不同的安全域相关联。在OPEN允许移交前,发行者安全域将验证移交请求。在卡内容移交过程中,下面运行时行为要求适用于OPEN。OPEN将:确认在GP注册表中存在被移交的应用。检查请求移交的安全域是被移交应用相关联的安全域.确认应用将被移交到的安全域AID存在于GP的注册表中。确认这个安全域具有安全域的权限。确认这个安全域处于一个有效的生命周期状态(也就是:PERSONALIZE).请求这个安全域表明它是否接受卡内容的移交。移交流程:APDU命令参考GPCardSpec_v2.2第11章。CLASS字节编码所有GlobalPlatform命令中的类字节将遵守ISO/IEC7816—4,并且将按照下表进行编码:CLA含义‘00'ISO/IEC7816中定义的命令.‘80’私有命令。‘84’带安全消息的私有命令。表0—SEQ表\*ARABIC\s19:CLA字节编码注意:上表中所定义的类字节编码的值和本章后面的节及附录D和E中都假定为0的逻辑通道号(如,只对基本逻辑通道有效).类字节中的位b1和b2根据ISO/IEC7816可以设置为所要求的逻辑通道号。位1和2设置为00的类字节表示在基本逻辑通道上的收到的命。位1和2设置为01(1)、10(2)或者11(3)的类字节表示在辅助的逻辑通道上收到的命令.注意:在这个规范的此版本中只为消息的完整性定义了MAC一般性的错误情形下表描述了可以被任何命令返回的错误情形:SW1SW2含义‘64’‘00'未指定.‘67'‘00’LC中错误的长度。'68’‘81'逻辑通道不支持或没有激活。‘69’‘82’安全状态不满足。‘69’‘85’使用条件不满足。‘6A’‘86’P1P2不正确.‘6D’‘00’无效的指令(INS)。‘6E'‘00’无效的类(CLA).表STYLEREF1\s9-SEQ表\*ARABIC\s18:一般错误情形INSTALL命令INSTALL命令被发送给安全域来开始或执行卡内容管理所要求的不同步骤。命令消息INSTALL命令消息将按照下表进行编码:代码值含义CLA‘80'或‘84’INS‘E6’INSTALL。P1‘xx’引用控制参数P1。P2‘00'引用控制参数P2.Lc‘xx’数据字段的长度。Data‘xxxx…’安装的数据(和MAC如果存在).Le‘00’表STYLEREF1\s9—SEQ表\*ARABIC\s127:INSTALL命令消息引用控制参数P1INSTALL命令的引用控制参数P1按照下表进行编码:b8b7b6b5b4b3b2b1含义100000Forpersonalization010000Forextradition001X00Formakeselectable00X100Forinstall000010ForloadXXRFU表STYLEREF1\s9-SEQ表\*ARABIC\s128:INSTALL命令引用控制参数P1b6到b1应该按照下面进行编码:b6=1:当前选定的安全域将个人化与它相关的应用中的一个,并且将期待后来的STOREDATA命令。b5=1:应用将被移交。b4=1:应用将变成可以选择的。用于即将安装的应用或者一个已经安装的应用。b3=1:应用将被安装.b2=1:装载文件将被装载。期待后续的LOAD命令。[forinstall]和[formakeselectable]的选项可以组合使用。引用控制参数P2引用控制参数P2总是设置为‘00’.命令消息中发送的数据字段命令消息的数据字段包含LV编码的数据。这个LV编码的数据不需要分割符就可表达.INSTALL[forload]的数据字段下表描述了INSTALL[forload]命令的数据字段:存在字节长度名字强制的1装载文件AID的长度。强制的5-16装载文件AID。强制的1安全域AID的长度。条件的0-16安全域AID。强制的1装载文件数据块Hash的长度。条件的0—n装载文件数据块Hash.强制的1装载参数字段的长度。条件的0—n装载参数字段。强制的1装载Token的长度。条件的0-n装载Token.表STYLEREF1\s9—SEQ表\*ARABIC\s129:INSTALL[forload]命令数据字段装载文件数据块Hash和装载Token对于委托管理是必须的。如果装载文件包含一个或多个DAP块,那么装载文件数据块Hash是强制的。在其它情况下,装载文件数据块Hash是可选的并且是可以被卡验证的。装载文件AID和装载参数将与装载文件数据块(如果有的话)中包含的信息是一致的.INSTALL[forinstall]的数据字段下表描述了INSTALL[forinstall]命令的数据字段:存在字节长度名字强制的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。表STYLEREF1\s9—SEQ表\*ARABIC\s130:INSTALL[forinstall]命令数据字段安装Token对于委托管理是强制的。如果不使用委托管理,安装Token是不存在的。可执行模块AID是先前被装载的可执行模块的AID。可执行模块是存在于可执行装载文件中的。GlobalPlatform卡使用实例AID表示安装的应用被选定时的AID。应用权限的存在是需要的。如果一个应用只被安装了,没有使用相同的INSTALL命令变成可选择的,缺省的被选定的权限不能被设置。实例AID、应用权限和应用特定的参数对于应用来说应该是已知的。INSTALL[formakeselectable]的数据字段下表描述了INSTALL[formakeselectable]命令的数据字段:存在字节长度名字强制的1长度=‘00’。强制的1长度=‘00’。强制的1应用AID的长度。强制的5—16应用AID.强制的1应用权限的长度。强制的1应用权限。强制的1长度=‘00’。强制的1安装Token的长度.条件的0-n安装Token。表STYLEREF1\s9-SEQ表\*ARABIC\s131:INSTALL[formakeselectable]命令数据字段如果缺省的被选定的权限在应用权限字段中设置,根据节6。6.2.4-应用权限中定义的规则更新GlobalPlatform注册表。任何在应用权限字段中设置的其它权限都将被卡忽略。安装Token对于INSTALL[formakeselectable]命令委托管理是强制的.INSTALL[forextraditon]的数据字段下表描述了INSTALL[forextraditon]命令的数据字段:存在字节长度名字强制的1安全域AID的长度。强制的5-16安全域AID。强制的1长度=‘00'。强制的1应用AID的长度。强制的5-16应用AID。强制的1长度=‘00’。强制的1长度=‘00’。强制的1移交Token的长度。条件的0-n移交Token。表STYLEREF1\s9—SEQ表\*ARABIC\s132:INSTALL[forextraditon]命令数据字段安全域AID表明这个应用将被移交到那个安全域.这个应用当前相关的安全域是当前选定的应用。INSTALL[forpersonalization]的数据字段下表描述了INSTALL[forpersonalization]命令的数据字段:存在字节长度名字强制的1长度=‘00’.强制的1长度=‘00’。强制的1应用AID的长度。强制的5—16应用AID。强制的1长度=‘00’。强制的1长度=‘00’.强制的1长度=‘00’。表STYLEREF1\s9-SEQ表\*ARABIC\s133:INSTALL[forpersonalization]命令数据字段INSTALL[forload]和INSTALL[forinstall]的参数装载和安装参数字段是包括可选的系统特定的参数和应用特定的参数的TLV结构的值。系统特定的参数的存在对于装载和安装都是可选的,甚至如果它们存在,也不要求系统注意它们,如它们的存在不是期望的,内容可以被忽略。下表确定了装载参数字段可能使用的Tag:Tag长度值(名字)存在‘EF’可变系统特定参数条件的 ‘C6'2(非易失性存储器上代码空间限制)不易失代码空间限制可选的 ‘C7’2易失数据空间限制(易失性存储器上数据空间限制)可选的 ‘C8’2不易失数据空间限制(非易失性存储器上数据空间限制)可选的表STYLEREF1\s9-SEQ表\*ARABIC\s134:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论