標籤:des style blog http 使用 os 資料 2014
飛利浦的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. MIFARE破解方法
1) 暴力破解
即使是暴力破解,也需要先得到確切的明文和對應的碼流。這大約要進行1536次認證過程,用時在一秒鐘之內。不過還要進行離線暴力破解,估計在36分鐘可完成。但是需要專用的硬體裝置。
2) 以讀卡機的挑戰值做變數
這裡說的讀卡機實際上指的是用來類比讀卡機的攻擊工具,下個攻擊亦如此。這種攻擊又可稱選擇密文攻擊,想法用工具控制被攻擊的卡每次在認證時產生同一挑戰值,而讀卡端則回應不同值。這種攻擊需要大約28500次的認證過程,用時約15分鐘,然後計算密鑰,用時約一分鐘。
3) 卡的挑戰值做變數
這種攻擊與攻擊2類似,但需要使自己的工具的挑戰值為常數,而令卡的挑戰值數不斷變化。需要預製一個384 GB的狀態表。要進行4096次認證。大約用時2分鐘。
4) 嵌套認證攻擊
這種攻擊假設攻擊者已知了至少一個扇區的密鑰,他可以根據漏洞得到其它密鑰的32位,然後對其它16位進行窮舉攻擊。只需3次認證(時間可以忽略不計)。離線攻擊計算時間約為一秒。M1卡嵌套認證的漏洞使得攻擊者在得知一個扇區的密鑰後可較容易的再破解其它任何扇區的密鑰從而做到對該卡的全面破解。這在以前的攻擊中並不容易做到,因為一個應用系統的讀卡機不一定能產生其系統中所有卡的所有扇區的密鑰,如果設計系統時就沒有考慮使用所有扇區的話。
2. Mifare破解對公交卡系統造成的影響
現有國內公交卡普遍採用的基於PSAM/ISAM卡的密鑰管理系統。通常採用的做法是使用一個Value Block作為錢包,KeyA負責消費,KeyB負責充值(包括消費)。KeyA的分散密鑰放在PSAM中,KeyB的分散密鑰放在ISAM中(如果採用充值聯機則KeyB可聯機獲得)。PSAM和ISAM提供了密鑰的外部儲存方式,通過特定的分散演算法得出M1的密鑰,計算過程發生在終端或後台系統中。
而目前破解機制直接對M1卡發生作用,完全繞過、無視了PSAM等安全機制。同樣,一卡一密通過採用不同卡片不同密鑰的做法增加破解難度,但面對高效率的破解演算法也形同虛設。必須重視的是,現有公交卡系統高度依賴密鑰管理系統、一卡一密等安全機制,採用的資料結構基本是統一的、公開的狀態,這就意味著一旦破解密鑰就幾乎處於不設防狀態,即使資料結構不公開也不能寄予希望。
公交卡系統雖然也採用了黑名單等系統審計監控機制,但與銀行卡系統的黑名單機制存在非常大的區別:公交卡採用離線黑名單,容量受到終端裝置的限制,而且屬於滯後處理(通常生效和處理周期不小於T+1天);銀行卡採用聯機黑名單,容量基本不受限制,而且屬於即時處理(即時生效和處理)。
3. MIFARE卡系統可能面臨的攻擊分析
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+認證,而國產晶片在這部分其實還存在相當的差距。