摘 要: 針對AFC系統(tǒng)中非接觸式IC卡存儲數(shù)據(jù)和傳輸數(shù)據(jù)所受到的安全風(fēng)險進(jìn)行詳細(xì)分析,。從認(rèn)證,、加密,、完整性三個方面對非接觸式IC卡數(shù)據(jù)安全闡述了解決方案,并提出了部分實現(xiàn),。
關(guān)鍵詞: 非接觸式IC卡,;安全風(fēng)險
隨著整個社會信息化進(jìn)程的不斷發(fā)展,尤其是國家“三金工程”的啟動和發(fā)展,,IC卡在我國的應(yīng)用范圍正不斷擴大,。與此同時,針對IC卡及其系統(tǒng)的各種攻擊性犯罪現(xiàn)象隨時可能出現(xiàn),,這就使得IC卡數(shù)據(jù)加密的研究和實現(xiàn)處于十分重要的地位[1],。
IC卡的安全級別分為:非加密存儲卡,、邏輯加密存儲卡、CPU卡,。非加密存儲卡不需要對其進(jìn)行密碼核對就可以進(jìn)行讀寫操作,,其安全性最差;邏輯加密存儲卡需要先通過裝置(一般為讀卡器)將密碼送入卡中,,IC卡核對密碼正確后,,輸出正確的應(yīng)答信號,才能進(jìn)行下一步的操作,,這樣可以防止對卡中信息的隨意閱讀和改寫,,其安全性遠(yuǎn)遠(yuǎn)高于非加密存儲卡;CPU卡因其具有微處理器,,具有更高的計算能力和和編程能力,,故其安全級別比邏輯加密存儲卡更高。
在地鐵AFC系統(tǒng)中,,國內(nèi)大部分都采用了邏輯加密存儲卡,,如南京地鐵目前單程票都采用了MIFARE的Ultralight Token,而儲值票(方卡)則采用了Mifare Desfire和Mifare Standard,,這幾種卡都是邏輯加密存儲卡,。事實上,非加密存儲卡因其較差的安全性已經(jīng)在很大程度上退出了市場,。
1 IC卡面臨的安全問題
1.1 安全類型缺陷
由于成本所限,,IC卡本身很難保證足夠的安全,非法用戶可以使用合法的讀卡器或者自構(gòu)一個讀卡器,,直接與IC卡進(jìn)行通信,,從而很容易地獲取IC卡內(nèi)的所存數(shù)據(jù),使IC卡面臨數(shù)據(jù)被改寫的風(fēng)險,。而IC卡的數(shù)據(jù)通信鏈路是無線通信連接,,與有線連接不一樣,無線傳輸?shù)男盘柋旧硎情_放的,,這就給非法用戶的偵聽帶來了方便,。
在讀卡器中,除了中間件被用來完成數(shù)據(jù)的遴選,、時間過濾和管理之外,,讀卡器只提供用戶業(yè)務(wù)接口,但不提供能夠讓用戶自行提升安全性能的接口,。
1.2 AFC系統(tǒng)中IC卡的安全問題
(1)車票安全:防止偽造,、克隆、篡改、泄密,、偷盜,;
(2)設(shè)備安全:防止車票被偷盜后進(jìn)行加值或復(fù)制,防止業(yè)務(wù)程序被攻擊改變,,防止重要參數(shù)及數(shù)據(jù)被改變,;
(3)數(shù)據(jù)安全:防止篡改、竊取,、丟失,、抵賴,;
(4)系統(tǒng)安全:防止攻擊,、破壞,泄露重要信息,。
對于IC卡單程票,,經(jīng)過半自動售票機、自動售票機等環(huán)節(jié)發(fā)售到乘客手中,,到出站閘機再進(jìn)行回收,。在整個使用過程中,IC卡處于兩種狀態(tài):(1)在系統(tǒng)運營人員管理中,,包括單程票的采購,、初始化、發(fā)售,、回收,、循環(huán)運輸?shù)拳h(huán)節(jié)。(2)在乘客手中,,從購買單程票到出站之間,,對于IC卡儲值票,經(jīng)過半自動售票機,、自動售票機等設(shè)備發(fā)售到乘客手中后,,將一直在乘客手中重復(fù)使用,直至被收回,。兩種情況中,,IC卡在乘客手中時有更大的不安全風(fēng)險。但是整體而言,,單程票處在安全范圍內(nèi)比例要比儲值票大,,尤其是儲值票,由于其儲值金額可能較大,,所以被攻擊的可能性更大,。
2 密碼學(xué)概述
密碼學(xué)通常被定義為在通信過程中進(jìn)行解密和加密的過程和技巧。
密碼技術(shù)可用于解決以下三大領(lǐng)域內(nèi)的安全問題[2]:
(1)認(rèn)證。用于可靠的確定某人或某物的身份,,防止有人冒充合法用戶或防止設(shè)備冒充合法資源,。
(2)加密。對數(shù)據(jù)進(jìn)行編碼以防搭線竊聽的過程,。加密所提供的保護也稱為機密性業(yè)務(wù),,提供該業(yè)務(wù)用以保護數(shù)據(jù)安全,不被非法者偷聽,。
(3)完整性,。保證數(shù)據(jù)沒有經(jīng)過篡改,需要確認(rèn)所收到的消息正是所發(fā)送的消息,。
本文中涉及到傳輸數(shù)據(jù)的安全和存儲數(shù)據(jù)的安全兩個方面,。其中傳輸數(shù)據(jù)的安全主要包括數(shù)據(jù)的機密性、完整性,、可獲取性和真實性,。數(shù)據(jù)的機密性、完整性和可獲取性是通過對數(shù)據(jù)的加解密來實現(xiàn)的,。數(shù)據(jù)的真實性是通過相互認(rèn)證技術(shù)實現(xiàn)的,。存儲數(shù)據(jù)的安全是指數(shù)據(jù)的持久性,是通過存儲區(qū)域的訪問條件控制和冗余存儲實現(xiàn)的,。
3 地鐵非接觸式IC卡的加密措施
3.1 認(rèn)證
在對IC卡進(jìn)行讀寫操作之前,,必須對IC卡的密碼進(jìn)行認(rèn)證。如果認(rèn)證通過,,才允許進(jìn)行下一步操作,。
非接觸式IC卡的密碼認(rèn)證分為五個步驟,其過程如圖1所示,。
(A)由IC卡向讀卡器發(fā)送一個隨機數(shù)據(jù)RB,。
(B)讀卡器收到RB后,向IC卡發(fā)送一個令牌數(shù)據(jù)TOKEN AB=EK(RB||RA||ID||T1),,其中RA是讀卡器發(fā)出的一個隨機數(shù),,ID是IC卡的物理唯一序列號,T1是附加的時間戳數(shù)據(jù),。EK表示一種加密算法,,如ASH-1算法。
(C)IC卡收到TOKEN AB后,,對TOKEN AB的加密部分進(jìn)行解密,,并校驗第一次由(A)中的IC卡發(fā)出的隨機數(shù)RB是否與(B)中接收到的TOKEN AB中的RB相一致。
(D)如果(C)環(huán)節(jié)校驗結(jié)果正確,,則IC卡向讀卡器發(fā)送令牌TOKEN BA=EK(RA||RB||T2)給讀卡器,。
(E)讀卡器收到令牌TOKEN BA后,將對令牌TOKEN BA中的RB(隨機數(shù))進(jìn)行解密;并檢驗由(B)中讀卡器發(fā)出的隨機數(shù)RA是否與(D)中接收到的TOKEN BA中的RA一致,。
地鐵IC卡共有16個分區(qū),,每個分區(qū)都分別有自己的密碼,互不干涉,。因此即使通過了一個分區(qū)的的密碼認(rèn)證,,也不能對其他的分區(qū)進(jìn)行讀寫操作。如果想對其他分區(qū)進(jìn)行操作,,必須按照該分區(qū)密碼重新完成上述的認(rèn)證過程,。每個分區(qū)都可獨立地作為某一種應(yīng)用,這也是IC卡一卡多用的原理,。
如果上述的每一個環(huán)節(jié)都能正確通過驗證,,則整個認(rèn)證過程將成功。認(rèn)證過程中的任何一個環(huán)節(jié)出錯,,則整個認(rèn)證過程終止,,認(rèn)證過程必須重新開始。如果事先不知道IC卡的密碼,,全部搜索需要很長時間,隨機地給出一個密碼而打開IC卡的一個分區(qū)的可能性幾乎沒有,。
3.2 消息加密
目前使用較廣泛的密碼算法主要有對稱密鑰算法DES(Data Encryption Standard),、IDEA(International Data Encryption Algorithm)和公共密鑰算法RSA(由Rivest,Shamir,,Adleman三人于1978年提出),,DSA(Digital Signature Algorithm)等。
3.2.1 南京地鐵2號線采用了3DES算法
DES 算法產(chǎn)生于20 世紀(jì)70 年代,,是傳統(tǒng)的分組密碼代碼學(xué)的代表,,其運算速度較快,但其密鑰太短(56 bit),,通過窮舉法即可將其攻破,。因此出現(xiàn)了改進(jìn)的DES算法,即3DES算法[3],。3DES算法加密時對原始明文進(jìn)行三次DES處理,,采用K1、K2,、K3三個不同密鑰(長度均為8 B),,如圖2所示。解密時對密文按相反的順序,,還原成原始明文,。為了減少系統(tǒng)在生產(chǎn)和管理密鑰的開銷,一般將K1、K3設(shè)為相同值,,但K1,、K2絕不能相同,否則三重DES就失去了意義,。3DES雖然降低了一定的運算速度,,但是密鑰長度是原來的兩倍,安全性能得到了極大提高,,迄今為止尚未被攻破,,已成為一種國際公認(rèn)的加密標(biāo)準(zhǔn)。
其加密代碼如圖3所示,。
3.2.2 SHA-1與MD5的性能比較
在南京地鐵上,,KEY的產(chǎn)生采用了SHA-1安全算法,SHA-1算法與MD5的算法類似,,所以它們的性質(zhì)極為相似,。下面是SHA-1和MD5性能之間的比較。
(1)抗窮舉攻擊的能力:SHA1抗窮舉攻擊的能力比MD5強,。
用窮舉攻擊方法產(chǎn)生具有給定散列值的消息:MD5需要的代價為2 128數(shù)量級,;SHA-1需要的代價為2 160數(shù)量級。
用窮舉攻擊方法產(chǎn)生兩個具有相同散列值的消息:MD5需要的代價為264數(shù)量級,;SHA-1需要的代價為280數(shù)量級,。
(2)抗密碼分析的能力:MD5算法抗密碼分析的能力較弱;SHA-1算法抗密碼分析的能力較MD5 強,。
(3)速度:SHA-1執(zhí)行的速度比MD5的速度慢得多,。
(4)簡捷性:SHA-1和MD5兩種算法都易于描述和實現(xiàn),不需要使用大的程序和置換表,。
(5)數(shù)據(jù)的存儲方式:MD5使用little-endian方式,;SHA-1使用big-endian方式,這兩種方式?jīng)]有本質(zhì)的差異,。
SHA-1的實現(xiàn)代碼如圖4所示,。
3.3 完整性
在通信過程中,由于受到人為或環(huán)境因素的影響,,導(dǎo)致讀寫數(shù)據(jù)失敗,,數(shù)據(jù)不完整。
為了確保通信數(shù)據(jù)的完整性,,可以采取數(shù)據(jù)校驗措施,,如奇偶校驗和CRC校驗等。特別是讀寫器與PC機之間的RS-232或RS-485串行通信,,校驗措施是十分必要的,。通信的速度越高,、距離越遠(yuǎn),校驗的必要性也就很高,。
CRC(Cyclic Redundancy Check)碼,,即循環(huán)冗余校驗碼。由于其編碼和解碼方法簡單,,因而在IC卡的數(shù)據(jù)通信中廣泛應(yīng)用[4],。
在數(shù)據(jù)通信中應(yīng)用CRC碼的目的是校驗數(shù)據(jù)傳送是否正確。與奇偶校驗方法相比,,CRC碼校驗的檢錯能力更強,。因為奇偶校驗僅采用了一位二進(jìn)制作為校驗碼,如果傳送的數(shù)據(jù)中恰好有兩個位(或偶數(shù)個位)同時出錯就不會被發(fā)現(xiàn),。CRC碼采用了r位,,可靠性大為提高。
利用CRC碼進(jìn)行數(shù)據(jù)傳送校驗的基本原理是:在發(fā)送端,,根據(jù)要發(fā)送的k位二進(jìn)制碼序列,,以一定的規(guī)則產(chǎn)生一個用于校驗的r位校驗碼(即CRC碼),使其附在原始數(shù)據(jù)后邊,,構(gòu)成一個新的二進(jìn)制序列(共k+r位),,然后一起發(fā)送出去。在接收端,,根據(jù)數(shù)據(jù)碼和CRC碼之間所遵循的規(guī)則進(jìn)行校驗,,以確定數(shù)據(jù)通信過程中是否出錯。
其實現(xiàn)代碼如圖5所示,。
CRC校驗的優(yōu)點是識別錯誤可靠性高,只需要少量的操作就可以識別,。但其缺點是其只能識別傳輸錯誤而不能校正錯誤,。如果傳輸中校驗到錯誤,只能讓發(fā)送方重新發(fā)送,。
本文通過對非接觸IC卡數(shù)據(jù)安全所受到的威脅及其防護措施的分析,,使AFC系統(tǒng)能夠最大程度地保障非接觸式IC卡的數(shù)據(jù)安全,并實現(xiàn)了部分必要的安全算法,,將可能發(fā)生的風(fēng)險控制在可接受的范圍之內(nèi),。
參考文獻(xiàn)
[1] 賀金鑫,李文印.IC卡數(shù)據(jù)加密的研究和實現(xiàn)[J].吉林大學(xué)學(xué)報,,2003(11):1-2.
[2] 趙軍輝.射頻識別技術(shù)與應(yīng)用[M].北京:機械工業(yè)出版社,,2008.
[3] 趙時旻.軌道交通自動售檢票系統(tǒng)[M].上海:同濟大學(xué)出版社,2007.
[4] 楊振野.IC卡技術(shù)及其應(yīng)用[M].北京:科學(xué)出版社,,2006.