引言
通過Internet通信的局域網之間的數據報文往往都是非常機密的,需要對傳輸的數據進行加解密來保證其安全性。目前常用的數據傳輸方案有軟件加密和硬件加密兩大類。
軟件加密是指用戶在發送信息之前,先用加密軟件對其進行加密后發送,加密信息到達接收方后采用相應的解密軟件對其進行解密還原; 其具有實現方便、兼容性好等優點,但存在密鑰管理難、容易被攻擊、程序跟蹤破解等缺點。硬件加密是采用專用加密芯片或獨立處理芯片等硬件設備在鏈路層對數據進行加解密; 其具有保密性強、加解密速度快等優點,但存在操作復雜的缺點。
本文基于軟件和硬件加密技術的優缺點,提出軟硬件加密技術結合的數據加密傳輸方案: 采用基于OpenSSL認證中心對局域網網關服務器進行身份認證,用DH (Diffie-Hellman)協商算法分配初始密鑰,在網關安裝SSX31B 加密卡,用3DES對稱加密算法對出入網關的IP數據包進行加解密處理,該方案具有較高安全性和傳輸效率。
1 加密卡設計
1.1 數據截獲
SSX31 B加密卡是指用SSX31B 網絡安全芯片開發的硬件加密卡,插入到網關服務器的PCI插槽,對出入網關的IP數據包進過濾截獲、加解密及轉發處理。SSX31B加密卡利用Netf ilter機制在Linux內核的IP 協議層對IP 包進行截獲,N etfilter 是L inux內核中用于擴展各種網絡服務的結構化底層框架。N etf ilter 機制為IPv4 定義了5 個鉤子( hook):
(1) NF _IP _PRE _ROUTING 剛剛進行完版本號、校驗等檢測后進入鏈路層的IP數據包,需要通過該hook檢測點,源地址的轉換就在此點進行;
(2) NF_IP_LOCAL_IN 經過路由查找后,送往本機的IP數據包需通過此hook檢測點;
(3) NF_IP_FORWARD 將要轉發的IP數據包需通過此hook檢測點;
(4) NF_IP_POST _ROUT ING 所有即將通過網絡設備出去的IP數據包需通過此hook檢測點;
(5) NF_ IP_LOCAL _OUT 本機進程發出的IP數據包將首先通過此hook檢測點。
這些hook幾乎覆蓋了協議棧中IP數據包傳輸的整個過程。在每個hook里,協議將使用數據包和hook號來調用Netfilter框架。部分內核注冊后可以為每一個協議監聽不同的鉤子,所以當IP數據包通過Netfilter框架時,如果有模塊為協議和hook注冊,則按順序對IP數據包進行檢驗、更改、拋棄等處理,或者請求Netfilter將其入隊,入隊的IP數據包可以被收集送往用戶空間,這些IP數據包是以異步的方式來進行處理的。
圖1顯示了IP 數據包穿越Netfilter的機制,以及IP數據包的各個hook檢測點的位置。
SSX31 B加密卡通過NF_IP_PRE _ROUT ING 和NF_IP_POST_ROUTING 這兩個hook 檢測點,在Linux內核層實現對IP數據包的截獲,下面是實現IP數據包截獲的主要代碼。
圖1 Ne tfilter機制示意圖
進入IP協議棧的所有IP數據包:
1.2 數據加解密
3DES算法加密強度高,且容易用硬件來實現,SSX31 B加密卡集成了3DES算法,對截獲的IP數據包進行加解密處理。前面的hook _incoming()和hook_outgoing()是截獲IP數據包后的處理函數,它們對所截獲的IP數據包進行匹配規則比較,對于符合匹配條件的IP數據包分別進行加解密處理:
(1)在發送方向上(NF_IP_POST_ROUTING),對源IP匹配于己方內網(來自己方內網),且目的IP匹配于對方內網(發往對方內網)的IP數據包進行加密處理,并在加密后的IP數據包包頭的TOS域進行標記;
(2)在接收方向上(NF_IP_PRE_ROUTING),除上述基于地址IP的匹配外,還對TOS域有加密標志的IP數據包進行解密處理。
主動加密機對符合匹配條件的IP數據包進行加密處理并轉發。被動加密機對接收到的加密IP數據包進行解密處理并轉發,完成一次IP數據包通過加密通道的傳輸過程。由于3DES加密的數據單元為8字節,為防止加密后IP報文總長度超過理論限定值216-1,所以本方案只對報文前面(int)(L/8)*8個字節進行加密(L為報文長度),末尾L%8個字節則用明文填充,即最多填充7個字節,保證了數據傳輸的安全性。
1.3 DH密鑰分配
對稱加密算法的密鑰分配是整個數據加密傳輸系統的安全基礎,本方案提出一種基于DH密鑰分配的方法來實現隨機密鑰初始化。DH算法是一種非對稱加密算法,安全性基于在有限域中計算離散對數的難度,可用于兩個用戶在公共信道上安全地分發一個密鑰。其基本原理是: 隨機取大素數
1.4 密鑰同步
為提高數據加密的安全性,本方案提出定時更新3DES密鑰的策略,因此在每次更新密鑰時存在密鑰需要同步的問題。本方案定義一個密鑰對結構:一個保存當前有效并且正在使用的密鑰;另一個則保存舊的密鑰或新生成的密鑰。密鑰更新過程即是翻轉這個密鑰對的過程,當前的密鑰變為舊密鑰,而新密鑰變為當前有效的密鑰。密鑰同步步驟:
(1)A生成新的3DES密鑰,但不急于立即應用,而是先通知給B;
(2)B收到新密鑰,并不立即激活它,而是暫時繼續使用舊密鑰,并且給A回復一個確認信號;
(3)A收到B的回復,立即激活新密鑰;
(4)B收到A的加密數據時,如果發現密鑰已經更新,則同步使用新密鑰,否則繼續使用舊密鑰。
2 CA身份認證
局域網之間通過Internet通信組成的數據加密傳輸系統包括若干個局域網(LAN)及一個認證中心(CA),LAN通過其網關(Gate)連接到Interne,tCA負責為這些網關發放并管理X.509證書。系統的拓撲結構如圖2所示。
圖2 數據加密傳輸系統拓撲結構
本方案提出一種基于OpenSSL實現的CA 對網關進行身份認證的策略。OpenSSL是采用C語言開發并全面支持SSLv2/v3及TLSv1協議的開源安全軟件包,包括SSL協議庫、密碼算法庫及應用程序三部分。基于OpenSSL建立一個完整的數字證書系統即方便又具有良好的安全性與穩定性。X.509證書可以應用于CA在線和CA離線兩種身份驗證模型,如圖3所示。
圖3 兩種數字證書驗證模型
對于CA在線模型,B把A證書拿到CA中驗證,然后把驗證結果返回給A;對于CA離線模型,B用CA根證書驗證A證書。可見CA離線模型具有更方便靈活的優點,因此本方案采用CA離線模型。
網關向CA申請X.509證書的步驟:
(1)CA為自己產生一個自簽名根證書及證書私鑰req x509 newkey rsa: 2048 keyout cakey pem outcacert pem;
(2)各個網關向CA申請證書req new keyrsa: 1024 keyout certkey pem passout pass: password outreq pem configinfo batch;
(3)CA給網關簽發X.509證書ca inreq pemoutcert pemnotext passinpass:password configinformation batch。
CA給網關簽發X.509證書的同時,也將自己的根證書一起發給網關,以便將來實現CA離線。當兩個網關都擁有X. 509證書后,它們就可以進行身份認證了。X. 509證書身份認證步驟:
(1) A 將X. 509證書發給B;
(2) B用從A 的X. 509證書中提取A 的公鑰x509 in cert pem checkend noou ,t B 用該公鑰加密一個隨機數并發給A;
(3) A 用私鑰解密收到的隨機數并返回給B;
(4) B 通過比較隨機數來驗證A 的身份,同理,A 也通過這種方式來驗證B 的身份。
在該方案中,若網關向CA 申請證書的數據被非法攔截并篡改,則可能導致證書申請失敗,系統遭到拒絕服務攻擊。為此提出了一種改進的方案,網關先從CA獲得CA 根證書,然后用CA 根證書中的公鑰加密申請證書的數據再發給CA。這樣,即便數據被攔截,監聽者也無法對數據進行篡改。
3 測試結果及分析
表1是數據加密傳輸系統在啟動和停止加密卡兩種狀態下傳輸速率的測試結果。
表1 傳輸速率測試結果
測試結果顯示,該數據加密傳輸系統的傳輸速率是不加密的傳輸速率的68 94% 左右,即加密后傳輸速率下降了30% 左右。
表2是數據加密傳輸系統在連續運行7 d后的穩定性測試結果。
測試結果顯示,在長時間大量數據傳輸的測試中系統工作依然正常,表明該數據加密傳輸系統具有很好的穩定性。
表2 穩定性測試結果
4 結束語
提出一種采用基于OpenSSL的認證中心對網關服務器進行身份認證,用DH 算法分配初始密鑰,用SSX31 B加密卡對傳輸數據進行3DES加解密的軟硬件結合的數據加密傳輸方案,在Linux 環境下可實現局域網之間Internet通信數據的加密傳輸。測試結果表明,該方案具有很好的性能,非常值得進一步研究。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/
本文標題:一種數據加密傳輸方案的設計與實現