提高非接觸有值IC卡操作的可靠性研究
IC卡(Integrated Circuit Card)又稱(chēng)為“集成電路卡”,是將一個(gè)集成電路芯片鑲嵌于塑料基片中,封裝成卡的形式,其外形與覆蓋磁條的磁卡相似。IC卡作為一種安全、方便、快捷的支付工具和輕便、詳實(shí)的個(gè)人信息資料庫,在現代的社會(huì )中已受到廣大用戶(hù)的青睞。特別是非接觸射頻IC卡的出現,極大地方便了用戶(hù)的使用,克服了傳統的接觸式IC卡觸點(diǎn)容易磨損、使用不方便的缺點(diǎn)。但同時(shí)也帶來(lái)一些問(wèn)題,因為是非接觸式IC卡,有時(shí)用戶(hù)刷卡的速度過(guò)快,會(huì )導致IC卡讀卡器尚未完成對IC的操作,卡已經(jīng)離開(kāi)了天線(xiàn)區域,從而出現不可預知的后果,嚴重的話(huà)會(huì )使IC卡里的數據丟失,給用戶(hù)造成損失。出現這些問(wèn)題主要是由硬件和軟件兩方面的因素造成的。硬件方面,主要與天線(xiàn)和卡的個(gè)體差異有關(guān)。我們做過(guò)實(shí)驗,不同的卡即使在同一讀卡器上,它們的讀卡距離差別還是很大的;同樣,同一張卡在不同讀卡器上的讀卡距離的差別也很大。讀寫(xiě)距離的縮短,致使在一定的時(shí)間內沒(méi)完成卡的讀寫(xiě),從而出現異常情況。軟件方面,可在盡量縮短卡的操作時(shí)間的同時(shí)采取一些彌補措施,以彌補先天的硬件不足,從而提高IC卡的可靠性操作,避免了一些不必 要的麻煩。
Philips公司是世界上最早研制非接觸式IC卡的公司,其產(chǎn)品系列有Mifare standard、Mifare Light、Mifare PLUS和Mifare PRO。以Mifare standard系列MF1 IC S50為例,按Philips公司的標準,該卡與讀寫(xiě)器天線(xiàn)之間完成一次數據交換的時(shí)間可小于0.1 s。但在實(shí)際中,由于種種原因交易的時(shí)間比這要長(cháng)些,而且處理不好的話(huà),還會(huì )出現不可預料的后果。
1 非接觸IC卡天線(xiàn)組成
非接觸IC卡天線(xiàn)是影響讀卡性能的一個(gè)決定性因素,天線(xiàn)設計的好壞直接影響到讀卡系統的穩定性。如圖1所示,整個(gè)天線(xiàn)部分電路由EMC濾波電路、接收電路和天線(xiàn)線(xiàn)圈電路3部分組成。EMC濾波電路的作用是減弱由天線(xiàn)發(fā)射電路產(chǎn)生的高次諧波對外界的影響。接收電路由R1、R2、C3、C4組成。 R2、C4的作用是使接收腳RX上的直流電平與內部參考電壓輸出VMID保持一致;R1則用于調整接收腳RX上交流信號的幅度。虛線(xiàn)右方所示的電路即為所要設計的天線(xiàn),包擴天線(xiàn)線(xiàn)圈和相關(guān)的諧振元器件。其中,Rext用于調節天線(xiàn)的品質(zhì)因素,而天線(xiàn)的中心頻率f及對外輸出阻抗Za則主要通過(guò)改變諧振電容 C1a、C1b、C2a、C2b的值來(lái)調整。所以外接電阻Rext和諧振電容器件參數的確定為天線(xiàn)線(xiàn)圈電路設計中不可缺少的一環(huán)。根據Philips公司關(guān)于非接觸式IC卡天線(xiàn)設計資料,天線(xiàn)調諧分為2個(gè)步驟: ① 調整天線(xiàn)的諧振頻率f和輸出阻抗Za到期望的13.56 MHz和500 Ω;② 對天線(xiàn)進(jìn)行調節,找到最大的讀卡距離。具體方法為將天線(xiàn)接入電路中,然后在系統工作的情況下,不斷調整C2的值并測試卡的讀寫(xiě)距離,直至找到最大讀卡距離時(shí)C2的值。找出最大讀卡距離的目的是為了使卡進(jìn)入天線(xiàn)輻射范圍的時(shí)間足夠長(cháng),以圓滿(mǎn)地完成對卡的操作。
圖1 天線(xiàn)模塊電路
2 非接觸IC的電子錢(qián)包功能
有值卡一般用于小額消費中,電子錢(qián)包就是典型的應用。電子錢(qián)包的操作包括讀(READ)、加(INCREMENT)、減 (DECREMENT)、傳送(TRANSFER)和恢復(RESTORE)等。電子錢(qián)包一般采用值段方式進(jìn)行存儲,廠(chǎng)家也提供值段操作函數幫助用戶(hù)方便地進(jìn)行開(kāi)發(fā)。值段也稱(chēng)為“值塊(Value Block)”,Value的長(cháng)度為4字節(包括符號位)。為了提高錯誤檢測和糾錯能力,在一個(gè)Value Block中每一個(gè)Value存入3次,如下所示:
在進(jìn)行任意計算之前,在芯片內部檢查3個(gè)Value的一致性。余下的4字節(A和)為8位任意地址(Address)字節,同一地址存入4次(A和)。
Value Block中的內容第一次由WRITE命令寫(xiě)入到所要求的地址中,以后可以用DECREAMENT/INCREMENT/RESTORE命令修改內容。數據的計算過(guò)程如圖2所示。計算結果暫存入DATA寄存器(即數據寄存器),然后用TRANSFER命令寫(xiě)入寄存器。
圖2 Value計算示意圖
3 軟件的實(shí)現
MF1 IC S50有8 Kb EEPROM,分成16個(gè)區,每個(gè)區又分成4個(gè)塊(Block0~3),一個(gè)分組有16字節。為了方便用戶(hù)使用,Philips公司給出了值段操作函數 M500PiccValue(),使用該函數可以方便地進(jìn)行加(INCREMENT)、減(DECREMENT)、傳送(TRANSFER)、恢復 (RESTORE)等操作。但是該函數存在一定的缺陷,當返回值為“非MI_OK”時(shí),會(huì )有兩種情況出現: ① 值操作未完成,值為原值不變;② 值操作已完成,值為正確計算結果。這將導致無(wú)法根據函數返回值來(lái)判斷值操作成功與否(只有返回值是MI_OK才能確定是正確的)。換句話(huà)說(shuō),雖然為 MI_OK時(shí)能確定操作正確,但是由于為“非MI_OK”時(shí)可能完成操作,也可能未完成操作,因此如果這是返回重新進(jìn)行值操作,那么一直等到MI_OK,就會(huì )出現多操作的現象。比如要求刷一次卡扣1元,那它可能扣掉2元、3元,甚至更多。這當然不是所期望看到的。
針對上述的情況,為了保證能正確地對卡進(jìn)行操作和保證數據不丟失,一般在一個(gè)區劃分2個(gè)數據塊作為電子錢(qián)包,采用值段格式進(jìn)行存儲,分別定義為主值塊(①塊)和備份值塊(②塊),主值塊和備份塊相互備份。
圖3 軟件操作流程
先將主值塊的值減去消費額得到的值存在備份值塊中(①塊→②塊,使用“減”和“傳送”操作),此時(shí)主值塊還沒(méi)改變;如果此操作為MI_OK,則繼續下面的操作將備份值塊的值送回主值塊(②塊→①塊),使用恢復操作;如果操作為MI_OK,則此時(shí)①塊和②塊的值相等。每一步操作都判斷結果,失敗則重做。具體軟
|
件操作流程如圖3所示。
4 結論
電子錢(qián)包作為有值卡的一種,對其操作的穩定性是非常重要的。在硬件方面,盡量把讀卡器天線(xiàn)的讀卡范圍調到讀卡的最大距離,以保證卡和天線(xiàn)有充分的時(shí)間耦合,為卡創(chuàng )造一個(gè)良好的硬件條件。但是由于讀卡器的個(gè)體差異和個(gè)人刷卡習慣的不同,也會(huì )導致一些異?,F象。這時(shí)需要用軟件來(lái)彌補硬件上的不足。雙值塊操作雖然犧牲一些刷卡的時(shí)間,但是解決了單值塊操作出現的一些問(wèn)題,即使一個(gè)值塊出現了問(wèn)題,也能從另一個(gè)值塊把數據傳送過(guò)來(lái),從而提高了系統的穩定性。另外,為了保證能夠在卡離開(kāi)天線(xiàn)之前完成對卡的操作,可以增加一些聲光提示作為輔助(比如操作順利完成后才進(jìn)行聲光提示)。這些細節也是必要的。該方法在室內已經(jīng)經(jīng)過(guò)嚴格測試,并投入運行階段,工作穩定。
linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)
評論