摘#8195;要 本文介紹非接觸CPU卡的通訊協(xié)議,以及利用MCU對(duì)非接觸CPU卡進(jìn)行讀寫的原理及軟硬件設(shè)計(jì),對(duì)主要的讀卡程序進(jìn)行了說明。
關(guān)鍵詞 非接觸;CPU卡;讀寫器
中圖分類號(hào) TP 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào) 1673-9671-(2012)012-0126-01
中國(guó)的IC卡產(chǎn)業(yè)及應(yīng)用始于20世紀(jì)90年代初,是伴隨著中國(guó)政府啟動(dòng)“金卡工程”而發(fā)展起來的,至今已有十多年的歷史。前期主要的應(yīng)用,如企業(yè)應(yīng)用,公交,以及身份證等都是邏輯加密卡,而邏輯加密卡的安全性比較低,容易遭到破解。而非接觸CPU卡芯片和COS的安全技術(shù)提供了雙重安全保證,非接觸CPU卡取代非接觸邏輯加密卡成為
必然。
1 非接觸CPU卡的介紹
1)非接觸卡與基站芯片的數(shù)據(jù)交互原理?;拘酒騇1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個(gè)LC串聯(lián)諧振電路,其頻率與訊寫器發(fā)射的頻率相同,在電磁波的激勵(lì)下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個(gè)電容的另一端,接有一個(gè)單向?qū)ǖ碾娮颖?,將電容?nèi)的電荷送到另一個(gè)電容內(nèi)儲(chǔ)存,當(dāng)所積累的電荷達(dá)到2 V時(shí),此電容可做為電源為其他電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。
2)非接觸CPU的特點(diǎn)。非接觸CPU卡,類似于一臺(tái)計(jì)算機(jī),卡內(nèi)有CPU,存儲(chǔ),IO等,其內(nèi)的軟件業(yè)界稱為COS(Card Operating System),符合ISO7816系列標(biāo)準(zhǔn)及ISOI4443技術(shù)標(biāo)準(zhǔn)。支持ISO14443-4:T=CL通訊
協(xié)議。
3)非接觸CPU卡的通訊協(xié)議。
2 MCU與非接觸CPU卡接口硬件原理
1)讀寫器原理框圖。
圖1 原理框圖
2)MCU讀寫非接觸CPU卡的軟件設(shè)計(jì)。CPU卡操作主流程。首先對(duì)卡執(zhí)行請(qǐng)求命令,防碰撞,選卡 動(dòng)作。然后對(duì)卡執(zhí)行RATS,讓CPU卡復(fù)位。接下來,按COS技術(shù)手冊(cè)執(zhí)行相關(guān)的CPU卡的命令,如外部認(rèn)證,讀寫二進(jìn)制文件,等。
當(dāng)執(zhí)行完COS命令后,需要執(zhí)行DESELECT命令,讓CPU卡恢復(fù)到初始狀態(tài)。
RATS:開始字節(jié)為E0,參數(shù)為FDSI和CID。
DESELECT:開始字節(jié)為CA,參數(shù)為CID。
CPU_CMD:參考相關(guān)公司的COS手冊(cè)。
3 通用讀寫器與PC機(jī)的通訊協(xié)議及設(shè)計(jì)
MCU初始化后,進(jìn)行主循環(huán),等待PC發(fā)來的命令,根據(jù)命令類型分別執(zhí)行卡復(fù)位,取消選擇,卡掛起及CPU卡的命令。
4 主要程序函數(shù)說明
1)卡復(fù)位:
UINT8 Mif_CpuRats(UINT8 *strAckData,UINT8 *iLen)
功能:對(duì)CPU卡執(zhí)行復(fù)位功能
輸入:無
輸出: strAckData,復(fù)位應(yīng)答數(shù)據(jù)組
#8195;#8195;#8195; iLen:復(fù)位應(yīng)答的數(shù)據(jù)個(gè)數(shù)
返回:0-成功,1-失敗
2)取消選擇:
UINT8 Mif_CpuDeSeclect(UINT8 cid)
功能:對(duì)CPU卡執(zhí)行取消選擇
輸入:CID
輸出: 無
返回:0-成功,1-失敗
3)CPU卡命令:
UINT8 Mif_CpuCmd(#8195;#8195;#8195;#8195;UINT8 CLA,UINT8 INS,
#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195; UINT8 P1,UINT8 P2,
#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195; UINT8 LC,UINT8 *strData,
#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195;#8195; UINT8 *LE,UINT8 *SW1,UINT8 *SW2);
功能:根據(jù)COS手冊(cè)執(zhí)行CPU卡的命令
輸入:CLA:命令類型
#8195;#8195;#8195;INS:COS命令
#8195;#8195;#8195;P1:參數(shù)1
#8195;#8195;#8195;P2:參數(shù)2
#8195;#8195;#8195;LC:數(shù)據(jù)體長(zhǎng)度
#8195;#8195;#8195;StrData:數(shù)據(jù)體
#8195;#8195;#8195;LE:接收數(shù)據(jù)的長(zhǎng)度。
輸出:StrData:CPU卡應(yīng)答的數(shù)據(jù)
#8195;#8195;#8195;LE:應(yīng)答數(shù)據(jù)個(gè)數(shù)
#8195;#8195;#8195;SW1:應(yīng)答狀態(tài)碼高字節(jié)
#8195;#8195;#8195;SW2:應(yīng)答狀態(tài)碼低字節(jié)
返回: 0-命令執(zhí)行完成,1-命令執(zhí)行超時(shí)。
說明: 整個(gè)CPU卡命令是否執(zhí)行正確,要看SW1,SW2,卡返回的狀態(tài)碼。
4)CPU卡操作注意事項(xiàng):
CPU卡片供應(yīng)商提供卡片時(shí),在卡片上已經(jīng)建立了主文件(MF)及主密鑰文件(MF 的Keyfile文件),主密鑰文件中也已寫入了初始卡片主控密鑰。用戶拿到卡后,首先對(duì)卡片進(jìn)行外部認(rèn)證。然后采用擦除命令清除卡片上已有的卡片結(jié)構(gòu),再開始重新建立卡片結(jié)構(gòu)。
5 結(jié)束語
本文介紹的讀寫器為通用行讀寫設(shè)備,PC軟件可以根據(jù)協(xié)議按照COS手冊(cè)的要求封裝相應(yīng)的函數(shù),實(shí)現(xiàn)相關(guān)的CPU卡應(yīng)用。讀者可以根據(jù)本讀寫器的設(shè)計(jì)思想擴(kuò)展應(yīng)用設(shè)計(jì)如考勤、門禁、手機(jī)支付POS等。
參考文獻(xiàn)
[1]吳永祥.射頻識(shí)別(RFID)技術(shù)研究現(xiàn)狀及發(fā)展展望[J].微計(jì)算機(jī)信息,2006,11:234-236.
[2]王愛英.智能IC卡技術(shù)[M].北京:清華大學(xué)出版社,2001.
[3]何將三,陳國(guó)棟.基于MFRC500的射頻識(shí)別讀寫器設(shè)計(jì)[J].單片機(jī)于嵌入式系統(tǒng)應(yīng)用,2004,11:52-54.