【问题标题】:Alternatives to SQLite Database Encryption [duplicate]SQLite 数据库加密的替代方案 [重复]
【发布时间】:2013-04-16 04:02:01
【问题描述】:

我的桌面 Java 应用程序使用几个只读 SQLite 数据库,我希望人们无法打开和查看这些数据库。通常,这可能通过加密来完成,但我目前使用的是sqlite4java 库,它不支持加密,也不容易允许使用其他 SQLite 加密库(例如 SEE)。

我想要做的是让“临时黑客”尽可能难以找到这些数据库文件之一并打开它们。例如,有人放弃了将它们粘贴在受密码保护的 ZIP 文件中的想法,然后使用类似 here 建议的库将其动态解密为 InputStream 或临时文件。

这是值得做的事情吗?

编辑:我意识到这不会是完全安全的,并且足够敬业的黑客可能仍然能够找到密钥并对其进行解密(这似乎是任何此类程序的漏洞)。

【问题讨论】:

标签: java sqlite


【解决方案1】:

“我想做的就是让它变得尽可能困难。”

你可能只是为了自己让事情变得尽可能困难

普通用户不会打开应用程序二进制文件。打开应用程序二进制文件的人有工具可以找到您的加密密钥。

如果你想通过默默无闻来从事安全,只需将数据库文件命名为“commons-io-3.2.1.jar”而不是“mydb.sqlite3”。不麻烦你,还是甩掉“随便的黑客”。

【讨论】:

  • 不知道你说的用户不打开APK是什么意思。经过身份验证的公钥的全部意义在于它可以防止人们打开您的文件。
  • 抱歉,我以为我们在谈论 Android 软件包 (APK)。替换为 EXE 或 JAR 或者您发布的程序。
  • 对,我意识到我无法阻止某人打开应用程序二进制文件。我希望有一些比重命名文件更安全的东西。将它捆绑到一个 EXE 中可以满足这一点,但这似乎很难管理。
  • “管理痛苦”正是我的目标。如果这对您来说真的很重要,请寻找另一个支持加密的数据库驱动程序。不要为此花时间在您的应用程序编程上。
  • 这可能是最好的答案,并且您关于没有花时间进行编程的最后评论已经得到很好的说明。
【解决方案2】:

除了使用密码保护您的 SQLite DB,您还可以选择不将其与应用 APK 一起提供,而是在首次运行时下载内容,这样您就不必加密和解密,并且您的 APK 更轻量级。

另外请记住,您的数据库仍然可能被黑客攻击。

【讨论】:

  • 恐怕不能即时下载数据库(用户可能没有互联网连接),这将用于桌面应用程序,而不是手机(至少现在)。另外,我更担心有人在计算机上打开文件。
  • 另外,人们可以反编译java来查看你做了什么以及你是怎么做的,所以不要依赖于默默无闻的安全性。
  • 与在 sqlite3 命令中打开数据库文件并查看它相比,反编译我的 java 代码并搜索密钥不会花费更多的精力吗?
  • 我说的是你让它加密的场景。
  • 如果我提前通过其他方式加密,然后用程序发送加密文件怎么办?解密密钥可能在某处,但同样,您必须反编译程序然后寻找它。
猜你喜欢
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 2018-11-14
相关资源
最近更新 更多