徐 然,李文耀
(武漢郵電科學研究院,湖北 武漢 430074)
當前在手機上的移動支付已有多種方案,然而由于不同廠商的手機都有一些限制,例如:iPhone系列手機沒有SD(安全數碼卡)卡槽,同時特殊的SIM卡槽設計也使得iPhone無法采用SIMPASS(雙界面SIM卡)技術,即無法通過SIMPASS實現近場支付。這導致無法使用現有的一些安全支付方案。然而現在主流手機的音頻接口都是3.5 mm的標準4段式插口:GND、左聲道、右聲道[1]和MIC輸入。如果這種通道可以作為和手機通信的信道,那就創造性地解決了不同手機使用相對統一的通路作為通信接口的問題。
在此背景下,提出了多惠拉讀卡器(以下簡稱讀卡器)的概念,通過讀卡器刷銀行卡(磁條卡),獲取磁道信息,并在讀卡器內置SE(安全芯片)上綁定銀行卡,內置SE通過UPCARD(銀聯卡)應用和CUP Mobile(中國銀聯移動)支付應用實現近場支付和遠程支付功能。
多惠拉讀卡器是一款通過智能手機的音頻通道進行數據的雙向傳輸,它是一個穩定、高速、抗干擾的磁條卡讀卡器設備。該設備體積小、易于攜帶、隨插隨用。該設備內置磁頭,支持磁條卡刷卡,符合銀行卡規范。
如下圖1所示,是多惠拉讀卡器的使用示意圖,通過手機上音頻接口(耳機插孔),手機和產品之間可以進行通信。通信正常后,可進行以下步驟。

圖1 多惠拉讀卡器使用示意圖
1)通過音頻接口,用戶把多惠拉插入所支持的智能手機(本文的智能機是指Android/iOS系統手機),啟動多惠拉客戶端程序;
2)用戶在多惠拉讀卡器(內置磁頭)卡槽上刷磁條卡,多惠拉讀卡器讀取磁道2/3的數據,并加密,通過音頻接口發送到手機;
3)多惠拉手機客戶端程序將加密的數據傳遞到服務器端進行處理,并轉發服務器的加密控制指令,讓多惠拉讀卡器完成相應的銀行業務。
1)具有安全雙界面芯片,能夠用于移動支付;
2)提供直徑3.5 mm 4段耳機插口(GND/左/右聲道/MIC);
3)具有USB接口,能提供讀卡器程序升級的功能;
4)由鋰電池供電,可充電循環使用;
5)具有2軌磁頭,支持磁條卡刷卡,能同時讀取磁道2、磁道3的磁道信息;
6)具有計算能力、安全模塊、能夠進行加解密和數據編解碼工作;
7)支持主流的手機操作系統(Android/iOS)。
多惠拉讀卡器采用的MCU是ARM芯片STM32F103-C8T6,圖2是MCU芯片原理圖。

圖2 STM32F103C8T6芯片原理圖
STM32F103C8T6芯片,是一款增強型大容量芯片,是32位基于ARM核心的帶64 kbyte或者128 kbyte的微控制器,它含有USB、CAN接口、7個定時器、2個ADC、9個通信接口,是一款低功耗的芯片。如圖2所示,MCU通過PA3,PA4,PA6接口與磁條卡磁頭和解碼芯片相連,通過PB13,PB14接口與SE芯片相連,實現對應的功能。
如圖3所示,是讀卡器的硬件設計方框圖。它的內部由8個模塊組成:磁條卡磁頭、解碼芯片、MCU、LED、鋰電池及電源管理、安全芯片、直徑3.5 mm音頻接口、Micro USB插座。
以下為硬件設計各模塊的說明:
1)磁條卡磁頭:采用標準雙通道磁頭,提供磁道2、磁道3的數據;
2)硬件解碼芯片:將磁條卡信息轉換成標準的數字信號;
3)MCU:提供數據運算和控制,對通信數據數據進行編解碼操作;

圖3 硬件設計方框圖
4)LED:用于產品運行狀態的提示;
5)鋰電池及電源管理:采用250 mAh容量的鋰電池作為電源存儲介質,電源提供對鋰電池的供電和充電管理;
6)安全芯片:用于數字證書、密碼算法等安全應用;
7)直徑3.5mm音頻接口:采用直徑3.5mm—4 PIN標準接口,與手機進行數據通信;
8)Micro USB:為產品提供程序更新端口。
本方案的設計主要是要實現通過讀卡器能夠刷磁條卡,讀取磁條卡中的信息,然后將這些磁道信息進行加密,通過音頻接口將這些信息傳遞給手機,通過網絡,手機再將這些信息傳遞給銀行后臺,實現磁條卡的綁卡,從而實現移動支付。本文簡要介紹了讀卡器和智能機通信及磁條卡讀卡的工作原理,主要介紹多惠拉讀卡器UPCARD(銀聯卡)綁卡和 SE(安全芯片)功能[2]。
1)讀卡器和智能手機通信的工作原理
多惠拉和智能手機之間通信,主要是通過手機上的音頻接口來進行通信,該音頻接口分為4段,分別是左聲道、右聲道、MIC輸入、地。手機通過左聲道將命令數據傳遞給多惠拉,多惠拉通過MIC口將響應的數據返回給手機,兩者之間以這種方式進行數據的交互。
2)讀卡器讀磁條卡原理
將數據從磁條卡上讀出來,就是將磁道上的磁信號轉變為電信號,通過編碼再將其轉變為二進制信號,最終再將該二級制信號還原為原始信號[3]。其具體過程是:磁卡以一定的速度通過裝有線圈的工作磁頭,磁卡的外部磁力線切割線圈,在線圈中產生感應電動勢,從而在磁頭上產生電壓信號,通過譯碼將磁條卡上的信息讀出來。
多惠拉讀卡器和智能手機之間的通信從低到高分為:物理層、鏈路層、數據層、應用層。圖4為多惠拉和手機之間通信的協議棧結構。

圖4 多惠拉和手機之間通信的協議棧結構圖
應用層:應用軟件通過接口SDK實現具體多惠拉的功能調用,但是SDK接口不會涉及具體應用系統邏輯,僅僅為應用層和數據層之間做適配和一些通用的接口。
數據層:主要以APDU(應用協議數據單元)命令數據形式為主,為應用層SDK提供支持,通過鏈路層提供的底層接口進行封裝傳輸,本層僅負責命令的發送和接收。
鏈路層:為數據層提供底層支持,包括命令數據的CRC校驗,同步、等待;命令數據包分成數據幀并使用同步幀和停止幀組成傳輸幀在物理信道上傳輸。
物理層:為鏈路層數據幀進行模擬信號的調制和解調,實現通過音頻接口傳輸數據的目的。
如圖5所示,是多惠拉讀卡器的UPCARD綁卡流程圖。

圖5 多惠拉讀卡器UPCARD綁卡流程圖
當用戶準備綁卡時,客戶端先檢查是否有讀卡器,若無讀卡器則提示插入讀卡器。若有讀卡器,則按照以下步驟進行:
1)手機客戶端請求讀卡器主控芯片(以下簡稱主控芯片)刷磁條卡;
2)主控芯片通過磁頭讀取磁道信息,并保存磁密信息數據[4](磁道2、磁道3 數據,以下簡稱 Track-data);
3)主控芯片通知手機客戶端讀取磁道信息成功;4)手機客戶端請求主控芯片密文工作密鑰;
5)主控芯片請求內置SE生成16 byte工作密鑰WK=RAND(16);
6)內置SE隨機生成16 byte工作密鑰(WK)并保存,通過內置SE中的RSA公鑰(RSAKEY)加密,加密后的工作密鑰SK=RSA(WK,RSAKY);
7)加密后的工作密鑰SK返回給讀卡器主控芯片;
8)主控芯片將SK返回給手機客戶端;
9)主控芯片收到手機客戶端請求拼裝銀聯報文的部分數據(客戶端將銀聯所需元素做預拼裝,以磁密信息位置為界,前后分成兩部分(P0,P1)傳送給主控芯片),并請求主控芯片將保存的磁道信息(Track-data)等參數拼裝成銀聯報文;
10)主控芯片將保存的磁道信息和手機客戶端發送的銀聯報文部分數據發送給內置SE,并請求拼裝并加密。
11)內置SE拼裝銀聯報文格式(P0+Track-data+P1),加密的數據為 eMsg0=3DES(P0+Track-data+P1,WK);
12)內置SE返回主控芯片eMsg0;
13)主控芯片返回密文eMsg0。
客戶端收到該密文數據后,按銀聯相關規范進行封裝提交到銀聯CMSP服務器進行UPCARD綁卡。
多惠拉讀卡器內置SE(安全芯片)主要功能概述如下:
1)內置SE能保存RSA公鑰并提供更新接口;
2)內置SE能隨機生成并保存工作密鑰(16 byte隨機字符);
3)工作密鑰加密方式(RSA加密);
4)使用工作密鑰對報文數據加解密(3DES加解密);
5)UPCARD應用;
6)SE上接口設備序列號和密鑰的管理。
多惠拉要獲得磁道信息必須通過GET BANKCARD INFO(GBI)命令,GBI返回的磁道信息是加密的;同時為了防止加密的磁道信息被竊取,GBI每次使用過程密鑰對磁道信息加密。通過對交易報文進行加密和計算報文MAC來保證移動支付平臺和手機間的數據傳輸安全[5]。
因此,通過多惠拉讀卡器獲取磁卡中磁道信息,通過音頻接口將數據傳遞給手機,手機再將數據傳遞給銀行后臺,從而實現綁卡和支付這個過程是非常安全的。
1)體積小,易于攜帶;
2)內置安全芯片,支持所有銀行卡,無需網銀,足不出戶便可進行安全消費;
3)主要提供信用卡還款、轉賬匯款、在線支付等服務。
1)拉卡拉主要支持iPhone、小米、HTC手機等主流手機,而多惠拉支持絕大多數的Android/iOS系統手機;
2)多惠拉的升級版“翼付款”支持Windows Mobile、Symbian、Android/iOS等智能手機及KJava非智能手機操作系統,而拉卡拉只支持部分Android/iOS系統手機;
3)多惠拉讀卡器支持銀聯UPCARD綁卡,一次綁卡多次使用,最多可以綁定10張不同賬號的銀聯磁條卡,而拉卡拉最多只能進行1張銀行卡的綁定。
4)多惠拉內置的智能卡芯片和磁條卡有機結合實現磁條卡向智能卡的無縫升級。
5)只要提前將銀行卡綁定于多惠拉讀卡器中,則消費時不需要刷卡,只需輸入銀行卡密碼即可,而拉卡拉消費時需要每次刷卡。
對本文提出的讀卡器設計方案進行測試,是對讀卡器能否成功讀取磁條卡信息、讀取磁條卡信息后能否成功地實現磁條卡綁卡的一種驗證,也是對提出的方案進行評測的有效保證,現在通過實驗進行驗證。
如圖6和圖7所示,測試需要磁條卡1張、智能手機1部、多惠拉讀卡器1個,可以清楚的看見該磁條卡帳號是:6228480051149726211。本次所做的測試都是按照圖7所提供的方式進行,即將讀卡器插上手機,然后將磁條卡在讀卡器卡槽中劃過,從而得到實驗所需要的數據和信息。
1)驗證方式一

當磁條卡在讀卡器內置磁頭上劃過時,將讀卡器內某一測試腳USART用飛線引出,連接至PC機器,通過串口調試助手Secure CRT6.0軟件對磁道信息進行打印后的數據如圖8所示。

圖8 磁條卡磁道2和磁道3信息(截圖)
根據磁道信息數據格式[6],可以看到磁道2的信息:6228480051149726211=4912120484566000?。其中6228480051149726211為磁條卡的賬號,后面的數據是磁道2上其他信息。
2)驗證方式二
如圖9所示,通過音頻接口將讀卡器與智能手機相連,打卡智能手機上刷卡軟件后,點擊刷卡按鈕,將磁條卡在讀卡器卡槽上劃過時,也可以獲得磁條卡的賬號6228480051149726211。

圖9 磁條卡賬號(截圖)
通過音頻接口將讀卡器與智能手機相連,打開智能手機客戶端上綁卡軟件后,點擊綁定銀行卡,將磁條卡在讀卡器卡槽上劃過時,可以將銀行卡與讀卡器進行綁定。在圖10中可以看到“綁定銀行卡成功”;在圖11中可以看到測試的磁條卡(銀行卡)已經存在于多惠拉讀卡器,表明磁條卡UPCARD綁卡成功。


圖12和圖13是對讀卡器能否進行移動支付的驗證。通過實驗,可以看出,當磁條卡綁卡成功后,磁條卡的信息就存在于多惠拉讀卡器中,此時對手機充值就不需要磁條卡,通過讀卡器就可以完成充值。


本文設計的讀卡器,具有讀取磁條卡磁道信息的功能,以智能手機作為載體,通過網絡與銀行后臺進行交互,從而實現移動支付。通過以上的仿真實驗,可以看出多惠拉讀卡器可以成功地讀取磁條卡中磁道信息、可以進行磁條卡的綁定,并且可以用來進行移動支付,與預期的結果基本一致,從而驗證了設計方案的可行性。
本為設計出了一款可以讀取磁條卡信息的讀卡器,通過對磁條卡進行綁定,可以實現近場支付和遠程支付。因為該設備內嵌智能安全芯片,具有安全存儲和加密機制,銀行卡中所有的信息將會保存在讀卡器安全芯片中,而不會上傳到網絡。并且數據傳輸經過了嚴格加密,用戶使用時需要輸入口令,每個用戶需要不同的權限等,從而保障了數據傳輸和用戶管理方面的安全性。相對于POS機和網上支付,它體積小、易于攜帶、安全便捷,只要提前將讀卡器與磁條卡進行綁定,不需要攜帶銀行卡,只需隨身帶著一部智能手機和多惠拉讀卡器,就可進行移動支付。相對于拉卡拉,它的優勢也非常明顯。通過UPCARD綁卡后(不需銀行卡),可進行手機充值、電費充值、余額查詢、轉賬等功能,可以說,它繼承了POS機和讀卡器的雙重功能,在未來的移動支付中會有廣泛的應用。
[1]GB/T 14197—1993,聲系統設備互連的優選配接值[S].1993.
[2]中國銀聯移動支付技術規范:智能卡支付技術規范[EB/OL].[2012-06-20].http://www.docin.com/p-546413515.html.
[3]龔翔宇,陳俊,任毅.金融終端中磁卡讀卡器的實現[J].電腦知識與技術,2007(5):748-749.
[4]ISO/IEC 7811-2:2001,Identification cards—Recording technique Part 2:Magnetic stripe —Low coercivity[S].2001.
[5]CUP Mobile銀行卡應用規范[EB/OL].[2012-06-20].http://wenku.baidu.com/view/1b059f1bfc4ffe473368ab77.html.
[6]GB/T 19584—2010,銀行卡磁條信息格式和使用規范[S].2010.