加密和安全的 docker 容器

新手上路,请多包涵

我们都知道您不能开源和自由分发软件的情况——我正处于其中一种情况。

我有一个应用程序,它包含许多二进制文件(从 C 源代码编译)和将它们全部包装到系统中的 Python 代码。这个应用程序曾经作为云解决方案工作,因此用户可以通过网络访问应用程序功能,但没有机会接触存储二进制文件和代码的实际服务器。

现在我们要交付我们系统的“本地”版本。该应用程序将在我们的用户实际拥有的 PC 上运行。我们知道一切都可能被破坏,但至少希望尽可能保护应用程序免受可能的复制和逆向工程。

我知道 Docker 是一个很棒的部署工具,所以我想知道:是否可以创建加密的 Docker 容器,让任何人都无法看到存储在容器文件系统中的任何数据?这个问题有已知的解决方案吗?

另外,也许有不基于 Docker 的众所周知的解决方案?

原文由 Aleksei Petrenko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 821
2 个回答

你问的是所谓的 obfuscation 。它与 Docker 无关,是一个非常特定于语言的问题;对于数据,您始终可以随心所欲地进行任何处理,但是尽管您可以希望阻止攻击者,但它永远不会安全。即使是最先进的加密方案也无济于事,因为程序(您提供的)必须包含密钥。

C 通常很难进行逆向工程,对于 Python,您可以尝试 pyobfuscate类似 的 .

对于数据,我发现 了这个问题(关键字: 加密文件游戏)。

原文由 remram 发布,翻译遵循 CC BY-SA 3.0 许可协议

主机上的 root 用户( docker 守护进程运行的地方)对主机上运行的所有进程具有完全访问权限。这意味着控制主机的人始终可以访问应用程序的 RAM 以及文件系统。这使得隐藏用于解密文件系统或保护 RAM 免遭调试的密钥变得不可能。

在标准的 Linux 机器上使用混淆,你可以让读取文件系统和 RAM 变得更难,但你不能让它变得不可能或容器无法运行。

如果您可以控制运行操作系统的硬件,那么您可能需要查看 可信平台模块,它会在系统启动时立即启动系统验证。理论上,您可以在 root 用户访问系统之前执行一些操作来隐藏密钥和对文件系统进行强加密。即便如此,如果可以物理访问机器,坚定的攻击者总能获得解密数据。

原文由 Andy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题