谷蒙蒙, 葉展翔
(1.溫州職業(yè)技術(shù)學院, 浙江 溫州 325000; 2.溫州市網(wǎng)絡安全檢測與防護工程技術(shù)研究中心, 浙江 溫州 325000)
近年來,隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、云計算等新興科技的迅猛發(fā)展,網(wǎng)絡空間已成為人們生產(chǎn)生活的新家園。根據(jù)《中國互聯(lián)網(wǎng)發(fā)展情況統(tǒng)計報告》,截至2022 年底,中國網(wǎng)民人數(shù)達到10.67 億,互聯(lián)網(wǎng)普及率[1]達到75.6%。隨著各類互聯(lián)網(wǎng)新興技術(shù)在社會生活中的廣泛應用,人們對于各類電子設(shè)備的使用也越來越廣泛,每天都在產(chǎn)生大量的數(shù)據(jù),包括電子郵件、在線聊天記錄、錄音和影像視頻等。文件的共享和安全傳輸為互聯(lián)網(wǎng)用戶數(shù)據(jù)安全提供了基礎(chǔ)。如今的數(shù)據(jù)安全產(chǎn)業(yè)逐步成為實現(xiàn)網(wǎng)絡強國與數(shù)字中國的重要組成以及中國式現(xiàn)代化的基礎(chǔ)支撐,數(shù)據(jù)安全建設(shè)已由“或有”轉(zhuǎn)變?yōu)椤皠傂琛薄?/p>
P2P(Peer to Peer)技術(shù)是數(shù)據(jù)共享的熱門技術(shù)之一。與傳統(tǒng)的C/S(Client/Server)模式相比,P2P 架構(gòu)具有非中心化、健壯性、可擴展性、高性價比、負載均衡及隱私保護等優(yōu)勢。P2P 技術(shù)主要應用在分布式計算、交互應用及文件功能三大場景。在基于P2P 的數(shù)據(jù)共享應用過程中,文件的接收者希望保證文件的完整性,管理員希望對文件內(nèi)容做一定的審記,在保證文件安全傳輸?shù)耐瑫r,也要防止數(shù)據(jù)在傳輸期間可能受到的攔截攻擊[2]。
國產(chǎn)商用密碼簡稱國密,是數(shù)據(jù)共享的“安全底座”。國密算法為人們提供了一個新的選擇,在必要的場合中替代那些國際主流算法,大規(guī)模推廣和采用國密算法將為國內(nèi)重要的網(wǎng)絡基礎(chǔ)設(shè)施提供可靠的數(shù)據(jù)安全保障。文獻[3-4]將國密算法與國際上的典型同類算法進行比較發(fā)現(xiàn),國密算法在安全性和實現(xiàn)效率方面都具有明顯的優(yōu)勢。國密算法在具體應用和推廣中還存在不足。《中華人民共和國密碼法》[5]于2020 年正式實施,從法律層面規(guī)范了國家商用密碼的應用和管理,這也為推廣和應用國密提供了必要的法律保障。本文使用多種國密算法,包括SM2、SM3、SM4 三種算法,設(shè)計一種混合加密方案,并應用到數(shù)據(jù)開放共享平臺中。
其中,SM2 是基于橢圓曲線多倍點運算單向函數(shù)的公鑰密碼算法,廣泛應用于信息系統(tǒng)身份鑒別、網(wǎng)絡通信密鑰交換、電子印章數(shù)字簽名,以及可信計算等領(lǐng)域[6-8]。密碼雜湊算法是三類基礎(chǔ)密碼算法之一,它可以將任意長度的消息壓縮成固定長度的摘要,主要用于數(shù)字簽名和數(shù)據(jù)完整性保護等[9-10]。SM4 分組密碼算法是一個選代分組密碼算法,主要用于數(shù)據(jù)加密[11-12]。
數(shù)據(jù)開放共享平臺為網(wǎng)絡中的各個節(jié)點提供文件管理及共享服務,需要滿足穩(wěn)定性、可擴展性及負載均衡的P2P 應用等一般設(shè)計原則,在此基礎(chǔ)上,結(jié)合國密算法增加安全性要求,即平臺共享數(shù)據(jù)機密性、完整性和不可否認性。
1) 穩(wěn)定性
要求平臺搭建的P2P 網(wǎng)絡能夠自動調(diào)整內(nèi)部結(jié)構(gòu),適應網(wǎng)絡規(guī)模的變化。當有節(jié)點加入、離開或失效時,正在進行的查詢或數(shù)據(jù)傳輸不會受到影響。
2) 可擴展性
假設(shè)P2P 網(wǎng)絡中節(jié)點總數(shù)為N,可以自由地增加節(jié)點,沒有參數(shù)限定網(wǎng)絡節(jié)點的數(shù)量,要求網(wǎng)絡開銷隨著網(wǎng)絡規(guī)模的擴大,按O(logN)的復雜度增加,可以用于大型的網(wǎng)絡中。
3) 負載均衡
P2P 網(wǎng)絡中所有節(jié)點都參與數(shù)據(jù)共享全流程,并采用一致性哈希算法,保證網(wǎng)絡中所有節(jié)點以同等的概率分擔系統(tǒng)的負載,避免某些節(jié)點負載過重的情況。
4) 機密性
在數(shù)據(jù)傳輸前對數(shù)據(jù)進行加密處理,若傳輸過程中被第三方截獲,要求加密數(shù)據(jù)無法被破解。每個用戶都擁有一對SM2 非對稱密鑰。由于非對稱密鑰加密大文件的開銷過大,使用SM4 對稱密鑰進行文件加密,每一個文件傳輸進程均隨機產(chǎn)生一次對稱密鑰。
5) 完整性
數(shù)據(jù)傳輸過程中,要求確保數(shù)據(jù)不被未授權(quán)地篡改,即使篡改后也能夠迅速發(fā)現(xiàn),使用SM3 算法對文件進行摘要并驗證。
6) 不可否認性
數(shù)據(jù)傳輸完成后,對數(shù)據(jù)的發(fā)送者身份進行認證,同時發(fā)送者不能否認自己發(fā)送數(shù)據(jù)的行為和數(shù)據(jù)的內(nèi)容。
數(shù)據(jù)開放共享平臺的功能模塊如圖1 所示,包括對等網(wǎng)絡搭建、文件數(shù)據(jù)處理及輔助功能三類。對等網(wǎng)絡搭建模塊包括對等網(wǎng)絡的創(chuàng)建及網(wǎng)絡節(jié)點的加入/離開。文件數(shù)據(jù)處理模塊包括共享文件的關(guān)鍵字信息發(fā)布、搜索、刪除以及文件的點對點下載傳輸。輔助功能模塊主要是文件關(guān)鍵字的自動提取。
圖1 數(shù)據(jù)開放共享平臺的功能模塊
1) 對等網(wǎng)絡構(gòu)建
用戶在使用共享服務前,可以掃描本機的IP 并指定一個默認端口號,組成URL,用其創(chuàng)建一個新的對等網(wǎng)絡,或者輸入已存在的對等網(wǎng)絡中某節(jié)點URL,與其進行連接,加入其所在對等網(wǎng)絡。用戶結(jié)束與其他節(jié)點的數(shù)據(jù)傳輸進程后,可以選擇退出對等網(wǎng)絡,退出后,用戶所有共享的信息將被刪除。
2) 數(shù)據(jù)處理
用戶輸入的文件關(guān)鍵字及文件路徑進行哈希運算后,組成<K,V>序偶對,根據(jù)特定算法存儲到某節(jié)點中,從而在沒有中心服務器的情況下,實現(xiàn)文件的共享。文件始終保存在用戶節(jié)點本地,文件共享過程中并沒有文件傳輸?shù)倪^程。
用戶可以輸入想要搜索的關(guān)鍵字,將關(guān)鍵字進行哈希映射,在對等網(wǎng)絡中進行搜索,獲取文件所在節(jié)點標志符及文件路徑。已經(jīng)共享文件可以由文件擁有者進行刪除操作,將文件相應的<K,V>序偶對從存儲它的節(jié)點上刪除。刪除前需要先判斷相關(guān)文件是否存在。
節(jié)點A通過共享文件搜索功能,獲取文件所在的節(jié)點B標志符及文件路徑,通過標志符中的IP 和端口號建立socket 連接,結(jié)合國密算法將安全文件傳輸?shù)焦?jié)點A。
3) 輔助功能——文件關(guān)鍵字提取
輔助功能模塊只針對文字類型的文件,主要包括txt、Word 等能夠提取文字的文件。提取文件內(nèi)容中具有具體意義的名詞,在文件預處理和分詞處理的基礎(chǔ)上進一步提煉這些名詞,作為文件共享前的輔助功能。
數(shù)據(jù)開放共享平臺使用Chord 協(xié)議[13]進行P2P 組網(wǎng)。Chord 協(xié)議是一種高效、可擴展的完全分布結(jié)構(gòu)化對等網(wǎng)[14]。Chord 網(wǎng)絡中的一個節(jié)點代表一個用戶,每個用戶都有一個唯一的m位節(jié)點標識符ID,由IP 地址和端口號哈希得到。所有節(jié)點根據(jù)標識符從小到大排列在一個邏輯的標識符環(huán)(Chord 環(huán))上,每個節(jié)點都有一個邏輯上的前驅(qū)和后繼。
共享文件索引由一個序偶對<K,V>組成。其中,K表示關(guān)鍵字(如文件名、作者等屬性)的哈希值,V表示實際存儲該文件的節(jié)點標志符及路徑。所有這樣的序偶對構(gòu)成了一張文件索引哈希表,輸入目標文件信息K,就能夠從中查詢到存儲該文件的目的節(jié)點信息。文件索引被哈希到Chord 環(huán)上,映射規(guī)則為:文件索引關(guān)鍵字K所對應的序偶對存儲在節(jié)點標識符等于K的節(jié)點上,若該節(jié)點不存在,則存儲在已存在的且緊跟在K后的節(jié)點上。Chord 環(huán)文件索引存儲示例如圖2 所示。
圖2 Chord 環(huán)文件索引存儲示例
圖2 中N代表節(jié)點,K代表文件關(guān)鍵字。按照映射規(guī)則,K為2 的序偶對本應存儲在節(jié)點N2上,但由于節(jié)點N2不存在,則存儲在標志符大于2 且離節(jié)點N2最近的節(jié)點N3上。同理,關(guān)鍵字7 和9 存儲在節(jié)點N10上,關(guān)鍵字11 存儲在節(jié)點N12上。當網(wǎng)絡拓撲發(fā)生動態(tài)變化時,上述映射規(guī)則依然要滿足。當節(jié)點N8進入Chord 環(huán)后,K為7 的序偶對要重新分配到節(jié)點N8上;當節(jié)點N3退出時,K為2 的序偶對將被存儲到節(jié)點N6上。
節(jié)點加入或退出對等網(wǎng)絡時,需要對網(wǎng)絡拓撲結(jié)構(gòu)與資源共享存儲進行調(diào)整,具體流程如圖3 所示。
用戶節(jié)點加入對等網(wǎng)絡時,隨機生成一個SM2 密鑰對<P,S>,P表示公鑰,S表示私鑰,將節(jié)點標識符ID 和公鑰P組成鍵值對<ID,P>,添加到自己的文件索引哈希表中,公布在對等網(wǎng)絡中。私鑰則保存在節(jié)點本地,為后續(xù)數(shù)據(jù)加密、用戶驗證提供基礎(chǔ)。
用戶節(jié)點退出當前對等網(wǎng)絡時,刪除其公鑰信息所對應的鍵值對,同時將節(jié)點上存儲的共享信息移動到下一節(jié)點上。
文件共享發(fā)布、搜索、刪除的流程如圖4 所示。
圖4 文件共享發(fā)布、搜索、刪除流程
用戶節(jié)點共享發(fā)布文件時,在本地選擇文件,將文件的關(guān)鍵字哈希值H(kw)和文件所在節(jié)點路徑ID+path組成鍵值,根據(jù)Chord 算法映射原則,存儲到對等網(wǎng)絡中的某一節(jié)點上。
用戶節(jié)點搜索文件時,輸入要搜索的關(guān)鍵字,通過關(guān)鍵字哈希值在對等網(wǎng)絡中搜索鍵值對<H(kw), ID+path>,獲取相應文件的所在節(jié)點與路徑。
用戶刪除已共享的文件時,輸入文件關(guān)鍵字,通過關(guān)鍵字哈希值在對等網(wǎng)絡中進行搜索,并刪除共享信息<H(kw), ID+path>。
由于文件始終存放在本地,文件下載時需要文件擁有者和文件申請者之間建立TCP 連接。下載前,申請者需先通過搜索得到所需文件的節(jié)點與路徑。文件下載流程如圖5 所示。
圖5 數(shù)據(jù)安全傳輸流程
當節(jié)點B想要下載節(jié)點A上的文件F1,發(fā)送下載文件請求時,需要將文件F1路徑信息發(fā)送給節(jié)點A。
節(jié)點A接收到請求后,隨機生成SM4 密鑰K1作為文件密鑰對源文件進行加密處理,得到加密文件CF1,如公式(1)所示,保證文件的機密性。
由于文件加密采用一次一密的方式,文件密鑰需要和加密文件一起安全傳輸給對方。節(jié)點A在對等網(wǎng)絡中以節(jié)點B標識符為關(guān)鍵字進行搜索,得到B的公鑰PB,使用PB 對K1進行加密,得到加密密鑰CK1,如式(2)所示,實現(xiàn)文件密鑰的安全傳輸。
為了保證文件傳輸?shù)耐暾院筒豢傻仲囆?,?jié)點A使用SM3 算法對文件進行摘要,并使用自己的SM2 私鑰SA 對摘要進行簽名,得到Sig1,公式如下:
節(jié)點A將加密文件CF1、文件密鑰密文CK1以及簽名同時發(fā)送給節(jié)點B。節(jié)點B收到后,首先使用自己的SM2 私 鑰SB 對CK1進 行 解 密,得 到 文 件 密 鑰K1,公 式如下:
其次,使用K1將CF1進行解密得到源文件F1,公式為:
節(jié)點B使用節(jié)點A的標志符在對等網(wǎng)絡中搜索節(jié)點A的SM2 公鑰PA,并用它對簽名Sig1 進行驗簽,得到文件摘要Sm3(F1),公式如下:
最后,節(jié)點B對解密得到的文件進行SM3 摘要計算,并與后得到的Sm3(F1)進行比較,若一致,說明文件確實由節(jié)點A發(fā)送且在傳輸過程中沒有被篡改。
本文設(shè)計了一種基于國密算法的P2P 數(shù)據(jù)開放共享平臺,使用Java 語言進行Windows 應用程序開發(fā),并在多臺終端與虛擬機上進行安裝測試。與現(xiàn)有的FTP服務器、網(wǎng)盤等文件共享方式相比,所設(shè)計平臺不需要將共享文件上傳至中心服務器,而是將文件信息以鍵值對的形式存儲在文件索引哈希表中,共享的數(shù)據(jù)信息占用空間小,且能夠擺脫對中心服務器和數(shù)據(jù)庫的依賴。所有節(jié)點既是服務器也是客戶端,既能共享數(shù)據(jù)也可以參與存儲數(shù)據(jù),達到負載均衡的效果,且節(jié)點數(shù)量不受限制,適用于大型網(wǎng)絡。由于P2P 平臺存在不可控的問題,平臺采用了一種混合SM2、SM3、SM4 算法的加密方式,在平臺文件傳輸過程中對數(shù)據(jù)安全進行把控。使用SM4 算法保障數(shù)據(jù)的機密性,使用SM2 算法保障文件密鑰的保密性和文件發(fā)送方的不可抵賴性,使用SM3 算法保障文件的完整性。本文平臺將P2P 技術(shù)與國密算法的優(yōu)勢進一步融合,實現(xiàn)簡單,運維成本低,是一種可推廣的數(shù)據(jù)開放共享方式。