如何加密公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口

針對(duì)公共事業(yè)繳費(fèi)平臺(tái)實(shí)際應(yīng)用需求,我們提出了一種報(bào)文接口加密設(shè)計(jì)機(jī)制。其目的是按照用戶的要求將敏感數(shù)據(jù)進(jìn)行加密存儲(chǔ),防止非法用戶采用其它手段獲取數(shù)據(jù),同時(shí)保證合法用戶通過報(bào)文接口加密系統(tǒng)仍能正常訪問數(shù)據(jù)。

一、公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口加密算法的選擇

鑒于數(shù)據(jù)在網(wǎng)絡(luò)上傳播的速度考慮,公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口的加密設(shè)計(jì)選擇了對(duì)稱加密算法DES。

DES加密算法為密碼體制中的對(duì)稱密碼體制,又被成為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。其密鑰長(zhǎng)度為56位,明文按64位進(jìn)行分組,將分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組的加密方法,DES加密算法的特點(diǎn)是:分組比較短、密鑰太短、密碼生命周期短、運(yùn)算速度較慢。

DES工作的基本原理是,其入口參數(shù)有三個(gè);key、data、mode key為加密解密使用的密鑰,data為加密解密的數(shù)據(jù),mode為其工作模式。當(dāng)模式為加密模式時(shí),明文按照64位進(jìn)行分組,形成明文組,key用于對(duì)數(shù)據(jù)加密,當(dāng)模式為解密模式時(shí),key用于對(duì)數(shù)據(jù)解密,實(shí)際運(yùn)用中,密鑰只用到了64位中的56位。

DES加密算法具有極高安全性,到目前為止,除了用窮舉搜索法對(duì)DES算法進(jìn)行攻擊外,還沒有發(fā)現(xiàn)更有效的辦法。56位長(zhǎng)的密鑰的窮舉空間為256,這意味著如果一臺(tái)計(jì)算機(jī)的速度是每一秒鐘檢測(cè)一百萬(wàn)個(gè)密鑰,則它搜索完全部密鑰就需要將近2285年的時(shí)間,可見這是難以實(shí)現(xiàn)的。當(dāng)然,隨著科學(xué)技術(shù)的發(fā)展,當(dāng)出現(xiàn)超高速計(jì)算機(jī)后,我們可考慮把DES密鑰的長(zhǎng)度再增長(zhǎng)一些,以此來(lái)達(dá)到更高的保密程度。

二、報(bào)文接口加密算法研究與實(shí)現(xiàn)

當(dāng)報(bào)文接口采用DES算法時(shí),據(jù)發(fā)送方需先對(duì)報(bào)文頭中的帳號(hào)和密碼域使用PIN加密工作密鑰(PIK)進(jìn)行加密,再使用MAC加密工作密鑰(MAK)對(duì)報(bào)文頭和報(bào)文體進(jìn)行加押,密押經(jīng)BCD擴(kuò)展后以1 6個(gè)字節(jié)方式傳送;數(shù)據(jù)接收方用同樣的方法核押,如果核押出錯(cuò),應(yīng)停止對(duì)該報(bào)文的處理,并及時(shí)與對(duì)方聯(lián)系。

PIN加密工作密鑰(PIK)與MAC加密工作密鑰(MAK)在機(jī)構(gòu)每天的簽到交易中,由公共事業(yè)繳費(fèi)平臺(tái)產(chǎn)生并分發(fā),機(jī)構(gòu)做到及時(shí)更新。

1、網(wǎng)絡(luò)協(xié)議與報(bào)文格式

為了適應(yīng)不同計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用傳輸數(shù)據(jù)的需求,各種各樣的協(xié)議也層出不窮,以Internet協(xié)議為例,典型的網(wǎng)絡(luò)層協(xié)議有IPv4、ICMPv4;典型的傳輸層協(xié)議有TCP、UDP;而應(yīng)用層協(xié)議則多得數(shù)不過來(lái),常見的有FTP、SMTP、Telnet、SNMP、DNS、NFS等。

目前得到廣泛使用的路由協(xié)議有RIP、()SPF和BGP。另外,各種協(xié)議本身還處在不斷地變化和發(fā)展之中,許多協(xié)議都有各種各樣的擴(kuò)展和修改,幾乎所有重要的協(xié)議都有差別較大的新版本在設(shè)計(jì)之中。

不同的協(xié)議不僅在功能上有很大的差異,它們的報(bào)文格式也大不相同。比如RIP協(xié)議只有一種報(bào)文,BGP協(xié)議有四種報(bào)文;()SPF協(xié)議共有五種報(bào)文,除了Hello報(bào)文的格式比較簡(jiǎn)單以外,其它四種OSPF報(bào)文的格式都很復(fù)雜。

報(bào)文格式設(shè)計(jì)原則,其在設(shè)計(jì)時(shí)應(yīng)該具備簡(jiǎn)單性原則、通用性原則、實(shí)用性原則和可擴(kuò)充性原則,才能夠滿足實(shí)際應(yīng)用的需要。聯(lián)機(jī)報(bào)文結(jié)構(gòu)由報(bào)文長(zhǎng)度、報(bào)文頭、報(bào)文體和密押組成。報(bào)文頭是每個(gè)報(bào)文都固定的部分,使用固定長(zhǎng)度的字節(jié)直接表示,主要包括報(bào)文信息類型、交易碼等,其中的信息類型用于區(qū)分報(bào)文是請(qǐng)求還是響應(yīng),交易碼用于區(qū)分交易類型。

報(bào)文頭結(jié)構(gòu)如表1所示:

如何加密公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口

作為交易請(qǐng)求方,請(qǐng)求方交易日期十請(qǐng)求方交易流水號(hào)十請(qǐng)求機(jī)構(gòu)代碼應(yīng)可唯一確定一筆交易。

2、PIN加密算法

(1)密鑰種類

系統(tǒng)對(duì)傳輸數(shù)據(jù)的加密涉及到的密鑰包括主密鑰( MK)、工作密鑰(WorkingKey,簡(jiǎn)寫作WK)。

加密機(jī)主密鑰(MK)用于對(duì)工作密鑰(WK)進(jìn)行加密保護(hù),每臺(tái)終端設(shè)備(或接人機(jī)構(gòu)前置系統(tǒng))只設(shè)置一個(gè)MK。MK必須有安全保護(hù)措施,只能寫入并參與運(yùn)算,不能被讀取并存儲(chǔ)在終端硬件中;MK由三段合成,應(yīng)由不同人員掌握。

工作密鑰(WK)分為PIN加密工作密鑰(PIK)和MAC加密工作密鑰(MAK)兩類,由機(jī)構(gòu)或終端簽到時(shí)從平臺(tái)獲得。各密鑰關(guān)系如表2所示:

如何加密公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口

(2)密鑰分發(fā)

工作密鑰的分發(fā)在簽到交易時(shí)完成,具體過程如下:首先機(jī)構(gòu)(或終端)向系統(tǒng)簽到時(shí),系統(tǒng)即可判別來(lái)自哪個(gè)機(jī)構(gòu)(或終端),在系統(tǒng)的應(yīng)答報(bào)文中,系統(tǒng)使用相應(yīng)的主密鑰對(duì)生成的工作密鑰進(jìn)行加密。機(jī)構(gòu)收到應(yīng)答后,即可以用存儲(chǔ)的主密鑰對(duì)收到的工作密鑰的密文進(jìn)行解密,從而獲得PIK和MAK。

(3)PIN加密算法

在支付類報(bào)文中,協(xié)議規(guī)定要使用PIK對(duì)個(gè)人身份識(shí)別符(PIN)也就是密碼進(jìn)行加密,加密算法采用DES算法。目前銀行卡規(guī)范中,PIN的長(zhǎng)度為6位,故本文將協(xié)議中PIN的長(zhǎng)度設(shè)為6位,但允許擴(kuò)充到12位。

PIN用數(shù)字字符表示,格式應(yīng)符合ISO公布的ANSI X9.8 Format兩種格式之一。

(1)不帶主帳號(hào)信息-PAN格式1如表3所示:

如何加密公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口

(2)帶主帳號(hào)信息。需要說明的是,此處要加密的塊是PIN和PAN的異或。而PAN指的主帳號(hào)信息,將從帳號(hào)信息中取。PAN格式2如表4所示:

如何加密公共事業(yè)繳費(fèi)平臺(tái)報(bào)文接口

具體12位如何取,說明如下:

手輸卡號(hào):

如為手輸卡號(hào),從所輸卡號(hào)右邊數(shù)第二位開始,向左取1 2位,作為參與PIN加、解密的PAN。

刷卡方式:

如為刷卡方式,從磁道2(35域)分隔符‘一’左邊第二位開始,向左取12個(gè)字符,作為參與PIN加窿的PAN;如只有磁道3(36域),則從磁道3分隔符‘=’左邊第二位開始,向左取12個(gè)字符,作為參與PIN加、解密的PAN。

3、MAC加密算法

在形成報(bào)文后,即PIN加密完成后,使用MAK對(duì)報(bào)文頭和報(bào)文體進(jìn)行加押,密押生成后,以16個(gè)字節(jié)方式附在報(bào)文體后,進(jìn)行傳送;數(shù)據(jù)接收方用同樣的方法核押,如果核押出錯(cuò),應(yīng)停止對(duì)該報(bào)文的處理,并及時(shí)與對(duì)方聯(lián)系。具體步驟如下:

(1)在欲發(fā)送給系統(tǒng)的報(bào)文中,取報(bào)文頭和報(bào)文體構(gòu)成MAC ELEMEMENT BLOCK (MAB)。

(2)對(duì)MAB,按每8個(gè)字節(jié)做異或(不管信息中的字符格式),如果最后不滿8個(gè)字節(jié),則添加"OXOO"。

(3)將異或運(yùn)算后的最后8個(gè)字節(jié)(RESUI.TBLOCK)轉(zhuǎn)換成16個(gè)HEXDECIMAL;

(4)取前8個(gè)字節(jié)用MAK加密;

(5)將加密后的結(jié)果與后8個(gè)字節(jié)異或;

(6)用異或的結(jié)果TEMP Bl,()CK再進(jìn)行一次DES運(yùn)算。

(7)將運(yùn)算后的結(jié)果(ENC BL()CK2)轉(zhuǎn)換成 16個(gè)HEXDECIMAI。

(8)取前此16字節(jié)作為MAC值。即密押為:8456BICD5A3F8484。

小知識(shí)之密押

密押(test key)一般在辦理銀行票據(jù)業(yè)務(wù)時(shí)常見使用。