如何将 HMAC 与 AES 结合用于 (python) 客户端-服务器信使?

How to combine HMAC with AES for (python) client-server messenger?

所以我正在尝试编写一个小的加密命令行 IM 信使,它接受两个密钥作为参数。我不确定这两个键是如何一起工作的,或者哪个键是用来做什么的。我正在尝试同时使用 HMAC 和 AES,但不确定如何使用。 请注意,这仅用于教育目的,我不打算尝试在其他任何地方使用它。我很难理解,任何建议或解释将不胜感激。我已经有一个可用的 IM 信使 运行,我只需要弄清楚 HMAC/AES/keys.

谢谢大家, ~麦迪

你应该做的是使用 Encrypt-Then-MAC 范式。

这意味着,您首先使用第一个密钥使用 AES 加密消息。 之后,您使用第二个密钥作为 HMAC-SHA256 函数的身份验证密钥来验证 ciphertext(加密函数的输出)。然后将密文和 HMAC 输出(称为 tag)连接起来并通过网络传输。

收到这样的消息后,您从密文中重新计算标签并将其与传输的标签进行比较。如果有效,您可以解密密文。

最后说明:您实际上不需要使用分隔键作为输入参数。如果只提供一个主密钥,而不是使用像 HKDF 这样的 密钥派生函数 来派生分离加密密钥和身份验证密钥。