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