報文動態(tài)封裝方法及動態(tài)隧道構建方法
【技術領域】
[0001]本發(fā)明涉及網(wǎng)絡安全領域,特別涉及的是報文動態(tài)封裝方法及動態(tài)隧道構建方法。
【背景技術】
[0002]報文封裝是指將一種協(xié)議所封裝的報文通過另一種協(xié)議進行傳輸?shù)姆椒?,而通過該方法形成的通信實體則稱為隧道。
[0003]由于隧道外的節(jié)點通常不使用隧道內(nèi)部節(jié)點的通信協(xié)議,因此隧道內(nèi)外的節(jié)點可以實現(xiàn)一定程度的隔離,從而可以模擬數(shù)據(jù)在專線中的傳輸,提高隧道內(nèi)節(jié)點間所傳輸數(shù)據(jù)的安全性。
[0004]但是傳統(tǒng)的報文封裝是通過在原報文頭部添加新規(guī)約的方式實現(xiàn)的,因此若封裝協(xié)議被黑客獲得,他可以通過分析報文中各字段長度的方法獲取有效信息,從而解封報文,讀取報文中的信息,因而傳統(tǒng)報文封裝方式存在很大的安全隱患。
[0005]本發(fā)明主要解決的問題是如何增加報文片段的隨機性,進而增加黑客破解報文所需要的時間成本,降低報文被攻擊的可能性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的目的是提供一種報文動態(tài)封裝方法,增加報文內(nèi)容的不可預測性,解決現(xiàn)有技術由于報文格式相對固定而導致有效信息容易被非法獲取的問題。
[0007]為解決上述問題,本發(fā)明提出一種報文動態(tài)封裝方法,包括以下步驟:
[0008]S1:通過無理數(shù)產(chǎn)生器產(chǎn)生一無理數(shù)作為信息載體,無理數(shù)的各位數(shù)值的前后位置用于插入信息報文的報文片段;
[0009]S2:將信息報文拆分成預設數(shù)目的報文片段,獲取一對應所述預設數(shù)目的長度的數(shù)字序列,將數(shù)字序列的各數(shù)字作為各報文片段的索引號;
[0010]S3:將各報文片段根據(jù)各索引號插入到所述信息載體的相應位置處,形成傳輸報文,每一次的插入位置均為在之前已插入報文片段后的信息載體的基礎上索引號確定的位置;
[0011]S4:設置所述傳輸報文的報文頭部,在所述報文頭部填入握手數(shù)據(jù),所述握手數(shù)據(jù)包括所述索引號。
[0012]根據(jù)本發(fā)明的一個實施例,在步驟S3和S4之間還包括步驟S31:將所述傳輸報文進行分片重組;在步驟S4中,所述握手數(shù)據(jù)還包括重組信息。
[0013]根據(jù)本發(fā)明的一個實施例,在所述步驟S1中,所述無理數(shù)產(chǎn)生器包括非線性函數(shù)庫,所述非線性函數(shù)庫存有能夠通過輸入一有理數(shù)而產(chǎn)生無理數(shù)的函數(shù),選取所述非線性函數(shù)庫中的其中一個函數(shù)或幾個函數(shù)的組合產(chǎn)生第一無理數(shù),作為信息載體。
[0014]根據(jù)本發(fā)明的一個實施例,所述無理數(shù)產(chǎn)生器還包括線性函數(shù)庫,所述線性函數(shù)庫中存有通過輸入一有理數(shù)無法產(chǎn)生無理數(shù)的函數(shù),由兩個或多個所述第一無理數(shù)輸入到所述線性函數(shù)庫中的其中一個函數(shù)或幾個函數(shù)的組合中產(chǎn)生第二無理數(shù),作為信息載體。
[0015]根據(jù)本發(fā)明的一個實施例,從函數(shù)庫中選取一函數(shù)后,標記該函數(shù)為不可再次選取的狀態(tài)。
[0016]根據(jù)本發(fā)明的一個實施例,在所述步驟S2中,所述數(shù)字序列為一隨機整數(shù)的各位上的數(shù)值組合而成的序列。
[0017]根據(jù)本發(fā)明的一個實施例,所述隨機整數(shù)的產(chǎn)生方式為步驟A1:獲取所述無理數(shù)的小數(shù)部分,并根據(jù)所述預設數(shù)目將該小數(shù)部分轉(zhuǎn)換為整數(shù),作為所述隨機整數(shù),計算公式依次包括(a)和(b):
[0018]Δ IN=IN-[IN] (a)
[0019]Nr=[ Δ IN*10'Ar] (b)
[0020]其中,IN為所述無理數(shù),[IN]為所述無理數(shù)的取整值,ΔIN為所述無理數(shù)與其取整值之間的差,Ar為所述預設數(shù)目,Nr為所述隨機整數(shù)。
[0021]根據(jù)本發(fā)明的一個實施例,在所述步驟A1之前還包括All:判斷ΔΙΝ=ΙΝ-[ΙΝ]是否大于零,如果是則保留該ΙΝ,否則重新產(chǎn)生IN。
[0022]根據(jù)本發(fā)明的一個實施例,在所述步驟S1之前還包括步驟S11:為日期的各個欄位設置權重,取系統(tǒng)時間將其各個欄位的數(shù)與相應權重相乘,并將各乘積結果相加得到用于輸入所述無理數(shù)產(chǎn)生器產(chǎn)生無理數(shù)的輸入?yún)?shù)。
[0023]本發(fā)明還提供一種用來傳輸前述報文動態(tài)封裝方法封裝的報文的動態(tài)隧道構建方法,所述傳輸報文作為載荷裝入TCP報文中,該方法包括以下步驟:
[0024]B1:發(fā)送方在所述傳輸報文的報文頭部增加隧道編號字段;
[0025 ] B2:發(fā)送方通過TCP報文向接收方以控制消息的方式發(fā)送驗證信息,接收方從本地驗證信息數(shù)據(jù)庫中搜索并比對該驗證信息,如果比對成功則向發(fā)送方回復確認消息并返回隧道編號,否則回復拒絕消息;
[0026]B3:發(fā)送方如果收到確認消息,則將隧道編號填入所述傳輸報文的報文頭部中,發(fā)送方將隧道編號和還原傳輸報文所需的參數(shù)作為控制消息發(fā)送給接收方,接收方記錄接收的隧道編號和還原傳輸報文所需的參數(shù);
[0027]B4:發(fā)送方將封裝好的傳輸報文作為數(shù)據(jù)消息發(fā)送給接收方,接收方根據(jù)上次記錄的控制消息還原接收到的數(shù)據(jù)消息。
[0028]根據(jù)本發(fā)明的一個實施例,在步驟B2中,發(fā)送方通過TCP報文向接收方以控制消息的方式依次發(fā)送隧道編號、用戶名、密碼和最大傳輸單元,所述接收方比對的步驟包括:
[0029]B21:對比隧道編號,如果對比成功則進入步驟B22,否則丟棄所有來自發(fā)送方的TCP報文,發(fā)送拒絕消息給發(fā)送方;
[0030]B22:對比用戶名,如果對比成功則進入步驟B23,否則丟棄所有來自發(fā)送方的TCP報文,發(fā)送拒絕消息給發(fā)送方;
[0031 ] B23:對比密碼,如果對比成功則進入步驟B24,否則丟棄所有來自發(fā)送方的TCP報文,發(fā)送拒絕消息給發(fā)送方;
[0032]B24:在完成隧道編號、用戶名和密碼的比對后,記錄最大傳輸單元,并發(fā)送確認消息和隧道編號給發(fā)送方。
[0033]根據(jù)本發(fā)明的一個實施例,所述步驟B4進一步包括以下步驟:
[0034]B41:接收方從TCP報文中獲取隧道編號,并記錄在隧道端口的緩存中;
[0035]B42:接收方讀取來自發(fā)送方的TCP報文,從中獲取傳輸報頭的起始位置,并根據(jù)各字段的起始位置和長度讀取信息報文的報文片段的索引號、信息載體的長度以及重組信息;
[0036]B43:接收方根據(jù)重組信息完成傳輸報文的重組還原;
[0037]B44:信息報文的報文片段的索引號、信息載體的長度完成傳輸報文的還原。
[0038]采用上述技術方案后,本發(fā)明相比現(xiàn)有技術具有以下有益效果:通過無理數(shù)作為信息載體的基礎,將信息報文拆分成報文片段插入到信息載體的不同位置,形成傳輸報文,隱藏了有效信息字段的起始位置,有效降低了有效信息被駭客非法解析的可能性,提高了數(shù)據(jù)傳輸?shù)陌踩浴?br>[0039]此外,利用收發(fā)雙方都可以獨立獲取的某一個時間點作為無理數(shù)生成器的輸入,一定程度上避免了因為輸入?yún)?shù)的交換而給某一秘密消息的協(xié)商帶來安全隱患的問題。
【附圖說明】
[0040]圖1為本發(fā)明一個實施例的報文動態(tài)封裝方法的流程示意圖;
[0041]圖2為本發(fā)明一個實施例的動態(tài)隧道構建方法的流程示意圖;
[0042]圖3為本發(fā)明一個實施例的動態(tài)隧道構建及雙方通信的示意圖。
【具體實施方式】
[0043]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本發(fā)明的【具體實施方式】做詳細的說明。
[0044]在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以很多不同于在此描述的其它方式來實施,本領域技術人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣,因此本發(fā)明不受下面公開的具體實施的限制。
[0045]圖1示出本發(fā)明實施例的報文動態(tài)封裝方法,包括以下步驟:
[0046]S1:通過無理數(shù)產(chǎn)生器產(chǎn)生一無理數(shù)作為信息載體,無理數(shù)的各位數(shù)值的前后位置用于插入信息報文的報文片段;
[0047]S2:將信息報文拆分成預設數(shù)目的報文片段,獲取一對應所述預設數(shù)目的長度的數(shù)字序列,將數(shù)字序列的各數(shù)字作為各報文片段的索引號;
[0048]S3:將各報文片段根據(jù)各索引號插入到所述信息載體的相應位置處,形成傳輸報文,每一次的插入位置均為在之前已插入報文片段后的信息載體的基礎上索引號確定的位置;
[0049]S4:設置所述傳輸報文的報文頭部,在所述報文頭部填入握手數(shù)據(jù),所述握手數(shù)據(jù)包括所述索引號。
[0050]具體的,在步驟S1中,利用無理數(shù)產(chǎn)生器產(chǎn)生一無理數(shù),無理數(shù)產(chǎn)生器通過輸入不同的參數(shù),由相應的無理數(shù)產(chǎn)生函數(shù)處理后輸出無理數(shù),該無理數(shù)作為信息載體時,由于其隨機性較高從而使得報文拆分插入其中后,形成的傳輸報文非常難預測,該無理數(shù)構成的信息載體可以看做是秘密載體。
[0051 ]可選的,在步驟S1中,無理數(shù)產(chǎn)生器包括非線性函數(shù)庫,非線性函數(shù)庫存有能夠通過輸入一有理數(shù)而產(chǎn)生無理數(shù)的函數(shù)。非線性函數(shù)庫至少包括以下一種或幾種:指數(shù)大于Ο且小于1的指數(shù)函數(shù),對數(shù)函數(shù),三角函數(shù),反三角函數(shù)。當然還有其他用于產(chǎn)生無理數(shù)的函數(shù),這些能夠函數(shù)中固然有可能產(chǎn)生的是有理數(shù),但是本發(fā)明排除這些產(chǎn)生有理數(shù)的情況,例如是自然指數(shù)的幾次冪函數(shù),其中的冪可以作為輸入?yún)?shù),只要輸入?yún)?shù)不等于0的實數(shù),則產(chǎn)生的均為無理