我想提供一个安装了 Web 应用程序的虚拟机映像。用户应该能够启动虚拟机(无需登录,只需启动),并且 Web 服务器应该自动启动。
重点是我想向所有人隐藏 Web 应用程序的(ruby)源代码,因为没有针对 ruby 的混淆器。
我以为我可以使用文件系统加密来加密包含源代码的目录(甚至是整个分区)。但 Web 服务器用户必须能够在启动后自动读取它。任何人都不得以 Web 服务器用户(或任何其他用户)身份登录,因此其他人无法读取内容。
我现在的问题是:
- 这可能吗?
- 因为我把整个虚拟机都给了别人,所以每个人都可以安装它的虚拟磁盘并读取它们(加密的除外)。现在是否可以找到 Web 服务器用户解密文件所需的密钥并手动解密?或者把这样的虚拟机给别人是否安全?
问题是,解密所需的所有内容都必须包含在虚拟机中的某个位置,否则 Web 服务器无法自动启动。也许我完全错了,你还有另一个提示可以帮助我保护源代码。
答案1
通过谷歌快速搜索,我发现了 ruby 混淆器:
答案2
电影制片厂和音乐制片厂也遇到了同样的问题。我们如何让人们“使用”我们的产品(在他们的情况下,观看和/或收听,在您的情况下,执行),而不会让他们以不想要的方式使用产品。您需要 DRM。
但正如 MPAA 和 RIAA 所认识到的,无论你做什么,密钥总是必须提供给最终用户 - 无论你如何混淆它,无论你对它提出什么要求。即使每次都要求不同的密钥也行不通,或者要求设备与远程服务器“签到”。
相反,我建议你看看自己想要加密的原因。也许你最好采用不同的模式,而不是徒劳地试图捍卫代码。也许是软件即服务,你为他们运行虚拟机?订阅模式,他们为应用程序使用的数据的更新付费?支持模式,你根据合同按需提供支持?