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