一卡通密鑰管理系統的設計與實現
文章出處:http://5052h112.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卡技術和密碼算法技術為基礎,提出了一卡通系統的密鑰管理系統的解決方案。該解決方案具有較好的實用性和安全性,能夠支持豐富的校園智能卡的應用。@