我想知道我是否可以使用作为HMAC密钥过两个客户端之间建立一个共享密钥。

我看到有一个问题,当它被用作CBC-MAC,但我还没有发现任何证据表明它是HMACs不好的做法。

谢谢, 弗拉基米尔

有帮助吗?

解决方案

我相信它是目前在类别“似乎大概OK,但为什么要冒险呢?”

最佳做法是有每一侧生成从共享秘密密钥两个新的键:

encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")

其他提示

作为CAF躲避到。一个正确的方式做,这是哈希一些额外的数据共享的密钥。

例如:

enc-key = HASH(shared-key || 1)
hmac-key = HASH(share-key || 2)

这具有不需要传送2个额外的随机数,以及易于实现的优点。

我不会用在不同的功能相同的密钥(ENC + HMAC)。这是自找麻烦和一个坏主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top