原创
IC卡安全结构设计示例(1)
2008-10-20 13:28
2841
3
3
分类:
软件与OS
1、IC卡卡片安全环境
(1)安全环境的实现
在卡内,安全环境的实现可以分为“对称密钥体系安全环境”和“非对称密钥体系安全环境”两种形式。
A、对称密钥体系安全环境
目前,在卡内实现的对称密钥加密算法主要是DES算法和2KEY的3DES算法两种。
对称密钥体系安全环境的内容包含了以下几个层次:
* 所采用的加密算法,选择是DES算法还是3DES算法。
* 所要进行的操作,选择是进行数据加密、数据解密、MAC计算、MAC校验等。
* 密钥的查找方式,如果是DF下的主控密钥的话,通常保存在DF的文件描述块等系统数据区中,如果是其他对称密钥的话,通常保存在DF下的对称密钥EF文件中。在EF文件中查找密钥的方法主要是用密钥索引、密钥版本、密钥用途等等。
一般的,不同的对称加密算法KEY的长度也不相同,例如DES算法KEY长度为8Byte,2KEY的3DES算法的KEY长度为16Byte,通过选择KEY也可以间接的指定加密算法的类型。
B、非对称密钥体系安全环境
非对称密钥算法目前在卡内实现的主要是RSA算法,当然也有可能包括椭圆曲线等其他公钥算法。另外,在数字签名算法上通常还采用DSA算法。
非对称密钥体系安全环境的内容包含了如下几个层次:
* 所采用的加密算法,通常的,卡片可以设置默认算法是RSA算法,应用可以通过命令进行其他设置。
* 所要进行的操作,非对称密钥体系的安全操作比较复杂,包括了数据加密、数据解密、签名、签名验证、证书解析、密钥交换等等。但是,从算法实现上来看,可以归结为RSA数据加密、RSA数据解密、DSA签名计算、DSA签名验证4种,RSA的签名和密钥交换等都可以转换为RSA的数据加解密计算模式。
* 所进行操作的数据编码格式。和对称数据加解密计算不同的是,公钥加解密算法对数据进行计算前需要进行一定的数据编码,所采用的编码方式PKCS15、PKCS21等多种格式。对于DSA算法,编码方式在算法中已经指定。
* 对数据的散列算法。数字签名前,一般需要对签名数据进行散列计算,所采用的散列函数可以选择MD5、SHA1等。对于DSA算法,要求采用SHA1散列算法。
* 密钥的确定。非对称密钥在卡内存储在非对称密钥文件中,以密钥对的方式保存,可以通过密钥文件的SFI进行查找,和对称密钥算法一样,通过确定非对称密钥也可以间接指定所采用的加密算法。
在密钥文件中,一般保存了公钥、私钥对,选择使用公钥或者私钥不需要显式进行,在指定操作类型时间接的就指定了密钥,例如RSA数据加密一定选择公钥进行,RSA数据解密一定选择私钥进行等。
(2)对安全环境的操作
安全环境在卡内一直存在,伴随着卡片的安全操作不断的变化。
对安全环境主要包括如下操作:
* 默认安全环境的设置。在卡片上电复位以后,COS自动加载默认的安全环境,一般选择一个空的对称密钥体系安全环境。在默认安全环境下,不能进行任何安全操作。
* 对称密钥体系安全环境的设置。在涉及对称密钥体系的安全操作时,例如MAC、数据加密等,安全环境的设置一般包含在命令报文参数中。在执行相应操作之前,COS需要事先设置环境,检查设置参数(查找密钥,比较密钥的属性是否能够进行相应操作等)。
* 非对称密钥体系安全环境的设置。在涉及对非对称密钥体系的安全操作,对安全环境的设置比较复杂,一般通过专用的命令来进行。所有的后续安全操作命令执行前都要检查当前的安全环境设置是否满足要求。
* 安全环境的清除。在完成一个完整的安全操作或者执行了其他非安全相关命令以后,当前安全环境自动清除,并且所有中间数据被抛弃。对称密钥体系的安全操作一般只有一条命令,命令执行完毕COS将当前安全环境设置为默认安全环境,对于所采用密钥、算法、计算中间变量、计算最终结果等数据必须全部清除;非对称密钥体系的安全操作一般通过一组命令链的形式来完成,在命令链全部结束以后,或者命令链执行的过程中被其他命令打断时,COS将安全环境设置为默认的安全环境,所有的相关数据被清除。COS开始等待下一次安全操作的到来。
2、安全状态的维护
(1)数据结构
IC卡中一般包括了3种安全状态:
* 全局安全状态和当前安全状态,对于这两种安全状态,在对应文件被选择期间需要一直保存,所以通常选择采用两个安全状态字节分别记录这两个状态值。
* 特定命令的安全状态。特定命令的安全状态一般针对的是带MAC的命令,其安全状态记录的命令的MAC校验结果,这个结果一般在命令执行前进行校验得到。在命令执行中和命令执行完毕以后不再有意义,所以,该安全状态一般只是在命令执行期间作为一个过程临时变量来记录。
(2)维护操作
特定命令的安全状态比较简单,一般只对应了两种操作:
* 命令开始执行时状态的初始化。
* MAC校验以后状态的修改。然后命令执行代码根据该状态决定是否继续下一步的操作。
下文对安全状态的维护一般指的是对全局和当前安全状态的维护,通常采用的是状态机的方式。
* 在卡片上电复位以后,COS对全局和当前安全状态初始化,此时的安全状态为最低状态。
* 进行文件选择操作以后,对当前安全状态进行修改,将当前安全状态置为最低状态,如果选择的是MF的话,同时将全局安全状态置为最低状态。
* 在当前文件下进行安全操作之后,包括密码校验、内外部认证等,如果操作成功的话,将当前安全状态修改为安全对象的指定值(通常存放在PIN、KEY的记录体中,也就是记录体中的STAT字节)。如果当前文件是MF的话,同时修改全局安全状态。
对历史安全状态不需要进行缓存,如果进行了成功的选择文件操作之后,当前安全状态自动丢失。在实现上,可以进行判断,如果是对当前文件的重复选择,可以丢失当前安全状态,也可以不做任何操作。
文章评论(0条评论)
登录后参与讨论