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