周磊
(中央廣播電視總臺創(chuàng)發(fā)中心 北京市 100038)
隨著網(wǎng)絡(luò)的發(fā)展和普及,人們的生活和互聯(lián)網(wǎng)關(guān)聯(lián)越來越緊密,包括線上搜索、電子購物、移動支付在內(nèi)的諸多場景已經(jīng)成為了人們生活的必須。對計算機系統(tǒng)而言,數(shù)據(jù)的價值始終超過系統(tǒng)基礎(chǔ)設(shè)施本身,特別是用戶隱私數(shù)據(jù)、系統(tǒng)核心業(yè)務(wù)數(shù)據(jù)等等。因此在進行網(wǎng)絡(luò)計算機網(wǎng)絡(luò)安全策略構(gòu)建和防護時,數(shù)據(jù)的加密保護是核心環(huán)節(jié)。常見的數(shù)據(jù)加密技術(shù)包括非對稱加密、對稱加密、摘要加密等,面對不同的計算機網(wǎng)絡(luò)安全防護場景而言,只有選擇適當?shù)募用芗夹g(shù),才能夠在保證系統(tǒng)運行效率和業(yè)務(wù)應(yīng)用成本的同時,確保系統(tǒng)安全和數(shù)據(jù)完整性。本文將圍繞網(wǎng)絡(luò)安全防護對數(shù)據(jù)加密技術(shù)的需求,設(shè)計適當?shù)木W(wǎng)絡(luò)安全防護策略,期望本文的研究能夠為計算機網(wǎng)絡(luò)安全保障提供一定的幫助。
在網(wǎng)絡(luò)通信中,校驗性數(shù)據(jù)的應(yīng)用較為廣泛。典型的校驗性數(shù)據(jù)有:用戶鑒權(quán)信息、系統(tǒng)身份令牌、網(wǎng)絡(luò)設(shè)備識別信息、數(shù)據(jù)完整性校驗信息等。該場景下的加密需求如下:
(1)不需確保信息可逆向解密。對于網(wǎng)絡(luò)通信中的校驗性數(shù)據(jù),其加密需求并不是為了防止數(shù)據(jù)被窺探,加密內(nèi)容本身也并不是為了對內(nèi)容本身進行保護,而是出于隱匿敏感用戶信息、實現(xiàn)系統(tǒng)設(shè)備數(shù)據(jù)隔離、防止信息篡改等目的。該場景下主要運用唯一性校驗算法生成與原內(nèi)容唯一對應(yīng)的一串校驗信息,通過該信息,內(nèi)容的生成方可以和內(nèi)容的存儲和使用方進行相互比較,從而認證原信息的一致性。
(2)加密效率要求較高。為了加快業(yè)務(wù)訪問速度,實現(xiàn)快速的認證和比對,因此此類加密需求對效率要求較高。
鏈路通信數(shù)據(jù)加密是一種較為嚴格的網(wǎng)絡(luò)數(shù)據(jù)加密。根據(jù)OSI 模型的可以看出,計算機網(wǎng)絡(luò)通信鏈路較為底層,處于網(wǎng)絡(luò)模型的物理層之上。而鏈路層主要負責對介質(zhì)進行訪問,并完成鏈路管理。鏈路通信數(shù)據(jù)加密實質(zhì)上是對鏈路數(shù)據(jù)整體進行加密。其加密需求如下:
(1)加解密可逆。鏈路層的加密需要在每個節(jié)點還原數(shù)據(jù),并在下一次轉(zhuǎn)發(fā)時重新加密,因此需要實現(xiàn)加解密可逆。
(2)加密方式高效或不占用業(yè)務(wù)系統(tǒng)資源。由于鏈路層數(shù)據(jù)包含了很多數(shù)據(jù)轉(zhuǎn)發(fā)信息和地址信息,因此對鏈路通信數(shù)據(jù)一旦參與加密,則必然會涉及到頻繁的節(jié)點間解密和重加密。這就要求加密方法能夠高效被執(zhí)行,或不影響通信鏈路各個節(jié)點設(shè)備的性能,以確保通信效率。
(3)加解密方式全鏈路共享。由于加解密由整個鏈路同時參與,這就就要求整個鏈路的加解密方法應(yīng)當被各個節(jié)點所共享,這就要求加解密方式全鏈路唯一。
端到端加密是以一種較為上層的網(wǎng)絡(luò)通信加密場景。在OSI 模型中,此類加密場景處于應(yīng)用層或會話層。此類通信加密主要用于應(yīng)對設(shè)備與設(shè)備的點對點通信,此時的鏈路層僅負責對數(shù)據(jù)進行轉(zhuǎn)發(fā)和處理,不需要關(guān)注消息體的內(nèi)容。因此該場景下的加密需求如下:
(1)對加解密性能不敏感。端對端的加密解密主要在高性能硬件設(shè)備上進行,因此其對加解密的性能損耗容忍度較高,對加解密性能不敏感。
(2)加解密可逆。由于端對端是對內(nèi)容本身進行加密,防止竊取,因此加密方式需要可逆。
(3)加解密方式端對端唯一。由于端到端加密主要是出于業(yè)務(wù)需求,用于服務(wù)端到客戶端的通信數(shù)據(jù)內(nèi)容加密,因此通常需要考慮端與端之間的用戶或者設(shè)備差異,以確保用戶或設(shè)備數(shù)據(jù)解密方的唯一性。
數(shù)據(jù)存儲加密是計算機系統(tǒng)的廣泛需求。對計算機網(wǎng)絡(luò)而言,數(shù)據(jù)安全可靠的存儲是網(wǎng)絡(luò)系統(tǒng)和應(yīng)用的基本訴求。該場景下的數(shù)據(jù)加密主要是為了防止數(shù)據(jù)物理竊取和篡改,確保計算機網(wǎng)絡(luò)數(shù)據(jù)的安全性和可靠性。因此該場景下的加密需求如下:
(1)加解密可逆。數(shù)據(jù)存儲加密主要是為了確保數(shù)據(jù)安全,在實踐過程中加密數(shù)據(jù)通常需要解密后進一步使用。
(2)加解密性能不敏感。由于網(wǎng)絡(luò)數(shù)據(jù)存儲設(shè)備性能通常較強,因此對加解密的性能不敏感。
(3)對單一數(shù)據(jù)或有加解密方式唯一需求。由于計算機網(wǎng)絡(luò)是多用戶的,為實現(xiàn)用戶間數(shù)據(jù)隔離,通常需要對不同用戶提供不同的加解密手段和憑證。
摘要加密算法主要用于對待加密數(shù)據(jù)進行特征提取,用于實現(xiàn)對身份的認證和對數(shù)據(jù)真實性可靠性進行認證。摘要算法的應(yīng)用場景主要在于用戶認證、設(shè)備唯一性識別、鑒權(quán)信息對比以及數(shù)據(jù)完整性校驗,盡可能降低逆向解密的可能性。
MD5 是最基礎(chǔ)的一種單向加密校驗算法,通過對被加密內(nèi)容進行循環(huán)計算,利用哈希值計算方法循環(huán)獲得各段的哈希字節(jié),最后形成一段可以代表完整信息的校驗信息。然而MD5 長度只有128 位,因此理論上總會存在相同的兩個MD5 值,因此雖然該方式不可逆,也能夠一定程度上獲取到內(nèi)容特征,但由于MD5 存在碰撞攻擊的可能,因此通常僅被要用作信息校驗,即判斷信息是否被更改。
SHA 是一種嚴格的散列函數(shù),目前已經(jīng)出現(xiàn)了SHA128、SHA256、SHA512 等不同復(fù)雜度的哈希算法。由于散列函數(shù)長度較長,因此即使其也最終會被碰撞攻擊所攻破,獲得一個與目標值完全相同的散列值,但由于長度越長難度越高,因SHA256 及以上的哈希算法此目前相對可信,常被用作簽名校驗。
HMAC 是一種基于MAC 算法的摘要算法。該算法利用單向散列函數(shù)構(gòu)建摘要信息。如圖1 所示,HMAC 算法接受消息Message 和密鑰Key 作為輸入,并最終輸出一個摘要信息。整個HMAC 可視作黑盒。但在黑盒的內(nèi)部,實質(zhì)上具備較復(fù)雜的運算過程,具體如下:
圖1: HMAC 算法流程
(1)算法首先需要判斷密鑰key 長度是否與散列函數(shù)分組長度一致,若不足,則用0 補足位數(shù),賦值給key;若超出,則利用hash 函數(shù)對其處理后,取其散列值賦值給key。
(2) 構(gòu) 建 一 個 比 特 序 列ipad: 通 過 不 斷 循 環(huán)00110110,直到獲得與散列值長度相等的一個比特序列。
(3)利用前序產(chǎn)生的密鑰key 與比特序列ipad 進行異或計算,最終獲得一個與密鑰特征相關(guān)的ipadkey。
(4)將ipadkey 附加在message 的頭部,并將該信息利用單向散列函數(shù)進行散列值計算,獲得message1。
(5) 同 時 構(gòu) 建 比 特 序 列opad: 通 過 不 斷 循 環(huán)01011100,直到獲得與散列值長度相等的一個比特序列。
(6)利用前序密鑰key 與opad 進行疑惑計算,獲得一個opadkey。
(7)將opadkey 附加在message1 頭部,構(gòu)件用于散列計算的新消息,并同樣利用散列函數(shù)對其進行計算,最終獲得的就是HMAC 加密后的散列特征值。
對稱加密算法是一種加密和解密密鑰一致的算法。該算法實質(zhì)上是一種迭代型的分組加密算法,根據(jù)其密鑰長度的不同,可分為AES128、192、256 等。密鑰長度越長,加密密鑰的逆向復(fù)雜度越高,因此破解嘗試的難度越大,加密的可靠性越強。由于同時由于AES 加密使用的是輪變換方法,密鑰越長,則輪數(shù)越大,密鑰矩陣數(shù)越大,則其解密性能要求越高。以128 位密鑰為例,其分組映射后的狀態(tài)矩陣為4*4 矩陣,如表1 所示。而在其解密過程中,則反向?qū)⒚芪挠成涞酵粻顟B(tài)矩陣進行解密。其解密過程可見圖2 所示。其中輪密鑰為每輪加密鎖用密鑰。解密時反向調(diào)度密鑰,通過異或操作即可最終獲得原文。該過程重復(fù)操作極多,但核心操作為異或。
圖2: AES128 解密過程
表1: 狀態(tài)矩陣
以AES 為代表的對稱加密算法常被用于同一體系下的加解密過程,例如鏈路加密或加密環(huán)境單純的環(huán)境中。在現(xiàn)代計算機體系中,若用計算機軟件執(zhí)行重復(fù)性的異或操作比較消耗資源。因此在通信網(wǎng)絡(luò)鏈路加密中,或特殊的通信環(huán)境下,常常將該加密過程通過FPGA 電路進行實現(xiàn)。該邏輯電路在執(zhí)行對稱加密時效率較高,一方面可規(guī)避頻繁加解密對節(jié)點設(shè)備性能的損耗,另一方面也能夠通過可信硬件承載密鑰,避免密鑰被篡改導(dǎo)致鏈路通信異常,或密鑰被竊取導(dǎo)致數(shù)據(jù)泄露。
非對稱加密算法實質(zhì)上是一種利用密鑰對對數(shù)據(jù)進行加解密的方法。對稱加密算法僅有一個密鑰,加解密雙方所使用的密鑰完全一致,這就使得一旦該密鑰遺失(即被公開獲知),則加密數(shù)據(jù)就可以被任何人解密、竊取、篡改并重加密。因此對稱加密只能在雙方均可信,但對通信過程不可信時應(yīng)用。為應(yīng)對甲方與乙方分別多對多的場景下,對加密數(shù)據(jù)的區(qū)分和隔離的需求,非對稱加密使用密鑰對完成加密和解密。密鑰對中的公鑰是公開的,任何人和設(shè)備都可以獲取該密鑰,因此該密鑰的傳輸不怕被竊聽。而私鑰則保存在設(shè)備本地,通過安全的方式進行存儲。當需要雙方通信時,持有公鑰的一方通過公鑰進行加密,將密文發(fā)送至持有私鑰的一方,由其通過私鑰進行解密,即可獲得正確消息。反之,持有私鑰的一方,利用私鑰加密信息,并發(fā)給持有公鑰的一方,由其通過公鑰解密,即同樣獲得密文。其中私鑰和公鑰一一對應(yīng),可相互進行加解密認證。為進一步確認加密信息的可信度,持有私鑰一方通常會利用私鑰再對消息進行簽名,獲得簽名信息。公鑰持有方可通過公鑰校驗信息,并進行解密。由此觀之,非對稱加密更適宜于應(yīng)用層的端對端加密。
為實現(xiàn)更為全面的計算機網(wǎng)絡(luò)數(shù)據(jù)安全防護,本次設(shè)計中將鏈路通信、系統(tǒng)應(yīng)用、數(shù)據(jù)存儲作為安全防護的關(guān)鍵節(jié)點,并選擇適當?shù)募用芊绞胶桶踩雷o策略。在最簡模型下,為實現(xiàn)服務(wù)器與客戶端通信的安全防護,可設(shè)計如圖3 所示總體安全防護策略。
圖3: 總體安全防護策略示意圖
為提高鏈路安全性,可考慮在鏈路層增加對稱加密方式。考慮到鏈路節(jié)點設(shè)備性能有限,為提高數(shù)據(jù)吞吐,可增加FPGA 硬件加解密模塊,通過邏輯電路對加解密進行實現(xiàn),其中硬件加解密密鑰可預(yù)先協(xié)商一致。由于硬件本身安裝在通信鏈路上,因此密鑰相對安全,進而可推論鏈路數(shù)據(jù)加解密過程安全。
鏈路層數(shù)據(jù)加密對于應(yīng)用層而言完全透明,系統(tǒng)應(yīng)用層不需了解鏈路層加密的邏輯,對應(yīng)用層數(shù)據(jù)包而言,前后始終為明文。這一方式能夠使得鏈路本身安全可靠,若為實現(xiàn)安全性更高的加密邏輯,可通過定制加解密硬件實現(xiàn)鏈路層的特殊加密,其加密的復(fù)雜性可根據(jù)實際需要定制。
在系統(tǒng)應(yīng)用層,為滿足與不同客戶機的交互,這里選擇非對稱加密作為應(yīng)用層的互通加解密方式。對于常規(guī)的網(wǎng)絡(luò)服務(wù)而言,客戶機分散在各處,由不同的人和組織所控制,其安全性無法完全保障。而服務(wù)器硬件本身可以配置防火墻、本地安全防護策略以及殺毒軟件等多重防護,因此可以將服務(wù)器環(huán)境視作相對安全的環(huán)境,存儲在服務(wù)器上的信息也相對更加可信。此時若采用對稱加密,則很有可能在密鑰交換過程中被第三人截獲信息,從而篡改與客戶機的通信數(shù)據(jù),引入不安全因素。因此這里采用非對稱加密,由服務(wù)器生成公鑰和私鑰。服務(wù)器通過公開渠道將公鑰分發(fā)給指定客戶機,由其存儲在本地。當需要進行交互時,服務(wù)器可通過存儲在自身的私鑰對數(shù)據(jù)進行加密并傳輸至客戶機。此時客戶機必須通過相應(yīng)的公鑰進行解密,才能獲得數(shù)據(jù)。再反向通信過程中,客戶機通過私鑰加密,發(fā)送至服務(wù)器后,服務(wù)器通過公鑰解密,獲得最終消息。這一過程能夠有效避免中間人截取密鑰竊取數(shù)據(jù)。系統(tǒng)應(yīng)用層所使用的非對稱加密交互流程如圖4 所示。
圖4: 非對稱加密交互流程
如圖4 所示,網(wǎng)絡(luò)數(shù)據(jù)存儲加密主要是在相對可信的環(huán)境下,對存儲數(shù)據(jù)進行加密。加密的核心目標是對數(shù)據(jù)物理存儲信息進行防護,確保在物理數(shù)據(jù)被竊取時,竊取者無法對數(shù)據(jù)進行還原,確保數(shù)據(jù)安全。同時服務(wù)器或客戶機性能通常有一定保障,因此對稱全文加密在這里較為適用。
本文結(jié)合計算機網(wǎng)絡(luò)安全防護對于數(shù)據(jù)加密技術(shù)的諸多需求,對可用于網(wǎng)絡(luò)安全防護的數(shù)據(jù)加密技術(shù)進行選擇,特別選擇了摘要信息算法、對稱加密算法、非對稱加密算法進行了研究。此后基于上述加密算法的特性,對計算機網(wǎng)絡(luò)安全防護策略從通信鏈路加密、應(yīng)用層數(shù)據(jù)加密和網(wǎng)絡(luò)數(shù)據(jù)加密等角度進行設(shè)計。本文所涉及的網(wǎng)絡(luò)安全策略兼顧了通信效率、數(shù)據(jù)完整性和數(shù)據(jù)安全性,能夠廣泛適用于多種計算機網(wǎng)絡(luò)應(yīng)用場景的安全防護。