一卡通密鑰管理系統(tǒng)的設(shè)計與實現(xiàn)
文章出處:http://coolbang.cn 作者:彭旭榮 ,陽王東 人氣: 發(fā)表時間:2011年11月06日
作為現(xiàn)代信息平臺的熱門應(yīng)用,校園“一卡通”是集成了考勤、門禁、信息咨詢、教務(wù)服務(wù)、圖書借閱、實驗計費、醫(yī)療支付、學(xué)費繳付、獎學(xué)金發(fā)放、工資福利發(fā)放、科研經(jīng)費核算等各種校園消費的結(jié)算,甚至包括銀行金融交易等在內(nèi)的眾多服務(wù)功能“ ,可滿足不同層次的各類學(xué)校的應(yīng)用需求,深受教育行業(yè)用戶的歡迎。但是對于IC卡的應(yīng)用最重要的是IC卡的密碼安全問題,要保證I C卡密碼的應(yīng)用安全,就必須有一個安全可靠的密鑰管理系統(tǒng)。有些IC卡的密碼管理系統(tǒng)為單層密鑰系統(tǒng),也就是直接根據(jù)一個通用的根密鑰來生成用戶消費卡的密鑰,這種密鑰生成需要系統(tǒng)的根密鑰,根密鑰的安全性難以保證,而且難以對IC的應(yīng)用系統(tǒng)的密碼進行擴展,不能適應(yīng)一張IC卡 集成多種IC卡應(yīng)用系統(tǒng),他們既要有統(tǒng)一的安全體系,又有獨立密碼安全機制。既能夠?qū)崿F(xiàn)在校園的真正一一卡通,又能保證不同應(yīng)用相互之間的安全性和可靠性。本文探討構(gòu)建一種多層的密鑰安全管理機制來滿足校園一卡通的安全應(yīng)用需要。
1密鑰管理系統(tǒng)的設(shè)計與實現(xiàn)
1.1密鑰管理系統(tǒng)的體系結(jié)構(gòu)
密鑰管理包括密鑰的生成、裝入、傳遞、存儲、恢復(fù)、銷毀等內(nèi)容。一卡通生成的主密鑰稱為根密鑰, 由公司或團體的三位領(lǐng)導(dǎo)各輸入8字節(jié)密碼,經(jīng)3DES數(shù)據(jù)加密算法按照一定規(guī)則多次加密并截取得到,存儲在系統(tǒng)惟一的根卡上。一卡通系統(tǒng)每個應(yīng)用對應(yīng)一個母密鑰,母密鑰由根密鑰加密8位隨機整數(shù)得到,隨機數(shù)加密存儲在根卡上,母密鑰加密持卡人密碼可以制作母卡,一個母密鑰可以發(fā)放多張母卡,母卡與根卡都通過持卡人的輸入的Pin碼進行驗證訪問,這樣保證密碼存儲的安全性。消費系統(tǒng)的發(fā)卡子系統(tǒng)則是利用相應(yīng)業(yè)務(wù)的母卡來初始化用戶消費卡。一卡通密鑰管理系統(tǒng)的實現(xiàn)結(jié)構(gòu)如圖1所示。
圖1一卡通密鑰管理系統(tǒng)的實現(xiàn)結(jié)構(gòu)
1.2根密鑰的生成
由公司或團體的三位領(lǐng)導(dǎo)各輸入8字節(jié)字符串,分別為a、b、c,轉(zhuǎn)化為字節(jié)類型為aKey、bKey、cKey。先使用bKey加密aKey得到dKey,然后用cKey加密dKey得到r,截取r的前8位則得到根密鑰rKey,存入根卡的指定位置。具體流程如圖2所示。
圖2根密鑰的生成
1.3根卡的生成
由根卡持卡人輸入8字節(jié)的密碼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字節(jié)密碼對一級密文rcodel 16進行加密得到rcodel,截取rcodel的前面l6位并將其轉(zhuǎn)化為字符串strl, 將二級密文rcode216轉(zhuǎn)化為字符串str2,比較strl和str2,若相等,則根卡驗證成功,反之失敗。具體流程如圖4所示。
圖4 根卡的驗證
1.5母密鑰的生成
使用從根卡中得到的根密鑰加密系統(tǒng)生成的8位隨機整數(shù)得到mk,截取mk的前面8位得到母密鑰,并將母密鑰和該母密鑰的應(yīng)用類型索引一起存入根卡指定位置。具體流程如圖5所示。
圖5母密鑰的生成
1.6母卡的制作
由母卡持卡人輸入8字節(jié)的密碼code,用code對母密鑰進行加密得到mcodel,截取mcodel前面16位作為一級密文rcodel 16,然后再用code對rcodel 16進行加密得到mcode2,截取mcode2的前面l6位作為二級密文rcode216,將rcodel16和rcode216寫入母卡指定位置,完成母卡的生成。具體流程如圖6所示。
圖6母卡的制作
1.7母卡的驗證
從母卡中指定位置獲得母卡的一級密文rcodel16和二級密文rcode216,用母卡持卡人輸入的8字節(jié)密碼對一級密文rcodel 16進行加密得到rcodel,截取reodel的前面16位并將其轉(zhuǎn)化為字符串strl, 將二級密文rcode216轉(zhuǎn)化為字符串str2,比較strl和str2,若相等,則母卡驗證成功,反之失敗。具體流程如圖7所示。
圖7母卡的驗證
1.8密鑰管理實現(xiàn)
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);//根密鑰的字節(jié)
數(shù)組形式
isCanOperate = true;
groupBox2.Enabled = true
log.Info(”根密鑰生成成功! ”);
MessageBox.Show(”根密鑰生成成功! ”, ”提示!
”);
}
實現(xiàn)界面如圖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);//取前面?zhèn)€字節(jié)作為母密鑰
monisCanOperate : true:
groupBox4.Enabled = true:
log.Info(”母密鑰生成成功! ”);
}
實現(xiàn)界面如圖9所示。
圖9母密鑰生成界面
1.9系統(tǒng)測試
在測試過程中,根密碼和母密碼的產(chǎn)生采用分段密碼產(chǎn)生和保存機制,在應(yīng)用過程中難以復(fù)制,也在一定程度上杜絕個別人為的不安全因素。而且可以根據(jù)應(yīng)用來制作不同業(yè)務(wù)的母卡,不同業(yè)務(wù)之問如果未經(jīng)授權(quán)是不能夠互訪的,這樣也系統(tǒng)的安全的分層管理。在加密算法中,在3D ES算法的基礎(chǔ)上增加了分散算法和隨機算法,并在加密解密過程進行分散操作,增加r解密的難度,提高了密碼的安全性。并且系統(tǒng)具有良好可實現(xiàn)性和性能,表l是發(fā)卡的時間統(tǒng)計表。從統(tǒng)計表中可以得出該密鑰管理系統(tǒng)能夠適應(yīng)較大規(guī)模的發(fā)卡應(yīng)用。
2 結(jié)束語
本文以密鑰管理在校園園一卡通系統(tǒng)中的一應(yīng)用為中心。研究密鑰管理系統(tǒng)在一卡通系統(tǒng)中的具體應(yīng)用模式,并以IC卡技術(shù)和密碼算法技術(shù)為基礎(chǔ),提出了一卡通系統(tǒng)的密鑰管理系統(tǒng)的解決方案。該解決方案具有較好的實用性和安全性,能夠支持豐富的校園智能卡的應(yīng)用。@