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