卡片规范(命令参考)

更新时间:2023-08-13 05:05:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

卡片规范(命令参考)

第五部分 APDU 命令参考

卡片规范(命令参考)

11. APDU命令参考

本章详细说明应要实现的GP APDU命令。命令按字母顺序排列。 下表综述了具有授权管理权限的安全域、具有委托管理权限的安全域、具有最终应用权限的安全域,应当要支持的APDU命令,以及其它安全域支持这些APDU命令的需求。当支持逻辑通道时,MANAGE CHANNEL命令仅由OPEN进行处理,且对此命令不需要安全域支

卡片规范(命令参考)

表11-1:认可的GP命令对卡片生命周期

表11-1图例:

AM SD:具有授权管理权限的安全域 DM SD:具有委托管理权限的安全域 FA SD:具有最终应用权限的安全域。(注:命令是否支持具有最终应用权限的但不是安全域的应用,服从发卡方的策略,在根据卡片生命周期状态所允许的限制范围内)。 SD:其它安全域 √:需要支持

空白单元:可选支持 灰色单元:禁止支持

表11-2 综述APDU命令的最低安全要求:

表11-12:GlobalPlatform命令的最低安全要求

11.1 一般编码规则

本章中用到标记“RFU”和“-”(连字符),表1-3“缩写和注释”中说明了它们的用途。如果某一位被标记为RFU,则卡外设备可以将该位设为0,并且卡片应当忽略该值。

卡片规范(命令参考)

11.1.1 生命周期状态编码

ELF

表11-3:ELF生命周期编码

应用的生命周期用一个字节按位的编码表示,如下表:

注意

表11-4:应用生命周期编码

安全域生命周期用一个字节按位的编码表示,如下表:

表11-5:安全域生命周期编码

第5章“生命周期模型”中定义了应用和安全域生命周期允许的状态转移方式。

表11-6:卡片生命周期编码

第5章“生命周期模型”中定义了卡片生命周期允许的状态转移方式。

11.1.2 权限编码

权限用3个字节编码表示,在表11-7和表11-8中定义(更多信息请参见第6.6节—权限):

卡片规范(命令参考)

表11-7:权限(字节1)

表11-8:权限(字节2)

表11-9:权限(字节3)

11.1.3 一般错误条件

下表是所有命令都可以返回的一般错误条件:

卡片规范(命令参考)

11.1.4 类别字节编码

对于针对基本逻辑通道和补充逻辑通道1,2和3的所有命令,类别字节应当符合ISO/IEC 7816-4并且应当按照11.1.4.1节进行编码。对于实现了4个以上的补充逻辑通道的卡片,针对补充逻辑通道4到19的所有命令,其类别字节应当按照11.1.4.2节进行编码。

11.1.4.1 第一类行业间交换命令类别编码

下表定义了第一类行业间交换命令的类别编码:

表11-11:CLA字节编码

根据ISO/IEC 7816,类别字节中b1和b2位可以用来设定所需的逻辑通道编号;

类别字节b1和b2位设为00,表示在基本逻辑通道上接收命令;

类别字节b1和b2位设为01(1),10(2)或11(3)表示在补充逻辑通道上接收命令。

根据ISO/IEC 7816,类别字节中b4和b3位可以用来设定所需的安全报文; 类别字节b4和b3位设为00,表示没有安全报文;

类别字节b4和b3位设为01,表示采用GlobalPlatform格式的安全报文;

类别字节b4和b3位设为11或10,表示采用ISO/IEC 7816-4格式的安全报文。

(*) 注意:类别字节b5位总是为0,除了在附录F中描述的用于链接命令的编码情况外。

11.1.4.2 其它行业间交换命令类别字节编码

卡片规范(命令参考)

表11-12:CLA字节编码

根据ISO/IEC 7816,类别字节中b1到b4位可以用来设定所需的逻辑通道编号;

类别字节b7位设为1,表示b4到b1(取值0000到1111)为接收命令的补充逻辑通道

4到19;

类别字节中b6位可以用来设定所需的安全报文,根据ISO/IEC 7816-4或GlobalPlatform定义的格式:

类别字节b6位设为0表示没有安全报文;

类别字节b6位设为1,表示采用GlobalPlatform格式或ISO/IEC 7816-4格式的安全报

文;

11.1.5 APDU报文和数据长度

所有GlobalPlatform的APDU报文和数据元素都采用字节计算。所有GlobalPlatform命令符合ISO/IEC 7816短报文长度,即Lc和Le字节用一个字节编码。 所有GP命令报文长度限制在255字节以内(包括APDU头)。所有需要响应数据GP命令都要将Le字节设为0,表示所有有效的响应数据都应当返回。根据7816-4,所有在APDU响应报文中返回的GP响应数据应最大不超过256字节。 本规范中定义的所有GP报文和数据对象的长度域,除了Lc和Le,都采用ASN.1 BER-TLV规定的编码(参见ISO 8825-1):用1个字节表示最大到127的长度,用2个字节表示最大到255的长度,用3个字节表示最大到65535的长度,除非另有说明。

本版的规范编写基于绝大多数的功能执行可以通过单个的APDU命令/响应对来处理。这样做可以简化描述,同时也并不排除在提供多命令机制情况下的用法,在每条命令中都会指出:比如P1中“更多命令”位(对于GP命令)和控制返回更多数据的状态字节;链接命令和响应(对于ISO命令)。

11.1.6 响应报文中的确认信息

表11-13:确认信息的结构

收据的长度域按照ASN进行编码(参见8825-1)。 确认数据的结构如下表:

卡片规范(命令参考)

表11-14:确认数据

如果出现令牌标识长度域,则令牌数据摘要长度也应当出现。是否出现令牌标识取决于原始令牌中是否包含令牌标识。

卡片唯一数据是IIN和CIN的连接,没有分隔符。

11.1.7 隐式选择参数编码

隐式选择参数(标签CF)表示在一个(或多个)指定逻辑通道的一个(或多个)指定卡片接口上选择该应用,参见6.6.3节—权限管理。第8和第7位都设为0表示只有显式通过SELECT[按名称]命令才可以选择该应用,且卡片应当忽略逻辑通道编号。该域的值用一个字节编码如下:

表11-15:隐式参数选择

11.1.8 密钥类型编码

密钥类型可以用1个或2个字节编码。如果用2个字节,第1字节应当设为FF以表示采用扩展格式的密钥数据域。第2字节或只有一个字节时应按下表进行编码:

卡片规范(命令参考)

表11-16:密钥类型编码

11.1.9 密钥用途编码

密钥用途参数的值按下表设定:

表11-17:密钥用途

GP采用下列值,这些值和使用的加密算法是独立的。 C-MAC=14,R-MAC=24,C-MAC+R-MAC=34; C-ENC = '18', R-ENC = '28', C-ENC + R-ENC = '38'; C-DEK = '48', R-DEK = '88', C-DEK + R-DEK = 'C8'; PK_SD_AUT = '82'; SK_SD_AUT = '42';

Token = '81'; Receipt = '44'; DAP = '84';

PK_SD_AUT + Token = '83'; SK_SD_AUT + Receipt = '43'; PK_SD_AUT + DAP = '86'; PK_SD_AUT + Token + DAP = '87'.

卡片规范(命令参考)

11.1.10 密钥访问编码

密钥访问参数的值按下表设定(详情参见附录7.5.2—

):

表11-18:密钥访问

11.1.11 标签编码

GP数据对象的所有标签按ASN定义的规则进行编码(参见8825)。

对于出现在GP APDU报文中的安全域数据对象,BER-TLV标签按下列规则编码: 00到7E—为ISO/IEC保留使用;

80到9E和A0到BE—根据上下文环境保留使用(见注释); C0到DD和E0到FD—GP或在GP注册的各方案保留使用;

CA和EA—ETSI TS 102 226规范保留使用; DE和FE—保留自行和未在GP注册的使用; 1F 1F到7F 7F—ISO/IEC保留使用;

9F 1F到9F 7F和BF 1F到BF 7F—根据上下文环境保留使用(见注释); DF 1F到DF 7F和FF 1F到FF 7F-- GP或在GP注册的各方案保留使用;

'FF 1F' to 'FF 3F'-- ETSI TS 102 226规范保留使用。

注释:上下文环境相关的标签由定义该上下文环境的机构决定,例如:ISO/IEC中的嵌入在其它ISO/IEC数据对象中的数据对象,GP中的嵌入在其它GP数据对象中的数据对象。 本规范中不讨论在构造标签FE(保留自行使用)中嵌入的数据对象分配的标签。这种情况下建议采用BER-TLV规则。

11.2 DELETE命令 11.2.1 定义和范围

DELETE命令用于删除一个可唯一标识的对象,例如一个ELF、一个应用、一个ELF和它的相关应用或一个密钥。删除一个对象时,当前选择的应用应当唯一标识出该对象。

11.2.2 命令报文

DELETE命令报文按下表进行编码:

卡片规范(命令参考)

表11-19:DELETE命令报文

11.2.2.1 引用控制参数P1

引用控制参数P1允许长度大于255字节的命令数据,可将其分割成任意大小的组成部分,通过一系列的DELETE命令进行传输。P1指出该命令是否为一系列组成命令中的一个,或者是最后一个(或仅有一个)组成。

表11-20:DELETE引用控制参数P1

11.2.2.2 引用控制参数P2

引用控制参数P2指出是删除数据域中对象,还是删除数据域中的对象及其相关联的对象。应当按下表进行编码:

表11-21:DELETE引用控制参数P2

11.2.2.3 命令报文中的发送数据域

DELETE命令报文中的数据域应当包含需要删除对象的TLV编码名称。

Delete [卡片内容] 数据域

应用或ELF的AID后可以跟随一个数字签名或删除令牌的控制引用模版,如下表:

卡片规范(命令参考)

表11-22:Delete [卡片内容] 命令数据域

所需删除的应用或ELF的标识应当用AID标签(4F)指定,后面跟长度和该应用或ELF的AID。当同时删除一个ELF和它相关的应用时,应当仅提供ELF的标识。

根据发卡方策略决定是否需要数字签名和删除令牌控制引用模版。采用SCP10时,强烈建议要有B6标签和42、45、5F20和93子标签中的数据对象。

数字签名和删除令牌引用控制模版的长度域按ASN进行编码(参见8825)。

Delete [密钥] 数据域

删除一个或多个密钥时:命令数据域中包含密钥的版本号和/或密钥标识,如下表:

表11-23:DELETE [密钥] 命令数据域

当DELETE命令报文数据域中同时提供密钥标识(D0)和密钥版本号(D2)时,删除单一的一个密钥。如果其中的一个值被省略,则可以删除多个密钥(即指定密钥标识或密钥版本号的所有密钥)。根据发卡方的策略决定是否可以省略这些值。

11.2.3 响应报文

响应报文中应当始终包括数据域。数据域中的内容仅和在托管的情况下有关,也就是说当具有托管权限的安全域删除应用或ELF时,根据发卡方的安全策略,数据域中可能需要一个收据。

11.2.3.1 响应报文数据域

对于DELETE [密钥]命令,应当返回单一‘00’字节表示没有其它更多的数据。 对于具有托管权限的安全域发出的DELETE [卡片内容]命令,数据域中可以包含删除步骤的确认信息。响应报文的总长不应当超过256字节。

卡片规范(命令参考)

表11-24:DELETE响应数据域

11.2.3.2 响应报文的状态码

此命令执行成功的状态码是90 00。

本命令可以返回11.13节-一般错误状态中所列的一般错误状态码,或者下列错误状态之一。

表11-25:DELETE错误状态

卡片规范(命令参考)

11.3 GET DATA命令 11.3.1 定义和范围

GET DATA命令用于获取单个数据对象,该对象可以是结构化的,或一组数据对象。引用控制参数P1和P2的编码被用来定义特定数据对象的标签。数据对象可以包括属于密钥的相关信息。

6.9.2 使用与安全的条件

仅当安全状态满足了通过功能用的上下文范围内的应用所定义的安全条件 时才能执行该命令

__

11.3.2 命令报文

表11-26:GET DATA命令报文

根据7816-4,奇指令码CB连同一个类别字节代表的ISO命令(CLA设置为00-0F,40-4F或60-6F),用于获取文件的内容。它可用于获取卡片上的应用列表(P1-P2设置为2F 00)。

卡片规范(命令参考)

11.3.2.1 参数P1和P2

参数P1和P2定义要读取的数据对象的标签。

值2F 00表示查询卡片上应用的详细信息,如7816-4中的定义。如果类别字节代表GP命令(CLA为80-8F,C0-CF或E0-EF),则指令码应当设置为CA,如类别字节表示的是ISO命令(CLA为00-0F,40-4F或60-6F),则为CB。 安全域应当至少支持下列数据对象标签:

标签42:发卡方标识号(IIN)或安全域提供方标识号 标签45:卡片特征编号CIN(或安全域特征编号) 标签66:卡片数据(或安全域管理数据) 标签E0:密钥信息模板

安全域应当支持下列数据对象标签: 标签D3:当前安全级别

标签2F00:属于安全域的应用列表,或者当安全域具有全局注册表权限时,所有应用

列表。

标签FF21:卡片内容管理的扩展卡片资源信息,如ETSI TS 102 226中的定义。 如果存在有产生收条权限的安全域,应当另外支持下列的数据对象标签: 标签C2:确认计数器

支持安全通道协议02的安全域应当支持下列数据对象标签: 标签C1:缺省密钥版本号的序列计数器 对于仅支持安全通道协议01的安全域,应当拒绝获取缺省密钥版本号的序列计数器的请求。 其它在11.11节-标签编码中定义的标签对安全域支持的数据对象可以是有效的。

11.3.2.2 命令报文中的发送数据域

除了需要标签列表和/或MAC时,GET DATA命令报文中的数据域应当为空。当查询卡片上的应用列表时(P1-P2为2F 00),应当提供一个以5C 00编码的标签列表。

11.3.3 响应报文

11.3.3.1 响应报文数据域

当类别字节表明是GP命令时(b8位=1),GET DATA响应数据域应当包含命令报文的P1和P2引用控制参数所指出的数据对象,以TLV格式编码,除了P1-P2为2F 00时。 当类别字节表明是ISO命令时(b8位=0),GET DATA响应数据域中应当包含命令报文的P1和P2引用控制参数所指出的数据对象,仅包含TLV编码中的值,除了P1-P2为2F 00时。

当查询当前选择应用的密钥信息时,密钥信息在E0模板中返回,其中每个密钥信息数据对象用C0标签表示。其结构取决于密钥类型值。如果密钥类型用一个字节编码(除FF以外的其它值),则密钥信息的结构如下:

卡片规范(命令参考)

表11-27:密钥信息数据结构-基本型

如果密钥采用两字节编码(第一字节=FF),密钥信息数据结构如下:

表11-28:密钥信息数据结构-扩展型

密钥用途数据是否存在,根据密钥装载到卡片上的是否提供该数据而定。

当以FF21标签查询扩展卡片资源信息时,响应数据应当按ETSI TS 102 206进行编码。 当查询卡片上的应用列表时,响应数据应编码成一系列7816-4中定义的应用模板数据对象(标签61)。响应数据示例如下:

卡片规范(命令参考)

11.3.3.2 响应报文的状态码

此命令执行成功的状态码是90 00。

本命令可以返回11.13节-一般错误状态中所列的一般错误状态码,或者下列错误状态之一。

表11-30:GET DATA错误状态

卡片规范(命令参考)

11.4 GET STATUS命令 11.4.1 定义和范围

GET STATUS命令按匹配/查找条件查询发卡方安全域、ELF、可执行模块、应用或安全域的生命周期状态。

11.4.2 命令报文

表11-31:GET STATUS命令报文

11.4.2.1 引用控制参数P1

引用控制参数P1用于选择一组状态子集包含到响应报文中。按下表编码:

表11-32:GET STATUS引用控制参数P1

应当支持下列引用控制参数值:

80—仅发卡方安全域。该情况下忽略查询条件并返回发卡方安全域信息。 40—仅应用和辅助安全域 20—仅ELF

10—仅ELF及其可执行模块 通过权限可区分应用和安全域。

卡片规范(命令参考)

11.4.2.2 引用控制参数P2

引用控制参数P2控制连续的GET STATUS命令的数量,并指出响应报文的格式。应当按下表进行编码:

表11-21:GET STATUS引用控制参数P2

如果当前应用会话过程中先前没有执行过GET STATUS[取第一个或所有结果],则应拒绝查询下一结果的指令。

如果仅查询发卡方安全域的状态,应当拒绝查询下一结果的指令。

查询符合本版本规范或2.1.1A修订版的卡片时,建议采用按表11-36的响应编码。注意:符合本规范早期版本的卡片可能仅支持表11-35和表11-37定义的响应数据结构。

11.4.2.3 命令报文中的发送数据域

数据域的结构如下表:

表11-34:GET STATUS命令数据域

GET STATUS命令报文数据域应当至少包括一个TLV编码的查询条件:AID(4F标签)。当查询条件为4F 00时,应当可以查询出与引用控制参数P1选定条件匹配的所有结果。 应当能够查询具有相同RID的所有结果。

可以增加其它查询条件。这种情况下,其余查询条件应当以TLV编码,并添加在必需的查询条件AID(4F标签)之后。如果卡片不支持,应忽略附加的查询条件。 查询的范围限定于接收该命令的卡内实体的直接或间接关联的ELF、应用和安全域。如果接收命令的卡内实体具有全局注册表权限,搜索范围为全局注册表中注册的所有ELF、应用和安全域。

标签列表指出卡片如何中将符合查询条件的卡内实体组成响应数据。在它的值域中含有一串标签(没有分隔符),指出需要包含在响应数据中的数据对象。如果在GP注册表中找到一个符合查询条件的卡内实体没有相应的数据对象,则应返回一个错误状态码。仅当引用控制参数P2指出TLV编码响应数据时(即P2的b2位设为1),才可以出现标签列表。如果卡片不支持,则应忽略标签列表。

卡片规范(命令参考)

11.4.3 响应报文

11.4.3.1 响应报文数据域

根据GET STATUS命令数据域中的查询条件和引用控制参数P1和P2的选择条件,可能返回按下表所列的数据结构的多个结果。按表11-35和表11-37编码的响应数据已过时。

向后兼容注意:当收到任何应用或安全域的一个字节编码的权限时,卡外实体可以设想第二和第三字节设定为6.6.2节中定义的缺省值。

表11-36:GP注册表数据(TLV)

如果卡片支持标签列表,响应数据应当按表11-36编码,且应只包含命令的标签列表(标签5C)中所列的标签的数据对象,GP注册表数据中的数据对象(E3模板)的顺序是任意的。如果命令中没有出现标签列表(5C标签),或卡片不支持标签列表,表11-36编码的响应数据应当包含下列数据对象:

应有AID(4F标签)和生命周期状态(9F70标签);

对于发卡方安全域、辅助安全域和应用应当有权限(C5标签),对ELF应空缺; 当引用控制参数P1表示仅ELF及其可执行模块(P1的b5位为1),且运行时环境支持

可执行模块时,则应当有可执行模块数据对象(84标签)。 注意:ELF版本号的格式和内容不在本规范中讨论。它应当由原始装载文件中的版本信息构成:对基于Java Card的卡片,该版本号代表原始的装载文件数据块的主版本和次版本属性。

卡片规范(命令参考)

表11-37:ELF和可执行模块信息数据

当引用控制参数P1表示仅ELF及其可执行模块(P1的b5位为1

),且运行时环境支持可执行模块时,应有可执行模块数据对象。

11.4.3.2 响应报文的状态码

此命令执行成功的状态码是90 00。 本命令可以返回下列警告状态码:

表11-38:GET STATUS警告状态码

在63 10状态后可以发出后续GET STATUS [取下一个结果]命令来取得其余数据。

本命令可以返回11.13节-一般错误状态中所列的一般错误状态码,或者下列错误状态之一。

表11-39:GET STATUS错误状态

本文来源:https://www.bwwdw.com/article/x4ij.html

Top