哪种方法是存储少量结构化数据的最安全方式?

时间:2011-04-14 21:17:38

标签: c# xml database encryption

我有少量的结构化数据,我需要完成三项任务:

  1. 从/从硬盘或USB笔保存/检索数据
  2. 拥有一个“便携式”应用程序(除了框架之外无需在PC上安装)
  3. 安全数据
  4. 达到目标的最佳途径是什么? 我认为,结构化数据,我可以/应该使用数据库......但是哪一个? MySql是免费的,但速度非常快,但需要安装......丢弃 MsSql / Oracle有同样的问题,所以不能使用它们 也许 SQLite ?好吧,这可能是一个不错的选择:无需安装,单个文件也可以使用字节数组或字符串作为密码进行加密。
    那么 XML 呢?它易于使用,只是一个可以加密的文件......但问题是如何?使用AES? 3DES?或者只是将XML流存储在受长密码保护的ZIP / 7Z文件中? 我知道没有什么可以完全确定(今天我们有GPU和云计算来破坏保护和密码),但我怎样才能创建一个易于使用和便携的真正安全的存档?
    哪种方法最安全?为什么呢?
    感谢

4 个答案:

答案 0 :(得分:1)

XML是一种跨平台,非专有的信息存储方式。几乎所有现代操作系统都可以读取以XML格式存储的数据,并且只需要很少的软件存储在USB驱动器上,并且永远不需要安装任何第三方软件。 AES通常足够安全,只要它是咸的。

答案 1 :(得分:1)

您可以轻松解析任何数据。 XML和SQLite都是不错的选择。使用哪个更适合您的目的,并确保您加密它。如果您的数据很好地适合关系模型 - 表,列,行 - 并且XML是一个很好的选择,如果您想存储分层数据,SQLite是很好的选择。您选择哪种加密算法取决于应用程序 - 您需要多少安全性以及哪种库具有更好的库选择支持。 XML或SQLite只能与您使用的加密一样安全。

有一些现成的SQLite加密产品,但它们都不是免费的AFAICT。可能最好的解决方案是SQLite Encryption Extension,这是由SQLite本人的作者编写的,但成本(2000美元)。你可以自己动手,但它不会那么干净。我也相信如果你使用的是.NET,我相信你可以从.NET库中获得一些免费的密码保护(参见Password Protect a SQLite DB. Is it possible?)。

修改:经过一番研究后,我已经转好了list of SQLite wrappers that says which ones support encryption。根据语言和个人偏好选择。

答案 2 :(得分:0)

http://www.safehousesoftware.com/SafeHouseExplorerU3.aspx

有一些软件可以让你加密你的部分密钥。

答案 3 :(得分:0)

我认为最简单的方法是在Sqlite数据库周围使用System.Data.Sqlite包装器。加密数据库非常简单:您只需将密码属性设置为密钥字符串即可。他们讨论了如何在forum中使用Microsoft Crypto API和RC4算法。

您可以在项目中获得SQL数据库,ADO.Net接口,单文件数据库和单个DLL的优势。即使你正在做的只是在数据库中存储XML字符串,这也不容易。