• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于國密算法的IPSec VPN 設計與實現

      2020-06-22 10:29:58劉笑凱
      網絡安全與數據管理 2020年6期
      關鍵詞:國密加密算法內核

      張 堯,劉笑凱

      (華北計算機系統(tǒng)工程研究所,北京100083)

      0 引言

      IPSec VPN 是一種常見的VPN 技術,具有速度快、安全可信等特點。 由于IPSec 國際協(xié)議中的標準算法可能存在算法安全性和協(xié)議安全性等問題,因此國家密碼管理局制定了國家密碼算法標準以及VPN 技術規(guī)范。 基于國家技術標準的指導,采用國密算法實現改進的IPSec 協(xié)議, 能夠提高IPSec VPN 的安全性,滿足安全產品自主安全的需要。

      1 IPSec 技術介紹

      IPSec 是一種用于保護網絡通信過程IP 數據包安全的安全協(xié)議技術,可在由主機、網關作為端點構成的點到點的網絡層鏈路上構建安全隧道,提供基于網絡層的通信安全保護功能。 在采用IPSec 技術實現VPN 時,通過在雙方網關之間建立IPSec 加密隧道,來實現由雙方物理子網構建的虛擬局域網。

      IPSec 主要由四部分組成: 因特網密鑰交換(Internet Key Exchange,IKE)協(xié)議、認證頭(Authentication Header,AH) 協(xié) 議、 安 全 載 荷(Encapsulating Security Payload,ESP)協(xié)議以及上述模塊中所需的加密算法和認證算法。 其安全體系結構如圖1 所示[1-2]。

      圖1 IPSec 安全體系

      1.1 AH 協(xié) 議 與ESP 協(xié) 議

      AH 協(xié)議能夠為數據包提供完整性保護、數據源認證和防重放等安全功能,一般用于只需確保數據完整性、檢驗發(fā)送方身份,無需數據保密的場景下。 其通過在原始數據包頭部之后增加AH 頭部段的方式實現。

      ESP 協(xié)議除了可實現AH 協(xié)議所提供的各項安全功能外,還對數據包整體進行加密,實現數據的保密性。 根據ESP 協(xié)議對數據的封裝模式不同,分為隧道模式和傳輸模式, 前者僅對IP 負載進行保護,后者則將原始IP 層頭部連同負載一起進行加密保護[3]。

      1.2 IKE 協(xié)議

      為了實現AH 和ESP 協(xié)議,通信雙方需要首先采用密鑰管理協(xié)議來建立安全聯(lián)盟(Security Association,SA),以同步密鑰和身份信息。

      IKE 協(xié)議包括ISAKMP、Oakley 和SKEME 三個協(xié)議。 其 中ISAKMP 主 要 定 義 在IKE 伙 伴(IKE Peer)之間的IKE 聯(lián)盟(IKE SA)建立過程;而Oakley 和SKEME協(xié)議主要通過迪菲-赫爾曼(Diffie-Hellman,DH)密鑰交換算法實現雙方身份驗證和密鑰安全分發(fā)。 目前,由RFC 文檔所規(guī)定的IKE 協(xié)議共有IKEv1 和IKEv2 兩個版本。

      IKEv1 的協(xié)商過程分為兩個階段。 其中第一階段主要用于協(xié)商建立IKE SA,又分為主模式、野蠻模式兩種交互策略。 主模式是使用最頻繁的協(xié)商策略,協(xié)商雙方通過交換3 對消息,確定對等體雙方IKEv1 安全策略、協(xié)商密鑰信息、驗證身份,最終建立SA; 野蠻模式雙方僅交換3 條消息即建立SA,通過犧牲一定的安全性來提高協(xié)商效率。 第二階段在第一階段的IKE SA 保護下進行,用于協(xié)商IPSec SA所需的密鑰和參數、封裝方式、認證方式等,雙方交換1 對信息。

      1.3 IPSec 中的密碼算法

      IPSec 通過密碼算法來保證數據機密性、完整性,采用非對稱密鑰的特性來實現密鑰安全協(xié)商。 在IPSec 中使用了對稱加密算法、公鑰算法、摘要算法和DH 密鑰交換算法。 在國際標準中,對稱算法包括AES、3DES 等,摘要算法包括MD5、SHA 等,非對稱算法包括RSA、ECC 等[4]。

      2 國密算法介紹

      國密算法是一套由我國密碼安全機構自主研發(fā)的密碼算法,可用于國家信息安全相關各個領域中,其中由我國《IPSec 技術規(guī)范》中所規(guī)定在IPSec 協(xié)商過程中要使用到的算法包括SM2 橢圓曲線算法、SM1 或SM4 分組密碼算法、SM3 密碼雜湊算法[5]。

      2.1 SM2 算法

      SM2 橢圓曲線公鑰算法是國密標準中的非對稱算法,屬于對橢圓曲線密碼學(Elliptic Curve Cryptography,ECC)算法的一種拓展,其數學基礎建立在橢圓曲線離散對數問題上。 SM2 算法所規(guī)定公鑰長度為512 位,私鑰長度256 位[6]。

      與RSA 算法相比,采用基于ECC 的SM2 算法能夠在密鑰長度相當的情況下,提供更高的安全性保護。 192 位SM2 密碼的強度能夠超過2 048 位的RSA 密碼。

      2.2 SM3 算法

      SM3 算法是國密標準中的雜湊算法,其功能包括數字簽名與驗證、消息認證碼生成和偽隨機數的生成等,可用于多種密碼應用。 SM3 算法的安全性及效率與SHA-256 相當[5]。

      2.3 SM4 算法

      SM4 算法是國密標準中的分組對稱密鑰算法,明文、密鑰、密文長度均為128 位,加密和解密所用密鑰相同,可用于流式數據的快速解密。 SM4 算法的實現流程如圖2 所示。

      圖2 SM4 算法實現流程

      SM4 算法的加密與密鑰擴展算法均通過32 輪非線性迭代過程實現。 輪函數中使用輪密鑰對128位數據進行處理,在解密所使用的輪密鑰是加密輪密鑰的逆序。 在加密過程中,首先將128 位密鑰按照每32 位一組分為4 組,然后進行密鑰擴展,生成32 組32 位輪密鑰,再將輸入明文按照32 位一組分成4 組,進行循環(huán)運算,得到128 位密文。

      3 國密算法替換

      基于Linux 2.x 操作系統(tǒng)內核協(xié)議棧,FreeS/WAN提供了開源的IPSec 協(xié)議的內核態(tài)實現。 而Openswan項目繼承該項目進行了后續(xù)開發(fā)[7-8]。 通過對比國際IPSec 標準與我國國密IPSec 標準,找出所需更改的部分對Openswan 的相關代碼模塊進行替換,能夠實現基于國密算法的IPSec VPN。

      Openswan 項目的架構如圖3 所示。

      圖3 Openswan 項目架構示意圖

      Openswan 實現分為應用態(tài)和內核態(tài)的兩部分,其中Pluto 模塊、Whack 模塊位于Linux 用戶態(tài)。Whack 模塊負責建立連接前的參數配置、管理VPN連接狀態(tài)、系統(tǒng)日志等;Pluto 模塊負責進行IKE 協(xié)商、建立SA;Klips 模塊在Linux 內核態(tài)下運行,接收來自Linux 內核協(xié)議棧的網絡數據包,根據已經配置的SA,對數據包進行AH 協(xié)議、ESP 協(xié)議的封裝或解封處理。

      3.1 協(xié)商流程的替換

      在Openswan 項目中,由Pluto 模塊在用戶態(tài)實現IKE 協(xié)商。IKE 的協(xié)商過程中,采用交換數字證書的形式,由通信雙方各自進行身份認證,確認對方已得到授權。 根據國密要求,在IKE 協(xié)商過程中需要使用基于X.509 格式的國密SM2 數字證書進行身份認證,在IKE 認證過程中,首先要采用國密SM2算法進行數字證書簽名、驗簽。

      根據IKEv1 標準,認證第一階段的主模式協(xié)商過程在Pluto 模塊中的實現如圖4 所示。

      認證第二階段的快速模式協(xié)商過程在Pluto 模塊中的實現如圖5 所示。

      在國密標準中,IKE 主模式協(xié)商的流程與圖中所示一致,但其中SA 載荷部分需要替換成國密SM3、SM4 相關參數。 具體實現如表1 所示。

      圖4 Pluto 模塊中IKE 主模式協(xié)商實現

      圖5 Pluto 模塊中IKE 快速模式協(xié)商實現過程

      表1 國密標準SA 載荷參數

      根據Pluto 模塊相關函數的處理流程,證書相關數據應在主模式第二包中CERT 相關字段中進行處理。 因此,在Openswan 源碼中,向main_inI1_outR1相關流程里添加國密證書導出操作。 向main_inR1_outI2 相關流程里添加響應方國密證書導入操作,從而實現協(xié)商流程的國密算法替換。

      3.2 業(yè)務算法替換

      在IPSec VPN 通道成功建立,SA 成功生成后,雙方在業(yè)務通信階段使用ESP 協(xié)議的隧道模式來加密保護數據報文。 根據國密要求,在ESP 協(xié)議包的傳輸過程中,需要采用SM1 或SM4 對稱加密算法進行數據機密性的保護,并且選用SM3 或SHA-1算法來進行數據內容的完整性保護。

      由于Openswan 項目代碼中用戶態(tài)和內核態(tài)兩部分各自使用獨立的算法模塊,因此需要在內核態(tài)中 再 次 實 現SM1 或SM4、SM3 或SHA-1 算 法。 內 核態(tài)的加密算法調用流程如圖6 所示。

      圖6 內核態(tài)的加密算法調用流程

      在Openswan 源碼實現中,內核協(xié)議棧收到的網絡業(yè)務數據由Linux 在內核態(tài)直接執(zhí)行加密算法,以便減少操作系統(tǒng)狀態(tài)切換過程中產生的不必要的性能損失。 這一過程中,Linux 采用XFRM 框架進行算法查找和調用。 在使用國密算法進行替換時,需要在內核進行國密算法的注冊。 其過程如下:

      (1)根據Linux 內核源碼中的算法標識結構定義,構建國密算法的加密算法標識結構。

      在Linux 內核中,XFRM 框架對加密算法標識的定義包括位于源碼目錄下的xfrm.h 頭文件里,其數據結構包括xfrm_algo_desc 和sadb_alg_desc。 在Linux內核源碼include/linux./pfkeyv2.h 中添加XFRM 在SPDB 中 查 找SM1、SM3、SM4 國 密 算 法 所 用 到 的 算法標識,并在net/xfrm/xfrm_alog.c 中加入這些國密算法所需的算法描述結構。 這樣就完成構建國密算法的加密算法標識結構的過程。

      (2)在Linux 內核的算法庫中對國密算法進行注冊。 在Linux 內核中的NETLINK 模塊里,提供算法注冊的方式,其中crypto_alg 結構用于描述對稱加密算法,shash_alg 結構用于描述雜湊算法。 由驅動程序調用XFRM 框架的crypto_register_alg 函數,完成向操作系統(tǒng)內核注冊國密加密算法的過程。

      4 結論

      基于國密SM2、SM3、SM4 等算法,在Openswan 開源項目和在Linux 操作系統(tǒng)的基礎上進行代碼修改和算法的替換,從而設計并實現了基于國密算法的IPSec VPN 系統(tǒng)。 經實驗,替換后的IPSec VPN 能夠達到與預期相當的吞吐量,在保證了性能的同時,提高了VPN 的自主可控水平。

      猜你喜歡
      國密加密算法內核
      萬物皆可IP的時代,我們當夯實的IP內核是什么?
      現代裝飾(2022年4期)2022-08-31 01:41:24
      國密技術在智能燃氣表系統(tǒng)的應用與分析
      煤氣與熱力(2021年7期)2021-08-23 01:11:14
      強化『高新』內核 打造農業(yè)『硅谷』
      Hyperledger Fabric平臺的國密算法嵌入研究
      基于嵌入式Linux內核的自恢復設計
      Linux內核mmap保護機制研究
      自助終端設備國密改造方法探究
      基于國密算法的銀行移動營銷終端安全系統(tǒng)研究
      電子測試(2018年9期)2018-06-26 06:45:40
      基于小波變換和混沌映射的圖像加密算法
      Hill加密算法的改進
      东城区| 商南县| 乐昌市| 渝北区| 丹阳市| 贵南县| 延川县| 进贤县| 新宁县| 彩票| 凌源市| 安丘市| 长沙市| 雅江县| 孟村| 长治县| 益阳市| 金堂县| 广南县| 皮山县| 体育| 大厂| 宿松县| 衡水市| 鹤岗市| 彭阳县| 腾冲县| 营山县| 茶陵县| 建阳市| 山阳县| 桑植县| 通江县| 团风县| 南陵县| 金塔县| 卢湾区| 天长市| 彭州市| 美姑县| 星子县|