地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法
【專利摘要】本發(fā)明公開一種地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,步驟為:1)為網(wǎng)絡(luò)中的每臺主機分配IP地址并根據(jù)IP地址生成對應(yīng)的私鑰,每臺主機啟動時獲取IP地址及對應(yīng)的私鑰;2)數(shù)據(jù)通信時,源主機查詢或根據(jù)己方的私鑰及目的主機的IP地址建立共享密鑰并生成對稱密鑰,使用對稱密鑰對數(shù)據(jù)進行加密和認(rèn)證,封裝成報文后發(fā)送;3)目的主機查詢或根據(jù)己方的私鑰及源主機的IP地址建立共享密鑰并生成對稱密鑰,使用對稱密鑰對報文進行認(rèn)證及解密處理。本發(fā)明具有實現(xiàn)方法簡單、無需證書認(rèn)證、共享密鑰建立過程簡單、應(yīng)用靈活、安全且高效的優(yōu)點。
【專利說明】地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及可信安全網(wǎng)絡(luò)的基礎(chǔ)通信領(lǐng)域,尤其涉及一種地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法。
【背景技術(shù)】
[0002]隨著網(wǎng)絡(luò)及其應(yīng)用技術(shù)的發(fā)展,互聯(lián)網(wǎng)已經(jīng)成為人類學(xué)習(xí)、工作、生活不可或缺的一部分,當(dāng)前互聯(lián)網(wǎng)的功能日益強大,對其安全需求也變得更加迫切。互聯(lián)網(wǎng)的功能由最初的文本傳輸、網(wǎng)頁瀏覽發(fā)展成為網(wǎng)上購物、網(wǎng)上金融、社交娛樂等,幾乎涵蓋了人類生產(chǎn)生活的各個方面。由于網(wǎng)絡(luò)虛擬世界與現(xiàn)實世界的結(jié)合點不斷增多,使得若網(wǎng)絡(luò)上的安全及隱私一旦遭到破壞,將對現(xiàn)實世界造成重大損失;同時隨著各種通信手段的不斷涌現(xiàn),特別是移動通信市場的空前繁榮,無線通信的潛在安全威脅也顯得尤為突出。無線通信處于一個完全開放的網(wǎng)絡(luò)環(huán)境中,網(wǎng)絡(luò)嗅探和竊聽則更加易于實現(xiàn),傳統(tǒng)的IP協(xié)議雖然簡潔,但是在安全性上完全沒有保證。
[0003]針對上述安全需求,目前大部分的解決方案主要是基于傳統(tǒng)PKI體系,通過身份認(rèn)證和消息內(nèi)容的加密傳輸,在開放復(fù)雜的網(wǎng)絡(luò)環(huán)境下建立安全的通信信道,保證各項應(yīng)用的安全。從保護的層次上來說,主要包括網(wǎng)絡(luò)層安全和應(yīng)用層安全,其中應(yīng)用層安全主要是指軟件的開發(fā)者將所需的內(nèi)容在應(yīng)用層進行加密,再通過底層協(xié)議進行傳輸,比較典型的有S-HTTP和S/MME協(xié)議;而網(wǎng)絡(luò)層安全,是在網(wǎng)絡(luò)層對數(shù)據(jù)進行加密,其實現(xiàn)的網(wǎng)絡(luò)協(xié)議層次較為底層。應(yīng)用層和網(wǎng)絡(luò)層兩者比較來說,網(wǎng)絡(luò)層安全具有以下幾點優(yōu)勢:
[0004](I)網(wǎng)絡(luò)層安全更加獨立于具體的應(yīng)用,軟件開發(fā)者在軟件開發(fā)時不需要過多地關(guān)注認(rèn)證和加密的實現(xiàn),只要主機的協(xié)議棧對協(xié)議提供支持即可;
[0005](2)網(wǎng)絡(luò)層安全的實現(xiàn)更為節(jié)約資源,若完全基于應(yīng)用層安全,目前所有應(yīng)用的客戶端和服務(wù)端都得重新升級或進行相關(guān)配置,需要耗費大量人力物力。
[0006](3)針對不同的應(yīng)用需要不同的協(xié)議,比如S-HTTP針對的是HTTP協(xié)議,而S/MME主要針對的是郵件服務(wù),其通用性不強,網(wǎng)絡(luò)中除了傳送消息的報文,還有控制報文,比如ICMP等。由于屬于網(wǎng)絡(luò)層,應(yīng)用層安全不對控制類報文采取認(rèn)證或者加密等措施,攻擊者雖然不能竊取用戶的信息,但依然可以通過偽造控制消息對網(wǎng)絡(luò)進行破壞,而網(wǎng)絡(luò)層安全則可以防止這類攻擊。
[0007]因此,網(wǎng)絡(luò)層安全保護應(yīng)用更為廣泛,目前網(wǎng)絡(luò)層安全采用的都是IPSec協(xié)議組,其包括AH和ESP等具體協(xié)議格式。目前IPSec大多用在企業(yè),或者某些特定的應(yīng)用中且主要利用其隧道模式保護諸如VPN的網(wǎng)絡(luò)通信,而在端到端或者對等網(wǎng)絡(luò)中,IPSec的傳輸模式并沒有得到廣泛應(yīng)用,究其原因主要存在以下四個方面:
[0008]I)密鑰分發(fā)開銷大
[0009]IPSec中的IKE協(xié)議用于通信雙方協(xié)商出一對對稱密鑰,作為加解密的通信密鑰。IKE協(xié)議通過雙方的公鑰,協(xié)商出通信密鑰,其中如何將公鑰與用戶的身份綁定具有非常關(guān)鍵的作用,否則會話很容易被冒名的竊聽者作為中間人劫持。[0010]為了完成用戶身份與其公鑰信息的綁定,IPSec采用了傳統(tǒng)PKI體系中的證書機制,使用的證書具有一定格式,通過可信任第三方的簽名來證明用戶及其公鑰信息的合法性。證書相對網(wǎng)絡(luò)報文所占的存儲空間較大,因而每次兩個用戶之間為了完成密鑰的協(xié)商必須花費一定的額外網(wǎng)絡(luò)流量進行證書的傳輸,造成密鑰分發(fā)的開銷大。
[0011]2)發(fā)起連接延遲長
[0012]傳統(tǒng)的IP協(xié)議,比如TCP協(xié)議,只需要三次握手即可建立連接進行數(shù)據(jù)傳輸,在IPSec中則需要額外的握手和認(rèn)證開銷。當(dāng)僅僅發(fā)送一些很少的控制報文時,這些額外的開銷的影響就顯得尤為明顯,比如為了發(fā)送一個數(shù)據(jù)包的ICMP控制報文,IPSec需要在此前發(fā)送額外的14個數(shù)據(jù)包用于認(rèn)證和密鑰協(xié)商,建立安全連接。因此相對IP協(xié)議來說,IPSec建立安全連接需要很長的延遲,而在一些移動或軍事應(yīng)用上,這一延遲是不能忍受的。
[0013]3)交互狀態(tài)轉(zhuǎn)換多
[0014]IP協(xié)議是一個無狀態(tài)的協(xié)議,通信雙方無需保持一致的狀態(tài),可以很方便地進行斷線重連以及重新路由到另一臺路由器,而IPSec需要通信雙方實時地維護一個狀態(tài)空間,適時地轉(zhuǎn)換狀態(tài),且一旦狀態(tài)轉(zhuǎn)換發(fā)生錯誤,通信過程就會被中斷。因為沒有一個相應(yīng)的狀態(tài),報文路由到另一臺路由器時若某一端發(fā)生故障,該報文也會被丟棄。
[0015]4)協(xié)議格式定義復(fù)雜
[0016]IP協(xié)議目前僅僅由一個RFC所定義,而IPSec目前至少由12個RFC定義,其中包括多種協(xié)議進行互相輔助和補充。協(xié)議的復(fù)雜性導(dǎo)致難以分析該協(xié)議的安全性以及其中是否存在安全漏洞,復(fù)雜的協(xié)議也增加了系統(tǒng)遭受拒絕服務(wù)攻擊的風(fēng)險。
【發(fā)明內(nèi)容】
[0017]本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種實現(xiàn)方法簡單、無需證書認(rèn)證、共享密鑰建立過程簡單、無需維護狀態(tài)特定狀態(tài)、傳輸協(xié)議簡單且安全性高的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法。
[0018]為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
[0019]一種地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,具體實施步驟如下:
[0020]I)為網(wǎng)絡(luò)中的每臺主機分配IP地址并根據(jù)IP地址生成對應(yīng)的私鑰,每臺主機啟動時獲取所述IP地址及對應(yīng)的私鑰;
[0021]2)進行數(shù)據(jù)通信時,源主機查詢與目的主機通信的對稱密鑰是否存在,若存在,獲取查詢到的對稱密鑰,若不存在,源主機根據(jù)己方的私鑰及目的主機的IP地址建立共享密鑰,由所述共享密鑰生成并存儲與目的主機通信的對稱密鑰;使用所述對稱密鑰對數(shù)據(jù)進行加密、生成消息認(rèn)證碼,并封裝成網(wǎng)絡(luò)報文發(fā)送給目的主機;
[0022]3)目的主機接收網(wǎng)絡(luò)報文,查詢與源主機通信的對稱密鑰是否存在,若存在,獲取查詢到的對稱密鑰,若不存在,目的主機根據(jù)己方的私鑰及源主機的IP地址建立共享密鑰,由所述共享密鑰生成并存儲與源主機通信的對稱密鑰;使用所述對稱密鑰對接收的網(wǎng)絡(luò)報文進行認(rèn)證及解密處理。
[0023]作為本發(fā)明的進一步改進:所述對稱密鑰包括對稱會話密鑰和消息認(rèn)證密鑰,所述對稱會話密鑰和所述消息認(rèn)證密鑰由所述共享共享密鑰分別與不同的字符串連接并采用哈希算法計算得到。[0024]作為本發(fā)明的進一步改進,所述步驟I)中根據(jù)IP地址生成對應(yīng)的私鑰的具體實施步驟如下:將IP地址采用基于橢圓曲線的IP映射規(guī)則映射為橢圓曲線上的一點,得到第一映射點;設(shè)置私有參數(shù),并將私有參數(shù)與第一映射點相乘的結(jié)果作為所述IP地址對應(yīng)的私鑰。
[0025]作為本發(fā)明的進一步改進:所述步驟2)的具體步驟如下:
[0026]2.1)源主機預(yù)先在內(nèi)存中建立用于存儲目的主機IP地址與對稱會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT ;進行數(shù)據(jù)通信時,源主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與目的主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,若存在,獲取查詢到的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟2.3);若不存在,轉(zhuǎn)入執(zhí)行步驟2.2);
[0027]2.2)源主機將目的主機IP地址映射到橢圓曲線上得到第二映射點,并根據(jù)己方的私鑰和第二映射點采用雙線性對計算得到共享密鑰,使用所述共享密鑰生成與目的主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰并存入自信任網(wǎng)絡(luò)地址及密鑰表STT中;
[0028]2.3)在網(wǎng)絡(luò)層對待發(fā)送的載荷數(shù)據(jù)進行封裝,使用所述對稱會話密鑰采用加密算法對載荷數(shù)據(jù)及數(shù)據(jù)報頭進行加密并使用所述消息認(rèn)證密鑰生成消息認(rèn)證碼,將加密后的數(shù)據(jù)、所述加密算法以及消息認(rèn)證碼封裝進報文并根據(jù)發(fā)送模式填寫報文對應(yīng)的字段,獲得封裝后的網(wǎng)絡(luò)報文,將所述網(wǎng)絡(luò)報文發(fā)送給目的主機。
[0029]作為本發(fā)明的進一步改進,所述步驟2.3)的具體步驟如下:
[0030]2.3.1)將待發(fā)送的載荷數(shù)據(jù)按照分組大小的整數(shù)倍進行填充,記錄填充的字節(jié)數(shù)并將填充的字節(jié)數(shù)補充在填充字節(jié)后構(gòu)成報文尾;
[0031]2.3.2)判斷待發(fā)送的載荷數(shù)據(jù)的發(fā)送模式,若為傳輸模式,由TCP或UDP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3),若為隧道模式,重新構(gòu)造IP頭并由整個IP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3);
[0032]2.3.3)使用所述對稱會話密鑰采用加密算法對數(shù)據(jù)字段、報文尾進行加密;將數(shù)據(jù)字段的協(xié)議格式、所述加密算法、標(biāo)志位、報文的序列號封裝為報文頭;若報文頭中標(biāo)志位為1,則使用所述消息認(rèn)證密鑰對IP頭中不變字段、報文頭、數(shù)據(jù)字段以及報文尾計算生成消息認(rèn)證碼并加入報文頭,否則不生成消息認(rèn)證碼;按照IP頭、報文頭、數(shù)據(jù)字段以及報文尾的順序進行串接,獲得封裝后的網(wǎng)絡(luò)報文;將所述網(wǎng)絡(luò)報文發(fā)送給目的主機,轉(zhuǎn)入執(zhí)行步驟3);
[0033]作為本發(fā)明的進一步改進,所述步驟3)的具體步驟如下:
[0034]3.1)目的主機預(yù)先在內(nèi)存中建立用于存儲源主機IP地址與對稱會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT ;進行數(shù)據(jù)通信時,目的主機接收網(wǎng)絡(luò)報文并判斷報文是否為過期報文,若為是,丟棄接收的網(wǎng)絡(luò)報文并退出;若為否,轉(zhuǎn)入執(zhí)行步驟3.2);
[0035]3.2)目的主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與源主機IP地址對應(yīng)的對稱會話密鑰與消息認(rèn)證密鑰,若存在,獲取對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟3.4);若不存在,轉(zhuǎn)入執(zhí)行步驟3.3);
[0036]3.3)目的主機將源主機的IP地址映射到橢圓曲線上得到第三映射點,并根據(jù)第三映射點和己方的私鑰采用雙線性對計算得到共享密鑰,使用所述的共享密鑰生成與源主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟3.4);
[0037]3.4)判斷報文頭中的標(biāo)志位,若為1,轉(zhuǎn)入執(zhí)行步驟3.5),若為0,轉(zhuǎn)入執(zhí)行步驟
3.6);
[0038]3.5)使用所述消息認(rèn)證密鑰計算網(wǎng)絡(luò)報文的IP頭中不變字段、除去消息認(rèn)證碼的報文頭、數(shù)據(jù)字段以及報文尾的摘要值,判斷摘要值與報文中的消息認(rèn)證碼是否一致,若一致,轉(zhuǎn)入執(zhí)行步驟3.6),若不一致,丟棄接收的網(wǎng)絡(luò)報文并退出;
[0039]3.6)對網(wǎng)絡(luò)報文進行解析,根據(jù)發(fā)送模式使用所述對稱會話密鑰及所述加密算法對應(yīng)的解密算法對報文進行解密,將解密后的數(shù)據(jù)根據(jù)發(fā)送模式提交給上層協(xié)議或進行進一步轉(zhuǎn)發(fā)。
[0040]作為本發(fā)明的進一步改進,所述步驟3.1)中目的主機接收網(wǎng)絡(luò)報文并判斷報文是否為過期報文的具體步驟如下:
[0041]3.1.1)接收網(wǎng)絡(luò)報文并判斷網(wǎng)絡(luò)報文是否為源主機發(fā)送的第一個網(wǎng)絡(luò)報文,若為是,根據(jù)第一個網(wǎng)絡(luò)報文的所述報文的序列號的值N建立滑動窗口并選定窗口大小M,轉(zhuǎn)入執(zhí)行步驟3.2);若為否,轉(zhuǎn)入執(zhí)行步驟3.1.2);
[0042]3.1.2)判斷報文的序列號的值m在滑動窗口中的位置,若滿足m〈N_M,則判定報文不在滑動窗口內(nèi),直接丟棄報文;若滿足N-M〈m〈N,判定報文在滑動窗口內(nèi),轉(zhuǎn)入執(zhí)行步驟
3.2);若滿足m>N,則更新滑動窗口為報文的序列號的值m。
[0043]作為本發(fā)明的進一步改進:所述步驟3.6)的具體步驟如下:
[0044]3.6.1)根據(jù)報文頭中所述數(shù)據(jù)字段的協(xié)議格式判斷報文的發(fā)送模式,若協(xié)議格式為TCP或UDP協(xié)議,判定發(fā)送模式為傳輸模式,轉(zhuǎn)入執(zhí)行步驟3.6.2);若協(xié)議格式為IP協(xié)議,判定發(fā)送模式為隧道模式,轉(zhuǎn)入執(zhí)行步驟3.6.3);
[0045]3.6.2)從報文頭中獲取網(wǎng)絡(luò)報文采用的加密算法,使用所述加密算法對應(yīng)的解密算法及所述對稱會話密鑰對網(wǎng)絡(luò)報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位數(shù),根據(jù)所述數(shù)據(jù)位數(shù)去除報文尾中填充的數(shù)據(jù)位,得到還原的解密數(shù)據(jù);將所述解密數(shù)據(jù)提交至TCP或UDP上層協(xié)議并退出;
[0046]3.6.3)從報文頭中獲取網(wǎng)絡(luò)報文采用的加密算法,使用所述加密算法對應(yīng)的解密算法及所述對稱會話密鑰對網(wǎng)絡(luò)報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位數(shù),根據(jù)所述數(shù)據(jù)位數(shù)去除報文尾中填充的數(shù)據(jù)位,得到還原的解密數(shù)據(jù);將所述解密數(shù)據(jù)按照數(shù)據(jù)中IP報文的目的地址進行進一步轉(zhuǎn)發(fā)并退出。
[0047]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
[0048](I)本發(fā)明在地址即公鑰的自安全輕量級網(wǎng)絡(luò)中進行數(shù)據(jù)通信時,通信雙方根據(jù)己方的私鑰和對方的IP地址建立共享密鑰,直接由建立的共享密鑰生成會話密鑰及消息認(rèn)證密鑰,共享密鑰的建立過程簡單、應(yīng)用靈活,能夠?qū)崿F(xiàn)共享密鑰協(xié)商的零交互,從而避免了在只發(fā)送一些控制報文時需要使用更多報文進行協(xié)商的情況;同時使用會話密鑰及消息認(rèn)證密鑰對載荷數(shù)據(jù)進行加解密及認(rèn)證,能夠有效保護傳輸數(shù)據(jù)的安全,當(dāng)采用雙線性映射獲取會話密鑰時,能夠以最小的開銷建立安全會話;
[0049](2)本發(fā)明為每個網(wǎng)絡(luò)中的主機分配IP地址,根據(jù)IP地址生成私鑰及共享密鑰,將IP地址天然地與用戶綁定,免去了使用證書將IP地址與用戶身份進行綁定的過程,在數(shù)據(jù)傳輸前不需要進行證書的認(rèn)證,減少了連接的開銷及延遲;[0050](3)本發(fā)明在現(xiàn)有的基于IP地址結(jié)構(gòu)的通信模式下構(gòu)建一種基于自安全輕量級網(wǎng)絡(luò)的通信協(xié)議,源主機使用對稱密鑰對傳輸數(shù)據(jù)進行加密及消息認(rèn)證碼的生成并封裝成網(wǎng)絡(luò)報文,有效的結(jié)合了 IPSec協(xié)議安全性高、IP協(xié)議簡單的優(yōu)點,實現(xiàn)靈活、高效、安全的網(wǎng)絡(luò)報文傳輸,無需依賴第三方證書認(rèn)證、無需維護狀態(tài)特定狀態(tài)且無需多種復(fù)雜協(xié)議。
【專利附圖】
【附圖說明】
[0051]圖1是本實施例地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法實現(xiàn)流程示意圖。
[0052]圖2是本實施例中網(wǎng)絡(luò)報文傳輸原理示意圖。
[0053]圖3是本實施例中傳輸模式時報文結(jié)構(gòu)示意圖。
[0054]圖4是本實施例中傳輸模式時報文的加密和認(rèn)證范圍結(jié)構(gòu)示意圖。
[0055]圖5是本實施例中隧道模式時報文結(jié)構(gòu)示意圖。
[0056]圖6是本實施例中隧道模式時報文的加密和認(rèn)證范圍結(jié)構(gòu)示意圖。
[0057]圖7是本實施例中步驟2)具體流程示意圖。
[0058]圖8是本實施例中步驟3)具體流程示意圖。
【具體實施方式】
[0059]以下結(jié)合說明書附圖和具體優(yōu)選的實施例對本發(fā)明作進一步描述,但并不因此而限制本發(fā)明的保護范圍。
[0060]本發(fā)明的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其核心思想是結(jié)合對方的IP地址及己方的私鑰建立通信雙方的共享密鑰,天然的完成IP地址與公鑰的綁定,再使用共享密鑰生成的對稱密鑰進行加解密及認(rèn)證,保護傳輸報文的安全。
[0061]本發(fā)明中地址即為公鑰,相對于傳統(tǒng)PKI體系中的公鑰而言,采用參與通信實體的地址本身作為公鑰,無需第三方認(rèn)證。
[0062]對應(yīng)本發(fā)明的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,本發(fā)明在現(xiàn)有的基于IP地址結(jié)構(gòu)的通信模式下,構(gòu)建一種網(wǎng)絡(luò)層通信協(xié)議,即TIP協(xié)議(Trust InternetProtocol,自信任網(wǎng)絡(luò)協(xié)議)。對應(yīng)于本發(fā)明的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,TIP協(xié)議的核心思想是結(jié)合IPSec協(xié)議與IP協(xié)議的特點,利用通信雙方協(xié)商的共享密鑰生成對稱密鑰對載荷數(shù)據(jù)進行加解密及認(rèn)證,共享密鑰的協(xié)商則通過對方的IP地址及己方的私鑰直接建立,實現(xiàn)協(xié)商的零交互;構(gòu)造網(wǎng)絡(luò)報文時,根據(jù)發(fā)送模式將認(rèn)證加密后的數(shù)據(jù)進行封裝。本發(fā)明TIP協(xié)議主要針對ipv4協(xié)議,能夠?qū)崿F(xiàn)自安全輕量級網(wǎng)絡(luò)中簡單、安全性高的網(wǎng)絡(luò)報文傳輸。
[0063]以下將結(jié)合一個自安全輕量級網(wǎng)絡(luò)中用戶Alice(以下簡稱為用戶A)向用戶Bob (以下簡稱為用戶B)發(fā)送數(shù)據(jù)報文的具體實施例對本發(fā)明進行說明。
[0064]如圖1、2所示,本實施例地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,步驟包括:
[0065]步驟I)自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA為網(wǎng)絡(luò)中的每臺主機分配IP地址并根據(jù)IP地址生成對應(yīng)的私鑰,每臺主機啟動時從自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA獲取IP地址及對應(yīng)的私鑰。
[0066]本實施例中,由網(wǎng)絡(luò)中一種可信任機構(gòu)的自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)(Self-Trust Authority,簡稱為STA)負(fù)責(zé)網(wǎng)絡(luò)中每臺主機的IP地址分配及對應(yīng)私鑰的生成。
[0067]本實施例中,步驟I)中根據(jù)IP地址生成對應(yīng)的私鑰的具體實現(xiàn)方法為:將IP地址采用基于橢圓曲線的IP映射規(guī)則映射為橢圓曲線上的一點,得到第一映射點Q ;設(shè)置私有參數(shù)s并將私有參數(shù)s與第一映射點Q相乘的結(jié)果sQ作為對應(yīng)的私鑰SK。
[0068]假設(shè)某橢圓曲線在有限域上的點構(gòu)成的群為G,生成元為P,采用基于橢圓曲線的IP映射規(guī)則對IP地址進行映射的實現(xiàn)方法步驟為:第一步,將IP地址對應(yīng)的字符串a(chǎn)通過hash函數(shù)H映射為一個二進制數(shù)η,即H (a) = η ;第二步,將二進制數(shù)η與生成元P相乘得到橢圓曲線上的另一個點,即為IP地址映射得到的映射點。
[0069]本實施例中,由自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA為全局選定一條特定的橢圓曲線,例如選定橢圓曲線為'f = x3+l,選定的橢圓曲線在有限域上的點構(gòu)成了群G1,其中P為該群的生成元,也即全局的公共參數(shù);由自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA選定一個私有參數(shù)s,私有參數(shù)s僅由自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA選定,任何第三方都無法獲知,且私有參數(shù)s為整數(shù);網(wǎng)絡(luò)內(nèi)的主機啟動后,由自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA為每臺主機分配IP地址,并由IP地址采用基于橢圓曲線的IP映射規(guī)則生成IP地址對應(yīng)的私鑰SK。
[0070]本實施例中,自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA將用戶A、用戶B主機對應(yīng)的IP地址采用基于橢圓曲線的IP映射規(guī)則分別映射為橢圓曲線上的一點Qa、Qb ;自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA將私有參數(shù)s分別與映射點Qa、Qb相乘,作為用戶A、用戶B的私鑰。
[0071]作為源主機的用戶A啟動后,自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA分配的網(wǎng)絡(luò)地址為IPa且IPa為10.129.202.7,將IPa映射得到的映射點為Qa,生成的對應(yīng)的私鑰為SKa,則SKa=sQa ;作為目的主機的用戶B啟動后,自信任網(wǎng)絡(luò)地址及密鑰機構(gòu)STA分配的網(wǎng)絡(luò)地址為IPb且IPb為10.121.67.45,將IPb映射得到的映射點為Qb,生成的對應(yīng)的私鑰為SKb,則SKb=sQb。
[0072]在其他實施例中,更為具體的私鑰生成方法還可采用例如中國專利申請CN103414691A中公開的方法。
[0073]如圖2所示,本實施例中網(wǎng)絡(luò)報文傳輸實現(xiàn)流程,用戶A根據(jù)IP地址IPa生成私鑰后根據(jù)用戶A的私鑰和用戶B的IP地址IPb生成對稱密鑰,由對稱密鑰對數(shù)據(jù)進行認(rèn)證加密,發(fā)送經(jīng)過對稱密鑰認(rèn)證加密的數(shù)據(jù)給用戶B ;用戶B接收到數(shù)據(jù)后,根據(jù)用戶B的私鑰和用戶A的IP地址IPa生成對稱密鑰,由對稱密鑰對接收的數(shù)據(jù)進行認(rèn)證及解密,并同樣利用該對稱密鑰對與用戶A的通信內(nèi)容進行加密。
[0074]本實施例中,源主機發(fā)送數(shù)據(jù)時將數(shù)據(jù)封裝為基于TIP協(xié)議的網(wǎng)絡(luò)報文(以下簡稱為TIP報文),TIP報文具有傳輸模式和隧道模式兩種發(fā)送模式,根據(jù)發(fā)送模式來確定TIP報文的具體結(jié)構(gòu)。
[0075]如圖3所示,本實施例中傳輸模式時網(wǎng)絡(luò)報文結(jié)構(gòu),包括IP頭、TIP頭、數(shù)據(jù)字段和TIP尾,其中:
[0076]TIP尾,用于對載荷數(shù)據(jù)進行填充以及記錄填充的長度。TIP尾為網(wǎng)絡(luò)報文的報文尾,包括填充、填充長度字段,其中填充字段將傳輸層的數(shù)據(jù)按照分組大小的整數(shù)倍補齊,填充長度字段記錄填充的字節(jié)數(shù)。
[0077]數(shù)據(jù)字段,包括TCP或者UDP的數(shù)據(jù)報頭和具體的載荷數(shù)據(jù);[0078]TIP頭,用于封裝數(shù)據(jù)字段的協(xié)議格式、采用的加密算法、報文的序列號以及消息認(rèn)證碼。TIP頭為網(wǎng)絡(luò)報文的報文頭,包括下一個頭協(xié)議、加密協(xié)議、序列號、標(biāo)志位、保留字段以及自認(rèn)證碼字段。其中下一個頭協(xié)議字段填寫數(shù)據(jù)字段的協(xié)議號,即數(shù)據(jù)字段的協(xié)議格式,如TCP或者UDP等;加密協(xié)議字段填寫對數(shù)據(jù)字段、TIP尾進行加密時所采用的加密算法的編號,由I表不AES算法、2表不DES算法、3表不3DES算法;序列號字段用于防重放攻擊,發(fā)送的每個報文附帶序列號,當(dāng)發(fā)送第一個報文時由用戶生成序列號,而后發(fā)送的每一個報文的序列號都會相應(yīng)的增加I ;自認(rèn)證碼為使用消息認(rèn)證密鑰生成的20字節(jié)的消息認(rèn)證碼,若標(biāo)志位為I時,生成消息認(rèn)證碼,若標(biāo)志位為O時,不生成消息認(rèn)證碼;保留字段用于協(xié)議的擴展。
[0079]IP頭,除協(xié)議字段填寫TIP的協(xié)議號59以外,其他字段的填寫與普通IP協(xié)議一致。
[0080]本實施例中,傳輸模式時按照IP頭、報文頭、數(shù)據(jù)字段以及報文尾的順序進行串接,完成傳輸模式的數(shù)據(jù)封裝,構(gòu)成TIP報文。
[0081]傳統(tǒng)的IP協(xié)議在IP頭之后即為傳輸層的數(shù)據(jù),本實施例通過在IP頭和傳輸層數(shù)據(jù)之間引入TIP頭,實現(xiàn)自認(rèn)證的功能。
[0082]傳輸模式和隧道模式的TIP報文,其最大的區(qū)別在于載荷數(shù)據(jù)的不同。如圖5所示,本實施例中隧道模式時報文結(jié)構(gòu),包括IP頭、TIP頭、數(shù)據(jù)字段和TIP尾,其結(jié)構(gòu)與傳輸模式時TIP結(jié)構(gòu)基本相同,不同之處在于數(shù)據(jù)字段的載荷數(shù)據(jù)為IP數(shù)據(jù)包并為報文重新構(gòu)造IP頭,即數(shù)據(jù)字段為加密的整個IP數(shù)據(jù)包,重新構(gòu)造的IP頭用于數(shù)據(jù)傳輸;且TIP頭中下個頭協(xié)議中填寫的協(xié)議號為IP的協(xié)議號。隧道模式下數(shù)據(jù)層為整個IP報文,按照IP頭、TIP頭、數(shù)據(jù)字段和TIP尾的順序緊湊串接,完成隧道模式的數(shù)據(jù)封裝,構(gòu)成TIP報文。
[0083]傳統(tǒng)的IP隧道技術(shù)是在IP頭之后加入一個完整的IP報文,本實施例通過重新構(gòu)造IP頭并在IP頭與完整IP報文數(shù)據(jù)之間引入TIP頭,實現(xiàn)自認(rèn)證的功能。
[0084]如圖4所示,本實施例中傳輸模式時網(wǎng)絡(luò)報文的加密和認(rèn)證范圍,圖中陰影填充部分即為加密和認(rèn)證范圍,其中加密范圍為數(shù)據(jù)、TIP尾,其中數(shù)據(jù)字段包含TCP或UDP頭、具體的載荷數(shù)據(jù);認(rèn)證范圍為IP頭中不變字段、TIP頭中除自認(rèn)證碼字段以外的所有其他字段,其中IP頭中不變字段為IP頭中除會隨傳輸而變化的字段以外的其他所有字段。如圖6所示,本實施例中隧道模式時網(wǎng)絡(luò)報文的加密和認(rèn)證范圍,圖中陰影填充部分即為加密和認(rèn)證范圍,其中加密范圍為數(shù)據(jù)、TIP尾,其中數(shù)據(jù)字段包含新IP頭、TCP或UDP頭以及具體的載荷數(shù)據(jù);認(rèn)證范圍與傳輸模式時相同,為IP頭中不變字段以及TIP頭中除自認(rèn)證碼字段以外的所有其他字段。
[0085]步驟2)進行數(shù)據(jù)通信時,源主機查詢與目的主機通信的對稱密鑰是否存在,若存在,獲取查詢到的對稱密鑰,若不存在,源主機根據(jù)己方的私鑰及目的主機的IP地址建立共享密鑰,由共享密鑰生成并存儲與目的主機通信的對稱密鑰;使用對稱密鑰對數(shù)據(jù)進行加密、生成消息認(rèn)證碼,并封裝成網(wǎng)絡(luò)報文發(fā)送給目的主機。
[0086]本實施例中,步驟2)的具體步驟為:
[0087]2.1)源主機預(yù)先在內(nèi)存中建立用于存儲目的主機IP地址與對稱會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT ;進行數(shù)據(jù)通信時,源主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與目的主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,若存在,獲取查詢到的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟2.3);若不存在,轉(zhuǎn)入執(zhí)行步驟2.2);
[0088]2.2)源主機將目的主機IP地址映射到橢圓曲線上得到第二映射點,并根據(jù)己方的私鑰和第二映射點采用雙線性對計算得到共享密鑰,使用共享密鑰生成與目的IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰并存入自信任網(wǎng)絡(luò)地址及密鑰表STT中;
[0089]2.3)在網(wǎng)絡(luò)層對待發(fā)送的載荷數(shù)據(jù)進行封裝,使用對稱會話密鑰采用加密算法對載荷數(shù)據(jù)及數(shù)據(jù)報頭進行加密并使用消息認(rèn)證密鑰生成消息認(rèn)證碼,將加密后的數(shù)據(jù)、所述加密算法以及消息認(rèn)證碼封裝進報文并根據(jù)發(fā)送模式填寫報文對應(yīng)的字段,獲得封裝后的網(wǎng)絡(luò)報文,將網(wǎng)絡(luò)報文發(fā)送給目的主機。
[0090]本實施例中,網(wǎng)絡(luò)中用戶將對稱會話密鑰和消息認(rèn)證密鑰以緩存的形式存儲在內(nèi)存中,通過建立IP地址與會話密鑰、消息認(rèn)證密鑰對應(yīng)關(guān)系的數(shù)據(jù)結(jié)構(gòu),構(gòu)成自信任網(wǎng)絡(luò)地址及密鑰表(Self-Trust Table,簡稱STT),存儲、管理會話密鑰和消息認(rèn)證密鑰。
[0091]本實施例通過緩存機制,暫時保存協(xié)商的臨時密鑰,可以有效減少密鑰協(xié)商的開銷。
[0092]本實施例中,用戶A向用戶B發(fā)送數(shù)據(jù)時,首先查詢自信任網(wǎng)絡(luò)地址及密鑰表STT,獲取存儲的緩存密鑰,若不存在緩存密鑰,由用戶A建立共享密鑰,具體方法為:用戶A將用戶B的IP地址映射到橢圓曲線上得到映射點Qb,并根據(jù)用戶A的私鑰SKa和映射點Qb采用雙線性對計算得到共享密鑰,用戶A計算共享密鑰公式如下式所示:
[0093]Ka = e (SKa, Qb)(I)
[0094]其中Ka為用戶A建立的共享密鑰,e表示雙線性映射,SKa為用戶A的私鑰,Qb為用戶B的IP地址映射得到的映射點。
[0095]本實施例中,步驟2.2)中用戶A生成對稱會話密鑰和消息認(rèn)證密鑰的具體實施方法為:將用戶A建立的共享密鑰Ka分別與兩個不同的字符串連接,采用SHAl算法的hash運算計算得到對稱會話密鑰、消息認(rèn)證密鑰,計算公式如下所示:
[0096]skey = SHAl(Ka |:Encryptionkey) (2)
[0097]hkey = SHAl(Ka |:HMAC-SHA1-key) (3)
[0098]其中skey為對稱會話密鑰,hkey為消息認(rèn)證密鑰,| |表示字符串連接,Encryptionkey表示生成對稱會話密鑰時對應(yīng)的字符串,HMAC-SHAl_key表示生成消息認(rèn)證密鑰時對應(yīng)的字符串。
[0099]本實施例中采用SHAl算法計算得到對稱會話密鑰、消息認(rèn)證密鑰,在其他實施例中還可以采用哈希算法的其他算法。
[0100]本實施例中,步驟2.3)的具體步驟包括:
[0101]2.3.1)將待發(fā)送的載荷數(shù)據(jù)按照分組大小的整數(shù)倍進行填充,記錄填充的字節(jié)數(shù)并將填充的字節(jié)數(shù)補充在填充字節(jié)后構(gòu)成報文尾;
[0102]2.3.2)判 斷待發(fā)送的載荷數(shù)據(jù)的發(fā)送模式,若為傳輸模式,由TCP或UDP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3),若為隧道模式,重新構(gòu)造IP頭并由整個IP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3);
[0103]2.3.3)使用對稱會話密鑰采用加密算法對數(shù)據(jù)字段、報文尾進行加密;將數(shù)據(jù)字段的協(xié)議格式、采用的加密算法、標(biāo)志位、報文的序列號封裝為報文頭;若報文頭中標(biāo)志位為1,則使用消息認(rèn)證密鑰對IP頭中不變字段、報文頭(不包括消息認(rèn)證碼)、數(shù)據(jù)字段、報文尾計算生成消息認(rèn)證碼并加入報文頭,否則不生成消息認(rèn)證碼;按照IP頭、報文頭、數(shù)據(jù)字段以及報文尾的順序進行串接,獲得封裝后的網(wǎng)絡(luò)報文,將網(wǎng)絡(luò)報文發(fā)送給目的主機,轉(zhuǎn)入執(zhí)行步驟3)。
[0104]本實施例中,步驟2.3.2)的具體實施方法為:源主機使用對稱會話密鑰采用對稱加密算法對數(shù)據(jù)字段及TIP頭進行加密,對稱加密算法采用AES或3DES對稱加密算法;使用消息認(rèn)證密鑰采用HMAC-SHA1算法對IP頭中不變字段、TIP頭(不包括自認(rèn)證碼字段)、數(shù)據(jù)字段、TIP尾計算得到20字節(jié)的消息認(rèn)證碼,具體的加密范圍及認(rèn)證范圍如上所述。
[0105]如圖7所示,本實施例中步驟2)具體實現(xiàn)流程,作為源主機的用戶A向作為目的主機的用戶B發(fā)送數(shù)據(jù)時,首先查詢自信任網(wǎng)絡(luò)地址及密鑰表STT中是否存在與用戶B通信的緩存密鑰,若存在,直接使用查詢到的緩存密鑰,若不存在,則進行計算;用戶A計算密鑰時,首先將用戶B的IP地址映射到橢圓曲線群上得到一個映射點,并由得到的映射點與根據(jù)用戶A的私鑰采用雙線性對計算得到共享密鑰,共享密鑰與字符串連接后采用SHAl算法生成對稱會話密鑰和消息認(rèn)證密鑰,加入自信任網(wǎng)絡(luò)地址及密鑰表STT中。獲得對稱會話密鑰和消息認(rèn)證密鑰后,判斷發(fā)送模式并根據(jù)發(fā)送模式填寫報文相應(yīng)字段,若為傳輸模式,TIP頭中下個頭協(xié)議字段填寫TCP或UDP協(xié)議號,若為隧道模式,下個頭協(xié)議字段填寫IP協(xié)議號,重新構(gòu)造IP頭,將整個IP報文作為數(shù)據(jù)層;將發(fā)送模式對應(yīng)的字段進行加密和認(rèn)證,完成TIP報文的構(gòu)建。
[0106]步驟3)目的主機接收網(wǎng)絡(luò)報文,根據(jù)目的主機的私鑰及源主機的IP地址建立目的主機的共享密鑰并根據(jù)共享密鑰獲取對稱密鑰,由對稱密鑰對接收的網(wǎng)絡(luò)報文進行認(rèn)證及解密處理。
[0107]如圖8所示,本實施例中步驟3)具體實現(xiàn)流程,步驟包括:
[0108]3.1)目的主機預(yù)先在內(nèi)存中建立源主機IP地址與會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT中;進行數(shù)據(jù)通信時,目的主機接收網(wǎng)絡(luò)報文并判斷報文是否為過期報文,若為是,丟棄報文;若為否,轉(zhuǎn)入執(zhí)行步驟3.2);
[0109]3.2)目的主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與源主機IP地址對應(yīng)的對稱會話密鑰與消息認(rèn)證密鑰,若存在,獲取對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟3.4);若不存在,轉(zhuǎn)入執(zhí)行步驟3.3);
[0110]3.3)目的主機將源主機的IP地址映射到橢圓曲線上得到第三映射點,并根據(jù)第三映射點和己方的私鑰采用雙線性對計算得到共享密鑰,使用共享密鑰生成與源主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟3.4);
[0111]3.4)判斷報文頭中的標(biāo)志位,若為1,轉(zhuǎn)入執(zhí)行步驟3.5),若為0,轉(zhuǎn)入執(zhí)行步驟
3.6);
[0112]3.5)使用消息認(rèn)證密鑰計算報文的IP頭中不變字段、除去自認(rèn)證碼字段的報文頭、數(shù)據(jù)字段以及報文尾的摘要值,判斷摘要值與報文中的自認(rèn)證碼字段是否一致,若一致,轉(zhuǎn)入執(zhí)行步驟3.6),若不一致,丟棄接收的報文并退出;
[0113]3.6)對網(wǎng)絡(luò)報文進行解析,根據(jù)發(fā)送模式使用對稱會話密鑰及加密算法對應(yīng)的解密算法對網(wǎng)絡(luò)報文進行解密,并將解密后數(shù)據(jù)根據(jù)發(fā)送模式提交給上層協(xié)議或進行進一步轉(zhuǎn)發(fā)。[0114]本實施例中,與源主機生成消息認(rèn)證碼方法對應(yīng)的,目的主機接收到網(wǎng)絡(luò)報文后使用目的主機計算得到的消息認(rèn)證密鑰計算報文的IP頭中不變字段、除去自認(rèn)證碼字段的TIP頭、數(shù)據(jù)字段以及TIP尾的摘要值,使用摘要值判斷是否與接收的網(wǎng)絡(luò)報文中自認(rèn)證碼一致,若一致,認(rèn)證通過并使用對稱會話密鑰進行解密;若不一致,認(rèn)證不通過,丟棄接收的報文。
[0115]本實施例中,用戶B建立共享密鑰的具體方法為:用戶B將用戶A的IP地址映射到橢圓曲線上得到映射點Qa,并根據(jù)映射點Qa和用戶B的私鑰SKb采用雙線性對計算得到共享密鑰,用戶B計算共享密鑰的公式如下所示:
[0116]Kb = e (Qa, SKb) (4)
[0117]其中Kb為用戶B建立的共享密鑰,e表示雙線性映射,Qa為用戶A的IP地址映射得到的映射點,SKb為用戶B的私鑰。
[0118]本實施例中,步驟3.1)中目的主機接收網(wǎng)絡(luò)報文并判斷是否為過期報文的具體步驟為:
[0119]3.1.1)接收網(wǎng)絡(luò)報文并判斷判斷網(wǎng)絡(luò)報文是否為源主機發(fā)送的第一個網(wǎng)絡(luò)報文,若為是,根據(jù)第一個網(wǎng)絡(luò)報文中序列號的值N建立滑動窗口并選定窗口大小M,轉(zhuǎn)入執(zhí)行步驟3.2);若為否,轉(zhuǎn)入執(zhí)行步驟3.1.2);
[0120]3.1.2)判斷報文的序列號的值m在滑動窗口中的位置,若滿足m〈N_M,則判定報文不在滑動窗口內(nèi),直接丟棄報文;若滿足N-M〈m〈N,判定報文在滑動窗口內(nèi),轉(zhuǎn)入執(zhí)行步驟
3.2);若滿足m>N,則更新滑動窗口為報文的序列號的值m,即令N = m,使N的值更新為當(dāng)前所接收報文序列號的最大值。
[0121]本實施例中用戶A建立與用戶B的共享密鑰為Ka = e (SKa, Qb),其中SKa = sQa。帶入公式并利用雙線性對的性質(zhì),得:
[0122]Ka = e (sQa, Qb) = e (Qa, Qb)3 (5)
[0123]用戶B建立與用戶A的共享密鑰為Kb = e (Qa, SKb)。同理,由SKb = sQb可得:
[0124]Kb = e (Qa, sQb) = e (Qa, Qb) (6)
[0125]因此Ka = Kb,即源主機與目的主機在雙方不需要任何通信的情況下,根據(jù)地址,即公鑰,和私鑰即可建立一套共享密鑰,而這一密鑰除了 STA以外,任何一個第三方是無法計算得出的。
[0126]本實施例在地址即公鑰的自安全輕量級網(wǎng)絡(luò)中進行數(shù)據(jù)通信時,通信雙方根據(jù)己方的私鑰和對方的IP地址建立共享密鑰,直接由建立的共享密鑰生成會話密鑰及消息認(rèn)證密鑰,共享密鑰的建立過程簡單、應(yīng)用靈活,能夠?qū)崿F(xiàn)共享密鑰協(xié)商的零交互,從而避免了在只發(fā)送一些控制報文時需要使用更多報文進行協(xié)商的情況。
[0127]本實施例中,用戶B生成稱會話密鑰和消息認(rèn)證密鑰的方法與源主機相同,通過將用戶B建立的共享密鑰Kb分別與不同字符串連接,并采用SHAl算法計算得到對稱會話密鑰和消息認(rèn)證密鑰,用戶B生成對稱會話密鑰和消息認(rèn)證密鑰的表達(dá)式如下所示:
[0128]skey = SHAl (Kb |: Encryptionkey) (7)
[0129]hkey = SHAl (Kb |: HMAC-SHA1-key) (8)
[0130]其中skey為對稱會話密鑰,hkey為消息認(rèn)證密鑰,| |表示字符串連接,Encryptionkey表示生成對稱會話密鑰時對應(yīng)的字符串,HMAC-SHAl_key表示生成消息認(rèn)證密鑰時對應(yīng)的字符串。
[0131]本實施例中,步驟3.5)的具體實施方法為:利用HMAC-SHA1算法結(jié)合消息認(rèn)證密鑰hkey計算網(wǎng)絡(luò)IP頭中不變字段、不包括自認(rèn)證碼字段的TIP頭、數(shù)據(jù)字段和TIP尾三個部分(圖4、6中陰影填充所示的部分)的摘要值,判斷摘要值與報文中的20字節(jié)自認(rèn)證碼是否一致,若不一致,直接丟棄報文,若一致,則報文認(rèn)證通過。
[0132]本實施例通過共享密鑰生成的對稱會話密鑰、消息認(rèn)證密鑰對報文進行加密、認(rèn)證,能夠有效保護傳輸數(shù)據(jù)的安全,采用雙線性映射生成會話密鑰,以最小的開銷建立安全會話。
[0133]本實施例中,步驟3.6)的具體步驟為:
[0134]3.6.1)根據(jù)報文頭中數(shù)據(jù)字段的協(xié)議格式判斷報文的發(fā)送模式,若協(xié)議格式為TCP或UDP協(xié)議,判定發(fā)送模式為傳輸模式,轉(zhuǎn)入執(zhí)行步驟3.6.2);若協(xié)議格式為IP協(xié)議,判定發(fā)送模式為隧道模式,轉(zhuǎn)入執(zhí)行步驟3.6.3);
[0135]3.6.2)從報文頭中獲取報文采用的加密算法,使用加密算法對應(yīng)的解密算法及對稱會話密鑰對報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位,根據(jù)數(shù)據(jù)位去除報文尾中相應(yīng)位數(shù)的填充數(shù)據(jù)位,得到還原的解密數(shù)據(jù),將還原的解密數(shù)據(jù)提交至TCP或UDP上層協(xié)議并退出;
[0136]3.6.3)從報文頭中獲取報文采用的加密算法,使用加密算法對應(yīng)的解密算法及對稱會話密鑰對報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位數(shù),根據(jù)數(shù)據(jù)位數(shù)去除報文尾中相應(yīng)位數(shù)的填充數(shù)據(jù)位,得到還原的解密數(shù)據(jù),將還原的解密數(shù)據(jù)按照數(shù)據(jù)中IP報文的目的地址進行進一步轉(zhuǎn)發(fā)并退出。
[0137]本實施例中,對網(wǎng)絡(luò)報文進行解析時,根據(jù)TIP頭中下個頭協(xié)議字段判斷網(wǎng)絡(luò)報文的發(fā)送模式,若下個頭協(xié)議為TCP或UDP協(xié)議,判定為傳輸模式;若下個頭協(xié)議為IP協(xié)議,為判定為隧道模式。傳輸模式時,從TIP頭中獲取加密協(xié)議字段獲取加密算法的編號,得到報文采用的加密算法,使用加密算法對應(yīng)的解密算法及對稱會話密鑰對數(shù)據(jù)字段、TIP尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到TIP尾中填充長度,獲取填充的數(shù)據(jù)位數(shù)并根據(jù)填充的位數(shù)去除報文尾中填充數(shù)據(jù)位,得到還原的解密數(shù)據(jù),將還原的解密數(shù)據(jù)提交至TCP或UDP等上層協(xié)議進行進一步處理。隧道模式時,采用與傳輸模式相同的方法獲得還原的解密數(shù)據(jù),與傳輸模式不同的是,隧道模式得到的還原的解密數(shù)據(jù)為一個完整的IP報文,按照IP報文的目的地址進一步轉(zhuǎn)發(fā)報文,而不將報文提交至上層協(xié)議。
[0138]上述只是本發(fā)明的較佳實施例,并非對本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明。任何熟悉本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍的情況下,都可利用上述揭示的技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明技術(shù)實質(zhì)對以上實施例所做的任何簡單修改、等同變化及修飾,均應(yīng)落在本發(fā)明技術(shù)方案保護的范圍內(nèi)。
【權(quán)利要求】
1.一種地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于具體實施步驟如下: 1)為網(wǎng)絡(luò)中的每臺主機分配IP地址并根據(jù)IP地址生成對應(yīng)的私鑰,每臺主機啟動時獲取所述IP地址及對應(yīng)的私鑰; 2)進行數(shù)據(jù)通信時,源主機查詢與目的主機通信的對稱密鑰是否存在,若存在,獲取查詢到的對稱密鑰,若不存在,源主機根據(jù)己方的私鑰及目的主機的IP地址建立共享密鑰,由所述共享密鑰生成并存儲與目的主機通信的對稱密鑰;使用所述對稱密鑰對數(shù)據(jù)進行加密、生成消息認(rèn)證碼,并封裝成網(wǎng)絡(luò)報文發(fā)送給目的主機; 3)目的主機接收網(wǎng)絡(luò)報文,查詢與源主機通信的對稱密鑰是否存在,若存在,獲取查詢到的對稱密鑰,若不存在,目的主機根據(jù)己方的私鑰及源主機的IP地址建立共享密鑰,由所述共享密鑰生成并存儲與源主機通信的對稱密鑰;使用所述對稱密鑰對接收的網(wǎng)絡(luò)報文進行認(rèn)證及解密處理。
2.根據(jù)權(quán)利要求1所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述對稱密鑰包括對稱會話密鑰和消息認(rèn)證密鑰,所述對稱會話密鑰和所述消息認(rèn)證密鑰由所述共享密鑰分別與不同的字符串連接并采用哈希算法計算得到。
3.根據(jù)權(quán)利要求2所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于:所述步驟I)中根據(jù)IP地址生成對應(yīng)的私鑰的具體實施步驟如下:將IP地址采用基于橢圓曲線的IP映射規(guī)則映射為橢圓曲線上的一點,得到第一映射點;設(shè)置私有參數(shù),并將私有參數(shù)與第一映射點相乘的結(jié)果作為所述IP地址對應(yīng)的私鑰。
4.根據(jù)權(quán)利要求2或3所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述步驟2)的具體步驟如下: .2.1)源主機預(yù)先在內(nèi)存中建立用于存儲目的主機IP地址與對稱會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT ;進行數(shù)據(jù)通信時,源主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與目的主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,若存在,獲取查詢到的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟2.3);若不存在,轉(zhuǎn)入執(zhí)行步驟2.2); . 2.2)源主機將目的主機IP地址映射到橢圓曲線上得到第二映射點,并根據(jù)己方的私鑰和第二映射點采用雙線性對計算得到共享密鑰,使用所述共享密鑰生成與目的主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰并存入自信任網(wǎng)絡(luò)地址及密鑰表STT中; . 2.3)在網(wǎng)絡(luò)層對待發(fā)送的載荷數(shù)據(jù)進行封裝,使用所述對稱會話密鑰采用加密算法對載荷數(shù)據(jù)及數(shù)據(jù)報頭進行加密并使用所述消息認(rèn)證密鑰生成消息認(rèn)證碼,將加密后的數(shù)據(jù)、所述加密算法以及消息認(rèn)證碼封裝進報文并根據(jù)發(fā)送模式填寫報文對應(yīng)的字段,獲得封裝后的網(wǎng)絡(luò)報文,將所述網(wǎng)絡(luò)報文發(fā)送給目的主機。
5.根據(jù)權(quán)利要求4所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述步驟2.3)的具體步驟如下: .2.3.1)將待發(fā)送的載荷數(shù)據(jù)按照分組大小的整數(shù)倍進行填充,記錄填充的字節(jié)數(shù)并將填充的字節(jié)數(shù)補充在填充字節(jié)后構(gòu)成報文尾; . 2.3.2)判斷待發(fā)送的載荷數(shù)據(jù)的發(fā)送模式,若為傳輸模式,由TCP或UDP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3),若為隧道模式,重新構(gòu)造IP頭并由整個IP數(shù)據(jù)包構(gòu)成數(shù)據(jù)字段,轉(zhuǎn)入執(zhí)行步驟2.3.3); .2.3.3)使用所述對稱會話密鑰采用加密算法對數(shù)據(jù)字段、報文尾進行加密;將數(shù)據(jù)字段的協(xié)議格式、所述加密算法、標(biāo)志位、報文的序列號封裝為報文頭;若報文頭中標(biāo)志位為.1,則使用所述消息認(rèn)證密鑰對IP頭中不變字段、報文頭、數(shù)據(jù)字段以及報文尾計算生成消息認(rèn)證碼并加入報文頭,否則不生成消息認(rèn)證碼;按照IP頭、報文頭、數(shù)據(jù)字段以及報文尾的順序進行串接,獲得封裝后的網(wǎng)絡(luò)報文;將所述網(wǎng)絡(luò)報文發(fā)送給目的主機,轉(zhuǎn)入執(zhí)行步驟.3)。
6.根據(jù)權(quán)利要求5所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述步驟3)的具體步驟如下: .3.1)目的主機預(yù)先在內(nèi)存中建立用于存儲源主機IP地址與對稱會話密鑰、消息認(rèn)證密鑰的對應(yīng)關(guān)系的自信任網(wǎng)絡(luò)地址及密鑰表STT ;進行數(shù)據(jù)通信時,目的主機接收網(wǎng)絡(luò)報文并判斷報文是否為過期報文,若為是,丟棄接收的網(wǎng)絡(luò)報文并退出;若為否,轉(zhuǎn)入執(zhí)行步驟 3.2); .3.2)目的主機查詢自信任網(wǎng)絡(luò)地址及密鑰表STT是否存在與源主機IP地址對應(yīng)的對稱會話密鑰與消息認(rèn)證密鑰,若存在,獲取對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟.3.4);若不存在,轉(zhuǎn)入執(zhí)行步驟3.3); .3.3)目的主機將源主機的IP地址映射到橢圓曲線上得到第三映射點,并根據(jù)第三映射點和己方的私鑰采用雙線性對計算得到共享密鑰,使用所述的共享密鑰生成與源主機IP地址對應(yīng)的對稱會話密鑰和消息認(rèn)證密鑰,轉(zhuǎn)入執(zhí)行步驟3.4); .3.4)判斷報文頭中的標(biāo)志位,若為I,轉(zhuǎn)入執(zhí)行步驟3.5),若為O,轉(zhuǎn)入執(zhí)行步驟3.6); .3.5)使用所述消息認(rèn)證密鑰計算網(wǎng)絡(luò)報文的IP頭中不變字段、除去消息認(rèn)證碼的報文頭、數(shù)據(jù)字段以及報文尾的摘要值,判斷摘要值與報文中的消息認(rèn)證碼是否一致,若一致,轉(zhuǎn)入執(zhí)行步驟3.6),若不一致,丟棄接收的網(wǎng)絡(luò)報文并退出; .3.6)對網(wǎng)絡(luò)報文進行解析,根據(jù)發(fā)送模式使用所述對稱會話密鑰及所述加密算法對應(yīng)的解密算法對報文進行解密,并將解密后的數(shù)據(jù)根據(jù)發(fā)送模式提交給上層協(xié)議或進行進一步轉(zhuǎn)發(fā)。
7.根據(jù)權(quán)利要求6所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述步驟3.1)中目的主機接收網(wǎng)絡(luò)報文并判斷報文是否為過期報文的具體步驟如下: .3.1.1)接收網(wǎng)絡(luò)報文并判斷網(wǎng)絡(luò)報文是否為源主機發(fā)送的第一個網(wǎng)絡(luò)報文,若為是,根據(jù)第一個網(wǎng)絡(luò)報文的所述報文的序列號的值N建立滑動窗口并選定窗口大小M,轉(zhuǎn)入執(zhí)行步驟3.2);若為否,轉(zhuǎn)入執(zhí)行步驟3.1.2); .3.1.2)判斷報文的序列號的值m在滑動窗口中的位置,若滿足m〈N-M,則判定報文不在滑動窗口內(nèi),直接丟棄報文;若滿足N-M〈m〈N,判定報文在滑動窗口內(nèi),轉(zhuǎn)入執(zhí)行步驟3.2);若滿足m>N,則更新滑動窗口為報文的序列號的值m。
8.根據(jù)權(quán)利要求6所述的地址即公鑰的自安全輕量級網(wǎng)絡(luò)報文傳輸方法,其特征在于,所述步驟3.6)的具體步驟如下: .3.6.1)根據(jù)報文頭中所述數(shù)據(jù)字段的協(xié)議格式判斷報文的發(fā)送模式,若協(xié)議格式為TCP或UDP協(xié)議,判定發(fā)送模式為傳輸模式,轉(zhuǎn)入執(zhí)行步驟3.6.2);若協(xié)議格式為IP協(xié)議,判定發(fā)送模式為隧道模式,轉(zhuǎn)入執(zhí)行步驟3.6.3);`3.6.2)從報文頭中獲取網(wǎng)絡(luò)報文采用的加密算法,使用所述加密算法對應(yīng)的解密算法及所述對稱會話密鑰對網(wǎng)絡(luò)報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位數(shù),根據(jù)所述數(shù)據(jù)位數(shù)去除報文尾中填充的數(shù)據(jù)位,得到還原的解密數(shù)據(jù);將所述解密數(shù)據(jù)提交至TCP或UDP上層協(xié)議并退出; `3.6.3)從報文頭中獲取網(wǎng)絡(luò)報文采用的加密算法,使用所述加密算法對應(yīng)的解密算法及所述對稱會話密鑰對網(wǎng)絡(luò)報文中數(shù)據(jù)字段及報文尾進行解密;讀取解密數(shù)據(jù)的最后一個字節(jié)得到填充的數(shù)據(jù)位數(shù),根據(jù)所述數(shù)據(jù)位數(shù)去除報文尾中填充的數(shù)據(jù)位,得到還原的解密數(shù)據(jù);將所述解 密數(shù)據(jù)按照數(shù)據(jù)中IP報文的目的地址進行進一步轉(zhuǎn)發(fā)并退出。
【文檔編號】H04L9/30GK103929299SQ201410174815
【公開日】2014年7月16日 申請日期:2014年4月28日 優(yōu)先權(quán)日:2014年4月28日
【發(fā)明者】王小峰, 周寰 申請人:王小峰