校园CPU卡密钥管理系统的设计与实现.pdf
通信技术C o m m u n i c a t i o n s T e c h n o l o g i e s51前沿技术L e a d i n g-e d g e T e c h n o l o g i e s收稿日期:2 0 0 5-1 2-1 1作者简介:刘金伟,1 9 7 2 年生,男,工程师,在读博士,研究方向:计算机网络、嵌入式系统等。*“211”工程“数字工大”专项基金资助项目(05002011200201)刘金伟,黄樟钦,侯义斌,王普(北京工业大学计算机学院,北京 1 0 0 0 2 2)【摘 要】文章研究了密钥管理系统在校园一卡通系统中的应用模式。首先以CPU卡技术和密码算法技术为基础,提出了一卡通系统的密钥管理系统的解决方案;然后针对系统的实现,描述了密钥分散的设计和实现过程;最后对系统中使用的算法进行了描述。密钥管理系统保证了高强度的校园一卡通系统的安全性。【关键词】CPU卡;校园一卡通;密钥管理;加密算法【中图分类号】TP309 【文献标识码】A 【文章编号】1009-8054(2006)10-0051-04Design and Implementation of Key Management System of Campus CPU Card SystemLiu Jinwei,Huang Zhangqin,Hou Yibin,Wang Pu(College of Computer Science,Beijing University of Technology,Beijing 100022,China)【Abstract】In this paper,it is devoted to the study of application of the key management system,which exampled withthe implementation of the key management system in Campus E-Card System.First,the issue brings forward the resolu-tion of the smart card encryption key management system for the Campus E-Card System based on CPU card technologyand encryption algorithm.The design and implementation of the encryption key diversify are described.Then the algo-rithm used in the system.And it assured the safety of Campus E-Card system.【Keywords】CPU card;campus e-card;key management;cryptographic algorithm校园 C P U卡密钥管理系统的设计与实现*1 引言校园一卡通系统是一个多功能IC卡应用系统,如食堂收费、学生成绩管理、图书馆借阅等,对提高工作效率和管理水平、减少现金流通等方面都大有益处。对于校园一卡通系统,用密码技术保护系统的安全取决于对密钥的保护,密钥管理系统是整个IC卡应用系统安全的核心,密钥系统的管理和控制是IC卡应用系统的关键,密钥管理系统的安全性将直接影响整个应用系统的安全性。校园一卡通项目中采用双界面CPU卡作为加密和存储介质,CPU卡的加密解密功能由内嵌的硬件加密协处理器来实现,具有很高的安全性,按照对称加密体制设计和实现了一种新型密钥管理系统。系统中的密钥涉及到两部分:一部分是由银行负责产生并维护的密钥,另一部分由校园一卡通系统中的密钥管理系统产生,并由校方进行维护。密钥管理系统符合PBOC的密钥管理规范1。2 密钥系统的设计与实现密钥管理包括密钥的生成、装入、传递、存储、恢复、销毁等内容。密钥管理系统中使用的密钥都是双倍长度的密钥(16字节),交易过程中使用的过程密钥都是单倍长度(8字节)。一卡通生成的主密钥称为根密钥,标志为G*K,主要有消费/取现共享密钥。一卡通生成和使用的密钥称为主密钥,标志为M*K。用户卡使用的经过主密钥分散的密钥称为用户卡密钥,标志为D*K。用户卡交易过程中使用的过程密钥标志为S*K。系统利用密钥卡来承载密钥,密钥卡在一卡通密钥管理系统内、一卡通和一卡通、一卡通和用户卡之间进行安全传递。2.1 密钥类型在密钥管理系统中的密钥可分为三大类:一卡通共享密钥、一卡通专有密钥和管理密钥2。一卡通共享密钥由一卡通C o m m u n i c a t i o n s T e c h n o l o g i e s通信技术52L e a d i n g-e d g e T e c h n o l o g i e s前沿技术生成和维护,安全存放在一卡通的母卡A和母卡B中。消费/取现根密钥是一卡通共享主密钥,用于PBOC卡的取现/消费交易。一卡通专有密钥由一卡通生成和维护,安全存放在一卡通的母卡A和母卡B中。一卡通生成其它交易使用的主密钥,包括部分PBOC卡片的维护密钥。管理密钥有两种作用:作为认证密钥和保护密钥。认证密钥用来对卡片做外部认证的,一般记为ADMK。保护密钥是用来对主密钥进行加密保护注入到卡片或输出到另一张卡片。2.2 密钥的索引每张用户卡含有两组密钥,用两个索引值来区分,正常时使用第一索引的密钥,异常情况下(如密钥泄露)启用第二索引。此机制保证在异常情况下更换密钥时,不需收回已发出的用户卡,只需将应用系统(包括PSAM)中的密钥更新为新的索引。每个版本的消费/取现根密钥含有两个索引,预留两个索引作为根密钥的备用索引,所以,消费/取现密钥采用4个索引。2.3 密钥卡的分类为了将共享密钥安全地传递到各个子系统,一卡通密钥管理系统采用几种密钥卡来实现。密钥卡分为三类:母卡、控制卡和认证卡。母卡里存放着一卡通生成的专有密钥,一卡通的母卡由母卡A和母卡B实现,只有同时持有A、B卡,才可以将主密钥导出。发卡母卡里存放着一卡通的消费/取现主密钥,一卡通将专有密钥注入发卡母卡,利用该卡将消费/取现密钥、圈存圈提等密钥注入用户卡。控制卡里的主密钥是有输出次数控制的,一卡通密钥管理系统里有总控卡、HSAM控制卡、PSAM控制卡三种。总控卡的主密钥由一卡通母卡A和母卡B导入;HSAM控制卡、PSAM控制卡是总控卡的子卡。认证密钥卡的主密钥文件里存放着密钥卡的认证密钥,有一卡通操作员卡和一卡通认证密钥卡两种。一卡通操作员卡是一卡通制卡员持有的制卡“钥匙”,操作卡里存放着一卡通密钥卡的管理密钥,可以对密钥卡的管理密钥进行认证修改,用一卡通认证密钥卡来验证一卡通所发下来的卡是否正确,并可以修改该卡的管理密钥。2.4 系统结构密钥管理系统包含的主要功能模块有:密钥生成模块;密钥传递模块;用户卡发卡;PSAM卡管理系统模块;测试发卡(附加功能模块);一卡通交易测试系统(附加功能模块);密钥的应用关系。图1所示的为密钥管理系统发卡过程中卡片产生的主要流程。(1)密钥生成模块。利用密钥生成模块来生成所需的主密钥,包括:消费主密钥;圈存、圈提主密钥;解锁(PIN)主密钥、重装(PIN)主密钥;修改主密钥,应用维护主密钥;TAC主密钥。一卡通主密钥由种子A和B、系统的随机数决定生成,生成的主密钥分别注入到母卡A、母卡B中,母卡A和母卡B由校领导保存,并持有该卡的PIN。主密钥的生成算法为:输入种子A和种子B后,产生一个随机数RAND,该随机数固定在这个生成模块上。KEY1=3DES(SEEDA|SEEDB,RAND)主密钥检查该KEY的强度,若合格则作为候选的主密钥输出;若不合格,RAND=RAND+1,继续产生KEY1,直到产生合格的主密钥。KEY2=3DES(SEEDA|SEEDB,RAND+)产生KEY2,直到输出外界所需个数的主密钥。系统可以采用KG卡来实现这一个过程,如图2所示。主密钥生成后,注入到母卡A和母卡B中。必须同时持有母卡A、母卡B及密钥卡的密码,才可以导出其中的主密钥。(2)密钥传递模块。利用图2所表示的密钥生成模块,两位校领导分别在密钥系统上输入种子A、B,密钥系统生成一卡通系统所需的密钥,并分别保存在母卡A和母卡B中。为了便于使用,密钥系统将母卡A、B的密钥合成在一张总控卡中,通过总控卡,密钥系统分别制作出三种不同的密钥卡,如图3所示。发卡母卡和发卡控制卡交给发卡机构(银行或公司);主机HSAM卡内的密钥(圈存密钥等)通过安全方式传递给IC卡片管理系统、校园IC卡结算服务器、圈存机。密钥系统还做出PSAM卡发卡控制卡,利用PSAM卡发卡子系统发出PSAM卡。图 1 密钥管理系统总体流程图 2 一卡通密钥生成模块图 3 密钥卡制作示意图通信技术C o m m u n i c a t i o n s T e c h n o l o g i e s53前沿技术L e a d i n g-e d g e T e c h n o l o g i e s3 相关算法为进一步提高系统安全强度,采用的是3DES算法,采用的密码长度为128位。相关算法如下。3.1 3DES算法3DES算法是指使用双长度(16字节)密钥K=(KL|KR)将8字节明文数据块进行3次DES加密/解密3。如下所示:Y=DES(K1)LDES-1(KR)DES(KLX)。解密的方式如下:Y=DES(K1)LDES(KR)DES-1(KLY),其中DES(KLX)表示用密钥K对数据X进行DES加密,DES-1(KLY)表示用密钥K对数据Y进行解密。3DES加密算法为:VOID 3DES(BYTE DoubleKeyStr16,BYTE Data8,BYTE Out8)BYTE Buf18,Buf28;DES(&DoubleKeyStr0,Data,Buf1);UDES(&DoubleKeyStr8,Buf1,Buf2);DES(&DoubleKeyStr0,Buf2,Out);3.2 密钥分散算法为了支持分级加密传递功能,还采用了密钥分散算法,是指将一个双长度的密钥MK对分散数据进行处理,推导出一个双长度的密钥DK。表示法:DK=Diversify(MK,DATA),密钥分散算法为:VOID Diversify(BYTE DoubleKeyStr16,BYTE Data8,BYTE Out16)BYTE Block8;3DES(DoubleKeyStr,Data,&Out0);for(int i=0;i8;i+)Blocki=Datai;3DES(DoubleKeyStr,Block,&Out8);3.3 安全报文算法安全报文(SEC-MSG)算法表示法:SECURE-MESSAGE=CLASS+INSTRUCT+P1+P2+P3+ENCYPHER DATA+MAC。CLASS,指令的类;INSTRUCT,指令代码;P1,该指令的参数1;P2,该指令的参数2;P3,该指令的参数3,P3=P3后跟数据的长度:ENCYPHERDATA=3DES(KEY,LENGTH of PLAIN-DATA+PLAIN DATA+PADBYTE)。KEY,产生该密文所用的密钥;PLAIN-DATA,需要加密的明文数据;LENGTH of PLAIN-DATA,明文数据的长度;PADBYTE,后缀数据的形式=“800000.”,如果LENGTH of PLAIN-DATA MOD 8=0,则不需要后缀数据。如果LENGTH of PLAIN-DATA MOD 8=N,则后缀数据的长度为8-N。MAC=3DES(KEY,CLASS+INSTRUCT+P1+P2+P3+ENCYPHER DATA+“800000”)。安全报文算法为:VOID SecureUpdate(BYTE DoubleKeyStr16,BYTE*pCmd,BYTE*pData,int DataLen)BYTE EncypherData255;IntToBcd(DataLen,&EncypherData0);memcpy(&EncypherData1,pData,DataLen)int Length=1+DataLen;int ModLen=Length%8;if(ModLen!=0)memset(&EncypherDataLength,0,8-ModLen);EncypherDataLength=0 x80;Length=Length+8-ModLen;C o m m u n i c a t i o n s T e c h n o l o g i e s通信技术54L e a d i n g-e d g e T e c h n o l o g i e s前沿技术for(int i=0;iLength;i+=8)3DES(DoubleKeyStr,&EncypherDatai,&EncypherDatai)/计算MACBYTE MACData255,MAC8;memcpy(&MACData0,pCmd,5);memcpy(&MACData5,EncypherData,Length);memcpy(&MACDataLength+5,x80 x00 x00,3);Length+=8;memset(MAC,0,8);for(i=0;iLength;i+=8)for(j=0;j8;j+)MACj=MACj MACDatai+j;3DES(DoubleKeyStr,MAC,MAC)4 结论按照PBOC的密钥管理系统规范,并结合校园一卡通的具体情况,开发了一个完善的密钥管理系统。本系统采用了成熟、安全性高的加密算法和完美的体系结构,其安全性是由CPU的安全性和DES算法的完全强度来保证的,具有很好的安全性,密钥管理系统既保证密钥的安全存放、传递和使用;也有对异常情况的应对措施,这样保证了高强度的校园一卡通系统的安全性。参考文献1 陈勇.金融IC卡的密钥管理.中国信用卡,2000,(10):64-66.2 王爱英.智能卡技术.北京:清华大学出版社,1996:213-216.3 宋震.密码学.北京:中国水利水电出版社,2002:162-165.RC6是Rijndael速度的两倍,并且论述RC6是最适合ARM处理器的,这使得Rc6特别适合现在的高端智能卡。RC6对JAVA实现的优良的适应性得到了一致的承认4。RC6不仅在加密速度而且在所需内存上都体现了它优良的性能。在AES算法的评选过程中,NISSIE是寻找一个能最大范围内适应环境和应用的密码,最后它们选择了Rijndael算法。而在本文中,我们对RC6和Rijndael做了详细的比较,从中可以看出两者各自的长处和短处。虽然最后RC6落选了,但它仍然是一个非常好的密码,具有一个好密码所期待拥有的所有优良性质:简单的设计、强大的安全和优异的性能。参考文献1 Rivest R L(MIT),Matt Robshaw(RSA Labs),Ray Sidney(RSA Labs),Yiqun Lisa Yin(RSA Labs).The RC6 Block Cipher:A simple fast secure AESproposal,September 28,2000.2 Dray J.Report on the NIST Java AES candi-date algorithm analysis.National Institute of Standardsand Technology.Proceedings of 3rd AES conference,New York,April 2000:149-160.3 Hachez G,Koeune F,Quisquater J,AESresults:Implementation of four AES candidates on twosmart cards.Proceedings of 2nd AES CandidateConference,Rome,March 1999:95-108.4 Sterbenz A,Lipp P.Performance of the AEScandidate algorithms in Java.Proceedings of 3rd AESconference,New York,April 2000:161-165.5 Weaver N,Wawrzynek J.A comparison of theAES candidates amenability to FPGA implementation.Proceedings of 3rd AES conference,New York,April2000:28-39.6 Weeks B,Bean M,Rozylowicz T,et al.Hard-ware performance simulations of Round 2 AdvancedEncryption Standard algorithms.Proceedings of 3rdAES conference,New York,April 2000:286-304.(上接第50页)