1

我有一个桌面应用程序需要从数据库中读取数据,两者都安装在客户端计算机上。

必须对数据库中的数据进行加密,以拒绝客户端访问并保护数据。

我需要知道使用什么样的数据库可以支持加密,因为某些表中的数据量会非常庞大​​,我也需要效率。

我在网上阅读了一些关于此的内容,也许 SQL Server Compact Edition 将是一个不错的选择。

有人可以帮我解决这个问题吗?

谢谢

4

5 回答 5

2

您无法阻止坚定的攻击者访问解密密钥和访问数据库。这实际上是一种复制保护方案,它们都被破坏了。


更新:问题指出,“必须对数据库中的数据进行加密,以拒绝客户端访问并保护数据。” 如果客户端可以访问任何可以访问数据库的应用程序,他就可以访问应用程序使用的密钥,并且可以绕过应用程序直接访问数据库。

如果不可避免的逻辑没有吸引力,请考虑试图保护音乐、游戏和其他数字资产的复制保护计划失败的轶事证据。

于 2009-05-22T19:12:58.360 回答
2

SQL Server 2008 包含一个称为透明数据加密的功能,它可以满足您的需要。我不知道精简版是否包含此功能。使用这些关键字进行一点谷歌搜索应该可以帮助您入门。我通常不提倡使用 SQL Server,但在这种情况下,我不知道其他数据库供应商有任何类似的功能(但它们必须存在......)。

也就是说,您希望通过加密数据获得什么?如果这完全是客户端,那么客户端将拥有解密数据的密钥。充其量,您只是为人们获取您的数据库内容设置了一个小障碍。任何有意义的定义都不安全。

于 2009-05-22T18:15:08.260 回答
1

SQLite 有一个加密扩展 (SEE),允许应用程序读取和写入加密的数据库文件:http ://www.hwaci.com/sw/sqlite/see.html

该数据库可能非常适合桌面应用程序,并且被广泛使用。例如,我相信 FireFox 在内部使用它。

于 2009-05-22T18:14:45.810 回答
1

SQL Server CE 不支持任何加密。您最多可以使用主机操作系统加密工具来加密数据库文件。文件级加密不适用于数据库,因为要读取文件中的页面 X,必须解密所有页面 1...X-1 以获取处于适当状态的加密密钥(达到适当的 CBC 块状态)。另一方面,BitLocker 工作正常,因为它可以单独解密/加密文件中的页面。但 BitLocker 是分区级别选项,而不是文件级别。这些一般注意事项适用于加密整个数据库文件的任何计划,与所涉及的产品(SQL CE、SQL Express、MySQL、Access 等)无关。

SQL Server 具有数据库级加密。最容易使用的是 TDE,即透明数据加密,但这需要企业版。另一种选择是使用加密功能并自己管理加密。很难使用,但在免费的 Express 版本中可用。

于 2009-05-22T18:17:29.317 回答
0

我可以推荐SQLCipher吗?它是 SQLite 的免费和开源实现,支持透明的页面级加密。它类似于 SEE,它正在积极开发中,并且对许多不同的密码具有实验性支持,因为它在某些实现中使用了 OpenSSL。全面披露:我是开发人员之一!我们有一个关于在 iPhone 应用程序中使用它的教程,可以让您基本了解它的工作原理,并且有一个评论线程扩展了一些相关主题。显然,在 Visual Studio 中使用它与 XCode 略有不同,但您应该能够连接链接并在 Windows 环境中使用它。

于 2009-06-29T14:31:22.703 回答