I know from the bottom of my heart how bad the idea of custom-crypto is. I absolutely concur with the recommendation that it should only be done by professionals who specialize in implementing crypto safely.

However, exactly because it's a Bad Idea ™ it's really hard to find good information on this topic. Say one of the aforementioned professionals is looking at a crypto implementation and they want to judge how safe it is. Some things that come to mind:

  • Constant-time implementation (to protect against timing/side-channel attacks)
  • Randomness
    • Source of randomness (true vs. pseudo RNGs)
    • Bits of entropy
  • Zeroing intermediate buffers
  • Appropriate test coverage with test vectors (e.g., NIST, Wycheproof)

What are other areas like this that need to be probed? Is there any documentation/checklist/book that can shed further light on the topic -- something like 1 but more comprehensive?

  • 1
    $\begingroup$ It depends on the type of cryptography what kind of attacks can be mounted. Without it all cryptographic attacks ever would fit the bill, because a non-cryptographer (and, quite often, even cryptographers) are bound to repeat past mistakes. $\endgroup$
    – Maarten Bodewes
    Mar 12, 2021 at 23:08
  • 1
    $\begingroup$ Another one that comes to mind: who wrote it? While not a determining factor, if the software is written by someone known to write good cryptographic code, that's certainly a plus. If it's someone new (like myself), it's reason to be more cautious. $\endgroup$ Mar 13, 2021 at 8:07

1 Answer 1


One widely accepted standard for information protection is the ISO Common Criteria framework. This set of slides gives some sense of what a Common Criteria evaluation will ask in its analysis.

The US FIPS-140-3 standard also carries a lot of weight, it specifies certain NIST special publications that give criteria beyond ISO.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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