摘要: 本文簡述了SLE4428的性能、分析SLE4428的設計原則及流程,并對使用SLE4428提出注意事項。
關鍵詞: SLE4428;加密卡;密鑰
1.SLE4428性能描述
1.1 SLE4428容量大小為1K字節,地址為0-1023。
2.2 所有數據除密碼外,在任意情況下均可被讀出,密碼在核對正確后可以被讀出。
3.3 所有數據包括密碼本身在核對密碼正確后可以寫入或更改。
4.4 所有數據都可以按字節進行寫保護,寫保護后數據固化,任意情況下不可更改。
5.5 有一個密碼出錯計數器。地址是1021。初始值為8,密碼核對出錯一次,便減1。若計數器值為0,則整張卡的數據被鎖死,只可讀出,不可更改或寫入且無法繼續核對密碼;若不為0,則只需要一次核對正確,計數器將恢復為初始值8。
6.6 密碼長度為2字節,地址是1022,1023。共有2種組合,在密碼核對正確之前,讀這兩地址的結果是“00”,也無法寫入和更改;在密碼核對正確后可以讀出密碼和更改密碼,密碼會一直有效至卡掉電為止。
7.7 地址0-7,21-26出廠前由廠家固化,不可更改,其中地址21-26是卡的用戶代碼,由制造卡的廠家向SIEMENS公司申請注冊的全球唯一的用戶代碼。
2.設計原則
針對SLE4428安全性的局限性,必須采用以下原則發行和使用SLE4428邏輯加密卡:
2.1生成密鑰文件。該文件為二進制加密文件,由用戶方提供的算法種子經過加密算法,生成用戶卡密鑰所需要的算法種子(以下簡稱密鑰種子)和加密用戶卡數據所需要的加密種子。
2.2用密文方式存儲用戶卡重要數據,使其它系統無法讀出卡上內容,從而保護用戶
的隱私。
2.3用戶卡的改寫必須經過以下操作:調用密鑰文件中的密鑰種子,通過加密算法校驗
用戶卡密鑰,如果正確就可以進行改寫,如果不正確,SLE4428將記數,超過8次不正確,SLE4428將自動鎖死,從而避免用窮盡法破譯用戶卡密鑰。
3.設計流程
3.1發行用戶新卡
3.1.1 建立用戶對象u_maker 和定義SLE4428的驅動程序hnic32.dllu_maker主要
由以下密鑰函數組成(函數源程序略)。
3.1.2 定義用戶對象u_maker,生成用戶卡密碼,讀密鑰文件并將第一套兩條密鑰分別
存于ls_key[1]和ls_key[2]中,程序如下:(為減少篇幅,程序只列出主要部分)
u_maker u_maker1//定義OBJECT
u_maker1 = create u_maker
li_aret=u_maker1.uf_getkey()//讀密鑰文件
int li_min,li_sec,li_mul
char ls_pas[]
string ls_random,ls_pin_new
li_sec=integer(mid(string(now()),7,2))//產生隨機數
if li_sec=0 then
li_sec=rand(99)
Endif
li_min=integer(mid(string(now()),4,2))
if li_min=0 then
li_min=rand(99)
End if
li_mul=li_sec*li_min
ls_random = left(string(li_mul),2)
ls_pas = u_maker1.uf_encrypt(ls_random,u_maker1.ls_key[1])//生成用戶卡密碼
ls_pin_new = u_maker1.uf_asctostr(ls_pas)
3.1.3 從數據庫文件中讀取需要的數據并寫入結構變量istr_info1中,具體如下:
istr_info1.grzhbh,istr_info1.FXSDM,str_info1.ICKH,istr_info1.BXH,istr_info1.XM,istr_info1.XB,istr_info1.CSRQ1,istr_info1.SFZHM,istr_info1.CBRYLBDM,istr_info1.BNYBMZLJ,istr_info1.YBMZLJ,istr_info1.YYBM,istr_info1.YYMC,istr_info1.BNZYCS,istr_info1.IN_HOS_MON,istr_info1.IN_HOS_SUM,istr_info1.ICHRCS,istr_info1.LAST_DATE,istr_info1.GRZfZF,str_info1.GRZfHR,istr_info1.LAST_BALAN,istr_info1.LAST_USE
3.1.4 核對用戶卡密碼,寫ic卡,寫卡完畢后更改用戶卡密碼。
3.2 改寫用戶卡
3.2.1 建立用戶對象n_cc_ic和u_maker,同時定義SLE4428的驅動程序hnic32.dll
n_cc_ic 主要由ic卡讀寫函數組成,限于篇幅,略去。建立u_maker讀取密鑰文件
3.2.2 從數據庫文件中讀取修改好的數據并寫入結構變量istr_info中,同上
3.2.3 從用戶卡中讀出隨機數生成用戶卡密碼,并核對密碼
3.2.4 開始寫卡,同上
4.注意事項
4.1SLE4428的安全機制:唯一代碼是由制造卡的廠家向SIEMENS公司申請注冊的全球唯一的用戶代碼。可防止其它廠家的卡進入系統,同時也決定了用戶卡只能來源于該廠家;固化寫入對于需要不斷改卡的用戶也不適用;只有建立安全的用戶密碼才是最有效的手段。
4.2SLE4428無須密碼便可讀出除密碼外的整張卡的數據,密碼一經核對便可向任一地址寫入或修改數據,因此設計時要注意適當固化數據和將數據內容加密,以防止無意破壞數據或非法修改數據。
4.3密碼核對正確后便可讀出,因此設計程序時要能防止破壞者采用非法中斷程序運行,直接去讀取密碼的方法來竊取密碼。由于實現一卡一密,所以即使竊取一張或幾張用戶卡的密碼,也無法破譯一批用戶卡的密碼。
參考文獻:
〔1〕張立松,劉鴻雁:SLE4442邏輯加密IC卡在52單片機中的應用[J].信息技術,2004,(08).
〔2〕王新、呂鋒:IC卡讀寫接口的設計和實現[J].武漢理工大學學報(信息與管理工程版)2005,(05).