国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于國密算法SM2的IPSecVPN技術(shù)

2016-05-16 01:33:54程鳳偉
關(guān)鍵詞:國密加解密公鑰

程鳳偉

(太原學(xué)院,山西 太原 030032)

1 引 言

計算機的飛速發(fā)展對社會產(chǎn)生了深遠影響,并將長期持續(xù)下去,網(wǎng)絡(luò)技術(shù)的發(fā)展也隨之亦步亦趨。隨之凸顯的就是網(wǎng)絡(luò)安全,其中安全隱患是制約公共網(wǎng)絡(luò)發(fā)展的一個重要因素。在日常生活中,人們對網(wǎng)絡(luò)的依賴性越來越強,但是網(wǎng)絡(luò)遭到的惡意攻擊也呈現(xiàn)出越來越頻繁的態(tài)勢,這種情況需要安全設(shè)備來保護網(wǎng)絡(luò)內(nèi)部的用戶不被破壞,并能夠及時發(fā)現(xiàn)主動抵御其攻擊,為用戶的正常網(wǎng)絡(luò)訪問提供一個安全隧道。近些年,VPN 技術(shù)在網(wǎng)絡(luò)安全基礎(chǔ)設(shè)施當(dāng)中,起到了重要的作用。

考慮到算法的容錯性,本文所提出的算法不僅要符合國際通信標(biāo)準,實現(xiàn)國家密碼局[5,6]發(fā)布的國家標(biāo)準安全算法,更要實現(xiàn)安全IPSecVPN 的國產(chǎn)化。安全通信領(lǐng)域的常見安全算法有以下幾種,根據(jù)其安全功能的不同可以分為對稱算法、非對稱的公鑰算法、摘要算法、簽名算法(公鑰算法也能夠作為簽名算法使用),這幾種都屬于最基本的算法,在特殊的使用情形下,可能會衍生出新的算法。近幾年,這些算法得到了廣泛的應(yīng)用,能夠非常成熟地應(yīng)用到各個領(lǐng)域。

2 IPSecVPN技術(shù)的系統(tǒng)結(jié)構(gòu)

IPSecVPN 系統(tǒng)的結(jié)構(gòu)根據(jù)安全功能分為幾個大塊:AH 通信、ESP 加密、IKE 密鑰管理協(xié)商[6]以及應(yīng)用客戶端幾個部分。其中除了應(yīng)用客戶端是部署在客戶機上以外,其他的幾個部分,都是部署在Struts 架構(gòu)的JSP 服務(wù)器上,通過調(diào)用系統(tǒng)集成模塊,為實際應(yīng)用的提供服務(wù)。系統(tǒng)結(jié)構(gòu)圖如圖1 IPSecVPN 系統(tǒng)結(jié)構(gòu)所示:

圖1 IPSecVPN 系統(tǒng)結(jié)構(gòu)

IPSecVPN 加密算法的主要步驟總結(jié)如下:

Step1:IPSecVPN 通信模塊在4043 端口監(jiān)聽訪問請求。

Step2:用戶通過客戶端JApplet 發(fā)起IPSecVPN對應(yīng)所在地址的服務(wù)請求之后,用戶通過JSP 服務(wù)器用戶名、密碼認證,通過AH 建立和IPSecVPN 服務(wù)器的連接。

Step3:通過IKE 部分進行密鑰協(xié)商,建立會話密鑰。

Step4:建立IPSec 隧道,同時建立和制定IP 對應(yīng)的服務(wù)器以上述同樣的方式建立IPSec 隧道,實現(xiàn)雙方的IPSec 隧道互聯(lián)。

3 IPSecVPN加密技術(shù)的安全功能設(shè)計

基于國密算法IPSevVPN 技術(shù)的安全設(shè)計包括以下幾個方面:簽名設(shè)計、國密密匙交換設(shè)計和安全隧道設(shè)計。

簽名設(shè)計是通過前面k 倍點的運算得知公鑰加密算法的基本原理,G 點是生成元,dA 是用戶持有的私鑰,PA 是dA 倍點下計算得出的公鑰。將ZA 的公共信息以及公鑰等其他標(biāo)識一起構(gòu)成M0`,通過散列計算得出e,在通過生產(chǎn)的k 隨機數(shù)計算k 倍點(x1,y1)。通過e 和x1 的相加操作得出r,以及(1+dA)的逆和k-r*dA 的乘積,作為s 部分。兩個作為最終輸出校驗發(fā)送給用戶B,當(dāng)然M 也發(fā)送給用戶B。用戶同樣通過公共信息ZA 和M`構(gòu)成M1`。在同樣的方式計算e`,而x1`,和y1` 通過s` 倍點和t 倍的PA 公鑰計算得出。同樣的方式計算得出R,然后和傳送的r 進行比對,完成驗證簽名工作。下面的過程中,r 為:BCDCC3FB2,B976F821,012ABDC0,6B6 D4D60,87E9B71B,7E2D9A60,DD3F6463,39E2522C。國密簽名運算方式如下表1 國密簽名所示:

表1 國密簽名

國密密匙交換設(shè)計是通過兩個用戶之間建立會話以后協(xié)商會話密鑰的具體取值,它們通過一方發(fā)起,另外一方被動響應(yīng),最終一致決定采取密鑰Key。這里假設(shè)A 發(fā)起、B 響應(yīng)。變量w 為n 的以2為底的對數(shù)取值折半求頂部函數(shù)減一。n 為隨機數(shù)的值域上限也是G 生成元的階,rA 的整體取值是[1,n-1]。用戶A:完成如下事件,產(chǎn)生隨機數(shù)rA,計算橢圓曲線的rA 倍點RA,并求得x,y 坐標(biāo);將橢圓曲線隨機數(shù)RA 發(fā)送給對方用戶B。用戶B:并行完成如下事件,同樣的方式產(chǎn)生隨機數(shù)rB,RB。并將x2 坐標(biāo)對應(yīng)bit 位進行取反操作,即0 變1,1 變0。得出x2`。結(jié)合用戶私鑰導(dǎo)出隨機運算后的tB。然后驗證RA 的橢圓曲線域合法性,同樣方式計算法x1`,以及橢圓曲線點V,驗證V 的橢圓曲線域合法性。通過密鑰派生函數(shù)KDF 將V 以及A、B 的標(biāo)識特征、還有密鑰長度作為參數(shù)生成派生密鑰KB。將這些信心進行連接以及摘要生成記作SB,把RB,SB發(fā)送給用戶A。用戶A:計算x1`,計算tA,驗證RB,計算x2`。(注:這里的計算方式同用戶B 的過程完全相同)計算對應(yīng)的橢圓點U,將U 作為參數(shù)同樣生產(chǎn)派生密鑰KA,并計算S1,并和用戶B 傳送過來的SB 比較,不同則失敗。同樣計算SA,并發(fā)送給用戶B。B:計算摘要結(jié)果S2,并檢驗S2 和SA 的相同性,不同則失敗。詳情見表2 密鑰交換協(xié)議數(shù)據(jù)實例所示:

表2 密鑰交換協(xié)議數(shù)據(jù)實例

密鑰交換協(xié)議通過用戶A,B 的相互協(xié)商,共同產(chǎn)生了會話密鑰:D417B800,6C48CE08,F(xiàn)EB57500,74FC56E8,4FBB20F4,A90B2A34,DCFCF150,1A48 7D1F,292BA942,0E30F3C3,BB78AEE3,5A14534D。

安全隧道設(shè)計包括應(yīng)用層設(shè)計和內(nèi)核設(shè)計,本系統(tǒng)在Linux 平臺下集成實現(xiàn)IPSecVPN 技術(shù)的VPN 服務(wù)器,最終使得服務(wù)器能夠進行IKE 密鑰協(xié)商交換,運用已實現(xiàn)的加密模塊實現(xiàn)VPN 連接后的數(shù)據(jù)報加密解密功能。通過在Linux 系統(tǒng)下結(jié)合已有的OpenSwan 軟件系統(tǒng)完成系統(tǒng)調(diào)用級別的設(shè)計;在應(yīng)用層次使用pluto 進程,實現(xiàn)服務(wù)的提供和模塊嵌入;系統(tǒng)內(nèi)核層的IPSec 實現(xiàn),采用NETKEY。在該內(nèi)核部分,將國密算法的實現(xiàn)作為模塊加入,使系統(tǒng)能夠載入該模塊,并能夠在合適的時機和其他應(yīng)用請求程序交互,完成VPN 服務(wù)。其應(yīng)用層和內(nèi)核部分各自完成自身的任務(wù),其中應(yīng)用層包括基本的系統(tǒng)配置、IKE 協(xié)商功能以及身份的驗證等應(yīng)用功能。內(nèi)核層面完成IP 數(shù)據(jù)包VPN 封裝以及拆封功能、數(shù)據(jù)的安全功能。內(nèi)核設(shè)計又包括策略配置和IP 數(shù)據(jù)包封裝和接封裝。策略配置:NETKEY 在數(shù)據(jù)包發(fā)送和接收的時候,都要對其包進行檢查和判別。在這個過程當(dāng)中,通過SP 和SA數(shù)據(jù)庫檢索實現(xiàn)隧道通信轉(zhuǎn)發(fā)。對于數(shù)據(jù)庫的配置策略以及資源分配,需要在conf.xml 文件當(dāng)中對應(yīng)實現(xiàn)配置,結(jié)合實際部署運行需求配置最佳的分配策略使得服務(wù)器性能能夠得到最大化的發(fā)揮,取得良好的VPN 服務(wù)效果。IP 數(shù)據(jù)包封裝以及解封裝:在該部分,通過對PF_KEY 密鑰管理套接字接口的實現(xiàn)來完成具體的國密加密和通信解密。IP 頭后面的數(shù)據(jù)在轉(zhuǎn)發(fā)的時候完成對應(yīng)數(shù)據(jù)報部分的加密,在接受數(shù)據(jù)的時候,按照會話密鑰協(xié)定信息,完成對應(yīng)數(shù)據(jù)信息的解密。在數(shù)據(jù)的完整性保證方面,還要附加一段簽名信息,在簽名信息實現(xiàn)的過程當(dāng)中也需要用到摘要和公鑰,數(shù)據(jù)完整性保證在前面的算法協(xié)議中已經(jīng)做了充分的敘述,這里不再具體展開說明。

4 IPSecVPN加密技術(shù)的注冊和數(shù)據(jù)完整性驗證

IPSec 數(shù)據(jù)包可以通過SA 數(shù)據(jù)庫進行查找自動獲取管理信息,找到對應(yīng)的加密算法,從而把協(xié)商密鑰提取出來。對該數(shù)據(jù)進行加解密操作,通過SP數(shù)據(jù)庫的相關(guān)鏈接信息判斷該數(shù)據(jù)包該采取何種算法加密解密,引導(dǎo)系統(tǒng)采取正群的算法庫進行加解密操作。內(nèi)核的密碼算法庫需要在其根目錄crypto下面提供新加入國密算法的注冊信息,這樣才能讓系統(tǒng)在調(diào)用系統(tǒng)加密模塊階段正確找到模塊位置執(zhí)行代碼調(diào)入操作。

Linux 內(nèi)核提供加解密核心調(diào)用框架,該部分既包括了算法模塊的注冊機制,也提供數(shù)據(jù)分組加密機制的提供,常見的直接支持的有CBC 與CCM,但是我們這里采用了CTR 高效并發(fā)運作的機制,因此也需要在這個部分添加這種分組機制,提供加解密效率。

算法的注冊機制通過內(nèi)核全局鏈表來反應(yīng)這種注冊情況,通過定義該加解密數(shù)據(jù)結(jié)構(gòu)并將調(diào)用注冊函數(shù)實現(xiàn)算法的注冊和注銷。注冊算法名稱為Crypto_register_alg(),注銷算法名稱為Crypto_unregi ster_alg()。要想進一步了解加解密算法的具體結(jié)構(gòu)細節(jié),要到include/crypto 下面看其頭文件。

分組模式和加解密函數(shù)的聯(lián)合調(diào)用是系統(tǒng)內(nèi)部可以自動完成的工作,只需要在配置文件完成配置即可,因此在函數(shù)實現(xiàn)的部分,采用了直接的一個分組下的數(shù)據(jù)數(shù)組進行加解密操作,作為加解密引擎模塊嵌入系統(tǒng)。例如SM2 的256 位實現(xiàn),只需要完成256 位數(shù)組的加密引擎算法即可。

在算法配置部分,對通信分組模式進行設(shè)定,OTR 通信模式設(shè)計,將消息按照OTR 方式分組傳送OTR 模式運行方式如圖2 所示:

圖2 通信OTR 分組數(shù)據(jù)加密

在ESP 協(xié)議對其數(shù)據(jù)進行加密處理之后,數(shù)據(jù)包尾部加入簽名信息,確保數(shù)據(jù)信息的完整性,能夠抵御敵手在篡改密文的情況下不被發(fā)現(xiàn)。這對應(yīng)予接受端用戶首先要根據(jù)IPSecSA 頭部信息規(guī)定的協(xié)議要求進行完整性驗證,即把簽名先提取出來,然后進行完整性匹配,只有通過該驗證的才執(zhí)行下面的操作,否則丟棄數(shù)據(jù)包并要求對方重新發(fā)送。驗證算法同樣和加密算法在crypto 根目錄下面添加注冊信息,將國密驗證簽名算法加載到算法模塊當(dāng)中,使得在數(shù)據(jù)插入簽名段和驗證完整性簽名之前能夠正確找到該算法。

5 整體組網(wǎng)設(shè)計和測試

用同樣的方式部署兩臺Linux 服務(wù)器,并能夠互相之間建立網(wǎng)絡(luò)連接,它們下面都有自己的子網(wǎng),Linux 上面部署了IPSec 工具箱,部署編譯好的國密算法模塊,并添加系統(tǒng)加密庫注冊,以及安裝Tcpdump 檢測工具,能夠?qū)崟r抓包,發(fā)現(xiàn)其報文數(shù)據(jù)內(nèi)容的變化。簽發(fā)證書通過創(chuàng)建證書界面完成證書的創(chuàng)建工作。

創(chuàng)建證書之后,在命令行完成簽署證書的工作,然后配置系統(tǒng)的網(wǎng)關(guān)、子網(wǎng)配置、證書路徑、證書的名稱、IKE 配置、信息通信模式、加密算法、簽名算法、摘要算法、DH 隨機算法、以及ESP 協(xié)議配置、AH 配置等。完成IPSec 基本連接和加解密參數(shù)的相關(guān)配置,實現(xiàn)可連接。

子網(wǎng)設(shè)備通過通信聊天工具和對方的通信聊天工具進行數(shù)據(jù)通信,通過Tcpdump 進行抓包,分析其數(shù)據(jù)的格式,查看器VPN 工作狀態(tài)。

6 結(jié)束語

本文主要對基于國密算法的IPSecVPN 進行了設(shè)計,從國密算法以及安全隧道應(yīng)用層以及內(nèi)核層進行了研究和設(shè)計,該方案對于IPSecVPN 的國產(chǎn)化提供了一個安全解決方案,對安全產(chǎn)品生產(chǎn)企業(yè)[7]有重要的應(yīng)用價值。

猜你喜歡
國密加解密公鑰
國密技術(shù)在智能燃氣表系統(tǒng)的應(yīng)用與分析
煤氣與熱力(2021年7期)2021-08-23 01:11:14
Hyperledger Fabric平臺的國密算法嵌入研究
一種基于混沌的公鑰加密方案
自助終端設(shè)備國密改造方法探究
基于國密算法的銀行移動營銷終端安全系統(tǒng)研究
電子測試(2018年9期)2018-06-26 06:45:40
HES:一種更小公鑰的同態(tài)加密算法
電子取證中常見數(shù)據(jù)加解密理論與方法研究
基于FPGA的LFSR異步加解密系統(tǒng)
SM2橢圓曲線公鑰密碼算法綜述
網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募咏饷芟到y(tǒng)研究
軟件工程(2014年11期)2014-11-15 20:02:46
安徽省| 凤山市| 长治市| 锡林浩特市| 新余市| 万荣县| 绥宁县| 石家庄市| 元阳县| 尼勒克县| 义马市| 高台县| 白山市| 茂名市| 民勤县| 马公市| 治多县| 南华县| 武鸣县| 桐柏县| 依兰县| 阜阳市| 石楼县| 台东市| 会东县| 沙坪坝区| 铜陵市| 富阳市| 砚山县| 册亨县| 古田县| 霍林郭勒市| 从江县| 虹口区| 三河市| 偃师市| 西昌市| 山丹县| 察隅县| 犍为县| 江达县|