潘春偉++羅明華++姚慶梅
摘 要:提出一種可以排斥復(fù)制卡的125 kHz ID卡讀卡器設(shè)計(jì)方案。以51單片機(jī)為控制核心,HTRC110作為射頻接口芯片,配以適當(dāng)?shù)奶炀€電路、串口通訊電路和聲光指示電路組成讀卡器硬件,軟件通過(guò)控制HTRC110天線的開(kāi)閉實(shí)現(xiàn)對(duì)射頻場(chǎng)中的卡片復(fù)位,然后打開(kāi)讀卡通道限時(shí)接收,利用復(fù)制卡進(jìn)入磁場(chǎng)后開(kāi)始發(fā)送卡號(hào)信息的時(shí)間滯后于原版卡的特性,實(shí)現(xiàn)讀卡器對(duì)復(fù)制卡的排斥抑制。實(shí)際測(cè)試效果良好,證明方案設(shè)計(jì)合理可行。
關(guān)鍵詞:讀卡器;排斥;復(fù)制ID卡;天線復(fù)位;限時(shí)讀取
中圖分類(lèi)號(hào):TP368 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2015)02-00-03
0 引 言
125 kHz ID卡結(jié)構(gòu)簡(jiǎn)單,40位的卡片序列號(hào)包含在卡內(nèi)一個(gè)64位的卡號(hào)信息中,與讀卡器使用TTF(Tag Talk First)方式通訊,廣泛應(yīng)用于考勤、門(mén)禁、微金額支付等系統(tǒng)中。由于卡片向讀寫(xiě)器傳送數(shù)據(jù)時(shí)使用了非加密的明碼方式,使得復(fù)制、偽造卡片十分容易且成本低廉。
根據(jù)常見(jiàn)復(fù)制卡的特點(diǎn),本文設(shè)計(jì)了一種新型125 kHz防復(fù)制ID卡讀卡器,可以對(duì)使用Temic、Hitags、EM系列等可讀寫(xiě)卡復(fù)制的ID卡進(jìn)行屏蔽排斥,從而有效保護(hù)用戶(hù)系統(tǒng)的安全。
1 理論分析
原版的ID卡功能單一,出廠時(shí)已將64位的卡號(hào)信息固化在卡片的非易失性存儲(chǔ)器內(nèi)??ㄆM(jìn)入125 kHz的射頻場(chǎng)后得電復(fù)位,立即主動(dòng)將64位卡號(hào)信息持續(xù)循環(huán)向讀卡器發(fā)送。原版卡的上電復(fù)位時(shí)間極短,我們以EM4100卡片為例[1],其說(shuō)明書(shū)中雖然沒(méi)有給出準(zhǔn)確的卡片復(fù)位時(shí)間,但經(jīng)大量實(shí)際測(cè)試表明該值小于1 ms。
用于復(fù)制ID卡的卡片一般是125 kHz的可讀寫(xiě)識(shí)別卡,最常見(jiàn)的有Temic、Hitags、EM系列可讀寫(xiě)卡片。相對(duì)于原版的ID卡,這些卡片的共同特點(diǎn)是,一方面可讀寫(xiě)卡片比同類(lèi)型只讀卡片的電路結(jié)構(gòu)復(fù)雜,相同情況下電路復(fù)位比只讀卡需要更的時(shí)間;另一方面,這些可讀寫(xiě)卡由于既可以工作在RTF(Reader Talk First)模式,又可以工作在TTF模式,通常還可以設(shè)定通訊的數(shù)據(jù)編碼和速率,故卡片電路復(fù)位完成后還要讀出配置信息,以便決定進(jìn)入哪種工作模式,執(zhí)行何種通訊數(shù)據(jù)編碼和通訊速率。因此,從進(jìn)入射頻場(chǎng),到開(kāi)始向讀寫(xiě)器發(fā)送數(shù)據(jù),復(fù)制的ID卡所用的時(shí)間要遠(yuǎn)遠(yuǎn)大于原版的ID卡。
上述三種常用于復(fù)制的卡片,從其數(shù)據(jù)說(shuō)明書(shū)中可以查得準(zhǔn)確的卡片從進(jìn)入磁場(chǎng)到開(kāi)始以TTF模式發(fā)送數(shù)據(jù)的時(shí)間[2-4],與原版卡對(duì)比可以得到表1。
普通125 kHz ID卡工作時(shí)數(shù)據(jù)傳輸速率是2 Kb/s,傳送1位的時(shí)間是512 μs,傳送64位的卡號(hào)信息共需32.768 ms。根據(jù)表1中數(shù)據(jù)可以得出結(jié)論,若原版卡和復(fù)制卡同時(shí)進(jìn)入射頻場(chǎng),復(fù)制卡開(kāi)始主動(dòng)發(fā)送數(shù)據(jù)的時(shí)間至少比原版卡滯后2ms,即滯后約4個(gè)數(shù)據(jù)位(512 μs×4≈2 ms)。根據(jù)這一差別,設(shè)計(jì)讀卡器時(shí)如果在打開(kāi)射頻場(chǎng)后延時(shí)1 ms開(kāi)始讀取數(shù)據(jù),則在之后的32.768 ms時(shí)間內(nèi)可讀到原版卡的全部64位卡號(hào)信息,而復(fù)制ID卡只能讀取約60位。利用這一特性,就可以設(shè)計(jì)出屏蔽復(fù)制卡的ID卡讀卡器。
2 硬件設(shè)計(jì)
從前述理論分析可看出,屏蔽復(fù)制卡的機(jī)制主要在于軟件,硬件方面沒(méi)特殊要求。如圖1所示,整個(gè)系統(tǒng)以普通的51單片機(jī)STC89C52為核心,外圍電路包括HTRC110接收模塊、串行口通訊模塊、聲光指示模塊及電源模塊等。STC89C52控制HTRC110芯片實(shí)現(xiàn)卡片信息讀取,讀到的64位卡號(hào)信息經(jīng)解碼后得到40位有效卡號(hào)通過(guò)串口輸出,并驅(qū)動(dòng)聲光電路動(dòng)作。此外串口還可以實(shí)現(xiàn)單片機(jī)的ISP功能,電源電路實(shí)現(xiàn)對(duì)整個(gè)系統(tǒng)穩(wěn)定可靠供電。
2.1 主控芯片電路
主控芯片完成系統(tǒng)各模塊的軟件初始化、讀卡解碼、串行通信及聲光控制等功能,其中除讀卡解碼外其他任務(wù)都比較簡(jiǎn)單。讀卡解碼雖然工作量較大,但在普通ID卡2 Kb/s的通訊速率下,技術(shù)成熟、物美價(jià)廉的51系列單片機(jī)就可以滿(mǎn)足設(shè)計(jì)要求。
圖1 系統(tǒng)硬件框圖
系統(tǒng)選用宏晶科技STC89C52RC單片機(jī)作為主控芯片[5],STC89C52RC的最高時(shí)鐘頻率可達(dá)80 MHz,內(nèi)部自帶8 KB FLASH程序存儲(chǔ)器和512字節(jié)數(shù)據(jù)存儲(chǔ)器,有3個(gè)定時(shí)器和1個(gè)串口,并可通過(guò)串口實(shí)現(xiàn)ISP程序下載與更新。
STC89C52RC外圍配以簡(jiǎn)單的阻容復(fù)位電路,為獲得較為準(zhǔn)確的定時(shí)時(shí)間和串行通訊波特率,使用22.118 4 MHz晶振。
2.2 HTRC110模塊電路
卡號(hào)信息接收模塊選用125 kHz射頻接口芯片HTRC110[6]。HTRC110支持所有工作頻率為125 kHz,使用AM寫(xiě)數(shù)據(jù)、AM/PM讀數(shù)據(jù)的射頻卡片(標(biāo)簽),可以對(duì)數(shù)據(jù)實(shí)現(xiàn)調(diào)制與解調(diào),根據(jù)系統(tǒng)或卡片(標(biāo)簽)的需要設(shè)置芯片增益、帶寬等參數(shù),并可通過(guò)軟件打開(kāi)或關(guān)閉天線。110芯片通過(guò)三線串行通訊與CPU連接。
HTRC110模塊電路如圖2所示。芯片時(shí)鐘選用4 MHz晶振,SCLK、DOUT、DIN加上拉電阻后與微處理器的I/O口相連接,ANT插座用于外接天線。
圖2 HTRC110模塊電路
2.3 通訊及聲光指示電路
通訊電路實(shí)現(xiàn)有效卡片序列號(hào)的輸出,并實(shí)現(xiàn)ISP程序下載功能。系統(tǒng)中選用一片MAX232實(shí)現(xiàn)串口通訊,其電路采用經(jīng)典的4電容接法。聲光指示電路用于讀卡信息指示,當(dāng)讀到有效卡號(hào)時(shí),LED閃爍并伴蜂鳴器動(dòng)作。
3 軟件設(shè)計(jì)
防復(fù)制ID卡讀卡器的軟件主要由系統(tǒng)初始化程序、卡片信息接收、卡片信息解碼、數(shù)據(jù)輸出與狀態(tài)指示等部分組成。系統(tǒng)軟件總框圖如圖3所示,開(kāi)機(jī)初始化完成后即進(jìn)入無(wú)限循環(huán)讀卡,每次先復(fù)位射頻場(chǎng)中的卡片,接著在限定時(shí)間內(nèi)持續(xù)接收64位卡號(hào)信息,如果接收成功則從接收的卡片信息中解碼卡片序列號(hào),并將卡片序列號(hào)從串口輸出,同時(shí)驅(qū)動(dòng)聲光指示。
圖3 軟件總流程圖 圖4 HTRC110初始化配置流程圖
3.1 HTRC110初始化配置程序
HTRC110初始化在開(kāi)機(jī)后的系統(tǒng)初始化階段進(jìn)行,其流程圖見(jiàn)圖4。首先通過(guò)HTRC110的4個(gè)配置頁(yè)設(shè)置芯片相關(guān)工作參數(shù),包括:通過(guò)配置頁(yè)0,設(shè)置通頻帶為160Hz~3kHz,設(shè)置放大器增益為500;通過(guò)向配置頁(yè)1寫(xiě)入0打開(kāi)天線;向配置頁(yè)3寫(xiě)入0設(shè)置HTRC110的外部晶振為4 MHz。之后的AST設(shè)置和通用設(shè)置都是HTRC110廠家指定必須執(zhí)行的序列[6]。經(jīng)過(guò)上述步驟,HTRC110初始化設(shè)置完成,開(kāi)始準(zhǔn)備從天線射頻場(chǎng)中接收卡片信息。
3.2 卡號(hào)信息接收程序
卡號(hào)信息接收程序用來(lái)接收64位卡號(hào)信息,其流程如圖5所示。首先通過(guò)設(shè)置配置頁(yè)1的TXDIS位關(guān)閉天線,射頻場(chǎng)中的所有卡片因?yàn)槭ツ芰縼?lái)源而全部斷電,5 ms后清除TXDIS位打開(kāi)天線,射頻場(chǎng)內(nèi)的所有卡片得電復(fù)位,原版卡直接進(jìn)入TTF模式循環(huán)發(fā)送64位卡號(hào)信息,復(fù)制卡讀取配置頁(yè)數(shù)據(jù),根據(jù)配置參數(shù)開(kāi)始進(jìn)入TTF模式循環(huán)發(fā)送64位卡號(hào)信息。
HTRC110在打開(kāi)天線后立即設(shè)置為數(shù)據(jù)接收模式,然后延時(shí)1 ms以等待原版卡復(fù)位,之后開(kāi)始限時(shí)接收數(shù)據(jù)。接收64位卡號(hào)信息需要32.768 ms,為增加接收的可靠性,接收時(shí)間設(shè)置為接收65位數(shù)據(jù)的時(shí)間,即512 μs×65=33.28ms,在此時(shí)間內(nèi)CPU循環(huán)查詢(xún)HTRC110的DOUT引腳。64位ID卡的數(shù)據(jù)采用曼徹斯特編碼,上升沿表示數(shù)據(jù)“1”,下降沿表示數(shù)據(jù)“0”,發(fā)送連續(xù)的“0”或“1”時(shí),兩個(gè)數(shù)據(jù)沿之間增加一個(gè)狀態(tài)轉(zhuǎn)換沿[7]。在DOUT端,捕捉到數(shù)據(jù)沿則立即將數(shù)據(jù)移位進(jìn)入數(shù)據(jù)緩沖區(qū),如果是狀態(tài)轉(zhuǎn)換沿則繼續(xù)監(jiān)測(cè)DOUT端的下一個(gè)電平跳變。如果在33.28 ms時(shí)間內(nèi)接收到64個(gè)有效數(shù)據(jù)位則轉(zhuǎn)去解碼程序,否則繼續(xù)進(jìn)行下一次復(fù)位天線接收數(shù)據(jù)的循環(huán)。根據(jù)前述理論分析,只有原版卡可以在33.28 ms的時(shí)間內(nèi)送出完整的64位卡號(hào)信息,復(fù)制卡無(wú)法全部送出,從而實(shí)現(xiàn)了對(duì)復(fù)制卡的屏蔽抑制。
圖5 卡號(hào)信息接收程序流程圖
3.3 卡片序列號(hào)解碼程序
卡片序列號(hào)解碼程序?qū)崿F(xiàn)從接收的64位卡號(hào)信息中提取40位有效的卡片序列號(hào)并校驗(yàn)其正確性??ㄆ瑑?nèi)卡號(hào)信息的結(jié)構(gòu)如表2所示,其中9個(gè)“1”的頭部用于識(shí)別卡序列號(hào)的開(kāi)始,之后是50位的卡序列號(hào)及其校驗(yàn)位(卡序列號(hào)5字節(jié)共40位,每4位增加一個(gè)行偶校驗(yàn)位),最后是4位列偶檢驗(yàn)及1位停止位“0”。
卡號(hào)解碼程序的流程圖如圖6所示。通常的ID卡接收程序中一般先識(shí)別接收9個(gè)“1”的卡片信息頭部,然后接收其余部分。這種方法的好處是解碼簡(jiǎn)單,而且可以邊接收邊解碼,缺點(diǎn)是由于要先識(shí)別卡號(hào)信息的頭部,導(dǎo)致接收時(shí)間變長(zhǎng)。本設(shè)計(jì)由于要利用復(fù)制卡發(fā)送卡號(hào)信息起始時(shí)間的滯后性實(shí)現(xiàn)對(duì)復(fù)制卡的抑制,允許接收的時(shí)間嚴(yán)格控制為33.28ms,故不能先識(shí)別頭部,而是有數(shù)據(jù)就接收,先存儲(chǔ)后解碼。這樣接收到的數(shù)據(jù)可能并不是以9個(gè)“1”開(kāi)頭,因此第一步先找出緩存中64位卡號(hào)數(shù)據(jù)的頭部,方法是將64位卡號(hào)數(shù)據(jù)做大循環(huán)右移,每移1位立即檢查開(kāi)始的9位是不是9個(gè)“1”且第64位是不是結(jié)束位“0”,不是則繼續(xù)移位直至找到頭部。如果移位64次后都沒(méi)有找到頭部則說(shuō)明接收的數(shù)據(jù)有誤,返回接收程序繼續(xù)接收。
圖6 卡片序列號(hào)解碼程序流程圖
找到數(shù)據(jù)的頭部后,從頭部的下一位(第10位)開(kāi)始到第59位,每5位正好對(duì)應(yīng)半個(gè)字節(jié)卡序列號(hào)數(shù)據(jù)及1位偶校驗(yàn)位,因此可以每5位提取作為一個(gè)字節(jié),50位共提取10個(gè)字節(jié)。第60位到64位是列校驗(yàn)位和停止位,此5位提取作為第11個(gè)字節(jié)。
數(shù)據(jù)提取完成后先對(duì)前10個(gè)字節(jié)作行偶校驗(yàn),再將前10個(gè)字節(jié)與第11字節(jié)進(jìn)行列偶校驗(yàn),校驗(yàn)通過(guò)說(shuō)明接收到正確的卡號(hào),將前10個(gè)字節(jié)中除校驗(yàn)位之外的數(shù)據(jù)提取組合為5個(gè)字節(jié),即為最后有效的16進(jìn)制卡片序列號(hào)。
4 實(shí)驗(yàn)測(cè)試
使用EM4100、HITAGS32、EM4205、TEMIC5567四種典型卡片各200張進(jìn)行測(cè)試,所有的EM4100原版卡片均可正常讀取卡號(hào),其他三種復(fù)制卡片全部被屏蔽,證明本文討論的方法是正確可行的。
5 結(jié) 語(yǔ)
本文討論了根據(jù)復(fù)制卡在進(jìn)入磁場(chǎng)后發(fā)送卡片信息的時(shí)間滯后于原版卡的特性實(shí)現(xiàn)讀卡器屏蔽復(fù)制卡的方法和主要技術(shù)。系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單,軟件實(shí)現(xiàn)容易。隨著技術(shù)的發(fā)展,復(fù)位時(shí)間更短的復(fù)制卡,本系統(tǒng)可能會(huì)發(fā)生誤讀,另外使用更快的CPU代替51單片機(jī)可以大大提高系統(tǒng)性能。
參考文獻(xiàn)
[1] The Data Sheet of EM4100 Read Only Contactless Identification Device [R]. EM Microelectronic-Marin SA,2004.
[2] The Data Sheet of HITAG S HTS IC H32/ HTS IC H56/HTS IC H48 Transponder IC [R].NXP Semiconductors,2006.
[3] The Data Sheet of Multifunctional 330-bit Read/Write RF-Identification IC ATA5567 [R].Atmel Corporation,2008.
[4] The Data sheet of EM4205-EM4305 512 bit Read/Write Multi-purpose Contactless Identification Device [R].EM Microelectronic-Marin SA,2013.
[5] STC89C51RC/RD+系列單片機(jī)器件手冊(cè) [R].宏晶科技,2014.
[6] Application note of Read/write devices based on the HITAG read/write IC HTRC110 [R].NXP Semiconductors,2010.
[7] The Data Sheet of HTRC110 Hitag Reader Chip [R]. NXP Semiconductors,2010.
[8] 康文廣,王輝映. 一種RFID的曼徹斯特解碼技術(shù)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010(12):20-22.