飛利浦的MIFARE卡因爲它的高安全性在市場上獲得普遍應用,好比咱們乘車用的公交卡,學校和企業食堂的飯卡等等.它每一個扇區有獨立的密匙(6個字節的密碼),在通訊過程當中首先要驗證密匙才能讀寫數據.它的關鍵技術在於密匙的驗證採用三重加密的DES算法,(即:讀寫器與卡之間傳送的密匙是經過隨機數加密的),不象早期的EMID卡和atmel的T557卡都是明碼傳輸,因此在開始一度認爲是最安全的卡,被普遍的當作電子錢包使用.算法
自從08年有人成功破解了M1卡,曾一度形成恐慌.2008年,互聯網上公佈了破解Mifare Classic IC芯片(即M1芯片)密碼的方法;德國研究員亨裏克·普洛茨(HenrykPlotz)和弗吉尼亞大學計算機科學在讀博士卡爾斯滕·諾爾(KarstenNoh1)成功地破解了恩智浦半導體的Mirare經典芯片的安全算法;德國Virginia大學和荷蘭Radboud大學兩個獨立研究小組分別證明了Mi-fare芯片的易受攻擊性,並發表了破解芯片加密算法的論文<<「Wirelessly Pickpocketing a Mifare Classic Card」(無線竊取M1卡)>>以及演示了實際操做芯片的破解過程。闡明瞭M1卡在報文產生奇偶位和所謂嵌套認證兩個方面的漏洞;利用此漏洞,攻擊者能夠經過工具僅僅研究該工具與M1卡之間通信數據即可以成功破解該卡的全部密鑰,從而克隆這張卡. 安全
文章認爲:M1在產生奇偶校驗位時將數據鏈路層和安全通訊層本該分層處理的協議混爲一談,先校驗後加密,而且重複使用了加密校驗位的密碼。這是不符合安全原則的並確實可被利用。數據結構
1) 暴力破解併發
即便是暴力破解,也須要先獲得確切的明文和對應的碼流。這大約要進行1536次認證過程,用時在一秒鐘以內。不過還要進行離線暴力破解,估計在36分鐘可完成。可是須要專用的硬件設備。less
2) 以讀卡器的挑戰值作變量工具
這裏說的讀卡器實際上指的是用來模擬讀卡器的攻擊工具,下個攻擊亦如此。這種攻擊又可稱選擇密文攻擊,想法用工具控制被攻擊的卡每次在認證時產生同一挑戰值,而讀卡端則迴應不一樣值。這種攻擊須要大約28500次的認證過程,用時約15分鐘,而後計算密鑰,用時約一分鐘。ui
3) 卡的挑戰值作變量google
這種攻擊與攻擊2相似,但須要使本身的工具的挑戰值爲常數,而令卡的挑戰值數不斷變化。須要預製一個384 GB的狀態表。要進行4096次認證。大約用時2分鐘。加密
4) 嵌套認證攻擊spa
這種攻擊假設攻擊者已知了至少一個扇區的密鑰,他能夠根據漏洞獲得其它密鑰的32位,而後對其它16位進行窮舉攻擊。只需3次認證(時間能夠忽略不計)。離線攻擊計算時間約爲一秒。M1卡嵌套認證的漏洞使得攻擊者在得知一個扇區的密鑰後可較容易的再破解其它任何扇區的密鑰從而作到對該卡的全面破解。這在之前的攻擊中並不容易作到,由於一個應用系統的讀卡器不必定能產生其系統中全部卡的全部扇區的密鑰,若是設計系統時就沒有考慮使用全部扇區的話。
現有國內公交卡廣泛採用的基於PSAM/ISAM卡的密鑰管理系統。一般採用的作法是使用一個Value Block做爲錢包,KeyA負責消費,KeyB負責充值(包括消費)。KeyA的分散密鑰放在PSAM中,KeyB的分散密鑰放在ISAM中(若是採用充值聯機則KeyB可聯機得到)。PSAM和ISAM提供了密鑰的外部存儲方式,經過特定的分散算法得出M1的密鑰,計算過程發生在終端或後臺系統中。
而目前破解機制直接對M1卡發生做用,徹底繞過、無視了PSAM等安全機制。一樣,一卡一密經過採用不一樣卡片不一樣密鑰的作法增長破解難度,但面對高效率的破解算法也形同虛設。必須重視的是,現有公交卡系統高度依賴密鑰管理系統、一卡一密等安全機制,採用的數據結構基本是統一的、公開的狀態,這就意味着一旦破解密鑰就幾乎處於不設防狀態,即便數據結構不公開也不能寄予但願。
公交卡系統雖然也採用了黑名單等系統審計監控機制,但與銀行卡系統的黑名單機制存在很是大的區別:公交卡採用脫機黑名單,容量受到終端設備的限制,並且屬於滯後處理(一般生效和處理週期不小於T+1天);銀行卡採用聯機黑名單,容量基本不受限制,並且屬於實時處理(即時生效和處理)。
MIFARE卡被破解問題的嚴重性是無可置疑的,首先,Crypto1攻擊的源代碼已經公開發布(http://code.google.com/p/crapto1/),屬於開源項目,可任意從網上免費下載;其次,配套的幾款讀卡器(ProxMark,OPENPCD)也可公開從網上訂購;再加上攻擊算法效率的提升,實際上惡意用戶破解M1密鑰的成本(還包括時間成本)已經降到了很是低的水平,已經達到大規模擴散所須要的條件。
公交卡系統將面臨的攻擊方式包括如下兩種:
1)克隆:惡意用戶經過破解現有合法卡的密鑰並讀取所有數據後,複製到多張空白IC卡上。
2)篡改:惡意用戶經過破解現有合法卡的密鑰後,直接篡改該卡的錢包餘額等關鍵數據。
從攻擊效果來看,克隆可以在一張合法卡的基礎上製做多張僞卡,而篡改只能在合法卡自己的基礎上製做僞卡。
因爲現有M1卡採用了全球惟一的、不可篡改的uid物理卡號,而公交卡系統的密鑰基本使用物理卡號進行分散計算得到,若是要實施克隆攻擊,必須具有複製uid的能力,即具有M1卡的生產製造能力。而目前可以生產兼容M1卡的是很是有限的幾個廠家,基本不可能本身作出非法克隆的事情,也不可能應惡意用戶的要求進行訂單生產。雖然經過硬件配合軟件可以成功模擬M1卡而且可以與讀卡器進行正常通信,但離產品化還有較大距離。
有種觀點認爲,只要是採用了一卡一密、實時在線系統,或非接觸邏輯加密卡的ID號,就能避免密鑰被解密。其實,非接觸邏輯加密卡被解密就意味着M1卡能夠被複制,使用在線系統儘管能夠避免被非法充值,可是不能保證非法消費,即複製一張同樣ID號的M1卡,就能夠進行非法消費。如今的技術使用FPGA就能夠徹底複製。基於這個原理,Mifare的門禁卡也是不安全的。
其實最重要的是,安全是一個系統級別的概念,安全的系統是有一系列的安全措施來保證的,好比密鑰多級分散、好比用PSAM卡而不是終端自身軟件計算密鑰、好比卡片內保存密文而不是明文等等一系列的措施來增長最終破解的難度,並保證被破解後的損失下降到最低。安全不是隻靠單一的卡片來保證的。另外你們能夠注意的是,最終破解卡片的其實都不是軟件暴力破解的,而是剖片等硬件手段起到了相當重要的做用,這實際上是對半導體廠商提出了更高的要求,如何讓逆向工程的難度更大。因此不是說CPU卡就必定比M1卡安全,若是芯片自身的安全級別不夠,經過剖片、甚至簡單的黑客手段都能容易的獲知卡片的密碼,那麼是否是CPU卡其實都毫無心義,並且CPU卡用的公開算法只會讓其安全性比M1還不如(算法破解都免了)。這就是爲何半導體廠商一直很強調本身的芯片過了EAL5+認證,而國產芯片在這部分其實還存在至關的差距。
文/閆鑫原創