1 CPU卡的安全功能
CPU卡作为智能卡家族中最新的成员,由于具有较高的安全性和应用方便性,得到越来越广泛的应用,CPU卡的安全性不仅体现在其硬件结构上,而且其软件系统COS也保证了应用的安全性,同时还提高了应用的方便性和灵活性。 CPU卡的加\u35299解密功能由内嵌的硬件加密协处理器来完成,具有很高的安全性。目前,CPU卡一般采用DES加密算法。DSP算法是一种迭代分组密码算法,它加密时把明文以64比特为单位分成块,然后用密钥把每一块的明文转化为64比特密文。使用的密钥长度为64位,其中有效长度为56位(有8位用于奇偶校验)。为了进一步提高安全性,CPU卡通常采用三重DES算法加密,采用的密码长度为128位。 在应用时,CPU卡的安全性是由其COS的安全体系来保证的,它涉及到卡中信息的访问控制机制和保密机制。智能卡之所以能够迅速地发展并且流行起来,其中的一个重要的原因就在于它能够通过COS的安全体系给用户一个较高的安全保证和应用方便性。COS安全体系在概念上包括三部分:安全状态、安全属性和安全机制[1]。智能卡在安全状态满足安全属性的要求,通过执行操作指令,在安全机制的作用下,从当前的安全状态转移到下一个安全状态。2 系统结构和功能
CPU卡密钥管理系统的主要功能是提供各种密钥的生成机制和加密算法,并将生成的密钥存储在具有密钥导出功能的CPU智能卡,即SAM(Security Access Module)卡中。密钥的发行采用梯级生成、下发方式,即由上级生成下一级所需的各种子密钥,并以卡片的形式,采用线路加密的方式传递给下一级,极大地提高了系统的安全性和应用的方便性。根据功能,系统分为:根密钥系统、主密钥系统、初始化密钥系统和SAM卡密钥系统。系统结构具有一定的伸缩性,可以根据实际需要进行裁减,减少或增加分级层次,通常不超过三级传递关系(图中所示即为三级),以免系统过于复杂。在我们投入实际使用的系统中,根据用户要求和系统规模,取消了初始化密钥系统这一级而只采用了二级传递关键,使系统结构更加紧凑,实现起来更加简单容易。 根密钥系统的主要功能是生成系统最初的原始母密钥,即根密钥,它由系统安全管理员输入的系统安全字(由安全管理员自由决定)来生成;主密钥系统则用分散因子对根密钥进行分散加密,得到了主密钥;而初始化密钥系统则对主密钥再进行分散加密,得到工作密钥系统所使用的工作密钥;SAM卡密钥系统则直接由根密钥导出SAM卡密钥,将其直接用于工作密钥系统,以控制和配合工作密钥的使用。 系统将生成的各种密钥存储在相应的CPU智能卡中。根据钥卡和主密钥卡采用具有密钥导出功能的SAM母卡;而SAM卡密钥则采用不具有导出功能的SAM卡来储存。SAM瞳是种加强了密钥安全功能的CPU卡,它支持密钥多级分散功能,比普通CPU卡具有更高的安全性。工作密钥则直接存放于实际工作系统所使用的普通CPU卡中。 系统在生成相应的密钥时,同时生成相应的认证密钥,将其存储在相应的认证卡,以控制和配合密钥卡的使用。如图2所示,密钥卡必须通过其证卡的相互认证(外部认)证后才能正常使用;而密钥认证卡使用的合法性由个人身份识别号PIN保护,只有正确核心对PIN后才可以使用。 而空白卡片的合法性,则是由产生商认证卡来验证的。生产商认证卡通常是生产厂商制作的,其中存放着生产商传输代码,它也是由PIN保护的,正确核心对PIN后才可以使用。由此可以看出,系统中每一张卡的使用都必须过相应的认证,成功验证其合法性后,才能投入正常使用,极大地保证系统的安全性。3 相关算法
在本系统,加密算法主要采用非常成熟的、强度比较高的DES算法。为了进一步提高系统安全强度,在实际系统中,采用的是以DES算法为基础的3DES算法。关算法简介如下。
3.1 3DES算法
3DES算法用两个密钥(KL和KR)对明文(X)进行3次DES加密/解密[2]。 3DES的加密方式: Y=DES(KL,DES-1(KR,DES(KL,X))) 对应的解密方式为: X=DES-1(KL,DES(KR,DES-1(KL,Y))) 其中DES(K,X)表示用密钥K对数据X进行DES加密,DES-1(K,Y)表示用密钥K对数据Y进行解密(以下同)。
3.2 分散算法
为了支持分级加密传递功能,CPU卡还采用了密钥分散算法,它是指将一个双长度(16字节)的密钥MK,对分散数据进行处理,推 导出一个双长度的密钥DK(DKLDKR)。其算法如下[3]: 推导DK左半部分DKL的方法是: ·将分散数据的最右16个数字作为输入数据; ·将MK作为加密密钥; ·用MK对输入数据进行3DEA运算。 推导DK右半部分DKR的方法; ·将分散数据的最右16个数字求反,作为输入数据; ·将MK作为加密密钥; ·用MK对输入数据进行3DEA运算。 3.3 原始密钥的生成算法
第一步,输入种子A和种子B:由两个独立的人各输入一个16位数(或少于16位),分别作为SeedA和SeedB; 第二步,计算种子C:SeedC=SeedA◎SeedB; 第三步,密钥种子的初始化: ·KEYINIT=常量 ·Seed=DES-1(DES(DES-1(KEYINIT,SeedC),SeedB),SeedA) ·设K3=Seed 第四步,密钥种子的生成: ·K0=DES-1(DES(DES-1(K3,SeedC),SeedB),SeedA)K3 ·K1=DES-1(DES(DES-1(K0,SeedC),SeedB),SeedA) ·K2=DES-1(DES(DES-1(K1,SeedC),SeedB),SeedA) ·K3=DES-1(DES(DES-1(K2,SeedC),SeedB),SeedA) 第五卡,密钥种子的检验: ·K4=K0+K2不是弱DES密钥; ·K5=K1+K3不是北DES密钥; ·K4不等于K5; 第六卡,主密钥生成: ·A=K0K1 ·B=K2K3 ·MK=A+B,MK即为生成的原始密钥 重复执行从第四步以第六步,直到所有的原始密钥全部生成。 本系统采用了成熟、安全性高的加密算法和完美的体系结构,其安全性是由CPU的安全性和DES算法的完全强度来保证的。经过国内 某单位两年多的实际运行,证明本系统较好地贯彻了“秘密在于密钥”的思想,具有较高的完全性和先进性,主要表现为如下几个 特点: (1)采用完全性高的CPU卡作为密钥的产生、存储和传递介质,保证了密钥数据的安全性;CPU卡独特的安全体系保证了其中的数 据不会被非法操作; (2)利用硬件加密技术,对整个过程中所使用的临时变量进行加密处理,并对传递过程进行线路加密,保证了在生成和传递过程 的安全性; (3)分级传递结构,使系统具有一定的扩展性,既支持独立系统,也可用于分布式系统; (4)系统具有自愈合功能,对关键数据进行备份,保证了系统具有一定的抗毁能力; (5)系统结构简单、实现方便、性价比较高。