4

情况:我需要在我的远程数据库和我的 c# 应用程序之间进行加密。我不知道我在做什么(以前从未做过任何加密),我在网上找到的所有东西都是针对 asp.net 并处理 web.config 文件的。

一些相关数据:我的连接字符串包含 SQL 服务器身份验证的密码信息,有一个选择和一个删除语句。这三件事需要加密。

我正在使用 SQL Server 2008、Visual Studio 2008 和 C#。

我怀疑这是相关的,但这是在 Windows 服务中发生的。到目前为止,在 winForms 中工作的任何与 SQL 相关的东西都在服务中为我工作,所以任何与 winForms 相关的帮助都值得赞赏。

我需要帮助:

  1. 任何不限于 asp.net 的加密参考将不胜感激。:)

  2. 我看到MSDN page,这似乎是一个不错的起点,但我有点困惑。这似乎是 2 个应用程序相互发送文件的方式,而不是向 SQL Server 发送加密的内容?使用它,我不知道 SQL Server 将如何知道如何解密它?

  3. 我是否在 System.Security.Cryptography 的左侧字段中寻找出路?是否有某种方法可以在 System.Data.SqlClient 中指定加密,或者我将不得不求助于在远程服务器上创建存储过程?

先感谢您!!!:)

概括:

谢谢大家让我走上正确的道路,很难选择一个答案!:)

我已经得出结论,我需要使用 SSL,虽然我对操作方法有很多困惑,但我知道这需要证书,并且一旦设置了证书,客户端可以通过询问来请求加密对于连接字符串中的“Encrypt=yes”。幸运的是,我相信我已经有了一个可以使用的。

另一件需要注意的事情 - TDE 是关于什么对加密数据库中的数据有好处的共识,而 SSL 是用于传输加密数据的。

以下是我认为最有帮助的几个链接:

http://blogs.msdn.com/b/sql_protocols/archive/2005/10/04/476705.aspx

http://support.microsoft.com/default.aspx?scid=kb;en-us;316898

4

3 回答 3

5

对于应用程序和数据库之间的加密,最好的办法是在 SQL Server 级别使用 SSL 证书。这是关于它的 Microsoft 知识库文章(针对旧版本的 SQL Server)。 http://support.microsoft.com/kb/316898 这将防止嗅探器。

我们使用信用卡申请表完成了这项工作,而且非常简单。

此 Microsoft.com 搜索将帮助您使用较新版本的 SQL Server。

本文将对 SQL Server 2008 有所帮助。 http://msdn.microsoft.com/en-us/library/cc278098.aspx

于 2010-06-07T21:07:19.687 回答
4

您需要保护应用程序和 SQL Server 之间的流量。为此,只需按照加密与 SQL Server 的连接中描述的步骤进行操作。

接下来的事情是,如果您确实存储了敏感数据,您希望将其加密存储在数据库中,以防止意外的媒体丢失。到目前为止,最好的解决方案是使用透明数据库加密

这些解决方案都不需要在您的应用程序中更改任何一行代码。它们都是部署时间,管理员控制的设置。尝试推出自己的密码学解决方案会让你一事无成。在密码学中非常容易搞砸,你甚至都不知道。通过简单地利用 SQL 提供的加密功能(连接 TLS、存储 TDE),在不更改应用程序的情况下满足要求要容易得多,而且效果要好得多。

于 2010-06-07T21:34:20.927 回答
1

我对你的要求有点困惑。您需要在本地加密数据,还是要加密您的应用程序和服务器之间的连接?还是存储在数据库表中的数据?还是这些的组合?

无论如何,对于连接的加密(包括身份验证),您可能需要查看 SQL Server 的通道加密功能。http://blogs.msdn.com/b/sql_protocols/archive/2005/10/04/476705.aspx

对于本地文件或连接字符串以及二进制数据加密(也可能以其加密形式存储在数据库中),查看 System.Security.Cryptography 命名空间是可行的方法。

于 2010-06-07T21:11:42.037 回答