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