2010-10-03 51 views
2

我一直在致力于开发此分析工具以帮助解释和分析捆绑包内的数据库。保护数据库对我们来说非常重要,只有通过我们的软件才能访问数据库。在Python中实现它的最好方法是什么?加密将被捆绑在pyexe文件中的Sqlite数据库文件

我知道可能没有明确的解决方案,但威慑在这里真正重要。

非常感谢。

+0

一个专有的目标 - 帮助你锁定你的东西 - 并不是许多人花费时间免费的东​​西。 – 2010-10-03 05:23:53

+0

阻止人们获取他们已有的数据非常困难(见证DRM)。锁定对数据库的访问权限的最好方法是根本不发送它,而是使用通过互联网发送的查询。大量的例子(即所有webapps的99%)。我不知道这个架构是否可以用于你的应用,但其他任何东西都很难(对于确定的攻击者来说可能是不可能的)。 – 2010-10-03 05:40:39

回答

3

这个问题每个月大概在SQLite用户邮件列表上。

无论你做了多少加密等操作,如果数据库在客户端机器上,那么解密密钥也会在某个时刻在机器上。攻击者将能够获得该密钥,因为它是他们的机器。

一个更好的方式来看待这个问题是在金钱方面 - 一个坏人需要花费多少钱才能获得数据。这通常最多是几百美元。只需要一个人获得密钥,然后他们就可以为每个人发布数据库。

因此,无论是Donal提到的Web服务还是花几分钟模糊数据库。例如,如果您使用APSW,那么您可以在几行内写入一个VFS,以便对数据库内容进行异或运算,以便常规SQLite不会打开它,文件查看器也不会显示正常的SQLite头。 (在APSW中有示例代码显示如何执行此操作。)

因此,任何拥有数据库内容的人都必须故意这样做。

+0

FWIW,这是指向[示例代码](http://apidoc.apsw.googlecode.com/hg/example.html#example-vfs)的链接,它显示了如何通过XORing模糊数据库文件的内容。 – martineau 2013-10-02 22:55:37

4

有人通过将SQLCipher重新构建为DLL并替换Python的sqlite3.dll here,从而使Python和SQLCipher一起工作。

+0

@Michael:我不应该提供这个答案吗? – 2013-12-23 08:01:26

相关问题