摘 要:給出一種利用信息安全、信息加密和數字認證等技術的面向PDF文檔的安全電子郵件系統,其核心基本思想是通過客戶機、服務器之間的請求/應答機制,通過身份認證并在網絡上加密傳輸敏感數據,使得用戶通過簡單的交互操作就可以達到其所需的信息保護目的。系統的應用層面包括身份認證、數據加密發布、數據安全傳輸、安全數據查詢檢索、信息安全存儲服務和Web資源的組織等技術,該系統已在實際項目上獲得了應用,產生了較好的實際效果。
關鍵詞:安全電子郵件; 身份認證; 數據加密; 安全傳輸; PDF文檔
中圖法分類號:TP309.2文獻標識碼:A
文章編號:1001—3695(2007)02—0151—04
隨著因特網的發展,電子郵件作為一種通信方式逐漸普及,保證電子郵件本身的安全以及電子郵件對系統安全性的影響越來越重要。目前的電子郵件系統雖然可以高效地實現數據的錄入、修改、傳輸等功能,但所提供的安全服務功能只局限于一些簡單操作,如使用簡單的用戶名、用戶密碼方式、郵件的簡單加密傳輸等,無法抵御一定強度的攻擊,其邏輯結構和智能層次不能滿足解決復雜安全服務問題的需要,無法保護隱藏在數據背后的關系、規則和發展趨勢等問題。同時,人們對信息的安全需求水平越來越高,希望能夠對其進行更高層次的安全保護和安全利用。密碼理論與技術是信息安全發展的主體[1],隨著密碼技術發展和應用的深入,新的需求推動著電子郵件系統從非安全型轉入安全型階段。
密碼理論與技術最新的非對稱加密技術為電子郵件系統的數據安全、身份認證管理和數據的安全傳輸提供了新的思路。企業和政府的電子郵件中含有大量的重要機密數據,有著比一般電子郵件更加豐富和復雜的語義信息。現有的大多數商業應用數據庫中已經包含了大量的、機密的、基于電子郵件傳輸的數據,需要做的工作是將這些充分的數據轉換成信息安全的以及具有安全特性的數據庫可以識別的形式。電子郵件系統正逐漸成為郵件數據庫整體的一部分,信息安全技術與工具被越來越多地集成到數據庫中,數據庫的數據機密性被逐漸加強,公共數據與商業數據的分析及處理融合在一起。
本文給出面向PDF文檔的安全電子郵件系統的實現技術,系統吸收密碼理論中的思想,將數據加密、身份認證和數據安全傳輸等方法緊密集成,充分利用加密數據存儲、管理用戶身份的功能使原有的非安全數據變成安全數據,使電子郵件系統成為安全的信息系統。數據加密和數字證書技術的應用,一方面可使電子郵件的保護和傳輸提高到發現新理論、新需求的新階段;另一方面從中發現的新理論、新需求又可用于建立新型的安全化電子郵件系統。系統已經在Windows 平臺中得以實現,它是一個自主開發的計劃集成多種商業電子郵件系統的安全電子郵件平臺,以PDF為基礎,集成了虛擬打印技術、數據加密等技術,能夠彌補傳統電子郵件單一系統的某些不足。
1 系統架構方案
1.1 需求分析
企業之間的交換文件種類繁多,執行過程錯綜復雜,必須要有一個運行良好的且安全的電子郵件系統來輔助完成各項任務。系統由于在一般電子郵件系統的基礎上具備安全界面,能夠幫助企業人員直觀地掌握各類管理對象。安全電子郵件系統應輔助保障以下業務工作的安全性:①利用不可猜測的票據,對數據庫進行基于票據的用戶身份驗證;②利用數字證書對電子郵件進行基于數字身份的用戶身份驗證;③數據(通過網絡傳遞的數據和長期保存的數據)的加密技術;④利用加Salt值的口令散列代替加密的口令進行身份驗證;⑤防止重放攻擊的時間戳;⑥防止竄改消息的消息身份認證代碼;⑦確保長期保存的數據沒有被竄改的數據驗證;⑧用戶提供的用來防止安全漏洞的標準值;⑨PDF電子文檔的自動生成。
在考慮傳輸層安全時,最重要的是理解可能面臨的攻擊。下面簡單概括了最常見的幾種攻擊類型:
(1)偷聽。允許攻擊者在客戶機和服務器之間遍歷時檢索敏感信息。一般情況下都通過對消息的加密形式來防止偷聽。
(2)竄改。當攻擊者設法修改消息時,可能會導致應用程序出現錯誤。要想防止竄改,可以使用某種簽名或密鑰散列碼來驗證數據是否已經被竄改。
(3)中間人攻擊。為了獲取特權數據,攻擊者扮演客戶機或者服務器,或只是導致應用程序出現錯誤而發起的攻擊。要想抵御中間人攻擊,需要利用上面介紹的全部技術和一些形式的身份驗證,如數字證書。
(4)重放攻擊。在攻擊者截獲一則消息并設法在后面重新使用它時發生的攻擊。例如,即使攻擊者不能理解或竄改登錄消息,他也可以設法利用獲得的訪問權。重放攻擊一般利用某種序列號或時間戳系統來檢測過期的或次序混亂的消息。
(5)考慮保護服務器環境是最重要的,但是還應該包括安全的附加層,它可以限制安全破壞的程度,這些包括將信息(如信用卡數據和用戶密碼等)都以加密的形式保存在數據庫中。這樣,有權訪問服務器的攻擊者就不能輕易訪問到重要的秘密信息。同樣,還應該對服務器和發行點(簽署代碼并部署給服務器的計算機)采取不同的安全措施,如果攻擊者竊取了用于簽名代碼的密鑰對,我們仍然有防范措施禁止他們在服務器上運行惡意代碼。
1.2 系統架構方案
圖1是系統架構的整體體系結構圖。從圖中可以看出整個系統可以分為三層結構,分別是基礎數據層、數據安全管理層和安全應用層。
1.2.1 基礎數據層方案
電子郵件數據包括用戶身份數據和用戶文檔數據(即PDF文件附件),用戶身份數據和文檔數據一體化地存儲在Microsoft SQL Server數據庫中,以完全連續的方式存儲數據,不論數據量多大都沒有分割和區塊的概念,數據庫是真正意義上的連續和無縫,用戶可自由地漫游整個數據庫。將用戶身份數據和文檔數據存儲到數據庫中最主要的問題是如何解決數據安全的存儲問題。為了增加系統的安全性,我們對重要的身份信息和文件信息采用加密存儲的方式,如用戶密碼利用加Salt值的散列值代替加密的口令;用戶傳輸的文件名是隨機的等。
采用加密的存儲方式體現了權責明確的安全準則,用戶只能在規定的權力范圍內執行一定的操作,如系統管理員無法看到用戶的密碼和用戶存儲的具體文件內容,保護了用戶的信息。
1.2.2 數據安全管理層方案
數據安全管理概念提出的意義主要在于建立一種數據安全管理體系結構,把分散的、不利于訪問的數據轉換成集中、統一、隨時可用的信息,從而可以集成不同形式的數據,并為數據安全提供系統開放性。在數據安全管理層中主要實現數據的安全訪問控制機制,主要包括以下幾個重要的方面:
(1)利用不可猜測的票據對數據庫進行基于票據的用戶身份驗證;
(2)利用加Salt 值的口令代替加密的口令進行身份驗證;
(3)確保長期保存的數據沒有被竄改的數據驗證。
數據安全管理層主要解決的是安全訪問數據庫的問題。
1.2.3 安全應用層方案
采用不安裝任何插件的瘦客戶模型,只要有瀏覽器可以聯機瀏覽HTML文件即可。客戶端和服務器端之間的通信請求是通過HTTP和基于簡單對象調用協議(SOAP)的Web Ser-vices技術完成的,由于HTTP和Web Services是多個操作系統的共同標準,因此可以最大限度地提供平臺之間的可移植性。
系統作為一個分布式應用程序,采用N層結構架構,主要有表示層、業務邏輯層、數據訪問層以及應用組件層。這里的應用組件主要是指安全獲取郵件服務器組件及用戶登錄和會話程序,如圖2所示。
2 系統應用層的功能設計與各模塊的實現
系統是一個基于數字證書認證、有潛力支持各類數據安全功能的、采用瘦客戶模型實現的電子郵件平臺。應用層包括四個子系統:①虛擬打印子系統是以PDF為基礎,提供文件格式轉換功能并集成在基本業務的功能系統;②加密和傳輸子系統是針對分布式環境下,對數據的安全傳輸和數據的安全存儲提供有利保護的子系統;③身份認證子系統則是以數字證書為基礎,綜合應用數字簽名、數字加密算法等技術開發的基于數字身份信息服務的身份認證子系統;④監控子系統是對以上各個子系統運行狀況的一個綜合監視和控制平臺,對各個子系統狀況提供可視化的界面。該子系統可為系統管理員提供一個實時狀態分析,進一步提供安全管理功能。
安全電子郵件系統中的各功能模塊采用組件化方式開發,同時組件支持設計時特性,以方便組件用戶進行應用開發。
2.1 虛擬打印模塊的實現
虛擬打印程序采用了兩個過程來完成從原始文檔到PDF文檔的生成:
(1)從原始文檔到PostScript文檔的生成;
(2)從PostScript文檔到PDF文檔的生成。
虛擬打印程序的框架由以下三個部分組成:
(1)PostScript Print Spooler,用于完成文檔打印數據的生成和打印控制;
(2)PostScript Print Driver,用于把文檔的打印數據生成為PostScript數據;
(3)PDF Distiller,用于把PostScript數據轉換為PDF文檔。
2.2 加密和傳輸子系統的實現
加密和傳輸模塊主要負責信息的加密、安全信道和數據在數據庫中的加密存儲。該模塊有以下組件:
(1)文件加密組件,加密動態生成的對稱密鑰;
(2)會話加密組件,可以對那些需要通過連接發送的任何類型的數據進行加密;
(3)數據庫加密組件,包含添加文件記錄、檢索文件信息和驗證登錄信息。
文件加密組件是最直觀的,它需要一個非對稱密鑰,用來加密動態生成的對稱密鑰。該組件的框架代碼如下所示:通過上面的代碼框架我們可以看到,該文件加密組件使用的是用戶的數字證書的密鑰作為非對稱密鑰。另外,在安全的程序設計中,始終都應該把類聲明為密封的,這樣惡意代碼就不可能從該類中繼承和重寫它的功能。然后是文件加密程序,使用的是Rijndael[2—4]算法,為了能夠抵御蠻力攻擊,在Rijndael算法中,我們使用加密安全的隨機數來初始化IV向量。
會話加密組件可以對那些需要通過連接發送的任何類型的數據進行加密,該信息可以利用動態生成的會話密鑰加密。會話加密組件比文件加密組件更復雜,這是因為它們在客戶機和服務器上的操作是不同的,而且需要處理不同類型的數據。為了支持這種設計,核心功能包含在一個SecureSession的抽象類中。基于該類構建的其他兩個類SecureClientSession和SecureServerSession可以提供高級加密服務。
如下所示為SecureSession抽象類的框架代碼,它定義了能夠對稱加密或非對稱加密任何可串行化對象的核心功能,此外它還包括對非對稱服務器密鑰(Web服務提供的)的引用和對稱客戶機密鑰(供會話使用,由客戶機動態生成)的引用。
在會話加密組件中使用了一種消息身份驗證代碼,該代碼可以利用客戶機密鑰計算散列碼,并將其添加到消息數據的最后。這樣在會話當中,首先要驗證消息身份驗證代碼以確保數據沒有被竄改。
圖3是會話加密組件的工作原理圖,首先它們要設法進入該系統。為了執行該登錄操作,客戶機必須提交數字身份標志,在數字身份標志中包括用戶名和密碼,還包括一個創建時間字段,這是因為數字身份對象中的數據將被串行化并加密為單獨的一個數組。通過所包含的日期和時間,服務器可以拒絕舊的登錄包,并防止黑客重新使用原來被截斷的網絡通信(也就是我們常說的重放攻擊)。除此之外,數字身份中還包括一個隨機生成的對稱密鑰,將來所有的通信都可以使用它(假設登錄成功的話)。
在開發周期的前期需要執行的數據庫操作也非常重要[5,6],這些操作包括添加文件記錄、檢索文件信息和驗證登錄信息。從理論上看,這些任務都將通過存儲過程執行。在數據庫組件的實現中,可以利用代參數的命令,它能保護數據庫不受SQL注入攻擊并且提供一種簡單的存儲過程的代碼遷移路徑。數據庫代碼被封裝在一個單獨的名為DatabaseServices的類中,在創建該類時,可以從配置文件(指的是存放Web服務的虛擬目錄的Web.config文件)中讀取數據庫的連接字符串。連接字符串應該指授予訪問用戶表和用戶郵件表所需的權限。
2.3 身份認證模塊的實現
身份認證模塊主要負責基于數字證書的身份驗證,通過使用數字證書的形式來達到身份驗證的目的。該模塊主要有以下組件:
(1)列出本地計算機中的證書存儲單元,用于獲取存儲的數字證書;
(2)檢查本地計算機中的數字證書,驗證數字證書;
(3)處理證書鏈;
(4)處理被封裝的數據,完成數字證書數據的處理。
身份認證子系統采用瘦客戶模型的N層體系結構設計。客戶端不需要安裝用戶軟件,只需要有一個Web瀏覽器,數據存儲層是通過數據庫管理子系統創建的數據庫。數據庫中存放有用戶建立的數據或稱為多維數據集。服務器端主要由Web服務器(Web服務器證書宿主)和郵件數據庫服務器組成。設置數據源;構建Web服務;為Web服務組件建立虛擬目錄,然后設置Web服務擴展和Web服務的初始化以及驗證證書。
2.4 監控模塊的實現
監控模塊主要負責各個子系統運行狀態的監控,及時向系統管理員報告異常情況。該模塊有以下組件:
(1)系統登錄狀態監控組件,對每個用戶登錄狀態的記錄;
(2)文件傳輸狀態組件,對那些需要通過連接發送的任何類型的數據傳輸狀態的記錄;
(3)日志組件,包含對身份驗證情況的記錄、文件傳輸的記錄和檢索文件信息的記錄等,提供每日記錄。
從前面介紹的安全體系結構中我們可以看出,一個好的信息安全系統監控是必不可少的,同時也是對該系統運行情況的一個監視。
典型的蠻力攻擊的工作量很大,例如,黑客在查找到用戶名和口令組合之前,會向Web服務器發送數以百萬計的請求。有了監控子系統,就可以在黑客的攻擊造成損害之前發現攻擊的跡象。最好的做法之一就是記錄安全異常,該信息可以存儲在中心數據庫中。管理員迅速審查該信息就可以輕易發現潛在的問題,這樣更方便,如果出現安全漏
洞,就必須正確修復以便控制它造成的損害。
3 結束語
對商業數據進行身份認證和加密保護是保障商業機密的絕好機會。將數字證書與數據庫身份驗證提供的歷史觀點相結合,可以對商業建立更好的模型,更好地保護現在的商業活動,發現商業機會。安全最終將在電子郵件系統中占據重要的地位。
系統已經在Windows平臺中得到了實現,它是一個自主開發的計劃集成多種商業電子郵件系統的安全電子郵件平臺,該系統已在實際項目上獲得了應用,產生了較好的實際效果。雖然我們做了很多工作,但是與其他成熟的軟件比較起來,系統還顯得很稚嫩,有待進一步的完善,將來可以考慮在以下方面進行改進:
(1)數據庫方面,可以考慮用二進制或用戶自定義類型(在SQL Server 2005以及Oracle 9i均有支持)等敏感的數據類型代替Text類型以減少數據轉換的開銷;
(2)在數據加密存儲功能方面可以加入更合理的數據調度策略,使得系統反應更加敏捷;
(3)在數據存儲類型方面可以考慮如何把其他類型的數據納入安全保護范圍之內,如視頻和音頻數據[7];
(4)在數據加密傳輸方面,可以加入更多實用或有研究前途的數據加密算法。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。