The NIST Cryptographic Algorithm Validation Program (CAVP) provides validation testing of Approved (i.e., FIPS-approved and NIST-recommended) cryptographic algorithms and their individual components. Cryptographic algorithm validation is a prerequisite of cryptographic module validation. The list of FIPS-approved algorithms can be found in SP 800-140C and SP 800-140D.
Vendors may use any of the NVLAP-accredited Cryptographic and Security Testing (CST) Laboratories to test algorithm implementations.
An algorithm implementation successfully tested by a lab and validated by NIST is added to an appropriate validation list, which identifies the vendor, implementation, operational environment, validation date and algorithm details.
The CAVP offers two Automated Cryptographic Validation Test Systems (ACVTS) for interested users to test cryptographic algorithm implementations. A Demo ACVTS server is available at no cost to interested parties. See Accessing the ACVTS for details. The Production ACVTS server is only available to NVLAP-accredited testing laboratories, and is the only way to create algorithm validation certificates listed on the Algorithm Validation Page. The CAVP, through ACVTS, will generate test vectors to match the capabilities of a given implementation under test. The CAVP is not responsible for running those test vectors through the implementation.
Through ACVTS, the CAVP can focus on generating interesting test cases to ensure correctness and robustness of cryptographic algorithm implementations. Testing is performed by first providing ACVTS with a set of capabilities for a particular cryptographic algorithm that the implementation supports. For example, the message lengths supported for a hash function. ACVTS will generate test cases that match these capabilities and provide the inputs to the implementation under test. The implementation runs the inputs through the corresponding cryptographic function and provides the outputs back to ACVTS. ACVTS then validates the outputs are correct before returning a verdict. Once this is completed for all algorithms in the test session, the implementation can submit to appear on the Algorithm Validation Page if the testing was performed through a lab on Production ACVTS.
Due to this structure, ACVTS testing is entirely black-box. The implementation is never provided to NIST or the CAVP in order to receive a validation certificate.