當(dāng)前位置:首頁(yè) > 通信技術(shù) > 通信技術(shù)
[導(dǎo)讀]摘要:為解決傳統(tǒng)讀卡器功能單一、不能獨(dú)立完成金融交易的問(wèn)題,選擇超低功耗而且價(jià)格低廉的單片機(jī)完成硬件平臺(tái)的設(shè)計(jì);并在芯片內(nèi)部編程實(shí)現(xiàn)金融交易,開(kāi)發(fā)出一套功能豐富、成本低、使用便利的金融IC卡讀卡器產(chǎn)品。

摘要:為解決傳統(tǒng)讀卡器功能單一、不能獨(dú)立完成金融交易的問(wèn)題,選擇超低功耗而且價(jià)格低廉的單片機(jī)完成硬件平臺(tái)的設(shè)計(jì);并在芯片內(nèi)部編程實(shí)現(xiàn)金融交易,開(kāi)發(fā)出一套功能豐富、成本低、使用便利的金融IC卡讀卡器產(chǎn)品。超低功耗讀卡器采用USB接口通信,在讀卡器內(nèi)部實(shí)現(xiàn)金融交易能很好地提升金融交易的安全性,同時(shí)提高了金融應(yīng)用開(kāi)發(fā)的工作效率和硬件資源的利用率。
關(guān)鍵詞:PBOC2.0規(guī)范;金融IC卡;金融交易;MSP430F5510;模塊化設(shè)計(jì)

引言
    PBOC2.0規(guī)范是國(guó)內(nèi)金融IC卡產(chǎn)業(yè)的基礎(chǔ)性規(guī)范,內(nèi)容豐富,可以滿(mǎn)足我國(guó)銀行卡應(yīng)對(duì)國(guó)際IC卡遷移的需要。它既滿(mǎn)足國(guó)內(nèi)銀行卡高安全和多應(yīng)用的實(shí)際需求,也為跨行業(yè)合作提供了良好的基礎(chǔ)架構(gòu)。銀行磁條卡存儲(chǔ)空間小、無(wú)運(yùn)算能力,而金融IC卡具備多應(yīng)用加載的平臺(tái),可豐富銀行卡產(chǎn)品系列,成為商業(yè)銀行業(yè)務(wù)創(chuàng)新的重要技術(shù)手段。
    在PBOC2.0規(guī)范指導(dǎo)下的金融IC卡的發(fā)展為金融IC卡讀卡器的發(fā)展了帶來(lái)了機(jī)遇,設(shè)計(jì)和開(kāi)發(fā)使用方便、效率高和有著高可移植性的新型金融IC卡讀卡器必將促進(jìn)國(guó)家金融IC的應(yīng)用發(fā)展。

1 硬件設(shè)計(jì)
    在讀卡器MCU的選擇上,為減少讀卡器的功耗,并降低器件上的成本,選擇TI公司的超低功耗單片機(jī)MSP430F5510。其提供的豐富外設(shè)I/O接口使讀卡器實(shí)現(xiàn)各種功能,并自帶全速USB2.0(12 Mbps)特性,也方便了USB接口開(kāi)發(fā)及HID通信協(xié)議的實(shí)現(xiàn)。MSP430F5510引腳圖如圖1所示。


    MCU選擇RGZ48PIN的封裝形式,使得讀卡器設(shè)計(jì)小巧,48引腳能為開(kāi)發(fā)提供足夠的I/O口。高頻率晶振XT2IN引腳外接4 MHz晶振,能為IC卡提供穩(wěn)定的時(shí)鐘源。
1.1 MCU與IC卡座接口設(shè)計(jì)
    MCU與IC卡卡座的接口電路如圖2所示。IC卡座的V_IC與電源模塊的輸入引腳相連,IC_CLK與MCU的高頻晶振(XT2IN)相連,為IC卡工作提供穩(wěn)定的時(shí)鐘源。IC卡數(shù)據(jù)的輸入/輸出通過(guò)IC_IO與MCU的I/O口進(jìn)行連接,MCU通過(guò)I/O口控制與IC卡的數(shù)據(jù)交互,并通過(guò)IC_DET檢測(cè)IC卡的插入和拔出,通過(guò)Reset引腳對(duì)IC卡進(jìn)行復(fù)位。
1.2 MCU與USB接口設(shè)計(jì)
    USB接口與MCU的接口電路如圖3所示。
    USB接口的電源通過(guò)二極管D1接到MCU的電源供電部分,為MCU的正常工作提供電源。USB的Data+、Data-引腳分別接MCU的DP、DM引腳,MCU上的PUR引腳與DP引腳間接一個(gè)1.4 kΩ上拉電阻,完成MCU的兩個(gè)引腳DP和DM差分信號(hào)的輸入。

2 軟件設(shè)計(jì)與開(kāi)發(fā)
    讀卡器內(nèi)部軟件主要由3部分組成,分別為ISO7816協(xié)議的實(shí)現(xiàn)、USB接口協(xié)議HID的實(shí)現(xiàn)、金融交易在讀卡器內(nèi)部的實(shí)現(xiàn)。ISO7816協(xié)議的實(shí)現(xiàn)主要參考ISO7816規(guī)范,詳細(xì)的實(shí)現(xiàn)過(guò)程這里不再詳細(xì)敘述。由于MSP430F5510自帶全速USB2.0(12Mbps),可參照HID協(xié)議完成底層固件HID協(xié)議的開(kāi)發(fā)。下面詳細(xì)敘述金融交易在讀卡器內(nèi)部的實(shí)現(xiàn)。
    為使得軟件開(kāi)發(fā)具有條理性,考慮將金融交易部劃分為以下4個(gè)模塊:指令功能模塊、安全認(rèn)證模塊、協(xié)助功能模塊、獨(dú)立交易功能模塊。各模塊之間可以相互輔助,實(shí)現(xiàn)金融交易的功能。
2.1 指令功能模塊
    這個(gè)模塊也可以稱(chēng)為基礎(chǔ)功能模塊,設(shè)計(jì)此模塊能解決從PBOC2.0規(guī)范中抽象出各金融IC卡指令的問(wèn)題。在模塊內(nèi)部實(shí)現(xiàn)PBOC2.0規(guī)范中所述的交易指令:選擇、讀記錄、取數(shù)據(jù)對(duì)象、應(yīng)用初始化、應(yīng)用鎖定、應(yīng)用解鎖、外部認(rèn)證、生成應(yīng)用密文、內(nèi)部認(rèn)證、PIN修改/解鎖、設(shè)置數(shù)據(jù)、修改記錄、驗(yàn)證。
    這些指令的實(shí)現(xiàn)能方便具體交易的調(diào)用,使得其他模塊不再具體考慮指令調(diào)用的細(xì)節(jié)。
2.2 安全認(rèn)證模塊
    此模塊的設(shè)計(jì)可解決交易過(guò)程中涉及到的安全認(rèn)證,單片機(jī)內(nèi)部可以實(shí)現(xiàn)RSA算法、3DES算法、哈希算法SHA-1。針對(duì)完成PBOC2.0規(guī)范中的脫機(jī)數(shù)據(jù)認(rèn)證,軟實(shí)現(xiàn)各種安全認(rèn)證算法能很好地節(jié)省硬件成本,使得開(kāi)發(fā)具有相對(duì)的獨(dú)立性。
2.3 協(xié)助功能模塊
    協(xié)助功能模塊可作為工具模塊,為其他模塊提供服務(wù)。在模塊內(nèi)部實(shí)現(xiàn)對(duì)IC卡指令返回的數(shù)據(jù)的解析、PDOL(處理選項(xiàng)數(shù)據(jù)對(duì)象列表)、DDOL(動(dòng)態(tài)數(shù)據(jù)認(rèn)證數(shù)據(jù)對(duì)象列表)、CDOL(卡片風(fēng)險(xiǎn)管理數(shù)據(jù)對(duì)象列表)等數(shù)據(jù)對(duì)象的組包。
    IC卡指令返回的數(shù)據(jù)實(shí)質(zhì)上就是一個(gè)有格式的長(zhǎng)字符串,這個(gè)字符串?dāng)?shù)據(jù)都有相應(yīng)的模板格式,但不同的指令返回的數(shù)據(jù)模板不同。而且模板中包含的TLV(Tag、Length、Value)數(shù)據(jù)結(jié)構(gòu)也各不相同,模板中還可能再包含模板。對(duì)于模板中有單一TLV數(shù)據(jù)結(jié)構(gòu)不帶模塊結(jié)構(gòu)的數(shù)據(jù),可以通過(guò)先解析Tag,接著解析長(zhǎng)度,再解析數(shù)據(jù)內(nèi)容的方式,取得某個(gè)Tag對(duì)應(yīng)的Value值。即便是一個(gè)字符串由多個(gè)TLV結(jié)構(gòu)的數(shù)據(jù)對(duì)象組成,這種方法也可以完成對(duì)TLV結(jié)構(gòu)的解析以及對(duì)單個(gè)Tag對(duì)應(yīng)值的確定。
    但是對(duì)于有多個(gè)模塊結(jié)構(gòu)的數(shù)據(jù)對(duì)象進(jìn)行解析時(shí),就需要先解析模板,確定該TLV的數(shù)據(jù)對(duì)象在哪個(gè)模板中,然后從長(zhǎng)數(shù)據(jù)串中截取出這個(gè)模板對(duì)應(yīng)的數(shù)據(jù),然后再在這個(gè)模板中進(jìn)行TLV數(shù)據(jù)的解析。
    具體在設(shè)計(jì)中,采用如上所述的分析方法實(shí)現(xiàn)兩種不同的TLV解析功能,一種可以直接解析只有TLV結(jié)構(gòu)字符串的函數(shù);另外一種則可以針對(duì)有多個(gè)模板的字符串進(jìn)行解析。
2.4 獨(dú)立交易功能模塊
    在上面三個(gè)功能模塊的基礎(chǔ)上實(shí)現(xiàn)金融交易,這里主要設(shè)計(jì)實(shí)現(xiàn)了以下金融交易:讀取IC 卡信息、讀取IC交易日志、寫(xiě)卡腳本、生成ARQC(授權(quán)應(yīng)用密文)、ECC(電子現(xiàn)金)交易。下面詳述各交易的實(shí)現(xiàn)。
2.4.1 讀取IC卡信息
    讀取IC卡信息,可借助指令功能模塊中的選擇指令選擇IC卡應(yīng)用個(gè)人化環(huán)境(PSE),然后利用協(xié)助功能模塊的解析函數(shù),解析出卡片中的應(yīng)用標(biāo)識(shí)符AID,再通過(guò)選擇指令選擇AID,解析出PDOL(處理選項(xiàng)數(shù)據(jù)對(duì)象列表)。PDOL實(shí)質(zhì)上是一個(gè)模板,表明了處理選項(xiàng)數(shù)據(jù)對(duì)象中應(yīng)當(dāng)包含哪些數(shù)據(jù)對(duì)象。解析出 PDOL,利用上述協(xié)助功能模塊中的組PDOL對(duì)象功能函數(shù)便可以形成處理選項(xiàng)數(shù)據(jù)對(duì)象。在應(yīng)用初始化指令中將這個(gè)數(shù)據(jù)對(duì)象發(fā)送給卡片,卡片接收到后,會(huì)根據(jù)處理選項(xiàng)數(shù)據(jù)對(duì)象作出交易的判斷,在返回的數(shù)據(jù)中帶回來(lái)交易中需要讀取的交易記錄,然后根據(jù)卡片返回到AFL(應(yīng)用文件定位器)。遍歷讀取相應(yīng)的記錄、解析相應(yīng)的記錄,就可以找到需要的IC卡個(gè)人信息。
    以上方法不是唯一讀取IC卡的方法,對(duì)于常用持卡人信息的讀取,也可以選擇讀取IC卡前兩幾條記錄,從中分析得到IC卡持卡人的個(gè)人信息。這種方法讀取速度快,但是對(duì)于持卡人信息不在前幾條記錄中的卡片,則會(huì)發(fā)牛讀取不到信息的錯(cuò)誤。為避免此種錯(cuò)誤的發(fā)生,設(shè)計(jì)中采用如上遍歷讀取記錄的方法。
2.4.2 讀取IC卡交易日志
    金融IC卡對(duì)于圈存、ECC交易,在卡片中會(huì)有相應(yīng)的日志記錄。IC卡交易日志以文件的形式保存在IC中,最多能保存十條交易日志,而且第一條是最近的交易日志。在交易過(guò)程中通過(guò)讀IC卡日志能判斷出最近幾筆交易的詳細(xì)情況,交易日志的讀取通過(guò)指令模塊中的Select指令選取PSE,然后解析出 AID。選擇AID后,解析出日志入口標(biāo)簽的值,從而找到日志對(duì)應(yīng)的SFL(短文件標(biāo)識(shí)符)以及交易日志中的記錄個(gè)數(shù)。逐條讀取SFL下的記錄,就可以得到完整的交易日志。然后再使用Get Data指令讀取日志格式標(biāo)簽的值,便可以對(duì)照日志格式解析交易日志,得出每筆交易的詳細(xì)信息。
    以上為最全面的IC日志讀取方法,在實(shí)現(xiàn)中為節(jié)省程序運(yùn)行時(shí)間,一般在選擇AID后直接讀取SFL為0x0B,在該文件下從第1條記錄讀取到第10條記錄。這種方法也能將交易日志完整的讀取出來(lái),而且還節(jié)省了時(shí)間。讀卡器在內(nèi)部實(shí)現(xiàn)中采用了這種方法。
2.4.3 寫(xiě)卡腳本
    卡片腳本是發(fā)卡行對(duì)卡片進(jìn)行認(rèn)證過(guò)后,認(rèn)為此卡片為合法卡片后,返回的可以修改IC卡記錄內(nèi)容的命令。寫(xiě)卡腳本命令執(zhí)行之前首先需要對(duì)發(fā)卡行返回的密文數(shù)據(jù)進(jìn)行外部認(rèn)證,實(shí)質(zhì)上是卡片在驗(yàn)證發(fā)卡行的真?zhèn)?。發(fā)卡行驗(yàn)證通過(guò),便可以通過(guò)產(chǎn)生密文指令向卡片發(fā)送表示允許進(jìn)行交易,卡片收到后會(huì)產(chǎn)生允許交易的密文,產(chǎn)生TC(交易證書(shū))。TC需要保存,結(jié)算的時(shí)候或者聯(lián)機(jī)中在腳本執(zhí)行結(jié)果中返回給服務(wù)器,TL值的產(chǎn)生,說(shuō)明了卡片承認(rèn)了這筆交易,服務(wù)器清算的時(shí)候驗(yàn)證TC證書(shū)。如果TC證書(shū)驗(yàn)證通過(guò),后臺(tái)服務(wù)就會(huì)把這筆消費(fèi)人賬。由于產(chǎn)生密文的指令可以產(chǎn)生3種應(yīng)用密文形式,分別為:TC、ARQC(授權(quán)請(qǐng)求密文)、AAC(應(yīng)用認(rèn)證密文),在產(chǎn)生密文的指令中需要指明為產(chǎn)生TC的指令,而且需要組建CDOL2(卡片風(fēng)險(xiǎn)管理數(shù)據(jù)對(duì)象列表2)的數(shù)據(jù)。CDOL2的結(jié)構(gòu)同PDOL結(jié)構(gòu),會(huì)指定卡片風(fēng)險(xiǎn)管理數(shù)據(jù)對(duì)象需要哪些數(shù)據(jù)元,CDOL2在讀記錄中讀取,利用協(xié)助功能模板組建CDOL2對(duì)象數(shù)據(jù)??ㄆ邮债a(chǎn)生應(yīng)用密文指令后,如果返回正確,則可以順利執(zhí)行寫(xiě)卡指令,寫(xiě)卡指令執(zhí)行正確后,整個(gè)交易結(jié)束。此時(shí)如果交易正常,在IC卡的交易日志中應(yīng)能查到最近的這次交易。
2.4.4 生成ARQC
    ARQC(授權(quán)應(yīng)用密文)在交易中有長(zhǎng)片產(chǎn)生的一種密文,這個(gè)密文送到后臺(tái)服務(wù)器,后臺(tái)服務(wù)器會(huì)通過(guò)驗(yàn)證這個(gè)應(yīng)用密文的正確與否來(lái)確定IC卡的真?zhèn)?。ARQC通過(guò)發(fā)送產(chǎn)生應(yīng)用密文來(lái)得到,在產(chǎn)生應(yīng)用密文的指令中,密文類(lèi)型要選擇為ARQC,通過(guò)讀記錄、解析記錄、組建CDOL1(風(fēng)險(xiǎn)管理數(shù)據(jù)對(duì)象列表1)得到風(fēng)險(xiǎn)管理數(shù)據(jù)對(duì)象1??ㄆ邮罩噶詈?,會(huì)返回所需的ARQC。應(yīng)用密文指令發(fā)送之前需要去完成選擇PSE、選擇AID、應(yīng)用初始化和讀記錄的工作。
2.4.5 ECC交易
     ECC(電子現(xiàn)金)交易是接觸式IC卡的一種脫機(jī)消費(fèi)方式。由于交易是在脫機(jī)的情況下進(jìn)行的,所以交易中不涉及聯(lián)機(jī)的認(rèn)證過(guò)程。在選擇PSE、選擇AID后的GPO(應(yīng)用初始化)指令中,利用PDOL指明支持電子現(xiàn)金,然后再讀取需要的IC卡記錄,得到相關(guān)的認(rèn)證數(shù)據(jù),包括IC卡公鑰證書(shū)、發(fā)卡行公鑰證書(shū)、認(rèn)證中心公鑰索引、發(fā)卡行公鑰余項(xiàng)、IC卡公鑰余項(xiàng)、IC卡公鑰指數(shù)、發(fā)卡行公鑰指數(shù)。記錄讀取完畢后,需要先進(jìn)行DDA(動(dòng)態(tài)數(shù)據(jù)認(rèn)證)認(rèn)證,通過(guò)后再發(fā)送產(chǎn)生應(yīng)用密文(產(chǎn)生TC)的指令,指令執(zhí)行正確后再發(fā)送外部認(rèn)證指令。指令執(zhí)行正確,交易則開(kāi)始對(duì)相關(guān)交易數(shù)據(jù)的保存以及終端風(fēng)險(xiǎn)管理進(jìn)行處理。以上任何一條指令執(zhí)行中如果發(fā)生錯(cuò)誤,交易即終止。

結(jié)語(yǔ)
    本文在超低功耗單片機(jī)MSP430F5510的基礎(chǔ)上設(shè)計(jì)和實(shí)現(xiàn)了一款功能豐富的IC卡讀卡器。利用MSF430F5510自帶的全速USB硬件資源實(shí)現(xiàn)了HID協(xié)議,使得讀卡器可以實(shí)現(xiàn)無(wú)驅(qū)動(dòng)的使用,方便了讀卡器的使用。金融交易在芯片內(nèi)部的實(shí)現(xiàn),也可以使得這款讀卡器能作為其他產(chǎn)品的一個(gè)模塊,因?yàn)槠鋬?nèi)部實(shí)現(xiàn)了相應(yīng)的RSA算法、3DES算法、哈希算法SHA-1,同時(shí)也實(shí)現(xiàn)了牛成ARQC、寫(xiě)卡、讀取IC卡信息、讀交易口志、ECC交易。這些交融交易在讀卡器內(nèi)部的實(shí)現(xiàn),能減少外部應(yīng)用對(duì)金融交易的重復(fù)開(kāi)發(fā),節(jié)省資源,同時(shí)也大大提高了工作效率。此款讀卡器往實(shí)際的應(yīng)用中有很好的使用效果。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉