一、 應用(yòng)場景
如圖1所示,對(duì)主機A與主機B間的TCP的通信進行加解密處理(lǐ)。即主機A的TCP數據通過網絡加密結點對(duì)其TCP數據加密後傳送給網絡,數據包經互聯網傳送給主機B端的網絡加解密結點進行解密處理(lǐ),處理(lǐ)後的數據送給主機B 。反向同理(lǐ)。
圖1 應用(yòng)場景圖
二、 方案1 固定密鑰的實現(xiàn)
在網絡加解密的結點将TCP報(bào)文(wén)的序号按某一算(suàn)法進行加密處理(lǐ),另外(wài)将TCP數據報(bào)文(wén)的DATA域的數據進行亂序處理(lǐ),從(cóng)而實現(xiàn)在對(duì)TCP數據流報(bào)文(wén)進行發送序号亂序的同時(shí)實現(xiàn)了(le)對(duì)報(bào)文(wén)内容的亂序加密處理(lǐ)。
具體硬件加密方式:
網絡加解密結點解析所有經過它的數據流的報(bào)文(wén),識别報(bào)文(wén)是否爲TCP/IPv4的類型報(bào)文(wén),若是則根據圖2所示的TCP頭部格式,在傳送TCP數據時(shí),将序号字段(Sequence Number)作(zuò)爲密鑰進行加密處理(lǐ)。否則數據會(huì)直接轉發輸出。
圖2 TCP頭部格式
另外(wài),網絡加解密結點會(huì)針對(duì)其TCP類型報(bào)文(wén)的數據部分根據硬件處理(lǐ)格式進行亂序處理(lǐ),從(cóng)而實現(xiàn)數據加密的功能(néng)。如圖3所示,硬件是将數據幀以128b(16B)的形式進行組織。
圖3 硬件處理(lǐ)幀形式
根據網絡加解密結點對(duì)數據處理(lǐ)的特點,加密可以将每拍(pāi)TCP報(bào)文(wén)數據部分的字節數據高(gāo)低(dī)4位對(duì)調來(lái)實現(xiàn),如圖4所示。
圖4 數據位對(duì)調亂序示意圖
硬件實現(xiàn)的難點:
- 1) TCP報(bào)文(wén)解析(IPV4);
- 2) TCP的校驗和(hé)重計(jì)算(suàn);
- 3) 線速實現(xiàn)加密處理(lǐ)及恢複。
優點:
- 1) 可實現(xiàn)加解密處理(lǐ);
- 2) 可以保證處理(lǐ)延時(shí)。
三、 方案2 動态密鑰的實現(xiàn)
動态密鑰是基于TCP類型的數據在握手的過程中傳遞,即在建立TCP的握手時(shí)協商此對(duì)應TCP流對(duì)應的密鑰;在連接結束時(shí),删除其密鑰信息,在下(xià)次建立時(shí)随機獲取密鑰池中的新的密鑰來(lái)進行加密通信。處理(lǐ)過程如圖5、6所示。
圖5 基于TCP建立的密鑰協商過程圖
在TCP建立連接時(shí),網絡加解密結點會(huì)監測,輸入報(bào)文(wén)是否主SYN的報(bào)文(wén),若是,則從(cóng)密鑰池中随機申請(qǐng)一個密鑰(KEY),将密鑰信息随建立連接的報(bào)文(wén)發送給接收端,接收端接收密鑰信息,在接收到(dào)連接響應報(bào)文(wén)時(shí),将确認的密鑰信息再返回給發送端,以确認其已經正确協商密鑰可以正常通信。
在TCP結束連接時(shí),當結束發送端(主機A)發送FIN報(bào)文(wén)時(shí),網絡加密結點先不立刻注銷密鑰信息,而是等待主機B發送結束時(shí)才注銷密鑰信息,因爲主機A在申請(qǐng)結束連接時(shí),主機B可能(néng)還會(huì)向主機A發送TCP的數據,因此,需要等待主機B也(yě)發送結束報(bào)文(wén)時(shí)才進行密鑰的注銷。
圖6 基于TCP結束的密鑰取消過程圖
密鑰池爲網絡加密結點内部存儲的密鑰的集合,密鑰池内有多種密鑰,爲了(le)保證通信的安全性,在每條TCP流進行通信時(shí),都會(huì)選用(yòng)不同的密鑰進行加解密處理(lǐ)。從(cóng)而可以更細粒度的保證每條TCP數據流的安全性。
同方案1相同在針對(duì)密鑰加密的同時(shí)還可以實現(xiàn)對(duì)報(bào)文(wén)内容的亂序處理(lǐ),從(cóng)而進一步保證其數據的安全性。
四、 方案2 實現(xiàn)的優化
在實現(xiàn)時(shí),由于每條TCP的建立都會(huì)随機的在密鑰池中選擇密鑰進行連接且鏈路可以存在很(hěn)長時(shí)間無數據交互的情況或鏈路出現(xiàn)故障無法正常通信的情況,因此在實現(xiàn)時(shí)針對(duì)每條流設定一個計(jì)時(shí)器,即若有此流的報(bào)文(wén)交互則不斷更新其時(shí)間值到(dào)最新的時(shí)間點,若某條流長時(shí)間無數據通信時(shí),則将此流對(duì)應的流表及協商的密鑰删除,在恢複通信時(shí)重新協商密鑰進行通信,如圖7所示。
當流A的數據經過網絡加密節點時(shí)則更新其流A所對(duì)應的計(jì)時(shí)器,流B和(hé)流C則保持不變,若已經達到(dào)超時(shí)的時(shí)間,則更改流狀态,将此流表項标記爲無效。若此時(shí)又有對(duì)應流表的數據到(dào)來(lái)則使用(yòng)默認密鑰進行加密處理(lǐ),同時(shí)通過TCP頭的狀态位的保留位,如圖2所示,來(lái)标記其加密的密鑰狀态,從(cóng)而是接收端也(yě)可以通過相同密鑰解密。
圖7 流表狀态管理(lǐ)
以上(shàng)爲TCP的兩種加密的方案,方案1爲固定密鑰實現(xiàn)方式,其實現(xiàn)比較簡單,加密效果則不太安全;方案2實現(xiàn)比較複雜(zá),可以針對(duì)不同的TCP流,選用(yòng)不同的加密方法,從(cóng)而可以更細粒度的對(duì)通信内容進行加密處理(lǐ),從(cóng)而通信内容會(huì)更加安全。另外(wài),兩種實現(xiàn)方案都需要硬件對(duì)報(bào)文(wén)進行解析、報(bào)文(wén)亂序移位處理(lǐ)及報(bào)文(wén)TCP頭及IP頭部校驗和(hé)進行重新計(jì)算(suàn)處理(lǐ),因此硬件資源開(kāi)銷比較大(dà),但(dàn)其可以保證加密處理(lǐ)的延時(shí)。