基于OTP的一次性電子錢包RFID卡
文章出處:http://hz-huyue.com 作者:劉敬術,劉俊偉,王兼明,龔敏 人氣: 發表時間:2011年09月27日
1 引言
電子錢包是顧客在電子商務購物活動中常用的一種支付工具,是在小額購物或購買小商品時常用的新式錢包。電子錢包有兩種概念:一種是純粹的軟件,只要用于網上消費、賬戶管理,這類軟件通常與銀行賬戶或銀行卡賬戶連接在一起的;二是小額支付的智能儲值卡,持卡人預先在卡中存入一定的金額,交易時直接從卡中扣除交易金額,因為此類卡不像銀行卡那樣需要大型的系統支持,所以在一些活動的、小額的交易中應用非常廣泛,最具代表性時公交卡。
電子錢包智能儲值卡一般是基于射頻識別技術,并包括芯片、天線和封裝三個主要組成部分。電子錢包的芯片存儲值可以是數字現金和其他電子貨幣,可以在相應的裝置上消費,并且可以顯示有多少錢在用戶的電子錢包內,如公共交通卡可以在相應的公共交通讀卡機上讀出其存儲值,在其上進行消費。
隨著電子商務和技術的發展,電子錢包的使用已經越來越多,但是現有的智能儲值卡都是基于EEPROM(電可擦除可編程只讀存儲器)工藝,其成本難以下降,阻礙了對電子錢包的利用。利用低成本的0TP(一次可編程)存儲器,結合模擬電路和數字電路實現一種一次性電子錢包。這種一次性電子錢包的基本功能是在發卡時將一定的金額存入卡中,然后最終用戶在讀卡機上以單位值或是單位值的倍數消費,直到金額消費完為止。因為OTP存儲器的只能一次編程的特性,使得基于這種存儲器的一次性電子錢包與基于EEPROM 的電子錢包在內部操作上有很大的不同。
2 一次性電子錢包的功能
電子錢包一般包括以下幾個主要功能:初始化錢包、扣錢包、加錢包和讀錢包。初始化錢包是指將一定的金額在發卡商那里存人電子錢包中;扣錢包是支持電子錢包在指定的機具消費,每次消費扣除一定的金額;加錢包是指為電子錢包充值;讀錢包則是將電子錢包的余額讀出。一次性電子錢包沒有加錢包的功能,但其它功能從用戶層面來說跟S50等常用的電子錢包卡一樣的。
2.1 存儲器分配
一次性電子錢包的OTP存儲器的大小為8KBits,主要劃分為兩個功能區:一個是存取面值和密碼等信息的操作區,大小為2KBits;另一個則是記錄單位值使用情況的減法區,大小為6KBits,減法區中每個Bit代表一個單位值。操作區又分為4個扇區,每個扇區有4塊,每塊的大小為128 Bits。每個扇區的第4塊存儲密碼,扇區0的第一塊由造卡廠商寫入UID等數據,扇區0的第二塊寫入一次性電子錢包面值的數據,其它用戶自定義的數據塊可以由用戶寫人任何數據。
2.2 初始化錢包
電子錢包的面值是指發卡商將智能卡發到最終用戶手上時的最初金額?;?OTP存儲器的一次電子錢包的面值由兩個數表示,分別為如單位值U是(32Bits)和單位值可使用次數是T16(Bits),在一個大小為128Bits 的 Block 中它的分配如圖1所示的格式寫入數據。面值等于單位值U乘以可使用次數T,如單位值是32’d2,可使用次數是16’d50,則面值就是100。減法區中,每個Bit代表一個單位值,一共有6000個Bit,即可使用次數T可設定的最大值為6000,但也可以是小于6000的任何數。面值塊設置一個塊指針,這個塊被寫入后,就編程這個指針為1。塊指針設置為1后,就不能對這個塊再進行寫入操作,且每次執行扣錢包和讀錢包操作,都要檢查這個塊指針是否為1。
圖1存儲器分配圖
圖2 面值表示
2.3 扣錢包
一次性電子錢包進行面值的初始化后,就可以執行減法操作了,但不能像S50那樣執行加法和再充值等操作。一次性電子錢包減法操作分以下幾個步驟:第一步,卡和讀卡機之間相互通過身份認證和密碼校驗;第二步,從減法區的最后一個地址(第6000個)開始,以倒序的方法尋找最高位的被編程比特的地址,記為LBAddr第三步,從讀卡機接受減法值S,用S除以面值區中的單位值 ,得到結果商Q和余數R,如果余數R不為0,則表明減法值S不是單位值 的整數倍,操作失敗,否則進行下一步;第四步,用LBAddr減去減法區中的第一個比特的地址FBAddr,得到單位值使用次數UT,如果商Q和單位值的使用次數UT的和小于等于面值區中的次數T,則進行下一步,否則中斷。第五步,LBAddr 加上商Q得到新的編程地址NBAddr,接到讀卡機的編程命令后,編程第 NBAddr 個比特的值為1,并向讀卡機返回減法操作成功的信息。
圖3 扣錢包流程
扣錢包的操作步驟中,首先以倒序的方式尋找到第一個(以順序的方法則是最后一個)被編程的Bit的地址,然后根據這個地址以順序的方式算出該電子錢包中單位值的使用次數(即已消費的金額);如果再次消費的條件成立,則再次用順序的方式算出這次消費被編程的地址,最后在這個地址上編程為1(所有Bit的初始化值為0)。這樣每次做減法,無論減法值s是單位值的多少倍,都只編程一個Bit,本設計所采用的OTP 中,編程一個Bit 的數據大約只要200μs,而基于EEPROM的傳統方法則要編程1281個Bit的數據,時間大約需要4ms,大大的縮小了編程時間。整個流程如圖3所示。
2.4 讀錢包
讀錢包是指將余額讀出,這是電子錢包中最基本的操作,其分三個步驟完成:第一步,卡和讀卡機之間相互通過身份認證和密碼校驗;第二步,從減法區的最后一個地址開始,以倒序的方法尋找最高位的被編程比特的地址,記為LBAddr;第三步,用LBAddr減去減法區中的第一個比特的地址FBAddr,得到單位值使用次數UT,并用減法區中的可使用次數T減去UT得到電子錢包單位值的未使用次數RT;第四步,將U乘以RT得到余額R,然后返回給讀卡機。
2.5 其它
除了具有一次性電子錢包的功能外,本設計還有共10塊的存儲空間供用戶存儲其它信息,可以作為一個具有加密功能的存儲卡來使用。同時每個扇區對應著一個密碼塊,每個密碼塊都對應著一個密碼指針。在密碼指針為零時,加密校驗使用的密碼為默認密碼,由數字電路自動給出。當用戶對密碼塊進行編程后,就同時對相應的密碼指針編程,此后加密校驗操作就使用用戶寫入的密碼。
3 電子錢包的實現
一次性電子錢包采用ISO/IEC 14443 TypeA 協議 ,兼容市面上流行的 MifareOne 系列指令 。除了不支持 INCREMENT 和RESTORE 指令外,其它指令格式與S50或其兼容卡一樣。包括模擬電路,一次性電子錢包的芯片如圖4所示。
圖4 芯片總體框圖
模擬電路中,整流電路的作用是將讀卡機中耦合過來的射頻信號交流電壓轉換成直流電源電壓,在整流電路后面加上一級穩壓電路,防止直流電壓過高;上電復位電路為數字電路產生一個復位信號,在卡片進入卡機的有效磁場范圍后時復位數字電路的所有寄存器;解調電路則將載波中的數據信號解調出來作為數字電路的信號輸入;調制電路則是根據數字電路返回的信號調制天線,向讀卡機返回信號;時鐘整形電路則是在載波中整形除13.56M 的時鐘信號供給數字電路。
數字電路中,接收模塊主要是將以14443 TypeA 協議編碼的信號譯成二進制碼,并為以后的模塊提供各種分頻時鐘;數據處理模塊的功能主要是指令譯碼、0TP 存儲器進行讀寫操作、卡片的狀態轉移;加密單元采用流密碼對數據進行加密,除了14443 TypeA規定的命令外,其它命令的通訊都經過加密;輸出模塊則以14443 TypeA 協議規定的格式向讀卡機返回信號。
存儲器方面,采用凱路公司的專利技術XPM存儲器。XPM 采取對氧化層擊穿的原理,實現一次寫入多次讀取。相對常規 RFID 中使用EEP—ROM,這種存儲器在常規的 CMOS 工藝下就可以實現,其成本要比 EEPROM 工藝低,并且數據保存能力可達5O年以上,而EEPROM 的數據保存能力在10年以下。XPM 的存儲機理使得它不像 EEPROM 那樣容易受外界干擾(如激光,微波)而造成數據丟失,使得它特別適合在公交卡,電子護照等安全領域內應用。
4 結語
在14443 TypeA 協議中實現了一種一次性電子錢包 RFID卡。該一次性電子錢包基于OTP 存儲器,指令和加密方法與市面通用的S50相兼容,可以很方便地應用到現有的讀卡機系統中。一次性電子錢包的基本原理是減法區中每一個Bit代表一個單位值的使用,據此給出了一次性電子錢包面值的表示方法,扣錢包的實現步驟和讀余額的操作方法。在SMIC 0.18/μm 的工藝條件下實現了該一次性電子錢包,并流片測試成功。
(文/1.四川大學物理科學與技術學院微電子技術四川省重點實驗室,2.四川凱路威電子有限公司,1.2劉敬術,1.2劉俊偉,2王兼明,1龔敏)