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