执行encryption的文件,但不要让任何人阅读它们

我想提供一个已安装的Web应用程序的虚拟机映像。 用户应该能够启动虚拟机(不要login,只需启动),一个networking服务器应该自动启动。

关键是我想隐藏所有人的Web应用程序的(ruby)源代码,因为没有ruby的混淆器。

我以为我可以使用文件系统encryption来encryption与源代码(甚至整个分区)的目录。 但是web服务器用户必须能够在启动后自动读取它。 没有人被允许作为networking服务器用户(或任何其他用户)login,所以没有其他人可以阅读的内容。

我现在的问题是:

  1. 这可能吗?
  2. 因为我放弃了整个VM,每个人都可以挂载它的虚拟光盘并读取它们(除了encryption的光盘)。 现在是否可以findWeb服务器用户需要解密文件并手动解密的密钥? 还是可以放弃这样一个虚拟主机?

问题是所有需要解密的东西都必须包含在虚拟机的某处,否则networking服务器无法自动启动。 也许我是完全错误的,你有另一个提示保护源代码。

快速谷歌search说,有ruby混淆器 – 第一个我碰到:

http://www.rubyencoder.com/index.html

这也是电影制片厂和音乐制作公司遇到的同样的问题。 我们如何让人们不用他们不需要的产品就能“使用”我们的产品(在他们的情况下,观察和/或倾听,执行)。 你需要DRM。

但是,正如MPAA和RIAA所了解的那样,无论你做什么,总是要把关键点交给最终用户 – 无论你如何混淆它,不pipe你对它有什么要求。 即使每次使用不同的密钥都不起作用,或者需要设备与远程服务器“签入”。

相反,我build议你看看你想要encryption的原因。 也许你会更好地服务于不同的模式,而不是无用的捍卫代码。 软件即服务,也许,你在哪里运行虚拟机? 他们支付更新应用程序使用的数据的订阅模型? 在合同基础上提供所需支持的支持模式?