潘新娜,鮑可進,唐宏斌
(1.江蘇大學計算機科學與通信工程學院,江蘇 鎮(zhèn)江 212013;2.揚州源悅支付技術(shù)有限公司,江蘇 揚州 225000)
基于ARM的雙界面IC卡讀寫器的設計與實現(xiàn)*
潘新娜1,鮑可進1,唐宏斌2
(1.江蘇大學計算機科學與通信工程學院,江蘇 鎮(zhèn)江 212013;2.揚州源悅支付技術(shù)有限公司,江蘇 揚州 225000)
為滿足智能卡在銀行、保險、醫(yī)療等管理系統(tǒng)的應用需求,設計了一款基于ARM的支持雙界面智能卡的讀寫系統(tǒng)。采用具有ARM Cortex-M3內(nèi)核的STM32F103RBT6和近場通信收發(fā)器STRFNFCA等芯片進行相關(guān)的硬件設計。軟件設計完成了對非接觸式卡和接觸式卡的底層驅(qū)動及應用層通信模塊、LCD顯示等操作;根據(jù)PBOC 2.0標準對智能卡進行金融交易包括圈存、消費、查余額等;同時,讀卡器集成了Crypto 1加密算法來兼容市場上的Mifare系列卡。測試結(jié)果表明,讀寫系統(tǒng)性能穩(wěn)定、功耗低、實用性強、可靠性高。
讀寫器;應用協(xié)議數(shù)據(jù)單元;報文鑒別碼;PBOC 2.0;DES
隨著國家金卡工程的不斷推進,國內(nèi)各大商業(yè)銀行大量推出金融IC卡。金融IC卡能與多種行業(yè)應用相結(jié)合,并在非接觸式、新型支付方式上得到拓展,從而帶來新型的支付方式,如IC卡的互聯(lián)網(wǎng)支付、數(shù)字電視支付、手機移動支付等[1]。金融IC卡應用場景的變化以及支付方式的改變,對讀卡終端提出了更高的安全性、穩(wěn)定性、便捷性的要求,傳統(tǒng)IC卡讀卡器僅僅作為數(shù)據(jù)交互的橋梁,擴展應用不便利,不能獨立地完成金融應用。
本文設計一款符合PBOC 2.0標準即《中國金融集成電路(IC)卡規(guī)范》的新型支持雙界面智能卡讀卡設備,不再是傳統(tǒng)功能單一的讀卡器,其在內(nèi)部實現(xiàn)了金融交易,并按照銀聯(lián)規(guī)范開發(fā)網(wǎng)銀支付功能,實現(xiàn)電子現(xiàn)金的本地圈存、消費、余額查詢等金融交易;同時,在金融應用的基礎(chǔ)上也可開發(fā)擴展應用,擴大智能卡的使用范圍。
Figure 2 STRFNFCA schematic circuit diagram圖2 STRFNFCA電路原理圖
IC卡有接觸式和非接觸式兩種通信界面,接觸式IC卡通過八個觸點從讀寫器獲取能量和交換數(shù)據(jù),符合ISO/IEC 7816協(xié)議,包括信號和傳輸協(xié)議及APDU(Application Protocal Data Unit)命令等;非接觸式符合ISO/IEC 14443協(xié)議,包括物理特性、射頻能量和信號接口、初始化和防沖突[2]以及應用層的傳輸協(xié)議[3]。雙界面卡是集接觸式與非接觸式接口為一體的智能卡,操作獨立,但可以共享CPU和存儲空間,具有一卡多用、高度安全、快速交易、兼容性好等特點,有廣泛的應用前景。
3.1 系統(tǒng)總體設計
讀寫器的硬件主要包括控制模塊、讀寫模塊及外圍電路、串行通信模塊、顯示模塊等,如圖1所示。控制模塊主要由MCU STM32F103RBT6、存儲器和晶振組成,負責整個系統(tǒng)的控制工作。讀寫模塊主要由STRFNFCA讀寫芯片、晶振及天線組成,載波頻率為13.56 MHz,模擬部分負責對IC卡的發(fā)送接收操作,數(shù)字部分則通過串口和中斷與微控制器通信,天線則主要由LC低通濾波器和LC諧振電路組成。STRFNFCA部分電路原理圖如圖2所示。串行通信模塊主要通過RS232串口通信。LCD液晶顯示模塊具有良好的人機交互能力,實時顯示讀寫芯片讀取的數(shù)據(jù)。
Figure 1 System block diagram圖1 系統(tǒng)框圖
3.2 系統(tǒng)主芯片特性
本設計方案的MCU芯片STM32F103RBT6基于ARM Cortex-M3內(nèi)核32位高性能處理器,具有64個引腳、51個GPIOs、128 KB Flash、20 KB SRAM、2個ADC、4個TIMER、7通道DMA、高達9個通信接口、主頻可達72 MHz,具有低功耗、高性能、接口資源豐富等特點[4]。相比傳統(tǒng)讀卡器的8位51單片機處理器,32位高性能ARM處理器不僅可以提高與IC卡的通信效率,同時可增強控制功能,擴展系統(tǒng)的應用功能[5]。
讀寫器主芯片STRFNFCA是意法半導體(ST)公司的一款可應用于13.56 MHz非接觸式通信的中高集成收發(fā)器芯片,支持ISO 14443 Type A和Type B卡、ISO/IEC15693、ISO/IEC18092、NFC Forum等類型卡片;硬件特性包括內(nèi)置內(nèi)部幀控制器、高集成度的RF通訊模擬前端(AFE);發(fā)送和接收模式下實現(xiàn)自動卡檢測和場檢測、優(yōu)化的電源管理功能;它有32個引腳,通信接口包括高達2 Mbps SPI、UATR及256 Byte指令緩存(FIFO)[6]。這些特性使得STRFNFC收發(fā)器應用于金融類讀卡器、二代身份證讀卡器、金融POS機、安全門禁等方面有很大的優(yōu)勢。
4.1 系統(tǒng)初始化
為保證系統(tǒng)正常運行,必須在系統(tǒng)復位時進行初始化。其中包括系統(tǒng)時鐘初始化、定時器配置、中斷配置、SPI/UART串口初始化等操作。
部分底層軟件驅(qū)動函數(shù):
(1)hw_config.c:硬件配置函數(shù),對MCU外設RCC、NVIC、TIMER、EXTI、GPIO等進行配置、使能操作。
(2)drv_strfnfca.c:STRFNFCA驅(qū)動函數(shù),處理STRFNFCA通過UART或SPI接口跟主機發(fā)送、接收信息,包括初始化STRFNFCA、配置引腳、設置通信波特率、開啟時鐘、數(shù)據(jù)傳輸?shù)取?/p>
(3)drv_uart.c和drv_spi.c:驅(qū)動函數(shù)使能UART和SPI接口收發(fā)信息,串口通過配置可選。
4.2 智能卡與讀寫器通信模塊
4.2.1 非接觸式ISO 14443協(xié)議層對Type A卡的操作
(1)下電狀態(tài),在空閑狀態(tài)的PICC(Proximity Card 鄰近卡)監(jiān)聽REQA(Request Command,type A尋A類卡)或WUPA(Wake Up command for PICC type A)命令后,進入就緒狀態(tài)。
(2)就緒狀態(tài),卡片接收基于二進制搜索算法的防沖突命令(Anticollision),得到一張卡的完整UID(Unique Identification)后,進行選卡操作,選中的卡片進入激活狀態(tài)。
(3)激活狀態(tài)下選卡返回值選卡應答SAK(Select Acknowledge)來判斷卡片是否支持ISO 14443-4,支持則發(fā)送請求應答RATS(Request for Answer To Select)命令,卡片返回值A(chǔ)TS(Answer To Select)。
(4) PPS(Protocol and Parameter Selection)指協(xié)議和參數(shù)選擇命令,若支持可變參數(shù)則根據(jù)參數(shù)值進行相應設置,沒有參數(shù)改變則直接進行數(shù)據(jù)傳輸。
(5)發(fā)送HLTA(HALT command)命令,卡片進入停止狀態(tài),此狀態(tài)卡片只響應WUPA命令。
讀寫設備對A類卡的激活流程圖如圖3所示。
Figure 3 Activation of a PICC Type A by a PCD圖3 讀寫設備對A類卡的激活流程圖
讀寫系統(tǒng)經(jīng)過硬件調(diào)試、底層軟件程序設計開發(fā),系統(tǒng)各模塊和卡片間可進行數(shù)據(jù)傳輸和交換,讀寫器完成對IC卡進行的符合ISO/IEC 14443協(xié)議指令集如尋卡、初始化、防沖突及RATS等底層基本操作。實驗結(jié)果如表1所示。
Table 1 Software flow and experimental results
4.2.2 接觸式界面ISO/IEC7816協(xié)議層命令
除支持以上的T=0型字符傳輸通信協(xié)議,讀卡器還支持T=1的塊傳輸,定義了三種基本塊類型[7]:信息塊(I-block)用于傳送應用層信息;接收準備塊(R-block)用于發(fā)送肯定或否定的確認信息,它的信息域不出現(xiàn);管理塊(S-block)用于讀卡設備和卡片之間交換控制信息。塊幀即一個塊由一串字節(jié)組成,每個字節(jié)以異步字符的形式傳輸。塊傳輸主要指應用協(xié)議數(shù)據(jù)單元(APDU)命令。
C-APDU命令結(jié)構(gòu)包括命令頭:CLA INS P1 P2(CLA為類型,INS為指令,P1、P2為命令參數(shù),如:消費交易命令 80h 54h 01h 00h),條件體:Lc Data Le(Lc為發(fā)送命令的長度,Data為輸入數(shù)據(jù),Le為期望返回的數(shù)據(jù)長度)。
R-APDU響應格式:Data SW1 SW2(Data數(shù)據(jù)域是可選的,指卡片返回的數(shù)據(jù),SW1、SW2是狀態(tài)字,如9000表示指令執(zhí)行成功)。
4.3 MAC算法實現(xiàn)
智能卡信息的有效讀取和寫入必須基于相應的應用協(xié)議數(shù)據(jù)單元即APDU命令,終端需使用對稱密鑰體系中3DES加密數(shù)據(jù)域并用指令頭及加密后的數(shù)據(jù)產(chǎn)生校驗碼MAC(Message Authentication Code),卡在命令執(zhí)行前先要驗證校驗碼、解密數(shù)據(jù)域并根據(jù)數(shù)據(jù)域執(zhí)行指令。為保證數(shù)據(jù)的可靠性、完整性和對發(fā)送方的認證需用安全報文傳送。安全報文傳送格式如表2所示。
Table 2 Secure messaging format
IC卡與讀卡器終端數(shù)據(jù)通信生成校驗碼MAC時需建立過程密鑰,過程密鑰是在交易過程中用可變數(shù)據(jù)產(chǎn)生的單倍長密鑰,只能在某過程/交易中使用一次。不同交易類型中產(chǎn)生過程密鑰的消費子密鑰或圈存子密鑰即K值不同,輸入數(shù)據(jù)也由交易類型決定。16 Byte子密鑰K=Kl||Kr(Kl為密鑰左半部分,Kr為密鑰右半部分),過程密鑰KMA=3DES(Data,K)=DES{DES-1[DES(Data,Kl),Kr],Kl} 。
把待發(fā)送的數(shù)據(jù)按順序串聯(lián)一起,每8字節(jié)為單位分成數(shù)據(jù)塊(最后一個數(shù)據(jù)塊可能是1~8個字節(jié),其后加上16進制‘80’字節(jié),然后用‘00’填充到8個字節(jié))。用MAC過程密鑰對數(shù)據(jù)塊進行加密,過程密鑰KMA由DES或3DES算法生成,依照圖4方式產(chǎn)生MAC。最終得到的是從計算結(jié)果左側(cè)取得的4字節(jié)長度的MAC(根據(jù)第二步中產(chǎn)生的數(shù)據(jù)塊長度的不同,有可能在計算中會多于或少于四步)。
4.4 電子存折ED的圈存和消費交易流程
本系統(tǒng)智能卡支持DES/3DES 加密算法[8]、支持多種應用、強大的支付功能(電子錢包ED和
Figure 4 MAC algorithm for single-length DES key圖4 單長度DES密鑰的MAC算法
電子存折EP)、符合ISO 7816-1/2/3/4協(xié)議、符合PBOC2.0標準。智能卡應用指令集有:驗證/更改PIN(Personal Identification Number)碼、圈存、消費/取現(xiàn)、圈提、查詢余額、交易確認、取現(xiàn)初始化、圈存初始化、消費初始化、圈提初始化、修改透支限額初始化、修改透支限額等。
圈存交易指持卡人將其在銀行相應賬戶上的資金劃入電子存折或電子錢包中的過程。這種交易必須在金融終端上聯(lián)機進行并要求提交個人識別碼(PIN)[9]。
Figure 5 Credit for load transaction flow chart圖5 圈存交易處理流程圖
根據(jù)軟件流程及PBOC 2.0標準,在keil uVision4集成開發(fā)環(huán)境用C語言開發(fā)應用程序并加載到已調(diào)試好的硬件設備中,讀寫器可按交易流程選中存放密鑰的文件、校驗PIN碼、查詢余額、初始化圈存,根據(jù)MAC求解算法算出圈存交易待發(fā)送指令中的MAC值,驗證正確后進行圈存操作。同樣,可進行消費交易。為驗證系統(tǒng)的軟硬件設計及數(shù)據(jù)傳輸?shù)恼_性,進行讀卡測試實驗,實驗結(jié)果如表3所示。
Table 3 Financial transaction testing data sheet
1 PCB:協(xié)議控制字節(jié)Protocol Control Byte;2 CRC:循環(huán)冗余碼校驗Cyclic Redundancy Check;3 TAC:交易驗證碼Transaction Authorization Crypogram
測試實驗采用一張信息完全的雙界面測試卡,根據(jù)設備返回的信息解析數(shù)據(jù),系統(tǒng)可按預定金額執(zhí)行ED和EP的圈存和消費交易,讀寫系統(tǒng)完成交易的安全認證、寫卡、修改卡片金額。此功能驗證了前面所述的金融交易及安全機制的可行性和功能實現(xiàn)。
Mifare系列IC卡是NXP公司的產(chǎn)品,它采用了一種NXP特有的加密算法來完成認證和加解密運算。將同樣的算法引擎放置在NXP的專用Mifare讀寫基站芯片中,認證過程由基站芯片代替用戶系統(tǒng)與Mifare芯片之間完成。這一認證過程就是Mifare系列芯片的三重認證[10],其實質(zhì)是基站芯片與Mifare芯片之間相互傳遞隨機數(shù)以及隨機數(shù)的密文,通過對隨機數(shù)密文的解密比對實現(xiàn)對卡片的認證。這個算法和機制已經(jīng)被破解,移植Mifare系列卡Crypto 1加密算法到相應讀寫器設備即可兼容Mifare卡。
Crypto 1算法是通過一個48位線性反饋移位寄存器(lfsr)和隨機數(shù)產(chǎn)生寄存器(prng)不斷地更新(加密)數(shù)據(jù)。對明文每個字節(jié)加密即8次循環(huán)更新48位lfsr狀態(tài)值,隨機地對每一步的值進行異或運算,返回密鑰流。
循環(huán)迭代48位lfsr狀態(tài)值函數(shù):
static uint8_tmifare_update(struct _crypto1_state* conststate, const uint8_tinjection, const uint8_tfeedback)
{const uint64_tx=state→lfsr;
const uint8_tks=mf20(state→lfsr);
state→lfsr=(x>>1)|((((x>>0)∧(x>>5)∧(x>>9)∧(x>>10)∧(x>>12)∧(x>>14)∧(x>>15)∧(x>>17)∧(x>>19)∧(x>>24)∧(x>>25)∧(x>>27)∧(x>>29)∧(x>>35)∧(x>>39)∧(x>>41)∧(x>>42)∧(x>>43)∧injection∧(feedback?ks:0))&1)<<47);
returnks;
}
用Crypto1算法對Mifare卡進行三重認證的軟件實現(xiàn)過程如下:
(1)讀卡器發(fā)送要存取的扇區(qū)號并選中密鑰KeyA或KeyB;
(2)Mifare卡片返回4字節(jié)卡片隨機數(shù)給讀卡器(一重);
(3)讀卡器產(chǎn)生隨機數(shù)和過程密鑰(UID+KeyA/B+卡隨機數(shù)+讀卡器隨機數(shù)產(chǎn)生Mifare過程密鑰)并發(fā)送8字節(jié)數(shù)據(jù)(4字節(jié)改變的讀卡器隨機數(shù)和4字節(jié)加密卡片隨機數(shù))給卡片(二重);
(4)卡片驗證加密的卡片隨機數(shù)并計算加密的讀卡器隨機數(shù)然后返回4字節(jié)返回值給讀卡器(三重);
(5)讀卡器通過比對加密的讀卡器隨機數(shù)來驗證卡片。
集成Crypto1加密算法到STRFNFCA讀卡器,進行三重認證操作,每一步驗證通過后,實現(xiàn)卡片和讀卡器的相互認證,可對Mifare卡進行讀、寫、增值、減值、存儲、傳送等內(nèi)存操作從而兼容Mifare系列卡。
本文基于ARMCortex-M3微處理器完成了接觸式、非接觸式IC卡讀寫器的硬件設計,遵循ISO/IEC14443協(xié)議、ISO/IEC7816協(xié)議和PBOC2.0標準完成了支持雙界面IC卡讀寫器的設計和開發(fā),讀寫器可實現(xiàn)IC卡的金融交易,具有近場通信NFC功能,可單獨用于支付系統(tǒng)亦可嵌入到POS機終端及其它應用系統(tǒng);讀寫器集成了Crypto1加密算法,可兼容市場上主流的Mifare系列卡。根據(jù)IC卡的不同行業(yè)應用,讀卡終端可實現(xiàn)滿足不同需求的應用,提供一種便捷的支付消費方式,在銀行、保險、醫(yī)療等領(lǐng)域有很好的市場前景。
[1]ZhouXuan-qian.TransformationtimetablefrombankcardtoICcard[N].ShanghaiFinancialNews,2010-11-9(4).(inChinese)
[2]ISO/IECFDIS14443-3:2000(E).Identificationcards-Contactlessintegratedcircuit(s)cards-Proximitycards-Part3:Initializationandanticollision[S].ISO/IECFOS,2000.
[3]ISO/IECFDIS14443-4:2000(E).Identificationcards-Contactlessintegratedcircuit(s)cards-Proximitycards-Part4:Transmissionprotocol[S].ISO/IEC,2000.
[4]STM32referencemanual(RM0008)[R].DocID13902Rev13,STMicroelectronics, 2011.
[5]BaiCui-cui.DesignandimplementationofcontactlessCPUcardreader[J].RadioCommunicationsTechnology, 2012,38(5):70.(inChinese)
[6]STRFNFCANearfieldcommunicationtransceiverdatasheet[R].DocID023077Rev9,ST,2012.
[7]ISO/IEC7816-3:2006(E).Identificationcards-Integratedcircuitcards-part3:Cardswithcontacts-Electricalinterfaceandtransmissionprotocols[S].ISO/IEC,2006.
[8]GemGoldR2.1referencemanualversion1.1 [Z].GEMPLUS, 2000.
[9]Chinafinancialintegratedcircuitcardspecifications-part2:Electronicpurse/electronicdepositapplicationspecification[S].ThefinancialindustrystandardofthePeople’sRepublicofChinaJR/T0025.2-2010,2010.(inChinese)
[10] MF1S50YYX:Mifare classic 1k-mainstream contactless smart card IC product data sheet[S].Rev.3.0-2,2011.
附中文參考文獻:
[1] 周軒千.銀行卡IC化設定時間表[N].上海金融報,2010-11-9(4).
[5] 白翠翠.非接觸式CPU卡讀寫器的設計與實現(xiàn)[J].無線電通信技術(shù),2012,38(5):70.
[9] JR/T 0025.2-2010,中國金融集成電路(IC)卡規(guī)范第2部分:電子錢包/電子存折應用規(guī)范[S].北京:中華人民共和國金融行業(yè)標準.
PANXin-na,born in 1982,MS candidate,her research interest includes embedded system.
鮑可進(1958-),男,江蘇靖江人,教授,研究方向為嵌入式系統(tǒng)。E-mail:bkj@ujs.edu.cn
BAOKe-jin,born in 1958,professor,his research interest includes embedded system.
唐宏斌(1968-),男,江蘇揚州人,工程師,研究方向為嵌入式系統(tǒng)。E-mail:tanghongbin@sina.com
TANGHong-bin,born in 1968,engineer,his research interest includes embedded system.
DesignandimplementationofdualinterfaceICcardreaderbasedonARM
PAN Xin-na1,BAO Ke-jin1,TANG Hong-bin2
(1.School of Computer Science and Telecommunication Engineering,Jiangsu University,Zhenjiang 212013;2.Yangzhou Yuanyue Payment Technology Co. LTD, Yangzhou 225000,China)
To meet the smart cards’application requirements in the banking, insurance, medical management systems, a smart card reader system is designed based on ARM. The chip STM32F103RBT6 with ARM Cortex-M3 and the near field communication transceiver STRFNFCA are used in the hardware design. In the process of software design,it gives initialization operations and application layer data transactions,LCD display between contactless/contact IC card and reader,implements smart card’s financial transactions including credit for load, debit for purchase and getting balance transactions, and integrates Crypto 1 encryption algorithm into reader so as to be compatible with Mifare cards.Experimental results indicate that the system has stable performance, low power consumption,strong practicability and high reliability.
reader;APDU;MAC;PBOC 2.0;DES
1007-130X(2014)05-0991-06
2012-11-23;
:2013-02-25
TP333.91
:A
10.3969/j.issn.1007-130X.2014.05.034
潘新娜(1982-),女,河南通許人,碩士生,研究方向為嵌入式系統(tǒng)。E-mail:panxinna@126.com
通信地址:212013 江蘇省鎮(zhèn)江市江蘇大學計算機科學與通信工程學院
Address:School of Computer Science and Telecommunication Engineering,Jiangsu University,Zhenjiang 212013,Jiangsu,P.R.China