原创
IC卡安全结构设计示例(2)
2008-10-20 13:28
3001
9
9
分类:
软件与OS
3、安全机制的选择
(1)加密算法
DES和3DES是目前IC卡内通常必须实现的算法,可以选择软件实现,也可以利用芯片的协处理器(如果有的话)硬件实现。
如果支持PKI体系的话,RSA算法是首选,RSA算法的实现在卡内必须借助硬件协处理器进行。
除此之外,对称加密算法还可以选择RC2、RC4、IDEA或者其他应用选择的算法,这个选择的过程由应用来决定,COS可以算法调用接口。
(2)MAC校验
MAC校验是卡片命令安全的重要基础,一般必须在卡内实现单倍长和双倍长MAC的计算。
(3)认证
内外部认证是重要的卡片安全机制,也是提供卡片和终端之间进行相互身份验证的重要手段。内部认证是终端对卡片的认证,目前一般采用的是对称密钥体系算法和非对称密钥体系算法相结合的方式进行,终端可以进行选择。
外部认证是卡片对终端的认证,目前一般只采用对称密钥体系算法进行。
(4)散列函数
在支持PKI体系的卡片中,散列函数是一个很重要的支持模块,一般和数字签名一起结合实现。散列函数在卡内的实现可以有两种形式。
* 卡片内实现散列函数算法,卡片可以完成从原始数据计算到最终签名结果输出的全过程。卡片内可选择实现的散列函数包括最常见的MD5和SHA1两种。
* 卡片内不实现散列函数算法,卡片提供将卡外计算的散列函数结果输入卡内的手段,输入的结果参与接下来的签名计算,这时卡片能够接纳各种算法的散列结果。
散列函数上述两种不同模式的实现选择主要根据卡片自身的资源利用情况来决定,一般的,进行散列函数计算的原始数据都比较长,如果选择全部在卡内进行计算的话,卡片和终端之间的I/O数据量很大,计算速度会很慢,并且,散列函数一般实现以后代码都较长,占用很大的ROM空间。所以,散列函数的实现方式可以根据应用的需求和芯片内空间的实际情况进行选择。
(5)数字签名
数字签名以非对称密钥算法为基础,一般包括RSA算法和DSA算法两种。
数字签名时,需要选择数据的编码方式,在不同的应用规范中,有不同的方式可供选择,编码方式的选择和实现必须由应用来决定。
4、安全属性的实现
(1)对象安全属性
在卡片内,对象安全属性采用安全属性字节的方式来表示,也就是文件系统文件描述块中用到的安全控制字节SC。
每一个SC都事先由COS定义了对对象的操作类型,SC的值便是操作的属性体。
SC用1Byte来表示,可以分为两个半字节,即高半字节SCH和低半字节SCL。SCH和SCL的取值都可以从0到0x0F,共16种情况。
安全属性字节和相应的安全状态有一定的比较关系。也就是如果安全状态在SCL和SCH组成的闭合区范围内时:
SCH≤S≤SCL
COS认为安全状态S满足了该对象的安全属性,可以进行对应操作,否则认为安全状态S不满足安全属性,对应操作无法进行。
安全状态S的值必须在0与0x0F之间,否则它满足不了任何安全属性定义。如果SCH取值为0,SCL取值为F时,任何的安全状态在它们组成的闭合区间内,也就是任何的安全状态都满足要求,这表示对对象的操作没有任何限制。如果SCH取值比SCL大时,任何的安全状态都不可能在它们组成的闭合区间内,也就是没有任何的安全状态可能满足要求,这表示对对象的操作完全禁止,例如对系统文件的写操作。对PIN、KEY文件的读操作等等。
在这一比较关系中,安全状态可以从当前安全状态和全局安全状态中进行选择。默认的,COS将用当前安全状态的值进行比较。为了满足不同应用的需要,在文件描述块中我们设置了一个安全控制托管字节SCInd。SCInd共分为8位,每一位分别对应了一种SC的托管关系。托管规则为:
* 如果SCInd某位为0,表示其对应的SC没有进行托管,也就是说在进行比较时选择当前安全状态来比较。
* 如果SCInd某位为1,表示其对应的SC进行了托管,也就是说在进行比较时选择全局安全状态来比较。
目前文件描述块中只有SC1和SC2两个SC字节,所以,只利用了SCInd的前两位,剩余部分将来可以进行扩展利用。安全属性的托管模式可以根据应用的需求选择实现。对于属性字节的比较关系也可以由COS自由定义。
(2)命令安全属性
命令安全属性通常只包含了一个内容,即命令是否带MAC。
在实现上,可以在卡片支持的所有命令列表中加上一个属性字节,记录该命令是否有MAC,在命令接收之后COS根据这一字节的指示决定是否进行MAC校验操作。
文章评论(0条评论)
登录后参与讨论