From the default source Wikipedia; for KDF;
In conjunction with non-secret parameters to derive one or more keys from a common secret value (which is sometimes also referred to as "key diversification"). Such use may prevent an attacker who obtains a derived key from learning useful information about either the input secret value or any of the other derived keys.
Another HKDF use is;
It can be used, for example, to convert shared secrets exchanged via Diffie–Hellman into key material suitable for use in encryption, integrity checking or authentication.
From a single password to produce more secret keys.
- What's the application of it?
Again Wikipedia; quite clear;
- To "extract" (condense/blend) entropy from a larger random source to provide a more uniformly unbiased and higher entropy but smaller output (e.g. an encryption key).
- To "expand" the generated output of an already reasonably random input such as an existing shared key into a larger cryptographically independent output, thereby producing multiple keys deterministically from that initial shared key, so that the same process may produce those same secret keys safely on multiple devices, as long as the same inputs are utilised.
- If the attacker knows the input space of HKDF, and since the procedure of HKDF is public, what's the extra benefit of using it?
The procedure is public but not the Key, HKDF uses an HMAC as HMAC-SHA256.
That is why you are advised to have a good password; again from Wikipedia
Note: HKDF does not amplify entropy but does allow a large source of weaker entropy to be utilised more evenly and effectively.
For example; If the attacker accesses the key of HKDF, he still he needs to know your password. If your password weak, fear from hashcat.
If it has only successfully to break the database there is also salt and paper to protect the attacks apart from the key.