一、 應用場景
如圖1所示,對主機A與主機B間的(de)TCP的(de)通信進行加解密處理。即主機A的(de)TCP數據通過網絡加密結點對其TCP數據加密後傳送給網絡,數據包經互聯網傳送給主機B端的(de)網絡加解密結點進行解密處理,處理後的(de)數據送給主機B 。反向同理。

圖1 應用場景圖
二、 方案1 固定密鑰的(de)實現
在(zài)網絡加解密的(de)結點将TCP報文的(de)序号按某一算法進行加密處理,另外将TCP數據報文的(de)DATA域的(de)數據進行亂序處理,從而(ér)實現在(zài)對TCP數據流報文進行發送序号亂序的(de)同時(shí)實現了(le/liǎo)對報文内容的(de)亂序加密處理。
具體硬件加密方式:
網絡加解密結點解析所有經過它的(de)數據流的(de)報文,識别報文是(shì)否爲(wéi / wèi)TCP/IPv4的(de)類型報文,若是(shì)則根據圖2所示的(de)TCP頭部格式,在(zài)傳送TCP數據時(shí),将序号字段(Sequence Number)作爲(wéi / wèi)密鑰進行加密處理。否則數據會直接轉發輸出(chū)。

圖2 TCP頭部格式
另外,網絡加解密結點會針對其TCP類型報文的(de)數據部分根據硬件處理格式進行亂序處理,從而(ér)實現數據加密的(de)功能。如圖3所示,硬件是(shì)将數據幀以(yǐ)128b(16B)的(de)形式進行組織。

圖3 硬件處理幀形式
根據網絡加解密結點對數據處理的(de)特點,加密可以(yǐ)将每拍TCP報文數據部分的(de)字節數據高低4位對調來(lái)實現,如圖4所示。

圖4 數據位對調亂序示意圖
硬件實現的(de)難點:
- 1) TCP報文解析(IPV4);
- 2) TCP的(de)校驗和(hé / huò)重計算;
- 3) 線速實現加密處理及恢複。
優點:
- 1) 可實現加解密處理;
- 2) 可以(yǐ)保證處理延時(shí)。
三、 方案2 動态密鑰的(de)實現
動态密鑰是(shì)基于(yú)TCP類型的(de)數據在(zài)握手的(de)過程中傳遞,即在(zài)建立TCP的(de)握手時(shí)協商此對應TCP流對應的(de)密鑰;在(zài)連接結束時(shí),删除其密鑰信息,在(zài)下次建立時(shí)随機獲取密鑰池中的(de)新的(de)密鑰來(lái)進行加密通信。處理過程如圖5、6所示。

圖5 基于(yú)TCP建立的(de)密鑰協商過程圖
在(zài)TCP建立連接時(shí),網絡加解密結點會監測,輸入報文是(shì)否主SYN的(de)報文,若是(shì),則從密鑰池中随機申請一個(gè)密鑰(KEY),将密鑰信息随建立連接的(de)報文發送給接收端,接收端接收密鑰信息,在(zài)接收到(dào)連接響應報文時(shí),将确認的(de)密鑰信息再返回給發送端,以(yǐ)确認其已經正确協商密鑰可以(yǐ)正常通信。
在(zài)TCP結束連接時(shí),當結束發送端(主機A)發送FIN報文時(shí),網絡加密結點先不(bù)立刻注銷密鑰信息,而(ér)是(shì)等待主機B發送結束時(shí)才注銷密鑰信息,因爲(wéi / wèi)主機A在(zài)申請結束連接時(shí),主機B可能還會向主機A發送TCP的(de)數據,因此,需要(yào / yāo)等待主機B也(yě)發送結束報文時(shí)才進行密鑰的(de)注銷。

圖6 基于(yú)TCP結束的(de)密鑰取消過程圖
密鑰池爲(wéi / wèi)網絡加密結點内部存儲的(de)密鑰的(de)集合,密鑰池内有多種密鑰,爲(wéi / wèi)了(le/liǎo)保證通信的(de)安全性,在(zài)每條TCP流進行通信時(shí),都會選用不(bù)同的(de)密鑰進行加解密處理。從而(ér)可以(yǐ)更細粒度的(de)保證每條TCP數據流的(de)安全性。
同方案1相同在(zài)針對密鑰加密的(de)同時(shí)還可以(yǐ)實現對報文内容的(de)亂序處理,從而(ér)進一步保證其數據的(de)安全性。
四、 方案2 實現的(de)優化
在(zài)實現時(shí),由于(yú)每條TCP的(de)建立都會随機的(de)在(zài)密鑰池中選擇密鑰進行連接且鏈路可以(yǐ)存在(zài)很長時(shí)間無數據交互的(de)情況或鏈路出(chū)現故障無法正常通信的(de)情況,因此在(zài)實現時(shí)針對每條流設定一個(gè)計時(shí)器,即若有此流的(de)報文交互則不(bù)斷更新其時(shí)間值到(dào)最新的(de)時(shí)間點,若某條流長時(shí)間無數據通信時(shí),則将此流對應的(de)流表及協商的(de)密鑰删除,在(zài)恢複通信時(shí)重新協商密鑰進行通信,如圖7所示。
當流A的(de)數據經過網絡加密節點時(shí)則更新其流A所對應的(de)計時(shí)器,流B和(hé / huò)流C則保持不(bù)變,若已經達到(dào)超時(shí)的(de)時(shí)間,則更改流狀态,将此流表項标記爲(wéi / wèi)無效。若此時(shí)又有對應流表的(de)數據到(dào)來(lái)則使用默認密鑰進行加密處理,同時(shí)通過TCP頭的(de)狀态位的(de)保留位,如圖2所示,來(lái)标記其加密的(de)密鑰狀态,從而(ér)是(shì)接收端也(yě)可以(yǐ)通過相同密鑰解密。

圖7 流表狀态管理
以(yǐ)上(shàng)爲(wéi / wèi)TCP的(de)兩種加密的(de)方案,方案1爲(wéi / wèi)固定密鑰實現方式,其實現比較簡單,加密效果則不(bù)太安全;方案2實現比較複雜,可以(yǐ)針對不(bù)同的(de)TCP流,選用不(bù)同的(de)加密方法,從而(ér)可以(yǐ)更細粒度的(de)對通信内容進行加密處理,從而(ér)通信内容會更加安全。另外,兩種實現方案都需要(yào / yāo)硬件對報文進行解析、報文亂序移位處理及報文TCP頭及IP頭部校驗和(hé / huò)進行重新計算處理,因此硬件資源開銷比較大(dà),但其可以(yǐ)保證加密處理的(de)延時(shí)。