In one of their documents, NIST recommends using an approved one-way function, followed by a list of such functions, such as HMAC, KMAC, etc.. However, the wikipedia page says:

Unsolved problem in computer science:

Do one-way functions exist?

How does something get approved if it may not even exist? Who approves it, and what is the approval procedure?


They are talking about NIST approved one-way-functions, which they list thereafter (HMAC, KMAC etc.). They approve those because they are thought to be one-way functions by the cryptographic community (which - for NIST - includes the NSA).

The cryptographic community believes that they are one-way because they conform to an algorithm design that is thought to provide a one-way function. Of course, there also need to be no known attacks that compromise the function (much).

Note that usually the function can be proven to be one way if the underlying primitive - usually a block cipher, hash or sponge- can be proven to be secure. However, it can be shown that it is impossible to prove that.

  • $\begingroup$ ... in the end NIST approves what they think should need to be approved. They are expected to approve an algorithm that is the winner of a cryptographic competition that they themselves presided of course. And yes, sometimes they approve bad things like the dual-EC DRBG crap that the NSA injected. $\endgroup$ – Maarten Bodewes Jul 12 '18 at 23:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.