2027
Analyze the product to ensure that implementations for each primitive do not contain any known
vulnerabilities and are not using any known-weak algorithms, including MD4, MD5, SHA1, DES,
etc.
Effectiveness = Moderate
Dynamic Analysis with Manual Results Interpretation
For hardware, during the implementation (pre-Silicon / post-Silicon) phase, dynamic tests should
be done to ensure that outputs from cryptographic routines are indeed working properly, such as
test vectors provided by NIST [REF-1236].
Effectiveness = Moderate
Dynamic Analysis with Manual Results Interpretation
It needs to be determined if the output of a cryptographic primitive is lacking entropy, which is
one clear sign that something went wrong with the crypto implementation. There exist many
methods of measuring the entropy of a bytestream, from sophisticated ones (like calculating
Shannon's entropy of a sequence of characters) to crude ones (by compressing it and comparing
the size of the original bytestream vs. the compressed - a truly random byte stream should not
be compressible and hence the uncompressed and compressed bytestreams should be nearly
identical in size).
Effectiveness = Moderate
Potential Mitigations
Phase: Requirements
Require compliance with the strongest-available recommendations from trusted parties, and
require that compliance must be kept up-to-date, since recommendations evolve over time. For
example, US government systems require FIPS 140-3 certification, which supersedes FIPS
140-2 [REF-1192] [REF-1226].
Effectiveness = High
Phase: Architecture and Design
Ensure that the architecture/design uses the strongest-available primitives and algorithms from
trusted parties. For example, US government systems require FIPS 140-3 certification, which
supersedes FIPS 140-2 [REF-1192] [REF-1226].
Effectiveness = High
Phase: Architecture and Design
Do not develop custom or private cryptographic algorithms. They will likely be exposed to attacks
that are well-understood by cryptographers. As with all cryptographic mechanisms, the source
code should be available for analysis. If the algorithm may be compromised when attackers find
out how it works, then it is especially weak.
Effectiveness = Discouraged Common Practice
Phase: Architecture and Design
Try not to use cryptographic algorithms in novel ways or with new modes of operation even when
you "know" it is secure. For example, using SHA-2 chaining to create a 1-time pad for encryption
might sound like a good idea, but one should not do this.
Effectiveness = Discouraged Common Practice
Phase: Architecture and Design
Ensure that the design can replace one cryptographic primitive or algorithm with another in the
next generation ("cryptographic agility"). Where possible, use wrappers to make the interfaces
uniform. This will make it easier to upgrade to stronger algorithms. This is especially important for
CWE Version 4.14
CWE-1240: Use of a Cryptographic Primitive with a Risky Implementation
CWE-1240: Use of a Cryptographic Primitive with a Risky Implementation