响应APUD
如表6和表7本规范部分定于的相应APDU由下列内容组成
有条件的可变长主体
必备的两字节尾标(SW1 SW2)
表6
在相应APDU的数据字段中呈现的字节数用Lr来表示
尾标编码了处理 命令相应対 之后的接受实体的状态
注 如果改命令被放弃,则响应APDU十个尾标,它按两个状态字节来编码差错条件
命令首标,数据字段和相应位表用的编码约定
表6.1 发送命令格式
代码 | 名称 | 长度 | 描述 |
---|
CLA | 类别 | 1 | 指令的类别 |
INS | 指令 | 1 | 指令代码 |
P1 | 参数1 | 1 | 指令参数1 |
P2 | 参数2 | 1 | 指令参数2 |
表7 相应APUD内容
代码 | 名称 | 长度 | 描述 |
---|
数据字段 | 数据 | 变量=L | 在相应的数据字段中收到的字节串 |
SW1 | 状态字节1 | 1 | 命令处理状态 |
SW2 | 状态字节2 | 1 | 命令处理受限符 |
后续条规规定了类别字节,指令字节,参数字节,数据字段字节和状态字节用的编码约定
除非另有规定,在这些字节中,EFU的比特编码都为0,并且RFU字节也都编码为00
类别字节
按照与表9一起使用的表8 命令中的类别字节CLA用来指出
命令和相应在什么程度上应遵循本规范 本部分
当使用 表9时,安全报文交换的格式及逻辑信号道
表8 CLA的编码以及含义
值 | 含义 |
---|
0x | 按照本规范定义,命令和相应的结构和编码(对于编码 X 见表9 |
10-7F | RFU |
8X 9X | 按本规范定义命令和相应的结构,X除外(对于X编码见表9) |
AX | 除非通过应用上下文另有规定 按照本规范定义命令和相应的编码及含义(对于编码X 见表9 |
B0 CF | 按照本规范本部分 命令和响应的结构 |
D0 FE | 命令和相应的专有结构 |
FF | 保留PTS用 |
表9 当CLA = 0X、8X、9X、AX、半字节X的编码以及含义
b4 | b3 | b2 | b1 | 含义 |
---|
x | x | - | - | 安全报文SM格式 |
0 | x | - | - | 没有SM货SM不按照5.6 |
0 | 0 | - | - | 没有SM或没有SM知识 |
0 | 1 | - | - | 专有的SM格式 |
1 | X | - | - | 安全报文交换按照5.6 |
1 | 0 | - | - | 不被鉴别的命令首标 |
1 | 1 | - | - | 被鉴别的命令首标 |
- | - | x | x | 逻辑信号道 按照下面讲的逻辑信号 (当不使用逻辑信号到或当逻辑信道#0被选择时,b2 b1 = 00 |
指令字节
命令中的指令字节INS应予以编码。以便允许使用本规范第三部分定义的任何协议进行传输 表10 是除了必然无效的ISN代码
b8 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | 含义 |
---|
x | x | x | x | x | x | x | 1 | 奇数值 |
0 | 1 | 1 | 0 | x | x | x | x | 6x |
1 | 0 | 0 | 1 | x | x | x | x | 9X |
表11 除了本规范定义的INS代码,当CLA的值位于从00 到 7F的范围内时 INS代码其他值有待分配
值 | 命令名称 |
---|
0E | ERASE BINARY |
20 | VERIFY |
82 | EXTERNAL AUTHENTICATE |
84 | GET CHALLENGE |
88 | INTERNAL AUTHENTICATE |
A4 | SELECT FILE |
B0 | READ BINARY |
C0 | GET RESPONSE |
C2 | ENVELOPE |
CA | GET DATA |
D0 | WRITE BINARY |
D2 | WRITE RECORD |
D6 | UPDATE BINARY |
DA | PUT ADTA |
DC | UPDATE RECORD |
E2 | APPEND RECORD |
参数字节
命令中的参数字节P1-P2可以具有任何值,如果参数字节不提供进一步的限定 则他应该为 00
数据字段字节
每个数据字段应具有下列三种结构之一
每个TLV编码的数据字段应由一个或者多个TLV编码的数据对象组成
每个非TLV编码的数据字段应按照相应命令的规范由一个或者多个数据元祖组成
专用编码的数据字段在本规范中不予规定
本规范支持在数据字段中的下列两种类型的TLV编码的数据对象
BER - TLV 数据对象
简单TLV数据对象
本规范不使用 00 或 FF作为标记值
每个BER-TLV 数据对象应由两个或三个连续的字段组成
标记字段T由一个字节或多个连续字符组成,他编码了类别,类型和编号
长度字段由一个字节或多个连续字节组成,他编码了整数L
如果L不为空,则值字段V由L个连续字段组成,如果L为空,则数据对象为空
不存在值字段
每个简单LTC数据对象由2个或3个连续字段组成
I标记字段T由单个字节组成,从1到254中的一个编号,他对类别和结构类型不进行编码
长度字段由一个字节或三个连续字节组成,如果长度字段的首字节处于00
至FE的范围内,则长度阻断有单个字节组成,该字节编码从0到254中的一个整数L如果首字节等于FF则长度阻断后续两个字节使用从0到65535中的编码了一个整数L
如果L 不为空 则值字段V由L个连续字节组成如果L为空,则数据对象为空不存在有效字段
某些命令 SELECT FILE 的数据字段,简单TLV数据对象的值字段和某些原始的BER-TLV数据对象的值字段都预期用于棉麻一个或者多个数据元
某些其他命令,例如 面向记录的命令 的数据字段起源是BER-TLV数据对象的值字段都预期用于编码一个或多个简单的TLV数据对象
某些其他命令 例如 面向对象的命令的数据字段和结构化BER-TLV数据对象的值字段都与预期用于编码一个或多个BER-TLV数据对象
注:在TLV编码的数据对象之前,之后或者之间,无任何含义00 或FF字节可以出现 例如擦除的或修改的TLV编码的数据对象引起的
状态字节
相应的状态字节SW1 -SW2 标了了卡内的处理状态 图7中出示本规范本部分定义的值的结构方案
图7 状态字节的结构方案
状态字节的结构方案
当SW1 = 63 或 65 时, 非易失存储存器的状态变化,当SW1 = 除 63 和 65外的6X时,非易失存储器的状态变化,当SW1= 除64 和65 外的6X时,非易失储存器的状态不变化
由于本规范部分的规定原因,本部分不定义SW1-SW2的下列值
60XX
如果 XX 00 在每种情况下 6XX 6BXX 6DXX 6EXX 6FXX
如果 XXX 000 9XXX
无论在那个协议呗使用 SW1-SW2的下列值要予以定义
如果使用响应 其中SW1 = 6C 来中途停止命令,当在发出 任何其他命令之前从新发出同一命令 则SW2知识将该值给予短的Le字段(呗请求数据的准确字段)
如果使用响应 其中SW1 = 61 来处理命令 他可以是情况2或4 见表4和图4
则在发出任何其他命令之前发出的 GET RESPONSE 命令中 SW2指示将最大值给与短的Le字段 额外数据长度仍然有效
类似于由 61XX 所提供的的功能可以在应用级上通过9FXX来提供
通过表13 18 所完成的表 12 示出了本规范本部分定义的SW1-SW2值的一般含义,对于这个命令,相应的条款提供了更详细的含义
当SW1的值为62 63 65 68 69 6A时 表13 -18 规定了SW2的值 除本规范部分不定义的从F0到FF值之外,表13到18 不定义SW2值都是RFU
表4
情况 | 命令数据 | 期望相应数据 |
---|
1 | 无数据 | 无数据 |
2 | 无数据 | 有数据 |
3 | 有数据 | 无数据 |
4 | 有数据 | 有数据 |
表12 SW1 - SW2 编码
SW1-SW2 | 含义 |
---|
正常的处理 | 正常的处理 |
9000 | 无进一步限定 |
61XX | SW2指示仍然有效的相应字节数 |
报警处理 | 报警处理 |
62XX | 非易失存储器状态不变化 见表13 |
63XX | 非易失存储器状态变化 在SW2中进一步限定 见表14 |
执行差错 | 执行差错 |
64XX | 非易失存储器状态不变换 SW2=00 其他值都是RFU |
65XX | 非易失存储器状态变换 在SW2中进一步的限定,见表15 |
66XX | 保留同安全相关的发布使用 |
校验差错 | 校验差错 |
6700 | 错误的长度 |
68XX | CLA的功能不被支持 |
69XX | 不允许的命令 |
6AXX | 错误的参数P1-P2 |
6B00 | 错误的参数P1-P2 |
6CXX | 错误的长度Le SW2知识标准的长度 |
6D00 | 指令代码不被支持或者无效 |
6E00 | 类别不被支持 |
6F00 | 没有准确的诊断 |
表 13 当SW1 = 62 时 SW2的编码
SW2 | 含义 |
---|
00 | 没有消息给出 |
81 | 返回数据的一部分可能被损坏 |
82 | 独处Le字节之前,文件 记录已结束 |
83 | 选择文件无效 |
84 | FCI未按照5.1.5格式化 |
表14 当SW1 = 63 时 SW2的编码
SW2 | 含义 |
---|
00 | 没有信息被给出 |
81 | 通过最后写入来填满文件 |
CX | 通过X 值从0-15提供的计数器, 正确的含义依赖于命令 |
表15 当W1 = 68 时,SW2的编码
表16 当 SW1 = 68 时 SW2的编码
SW2 | 含义 |
---|
00没有信息被给出 | |
81 | 逻辑信道不被支持 |
82 | 安全报文不被支持 |
表17 当SW1 = 69 时,SW2的含义
SW2 | 含义 |
---|
00 | 没有信息被给出 |
81 | 命令与文件结构不兼容 |
82 | 安全状态不被满足 |
83 | 认证方法被阻塞 |
84 | 引用的数据无效 |
85 | 使用条件不被满足 |
86 | 命令不被允许(无当前EF) |
87 | 期望的SM数据对象失踪 |
88 | SM数据对象不正确 |
表 18 当 SW1= 6A 时, SW2的编码
SW2 | 含义 |
---|
00 | 没有信息被给出 |
80 | 在数据字段中的不正确参数 |
81 | 功能不被支持 |
82 | 文件未找到 |
83 | 记录未找到 |
84 | 无足够的文件储存空间 |
85 | Lc与TLV结构不一致 |
86 | 不正确的参数P1-P2 |
87 | Lc与P1-P2不一致 |
88 | 引用的数据未找到 |
逻辑信道
概念
在接口处看到的逻辑信到作为与DF的逻辑链路进行工作
在一个逻辑行到上应处在独立的活动,而与另一个信道上的活动无关,也就是说,在一个逻辑信到上的命令相互关系应独立与另一个逻辑信到上的命令相互关系,然而,逻辑信道可以共享与应用相关的安全状态,因此,可以具有与安全有关的跨越逻辑信道的命令互相关系 例如 命令VERIFY
提供给某一逻辑信道的命令运载了在CLA字节中的相应逻辑信号 见表8和表9 逻辑信道的编号从0到3 如果卡支持逻辑信道机制,则有效逻辑信道的最大面好可以在卡能力中指出 命令相应対按当前描述的那样进行工作
本规范本部分近支持在启动后续命令相应对之前应完成的命令相应时,跨越逻辑信道应该没有命令及其相应的交错 在收到命令与发送相应给改名了之间,只有一个逻辑信道是活动的,当逻辑行到被开放时,他保持开启,知道由MANAGE CHANNEL 命令显式的关闭为止
表8 CLA的编码以及含义
值 | 含义 |
---|
0x | 按照本规范定义,命令和相应的结构和编码(对于编码 X 见表9 |
10-7F | RFU |
8X 9X | 按本规范定义命令和相应的结构,X除外(对于X编码见表9) |
AX | 除非通过应用上下文另有规定 按照本规范定义命令和相应的编码及含义(对于编码X 见表9 |
B0 CF | 按照本规范本部分 命令和响应的结构 |
D0 FE | 命令和相应的专有结构 |
FF | 保留PTS用 |
表9 当CLA = 0X、8X、9X、AX、半字节X的编码以及含义
b4 | b3 | b2 | b1 | 含义 |
---|
x | x | - | - | 安全报文SM格式 |
0 | x | - | - | 没有SM货SM不按照5.6 |
0 | 0 | - | - | 没有SM或没有SM知识 |
0 | 1 | - | - | 专有的SM格式 |
1 | X | - | - | 安全报文交换按照5.6 |
1 | 0 | - | - | 不被鉴别的命令首标 |
1 | 1 | - | - | 被鉴别的命令首标 |
- | - | x | x | 逻辑信号道 按照下面讲的逻辑信号 (当不使用逻辑信号到或当逻辑信道#0被选择时,b2 b1 = 00 |
注
- 如果不排除,对同一个DF 可以开放一个以上的逻辑信道
- 如果不排除,一个以上的逻辑信道可以选择统一EF
- 在逻辑信道上的 SELECT FILE 命令将开放当前DF及可能的当前EF 因此,每个逻辑信道有一个当前DF及可能的一个当前EF作为SELECT FILE 命令行为的结果以及使用短EF标识符访问命令的文件
基本逻辑信道
基本逻辑信道永久有效,当被编号时,它的编号为0 当类别字节按照表8和表9进行编码时,位1和2编码了逻辑信道号
表8 CLA的编码以及含义
值 | 含义 |
---|
0x | 按照本规范定义,命令和相应的结构和编码(对于编码 X 见表9 |
10-7F | RFU |
8X 9X | 按本规范定义命令和相应的结构,X除外(对于X编码见表9) |
AX | 除非通过应用上下文另有规定 按照本规范定义命令和相应的编码及含义(对于编码X 见表9 |
B0 CF | 按照本规范本部分 命令和响应的结构 |
D0 FE | 命令和相应的专有结构 |
FF | 保留PTS用 |
表9 当CLA = 0X、8X、9X、AX、半字节X的编码以及含义
b4 | b3 | b2 | b1 | 含义 |
---|
x | x | - | - | 安全报文SM格式 |
0 | x | - | - | 没有SM货SM不按照5.6 |
0 | 0 | - | - | 没有SM或没有SM知识 |
0 | 1 | - | - | 专有的SM格式 |
1 | X | - | - | 安全报文交换按照5.6 |
1 | 0 | - | - | 不被鉴别的命令首标 |
1 | 1 | - | - | 被鉴别的命令首标 |
- | - | x | x | 逻辑信号道 按照下面讲的逻辑信号 (当不使用逻辑信号到或当逻辑信道#0被选择时,b2 b1 = 00 |
打开逻辑信道
逻辑信道可通过成功的完成下列内容来打开
通过分配类别字节中大于0的逻辑信号道来完成引用的DF SELECT FILE 命令
或者 完成MANAGE CHANNEL 命令的开放功能, 该命令分配带命令APDU中的0以外的逻辑信号道或请求卡分配的和相应中返回的逻辑信道号
关闭逻辑信道
MANAGE CHANNEL 命令的关闭功能可以用啦显示的使用逻辑信道号关闭逻辑信道,关闭之后,逻辑信道号可供重新使用,基本逻辑信道应不予关闭
安全报文交换
安全报文交换的目的是通过确保两种基本安全功能来保护往返于卡的报文部分,这两种功能是,数据鉴别和数据安全性
安全报文交换可通过应用一种或多种安全机制来获得,每种安全机制都设计算法,秘钥,自变量,经常还有一些初始数据
对于安全机制的执行,数据字段的发送和接受可以交错进行, 本规范不妨碍通过顺序的分析那些机制和那些安全项目应该用于处理数据字段的其余部分所做的决定
两种或两种以上的安全机制可以使用带有不同的操作方式的相同算法
本条定义了SM相关数据对象的三种类型
普通值数据对象 预期用来运载普通数据
安全机制数据对象,预期用来运载安全机制的计算结果
辅助安全数据对象,预期用来运载控制引用和相应描述符
SM格式概念
在涉及基于密码安全机制的每个报文中,数据字段应符合ASN,1的基本编码规则,除非通过类别字节另有指示
在数据字段中 可以算则现存的SM格式
隐式的选择,即,在发出命令之前已知
显示的选择,即,通过类别字节来固定
本规范本部分定义的SM格式是BER-TLV编码的
上下文特定的标签类别(范围从80 到BF ) 被保留供SM用
其他类别的数据对象可以呈现(例如,应用特定类别的数据对象)
某些与SM相关的数据对象时递归的,他们的普通值字段仍然是BER-TLV编码的,因此上下文特定的类别自然是被保留供SM用
在上下文特定类别中,标签的位1决定了SM相关的数据对象会(b1=1)或不会(b1=0)集成到认证用的数据对象的计算中,如果呈现,其他类别数据对象会集成到该计算中
普通值数据对象
对于不按BER-TLV编码的数据以及对包括与SM相关的数据对象的BER-TLV,ENVELOPE都是强制性的,对于不包括SM相关的数据对象的BER-TLV ENVELOPE是任选的 表 19 示出了ENVELOPE用的普通值数据对象
标记 | 值 |
---|
B0,B1 | BER-TLV 包与SM相关的数据对象 |
B2.B3 | BER-TLV 但不包括与SM相关的数据对象 |
80,81 | 不是BER-TLV编码的数据 |
99 | SM状态信息 例如(SW1-SW2) |
认证用的数据对象
密码 校验 和数据对象
米亚校验和的计算包含有初始校验块,秘钥以及不可逆密码算法块
在相关秘钥的控制下,该算法在本质上将现行K字节(典型的是8或6)输入块编程现行的相同长度输出块
密码校验和算法按下列继续步骤执行
初始步骤
初始步骤,初始步骤设置下列块值一的初始校验块
空块 即。 K字节值为00
连接块,即,由先前计算命令(先前命令的最后的一校验块)和相应(先前相应的最后一校验块)的结果,例如,由外界提供的初始块值
按照相关秘钥从变换辅助数据产生的辅助块,如果辅助数据小于K字节,则它通过置为0的位为起头,直至块长度
相继步骤, 当表9可用 (CLA = 0X 8X 9X 或 AX)时 如类别字节的B4和B3置为1,则第一个数据,块由命令APDU(CLA INS P1 P2)的首标后随值为80的第一个字节和值为00的五个字节的K组成
密码 校验和 应继承具有标记(b=1)的任何SM相关数据对象和带有标记超出范围80至BF的任何数据对象,这些数据对象应通过数据块集成到当前的校验块中,分解数据块应按下列方法进行
分块应在被集成的相邻数据对象之间的便捷出继续进行
填充应在被集成的每个数据对象(即可后随不被集成的数据对象,也可不后悔进一步的数据对象)的结束处所用
填充由一个值为80 的必备字节组成,如果需要可后随置为00 的 0 至 (K-1)个字节,知道相应的数据库被填充值K个字节位置,当填充字节不被发送时,鉴别的填充不影响传输
操作方式为密码块简洁 第一个输入是初始校验块与第一个数据块的抑或运算结果,第一个输出由第一个输入穿绳,当前输入是先前输出与当前数据块的异运算结果,最终的校验块就是最后的输出
最终步骤 最终步骤从最终校验块中抽取出密码 校验和 {开始的M个字节,至少4个}
标20