gpt4 book ai didi

docker - 对私有(private)云上的 Docker 部署进行逆向工程

转载 作者:行者123 更新时间:2023-12-02 20:28:06 27 4
gpt4 key购买 nike

我正在开发一个必须部署在客户端私有(private)云上的软件。客户端具有 root 访问权限以及硬件。我不希望客户对我们的软件进行逆向工程。

我们可以在这里控制两件事:

  • 我们可以访问服务器的安全端口,我们可以使用该端口发送 token 来解密代码,并在必要时将其关闭;
  • 我们可以进行手动安装(在安装时输入密码)或在必要时使用防篡 retrofit 置。

  • Docker 部署可以防止我们的客户对我们的代码进行逆向工程吗?我们计划打开一个端口并使用 SSL 来保护传入和传出的数据。

    最佳答案

    如果用户有 root,或者他能够使用他的自定义内核(甚至内核模块),他可以做任何事情——转储内存、停止进程、附加调试器——来开始逆向工程。如果用户可以访问硬件,他也可以获得 root 或自定义内核。保护软件免受用户侵害的唯一方法是使用良好的 DRM,例如借助 TPM(可信平台模块)或 ARM TrustZone。 SecureBoot 不会完全保护您的软件(在 x86 上它通常可能被关闭)。其他变体是使用防篡改硬件(http://www.emc.com/emc-plus/rsa-labs/standards-initiatives/what-is-tamper-resistant-hardware.htm),例如用于在银行(http://en.wikipedia.org/wiki/Hardware_security_module)中存储主加密 key (以处理密码)的硬件,但这种硬件的成本非常高。

    众所周知,Docker 不会保护用户的代码:
    https://stackoverflow.com/a/26108342/196561 -

    The root user on the host machine (where the docker daemon runs) has full access to all the processes running on the host. That means the person who controls the host machine can always get access to the RAM of the application as well as the file system. That makes it impossible to hide a key for decrypting the file system or protecting RAM from debugging.



    任何能够部署 docker 容器的用户(来自 docker 组的用户)都可以完全访问容器 fs,对容器进程具有 root 访问权限,并且可以调试它们并转储它们的内存。
    https://www.andreas-jung.com/contents/on-docker-security-docker-group-considered-harmful

    Only trusted users should be allowed to control your Docker daemon



    http://docs.docker.com/articles/security/#docker-daemon-attack-surface

    Docker allows you to share a directory between the Docker host and a guest container; and it allows you to do so without limiting the access rights of the container.



    所以, Docker 不会对用户 的代码提供额外保护;我们可以将其视为其他打包系统,如 rpm 和 deb。 rpm 和 deb 允许您将代码打包到单个文件中并列出依赖项,而 docker 将您的代码和依赖项打包到单个文件中。

    Our solution is hosted on our client's cloud server, so they do have access to both root and the hardware. However, we have two advantages here: 1) we have access to a secure port, which we can use to send tokens to decrypt the code, and audit suspicious activities; 2) we can do manual installation (key in a token at the time of installation)



    如果代码在您拥有的硬件上运行,您只能保护您拥有的代码(关闭所有 NSA/IntelME/IPMI/UEFI 后门以拥有自己的硬件)。如果用户在他的硬件上运行您的代码,他将拥有所有二进制文件并且能够进行内存转储(在收到您的 token 后)。

    他的硬件上的虚拟化不会给你的代码任何额外的保护。

    “安全端口”是否意味着 SSL/TLS/SSH?只有在网络上发送数据时才能保护数据是安全的;两个端点都将拥有明文、未加密形式的数据。

    离开用户的数据中心后,手动安装将无助于保护代码。

    我认为您可以购买一些常用的软件保护解决方案,例如 flexlm,可能带有运行软件所需的一些硬件 token 。但是任何保护都可能被破解,早期(更便宜的)会更容易破解,而现代(更昂贵)的保护更难破解。

    您也可以在自己的服务器上运行部分软件;这部分不会被破解。

    or use Tamper resistance hardware if we have to.



    如果用户的服务器中没有此类硬件,则不能使用防篡改硬件。而且非常昂贵。

    关于docker - 对私有(private)云上的 Docker 部署进行逆向工程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868196/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com