可以只存儲用于身份驗證的部分數(shù)據(jù)(例如社會保障號碼的后四位)嗎?
可以使用其他不太敏感的數(shù)據(jù)(例如寵物的名字)進行身份驗證嗎?
可以使用或存儲數(shù)據(jù)的hash值(例如MD5、SHA)而不是原始數(shù)據(jù)本身嗎?
在許多情況下,這些問題可以減少需要存儲的數(shù)據(jù)量并降低數(shù)據(jù)的敏感程度。
數(shù)據(jù)加密
公司可以對數(shù)據(jù)庫中的數(shù)據(jù)進行加密,以防止其被盜或意外泄漏。在加密數(shù)據(jù)庫中的數(shù)據(jù)時,有三個關鍵問題需要考慮:在何處加密數(shù)據(jù)、如何加密數(shù)據(jù)以及在何處存儲密鑰。下面將分別討論這些問題:
在何處加密數(shù)據(jù)——加密可以在應用層、數(shù)據(jù)庫或底層存儲器中進行。如果加密在數(shù)據(jù)庫中進行,則還可以對特定字段、列、表或者整個數(shù)據(jù)庫加密。當然,在應用層、數(shù)據(jù)庫和底層存儲器中加密各有利弊。
由于應用層加密是在系統(tǒng)的最高層對數(shù)據(jù)進行加密,所以數(shù)據(jù)對應用層之下的各層都不可見。如果加密在應用層進行,則數(shù)據(jù)庫、操作系統(tǒng)、網絡以及數(shù)據(jù)經過的所有其他路徑都只能看到加密后的形式。
應用層加密的問題在于,通常會有多個高層應用程序需要訪問數(shù)據(jù),這些應用程序將需要密鑰副本對數(shù)據(jù)進行解密??梢垣@得密鑰副本的應用程序越多,密鑰遭到泄漏的可能性就越大。
但是,如果加密在較低的層進行,則你還需要進一步在其他層進行加密。例如,當數(shù)據(jù)流經數(shù)據(jù)庫和應用程序之間的網絡時需要對其進行加密,否則數(shù)據(jù)對網絡層將是可見的。這將會引入需要加以保護的其他加密密鑰。在何處進行加密是一種微妙的平衡,取決于應用程序和數(shù)據(jù)流的體系結構。
如何加密數(shù)據(jù)——加密可以利用軟件、硬件或者軟件硬件相結合的方式實現(xiàn)。具體采用何種方式加密,取決于你希望達到的吞吐量(Mb/s)。如果希望獲得較大的吞吐量,則你可能需要一些硬件加速方式。無論采用何種加密方式,有一個問題別無選擇:始終使用先進的、強大的、基于標準的加密和密鑰管理系統(tǒng);不要試圖發(fā)明自己的加密和密鑰管理系統(tǒng),你自己的加密和密鑰管理系統(tǒng)可能奏效也可能不能奏效。目前,一些高端服務器處理器已經內置了支持AES(高級加密標準)的加密基元(Encryption Primitives),可以實現(xiàn)比基于軟件的算法快得多(高達9倍)的加密。
在何處存儲密鑰——加密最大的挑戰(zhàn)不是加密本身,而是密鑰的存儲和分配。加密數(shù)據(jù)的安全性和可訪問性并不高于密鑰本身。密鑰必須悉心保護,以防攻擊者竊取。同時,密鑰必須與加密數(shù)據(jù)分開存儲,但又要可供加密/解密算法訪問。另一方面,必須對密鑰進行備份和復制,以便當原始數(shù)據(jù)和原始密鑰由于災難而丟失時可以解密備份數(shù)據(jù)。你選擇的任何密鑰管理系統(tǒng)必須支持下列功能:
安全存儲密鑰。
認證和跟蹤審計對密鑰的訪問。
托管或恢復密鑰,以防密鑰丟失。
備份密鑰并將密鑰安全地傳輸?shù)竭h程位置,以供恢復之用。
加密標準
許多加密和密鑰管理系統(tǒng)都通過了以下兩個實用標準的認證:美國聯(lián)邦信息處理標準(Federal Information Processing Standard,F(xiàn)IPS)140,其安全級別分為1到4級;通用標準評估保證等級(Common Criteria Evaluation Assurance Level,CCEAL),其安全級別分為1到7級。這些標準提供了一個指標,可以比較不同系統(tǒng)的加密算法、密鑰存儲和密鑰管理機制的安全性。級別越高意味著加密算法、密鑰存儲方法、防篡改硬件和密鑰管理機制越好。例如,F(xiàn)IPS在確定一個認證級別時,考慮了11個不同方面的安全性。你應該根據(jù)數(shù)據(jù)的敏感程度和你所在地區(qū)的監(jiān)管要求,選擇合適的安全級別。
數(shù)據(jù)庫應用極為復雜,由多層松散耦合的組件構成。數(shù)據(jù)庫應用的安全性難以保證,但又包含了公司最敏感的數(shù)據(jù)。然而,利用數(shù)據(jù)最小化和加密技術,公司可以巧妙地在數(shù)據(jù)的安全性、可訪問性和可用性之間取得平衡。