Mifare1的安全性主要指卡中數據的安全性,要求卡中的數據不能被非法修改或竊聽。數據的安全性主要使用加密技術來保證,加密技術有兩個關鍵因素:加密算法和密鑰。現代加密技術的一大特點是加密算法公開,如果加密密鑰和解密密鑰相同,則稱為對稱加密,密鑰不能公開;如果加密和解密密鑰不同,則可以公開其中一個密鑰(公鑰),另一個不公開(私鑰)。加密破解的實質就是如何獲得不公開的密鑰。
Mifare1中使用了一種稱為“crypto1”的加密算法。遺憾的是,這是一種不公開的私有算法。就本人目前所知,這種算法先在卡片與讀寫器之間進行三次相互認證,認證成功才能進行對卡片的讀、寫、加值、減值等后續操作,這些操作使用“crypto1”加密流。三次認證的原理與步驟我們是清楚的,但具體采用了什么算法卻不得而知,可以確定的是,認證過程中使用了4字節卡序列號、6字節密碼和1字節數據塊號。
不公開的好處是卡片市場的排他性,而且過去的事實已經證明,NXP的這種做法在市場上取得了巨大的成功。不公開算法的潛在危害也同樣顯而易見,這種沒有經過黑客們攻擊考驗的加密算法,它的市場應用是如此的大,一旦算法被破解,所有使用這種卡片的應用都將受到威脅。
不幸的是,自2007年以來,Mifare Classic芯片逐步被破解。國外已經有高手,即使在不需要使用合法讀卡器的情況下,一種新的攻擊能夠在300次查詢內獲得任意扇區的密鑰;如果使用合法讀卡器,另外一種攻擊獲得密鑰僅需要40毫秒。而且網上已經有“crypto1”的原理圖及相關破解源代碼。
面對M1卡片這些現實的風險,作為用戶應該怎么辦呢?其實也大可不必驚慌。任何一種安全算法都不會是100%安全的,任何一種算法都有一種叫做“窮舉”的方法可以破解它。一方面“crypto1”雖然被破解,但通常需要一定的破解硬件設備,并要求破解者有一定的專業水平;另一方面對于多數小金額應用的卡片來說,破解的風險與收益也是破解者必須考慮的因素;更重要的是,我們不能一棵樹上吊死,可以采取其他的方法協助“crypto1”算法用于防破解,比如一卡一密、對M1卡進行升級、將M1卡聯網使用等。
Mifare1的應用如此廣泛,而當初設計時它的序列號只有4個字節,為了保證卡序列號的全球唯一性,所有的卡號都占滿了也就能生產40多億張,這樣的容量很難滿足日益增長的對Mifare1的龐大需求,于是市場上開始出現7字節序列號的M1卡。用戶在使用這些7字節M1卡片時會經常會遇到一種現象,就是各個廠家生產的7字節M1卡片有時差異巨大,讀寫器無法兼容。
出現這種情況主要有兩個原因。一是經典M1卡片只有4字節卡序列號,只需要一個層次(cascade)的防沖突循環就可以選中卡片;而7字節序列號的M1卡片需要兩個層次的防沖突循環才能選中卡片。但是有些卡片并不需要第二層的防沖突循環,如果進行了第二層的防沖突循環反而會出錯。
另一個問題出在卡認證階段。前面說了,卡認證需要4字節卡序列號、6字節密碼和1字節數據塊號參加。但是新卡片有7字節卡序列號,到底讓哪4個字節參加認證呢?目前主要有3種情況,一是使用88H和卡號的前3個字節(也就是第一層防沖突得到的卡序列號數據)參加認證,第二種情況是使用卡號前4個字節參加認證,最后一種情況是使用卡號的后4個字節(也就是第二層防沖突得到的卡序列號數據)參加認證。
所以對于讀寫器的開發者來說如果你的讀寫器不能讀取7字節卡序列號的M1卡片,可以從是否需要第二層防沖突選擇和到底哪4個字節的序列號參加認證兩個方面考慮。
審核編輯 黃宇
-
RFID
+關注
關注
388文章
6142瀏覽量
237755 -
射頻識別
+關注
關注
8文章
577瀏覽量
38931
發布評論請先 登錄
相關推薦
評論