我想知道我是否也可以使用在两个客户端之间建立的共享密钥作为 HMAC 密钥。
我发现当它用作 CBC-MAC 时存在问题,但我没有发现任何证据表明这对 HMAC 来说是不好的做法。
谢谢,弗拉基米尔
我想知道我是否也可以使用在两个客户端之间建立的共享密钥作为 HMAC 密钥。
我发现当它用作 CBC-MAC 时存在问题,但我没有发现任何证据表明这对 HMAC 来说是不好的做法。
谢谢,弗拉基米尔
我相信它目前属于“看起来可能还可以,但为什么要冒险?”。
最佳实践是让每一方从共享密钥生成两个新密钥:
encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")
正如咖啡馆所逃避的那样。执行此操作的正确方法之一是使用一些额外数据对共享密钥进行哈希处理。
例如:
enc-key = HASH(shared-key || 1)
hmac-key = HASH(share-key || 2)
这样做的好处是不需要传输 2 个额外的 nonce,并且易于实现。
我不会在不同的功能(enc + hmac)中使用相同的键。这是自找麻烦和坏主意。