代 乾 坤
(公安部第三研究所 上海 201204)
沒(méi)有網(wǎng)絡(luò)安全就沒(méi)有國(guó)家安全,就沒(méi)有經(jīng)濟(jì)社會(huì)穩(wěn)定運(yùn)行,廣大人民群眾利益也難以得到保障。事實(shí)上,重大的網(wǎng)絡(luò)安全事件對(duì)世界范圍的網(wǎng)絡(luò)安全威脅和風(fēng)險(xiǎn)日益突出。如Facebook泄露5 000萬(wàn)用戶(hù)數(shù)據(jù),一度造成該公司市值下跌1 000億美元。2017年,WannaCry勒索病毒使得至少150個(gè)國(guó)家遭受了攻擊,受害的電腦超過(guò)了30萬(wàn)臺(tái),造成損失達(dá)80億美元。時(shí)至今日,勒索病毒一直威脅著網(wǎng)絡(luò)信息安全。
目前的網(wǎng)絡(luò)應(yīng)用大部分基于TCP/IP協(xié)議設(shè)計(jì)開(kāi)發(fā),TCP/IP協(xié)議最初設(shè)計(jì)并非為安全通信設(shè)計(jì),所以在用戶(hù)認(rèn)證授權(quán)、數(shù)據(jù)安全傳輸?shù)仍S多安全機(jī)制方面存在大量的安全漏洞,惡意第三方可以通過(guò)偵聽(tīng)破譯、截獲、篡改等非法手段,對(duì)業(yè)務(wù)應(yīng)用系統(tǒng)進(jìn)行破壞[1]。因此政務(wù)系統(tǒng)的數(shù)據(jù)敏感性、網(wǎng)絡(luò)的虛擬性和開(kāi)放性決定了包括Web應(yīng)用系統(tǒng)在內(nèi)的安全需要強(qiáng)有力的身份認(rèn)證和數(shù)據(jù)安全傳輸機(jī)制來(lái)保證。本文設(shè)計(jì)的安全傳輸系統(tǒng)作為某部數(shù)據(jù)備案系統(tǒng)的一部分,錄入的數(shù)據(jù)較為敏感,因此數(shù)據(jù)的安全傳輸尤為重要。為了能夠讓備案數(shù)據(jù)在系統(tǒng)間進(jìn)行安全傳輸,設(shè)計(jì)了本系統(tǒng)。
備案系統(tǒng)采用“門(mén)店-市-省-部”四級(jí)部署模式,備案客戶(hù)端部署在各企業(yè)門(mén)店,根據(jù)各省具體情況,可選擇省級(jí)部署或者“市-省”兩級(jí)部署,各門(mén)店通過(guò)備案客戶(hù)端采集備案數(shù)據(jù),完成數(shù)據(jù)備案,備案客戶(hù)端采集到的數(shù)據(jù)備案到市級(jí)數(shù)據(jù)平臺(tái),各地市級(jí)數(shù)據(jù)平臺(tái)通過(guò)專(zhuān)用安全傳輸系統(tǒng),上報(bào)備案數(shù)據(jù)到省級(jí)數(shù)據(jù)平臺(tái),省級(jí)數(shù)據(jù)平臺(tái)在接收到各地市上報(bào)的數(shù)據(jù)后,放入消息隊(duì)列,完成解密、解析并向部級(jí)數(shù)據(jù)平臺(tái)報(bào)送,系統(tǒng)部署架構(gòu)見(jiàn)圖1。本文針對(duì)“市-省”“省-部”之間的數(shù)據(jù)安全交換機(jī)制進(jìn)行設(shè)計(jì),并最終設(shè)計(jì)實(shí)現(xiàn)架構(gòu)中的安全傳輸系統(tǒng)。
圖1 數(shù)據(jù)交換網(wǎng)絡(luò)拓?fù)鋱D
安全傳輸系統(tǒng)采用多層架構(gòu)設(shè)計(jì),使用TCP/IP交互協(xié)議。根據(jù)各級(jí)單位業(yè)務(wù)量可采用均衡負(fù)載部署,均衡負(fù)載使用Nginx做業(yè)務(wù)分發(fā),底層多節(jié)點(diǎn)服務(wù)集群。為了有效提高數(shù)據(jù)傳輸效率,接收到的待傳輸數(shù)據(jù)采用ActiveMQ消息中間件臨時(shí)存儲(chǔ)數(shù)據(jù)。MyBatis作為數(shù)據(jù)庫(kù)ORM框架,Durid作為數(shù)據(jù)庫(kù)連接池,Redis緩存數(shù)據(jù)庫(kù)資源。底層數(shù)據(jù)存儲(chǔ)在磁盤(pán)陣列中,數(shù)據(jù)庫(kù)采用MySQL主從模式部署,KeepAlived保證主從切換機(jī)制。系統(tǒng)架構(gòu)見(jiàn)圖2。
圖2 系統(tǒng)架構(gòu)
各級(jí)數(shù)據(jù)平臺(tái)配備本級(jí)安全傳輸系統(tǒng),平臺(tái)需要上報(bào)或接收的數(shù)據(jù),通過(guò)安全傳輸系統(tǒng)完成。安全傳輸系統(tǒng)在接收到平臺(tái)傳送的數(shù)據(jù)后,按照給定的目的地址完成安全傳送,到達(dá)指定目的地址后,由目的地址數(shù)據(jù)平臺(tái)完成數(shù)據(jù)解密、解析、存儲(chǔ)、轉(zhuǎn)發(fā)工作。例如,圖3有數(shù)據(jù)平臺(tái)A、數(shù)據(jù)平臺(tái)B,分別部署了安全傳輸系統(tǒng)A、安全傳輸系統(tǒng)B。數(shù)據(jù)平臺(tái)A與數(shù)據(jù)平臺(tái)B的數(shù)據(jù)交互流程如下:
圖3 安全傳輸系統(tǒng)工作流程示意圖
數(shù)據(jù)平臺(tái)A上報(bào)數(shù)據(jù)到數(shù)據(jù)平臺(tái)B:
1) 數(shù)據(jù)平臺(tái)A把需要上報(bào)的數(shù)據(jù)通過(guò)圖3中流程1,明文交給安全傳輸系統(tǒng)A,并指定要傳送的目的地址數(shù)據(jù)平臺(tái)B,安全傳輸系統(tǒng)A把要傳輸數(shù)據(jù)放入消息中間件。
2) 安全傳輸系統(tǒng)A在接收到數(shù)據(jù)平臺(tái)A的傳送指令后,根據(jù)目的地址,與安全傳輸系統(tǒng)B建立雙向握手。
3) 握手完成后,通過(guò)生成的對(duì)稱(chēng)密鑰,完成數(shù)據(jù)加密。
4) 加密后的數(shù)據(jù)通過(guò)圖3中流程5,完成到安全傳輸系統(tǒng)B的發(fā)送。
5) 安全傳輸系統(tǒng)B在接收密文后,放入消息中間件,交給消息驅(qū)動(dòng)Bean進(jìn)行數(shù)據(jù)解密、解析。
6) 解密后的明文數(shù)據(jù)放入消息中間件,消息中間件的消息驅(qū)動(dòng)Bean通過(guò)圖3中的流程3完成到數(shù)據(jù)平臺(tái)B的傳輸。
7) 數(shù)據(jù)平臺(tái)B在接收到數(shù)據(jù)后,完成解析、入庫(kù),至此數(shù)據(jù)安全上報(bào)完成。
數(shù)據(jù)平臺(tái)B下發(fā)數(shù)據(jù)到數(shù)據(jù)平臺(tái)A:
1) 數(shù)據(jù)平臺(tái)B把需要下發(fā)的數(shù)據(jù)通過(guò)圖3中流程4,明文交給安全傳輸系統(tǒng)B,并指定要傳送的目的地址數(shù)據(jù)平臺(tái)A,安全傳輸系統(tǒng)B把要傳輸數(shù)據(jù)放入消息中間件。
2) 安全傳輸系統(tǒng)B在接收到數(shù)據(jù)平臺(tái)B的傳送指令后,根據(jù)目的地址,與安全傳輸系統(tǒng)A建立雙向握手。
3) 握手完成后,通過(guò)生成的對(duì)稱(chēng)密鑰,完成數(shù)據(jù)加密。
4) 加密后的數(shù)據(jù)通過(guò)圖3中流程5,完成到安全傳輸系統(tǒng)A的發(fā)送。
5) 安全傳輸系統(tǒng)A在接收密文后,放入消息中間件,交給消息驅(qū)動(dòng)Bean進(jìn)行數(shù)據(jù)解密、解析。
6) 解密后的明文數(shù)據(jù)放入消息中間件,消息中間件的消息驅(qū)動(dòng)Bean通過(guò)圖3中的流程2完成到數(shù)據(jù)平臺(tái)A的傳輸。
7) 數(shù)據(jù)平臺(tái)A在接收到數(shù)據(jù)后,完成解析、入庫(kù),至此數(shù)據(jù)安全下發(fā)完成。
中間人攻擊又稱(chēng)“MITM攻擊”(Man-in-the-Middle Attack),是一種間接的入侵式攻擊,通過(guò)如ARP欺騙的方式收到客戶(hù)端原應(yīng)發(fā)給服務(wù)器的連接請(qǐng)求,再通過(guò)對(duì)服務(wù)器證書(shū)篡改,獲得客戶(hù)端的信任,同時(shí)采取一系列技術(shù)手段最終得到被加密的通信數(shù)據(jù)。顯然,這是在通信雙方毫不知情的情況下秘密進(jìn)行的[2-3]。
在實(shí)施中間人攻擊時(shí),攻擊者攔截客戶(hù)端發(fā)送給服務(wù)器的請(qǐng)求,然后偽裝成客戶(hù)端與服務(wù)器進(jìn)行通信,將服務(wù)器返回給客戶(hù)端的內(nèi)容發(fā)送給客戶(hù)端,偽裝成服務(wù)器與客戶(hù)端進(jìn)行通信。通過(guò)這個(gè)中間位置,便可以獲取到客戶(hù)端與服務(wù)器之間通信的所有內(nèi)容。
防止中間人劫持的有效措施是能夠校驗(yàn)客戶(hù)端與服務(wù)器端的真實(shí)性。安全傳輸系統(tǒng)為了能夠在兩個(gè)安全傳輸系統(tǒng)間完成身份的真實(shí)性驗(yàn)證,增加了預(yù)分配密鑰作為間接憑證。在雙向握手過(guò)程中,隨機(jī)數(shù)通過(guò)密文方式傳輸,傳輸時(shí)增加消息鑒別碼,對(duì)隨機(jī)數(shù)預(yù)分配密鑰加密后進(jìn)行SM3雜湊值計(jì)算得到消息鑒別碼,因?yàn)殡S機(jī)數(shù)密文傳輸,保證了消息鑒別碼的不可偽造,從而保證了中間人獲取通信明文的可能,達(dá)到防止中間人攻擊的目的。
重放攻擊(Replay Attacks)也稱(chēng)為回放攻擊,即攻擊者把以前竊聽(tīng)到消息或消息片段原封不動(dòng)地重新發(fā)送給接收方達(dá)到對(duì)主體進(jìn)行欺騙的攻擊行為,其主要用于破壞認(rèn)證正確性。重放攻擊是攻擊行為中危害較為嚴(yán)重的一種[4-5]。假如網(wǎng)絡(luò)賬戶(hù)中的資金轉(zhuǎn)出操作,一條消息表示用戶(hù)發(fā)送了一個(gè)轉(zhuǎn)賬請(qǐng)求,攻擊者在竊聽(tīng)到消息體后,可以通過(guò)多次發(fā)送這條消息而偷竊賬戶(hù)余額,從而使客戶(hù)賬戶(hù)遭受損失。
安全傳輸系統(tǒng)中為了防止重放攻擊進(jìn)行了設(shè)計(jì),增加了數(shù)據(jù)新鮮性檢查機(jī)制。數(shù)據(jù)傳輸發(fā)起方在雙向握手及發(fā)送數(shù)據(jù)過(guò)程中,增加了時(shí)間戳請(qǐng)求參數(shù),且時(shí)間戳以密文方式傳輸,只有取得預(yù)分配密鑰才能對(duì)密鑰進(jìn)行解析。接收方在接收到數(shù)據(jù)后,進(jìn)行解密,并判斷數(shù)據(jù)是否為新鮮發(fā)送的數(shù)據(jù)。
TCP/IP協(xié)議組是目前使用最廣泛的網(wǎng)絡(luò)互聯(lián)協(xié)議,作為Internet使用的標(biāo)準(zhǔn)協(xié)議集,是黑客實(shí)施網(wǎng)絡(luò)攻擊的重點(diǎn)目標(biāo)。SSL安全傳輸協(xié)議能夠認(rèn)證客戶(hù)端與服務(wù)器,在客戶(hù)端服務(wù)器間建立加密通道;加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊??;維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被篡改。SSL協(xié)議可分為三層:SSL記錄協(xié)議(SSL Record Protoco1),它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Handshake Protoco1),它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通信雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰。SSL警報(bào)協(xié)議,客戶(hù)機(jī)和服務(wù)器發(fā)現(xiàn)錯(cuò)誤時(shí),向?qū)Ψ桨l(fā)送一個(gè)警報(bào)消息,如果是致命錯(cuò)誤,則算法會(huì)立即關(guān)閉SSL連接,刪除中間數(shù)據(jù)[6]。SSL保證TCP/IP的通信應(yīng)用程序間的隱私保護(hù)與完整性,Internet的超文本傳輸協(xié)議HTTP可以使用SSL來(lái)實(shí)現(xiàn)安全的通信,即HTTPS。
超文本傳輸安全協(xié)議(Hypertext Transfer Protocol Secure,HTTPS)是以安全為目標(biāo)的HTTP通道,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL。數(shù)據(jù)安全傳輸系統(tǒng)采用HTTPS協(xié)議,建立會(huì)話(huà)后,采用SM4國(guó)密算法進(jìn)行數(shù)據(jù)加解密。
根據(jù)SSL協(xié)議的優(yōu)點(diǎn),本文設(shè)計(jì)基于RSA服務(wù)器證書(shū)通過(guò)HTTPS請(qǐng)求建立SSL通道,通過(guò)SSL通道交換系統(tǒng)隨機(jī)數(shù)密文,利用系統(tǒng)預(yù)分配密鑰解密密文得到隨機(jī)數(shù),由雙方隨機(jī)數(shù)生成SM4加密密鑰。至此基于SSL通道的雙向會(huì)話(huà)連接過(guò)程結(jié)束,系統(tǒng)間建立了采用國(guó)密算法的數(shù)據(jù)加密機(jī)制。
安全傳輸系統(tǒng)間通過(guò)SSL交換隨機(jī)數(shù),隨機(jī)數(shù)通過(guò)系統(tǒng)預(yù)分配密鑰加密傳輸。以安全傳輸系統(tǒng)A(簡(jiǎn)稱(chēng)系統(tǒng)A)與安全傳輸系統(tǒng)B(簡(jiǎn)稱(chēng)系統(tǒng)B)的雙向握手過(guò)程為例,獲取A系統(tǒng)發(fā)送的隨機(jī)數(shù)密文ARM,用預(yù)分配密鑰SM4解密后得到A系統(tǒng)隨機(jī)數(shù)AR,同時(shí)B系統(tǒng)生成隨機(jī)數(shù)BR,AR與BR異或后得到加密密文SKB,同時(shí)返回B系統(tǒng)生成的隨機(jī)數(shù)密文BRM。A系統(tǒng)收到B系統(tǒng)響應(yīng)后,獲取B系統(tǒng)響應(yīng)的隨機(jī)數(shù)密文BRM,用預(yù)分配密鑰SM4解密后得到B系統(tǒng)隨機(jī)數(shù)BR,AR與BR異或后得到加密密文SKA,SKA與SKB一樣,至此雙向握手建立完成,A系統(tǒng)和B系統(tǒng)之間的安全傳輸通道建立完成。A系統(tǒng)與B系統(tǒng)的雙向握手過(guò)程(詳見(jiàn)圖4)如下:
圖4 安全傳輸系統(tǒng)雙向握手流程
1) 系統(tǒng)A生成隨機(jī)數(shù)AR=Random(),并對(duì)隨機(jī)數(shù)AR用預(yù)分配密鑰加密得到ARM。
ARM=SM4ENC(KEY1,AR)
2) 計(jì)算請(qǐng)求MAC值A(chǔ)Hmac,獲取時(shí)間戳AT。
AHmac=SM3(AR)
AT=new NOW()
3) HTTPS發(fā)送請(qǐng)求到系統(tǒng)B。
4) 系統(tǒng)B完成接收,解析得到ARM、AHmac、AT。
5) 預(yù)分配密鑰解密ARM,得到系統(tǒng)A的生成的隨機(jī)數(shù)ARL。
ARL=SM4DEC(KEY1,ARM)
6) 計(jì)算AR的MAC值A(chǔ)HmacL,判斷AHmac與AHmacL是否一致,不一致返回完整性校驗(yàn)失敗,握手失敗。
AHmacL=SM3(ARL)
7) 獲取服務(wù)器時(shí)間NT,計(jì)算時(shí)間戳AT與服務(wù)器時(shí)間的差值是否大于60 s,大于60 s返回請(qǐng)求超時(shí)。
NT=new NOW()
AT-NT>60 s
8) 獲取系統(tǒng)B隨機(jī)數(shù)BR=Random(),分別計(jì)算BR密文BRM、BR的MAC值BHmac。
BRM=SM4ENC(KEY1,BR)
BHmac=SM3(BR)
9) 計(jì)算會(huì)話(huà)密鑰SKB并放入內(nèi)存。
SKB=SM4ENC(KEY2,ARLXORBR)
10) 響應(yīng)并返回BRM、BHmac。
11) 系統(tǒng)A獲取響應(yīng)參數(shù)BRM、BHmac,解密BRM得到BRL。
BRL=SM4DEC(KEY1,BRM)
12) 計(jì)算BR的MAC值BHmacL。
BHmacL=SM3(BRL)
13) 計(jì)算BRL的MAC值BHmacL,判斷BHmac與BHmacL是否一致,不一致返回完整性校驗(yàn)失敗,握手失敗。
BHmacL=SM3(BRL)
14) 計(jì)算會(huì)話(huà)密鑰SKA放入內(nèi)存,至此雙向握手結(jié)束。
SKA=SM4ENC(KEY2,ARXORBRL)
SM4是我國(guó)商用分組密碼算法。在商用密碼體系中,SM4是一種對(duì)稱(chēng)加密算法,其算法公開(kāi),分組長(zhǎng)度與密鑰長(zhǎng)度均為128 bit,加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu),S盒為固定的8 bit輸入8 bit輸出[7-8]。
安全傳輸系統(tǒng)采用HTTPS進(jìn)行隨機(jī)數(shù)交換,交換后的隨機(jī)數(shù)異或后采用SM4加密后得到會(huì)話(huà)密鑰,系統(tǒng)采用ECB模式進(jìn)行傳輸數(shù)據(jù)的SM4加密。
針對(duì)某政務(wù)系統(tǒng)數(shù)據(jù)上報(bào)、下發(fā)的需求,采用多層架構(gòu)設(shè)計(jì)及TCP/IP交互協(xié)議,設(shè)計(jì)開(kāi)發(fā)了基于SSL及國(guó)密算法的數(shù)據(jù)安全傳輸系統(tǒng)。通過(guò)研究SSL、SM3、SM4、防中間人攻擊、防重放攻擊等關(guān)鍵技術(shù),設(shè)計(jì)一套通過(guò)SSL通道交換預(yù)分配密鑰加密的隨機(jī)數(shù),完成系統(tǒng)間雙向握手,建立會(huì)話(huà)過(guò)程的系統(tǒng)實(shí)現(xiàn)機(jī)制。采用ActiveMQ、MyBatis、Durid、Redis、業(yè)務(wù)集群等技術(shù),有效保證了系統(tǒng)的穩(wěn)定高效傳輸。系統(tǒng)采用國(guó)密算法SM4,既保證數(shù)據(jù)的安全,又因?yàn)椴捎脤?duì)稱(chēng)加密算法,保證了數(shù)據(jù)加解密傳輸效率。通過(guò)時(shí)間戳有效防止應(yīng)用數(shù)據(jù)重放攻擊,通過(guò)雜湊值有效防止應(yīng)用數(shù)據(jù)中間人攻擊,增強(qiáng)了系統(tǒng)的安全性,達(dá)到了數(shù)據(jù)安全傳輸?shù)脑O(shè)計(jì)目的。