基于網(wǎng)絡(luò)的主動防泄密文件加密技術(shù)

加強網(wǎng)絡(luò)信息安全既要防范外部人員非法介入或竊取信息,更要防范內(nèi)部人員的主動泄密。根據(jù)美國聯(lián)邦調(diào)查局(FBI)和計算機安全機構(gòu)(CSI)的調(diào)查結(jié)果顯示,80%以上的安全威脅來自內(nèi)部;中國國家信息安全測評認證中心調(diào)查結(jié)果也表明,信息安全問題主要來自泄密和內(nèi)部人員犯罪。

為了實現(xiàn)涉密文件的安全主動防護,在此提出基于網(wǎng)絡(luò)的系統(tǒng)密鑰加密機制,利用系統(tǒng)密鑰加密文件數(shù)據(jù),使文件只能被特定網(wǎng)絡(luò)環(huán)境下的合法用戶所存取。在此將在密碼技術(shù)研究和eKey開發(fā)應(yīng)用基礎(chǔ)上,設(shè)計一種密鑰安全獲取通信協(xié)議,研制一種嚴密的密鑰安全管理措施,實現(xiàn)基于網(wǎng)絡(luò)的主動防泄密文件加密。

1 加密與eKey模塊應(yīng)用設(shè)計

1.1 加密算法選擇

對稱密碼技術(shù)也被稱為單密鑰加密,它是指在加密與解密時使用同一密鑰。對稱密碼技術(shù)的優(yōu)點在于效率高,算法簡單,系統(tǒng)開銷小,適合加密大量數(shù)據(jù)。

非對稱密碼技術(shù)也被稱作公鑰密碼技術(shù),在加解密時分別使用兩個不同密鑰:一個可對外界公開,稱為“公鑰”;一個只有所有者知道,稱為“私鑰”。公鑰與私鑰之間緊密聯(lián)系,用公鑰加密的信息只能用相應(yīng)的私鑰解密,反之亦然。非對稱密碼技術(shù)可提供安全認證服務(wù),其主要缺點是加/解密速度慢、耗用資源大。因此,采取綜合運用對稱密碼技術(shù)與非對稱密碼技術(shù)的加解密方案。

鑒于AES對稱密碼算法具有高強度安全性能,故選用AES算法實現(xiàn)涉密文件數(shù)據(jù)的加密。由于用戶認證信息與密鑰信息數(shù)據(jù)相對較小,選用非對稱密碼RSA算法實現(xiàn)系統(tǒng)對用戶的合法認證,以及系統(tǒng)密鑰的安全獲取。

1.2 eKey的應(yīng)用開發(fā)

eKey又名電子密碼鑰匙,是一種結(jié)合了智能卡技術(shù)與USB接口技術(shù)的數(shù)據(jù)安全產(chǎn)品。這里選用明華公司的eKey,其內(nèi)置SmartCOS[CD*2]XC智能卡操作系統(tǒng),在文件系統(tǒng)、密碼算法和安全控制三方面都進行了精心設(shè)計,具有高效完備的安全訪問機制。

本文使用eKey來存儲用戶密鑰、系統(tǒng)公鑰、系統(tǒng)密鑰惟一的ID號及其他重要數(shù)據(jù)。為了實現(xiàn)對數(shù)據(jù)的加密與認證操作,基于明華提供的接口函數(shù)庫開發(fā)了eKey應(yīng)用函數(shù)庫(eKey.dll)。該函數(shù)庫可實現(xiàn)與eKey有關(guān)的系統(tǒng)操作,包括密鑰生成、加密簽名等。

方法功能說明

EncryptWithCert()使用eKey內(nèi)公鑰證書中的用戶公鑰加密數(shù)據(jù)

EncryptWithKey()使用eKey內(nèi)用戶私鑰加密數(shù)據(jù)

DncryptWithKey()使用eKey內(nèi)用戶私鑰解密數(shù)據(jù)

GenKey() eKey內(nèi)生成加密或簽名密鑰對

GetEKeyID()從eKey中獲得其惟一的序列號

GenAesKey()eKey硬件中隨機產(chǎn)生256位AES算法密鑰

2 密鑰安全獲取通信協(xié)議

為保證只有通過合法身份認證的用戶才能得到系統(tǒng)密鑰SK(System Key),在此設(shè)計了一種密鑰安全獲取通信協(xié)議。該協(xié)議首先通過檢測用戶eKey的序列號,并與用戶注冊的eKey序列號相比較來實現(xiàn)用戶合法性判斷,然后通過系統(tǒng)密鑰SK的ID號,來正確獲取每個涉密文件對應(yīng)的系統(tǒng)密鑰SK。用戶在服務(wù)器端注冊時將其eKey惟一的序列號與用戶身份綁定,并使用此序列號作為初始值生成密鑰EK,再使用EK加密SK,得到EK{SK},并將其保存于系統(tǒng)密鑰數(shù)據(jù)庫中。在客戶端,用戶只有插入合法的eKey,讀出相應(yīng)的序列號,才能解密EK{SK},從而得到SK。協(xié)議的流程圖如圖1所示,其實現(xiàn)過程為:

(1) 用戶C首先調(diào)用函數(shù)GetEKeyID()獲得其eKey的序列號Ei;再調(diào)用函數(shù)EncryptWithKey()通過自己的私鑰SKc加密用戶名和Ei;得到SKc{Username,Ei};然后用S的公鑰PKs加密SKc{Username,Ei}得到PKs{SKc{Username,Ei}},并將其發(fā)送給服務(wù)器; (2) 服務(wù)器S接收到PKs{SKc{Username,Ei}}后,用其私鑰SKs和C的公鑰PKc依次進行解密,得到用戶名Username和eKey序列號Ei。通過對比服務(wù)器端數(shù)據(jù)庫中存儲的用戶信息和從用戶端接收到的用戶信息,判斷用戶的合法性。S產(chǎn)生一個表示是否通過認證的ACK信號,并生成一個隨機數(shù)Rc,分別用S的私鑰SKs和C的公鑰PKc雙重加密ACK和Rc得到PKc{SKs{ACK,Rc}},并發(fā)送給C;

(3) C解密雙重加密的密文分組PKc{SKs{ACK,Rc}},得到ACK信號和隨機數(shù)Rc,若ACK信號表示通過認證,以Rc為密鑰加密系統(tǒng)密鑰SK惟一的ID號,再用S的公鑰PKs加密Rc{ID}得到PKs{Rc{ID}},并發(fā)送給服務(wù)器;

(4) S用其私鑰SKs和隨機數(shù)Rc依次解密PKs{Rc{ID}}得到系統(tǒng)密鑰SK惟一的ID,并通過查找數(shù)據(jù)庫密鑰信息獲得系統(tǒng)密鑰SK的密文EK{SK},再用C的公鑰PKc加密此密鑰數(shù)據(jù)得到PKc{EK{SK}},并發(fā)送到C。

協(xié)議通過每一步中基于公鑰算法的加密與解密保證了用戶合法性判斷;基于eKey惟一序列號的身份認證,保證非法用戶無法通過其他eKey得到系統(tǒng)密鑰SK;基于EK的加密存儲保證了系統(tǒng)密鑰的存儲安全,協(xié)議從整體上保證了系統(tǒng)密鑰獲取的安全性。

3 密鑰安全管理

采用密碼技術(shù)保護信息時,對密鑰的保護非常重要。密碼體制可以公開,然而一旦密鑰丟失或出錯,對系統(tǒng)安全造成極大威脅。因此,基于網(wǎng)絡(luò)的涉密文件加密存儲必須加強服務(wù)器公私鑰、用戶公私鑰,特別是系統(tǒng)密鑰SK的安全管理。

3.1 系統(tǒng)公私鑰的安全管理

系統(tǒng)初始化安裝時服務(wù)器通過應(yīng)用程序生成自己的公鑰對,并將公鑰以公開的方式分發(fā)給所有用戶。用戶將得到的服務(wù)器公鑰復(fù)制到自己的eKey或密鑰文件夾中,再利用服務(wù)器公鑰完成與服務(wù)器之間傳送保密信息的操作。為了保證系統(tǒng)安全性,系統(tǒng)應(yīng)定期更新服務(wù)器公鑰對,并加密存儲服務(wù)器私鑰。

3.2 eKey公私鑰的安全管理

用戶通過eKey并調(diào)用GenKey()函數(shù)接口產(chǎn)生用戶的公鑰對,并向服務(wù)器傳送用戶公鑰。發(fā)送信息時用服務(wù)器的公鑰加密,接收信息時用自己的私鑰解密。用戶私鑰存儲在eKey中且不可讀,保證了用戶密鑰的安全性。

3.3 系統(tǒng)密鑰SK的安全管理

實現(xiàn)主動防泄密既要保證密鑰數(shù)據(jù)的安全存儲,還要保證合法用戶能通過身份認證獲得解密密鑰(系統(tǒng)密鑰SK)。每一個涉密文件對應(yīng)一個加密密鑰,加密密鑰是由服務(wù)器端密鑰中心通過硬件隨機產(chǎn)生的256位AES密鑰,通過ID編號處理后,使用EK加密得到EK{SK},最后存儲到密鑰數(shù)據(jù)庫。合法用戶獲取系統(tǒng)密鑰SK是基于上一節(jié)提出的“密鑰安全獲取通信協(xié)議”實現(xiàn)的。

4 基于網(wǎng)絡(luò)的涉密文件加解密

4.1 基于網(wǎng)絡(luò)加解密流程

文件加密時首先以系統(tǒng)密鑰SK為加密密鑰,通過AES算法加密原文件,得到文件加密數(shù)據(jù),再將系統(tǒng)密鑰SK的ID號寫入文件頭,與文件加密數(shù)據(jù)組成加密后的涉密文件。

文件解密時,首先讀出文件頭,獲得系統(tǒng)密鑰SK的ID號,并通過ID號在密鑰數(shù)據(jù)庫中查找對應(yīng)的EK{SK}。然后檢測用戶eKey的序列號,并與用戶注冊信息相比較,若相同則通過認證,服務(wù)器將{EK{SK}}發(fā)送到用戶端。用戶端以其eKey的序列號為初始值生成EK,使用EK解密EK{SK},獲得系統(tǒng)密鑰SK(文件解密密鑰),最后使用系統(tǒng)密鑰SK通過AES算法解密涉密文件。涉密文件基于網(wǎng)絡(luò)的加密與解密流程。

4.2 涉密文件加解密的實現(xiàn)

基于網(wǎng)絡(luò)的涉密文件加解密,涉及服務(wù)器端數(shù)據(jù)庫信息管理、數(shù)據(jù)通信以及各種算法的加解密操作。系統(tǒng)分別定義了CUserSet類、CFileSet類和CKeySet類來[LL]實現(xiàn)對用戶信息、文件信息和密鑰信息的操作;系統(tǒng)基于TCP/IP協(xié)議,采用Windows sockets API建立Windows環(huán)境與網(wǎng)絡(luò)之間的編程接口,實現(xiàn)服務(wù)器端與用戶端的數(shù)據(jù)通信。文件加密操作的相關(guān)函數(shù)主要有:

AES加密算法是分組算法,加密時以16 B為單位進行分塊加密,本文在實現(xiàn)中使用CBC分組鏈接模式對16 B的數(shù)據(jù)塊進行處理,對其算法原理和實現(xiàn)代碼不再贅述。

5 安全性分析

在選用高強度AES加密算法加密涉密文件數(shù)據(jù);充分利用eKey的安全特性和密碼服務(wù);設(shè)計嚴密的系統(tǒng)密鑰安全獲取協(xié)議;實現(xiàn)了密鑰的安全管理;設(shè)計了縝密的加解密流程,使得文件只能被特定網(wǎng)絡(luò)環(huán)境下合法的用戶所存取,從整體上達到了高安全性的主動防泄密目的。

小知識之密鑰概念:

密鑰是一種參數(shù),它是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù)。