一卡通密钥管理系统的设计与实现
文章出处:http://www.singbon.com 作者:彭旭荣 ,阳王东 人气: 发表时间:2011年11月06日
作为现代信息平台的热门应用,校园“一卡通”是集成了考勤、门禁、信息咨询、教务服务、图书借阅、实验计费、医疗支付、学费缴付、奖学金发放、工资福利发放、科研经费核算等各种校园消费的结算,甚至包括银行金融交易等在内的众多服务功能“ ,可满足不同层次的各类学校的应用需求,深受教育行业用户的欢迎。但是对于IC卡的应用最重要的是IC卡的密码安全问题,要保证I C卡密码的应用安全,就必须有一个安全可靠的密钥管理系统。有些IC卡的密码管理系统为单层密钥系统,也就是直接根据一个通用的根密钥来生成用户消费卡的密钥,这种密钥生成需要系统的根密钥,根密钥的安全性难以保证,而且难以对IC的应用系统的密码进行扩展,不能适应一张IC卡 集成多种IC卡应用系统,他们既要有统一的安全体系,又有独立密码安全机制。既能够实现在校园的真正一一卡通,又能保证不同应用相互之间的安全性和可靠性。本文探讨构建一种多层的密钥安全管理机制来满足校园一卡通的安全应用需要。
1密钥管理系统的设计与实现
1.1密钥管理系统的体系结构
密钥管理包括密钥的生成、装入、传递、存储、恢复、销毁等内容。一卡通生成的主密钥称为根密钥, 由公司或团体的三位领导各输入8字节密码,经3DES数据加密算法按照一定规则多次加密并截取得到,存储在系统惟一的根卡上。一卡通系统每个应用对应一个母密钥,母密钥由根密钥加密8位随机整数得到,随机数加密存储在根卡上,母密钥加密持卡人密码可以制作母卡,一个母密钥可以发放多张母卡,母卡与根卡都通过持卡人的输入的Pin码进行验证访问,这样保证密码存储的安全性。消费系统的发卡子系统则是利用相应业务的母卡来初始化用户消费卡。一卡通密钥管理系统的实现结构如图1所示。
图1一卡通密钥管理系统的实现结构
1.2根密钥的生成
由公司或团体的三位领导各输入8字节字符串,分别为a、b、c,转化为字节类型为aKey、bKey、cKey。先使用bKey加密aKey得到dKey,然后用cKey加密dKey得到r,截取r的前8位则得到根密钥rKey,存入根卡的指定位置。具体流程如图2所示。
图2根密钥的生成
1.3根卡的生成
由根卡持卡人输入8字节的密码cOde,用COde对根密钥进行加密得到rcodel,截取rcodel前面16位作为一级密文rcodel 16,然后再用COde对rcodel 16进行加密得到rcode2,截取rcode2前面l6位作为二级密文rcode216,将rcodel 16和rcode2l6写入根卡指定位置,完成根卡的生成。具体流程如图3所示。
图3根卡的制作
1.4根卡的验证
从根卡中指定位置获得根卡的一级密文rcodel 16和二级密文rcode216,用根卡持卡人输入的8字节密码对一级密文rcodel 16进行加密得到rcodel,截取rcodel的前面l6位并将其转化为字符串strl, 将二级密文rcode216转化为字符串str2,比较strl和str2,若相等,则根卡验证成功,反之失败。具体流程如图4所示。
图4 根卡的验证
1.5母密钥的生成
使用从根卡中得到的根密钥加密系统生成的8位随机整数得到mk,截取mk的前面8位得到母密钥,并将母密钥和该母密钥的应用类型索引一起存入根卡指定位置。具体流程如图5所示。
图5母密钥的生成
1.6母卡的制作
由母卡持卡人输入8字节的密码code,用code对母密钥进行加密得到mcodel,截取mcodel前面16位作为一级密文rcodel 16,然后再用code对rcodel 16进行加密得到mcode2,截取mcode2的前面l6位作为二级密文rcode216,将rcodel16和rcode216写入母卡指定位置,完成母卡的生成。具体流程如图6所示。
图6母卡的制作
1.7母卡的验证
从母卡中指定位置获得母卡的一级密文rcodel16和二级密文rcode216,用母卡持卡人输入的8字节密码对一级密文rcodel 16进行加密得到rcodel,截取reodel的前面16位并将其转化为字符串strl, 将二级密文rcode216转化为字符串str2,比较strl和str2,若相等,则母卡验证成功,反之失败。具体流程如图7所示。
图7母卡的验证
1.8密钥管理实现
1.8.1根密钥的生成
private void b— — creatRootMy——Click(object sender,
EventArgs e)
{
/ 字符串书写检查部分代码已省略 /
byte[】dKey Encoding.Default.GetBytes(ds.
DesEncrypt(aKey8,bKey8,”zhanshen”));
Array.Copy(dKey,0,temp,0,8);
byte[】r = Encoding.Default.GetBytes(ds.
DesEncrypt(temp,cKey8,”zhanshen”));
Array.Copy(r,0,rKey8,0,8);//根密钥的字节
数组形式
isCanOperate = true;
groupBox2.Enabled = true
log.Info(”根密钥生成成功! ”);
MessageBox.Show(”根密钥生成成功! ”, ”提示!
”);
}
实现界面如图8所示。
图8根密钥生成界面
1.8.2母密钥的生成
DesSecurity ds= new DesSecurity();
byte[】mk = Encoding.Default.GetBytes(ds.
DesEncrypt(ran8,Card—root.rKey8, ”zhanshen’ ));
//用DES算法生成母密钥(根密钥加密分散因子)
Array.Copy(mk,0,mKey8,0,8);//取前面个字节作为母密钥
monisCanOperate : true:
groupBox4.Enabled = true:
log.Info(”母密钥生成成功! ”);
}
实现界面如图9所示。
图9母密钥生成界面
1.9系统测试
在测试过程中,根密码和母密码的产生采用分段密码产生和保存机制,在应用过程中难以复制,也在一定程度上杜绝个别人为的不安全因素。而且可以根据应用来制作不同业务的母卡,不同业务之问如果未经授权是不能够互访的,这样也系统的安全的分层管理。在加密算法中,在3D ES算法的基础上增加了分散算法和随机算法,并在加密解密过程进行分散操作,增加r解密的难度,提高了密码的安全性。并且系统具有良好可实现性和性能,表l是发卡的时间统计表。从统计表中可以得出该密钥管理系统能够适应较大规模的发卡应用。
2 结束语
本文以密钥管理在校园园一卡通系统中的一应用为中心。研究密钥管理系统在一卡通系统中的具体应用模式,并以IC卡技术和密码算法技术为基础,提出了一卡通系统的密钥管理系统的解决方案。该解决方案具有较好的实用性和安全性,能够支持丰富的校园智能卡的应用。@