验证下载文件的真实性

Verify authenticity of the downloaded file

在服务器到服务器的情况下,验证下载文件真实性的最佳方法是什么?

可能的选择:生成校验和然后进行比较。但是,如果假设网络受到威胁,服务器如何安全地交换哈希以进行匹配?

还有其他方法可以验证真伪吗?我读过签名,但并不真正了解它们是如何工作的。有什么需要考虑的吗?

我正在努力确保没有人篡改过文件。非常感谢任何建议或提示!

编辑:我确实使用 HTTPS 进行服务器之间的通信,但也想依赖其他方法。

I do use HTTPS for the traffic between servers, but would like to rely on alternative methods too.

HTTPS 确实保护通信,但不保护消息的真实性。所以你正在做正确的事情寻找方法来验证消息。

我建议您使用发件人的私钥签署文件,并在目的地使用 public 密钥验证签名。上线前在服务器上手动部署public密钥,使其在传输中无法被欺骗。

因此在实践中,一种简单可行的解决方案是使用 ECDSA 或 RSA (PSS) 签名算法来签署文件的安全哈希(例如 SHA-256)。

如果可以保护两端的密钥,另一种方法可能是使用 HMAC。