中國網(wǎng) china.com.cn 時間: 2009-09-07
發(fā)表評論>>今年年初以來,一個消息的傳出震驚了整個IC卡行業(yè)。最近,德國和美國的研究人員成功地破解了NXP的Mifare1芯片的安全算法。Mifare1芯片 主要用于門禁系統(tǒng)訪問控制卡,以及一些小額支付卡,應用范圍已覆蓋全球。因此這項“成果”引起了不小的恐慌,因為一個掌握該破解技術(shù)的小偷可以克隆任何一 個門禁卡,從而自由進出政府機關(guān)大樓或公司辦公室;可以批量的克隆或偽造各種儲值卡大肆購物而不被發(fā)現(xiàn)。國內(nèi)發(fā)行的這種卡,估計有幾億張在投入使用,它的 安全性涉及到眾多的運營單位和持卡人的利益。近日,有研究人員宣布MIFARE系列產(chǎn)品的安全性存在薄弱環(huán)節(jié),在他的研究室里,通過研究讀寫器和卡之間的 通信數(shù)據(jù),找到了這種卡的加密算法和認證通信的協(xié)議,并有兩種方法可以得到MIFAREclass邏輯加密卡的分區(qū)密碼。通過這種方法,破壞者可以使用非 常廉價的設(shè)備在40ms內(nèi)就可以輕易獲得一張M1卡的密碼。面對這種災難性的事實,有些公司宣稱他們有辦法彌補這一漏洞,用戶可以繼續(xù)使用這種卡片而不必 擔心。那么,M1卡的破解真的有那么大的破壞力么,目前的一些“安全”手段真的有效么?;卮疬@一問題,我們需要先從了解Mifare1系列卡片的結(jié)構(gòu)和安 全認證機制開始。
Mifare系列非接觸IC卡是荷蘭Philips公司的經(jīng)典IC卡產(chǎn)品(現(xiàn)在Philips公司IC卡部門獨立為NXP公司,產(chǎn)品知識產(chǎn) 權(quán)歸NXP所有)。它主要包括在門禁和校園、公交領(lǐng)域廣泛使用的MifareoneS50(1K字節(jié))、S70(4K字節(jié)),以及簡化版 MifareLight和升級版MifarePro4種芯片型號。這幾種芯片中,除MifarePro外都屬于邏輯加密卡,即內(nèi)部沒有獨立的CPU和操作 系統(tǒng),完全依靠內(nèi)置硬件邏輯電路實現(xiàn)安全認證和保護的IC卡。其主要結(jié)構(gòu)如圖所示:
主要結(jié)構(gòu)圖
在Mifare1芯片結(jié)構(gòu)中,Authentication&AccessControl認證與訪問控制單元用于完成卡片的密碼認 證,控制各個數(shù)據(jù)扇區(qū)的讀寫權(quán)限;CryptoUnit數(shù)據(jù)加密單元就是其認證和加解密運算的算法引擎。Mifare系列IC卡是NXP公司的專利產(chǎn)品, 它采用了一種NXP特有的加密算法來完成認證和加解密運算。由于這種算法是NXP特有且不公開的算法,Mifare系列IC卡采用了一種特殊的手段來實現(xiàn) 在不公開算法的前提下完成認證,即將同樣的算法引擎放置在NXP出產(chǎn)的專用Mifare讀寫基站芯片中(如常用的RC500和RC531),認證過程由基 站芯片“代替”用戶系統(tǒng)與Mifare芯片之間完成。這一認證過程就是常常被Mifare系列芯片宣傳的“三重認證”,其實質(zhì)就是基站芯片與Mifare 芯片之間相互傳遞隨機數(shù)以及隨機數(shù)的密文,通過對隨機數(shù)密文的解密比對實現(xiàn)對卡片的認證。Mifare芯片所引以為豪的“數(shù)據(jù)加密傳輸”也是由基站芯片加 密后傳送給Mifare芯片的。這個過程可以簡化為下圖所示:
MIFARE卡的“三重認證”示意圖
如圖所示,M1卡所宣稱的三次認證及輸入加密傳輸?shù)劝踩匦灾傅氖荕1卡與RC500等NXP基站芯片(或兼容芯片)之間的認證和加密。由 于NXP對M1卡與基站芯片間的通訊協(xié)議和加密認證機制嚴格保密,因此從這里進行破解難度很大。然而不幸的是,最終這個算法和機制還是被破解了。研究人員 找出了算法和通訊協(xié)議中的漏洞,可以輕易地通過幾十次試探攻擊(約40ms)就能夠獲得一張卡片的所有密鑰。事實上,在Mifare芯片的兼容產(chǎn)品出現(xiàn)的 那一天起,這個秘密就已經(jīng)不是秘密了,因為完全兼容,實際就意味著已經(jīng)掌握了這個算法。
在Mifare1卡片安全問題暴露后,一些公司公開宣稱已經(jīng)有了解決的辦法,其中的法寶就是所謂“一卡一密”,也就是每一張卡片的每一個扇 區(qū)的密鑰都不相同,使用CPU卡裝載系統(tǒng)根密鑰,根據(jù)Mifare1卡的唯一序列號計算子密鑰,防止一張卡片被破解而影響整個系統(tǒng)。其實這種解決方案在 Mifare1卡破解之前就已經(jīng)出現(xiàn)。那么,一卡一密真的能解決Mifare1的安全問題么,我們還是要從Mifare1卡的認證機制著手進行分析。
我們已經(jīng)知道,Mifare1卡的認證實質(zhì)上是卡與基站芯片之間的認證。常用的RC500等基站芯片已經(jīng)為業(yè)界廣為熟知,它的接口和通訊協(xié) 議都是公開的。在基站與Mifare1卡認證前,需要通過LoadKey命令將Mifare1卡的密碼裝載到基站芯片中。這一過程是一個明文寫入的過程, 是由終端設(shè)備(如讀卡器)主控單片機傳送給RC500的,并且單片機對RC500的命令傳輸是非加密的。如下圖所示:
示意圖
這樣就可以通過截獲單片機與RC500之間的通訊來獲取M1卡的密鑰。而要做到這一點,一個使用過RC500的對單片機技術(shù)稍微了解的技術(shù)人員都能夠輕而易舉的實現(xiàn)。
那么,在讀卡器中安裝SAM卡,通過SAM卡計算卡片密鑰實現(xiàn)一卡一密是否就安全了呢。想法非常美好,然而結(jié)果卻非人所愿,這樣的做法不但沒有增加安全,反而更加加大了安全漏洞。如下圖所示:
示意圖
如圖所示,M1卡通過SAM卡實現(xiàn)一卡一密本質(zhì)上是將SAM卡內(nèi)的主密鑰通過對M1卡的卡號分散后得到M1卡的子密鑰,但是這個子密鑰仍然 要通過終端單片機明文傳送給RC500芯片完成對M1卡的認證。更為嚴重的是SAM卡送出的是Mifare1卡的明文密碼,黑客只要獲得一張SAM卡,就 能夠通過它獲得所有卡片的密碼,連破解手段都不用。
此外,在M1卡消費密碼被泄露的情況下,即使采用了聯(lián)機充值的方法,也無法保障運營商的利益,因為在此情況下,盜竊者使用偽造的M1卡,完 全可以不用系統(tǒng)的充值密碼,而直接采用M1卡的缺省密碼對卡片進行“充值”,然后用真實的消費密碼在終端上消費。在此情況下,即使采用了黑名單機制也難以 避免運營商和授卡商戶遭受損失,因為黑名單機制是一種事后防范機制,防止的是再次發(fā)生同一偽卡的交易,而在M1卡小額消費日益普及的今天,盜竊者只需將偽 卡使用一次,就足以獲得比一張偽卡成本高得多的收益。
這樣,我們可以假設(shè)一下幾種情況:
外部人員作案:
作案人盜取一個正式使用的終端設(shè)備,通過線路截獲方式獲取單片機發(fā)送給RC500的密鑰,從而破解M1卡的密鑰。
作案人盜取終端內(nèi)的PSAM卡,通過向PSAM卡發(fā)送密鑰分散指令的方式得到每一張M1卡的子密鑰。
內(nèi)部人員作案:
終端設(shè)備的開發(fā)人員利用工作之便盜取終端內(nèi)的M1卡密鑰明文或經(jīng)過單片機發(fā)送給RC500的M1卡密鑰明文。
發(fā)卡機構(gòu)工作人員利用工作之便截取PC機通過M1卡讀卡器發(fā)送給M1卡的密鑰明文?;蛑苯硬僮鱌SAM卡盜取密鑰明文。
系統(tǒng)開發(fā)人員利用工作之便盜取PSAM卡密鑰明文。
無論哪種可能,都會對整個系統(tǒng)的安全造成致命的影響。實質(zhì)上,這種一卡一密的做法是借用了CPU卡認證機制中的一卡一密概念,然而它在有意 無意間忽略了一個非常重要的事實,即CPU卡和邏輯加密卡是完全不同的兩種卡片,它們的認證機制完全不同。CPU卡由于內(nèi)部具有CPU處理器和操作系統(tǒng) COS,認證的過程完全是在用戶卡與SAM卡之間進行的,認證過程中傳送的是隨機數(shù)和密文,讀卡器基站芯片只是一個通訊通道;認證過程不能復制;使用的算 法是公開算法,其安全性是基于CPU卡對密鑰的保護而非對算法的保護。密鑰在用戶卡和SAM卡內(nèi)都不能讀出,而且密鑰的安裝是通過密文進行,系統(tǒng)上線后即 使是發(fā)卡人員和開發(fā)人員也無法得到密鑰明文,從根本上保證了系統(tǒng)的安全性。正是由于意識到了M1卡潛在的安全性問題,建設(shè)部才多次開會推廣使用CPU卡。 雙界面CPU卡更是由于其應用的靈活性和對金融規(guī)范的支持得到了各方的贊賞。
當然,一個系統(tǒng)的安全性不僅僅取決于采用了哪種卡片和哪種安全機制,而且通過系統(tǒng)設(shè)計上的安全手段也能夠彌補一些卡片安全上的不足。一個產(chǎn) 品的安全性不能依賴于某一個方面的單個安全,更多的應從一個系統(tǒng)的整體的邏輯上去完善安全、把可能出現(xiàn)的不安全特征通過整體的系統(tǒng)完善起來.針對原有不安 全的系統(tǒng)進行改造。例如在建設(shè)部的IC卡規(guī)范中對于M1卡的一卡一密就規(guī)定了在SAM中計算卡片密碼前必須校驗卡中的MAC認證碼,這在很大程度上降低了 盜用SAM卡的可能性。然而遺憾的是大部分M1卡應用系統(tǒng)并沒有采用類似的補救手段,而且這種手段也不能完全杜絕克隆卡、偽造卡的使用。黑名單等防范手段 雖然有效,但畢竟屬于事后防范,難以從根本上解決問題。特別是在當前Mifare1卡片被破解的背景下,簡單的采用打補丁的方法更是一種掩耳盜鈴的行為。
對于一個IC卡應用系統(tǒng)而言,卡片的安全性好比一座摩天大廈的基礎(chǔ),針對一種卡片的安全機制必定制定相應的保護措施以保護這個基礎(chǔ)。而當卡 片的安全性發(fā)生了根本的變化時,原有的保護措施已經(jīng)失去了效果,整個大廈的基礎(chǔ)發(fā)生了動搖,此時再采取補丁措施,無異于給大廈地面上的結(jié)構(gòu)進行加固,措施 再好也難以改變基礎(chǔ)動搖這一事實。根本的解決之道就是重新打牢基礎(chǔ),從根基上完善系統(tǒng)的安全保護體系。
同MIFARE1卡相比,非接觸CPU卡是一種真正意義上的“智能卡”。CPU卡內(nèi)集成電路中包括中央處理器(CPU)、只讀存儲器 (ROM)、隨機存取存儲器(RAM)、電可擦除可編程只讀存儲器(EEPROM)等主要部分,猶如一臺超小型電腦。具有信息量大、防偽安全性高、可脫機 作業(yè),可多功能開發(fā)等優(yōu)點。CPU卡采用強大而穩(wěn)定的安全控制器,增強了卡片的安全性,而非接觸傳輸接口又能滿足快速交易的要求(如公交的快速通過)。 CPU卡采用了多種芯片級防攻擊手段,基本上不可偽造;CPU卡所特有的內(nèi)外部認證機制以及以金融IC卡規(guī)范為代表的專用認證機制,能夠完全保證交易的合 法性;在認證和交易過程中,CPU密鑰是不在線路上以明文出現(xiàn)的,它每次的送出都是經(jīng)過隨機數(shù)加密的,而且因為有隨機數(shù)的參加,確保每次傳輸?shù)膬?nèi)容不同, 保證了交易的安全性。在認證和交易過程中所使用的密鑰都是在安全的發(fā)卡環(huán)境中產(chǎn)生并密文安裝到SAM卡和用戶卡中,整個過程密鑰不外露。CPU卡的應用防 火墻功能可以保障同一張卡中不同應用的安全獨立性。對安全性要求較高的金融行業(yè)都以CPU卡作為下一代銀行卡的標準。采用非接觸式CPU卡可以杜絕偽造 卡、偽造終端、偽造交易,最終保證了系統(tǒng)的安全性。
同時,非接觸CPU卡的大容量存儲空間又可以滿足預期的大金額消費應用所要求的更多客戶信息的存儲。而這時安全就不僅僅是存儲在卡內(nèi)的電子貨幣的安全,還包括個人信息的安全,非接觸式CPU卡的安全機制可以為此提供良好的保障。
由于非接觸式CPU卡具有以上無可比擬的優(yōu)點,非常適用于電子錢包、電子存折、公路自動收費系統(tǒng)、公共汽車自動售票系統(tǒng)、社會保障系統(tǒng)、 IC卡加油系統(tǒng)、安全門禁等等眾多的應用領(lǐng)域。非接觸CPU卡將逐步取代邏輯加密卡而成為IC卡的主要選型。在M1卡被破解的形勢下,采用非接觸CPU卡 取代M1卡是解決M1卡危機的最終解決方案。在后續(xù)的文章中我們將針對不同的應用提出相應的解決方案,為M1卡升級提供一種思路。