【发布时间】:2019-01-18 20:20:30
【问题描述】:
两年多以来,我一直在为一家公司单独从事一个项目。该项目是一个非常大的项目,它使用 rxtx 与硬件设备进行通信。我为 UI 使用了 Java 8 和 JAVAFX。现在几乎完成了,我开始研究如何交付公司将分发给客户的最终用户应用程序。
问题在于,与我合作的公司希望在软件在最终客户手中时无法访问代码,因为 Java 代码包含一些极其敏感的信息,如果最终客户发生,这些信息可能会给公司带来非常糟糕的后果认识他们。客户实际上可以执行他们无权执行的操作。
所以在搜索(很多)并相对于我的案例进行思考之后,我明白给一个 JAR 混淆不是解决方案。然后我尝试生成一个 JAR,然后将其转换为 EXE,但我成功的只是将 JAR 包装到 EXE 中,这不会阻止提取 JAR,然后轻松查看所有代码。最后,我发现我应该使用像 GCJ 编译器这样的 AoT 编译来从我的 Java 代码生成本机二进制 exe,但是在这里我被卡住了,因为在观看视频和阅读文章等之后,我没有找到一种清晰的方法来生成本机二进制可执行程序。
我现在很困惑,因为我不知道我是否走在正确的道路和正确的方向上,或者我是否完全错了,还有另一种保护代码的方法(至少不受非专业黑客的影响,我理解它不可能让它 100% 安全,但我只是在寻找一种合理且好的方法)。我应该如何管理我工作的最后一步?
【问题讨论】:
-
“问题是我正在与之合作的公司希望在软件在最终客户手中时无法访问代码,因为 java 代码包含一些极其敏感的信息,这些信息可能非常如果最终客户碰巧认识他们,这会给公司带来不好的后果。客户实际上可以执行他们无权执行的操作。” 这听起来像是一个很大的安全问题,不管你有没有能力都应该解决隐藏“源代码”。无论信息的存储方式如何,在最终产品中包含敏感信息都是一个糟糕的主意。
-
我同意@fabian。您目前依赖于“通过默默无闻的安全性”,并且您正在询问如何改善默默无闻的部分。您不应该在编译的源代码或二进制文件中隐藏任何您不愿意以纯文本形式保留的内容。如果这个秘密足够有利可图,普通黑客很快就会成为专业黑客。听起来您需要一种硬件方法来验证请求来自您的软件,而不是其他任何地方。从这个角度想一想,看看你能不能想出什么办法。
-
你试过用 C/C++ 重写它吗?
标签: java security javafx executable confidentiality