我有一个服务器引擎,它通常在服务器中工作(想象地)。但偶尔它会在客户端上执行,或者偶尔在另一台服务器上执行,并且希望使用该服务器来执行一些额外/额外的处理。
之间的链接将受到 ssl/tls 和证书的保护。所以通信将是安全的,但我不确定调用引擎是我的代码。
你将如何对那个引擎进行认证。爱丽丝和鲍勃在这个话题上会说什么?
我有一个服务器引擎,它通常在服务器中工作(想象地)。但偶尔它会在客户端上执行,或者偶尔在另一台服务器上执行,并且希望使用该服务器来执行一些额外/额外的处理。
之间的链接将受到 ssl/tls 和证书的保护。所以通信将是安全的,但我不确定调用引擎是我的代码。
你将如何对那个引擎进行认证。爱丽丝和鲍勃在这个话题上会说什么?
你不会找到 100% 的方法来做到这一点。
自从:
基本上,既然卡尔可以打电话给爱丽丝并假装是鲍勃,通过拥有鲍勃的声音,并且知道鲍勃所知道的一切(反汇编代码),那么爱丽丝无法验证它真的是鲍勃,或者只是一个非常好的冒名顶替者.
如果您将软件设计为只能在特定类型的硬件上运行,使用TPM或类似技术,那么您可能有机会,但仅通过软件,您无法创建 100% 的解决方案。
即使使用启用了 TPM 的解决方案,您仍然可能冒着冒名顶替者绕过它的风险。
这完全取决于您要防止什么样的攻击。
这个问题没有通用的解决方案。您无法确定远程机器是否会被攻击者收买,因此您无法绝对确定与您通信的远程代码就是您最初打算与您通信的代码。
人们使用 TPM 和类似机制来尝试对远程硬件的可信度进行远程证明,但是尝试纯粹在软件中执行此类操作是没有希望的,因为您无法知道远程端正在运行什么。在一般情况下,只要足够长的时间,攻击者也可以借用 TPM。