劉永清
國家計算機網(wǎng)絡應急技術(shù)處理協(xié)調(diào)中心江蘇分中心
IC卡在生活和工作中十分常見,廣泛應用于公共交通、門禁、電子錢包等領域,具有攜帶方便、操作簡單、使用靈活、一卡多用、抗干擾性能力強、可靠性高等優(yōu)點。標準的IC卡為長方形,尺寸為85.6×53.98mm2,實際生活中使用的IC卡的外形卻是各種各樣,有卡片式和鑰匙扣等樣式。
IC卡不但外形各異,卡片的種類也是十分繁多。根據(jù)讀卡方式可分為接觸式、非接觸式、雙界面卡;根據(jù)工作頻率可分為低頻125kHz、高頻13.56MHz、微波2.4GHz等;根據(jù)嵌入芯片可分存儲卡、邏輯加密卡、CPU卡。
在眾多種類IC卡中,Mifare 1(簡稱M1)系列IC卡價格便宜,使用最為廣泛。M1卡是一種邏輯加密卡,工作頻率為13.56MHz,讀卡距離可達10cm,與讀卡器的通信速率可達106kbps,因此,一次刷卡交易可以0.1秒內(nèi)完成。M1卡中的無線智能卡芯片是Philips公司根據(jù)ISO/IEC 14443A標準開發(fā),通訊層遵從ISO/IEC 14443A的第1、2、3部分,保密層使用經(jīng)區(qū)域驗證的Crypto-1流密碼,對M1卡的通信數(shù)據(jù)進行加密。M1卡內(nèi)置芯片有S50和S70兩種型號,S50與S70主要不同在于卡片的扇區(qū)分布和容量不同,S50容量為1K字節(jié),而S70的容量達到了4K字節(jié)。S50卡使用最廣泛,本文將重點介紹。
(1)無線傳送數(shù)據(jù)和能量
M1卡中芯片連接著幾匝線圈,組成一個LC串聯(lián)諧振電路,諧振頻率13.56MHz。這些芯片及線圈嵌入到塑料中,這就形成了一張無源的無線智能卡,這種卡不需要電池。讀卡器持續(xù)向外發(fā)出一組固定頻率的電磁波,其頻率與M1卡的諧振頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使諧振電容內(nèi)有了電荷,當積累的電荷達到2V以上時,即可驅(qū)動芯片工作,此時M1卡的高速RF通訊接口就可以與讀卡器傳送數(shù)據(jù)。
(2)反沖突
智能反沖突(Anticollision loop)功能允許同一工作區(qū)域中有不止一張M1卡同時工作,反沖突算法每次只選擇一張卡,確保對被選中的卡正確執(zhí)行操作,而且同一區(qū)域中沒有被選中的卡不會破壞數(shù)據(jù),而是回到待機狀態(tài)等待新的請求命令。
(3)安全性
M1卡的一個重要特點是保密,防止受到欺騙攻擊。M1卡和讀卡器之間通過三輪確認(Three Pass Authentication)進行相互認證,認證后的數(shù)據(jù)交互都進行了加密,使得IC卡應用系統(tǒng)具有一定的保密性。
(1)存儲結(jié)構(gòu)
M1 S50卡存儲空間為1K字節(jié),分成16個扇區(qū)(Sector),每個扇區(qū)又分成4塊(Block),每塊有16個字節(jié),數(shù)據(jù)的讀寫以塊為存取單位。每個扇區(qū)有兩套獨立的48位的密鑰(KeyA, KeyB)。如圖1所示。
圖1 M1卡存儲結(jié)構(gòu)圖
(2)訪問權(quán)限
除了0扇區(qū)外,每個扇區(qū)的0~2塊為數(shù)據(jù)塊,3塊為區(qū)尾(Sector Trailer)。每個扇區(qū)的區(qū)尾包括6字節(jié)KeyA、4字節(jié)存儲控制位、6字節(jié)KeyB。M1卡每個扇區(qū)的存取控制位初始值為FF078069,KeyA,KeyB初始密鑰為FFFFFFFFFFFF。
數(shù)據(jù)塊和區(qū)尾由3個存取控制位[C1XY, C2XY, C3XY]Y=0~3來定義其讀寫權(quán)限,這些存取控制位以取反(上劃線表示)和不取反的形式保存在指定的區(qū)尾中,其中字節(jié)9保留未使用。數(shù)據(jù)塊和區(qū)尾訪問條件的定義如表1和表2所示。
表1 數(shù)據(jù)塊訪問條件(Y=0~2)
表2 區(qū)尾訪問條件
(3)數(shù)據(jù)塊
根據(jù)訪問權(quán)限,經(jīng)過密碼驗證后,就可以訪問數(shù)據(jù)塊。M1卡的數(shù)據(jù)塊根據(jù)讀寫方式又分為兩種類型:
①讀寫塊
讀寫塊用作為普通讀寫的16字節(jié)數(shù)據(jù)塊,只能進行讀塊或?qū)憠K。
②值塊
值塊主要用于電子錢包功能,可以讀值、加值、減值、轉(zhuǎn)存、恢復,值塊中的數(shù)據(jù)包括符號位共4字節(jié)。為了提供檢錯糾錯能力,數(shù)據(jù)被存儲3次,其中原始數(shù)據(jù)保存2次,取反數(shù)據(jù)保存1次。剩余4字節(jié)用于保存存儲段的地址,原始地址和取反地址各保存2次。
(4)廠商塊
0扇區(qū)0塊與其他數(shù)據(jù)塊不同,稱為廠商塊,標準M1卡的廠商塊是只讀的,有的兼容M1卡的廠商塊可以更改,這種卡稱為UID卡。廠商塊共16字節(jié),各字節(jié)的定義如下:
0~3字節(jié)為序列號(UID, Unique IDentifier)。
4字節(jié)為校驗字節(jié)(BCC, Byte Calculation Check),是0~3字節(jié)的異或值。
5字節(jié)為選擇確認碼(SAK, Select AcKnowledge),S50的SAK為08,S70的SAK為18,CPU卡的SAK為20,模擬CPU卡的SAK為28。
6~7字節(jié)為請求響應碼(ATQA, Answer To reQuest, type A),S50的ATQA為0004,表示UID長度為4字節(jié),遵守面向比特的防沖突機制,S70的ATQA為0002,有的CPU卡的ATQA為0344或0008等。
8~15字節(jié)為廠商數(shù)據(jù)。
為近一步理解M1卡的工作原理,表3列出了文獻中實驗偵聽的IC卡通信過程數(shù)據(jù)。
表3 讀卡器與M1卡通信數(shù)據(jù)舉例
通過分析表3的通信數(shù)據(jù)可以得出M1卡與讀卡器的通信過程如下:
(1)讀卡器輪詢
①讀卡器不停地發(fā)送REQA(Request Command, Type A),以探測是否有A類型的IC卡靠近讀卡器。
(2)IC卡響應
②IC卡中的LC諧振電路接收到讀卡器的電磁波,因共振產(chǎn)生電荷,給IC卡芯片供電,IC卡復位后進入空閑狀態(tài),并偵聽讀卡器發(fā)出的命令。當收到讀卡器的REQA命令后,IC卡回復ATQA碼,并進入準備狀態(tài)。
(3)防沖突循環(huán)檢測
③讀卡器發(fā)出SEL NVB(Select Number of Valid Bits),以進行沖突檢測,其中NVB = 20表示有效命令為2個字節(jié)。
④靠近讀卡器的IC卡都會回應其UID + BCC,M1卡的UID一般為4字節(jié),BCC是一字節(jié)的校驗字,是UID的異或值。如果此時有多張IC卡同時回應,那么就可能出現(xiàn)沖突,此時讀卡器就會再次發(fā)送SEL NVB命令,直到?jīng)]有沖突出現(xiàn)。
(4)選擇IC卡
⑤如果沒有檢測到?jīng)_突,那么讀卡器就發(fā)出SEL NVB UID CRC_A,以選擇指定UID的IC卡,此時NVB = 70表示有效命令為7個字節(jié)。
M1卡的CRC_A的計算公式在ISO/IEC 13239中定義,其生成多項式為x16+x12+x5+1,記為0x11021,但是16移位寄存器的初始值不是0xFFFF,而是0x6363。
⑥被選中的IC卡回應SAK CRC_A,此時IC卡轉(zhuǎn)換為活動狀態(tài),沒有選中的IC卡保持準備狀態(tài),等待新的請求命令。
(5)三輪確認認證
⑦讀卡器發(fā)出Auth Addr CRC_A,指定要訪問的數(shù)據(jù)塊,并選擇密鑰A或密鑰B進行認證,Auth若為60則表示選擇密鑰A認證,若為61則表示選擇密鑰B認證,然后進入三輪確認認證。
⑧IC卡從對應塊的區(qū)尾讀出密鑰和存儲控制位,判斷讀卡器是否為合法訪問,若為非法訪問,則卡片不會響應讀卡器;否則發(fā)送一個4字節(jié)的隨機數(shù)RB(第一輪確認)。
⑨讀卡器將接收到隨機數(shù)RB、自己生成的隨機數(shù)RA以及其他附加信息利用未公開的Crypto-1算法進行加密,然后將密文發(fā)給IC卡(第二輪確認)。
⑩IC卡對接收到的密文進行解密得到RA, RB及附加信息,檢查RB及附加信息是否正確,若檢查正確,則IC卡對讀卡器認證通過,然后將RA加密后發(fā)給讀卡器(第三輪確認)。
(6)數(shù)據(jù)塊讀寫
讀卡器對接收到的密文進行解密得到RA等信息,與IC卡進一步確認了隨機數(shù)RA。認證通過后,就可以對指定的數(shù)據(jù)塊進行讀寫操作,后續(xù)的數(shù)據(jù)通信都是加密傳輸?shù)摹?/p>
由于每個扇區(qū)都有各自的密碼,如果要對其他扇區(qū)進行操作,還需進行⑦至步的三輪確認認證。
M1卡雖然有三輪確認認證及數(shù)據(jù)加密傳輸?shù)劝踩侄?,但是M1卡存在著眾多先天不足的問題,比如:密鑰長度只有48位、密鑰核驗錯誤次數(shù)沒有限制等,可以通過不斷地重試,對M1卡進行暴力破解。早期要破解M1卡不但要對M1卡有深刻的了解,而且還要有高深的計算機技術(shù),現(xiàn)在網(wǎng)上有多種破解工具,可以輕松破解M1卡。
PN532是最廉價的破解方案,僅一塊簡易電路板,配合mfoc和mfcuk軟件使用,就可以滿足常規(guī)的M1卡的讀寫操作,適合有一定計算機技術(shù)的人員使用,可以用于破解M1S50卡,不能破解全加密卡(所有扇區(qū)都未使用改初始密鑰和簡單密鑰),適合破解門禁等應用簡單的IC卡。
ACR122U讀寫的主芯片也是PN532,配套有更加完善破解軟件,使用稍微簡單一些,但同樣不能破解全加密卡,對于加密了部分扇區(qū)的S70卡也較難破解,性價比一般。
Proxmark3是一款開源的研究平臺,設計圖被公布在Proxmark3官方網(wǎng)站,在網(wǎng)上可以找到配套的軟件,另有社區(qū)可獲取對應的固件及技術(shù)支持,可破解低頻卡、S50和S70全加密卡及部分特殊卡,功能相當強大,但價格較貴。
M1卡在工作與生活中使用非常廣泛,某市的公共自行車卡就是選用了M1卡。
為了分析該公共自行車卡存儲的數(shù)據(jù),筆者用ACR122U對自行車卡進行了破解,破解操作界面如圖2所示,破解完成后生成了二進制dump文件。
圖2 ACR122U破解軟件
下面分析破解生成的dump文件,查看公共自行車卡的各個扇區(qū)分別存儲了什么數(shù)據(jù)。
(1)0扇區(qū)數(shù)據(jù)
圖3 0扇區(qū)數(shù)據(jù)
0扇區(qū)第0塊數(shù)據(jù)塊是廠商塊,SAK=08, ATQA=0004(先傳低字節(jié)后傳高字節(jié)),由此進一步驗證了該公共自行車卡是M1卡。第1塊數(shù)據(jù)中“20160303”是制卡時間,其他字節(jié)功能未知,最后一個字節(jié)為校驗字節(jié),是0x33與當前塊前15字節(jié)的異或值。不同自行車卡的第2塊數(shù)據(jù)都相同,可能是公共自行車卡的標識。0區(qū)的密鑰A為常用的密碼“A0A1A2A3A4A5”,密鑰B無明顯特征,存取控制位為69678969。
(2)1扇區(qū)數(shù)據(jù)
圖4 1扇區(qū)數(shù)據(jù)
1扇區(qū)第1塊和第2塊數(shù)據(jù)相同,是為了數(shù)據(jù)安全存儲而進行的冗余存儲,而且這兩塊數(shù)據(jù)是作為值塊進行存儲的,數(shù)據(jù)值為0x00001324,十進制為4900,即自行車卡的余額為49.00元。
(3)2扇區(qū)數(shù)據(jù)
2扇區(qū)第0塊數(shù)據(jù)為自行車的卡號,采用ASCII編碼。第1塊數(shù)據(jù)為辦卡時間;第2塊數(shù)據(jù)為持卡人姓名,也是ASCII編碼。前三塊數(shù)據(jù)的最后一個字節(jié)也是校驗字節(jié)。
卡片其他的扇區(qū),存儲數(shù)據(jù)的意義不明顯,有的扇區(qū)沒有存儲數(shù)據(jù),在此不再列舉分析。
圖5 2扇區(qū)數(shù)據(jù)
破解了IC卡后,就可對卡片余額等數(shù)據(jù)進行修改,也可對IC進行復制,操作很簡單,導入之前破解生成的dump文件,將該文件寫入空白的UID卡中,即可實現(xiàn)IC卡克隆。筆者測試過,復制的公共自行車卡可以正常借車。
通過對某市公共自行車卡的破解可以看出,由于M1卡的先天不足,導致M1卡很容易受到非法復制、惡意修改數(shù)據(jù)等攻擊。那么如何提高M1卡的應用安全呢?有以下兩種方案:
(1)將離線刷卡調(diào)整為在線刷卡,每次刷卡交易,讀卡器都會將卡內(nèi)數(shù)據(jù)與聯(lián)網(wǎng)查詢的后臺數(shù)據(jù)進行比較,發(fā)現(xiàn)數(shù)據(jù)不一致時,將該卡列為黑名單禁止使用。正常刷卡時,在更新IC卡內(nèi)數(shù)據(jù)時,也同步聯(lián)網(wǎng)更新后臺數(shù)據(jù)庫數(shù)據(jù)。這種方式可以降低IC卡被非法破解使用的風險,但是也存在一定弊端,每次交易都要網(wǎng)絡連接后臺數(shù)據(jù)庫,造成交易時長增加,客戶體驗下降,而且如果網(wǎng)絡中斷,那么刷卡交易將無法進行。
(2)將公共自行車卡由M1卡更換為安全性更高的CPU卡,這種方案能夠徹底解決公共自行車卡的安全問題,但是所有客戶都要重新?lián)Q卡,自行車站點要更換CPU卡讀卡器,整個公共自行車系統(tǒng)軟件也要更新,工作量較大,需要財政投資升級系統(tǒng)。
圖6 ACR122U復制UID卡軟件
IC卡在生活和工作中普遍使用,本文首先根據(jù)使用方式、工作頻率、嵌入芯片對IC卡進行了分類,引入了最為常見的非接觸式13.56MHz的邏輯加密卡——M1卡,M1卡因價格便宜使用最為廣泛;接著重點介紹了M1卡數(shù)據(jù)分區(qū)存儲結(jié)構(gòu)和數(shù)據(jù)通信過程,指出了當前市面上流行的破解M1卡的三種工具;最后以某市公共自行車卡作為M1的應用案例,對其進行了破解分析,并提出了改進建議。因此,可以說當前許多在用的基于M1卡的交易系統(tǒng)是不夠安全的,隨著CPU卡價格的下降,無論是政府還是企事業(yè)單位在新建IC卡應用系統(tǒng)時,建議使用CPU卡代替M1卡,以提高系統(tǒng)安全性。