一、 應(yīng)用場景
如圖1所示,對主機(jī)A與主機(jī)B間的TCP的通信進(jìn)行加解密處理。即主機(jī)A的TCP數(shù)據(jù)通過網(wǎng)絡(luò)加密結(jié)點(diǎn)對其TCP數(shù)據(jù)加密后傳送給網(wǎng)絡(luò),數(shù)據(jù)包經(jīng)互聯(lián)網(wǎng)傳送給主機(jī)B端的網(wǎng)絡(luò)加解密結(jié)點(diǎn)進(jìn)行解密處理,處理后的數(shù)據(jù)送給主機(jī)B 。反向同理。

圖1 應(yīng)用場景圖
二、 方案1 固定密鑰的實(shí)現(xiàn)
在網(wǎng)絡(luò)加解密的結(jié)點(diǎn)將TCP報(bào)文的序號按某一算法進(jìn)行加密處理,另外將TCP數(shù)據(jù)報(bào)文的DATA域的數(shù)據(jù)進(jìn)行亂序處理,從而實(shí)現(xiàn)在對TCP數(shù)據(jù)流報(bào)文進(jìn)行發(fā)送序號亂序的同時實(shí)現(xiàn)了對報(bào)文內(nèi)容的亂序加密處理。
具體硬件加密方式:
網(wǎng)絡(luò)加解密結(jié)點(diǎn)解析所有經(jīng)過它的數(shù)據(jù)流的報(bào)文,識別報(bào)文是否為TCP/IPv4的類型報(bào)文,若是則根據(jù)圖2所示的TCP頭部格式,在傳送TCP數(shù)據(jù)時,將序號字段(Sequence Number)作為密鑰進(jìn)行加密處理。否則數(shù)據(jù)會直接轉(zhuǎn)發(fā)輸出。

圖2 TCP頭部格式
另外,網(wǎng)絡(luò)加解密結(jié)點(diǎn)會針對其TCP類型報(bào)文的數(shù)據(jù)部分根據(jù)硬件處理格式進(jìn)行亂序處理,從而實(shí)現(xiàn)數(shù)據(jù)加密的功能。如圖3所示,硬件是將數(shù)據(jù)幀以128b(16B)的形式進(jìn)行組織。

圖3 硬件處理幀形式
根據(jù)網(wǎng)絡(luò)加解密結(jié)點(diǎn)對數(shù)據(jù)處理的特點(diǎn),加密可以將每拍TCP報(bào)文數(shù)據(jù)部分的字節(jié)數(shù)據(jù)高低4位對調(diào)來實(shí)現(xiàn),如圖4所示。

圖4 數(shù)據(jù)位對調(diào)亂序示意圖
硬件實(shí)現(xiàn)的難點(diǎn):
- 1) TCP報(bào)文解析(IPV4);
- 2) TCP的校驗(yàn)和重計(jì)算;
- 3) 線速實(shí)現(xiàn)加密處理及恢復(fù)。
優(yōu)點(diǎn):
- 1) 可實(shí)現(xiàn)加解密處理;
- 2) 可以保證處理延時。
三、 方案2 動態(tài)密鑰的實(shí)現(xiàn)
動態(tài)密鑰是基于TCP類型的數(shù)據(jù)在握手的過程中傳遞,即在建立TCP的握手時協(xié)商此對應(yīng)TCP流對應(yīng)的密鑰;在連接結(jié)束時,刪除其密鑰信息,在下次建立時隨機(jī)獲取密鑰池中的新的密鑰來進(jìn)行加密通信。處理過程如圖5、6所示。

圖5 基于TCP建立的密鑰協(xié)商過程圖
在TCP建立連接時,網(wǎng)絡(luò)加解密結(jié)點(diǎn)會監(jiān)測,輸入報(bào)文是否主SYN的報(bào)文,若是,則從密鑰池中隨機(jī)申請一個密鑰(KEY),將密鑰信息隨建立連接的報(bào)文發(fā)送給接收端,接收端接收密鑰信息,在接收到連接響應(yīng)報(bào)文時,將確認(rèn)的密鑰信息再返回給發(fā)送端,以確認(rèn)其已經(jīng)正確協(xié)商密鑰可以正常通信。
在TCP結(jié)束連接時,當(dāng)結(jié)束發(fā)送端(主機(jī)A)發(fā)送FIN報(bào)文時,網(wǎng)絡(luò)加密結(jié)點(diǎn)先不立刻注銷密鑰信息,而是等待主機(jī)B發(fā)送結(jié)束時才注銷密鑰信息,因?yàn)橹鳈C(jī)A在申請結(jié)束連接時,主機(jī)B可能還會向主機(jī)A發(fā)送TCP的數(shù)據(jù),因此,需要等待主機(jī)B也發(fā)送結(jié)束報(bào)文時才進(jìn)行密鑰的注銷。

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

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