由Mifare 1卡破解帶來(lái)的危險以及應對方法
在Mifare1卡片安全問(wèn)題暴露后,一些公司公開(kāi)宣稱(chēng)已經(jīng)有了解決的辦法,其中的法寶就是所謂“一卡一密”,也就是每一張卡片的每一個(gè)扇區的密鑰都不相同,使用CPU卡裝載系統根密鑰,根據Mifare1卡的唯一序列號計算子密鑰,防止一張卡片被破解而影響整個(gè)系統。其實(shí)這種解決方案在Mifare1卡破解之前就已經(jīng)出現。那么,一卡一密真的能解決Mifare1的安全問(wèn)題么,我們還是要從Mifare1卡的認證機制著(zhù)手進(jìn)行分析。
我們已經(jīng)知道,Mifare1卡的認證實(shí)質(zhì)上是卡與基站芯片之間的認證。常用的RC500等基站芯片已經(jīng)為業(yè)界廣為熟知,它的接口和通訊協(xié)議都是公開(kāi)的。在基站與Mifare1卡認證前,需要通過(guò)LoadKey命令將Mifare1卡的密碼裝載到基站芯片中。這一過(guò)程是一個(gè)明文寫(xiě)入的過(guò)程,是由終端設備(如讀卡器)主控單片機傳送給RC500的,并且單片機對RC500的命令傳輸是非加密的。如下圖所示:
這樣就可以通過(guò)截獲單片機與RC500之間的通訊來(lái)獲取M1卡的密鑰。而要做到這一點(diǎn),一個(gè)使用過(guò)RC500的對單片機技術(shù)稍微了解的技術(shù)人員都能夠輕而易舉的實(shí)現。
那么,在讀卡器中安裝SAM卡,通過(guò)SAM卡計算卡片密鑰實(shí)現一卡一密是否就安全了呢。想法非常美好,然而結果卻非人所愿,這樣的做法不但沒(méi)有增加安全,反而更加加大了安全漏洞。如下圖所示:
如圖所示,M1卡通過(guò)SAM卡實(shí)現一卡一密本質(zhì)上是將SAM卡內的主密鑰通過(guò)對M1卡的卡號分散后得到M1卡的子密鑰,但是這個(gè)子密鑰仍然要通過(guò)終端單片機明文傳送給RC500芯片完成對M1卡的認證。更為嚴重的是SAM卡送出的是Mifare1卡的明文密碼,黑客只要獲得一張SAM卡,就能夠通過(guò)它獲得所有卡片的密碼,連破解手段都不用。
此外,在M1卡消費密碼被泄露的情況下,即使采用了聯(lián)機充值的方法,也無(wú)法保障運營(yíng)商的利益,因為在此情況下,盜竊者使用偽造的M1卡,完全可以不用系統的充值密碼,而直接采用M1卡的缺省密碼對卡片進(jìn)行“充值”,然后用真實(shí)的消費密碼在終端上消費。在此情況下,即使采用了黑名單機制也難以避免運營(yíng)商和授卡商戶(hù)遭受損失,因為黑名單機制是一種事后防范機制,防止的是再次發(fā)生同一偽卡的交易,而在M1卡小額消費日益普及的今天,盜竊者只需將偽卡使用一次,就足以獲得比一張偽卡成本高得多的收益。
這樣,我們可以假設一下幾種情況:
外部人員作案:
作案人盜取一個(gè)正式使用的終端設備,通過(guò)線(xiàn)路截獲方式獲取單片機發(fā)送給RC500的密鑰,從而破解M1卡的密鑰。
作案人盜取終端內的PSAM卡,通過(guò)向PSAM卡發(fā)送密鑰分散指令的方式得到每一張M1卡的子密鑰。
內部人員作案:
終端設備的開(kāi)發(fā)人員利用工作之便盜取終端內的M1卡密鑰明文或經(jīng)過(guò)單片機發(fā)送給RC500的M1卡密鑰明文。
發(fā)卡機構工作人員利用工作之便截取PC機通過(guò)M1卡讀卡器發(fā)送給M1卡的密鑰明文?;蛑苯硬僮鱌SAM卡盜取密鑰明文。
系統開(kāi)發(fā)人員利用工作之便盜取PSAM卡密鑰明文。
評論