对于很多应用来说加密算法" title="加密算法">加密算法命令是十分重要的。例如,它们使智能卡" title="智能卡">智能卡可比较容易用做加密和解密设备或用 于验证数字签名。许多智能卡操作系统有其自已执行加密算法的命令组。因为没有这类功能的标准,出现了 诸如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 CRYPTOGRAPHIC CHECKSUM(计 算加密代码和)选项是用来求加密的校验和(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标准说明了命令的四种选项可用于数字签名。
PERFORM SECURITY OPERATION命令的HASH(散列)选项可用于计算散列值,命令或是传送要散列的数据, 或是传送在智能卡之外已算出的散列值以及需用于最后一步计算的数据。在后一种情况,对最后字组的散列 计算是在卡中执行的,这种方法的好处是散列值可以在卡外能显然较快形成,但最后一步仍在卡内进行。从 纯粹加密的观点看来,这仅仅提供了少量额外的安全性,但可稍微限制操纵散列值的可能性,被广泛用在实 际中。
由于散列的数据量通常大于一条命令中所允许的数据字段的最大长度,比⒋SH选项中使用了“7级” (Level-7)链接,意即数组可在应用级上逻辑地链接在一起。最终的散列数组中含有一个标记以通知命令 散列操作至此字组结束。
这一命令选项还有着它自己的选项,计算出的散列值可以或是在对命令的响应中立即传送给终端,或是存 储在卡中供后继的命令使用。像在前面的命令中所述的那样,所用的填补和密钥需用一条在先的MANAGE SECURITY ENVIRONMENT命令予以规定。
表6 遵照ISO/IEC 7816-8的PERFORM SECURTY OPERATION的HASH选项的功能
COMPUTE DIGITAL SIGNATURE选项可用来签署数据,要签署的数据串通常都已经被压缩成散列值,必须传送 给智能卡。除非前一条是PERFORM SECURITY OPERATION命令的HASH选项,其结果已经存在于卡中。COMPUTE DIGITAL SIGNATURE选项也允许把要签署的数据直接传送给卡。在签名产生之前先把它们散列。对大量的数 据,可随HASH选项采取“7级”散列。
表7 遵照ISO/IEC 7816-8的PERFORM SECURITY OPERATION的COMPUTE DIGITAL SIGNATURE选项的功能
若散列值之长度并不对应于公开密钥算法的输人数据长度,则必须予以填补。对此选项亦由MANAGE SECURITY ENVIRONMENT命令中的参数规定,它也用来确定所用之密钥。
验证COMPUTE DIGITAL SIGNATURE选项的功能由VERIFY DIGITAL SICNATURE选项提供。原理上,任何一台足 够快的数字计算机都可用来验证签名,因为所需密钥是公开的。然而,在许多情况下公开密钥的有效性必须 首先用一个另外的数字签名予以验证。这确实和安全性有关,而且不应在不安全的计算机上进行。对数字签 名的验证,其相关的公开密钥必须或是已为智能卡隐含地知道,或是经命令选项VERIFY CERTIFICATE(验证 凭证)明显地使卡获得。要验证的数据可以直接传送给VERIFY DIGITAL SIGNATURE或以相关的散列值的形式 传给,所有其他参数则和COMPUTE DIGITAL SICNATURE选项是一样的。
在开放系统中,验证数字签名的公开密钥通常用凭证当局的秘密密钥予以签署。公开密钥的可靠性在使用 前必须被验证,因为这是惟一的方法以确信密钥不是伪造的。这项验证必须在安全的环境中进行,例如在智 能卡中,否则有可能遭受到控制。ⅦⅢⅣ CERTIπCATE(验证凭证)命令选项专门提供对签署了的公开密钥 的验证。一旦公开密钥被验证为真实可信的,就可以或是把它永久存在智能卡中,或是紧接着用一条VERIFY DIGITAL SIGNATURE命令来使用它。
如果智能卡的操作系统支持产生非对称加密算法密钥对的产生,则此过程可用ISO/IEC7816-8的命令 GENERATE PUBLIC KEY PAIR(产生公开密钥对)来启动,其具体功能见表10。密钥产生需用之所有参数,必 须先用MANAGE SECURITY ENVIRONMEN命令设置妥当。
图2表明了以上所述的命令如何可以用来产生一个数字签名和验证。
图2