2008-10-16 115 views
8

我需要開發一個將數據存儲在SQL Server 2005數據庫中的應用程序(應用程序本身將是WCF服務或Asp.Net Web服務)。SQL Server 2005中數據庫加密的最佳實踐

現在,這些數據是絕對保密的,我需要將它以加密的形式存儲在數據庫中。

所以,我想知道最佳做法是圍繞這一點。我知道有一些SQL Server內置的加密功能。是否有一個'傻瓜'類型的資源,以便我可以快速前進。

或者我想我可以在我的C#代碼中進行加密/解密,而不是在數據庫中 - 可能有一個處理數據訪問層上方的層(這是個好主意)?

回答

3

請參閱this link以獲得有關樣品的良好介紹。

我認爲在應用程序中進行數據加密更好,因爲在這種情況下傳輸的數據已經被加密。否則,您必須在應用程序和數據庫服務器之間使用安全通道。

這取決於您的需求,我會說。

1

您是否考慮過在file-system級別對數據進行加密?

它只是Windows 2008/Vista,但它應該給你你需要的東西,它就是它的設計目的。

+0

永遠不要使用位寄存器,如果你甚至讀過你發佈的維基百科文章,你應該知道這一點。 – 2008-12-18 14:57:10

0

在決定加密方法之前,您需要訪問系統的哪些部分易受攻擊。如果存在未授權訪問數據庫的可能性,您的應用程序是否存在相同的威脅?有人可以通過Reflector運行你的代碼,並確定用於加密和解密的方法。你可以在一定程度上用代碼晦澀難耐來緩解這種風險。如果這種擔憂不是風險,那麼您可能會發現在應用程序級別對數據進行加密更容易。

0

加密需要發生在幾個不同的地方,這取決於應用程序。例如,使用信用卡信息的消費者網站需要通過網絡對連接進行加密,以防止中間人攻擊或窺探。當數據存儲在數據庫中時,您需要對數據進行加密,以便低級銷售代表無需閱讀並訪問客戶的信用卡信息,除此之外,您可能希望實施列級別加密作爲適當的權限,如果您的擔心有一天數據中心的看門人可能會竊取你的備份中的一個,那麼你需要使用TDE工具來加密磁盤級別的數據。

加密的性能開銷尤其與CPU使用有關,更重要的是開銷取決於用於解密的alogrithim。