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