0

我目前正在做一个Java搜索项目,该项目将分发到客户的本地服务器,该项目包含一些有价值的数据,我们希望它不能直接在机器上访问,而只能从项目服务/apis访问。数据将每天更新,并且需要可供 24/7 查询。我正在考虑eCryptFs,但经过一些测试,似乎一旦加密数据安装在服务用户下,比如'root1',因为我必须将加密数据保持在安装状态以支持查询,所有其他登录用户无需密码即可访问解密后的数据。反正有支持我的方案吗?谢谢。

4

2 回答 2

1

If your users don't have root access, you can simply store the encryption key in a file and deny read access to other users.

If your users do have root access, there is nothing you can do.

于 2012-12-18T03:47:48.090 回答
0

编辑:在大多数情况下,拥有 root 帐户的人可以做其他用户可以做的任何事情。因此,即使您确实获得了文件的每个用户 r/w 权限,但仅针对某个用户(这很有可能),这也毫无意义。(具有 sudo/root 访问权限的人可以运行sudo su USER,其中 USER 是具有 r/w 权限的帐户。我认为解决此问题的更好方法是查看用户无法控制的选项。第一件事来要记住的是编译程序。虽然它们并不是真正用于保存安全信息,但您可以编译一个简单的程序以在一段时间延迟后输出一点信息(以防止它们只是连续运行它然后编译所有他们从中获得的数据。)实际上,修改 Java 程序可能更容易;只需让它将信息存储为一个巨大的字符串或其他东西。:D 这些开源 Java 混淆器将使逆向工程变得更加困难(但肯定不是不可能),逆向工程以及随之而来的内部数据。

一个更安全的选择是编写一个 C 程序,对其进行编译,并让它输出信息(在时间延迟之后),然后 JAVA 文件可以管理这些信息。为了使其更难反编译,您可以在字符串中添加一些加密方法,这样如果反编译器弄乱了它的任何部分,它对他们来说仍然是毫无价值的信息。

最终判决:当它存储在别人的计算机上时,没有什么是真正 100% 安全的,但同样,它在您自己的服务器上也不是 100% 安全的。我建议考虑其他选项,但如果您没有其他选择并且您对信息有法律保护,这可能对您有用。

于 2012-12-18T01:38:18.367 回答