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