徐鋒 冷夢甜
摘 要:目前基于CPU卡的應(yīng)用系統(tǒng)中存在高交互效率和強主機控制這一對矛盾,文中通過分析CPU卡指令的應(yīng)用特性,制定了一套服務(wù)器和終端解釋模型,并將該模型應(yīng)用于充值和發(fā)卡系統(tǒng)中。分析發(fā)現(xiàn),該模型能夠在滿足各類業(yè)務(wù)需求的同時滿足高交互效率和強主機控制的要求,為基于CPU卡的應(yīng)用系統(tǒng)提供了一種高效率、高安全性的控制方法。
關(guān)鍵詞:CPU卡;遠程控制;終端解釋模型;格式化
中圖分類號:TP39文獻標(biāo)識碼:A文章編號:2095-1302(2019)01-00-04
0 引 言
CPU卡作為一種自帶計算和存儲能力的安全介質(zhì),卡片內(nèi)含有微處理器、存儲器和操作系統(tǒng),功能相當(dāng)于一臺微型計算機,具有安全、穩(wěn)定、可控和易攜帶等優(yōu)點,被廣泛應(yīng)用于金融、政府行業(yè)、公共交通等領(lǐng)域[1]?;贑PU卡的聯(lián)機應(yīng)用服務(wù)包括CPU卡、終端、應(yīng)用服務(wù)器等,現(xiàn)有的業(yè)務(wù)實現(xiàn)一般采用兩種模式實現(xiàn)應(yīng)用服務(wù)器對CPU卡的遠程控制,分別為終端透傳模式[2]與終端處理模式[3-4],這兩種模式無法同時滿足高交互效率和強主機控制的需求。在一卡通應(yīng)用系統(tǒng)的終端開發(fā)過程中,一卡通應(yīng)用方對業(yè)務(wù)比較熟悉,傾向于強主機控制;終端提供方對CPU技術(shù)比較熟悉,傾向于高交互效率,雙方一般依據(jù)基于業(yè)務(wù)和技術(shù)力量的不同選擇某一模式,但均有改進空間,因此研究一種滿足高交互效率和強主機控制需求的控制方法十分必要。
1 傳統(tǒng)遠程控制方法存在的問題及解決思路
1.1 終端透傳模式存在的問題
終端透傳模式是指所有業(yè)務(wù)邏輯由應(yīng)用服務(wù)器控制,終端只作為通道下發(fā)APDU指令到CPU卡,并接收返回信息轉(zhuǎn)發(fā)給應(yīng)用服務(wù)器,后續(xù)處理邏輯由應(yīng)用服務(wù)器根據(jù)返回信息再次組織指令下發(fā),終端在應(yīng)用服務(wù)中的作用在于透傳信息,如圖1所示。這種模式的業(yè)務(wù)邏輯由應(yīng)用服務(wù)器控制,雖然可以通過后臺軟件配置對業(yè)務(wù)流程進行調(diào)整,但會導(dǎo)致終端與應(yīng)用服務(wù)器之間的交互增多,降低應(yīng)用效率。
1.2 終端處理模式存在的問題
終端處理模式是指應(yīng)用服務(wù)器接收應(yīng)用所需的必要數(shù)據(jù)和提供CPU卡操作必須的數(shù)據(jù)。應(yīng)用邏輯由終端和應(yīng)用服務(wù)器共同控制,終端進行主要的業(yè)務(wù)控制,如圖2所示。這種模式可以提高系統(tǒng)的應(yīng)用效率,但業(yè)務(wù)邏輯由終端控制,需要調(diào)整業(yè)務(wù)流程時需對不同部署區(qū)域不同種類的終端進行升級,難于實現(xiàn)業(yè)務(wù)流程的靈活調(diào)整。
1.3 解決思路
對于上述兩種傳統(tǒng)模式,前者因網(wǎng)絡(luò)交互太多而影響效率,后者因服務(wù)器對CPU卡的控制導(dǎo)致只能通過終端間接控制,而且受終端邏輯影響。為了解決現(xiàn)存的問題,必須引入一種在不增加交互過程的基礎(chǔ)上使服務(wù)器可直接遠程控制CPU卡操作的新模式。
如果想實現(xiàn)最少的交互次數(shù),就需要將大量控制邏輯下放給終端處理,如果為實現(xiàn)最強的主機控制,就需要收回終端的控制邏輯能力,而這是一對矛盾。因此文中分析了CPU卡指令的特性,設(shè)計了一套服務(wù)器、終端的解釋邏輯,由服務(wù)器端編輯并下發(fā)控制邏輯,終端按規(guī)則解釋執(zhí)行邏輯,以實現(xiàn)最少的交互與最強的控制,避免兩種傳統(tǒng)模式的缺點。
2 CPU卡指令分析
基于業(yè)務(wù)管理和安全的要求,一般業(yè)務(wù)系統(tǒng)在設(shè)計時會考慮關(guān)鍵業(yè)務(wù)的控制點。例如,在充值業(yè)務(wù)中,卡片充值必須有后臺服務(wù)器才能產(chǎn)生mac1數(shù)據(jù),而mac1數(shù)據(jù)與交易金額、卡號、序列號、時間、充值密鑰等數(shù)據(jù)密切關(guān)聯(lián),不可偽造、不可修改、不可重發(fā),因此業(yè)務(wù)系統(tǒng)需以mac1數(shù)據(jù)的發(fā)出作為收款的關(guān)鍵控制點。由于業(yè)務(wù)系統(tǒng)存在各控制點,使得整個業(yè)務(wù)流程在CPU卡和后臺系統(tǒng)間必須經(jīng)過一次或多次交互,即設(shè)計CPU卡指令的解釋邏輯不僅要考慮本次交互的指令順序和狀態(tài)控制,也要考慮多次交互時上下文的關(guān)系。
因CPU卡的狀態(tài)千差萬別,每次交互的指令組內(nèi)部也需要定義一定的處理邏輯,前一條指令的返回狀態(tài)會影響后續(xù)指令的執(zhí)行順序。例如,在聯(lián)機消費過程中,讀取卡片信息后,需要根據(jù)卡片是否在黑名單內(nèi)而選擇正常消費或退出本流程;有時需要根據(jù)訪問目錄的返回情況而選擇進入不同的交易流程。
同時,不僅前一條指令的返回狀態(tài)會影響后續(xù)指令,前一組和前一條指令的返回數(shù)據(jù)也會影響后續(xù)指令的處理。例如,前一條查詢余額指令正常執(zhí)行,余額太大后續(xù)則無法充值,余額太小后續(xù)無法消費等。
本文研究設(shè)想所有CPU卡業(yè)務(wù)流程都可能有關(guān)鍵業(yè)務(wù)控制點,需要通過多次交互實現(xiàn),每次交互都需要根據(jù)指令返回狀態(tài)和返回數(shù)據(jù)確定下一步操作內(nèi)容和后續(xù)步驟,同時也可能需要組織數(shù)據(jù)回送服務(wù)器。
3 CPU卡指令解釋邏輯設(shè)計
本文研究設(shè)想所有CPU卡業(yè)務(wù)流程(如充值業(yè)務(wù)、在線消費業(yè)務(wù)、遷移卡業(yè)務(wù)、測試業(yè)務(wù)等)都可以通過多個指令組實現(xiàn),每個指令組表示需要一次CPU卡與應(yīng)用服務(wù)間的交互,當(dāng)次交互的指令信息和返回要求編入該分組,每個分組由多條指令組成,每條指令定義了操作內(nèi)容和后續(xù)步驟,并定義了需要動態(tài)定義的操作內(nèi)容和返回數(shù)據(jù)。
3.1 關(guān)鍵字
服務(wù)器端和終端進行邏輯解釋遇到關(guān)鍵字時,進行特定的解釋處理,設(shè)計了表1所列的關(guān)鍵字。
3.2 服務(wù)器端的指令配置模板
對于所有業(yè)務(wù)流程都可使用圖3所示的模板。
服務(wù)器端的指令配置按照統(tǒng)一模板,針對不同的業(yè)務(wù)進行具體的指令配置,以下是每個字段的配置說明:
(1)指令組ID:唯一標(biāo)識指令組,由三位數(shù)字組成,從001開始(不能為000),一般按數(shù)字順序編號;
(2)指令I(lǐng)D:在同一指令組內(nèi)唯一標(biāo)識指令,由三位數(shù)字組成,從001開始(不能為000),一般按數(shù)字順序編號;
(3)指令(含數(shù)據(jù)):APDU的具體數(shù)據(jù),可以含可變參數(shù),以{}標(biāo)識,如805A000202{onlineSeqNo}08表示指令需要將之前指令獲取的onlineSeqNo值填入;
(4)期望值和順序號:指示該條指令期望的返回值以及對應(yīng)的下一條指令的ID號,支持多節(jié),每節(jié)以“+”分隔,節(jié)內(nèi)返回值與下一條指令以“|”分割,匹配到第一個結(jié)果即結(jié)束匹配,“*”標(biāo)識匹配任意值,下一條指令若為000則結(jié)束,如9000|002+6A82|006+*|006表示返回以9000結(jié)尾的數(shù)據(jù)下一條執(zhí)行2號指令,返回以6A82結(jié)尾的數(shù)據(jù)下一條執(zhí)行6號指令,其他返回值下一條執(zhí)行6號指令;
(5)結(jié)果解釋域:指當(dāng)前指令的執(zhí)行結(jié)果可以解析出來的值,由值名和值位置標(biāo)識,值名由書寫字母和/或數(shù)字組成,在一個動作內(nèi)唯一標(biāo)識執(zhí)行結(jié)果內(nèi)容,值位置由開始位置和長度組成,如{logicNo[0|8]}表示從本指令返回值的下標(biāo)0開始,截取8 B長度,可以解析出logicNo參數(shù)的值;
(6)處理類型:由兩個數(shù)字組成,第一個數(shù)字表示服務(wù)端處理類型,第二個數(shù)字表示終端處理類型。
終端處理類型:0一般處理,只需將指令送往卡片并接收返回即可;1獲取終端信息,終端按“結(jié)果解釋域”指定的關(guān)鍵字要求填寫返回數(shù)據(jù)。
服務(wù)端處理類型:0一般處理,或只需將{}符號內(nèi)的變量填充完成即可;2產(chǎn)生寫安全文件的mac值;3產(chǎn)生加密寫安全文件的mac值;4驗證充值mac1;5計算充值mac2。99為特殊類型表示錯誤,需終端重新處理。
3.3 服務(wù)器解釋流程
服務(wù)器解釋流程如圖4所示。
(1)從配置文件中讀取本應(yīng)用對應(yīng)的指令組(從001組開始處理)。
(2)從指令組中讀取指令進行處理,處理內(nèi)容主要為填充“{}”內(nèi)的變量。首先判斷處理類型是否需要服務(wù)器計算相應(yīng)關(guān)鍵字的值,優(yōu)先采用臨時計算的關(guān)鍵字的值填充相應(yīng)變量;然后從結(jié)果解釋域中獲得相應(yīng)變量的結(jié)果填充,如無對應(yīng)的結(jié)果解釋域變量,則再讀取系統(tǒng)配置信息填充,如再無系統(tǒng)配置信息則報錯。
(3)將格式化的指令傳遞給終端并接收終端返回的信息。
(4)對照發(fā)出指令組內(nèi)每條指令的“結(jié)果解析域內(nèi)容”,逐條解析結(jié)果,并將結(jié)果記錄在服務(wù)器對應(yīng)的參數(shù)中。
該業(yè)務(wù)流程如果還有指令組未執(zhí)行,則取下一組指令重復(fù)步驟(1)~(4),直到全部完成。
3.4 終端解釋流程
終端解釋流程如圖5所示。
(1)從服務(wù)器獲取格式化指令組。
(2)對獲取的格式化指令組進行格式審查和解釋。
(3)進行卡片操作,終端優(yōu)先按處理類型指示進行終端處理,然后終端對卡片執(zhí)行指令(若指令為空則返回缺省值),獲取返回值和狀態(tài)值,按當(dāng)前指令的“期望值和順序號”字段要求執(zhí)行下一條指令,直到本組指令全部執(zhí)行完成。終端對卡片執(zhí)行指令前,首先與卡片完成尋卡、反沖突、選卡等操作,與卡片建立穩(wěn)定的APDU通道,后續(xù)的操作邏輯和返回數(shù)據(jù)組織完全按服務(wù)器下發(fā)的格式化指令進行。
(4)組織本組指令的結(jié)果解析域返回給服務(wù)器。
終端持續(xù)請求、檢查、執(zhí)行指令組并返回信息,直到收到組號為99的指令組。
3.5 解釋流程示例
3.5.1 服務(wù)器端指令模板
3.5.2 服務(wù)器解釋
服務(wù)器首先讀取模板信息,然后用系統(tǒng)變量替換“{}”內(nèi)的變量,再格式化各指令,指令間以英文“;”分割,最后一條指令以“.”結(jié)束;每條指令包含指令組ID,指令I(lǐng)D,指令,期望值,解釋域和處理類型共6個字段,字段間以“,”分割,字段可以為空;期望值和順序號字段由期望值和指令I(lǐng)D對組成,用“|”連接,一個字段可以由多組期望值和指令I(lǐng)D對組成,組之間由“&”連接。系統(tǒng)最后形成如下字符串下發(fā)終端:“001,001,07,00a4000002ddf1,9000|002&*|000,0;001,002,05,c4fe000000,9000|003&*|000,phyNo[0|8],0;001,003,05,00b0950808,9000|004&*|000,logicNo[0|8],0;001,004,07,00a4000002adf1,6a81|005&*|000,0;001,005,07,00a4000002adf3,*|000,0.”。
3.5.3 終端解釋
4 CPU卡具體業(yè)務(wù)設(shè)計
本節(jié)以CPU卡應(yīng)用領(lǐng)域比較常見的兩個業(yè)務(wù)場景—空中充值、空中發(fā)卡為例,設(shè)計了一套服務(wù)器配置模板、服務(wù)器解釋說明和終端解釋說明,用于說明基于終端邏輯解釋的設(shè)計在實際具體業(yè)務(wù)上的實現(xiàn)情況。
4.1 空中充值
一卡通行業(yè)的CPU卡充值一般遵循PBOC電子錢包規(guī)范,圖6所示為一套基于PBOC電子錢包充值的模板配置,共配置有3組操作指令和一組結(jié)束指令。
4.2 卡片發(fā)行
一卡通和銀行領(lǐng)域的卡片發(fā)行一般都遵循GlobalPlatform規(guī)范要求,在完成安全域初始化后進入具體的SSD安全域,替換SSD密鑰后,將卡片的密鑰和文件信息通過密文的方式寫入卡內(nèi)。圖7所示是對已完成安全域初始化后的卡片發(fā)行的模板,共含3組指令組。
5 結(jié) 語
本文就CPU卡指令特征進行了分析,以高主機控制低交互次數(shù)為目標(biāo),設(shè)計了一套包括配置模板、服務(wù)端解釋流程、終端解釋流程的可行的解釋邏輯,并已應(yīng)用到一卡通行業(yè)的空中充值和卡片發(fā)行中。同時,CPU卡還被應(yīng)用于聯(lián)機消費、客服處理、身份驗證等領(lǐng)域,該解釋邏輯可以通過擴展關(guān)鍵字和解釋邏輯很好地適應(yīng)新應(yīng)用的要求。不足之處在于,應(yīng)用的多樣性和不可預(yù)測性導(dǎo)致很難設(shè)計一套可以兼容所有應(yīng)用的解釋邏輯,在增加新應(yīng)用時只需修改配置模板即可,無需修改服務(wù)器和終端解釋流程。
參 考 文 獻
[1]周宏華,李樹國,周潤德.高安全性的智能卡芯片結(jié)構(gòu)與設(shè)計[J].清華大學(xué)學(xué)報(自然科學(xué)版),2003(4):569-572.
[2]蘇浩偉,鄒大畢,溫曉麗.基于安卓NFC接口的交通一卡通手機充值系統(tǒng)研究[J].信息化建設(shè),2016(7):58-61.
[3]鄧均.城市一卡通系統(tǒng)設(shè)計與實現(xiàn)[D].廣州:華南理工大學(xué),2016.
[4]薛峰.智能公交充值服務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D].天津:天津大學(xué),2017.
[5]唐柳,黃樟欽,張會兵.基于指令流混合比與功能單元匹配的軟錯誤脆弱性控制方法[J].計算機應(yīng)用研究,2017,34(1):98-101.
[6]童新,姚莉,倪波.基于物聯(lián)網(wǎng)的Cortex-A53智能云鏡系統(tǒng)的設(shè)計與實現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2018,8(5)48-50.
[7]鄧超國,谷大武,李卷孺,等.一種基于全系統(tǒng)仿真和指令流分析的二進制代碼分析方法[J].計算機應(yīng)用研究,2011,28(4):1437-1441.
[8]李功麗,戴紫彬,徐進輝,等.基于流體系架構(gòu)的分組密碼處理器設(shè)計[J].計算機研究與發(fā)展,2016,54(12):2833-2842.