加密和安全的docker容器

Ale*_*nko 40 python security encryption docker

我们都知道当你无法开源并自由分发软件的情况时 - 我处于其中一种情况.

我有一个应用程序,包含许多二进制文件(从C源代码编译)和python代码,它将所有二进制文件包装到一个系统中.此应用程序曾用作云解决方案,因此用户可以通过网络访问应用程序功能,但无法触摸存储二进制文件和代码的实际服务器.

现在我们想要提供我们系统的"本地"版本.该应用程序将在我们的用户将拥有的PC上运行.我们知道一切都可能被打破,但至少要保护应用程序尽可能保护可能的复制和逆向工程.

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

另外,也许有一些众所周知的解决方案不是基于docker的?

And*_*ndy 27

root主机(其中用户docker守护进程运行)具有完全访问主机上运行的所有进程.这意味着控制主机的人总是可以访问应用程序的RAM以及文件系统.这使得无法隐藏用于解密文件系统或保护RAM免受调试的密钥.

在标准Linux机器上使用模糊处理,可以使文件系统和RAM更难以读取,但是无法使其无法运行或容器无法运行.

如果您可以控制运行操作系统的硬件,那么您可能需要查看可信平台模块,该模块会在系统引导后立即启动系统验证.理论上,您可以在root用户访问系统之前执行操作以隐藏密钥并对文件系统进行强加密.即使这样,给定对机器的物理访问,确定的攻击者总是可以获得解密的数据.


rem*_*ram 8

您所询问的是混淆.它与Docker无关,是一个特定于语言的问题; 对于数据,你总是可以做任何你想要的修改,但是虽然你可以希望阻止攻击者,但它永远不会安全.即使是最先进的加密方案也无济于事,因为程序(您提供的)必须包含密钥.

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

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

  • 嗨!谢谢你的回答.混淆显然是我们考虑的事情,但它解决了逆向工程(而不是完全)的一个问题.我真正想要的是一个沙箱容器,看起来像是外面的黑盒子.您可以与其输入和输出进行交互,但无法看到内部的内容.我想知道是否有可能在容器内部使用某种加密文件系统.谢谢你们这些链接我会检查出来的! (3认同)

tec*_*lin 7

如果您想要一个完全安全的解决方案,那么您正在寻找机密性的"圣杯":同形加密.简而言之,您希望加密您的应用程序和数据,将它们发送到PC,让这台PC在没有其所有者,操作系统或任何其他人能够挖掘数据的情况下运行它们.这样做没有大量的性能损失是一个积极的研究项目.至少有一个项目管理过这个,但它仍然有局限性:

  1. 这是仅限Windows的
  2. CPU可以访问密钥(即,您必须信任英特尔)
  3. 它针对云场景进行了优化.如果要将其安装到多台PC上,您需要以安全的方式提供密钥(即只需去那里并自行输入)到您要安装应用程序的PC之一,这台PC应该能够将密钥安全地传播到其他PC.

Andy关于使用TPM的建议与第2点和第3点有类似的含义.


Win*_*ked 5

听起来Docker不是正确的工具,因为它从未打算用作成熟的沙箱(至少基于我所读的内容)。您为什么不使用更加成熟的VirtualBox方法?至少您可以将虚拟机锁定在登录后(可以锁定他人计算机上的物理安装),并在隔离的加密文件系统和整个九码范围内运行该虚拟机。

您可以轻巧而开放,也可以胖而封闭。我不知道有“轻量级和封闭”选项。

  • 虚拟机在这方面无济于事。从映像挂载文件系统和找到容器的根目录一样容易...而且仍然不能选择加密。 (5认同)

oso*_*tza 5

我也有完全一样的问题。目前,我能够发现的是波纹管。

A.Asylo(https://asylo.dev

  1. Asylo要求使用C ++编写程序/算法。
  2. Asylo库已集成在docker中,似乎可以基于Asylo创建自定义dcker映像。
  3. Asylo依赖于许多不太流行的技术,例如“ proto缓冲区”和“ bazel”等。对我来说,学习曲线似乎很陡峭,即创建docker镜像/(程序)的人将需要大量时间来了解如何去做吧。
  4. 庇护是免费的
  5. Asylo具有很多优点和缺点,因此是一个崭新的亮点。
  6. Asylo由Google生产,但根据其页面上的免责声明,它不是官方支持的Google产品。
  7. Asylo承诺即使具有root特权的用户也可以保存受信任环境中的数据。但是,缺少文档,目前尚不清楚如何实现。

B.斯康(https://sconedocs.github.io

  1. 它与INTEL SGX技术绑定,但也有仿真模式(用于开发)。
  2. 它不是免费的。它只有一小部分功能是不付费的。
  3. 似乎支持许多安全功能。
  4. 易于使用。
  5. 他们似乎拥有更多的文档和说明,说明如何使用其技术构建自己的Docker映像。