我需要开发一个将数据存储在 SQL Server 2005 数据库中的应用程序(应用程序本身将是 WCF 服务或 Asp.Net Web 服务)。
现在,这些数据是高度机密的,我需要将其以加密形式存储在数据库中。
所以,我想知道这方面的最佳实践是什么。我知道 SQL Server 内置了一些加密功能。是否有“傻瓜”类型的资源,以便我可以快速开始。
或者,我在想我可以在我的 C# 代码中而不是在数据库中加密/解密——也许有一个层可以在数据访问层之上处理这个问题(这是个好主意)?
我需要开发一个将数据存储在 SQL Server 2005 数据库中的应用程序(应用程序本身将是 WCF 服务或 Asp.Net Web 服务)。
现在,这些数据是高度机密的,我需要将其以加密形式存储在数据库中。
所以,我想知道这方面的最佳实践是什么。我知道 SQL Server 内置了一些加密功能。是否有“傻瓜”类型的资源,以便我可以快速开始。
或者,我在想我可以在我的 C# 代码中而不是在数据库中加密/解密——也许有一个层可以在数据访问层之上处理这个问题(这是个好主意)?
您是否考虑过在文件系统级别加密数据?
它仅适用于 Windows 2008/Vista,但它应该能够满足您的需求,这正是它的设计目的。
在决定加密方法之前,您需要访问系统的哪些部分易受攻击。如果存在未经授权访问数据库的可能性,您的应用程序是否存在同样的威胁?有人可以通过 Reflector 运行您的代码,并确定使用了哪些方法来加密和解密。您可以使用代码混淆器在一定程度上减轻这种风险。如果这种担忧不是风险,那么您可能会发现在应用程序级别加密数据更容易。
根据应用程序的不同,加密需要在几个不同的地方进行。例如,使用信用卡信息的消费者网站需要对网络连接进行加密,以防止中间人攻击或窥探。当数据存储在数据库中时,您需要对数据进行加密,以便低级别的销售代表无法读取和访问客户的信用卡信息,如果您在此之外,您可能还需要执行列级加密作为适当的权限。担心有一天您的数据中心的管理员可能会窃取您的一份备份,然后您需要实施 TDE 来在磁盘级别加密数据。
加密有性能开销,尤其是 CPU 使用率,更重要的是开销取决于用于加密的算法。