我什至不确定这是否可行,但是在不受控制的客户端上保护端到端运行时数据是否可行?
具体地说,Java中是否有任何功能可以接收加密的数据,对其进行处理并将其发送回加密的状态,而不会以纯文本的形式将数据暴露给对客户端具有完全访问权限的好奇的第三方?
另外,我知道代码混淆只是一个反编译人员的烦恼,因此,在这种情况下,我假设攻击方具有完整的源代码/操作知识。
无论哪种方式,我都对答案感兴趣。如果没有现有功能,那么考虑Java的体系结构是否可行?如果Java无法做到这一点,那么还有其他语言/平台可以吗?我担心这可能需要特殊的硬件。
最佳答案
为了有机会做您正在谈论的事情,您需要特殊的硬件。您不能在不安全层的“顶部”拥有安全层。例如,如果攻击者对硬件具有完全控制权,则他始终可以破坏该主机上运行的OS。
特殊的硬件称为“受信任的平台模块”或TPM。这支持远程证明,这将使您可以验证客户端是否未被篡改。 TPM的某些部分可在许多计算机上使用(例如,我的Dell笔记本电脑)。实际上,我认为美国联邦政府购买的所有计算机都必须具有TPM。但是,大多数消费者没有启用TPM,并且隐私权倡导者对TPM充满敌意。我也不确定有多少台具有TPM的计算机包含远程证明功能。
无论如何,最重要的是您不能将某人的秘密以及该秘密的密钥透露给他人,并希望它仍然是一个秘密。您必须从上到下保持对整个堆栈的控制。即使您不合法拥有所涉及的硬件,Trusted Treacherous Computing也可以使您做到这一点。