徐 然,李文耀
(武漢郵電科學(xué)研究院,湖北 武漢 430074)
當(dāng)前在手機(jī)上的移動(dòng)支付已有多種方案,然而由于不同廠商的手機(jī)都有一些限制,例如:iPhone系列手機(jī)沒(méi)有SD(安全數(shù)碼卡)卡槽,同時(shí)特殊的SIM卡槽設(shè)計(jì)也使得iPhone無(wú)法采用SIMPASS(雙界面SIM卡)技術(shù),即無(wú)法通過(guò)SIMPASS實(shí)現(xiàn)近場(chǎng)支付。這導(dǎo)致無(wú)法使用現(xiàn)有的一些安全支付方案。然而現(xiàn)在主流手機(jī)的音頻接口都是3.5 mm的標(biāo)準(zhǔn)4段式插口:GND、左聲道、右聲道[1]和MIC輸入。如果這種通道可以作為和手機(jī)通信的信道,那就創(chuàng)造性地解決了不同手機(jī)使用相對(duì)統(tǒng)一的通路作為通信接口的問(wèn)題。
在此背景下,提出了多惠拉讀卡器(以下簡(jiǎn)稱讀卡器)的概念,通過(guò)讀卡器刷銀行卡(磁條卡),獲取磁道信息,并在讀卡器內(nèi)置SE(安全芯片)上綁定銀行卡,內(nèi)置SE通過(guò)UPCARD(銀聯(lián)卡)應(yīng)用和CUP Mobile(中國(guó)銀聯(lián)移動(dòng))支付應(yīng)用實(shí)現(xiàn)近場(chǎng)支付和遠(yuǎn)程支付功能。
多惠拉讀卡器是一款通過(guò)智能手機(jī)的音頻通道進(jìn)行數(shù)據(jù)的雙向傳輸,它是一個(gè)穩(wěn)定、高速、抗干擾的磁條卡讀卡器設(shè)備。該設(shè)備體積小、易于攜帶、隨插隨用。該設(shè)備內(nèi)置磁頭,支持磁條卡刷卡,符合銀行卡規(guī)范。
如下圖1所示,是多惠拉讀卡器的使用示意圖,通過(guò)手機(jī)上音頻接口(耳機(jī)插孔),手機(jī)和產(chǎn)品之間可以進(jìn)行通信。通信正常后,可進(jìn)行以下步驟。
圖1 多惠拉讀卡器使用示意圖
1)通過(guò)音頻接口,用戶把多惠拉插入所支持的智能手機(jī)(本文的智能機(jī)是指Android/iOS系統(tǒng)手機(jī)),啟動(dòng)多惠拉客戶端程序;
2)用戶在多惠拉讀卡器(內(nèi)置磁頭)卡槽上刷磁條卡,多惠拉讀卡器讀取磁道2/3的數(shù)據(jù),并加密,通過(guò)音頻接口發(fā)送到手機(jī);
3)多惠拉手機(jī)客戶端程序?qū)⒓用艿臄?shù)據(jù)傳遞到服務(wù)器端進(jìn)行處理,并轉(zhuǎn)發(fā)服務(wù)器的加密控制指令,讓多惠拉讀卡器完成相應(yīng)的銀行業(yè)務(wù)。
1)具有安全雙界面芯片,能夠用于移動(dòng)支付;
2)提供直徑3.5 mm 4段耳機(jī)插口(GND/左/右聲道/MIC);
3)具有USB接口,能提供讀卡器程序升級(jí)的功能;
4)由鋰電池供電,可充電循環(huán)使用;
5)具有2軌磁頭,支持磁條卡刷卡,能同時(shí)讀取磁道2、磁道3的磁道信息;
6)具有計(jì)算能力、安全模塊、能夠進(jìn)行加解密和數(shù)據(jù)編解碼工作;
7)支持主流的手機(jī)操作系統(tǒng)(Android/iOS)。
多惠拉讀卡器采用的MCU是ARM芯片STM32F103-C8T6,圖2是MCU芯片原理圖。
圖2 STM32F103C8T6芯片原理圖
STM32F103C8T6芯片,是一款增強(qiáng)型大容量芯片,是32位基于ARM核心的帶64 kbyte或者128 kbyte的微控制器,它含有USB、CAN接口、7個(gè)定時(shí)器、2個(gè)ADC、9個(gè)通信接口,是一款低功耗的芯片。如圖2所示,MCU通過(guò)PA3,PA4,PA6接口與磁條卡磁頭和解碼芯片相連,通過(guò)PB13,PB14接口與SE芯片相連,實(shí)現(xiàn)對(duì)應(yīng)的功能。
如圖3所示,是讀卡器的硬件設(shè)計(jì)方框圖。它的內(nèi)部由8個(gè)模塊組成:磁條卡磁頭、解碼芯片、MCU、LED、鋰電池及電源管理、安全芯片、直徑3.5 mm音頻接口、Micro USB插座。
以下為硬件設(shè)計(jì)各模塊的說(shuō)明:
1)磁條卡磁頭:采用標(biāo)準(zhǔn)雙通道磁頭,提供磁道2、磁道3的數(shù)據(jù);
2)硬件解碼芯片:將磁條卡信息轉(zhuǎn)換成標(biāo)準(zhǔn)的數(shù)字信號(hào);
3)MCU:提供數(shù)據(jù)運(yùn)算和控制,對(duì)通信數(shù)據(jù)數(shù)據(jù)進(jìn)行編解碼操作;
圖3 硬件設(shè)計(jì)方框圖
4)LED:用于產(chǎn)品運(yùn)行狀態(tài)的提示;
5)鋰電池及電源管理:采用250 mAh容量的鋰電池作為電源存儲(chǔ)介質(zhì),電源提供對(duì)鋰電池的供電和充電管理;
6)安全芯片:用于數(shù)字證書、密碼算法等安全應(yīng)用;
7)直徑3.5mm音頻接口:采用直徑3.5mm—4 PIN標(biāo)準(zhǔn)接口,與手機(jī)進(jìn)行數(shù)據(jù)通信;
8)Micro USB:為產(chǎn)品提供程序更新端口。
本方案的設(shè)計(jì)主要是要實(shí)現(xiàn)通過(guò)讀卡器能夠刷磁條卡,讀取磁條卡中的信息,然后將這些磁道信息進(jìn)行加密,通過(guò)音頻接口將這些信息傳遞給手機(jī),通過(guò)網(wǎng)絡(luò),手機(jī)再將這些信息傳遞給銀行后臺(tái),實(shí)現(xiàn)磁條卡的綁卡,從而實(shí)現(xiàn)移動(dòng)支付。本文簡(jiǎn)要介紹了讀卡器和智能機(jī)通信及磁條卡讀卡的工作原理,主要介紹多惠拉讀卡器UPCARD(銀聯(lián)卡)綁卡和 SE(安全芯片)功能[2]。
1)讀卡器和智能手機(jī)通信的工作原理
多惠拉和智能手機(jī)之間通信,主要是通過(guò)手機(jī)上的音頻接口來(lái)進(jìn)行通信,該音頻接口分為4段,分別是左聲道、右聲道、MIC輸入、地。手機(jī)通過(guò)左聲道將命令數(shù)據(jù)傳遞給多惠拉,多惠拉通過(guò)MIC口將響應(yīng)的數(shù)據(jù)返回給手機(jī),兩者之間以這種方式進(jìn)行數(shù)據(jù)的交互。
2)讀卡器讀磁條卡原理
將數(shù)據(jù)從磁條卡上讀出來(lái),就是將磁道上的磁信號(hào)轉(zhuǎn)變?yōu)殡娦盘?hào),通過(guò)編碼再將其轉(zhuǎn)變?yōu)槎M(jìn)制信號(hào),最終再將該二級(jí)制信號(hào)還原為原始信號(hào)[3]。其具體過(guò)程是:磁卡以一定的速度通過(guò)裝有線圈的工作磁頭,磁卡的外部磁力線切割線圈,在線圈中產(chǎn)生感應(yīng)電動(dòng)勢(shì),從而在磁頭上產(chǎn)生電壓信號(hào),通過(guò)譯碼將磁條卡上的信息讀出來(lái)。
多惠拉讀卡器和智能手機(jī)之間的通信從低到高分為:物理層、鏈路層、數(shù)據(jù)層、應(yīng)用層。圖4為多惠拉和手機(jī)之間通信的協(xié)議棧結(jié)構(gòu)。
圖4 多惠拉和手機(jī)之間通信的協(xié)議棧結(jié)構(gòu)圖
應(yīng)用層:應(yīng)用軟件通過(guò)接口SDK實(shí)現(xiàn)具體多惠拉的功能調(diào)用,但是SDK接口不會(huì)涉及具體應(yīng)用系統(tǒng)邏輯,僅僅為應(yīng)用層和數(shù)據(jù)層之間做適配和一些通用的接口。
數(shù)據(jù)層:主要以APDU(應(yīng)用協(xié)議數(shù)據(jù)單元)命令數(shù)據(jù)形式為主,為應(yīng)用層SDK提供支持,通過(guò)鏈路層提供的底層接口進(jìn)行封裝傳輸,本層僅負(fù)責(zé)命令的發(fā)送和接收。
鏈路層:為數(shù)據(jù)層提供底層支持,包括命令數(shù)據(jù)的CRC校驗(yàn),同步、等待;命令數(shù)據(jù)包分成數(shù)據(jù)幀并使用同步幀和停止幀組成傳輸幀在物理信道上傳輸。
物理層:為鏈路層數(shù)據(jù)幀進(jìn)行模擬信號(hào)的調(diào)制和解調(diào),實(shí)現(xiàn)通過(guò)音頻接口傳輸數(shù)據(jù)的目的。
如圖5所示,是多惠拉讀卡器的UPCARD綁卡流程圖。
圖5 多惠拉讀卡器UPCARD綁卡流程圖
當(dāng)用戶準(zhǔn)備綁卡時(shí),客戶端先檢查是否有讀卡器,若無(wú)讀卡器則提示插入讀卡器。若有讀卡器,則按照以下步驟進(jìn)行:
1)手機(jī)客戶端請(qǐng)求讀卡器主控芯片(以下簡(jiǎn)稱主控芯片)刷磁條卡;
2)主控芯片通過(guò)磁頭讀取磁道信息,并保存磁密信息數(shù)據(jù)[4](磁道2、磁道3 數(shù)據(jù),以下簡(jiǎn)稱 Track-data);
3)主控芯片通知手機(jī)客戶端讀取磁道信息成功;4)手機(jī)客戶端請(qǐng)求主控芯片密文工作密鑰;
5)主控芯片請(qǐng)求內(nèi)置SE生成16 byte工作密鑰WK=RAND(16);
6)內(nèi)置SE隨機(jī)生成16 byte工作密鑰(WK)并保存,通過(guò)內(nèi)置SE中的RSA公鑰(RSAKEY)加密,加密后的工作密鑰SK=RSA(WK,RSAKY);
7)加密后的工作密鑰SK返回給讀卡器主控芯片;
8)主控芯片將SK返回給手機(jī)客戶端;
9)主控芯片收到手機(jī)客戶端請(qǐng)求拼裝銀聯(lián)報(bào)文的部分?jǐn)?shù)據(jù)(客戶端將銀聯(lián)所需元素做預(yù)拼裝,以磁密信息位置為界,前后分成兩部分(P0,P1)傳送給主控芯片),并請(qǐng)求主控芯片將保存的磁道信息(Track-data)等參數(shù)拼裝成銀聯(lián)報(bào)文;
10)主控芯片將保存的磁道信息和手機(jī)客戶端發(fā)送的銀聯(lián)報(bào)文部分?jǐn)?shù)據(jù)發(fā)送給內(nèi)置SE,并請(qǐng)求拼裝并加密。
11)內(nèi)置SE拼裝銀聯(lián)報(bào)文格式(P0+Track-data+P1),加密的數(shù)據(jù)為 eMsg0=3DES(P0+Track-data+P1,WK);
12)內(nèi)置SE返回主控芯片eMsg0;
13)主控芯片返回密文eMsg0。
客戶端收到該密文數(shù)據(jù)后,按銀聯(lián)相關(guān)規(guī)范進(jìn)行封裝提交到銀聯(lián)CMSP服務(wù)器進(jìn)行UPCARD綁卡。
多惠拉讀卡器內(nèi)置SE(安全芯片)主要功能概述如下:
1)內(nèi)置SE能保存RSA公鑰并提供更新接口;
2)內(nèi)置SE能隨機(jī)生成并保存工作密鑰(16 byte隨機(jī)字符);
3)工作密鑰加密方式(RSA加密);
4)使用工作密鑰對(duì)報(bào)文數(shù)據(jù)加解密(3DES加解密);
5)UPCARD應(yīng)用;
6)SE上接口設(shè)備序列號(hào)和密鑰的管理。
多惠拉要獲得磁道信息必須通過(guò)GET BANKCARD INFO(GBI)命令,GBI返回的磁道信息是加密的;同時(shí)為了防止加密的磁道信息被竊取,GBI每次使用過(guò)程密鑰對(duì)磁道信息加密。通過(guò)對(duì)交易報(bào)文進(jìn)行加密和計(jì)算報(bào)文MAC來(lái)保證移動(dòng)支付平臺(tái)和手機(jī)間的數(shù)據(jù)傳輸安全[5]。
因此,通過(guò)多惠拉讀卡器獲取磁卡中磁道信息,通過(guò)音頻接口將數(shù)據(jù)傳遞給手機(jī),手機(jī)再將數(shù)據(jù)傳遞給銀行后臺(tái),從而實(shí)現(xiàn)綁卡和支付這個(gè)過(guò)程是非常安全的。
1)體積小,易于攜帶;
2)內(nèi)置安全芯片,支持所有銀行卡,無(wú)需網(wǎng)銀,足不出戶便可進(jìn)行安全消費(fèi);
3)主要提供信用卡還款、轉(zhuǎn)賬匯款、在線支付等服務(wù)。
1)拉卡拉主要支持iPhone、小米、HTC手機(jī)等主流手機(jī),而多惠拉支持絕大多數(shù)的Android/iOS系統(tǒng)手機(jī);
2)多惠拉的升級(jí)版“翼付款”支持Windows Mobile、Symbian、Android/iOS等智能手機(jī)及KJava非智能手機(jī)操作系統(tǒng),而拉卡拉只支持部分Android/iOS系統(tǒng)手機(jī);
3)多惠拉讀卡器支持銀聯(lián)UPCARD綁卡,一次綁卡多次使用,最多可以綁定10張不同賬號(hào)的銀聯(lián)磁條卡,而拉卡拉最多只能進(jìn)行1張銀行卡的綁定。
4)多惠拉內(nèi)置的智能卡芯片和磁條卡有機(jī)結(jié)合實(shí)現(xiàn)磁條卡向智能卡的無(wú)縫升級(jí)。
5)只要提前將銀行卡綁定于多惠拉讀卡器中,則消費(fèi)時(shí)不需要刷卡,只需輸入銀行卡密碼即可,而拉卡拉消費(fèi)時(shí)需要每次刷卡。
對(duì)本文提出的讀卡器設(shè)計(jì)方案進(jìn)行測(cè)試,是對(duì)讀卡器能否成功讀取磁條卡信息、讀取磁條卡信息后能否成功地實(shí)現(xiàn)磁條卡綁卡的一種驗(yàn)證,也是對(duì)提出的方案進(jìn)行評(píng)測(cè)的有效保證,現(xiàn)在通過(guò)實(shí)驗(yàn)進(jìn)行驗(yàn)證。
如圖6和圖7所示,測(cè)試需要磁條卡1張、智能手機(jī)1部、多惠拉讀卡器1個(gè),可以清楚的看見該磁條卡帳號(hào)是:6228480051149726211。本次所做的測(cè)試都是按照?qǐng)D7所提供的方式進(jìn)行,即將讀卡器插上手機(jī),然后將磁條卡在讀卡器卡槽中劃過(guò),從而得到實(shí)驗(yàn)所需要的數(shù)據(jù)和信息。
1)驗(yàn)證方式一
當(dāng)磁條卡在讀卡器內(nèi)置磁頭上劃過(guò)時(shí),將讀卡器內(nèi)某一測(cè)試腳USART用飛線引出,連接至PC機(jī)器,通過(guò)串口調(diào)試助手Secure CRT6.0軟件對(duì)磁道信息進(jìn)行打印后的數(shù)據(jù)如圖8所示。
圖8 磁條卡磁道2和磁道3信息(截圖)
根據(jù)磁道信息數(shù)據(jù)格式[6],可以看到磁道2的信息:6228480051149726211=4912120484566000?。其中6228480051149726211為磁條卡的賬號(hào),后面的數(shù)據(jù)是磁道2上其他信息。
2)驗(yàn)證方式二
如圖9所示,通過(guò)音頻接口將讀卡器與智能手機(jī)相連,打卡智能手機(jī)上刷卡軟件后,點(diǎn)擊刷卡按鈕,將磁條卡在讀卡器卡槽上劃過(guò)時(shí),也可以獲得磁條卡的賬號(hào)6228480051149726211。
圖9 磁條卡賬號(hào)(截圖)
通過(guò)音頻接口將讀卡器與智能手機(jī)相連,打開智能手機(jī)客戶端上綁卡軟件后,點(diǎn)擊綁定銀行卡,將磁條卡在讀卡器卡槽上劃過(guò)時(shí),可以將銀行卡與讀卡器進(jìn)行綁定。在圖10中可以看到“綁定銀行卡成功”;在圖11中可以看到測(cè)試的磁條卡(銀行卡)已經(jīng)存在于多惠拉讀卡器,表明磁條卡UPCARD綁卡成功。
圖12和圖13是對(duì)讀卡器能否進(jìn)行移動(dòng)支付的驗(yàn)證。通過(guò)實(shí)驗(yàn),可以看出,當(dāng)磁條卡綁卡成功后,磁條卡的信息就存在于多惠拉讀卡器中,此時(shí)對(duì)手機(jī)充值就不需要磁條卡,通過(guò)讀卡器就可以完成充值。
本文設(shè)計(jì)的讀卡器,具有讀取磁條卡磁道信息的功能,以智能手機(jī)作為載體,通過(guò)網(wǎng)絡(luò)與銀行后臺(tái)進(jìn)行交互,從而實(shí)現(xiàn)移動(dòng)支付。通過(guò)以上的仿真實(shí)驗(yàn),可以看出多惠拉讀卡器可以成功地讀取磁條卡中磁道信息、可以進(jìn)行磁條卡的綁定,并且可以用來(lái)進(jìn)行移動(dòng)支付,與預(yù)期的結(jié)果基本一致,從而驗(yàn)證了設(shè)計(jì)方案的可行性。
本為設(shè)計(jì)出了一款可以讀取磁條卡信息的讀卡器,通過(guò)對(duì)磁條卡進(jìn)行綁定,可以實(shí)現(xiàn)近場(chǎng)支付和遠(yuǎn)程支付。因?yàn)樵撛O(shè)備內(nèi)嵌智能安全芯片,具有安全存儲(chǔ)和加密機(jī)制,銀行卡中所有的信息將會(huì)保存在讀卡器安全芯片中,而不會(huì)上傳到網(wǎng)絡(luò)。并且數(shù)據(jù)傳輸經(jīng)過(guò)了嚴(yán)格加密,用戶使用時(shí)需要輸入口令,每個(gè)用戶需要不同的權(quán)限等,從而保障了數(shù)據(jù)傳輸和用戶管理方面的安全性。相對(duì)于POS機(jī)和網(wǎng)上支付,它體積小、易于攜帶、安全便捷,只要提前將讀卡器與磁條卡進(jìn)行綁定,不需要攜帶銀行卡,只需隨身帶著一部智能手機(jī)和多惠拉讀卡器,就可進(jìn)行移動(dòng)支付。相對(duì)于拉卡拉,它的優(yōu)勢(shì)也非常明顯。通過(guò)UPCARD綁卡后(不需銀行卡),可進(jìn)行手機(jī)充值、電費(fèi)充值、余額查詢、轉(zhuǎn)賬等功能,可以說(shuō),它繼承了POS機(jī)和讀卡器的雙重功能,在未來(lái)的移動(dòng)支付中會(huì)有廣泛的應(yīng)用。
[1]GB/T 14197—1993,聲系統(tǒng)設(shè)備互連的優(yōu)選配接值[S].1993.
[2]中國(guó)銀聯(lián)移動(dòng)支付技術(shù)規(guī)范:智能卡支付技術(shù)規(guī)范[EB/OL].[2012-06-20].http://www.docin.com/p-546413515.html.
[3]龔翔宇,陳俊,任毅.金融終端中磁卡讀卡器的實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),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銀行卡應(yīng)用規(guī)范[EB/OL].[2012-06-20].http://wenku.baidu.com/view/1b059f1bfc4ffe473368ab77.html.
[6]GB/T 19584—2010,銀行卡磁條信息格式和使用規(guī)范[S].2010.