銀行卡領(lǐng)域SM系列算法應用技術(shù)分析
行業(yè)現(xiàn)狀:無論是傳統(tǒng)的磁條卡、金融IC卡,還是移動支付技術(shù)、密碼技術(shù)在銀行卡領(lǐng)域中都起著關(guān)鍵與支撐的作用。銀行卡交易的敏感數(shù)據(jù)私密性應該保護,數(shù)據(jù)的完整性應當受到保護,交易的實體雙方應該得到認證。在銀行卡領(lǐng)域?qū)崿F(xiàn)以上功能常用的密碼算法主要有三類,即對稱算法、非對稱算法和哈希算法。2013年,中國人民銀行發(fā)布《中國金融集成電路(IC)卡規(guī)范》(JR/T0025-2013,簡稱PBOC3.0),首次支持SM算法;2014年,中國銀聯(lián)修訂發(fā)布《中國銀聯(lián)金融IC卡技術(shù)規(guī)范》(Q/CUP0047-2014,簡稱UICS)支持SM算法。自此,金融IC卡開始試點應用SM算法并逐步規(guī)?;瘧谩?014年以來,中國銀聯(lián)先后修訂發(fā)布了交換系統(tǒng)、受理終端規(guī)范支持SM算法,并成功實施改造推廣。
金融IC卡交易的SM算法應用
在金融IC卡領(lǐng)域,以金融IC卡標準借貸記應用流程為例,密碼算法在金融IC卡應用主要在脫機數(shù)據(jù)認證、應用密文生成、發(fā)卡行/卡片認證、發(fā)卡行腳本處理等環(huán)節(jié)中體現(xiàn),如圖1所示。
圖1金融IC卡標準借貸記典型應用流程中的密碼算法應用
1.脫機數(shù)據(jù)認證環(huán)節(jié)
脫機數(shù)據(jù)認證是金融IC卡交易中終端對于卡片真實性的驗證,該環(huán)節(jié)基于公鑰密碼技術(shù)(非對稱算法)的簽名驗證機制。根據(jù)PBOC3.0規(guī)范第7和17部分定義,脫機數(shù)據(jù)認證環(huán)節(jié)使用非對稱算法RSA或SM2算法進行數(shù)據(jù)的簽名和驗簽,其中也用到了哈希算法SHA-1或SM3算法來進行哈希計算。
(1)SM2算法下的證書格式與驗簽流程差異。SM2算法與SM3算法的應用在交易流程上與RSA算法和SHA-1算法并無差別,但由于SM2算法橢圓曲線算法的特性,其簽名結(jié)果需要附帶完整的被簽名數(shù)據(jù)一起傳遞。同時SM2算法本身包含了哈希算法步驟,無需重復進行哈希計算。因此,脫機數(shù)據(jù)認證環(huán)節(jié)采用SM2算法后,相關(guān)數(shù)字證書、數(shù)據(jù)格式的變化如下。
SM2證書去掉發(fā)卡行公鑰余項、發(fā)卡行公鑰指數(shù)長度、發(fā)卡行公鑰指數(shù)、填充字節(jié)等RSA算法特有字段。去掉哈希校驗過程,同時去掉哈希值及哈希算法標識字段:哈希計算SM3是SM2機制的一個步驟,因此沒有必要再進行單獨驗證。設(shè)置“公鑰參數(shù)標識”:考慮算法參數(shù)擴展需求,新增SM2算法“公鑰參數(shù)標識”。被簽名數(shù)據(jù)明文傳遞,不需要恢復:驗證簽名流程基本不變,但去掉了公鑰索引判斷。相關(guān)流程定義參見PBOC3.0第17部分第5章;具體的算法選擇過程參見本文后續(xù)分析。
(2)終端支持SM2算法。雙算法終端為適應SM算法的交易處理和根CA公鑰加載,需要進行相應的改造。對于金融IC卡交易流程處理主要參考見PBOC3.0第17部分;對于根CA公鑰加載應用SM2算法的支持,銀聯(lián)的方案定義于《銷售點終端(POS)應用規(guī)范》(QCUP009.1-2015)。
(3)其他相關(guān)內(nèi)容。根CA公鑰認證技術(shù)要求、應用SM算法的IC卡數(shù)據(jù)分組要求、個人化數(shù)據(jù)模板要求參見UICS產(chǎn)品規(guī)范第11部分第7-9章。
2.應用密文與發(fā)卡行安全報文環(huán)節(jié)
標準借貸記應用流程中的對稱算法使用主要有以下環(huán)節(jié)。
(1)應用密文生成與發(fā)卡行/卡片認證。AC(應用密文)用于在卡片和發(fā)卡行交易授權(quán)系統(tǒng)間對交易報文進行鑒別,是用過程密鑰進行報文鑒別碼MAC計算生成。應用密文類型包括ARQC、AAC、TC、ARPC等?;赟M4算法的密文計算結(jié)果和3DES一樣同為8字節(jié),具體計算過程參見PBOC3.0第17部分第6章。
(2)發(fā)卡行安全報文保護。發(fā)卡行安全報文用于發(fā)卡后的特定交易過程中卡片和交易授權(quán)系統(tǒng)間的報文傳輸安全,包括了安全報文加密和完整性計算兩類,使用對稱算法。基于SM4算法的具體計算過程參見PBOC3.0第17部分第7-8章。
(3)子密鑰分散及過程密鑰生成。在上述過程中,應對報文加密和完整性保護使用不同的密鑰,包括應用密文密鑰、發(fā)卡行安全報文加密密鑰和MAC密鑰三類。每類密鑰分發(fā)卡行主密鑰IMK、卡片主密鑰MK、卡片過程密鑰SK三級,密鑰分散或生成關(guān)系,如圖2所示?;赟M4算法的計算方法參見PBOC3.0第17部分第8.1.3至8.1.4節(jié)。
圖2金融IC卡對稱密鑰體系
3.算法選擇
SM算法應用過渡期間,需要SM算法卡可以在存量終端上使用。SM算法終端要兼容受理非SM算法卡片,因此SM算法卡和新增的SM算法終端都需要支持兩套算法。根據(jù)PBOC3.0規(guī)范第17部分定義,雙算法卡在卡片個人化數(shù)據(jù)包括了RSA算法所需的所有數(shù)據(jù)元,同時包括了SM2算法所需的所有數(shù)據(jù)元。而PBOC3.0定義的單SM算法卡在實際應用不存在。對于脫機數(shù)據(jù)認證算法,卡片在接收終端應用選擇命令后,返回的PDOL數(shù)據(jù)列表中必須包括SM算法支持指示器(DF69);終端根據(jù)如支持SM算法,設(shè)置國密算法支持指示器標簽為“1”發(fā)送GPO指令至卡片,不支持SM算法的存量終端默認會填“0”。雙算法卡片根據(jù)GPO的指令參數(shù),確定卡片的算法環(huán)境和數(shù)據(jù)返回給終端。終端根據(jù)卡片返回的AIP和AFL進行應用數(shù)據(jù)讀取、脫機認證等其他處理流程。
對于聯(lián)機數(shù)據(jù)算法,聯(lián)機報文的55域9F10第8字節(jié)指定了應用密文、聯(lián)機認證和發(fā)卡行腳本保護所用對稱密碼算法標識。
在PBOC3.0規(guī)范中,SM算法支持指示器(DF69)的值確定了脫機數(shù)據(jù)認證使用的密碼算法類型和聯(lián)機數(shù)據(jù)的對稱密碼算法類型。實際上,后者只涉及卡片和發(fā)卡行之間的數(shù)據(jù)交互,不受中間環(huán)節(jié)算法支持的影響。因此UICS規(guī)范規(guī)定了雙算法卡的應用密文、發(fā)卡行腳本加密和完整性保護僅使用SM4算法。
銀行卡交易報文敏感數(shù)據(jù)及完整性保護
為保證數(shù)據(jù)的安全傳輸,系統(tǒng)用對稱密碼算法對網(wǎng)絡中的報文進行了MAC計算,并對PIN等敏感數(shù)據(jù)進行加密。典型的銀行卡交易報文處理過程如圖3所示。
圖3銀行卡交易報文處理加解密示意圖
網(wǎng)絡中POS機(密碼鍵盤)、收單系統(tǒng)、銀聯(lián)轉(zhuǎn)接系統(tǒng)(CUPS)以及發(fā)卡行系統(tǒng)之間組成了一個點對點的數(shù)據(jù)加解密網(wǎng)絡。CUPS與各聯(lián)網(wǎng)入網(wǎng)機構(gòu)分別約定數(shù)據(jù)密鑰。其中,與銀聯(lián)轉(zhuǎn)接系統(tǒng)相連系統(tǒng)間的報文格式由《中國銀聯(lián)銀行卡交換系統(tǒng)技術(shù)規(guī)范》(Q/CUP006)規(guī)定,2015年版開始支持SM4算法;銀聯(lián)終端機具到受理方的數(shù)據(jù)處理支持SM4算法對方案尚未公開發(fā)布,各家受理機構(gòu)實現(xiàn)的方案也可能有所差異。
1.交換系統(tǒng)
交換系統(tǒng)的報文加密主要涉及PIN加解密、報文MAC計算。SM4算法的分組長度發(fā)生變化導致存量報文域長度不夠;此外,兼容兩種算法,需要增加算法標識。Q/CUP006規(guī)范定義了相關(guān)用法。
(1)數(shù)據(jù)域定義。針對SM4算法分組長度變長的問題,經(jīng)過對現(xiàn)有報文域應用情況的梳理和分析,一是最終選定了更長的63域存放國產(chǎn)密碼PIN密文,并重新設(shè)計了PINBlock格式,原來存放PIN的52域?qū)⒂?填充;二是仍然使用第128域存放MAC,以保持報文域長度不變,與ISO8583規(guī)范要求及國際卡組織處理模式保持一致,有利于SM4算法的國際推廣。
(2)雙算法兼容。針對兩種算法兼容問題,為了區(qū)分報文采用的算法,我們對比了報文頭設(shè)置算法標識與報文域設(shè)置標識的方案。認為報文域設(shè)置標識不改變報文結(jié)構(gòu),系統(tǒng)改動量小,各節(jié)點可按照當前的方式進行報文解包處理。方案最終在F53域設(shè)置PIN加密算法標識,在F60.3.3設(shè)置MAC算法標識。PIN加密算法標識和MAC算法標識單獨設(shè)立,支持兩者算法類型不一致的情況,具有較高的靈活性。在實際應用中,銀聯(lián)交換系統(tǒng)還需要根據(jù)發(fā)卡行的實際算法需求,通過配置參數(shù)的方法,區(qū)分給不同發(fā)卡行的報文密碼算法。
2.受理終端
受理終端與受理行之間的報文加密主要涉及PIN加解密、報文MAC計算和磁道信息加密,還包括雙算法兼容、終端密鑰管理等內(nèi)容。和交換系統(tǒng)類似,終端報文應用SM4算法同樣需要考慮SM4算法的分組長度變化帶來的問題。由于這部分規(guī)范尚未公開發(fā)布,暫不詳細介紹。