终端和智能卡之间的通信过程都是基于口令响应的方式处理的。这就是说,终端发送一条命令(口令)给 卡,卡立刻处理它,产生一个回答并把它作为响应回送给终端。在未从终端接到一条相应的命令时,卡永远 不会传送数据。即使ATR对此规律也不例外,因为它是复位信号的应答,对卡来说复位信号的作用方式也是 一种命令。
通信本身总是在传输协议T=0或T=1的架构内成立的,这些相对而言并不复杂的协议满足了智能卡应用的特 殊需求(并为此目的而优化)。在应用过程中偏离这些严格规定的协议是不允许的。传输协议使传送数据给 卡或从卡接受数据能以对传输层完全透明的方式进行,数据嵌入在一种容器中,称之为应用协议数据单元( APDU)。APDU由终端作为命令(口令)传送给卡。终端也接受嵌人在传输协议中的APDU作为对它的命令的应 答(响应)。这里有一个完整的基于此机制的命令集,它启动了卡内的规定动作。最简单的例子是对智能卡 文件的读写命令。
在智能卡应用中,卡被用做一个数据载体,一个授权的代理人或者同时是此二者。命令集是对这些应用和 传输协议优化了的,并且仅仅用于智能卡行业内部。由于存储容量的严格限制,而迫于市场压力只能适度地 增加以控制成本。通常按特定的应用来剪裁命令集,在一个给定的应用中所有不是必需的命令都在程序优化 时被删去。只有少量的操作系统展示出对特殊应用需要的未被精简的广泛命令集,相关的卡就相应的昂贵些 ,而它们通常仅用于测试和典型的智能卡项目中。
作为新技术的典型,从智能卡命令集中可以看到多样化的问题,活动在此领域中的各家制造商都试图去剪 裁它的命令,以适合其操作系统或项目的应用。有些功能等效的命令不可能存在于标准中,制造商为了改善 各自在竞争中的地位或者拒绝竞争对手参加到某专门的应用中来,可能有意地使用一些关于卡的功能对存储 器利用的高度优化的命令。基于有效标准而决定命令的选用,在任何情况下,永远意味着选择了开放、较易 扩充和经过证实的系统,它允许在一单独的卡中增加功能。另一方面,也有大量的例子说明,在这样的系统 中只有使用高度优化的命令才使智能卡的使用成为可能。
当前有四项国际标准,或与这些标准差不多的稳定的草案版本,它们规定了典型的智能卡命令集,这些标 准列举了超过80条值得注意的命令连同它们的有关动作。在这些标准中规定的命令从编码和功能性来说大多 是相互兼容的,参看图1。
现在智能卡用的主要命令都规定在ISO/IEC 7816-4标准中,它是一个通用的国际标准,并不专用于任何 特殊领域,诸如远程通信或金融交易,而是试图覆盖智能卡的所有应用。ISO/IEC 7816-4中的命令由标准系 列中的三个补充的特殊章节给以说明。ISO 7816-7规定了其结构基于结构化查询语言SQL(Structured Query Language)的智能卡数据库的询问与管理用的命令。ISO/IEC 7816-8含有关于执行和参数化加密函 数的命令,而ISO/IEC 7816-9增加了基本命令集中的文件管理命令。
在金融交易领域中没有任何有重要意义的国际标准,但是有一个行业标准,这就是EMV规范。其名字来源 于Europay,Mastercat·d和Visa的头一个字母,它们是该规范的创始者。现在的版本是EMV'96 3.0版,根 据需要它在不确定的时间间隔内列举出已知的错误与多义性来予以补充。由于在其后面的公司的坚强的市场地位,这份规范已作为所有智能卡操作系统的参考文献,它至少 占有和ISO/IEC 7816的命令集同等重要的地位。

图1 智能卡命令的标准与规范
GSM 11.11(ETS 300977)规范,它是为远程通信产业的应用而发展的,形成了GSM卡的规范基础。基于此 规范的数百万张卡在商业中应用,它像EMV规范一样是智能卡操作系统所不能忽视的基本因素。它的普遍应 用同样意味着其内容是稳定的和不可改变的,只能用兼容的命令和有限的范围内的功能给以补充,在远程通 信工业中,它也是一项智能卡操作系统的国际规范。
欧洲标准EN 726-3,像GSM 11.11一样也为远程通信工业所熟悉,它是CSM 11.11的扩展集。它定义了许多 补充的通用命令,和GSM 11.11不同的是并未按专门应用的需要予以剪裁,还含有许多管理应用的命令,在 多用途智能卡领域中对这项标准特别有兴趣。
专门的命令仅用于有限的领域,原则上均不为这些标准所覆盖,因此需要单独地规定。一个例子是通用电 子钱包的命令集,起初规定在一个临时的标准中,而现在则由CEN EN 1546标准所包含。这项欧洲标准含有 了电子钱包所必需的命令,还包括着有关的动作。这种类型的标准,都限于单一的应用,起因于政府机构或 工业部门感兴趣的特殊领域,它们的开发生产成本将是格外昂贵的。
在上述标准和规范中所描述的命令可以按照其功能分类,如图2和图3所示。然而,必须记住在现实生活中 的智能卡操作系统,仅仅实现了这些命令中的一个子集。依赖于制造商的操作系统,将会遇到对下面各节所 述的功能与编码的不同程度的偏离。所述的功能基本上出现在所有的操作系统中,无疑对存储容量和成本的 考虑会限制它们的功能。当着一项新的应用被考虑之时,务必要从正在议论中的操作系统的设计者那里取得 全部命令的功能和编码的准确的规范。
下面各节将叙述最重要和最广泛使用在智能卡中的命令,它们是从EN 726-3,ISO/IEC7816-4/7/8/9和EN 1546-3诸标准和EMV'96及GSM 11.11诸规范中选出的。
在世界上任何地方都不能订购一张含有所有下述命令的智能卡。因为(作为保守的估计)它们的全部实现 所需的存储量将是目前可用的最大的智能卡处理器芯片的总存储量的10~20倍。当然对于一张卡来说不需要 去执行所有这些命令,取决于策划中的应用领域和操作系统,某些种类命令比其他的一些会受到更广泛的支持。

图2 智能卡命令分类图(这些命令是在卡使用时主要用的)

图3 智能卡命令分类图(这些命令是在卡使用的前后用到的)
对于多应用卡,有必要去确信其他的一些应用在卡被个人化之后曾被安装在卡中。如果有适当的存储容量,一张加密应用卡可包含所有的加密命令连同不同的算法,每一应用领域使用着从不同标准中选择的命令。
为了有一个概括的了解,下面的章节中将表明在哪个标准或规范中规定了该条命令。如果没有来源可以指出,则这是一条智能卡制造商内部用的命令,未能归属到任何一项标准中。这些命令中的某些命令是非常有用的,并有可能在未来被标准化。这就是为什么它们被列举在此并说明其基本功能的缘故。出于可读性的原因,在本章中我们取消了对典型的智能卡命令的编码的叙述。
有一些命令几乎为所有的智能卡操作系统所支持,它们的可选数目也是有限的。对于这些命令,在适当的场合将给出其命令/应答APDU的完整的解释。在第5章,可在一个称之为“S-OS”(Small OS-小型操作系统)的简单智能卡操作系统的伪码(Pseudocode)的基础上跟随着内部程序执行7条典型的命令。
对于每一条命令,列出的响应是执行后所取得的结果。否则,若一项操作被禁止或者在卡中出现了故障,终端将接收到仅有二字节的返回代码。某些所述命令还包含有为选择额外功能用的参数。这些选项经常只存在于标准中,而不在实际操作系统中,因为它们可能是太复杂了,或者是不具各任何实际意义。因此,这一章中并未列举或解释标准中定义的每种变型,因为我们的目的是集中在实用功能上。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)