一种新型密钥管理系统的设计与实现
2008-11-04
作者:黄正全 张其善
摘 要: 随着对信息安全的要求不断提高,传统的等效于软件加密的密钥管理手段已不能满足信息系统的安全要求,因此设计了一种新型的密钥管理系统" title="管理系统">管理系统。该系统采用安全性高的CPU智能卡,用硬件方式来产生、存储和传递密钥,极大地提高了密钥管理系统的安全性。
关键词: 安全 智能卡 密钥
在传统的密钥管理系统中,密钥通常是存储在计算机或磁盘里,并借助于网络、磁盘以邮件的方式进行传递。为了安全起见,通常在传递之前,必须先将所要传递的密钥进行加密处理,接收方收到后再对其进行解密处理。由于采用这种方式时仍然需要传递密钥,只是具体的密钥对象改变了,因此安全性还是没有明显地提高;即使采用专门的硬件加密机器进行加密处理,但由于储存和传递环节的影响,其安全性能仍等同于软件加密效果,为此有必要提高储存和传递环节的安全性。
虽然传递密钥比较安全的做法是采用非对称加密体制,用己方私钥和对方公钥" title="公钥">公钥进行双重签名加密,对方用其私钥和己方公钥进行解密处理。采用这种方法来传递密钥比较麻烦,实现起来非常困难,不仅要求通信双方要有己方的公钥和私钥,而且还要获得对方的公钥。公钥和私钥的产生比较复杂和困难,而且通常还需要作为公证的第三方介入。目前绝大多数的通信双方都没有这些条件,并且它们之间的通信绝大多数是一次性的。考虑到上述原因,往往不采用非对称加密体制,而仍然采用实现方法和途径都相对简单和容易得多的对称加密体制。
采用对称加密体制时,加密密钥和解密密钥是相同的或相关联的,因此对其存储和传递的安全性要求非常高。如前所述,采用传统方式进行加密处理时,其效果等同于软件加密效果,在安全性方面不如硬件直接加密的效果;由此可以看出,如果我们既用硬件设备进行加密处理,又用专门的硬件设备来存储和传递密钥,这样就可以极大地提高密钥系统的安全性。目前能满足这两种要求,而且得到业界广泛认可的器件只有CPU智能卡。CPU卡具有硬件加密结构,可以作为加密器件使用;而且其特殊的软件体系-COS(Chip Operation System)又为数据存储和操作提供了较高的安全性,可用于小批量数据的存储。
本文采用CPU智能卡作为加密和存储介质,按照对称加密体制的思想,设计和实现了一种新型密钥系统,较好地实现了密钥的产生、存储和传递功能,满足了用户信息系统的安全要求。
1 CPU卡的安全功能
CPU卡作为智能卡家族中最新的成员,由于具有较高的安全性和应用方便性,得到越来越广泛的应用。CPU卡的安全性不仅体现在其硬件结构上,而且其软件系统COS也保证了应用的安全性,同时还提高了应用的方便性和灵活性。
CPU卡的加解密功能由内嵌的硬件加密协处理器来完成,具有很高的安全性。目前,CPU卡一般采用DES加密算法。DES算法是一种迭代分组密码算法,它加密时把明文以64比特为单位分成块,然后用密钥把每一块的明文转化为64比特密文。使用的密钥长度为64位,其中有效长度为56位(有8位用于奇偶校验)。为了进一步提高安全性,CPU卡通常采用三重DES算法加密,采用的密码长度为128位。
在应用时,CPU卡的安全性是由其COS的安全体系来保证的,它涉及到卡中信息的访问控制机制和保密机制。智能卡之所以能够迅速地发展并且流行起来,其中的一个重要的原因就在于它能够通过COS的安全体系给用户一个较高的安全保证和应用方便性。COS安全体系在概念上包括三部分:安全状态、安全属性和安全机制[1]。智能卡在安全状态满足安全属性的要求,通过执行操作指令,在安全机制的作用下,从当前的安全状态转移到下一个安全状态。
2 系统结构" title="系统结构">系统结构和功能
本密钥系统的主要功能是提供各种密钥的生成机制和加密算法,并将生成的密钥存储在具有密钥导出功能的CPU智能卡,即SAM(Security Access Module)卡中。系统结构如图1所示,密钥的发行采用梯级生成、下发方式,即由上一级生成下一级所需的各种子密钥,并以卡片的形式,采用线路加密的方式传递给下一级,极大地提高了系统的安全性和应用的方便性。根据功能,系统分为:根密钥系统、主密钥" title="主密钥">主密钥系统、初始化密钥系统和SAM卡密钥系统。系统结构具有一定的伸缩性,可以根据实际需要进行裁减,减少或增加分级层次,通常不超过三级传递关系(图中所示即为三级),以免系统过于复杂。在我们投入实际使用的系统中,根据用户要求和系统规模,取消了初始化密钥系统这一级而只采用了二级传递关系,使系统结构更加紧凑,实现起来更加简单容易。
根密钥系统的主要功能是生成系统最初的原始母密钥,即根密钥,它由系统安全管理员输入的系统安全字(由安全管理员自主决定)来生成;主密钥系统则用分散因子对根密钥进行分散加密,得到主密钥;而初始化密钥系统则对主密钥再进行分散加密,得到工作密钥系统所使用的工作密钥;SAM卡密钥系统则直接由根密钥导出SAM卡密钥,将其直接用于工作密钥系统,以控制和配合工作密钥的使用。
系统将生成的各种密钥存储在相应的CPU智能卡中。根密钥卡和主密钥卡采用具有密钥导出功能的SAM母卡;而SAM卡密钥则采用不具有导出功能的SAM卡来储存。SAM卡是一种加强了密钥安全功能的CPU卡,它支持密钥多级分散功能,比普通的CPU卡具有更高的安全性。工作密钥则直接存放于实际工作系统所使用的普通CPU卡中。
系统在生成相应的密钥时,同时生成相应的认证密钥,将其存储在相应的认证卡中,以控制和配合密钥卡的使用。如图2所示,密钥卡必须通过其认证卡的相互认证(外部认证)后才能正常使用;而密钥认证卡使用的合法性由个人身份识别号PIN保护,只有正确核对PIN后才可以使用。
而空白卡片的合法性,则是由生产商认证卡来验证的。生产商认证卡通常是由生产厂商制作的,其中存放着生产商传输代码,它也是由PIN保护的,正确核对PIN后才可以使用。由此可以看出,系统中每一张卡的使用都必须经过相应的认证,成功验证其合法性后,才能投入正常使用,这样,极大地保证了系统的安全性。
3 相关算法
在本系统,加密算法主要采用了非常成熟的、强度比较高的DES算法。为了进一步提高系统安全强度,在实际系统中,采用的是以DES算法为基础的3DES" title="3DES">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(DKL||DKR)。其算法如下[3]:
推导DK左半部分DKL的方法是:
·将分散数据的最右16个数字作为输入数据;
·将MK作为加密密钥;
·用MK对输入数据进行3DEA运算。
推导DK右半部分DKR的方法:
·将分散数据的最右16个数字求反,作为输入数据;
·将MK作为加密密钥;
·用MK对输入数据进行3DEA运算。
3.3 原始密钥的生成算法
第一步,输入种子A和种子B:由两个独立的人各输入一个16位数(或少于16位),分别作为SeedA和SeedB;
第二步,计算种子C: SeedC=SeedASeedB;
第三步,密钥种子的初始化:
·KEYINIT=常量
·Seed=DES-1(DES(DES-1(KEYINIT,SeedC),SeedB),SeedA)
·设K3=Seed
第四步,密钥种子的生成:
重复执行从第四步到第六步,直到所有的原始密钥全部生成。
本系统采用了成熟、安全性高的加密算法和完善的体系结构,其安全性是由CPU的安全性和DES算法的安全强度来保证的。经过国内某单位两年多的实际运行,证明本系统较好地贯彻了“秘密在于密钥”的思想,具有较高的安全性和先进性,主要表现为如下几个特点:
(1)采用安全性高的CPU卡作为密钥的产生、存储和传递介质,保证了密钥数据的安全性;CPU卡独特的安全体系保证了其中的数据不会被非法操作;
(2)利用硬件加密技术,对整个过程中所使用的临时变量进行加密处理,并对传递过程进行线路加密,保证了在生成和传递过程的安全性;
(3)分级传递结构,使系统具有一定的扩展性,既支持独立系统,也可用于分布式系统;
(4)系统具有自愈合能力,对关键数据进行备份,保证了系统具有一定的抗毁能力;
(5)系统结构简单、实现方便、性价比较高。
参考文献
1 Information technology-Identification cards-Integrated circuit(s) cards with contracts-Part 4:terindustry commands for interchange. International Standard ISO/IEC 7816-4, 1995
2 王爱英. 智能卡技术. 北京:清华大学出版社,1996
3 PSAM卡应用规范(试行).中国人民银行,1999