的命令组。因为没有这类功能的标准,出现了 诸如ENCRYPT(加密),DECRYPT(解密),SIGN DATA(签署数据)和VERIFY SIGN ̄ATURE(验证签名)等
在下述材料中,也会述及在ISO/IEC 7816-8标准中的其他加密命令,因为这是目前对于此类命令惟一有效的资料,然而,在撰写此书时这些标准尚未完成;其状态为委员会草案CD(Committee Draft)。这意味着在最终版本出现之前,仍有某种可能做一些小修改,甚至会出现大的变动。
在ISO/IEC 7816-8标准中与加密有关的功能分解在两条命令之间,MANAGE SECURITYENVIROMENT(达成安全 环境)命令允许在实际执行加密算法之前先设定各种一般的条件,这条命令传送一“模板”给卡,此模板中 含有相关的参数。它们一直保持有效,直到被一条新的MANAGE SECURITY ENVIROMENT命令所取代。模板本身 含有TLV编码的数据对象,它允许在参数传输中的高度可变性(而遗憾其复杂性)。
在加密功能的所有选项用MANAGE SECURITY ENVIRONMENT命令都设置要当后,可调用PERFORM SECURITY OPERATION(执行安全操作)命令,用此命令可实现大量的安全操作,只要它们都受到智能卡操作系统的支 持。这一命令的可能选项的数量是如此巨大,因此并非所有受到的支持都是强制性的。虽然PERFORM SECURITY OPERATION只用一个指令字节编码,然而却由参数字节Pl来区分其8项基本不同的功能。这样做的 理由是剩下可用以给命令编码的命令字节数在这时已经感到比较紧张了。
由于PERFORM SECURITY OPERATION命令以很多不同的方式应用,我们在下面将按照不同的选项来分别叙述 其功能,而不对它们做过细的描述。
PERFORM SECURITY OPERATION的COMPUTE CRYPTOGRAPHIC CHECKSUM(计 算加密代码和)选项是用来求加密的校验和(CCS)的,它通常被称为MAC(报文鉴别码)。所用之填补以及 密钥或由操作系统隐含给出或可经MANAGE SECURITY-ENVIRONMENT命令提供。与此命令相对应的选项为 VERIFY CRYP-TOGRAPHIC CHECKSUM,它计算传输数据的加密代码和并和也在命令中传送的基准值相比较。这项操作的结果 是符合/不符合,并回给终端。
两个选项ENCIPHER和DECIPHER对数据提供了纯粹的加密和解密,ENCIHER选项用来对命令中传送的数据加密 。根据操作系统提供的选项,可先行传送MANAGE SECURITYENVIRONMENT命令,以选择所用加密算法。类似地 ,也必须用传送的参数在发布命令之前先行设置要当加密算法的模式。对于字组加密算法,尚可在ECB与CBC 模式间选择。由于传送给卡的数组的长度没有必要精确地为加密算法字组大小的整倍数,故必须由一个补充 参数规定填补方法,同样重要的是智能卡中算法用于加密数据的密钥的存储地址。
ENCIPHER的逆操作是DECIPHER,用此功能可使传送的数据以和ENCIPHER中所用的相同模式被解密。当然智 能卡必须知道相应的密钥,算法模式和填补模式,这些信息必须用一条MANAGE SECURITY ENVIRONMENT命令传送给卡的操作系统。
由于把公开密钥算法引人到智能卡的应用中,这就需要有适当的命令来使用这一新的有效功能。智能卡特 别适合于签名的应用,因为签名的算法的秘密密钥可以安全地存在存储器中,而它不能被读到。ISO/IEC 7816-8标准说明了命令的四种选项可用于数字签名。
PERFORM SECURITY OPERATION命令的HASH(散列)选项可用于计算散列值,命令或是传送要散列的数据, 或是传送在智能卡之外已算出的散列值以及需用于最后一步计算的数据。在后一种情况,对最后字组的散列 计算是在卡中执行的,这种方法的好处是散列值可以在卡外能显然较快形成,但最后一步仍在卡内进行。从 纯粹加密的观点看来,这仅仅提供了少量额外的安全性,但可稍微限制操纵散列值的可能性,被广泛用在实 际中。
由于散列的数据量通常大于一条命令中所允许的数据字段的最大长度,比⒋SH选项中使用了“7级” (Level-7)链接,意即数组可在应用级上逻辑地链接在一起。最终的散列数组中含有一个标记以通知命令 散列操作至此字组结束。