Security 如何证明服务器正在运行特定代码

Security 如何证明服务器正在运行特定代码,security,hash,deployment,devops,Security,Hash,Deployment,Devops,如果有人能澄清,我将不胜感激 如何证明某段代码正在服务器中运行 可以创建并发布部署在服务器上的代码的散列,但另一方面,我似乎找不到任何机制来证明它 我相信像Heroku或者亚马逊这样的PaaS至少部分地解决了这个问题。部署应用程序时,Heroku返回引用已部署代码的git提交散列。当然,运行的代码可能不是公开的代码 我们是否有一种机制来返回部署的散列、某种带有代码+元数据的摘要,而不一定是提交散列 谢谢 这是不可能的。下面是一个场景: 服务器正在运行X 客户端要求服务器提供代码证明 服务器提供运

如果有人能澄清,我将不胜感激

如何证明某段代码正在服务器中运行

可以创建并发布部署在服务器上的代码的散列,但另一方面,我似乎找不到任何机制来证明它

我相信像Heroku或者亚马逊这样的PaaS至少部分地解决了这个问题。部署应用程序时,Heroku返回引用已部署代码的git提交散列。当然,运行的代码可能不是公开的代码

我们是否有一种机制来返回部署的散列、某种带有代码+元数据的摘要,而不一定是提交散列


谢谢

这是不可能的。下面是一个场景:

  • 服务器正在运行X
  • 客户端要求服务器提供代码证明
  • 服务器提供运行的代码是X的证明。客户端接受该证明
  • 恶意代理使用代码Y重新部署服务器
  • 会话继续,攻击者窃取数据
  • 会议结束
  • 攻击者重新部署代码为X的服务器
  • 请注意,服务器端的TCP会话通常是nginx或类似的,它还处理TLS终止,因此重新部署甚至不会中断客户端的TCP或TLS会话

    此外,服务器有一个运行时,无论是C标准库、node.js还是JVM,您如何知道它没有被破坏

    此外,即使服务器代码是正确的,服务器也会使用操作系统资源,如网络、磁盘等。您如何知道这些资源没有被破坏


    服务器很难知道它被破坏了,客户端根本不可能知道。

    如果我理解正确,这实际上是不可能的。服务器可以运行任何代码,并且可以报告任何完整性信息(例如哈希)。正如您所说,运行的代码可能不是有效地公开的代码。时期PaaS可能可以做到这一点,但它基本上解决了问题:你现在必须信任PaaS,而不是应用程序开发人员。顺便说一句,有一种机制叫做。用它来实现一个随机的web应用程序是不可行的,但有趣的是,这是不可能的。