從烏雲的錯誤漏洞分析看Mifare Classic安全

前言

12年2月初國內著名安全問題反饋平臺-烏雲發佈了有關某公司員工卡的金額效驗算法破解的安全問題。從整個漏洞分析來看,漏洞的提交者把員工卡的數據分析得非常仔細,以至很多剛剛接觸或者未曾接觸的都紛紛讚歎。但從真實的技術角度出發來進行分析的話,從漏洞的標題以及其內部的分析和解決方案都可以看得出,烏雲以及漏洞發佈者完全不明白究竟哪裏纔是漏洞!從08年至今時隔四年,國內對於MIFARE Classic安全漏洞在著名的安全問題反饋平臺卻反映出了國內安全研究者的一種無知。

MIFARE安全問題的由來

2008年2月,荷蘭政府發佈了一項警告,指出當時廣泛應用的恩智浦(NXP)公司的Mifare RFID產品所賴以保證安全的密鑰存在很高的風險,警告是在兩位專家宣稱破解了Mifare Classic的加密算法之後立即發佈的。隨後不久,倫敦公交使用的Mifare被成功克隆。某研究小組甚至使用克隆的預付費公交卡免費乘坐了倫敦地鐵。雖然這一行動純屬學術性行爲,但其所可能引發的連鎖反應已使Mifare芯片技術的所有者荷蘭恩智浦半導體感到了問題的嚴重性。不出NXP所料,荷蘭政府很快便宣佈推遲了基於同樣技術的預付費智能交通卡的實施,並且更換了用於政府大樓門禁系統的Mifare卡。

恩智浦公司有不同級別的芯片,而那次被破譯的是在全球廣泛使用佔據80%份額的非接觸智能卡Mifare Classic芯片,其主要用於RFID的門禁控制、校園一卡通、城市公交、地鐵等支付領域。自1994年Mifare卡問世以來,全球共有50個國家,650個城市在使用Mifare卡,目前市場已銷售十億張卡,八億多張標籤,全球註冊登記的共有7800家卡片及讀寫器生產商,在四十多種應用跨行業使用,其中中國也有140多個城市在使用。因此這項“成果”引起了不小的恐慌,人們擔心:一個掌握該破解技術的小偷可以自由進出政府大樓或公司辦公室。
對於Mifare Classic芯片加密算法被破解一事,NXP已經在其公司網站向業界發表聲明。聲明表示非常遺憾相關研究人員公佈Mifare Classic的協議以及算法細節和實際破解方法,但NXP已經就此事與研究人員展開對話進行和解,並就破解及應對措施對行業合作伙伴採取了一系列溝通措施。


從分析到認識MIFARE Classic安全問題

烏雲安全問題反饋平臺缺陷編號: WooYun-2011-03701,這可能是烏雲乃至國內首個基於RFID卡類的安全漏洞通告,安全問題的內容經過修改之後把“百度”二字改爲了某公司。我們首先從幾個部分開始分析這一篇公告,從而去認識Mifare Classic的安全問題。

從簡要描述當中我們可以看到,漏洞提交者介紹某公司的員工卡使用了RFID技術,而卡的類型爲Mifare Classic 1K卡,我們可以從其下圖當中可以看到圖片第一欄信息00000000h:** ** ** ** B1 88 04 00,而我們從04 00就可以得知卡的種類是有可能爲Mifare Classic 1K,爲什麼說是有可能?因爲從NXP官方的種類分析文檔我們可以知道:MIFARE Mini、MIFARE Classic 1K、MIFARE Plus、SmartMX with MIFARE1K emulation(兼容模式)都會在ATQA顯示爲 04 00的,所以從公告來說對於卡類的判斷有所欠缺,因爲不同的卡類所出現的問題不一,並且也不一定存在MIFARE Classic的漏洞。或者有些人會問,不管是不是你所說的哪幾種卡類,按照漏洞公告的信息來看,只要卡類爲MIFARE Classic 1K的卡就會存在問題就是了!這個說法我反對,因爲從08年至今4年的時間,NXP不但修復了1K卡的安全問題並且也加強了安全的意識,新的1K不一定存在相關的安全漏洞,並且還是類似上面的話,我們必須要懂得分析什麼是MIFARE Classic 1K。那究竟MIFARE Classic的安全漏洞究竟是什麼?

首先(PRNG安全缺陷),國外的安全研究人員發現,MIFARE Classic採用的是Crypto-1私有加密算法,其算法的特點就是對稱式的密碼算法或者說是私鑰密碼系統。其主要組成部分是僞隨機數發生器(PRNG)、48位的線性反饋移位寄存器(LFSR)以及非線性函數。由於算法當中的Filter Function的設計出現缺陷,導致改變線性反饋移位寄存器的後8位數值就有可能得到所對應的Keystream。這個缺陷類似於802.11b WEP算法,不同的明文有極高的可能性被相同的Keystream,使得整個加密算法出現了漏洞。

第二(已知密鑰窮舉),從多次針對算法的破解得出的Key列表中發現,很多使用MIFARE Classic的用戶都會將其默認的密鑰延續使用,意思就是很多人寧可貪圖一時方便繼續使用出廠時的密鑰,也不會根據自身的安全需求而進行改變,以至我們可以不需要花費太多的時間就可以進行破解從而得到卡類的信息。綜合上述,我們知道如果要處理任何MIFARE Classic卡的數據都需要利用密鑰進行識別,從而讀取對應的數據。不破解就不可能讀取其內容。

第三(暴力破解,缺乏防碰撞機制),從WEP到WPA/WPA2的密鑰破解我們可以知道,暴力破解已經從浪費時間、成功率低到現在GPU暴力破解時間短、成功率高轉變,MIFARE Classic也是如此,我們可以利用GPU等高速暴力破解手段進行破解,從而得到我們所需要的密鑰

那現在我們繼續回頭看看烏雲的漏洞報告,詳細說明並沒有寫出任何關於MIFARE Classic的安全問題,最起碼提交者根本就不瞭解其如何拿到卡內的數據的原理是什麼!我們從截圖進行推斷,提交者使用的是ACR122U或者Proxmark3之類的設備進行卡類的破解。通常如果我們使用ACR122U這類的RFID讀寫器進行破解操作的時候,我們都是採用offline模式,因爲我們都脫離了真實環境下的讀取方式,利用暴力、已知密鑰窮舉等方式去進行破解操作。例如大家常用的mfocGUI就是已知密鑰窮舉的典型軟件。如果在破解的過程中,無法進行窮舉以及暴力破解操作時,很大可能是因爲卡類已經增加了防碰撞機制,導致無法完成窮舉和暴力破解。而Proxmark3採用的破解形式卻與ACR122U恰恰相反,Proxmark3是基於PRNG的安全缺陷進行的隨機數碰撞,利用PRNG的安全缺陷我們可以很快速地得到對應的密鑰,從而進行進一步的破解操作。和ACR122U的手法一樣,當我們無法進行基於PRNG的安全缺陷破解的時候,也是因爲卡類增加了對應的機制以及修復了漏洞。

從報告當中我們看不到真正漏洞是什麼,也看不到有什麼漏洞的出現,爲什麼這麼說?漏洞提交者從卡的信息得出了電子錢包的位置,並且從中完成了修改電子錢包數值的操作,把該電子錢包的所謂算法,因其脆弱性被列爲了安全缺陷。但實際上都是錯的,因爲我們可以從國家的pboc1.0應用規範看到,電子錢包一直以來都是受到應用規範的規定,這是中國金融行業電子錢包的一個規範,並不是安全缺陷或者安全漏洞。

而真正的安全問題是基於卡類密鑰以及其卡使用的整體機制,如果某公司在員工卡的使用自定義的密鑰,或許針對mfoc這樣的低門檻破解軟件就有一定的阻礙作用。並且其消費系統不採用聯網等一系列行之有效的方法去進行運作,以至***者可以破解卡的密鑰從而進行金額的修改以及重放***。

從漏洞報告當中的修復方案來看,“修改爲複雜算法,或一次一密,即每次刷卡Key的值都在變化。”再次證明了,漏洞提交者不懂得MIFARE Classic的原理更加不明白應該如何修復問題。從MIFARE Classic的安全問題來看,我們應該選擇使用MIFARE Classic以上的高端卡類,例如:CPU卡等等的卡類,並且要設計好其相關的消費、門禁等等的系統,不僅僅要識別UID、還要在數據內進行對比和數據聯網。

總的來說,烏雲的漏洞報告從卡的數據內容來看是完全沒有任何安全缺陷以及安全漏洞的,其報告的分析流程以及內容都是正確無誤的,這是一篇某公司員工卡數據分析文章並不是某公司員工卡金額效驗算法破解的文章。作爲一個國內著名的安全問題反饋平臺,是不是需要檢討或者改善相關方面的審覈以及自身的技術呢?記住這不是你所謂的ID問題!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章