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