If I have a high entropy key (ECDHE shared secret), what type of hash should I use to format this into an AES-256 key? Is Sha256 or Sha3_256 sufficient to maintain entropy or do I need to use a KDF (Scrypt / Argon2) and exchange the salt during the handshake??
1 Answer
I seem to recall that shared secret keys should be hashed before using as encryption keys (some brief discussion here).
If your key is already high-entropy, then hashing with SHA256 is fine. If you plan to generate several keys (ie, encryption and HMAC) from the original shared secret, then HKDF is a good option. This is a key-based KDF.
Scrypt and Argon2 are password-based KDFs and are not appropriate - they're designed for low-entropy input (such as passwords).
-
$\begingroup$ I need to derive a key for encryption and one for a hmac, so I'll look into the HKDF. Thanks $\endgroup$– SamG101Commented Oct 17, 2019 at 12:35