Usando uma chave para criptografia e hmac
-
21-09-2019 - |
Pergunta
Gostaria de saber se também posso usar uma chave secreta compartilhada estabelecida entre dois clientes como a chave HMAC.
Vi que há um problema quando é usado como um CBC-MAC, mas não encontrei nenhuma evidência de que seja uma prática ruim para o HMACS.
Obrigado, Vladimir
Solução
Eu acredito que está atualmente na categoria de "parece provavelmente ok, mas por que correr o risco?".
A melhor prática é fazer com que cada lado gere duas novas chaves a partir da chave secreta compartilhada:
encryption-key := HMAC(shared-key, "Encryption Nonce")
hmac-key := HMAC(shared-key, "Authenticity Nonce")
Outras dicas
Como a CAF iludiu. Uma das maneiras corretas de fazer isso é hash a tecla de secreção compartilhada com alguns dados extras.
Por exemplo:
enc-key = HASH(shared-key || 1)
hmac-key = HASH(share-key || 2)
Isso tem o benefício de não precisar transferir 2 inconces extras, além de ser fácil de implementar.
Eu não usaria a mesma chave em diferentes funções (ENC + HMAC). Isso está pedindo problemas e uma má ideia.