The Cryptographic Algorithm Validation Program (CAVP) encompasses validation testing for FIPS approved and NIST recommended cryptographic algorithms and components of algorithms. Cryptographic algorithm validation is a prerequisite to the Cryptographic Module Validation Program (CMVP). The CAVP was established by NIST and the Communications Security Establishment Canada (CSEC) in July 1995. All of the tests under the CAVP are handled by third-party laboratories that are accredited as Cryptographic and Security Testing (CST) Laboratories by the National Voluntary Laboratory Accreditation Program (NVLAP). Vendors interested in validation testing of their algorithm implementation may select any of the accredited laboratories.
Currently, there exist three FIPS-approved symmetric key algorithms for encryption: Advanced Encryption Standard (AES), Triple-DES, and Skipjack. AES is the FIPS-Approved symmetric encryption algorithm of choice.
The following files provide electronic versions of the vectors for the Known Answer Test (KAT), and sample values for the Monte Carlo(MCT) test, and the Multiblock Message (MMT) test. These values are properly formatted in response (.rsp) files. Vendor response files should match this format exactly.
In addition, a file with intermediate results (.txt) for the Monte Carlo test is supplied. The Monte Carlo tests consist of 400 cases. For each case, initial values are provided, and 10,000 iterations of the desired mode of operation are run. The output of each iteration is used as input to the next iteration. To aid debugging, we provide the output for each of the first five (5) iterations of the 10,000 as well as the final (10,000th) output. The intermediate values are indented by one tab and clearly identified by use of the word "Intermediate".
These vectors can be used to informally verify the correctness of an AES and/or TDES algorithm implementation. The validation system documents (see above) describe the details of the tests.
NOTE, use of these vectors does not take the place of validation obtained through the Cryptographic Algorithm Validation Program (CAVP).
Currently, there exist multiple modes of operation that are described in the NIST Special Publication 800-38 series. Most of these modes of operation are message authentication codes and therefore have been listed under the MAC section. XTS-AES is more like the original modes of operation and therefore is described below.
On June 10, 2009, NIST announced the adoption of FIPS 186-3, Digital Signature Standard (DSS), which is a revision of FIPS 186-2. The FIPS specifies three techniques for the generation and verification of digital signatures:
FIPS 186-3 allows the use of any random number generator (RNG) or random bit generator (RBG) that is approved for use in FIPS 140-validated modules, subject to the transition schedule specified in SP 800-131A. Specific references to SP 800-90 should not be considered as a requirement to use a generator specified in SP 800-90 until such time as the use of the other generators is no longer allowed.
FIPS 186-3 incorporates the following changes:
General:
• Specifies the use of all hash functions specified provided in
FIPS 180-3, rather than just SHA-1,
• Provides requirements for obtaining assurances of domain parameter
validity (DSA and ECDSA only), public key validity, and private key
possession,
• References SP 800-57 for guidance on key management, including
the key sizes and security strengths to be used,
• Provides guidance on domain parameter and key pair management,
• Provides more guidance on the use of RNGs to generate key pairs,
• Provides revised primality test guidance.
DSA:
• Specifies larger key sizes,
• Replaces the domain parameter generation routine with new methods,
• Includes explicit methods for the validation of domain parameters,
RSA:
• Approves the use of both ANSI X9.31 and PKCS #1, and provides
guidance for their use,
• Provides multiple explicit methods for the generation of key
pairs,
• Limits the key sizes and provides criteria for the generation
of key pairs to be used for Federal government use.
ECDSA:
• Although the Recommended Elliptic Curves continue to be included
in FIPS 186-3 (as they were in FIPS 186-2), FIPS 186-3 allows the generation
of alternative curves, using methods specified in ANS X9.62.
Copies of the ANSI X9.31 and ANSI X9.62 standards are available from X9, a standards committee accredited by the American National Standards Institute (ANSI). NIST does NOT have copies of these standards available for distribution.
All three digital signature techniques in FIPS 186-3 make use of the Secure Hash Algorithms specified in FIPS 180-3 dated October 2008, Secure Hash Standard (SHS) accessible via the hashing section of this webpage.
FIPS 186-2 and FIPS 186-3 are currently the only FIPS standards that contain Approved methods for digital signatures.
The algorithm validation testing requirements for FIPS 186-3 DSA are specified in:
Digital
Signature Algorithm Validation System (DSA2VS)
Additional testing note: For the Domain Parameter Generation
and Verification, and the Signature Generation and Verification functions,
the underlying SHA algorithm must be validated as part of the DSA validation.
In addition, Signature Generation and Key Pair Generation require the
RNG/DRBG algorithm to be validated as well.
The algorithm validation testing requirements for FIPS 186-3 ECDSA are specified in:
Elliptic
Curve Digital Signature Algorithm Validation System (ECDSA2VS)
Additional testing note: As part of the ECDSA validation,
additional algoritms implemented by the ECDSA algorithm must be validated.
For the Key Pair Generation function, this includes the underlying RNG/
DRBG algorithm. For the Signature Generation function, the underlying
SHA and the RNG/DRBG algorithms must be validated. For the Signature
Verification function, the underlying SHA algorithm must be validated.
The algorithm validation testing requirements for FIPS 186-3 RSA are specified in:
186-3 RSA
Validation System (186-3RSAVS)
Additional testing note: The underlying SHA algorithm
must be validated as part of the 186-3 RSA validation for all functions
- Key Generation, Signature Generation, and Signature Verification..
In addition, Key Generation requires the RNG/DRBG algorithm to be validated
as well.
On February 15, 2000, NIST announced the approval of FIPS 186-2 with Change Notice 1 dated October 5, 2001, Digital Signature Standard (DSS), which supersedes FIPS 186-1. This standard specifies three FIPS-approved algorithms for generating and verifying digital signatures:
New items in the DSS include:
Copies of the ANSI X9.31 and ANSI X9.62 standards are available from X9, a standards committee accredited by the American National Standards Institute (ANSI). NIST does NOT have copies of these standards available for distribution.
All three digital signature techniques in FIPS 186-2 (with Change Notice 1 dated October 5, 2001) make use of the Secure Hash Algorithms specified in FIPS 180-3 dated October 2008, Secure Hash Standard (SHS) accessible via the hashing section of this webpage.
DSA, RSA, and ECDSA are currently the only FIPS-approved methods for digital signatures.
The testing requirements are specified in:
Digital Signature
Algorithm Validation System (DSAVS)
Additional testing note: For the Domain Parameter Generation
and Verification, and the Signature Generation and Verification functions,
the underlying SHA-1 algorithm must be validated as part of the DSA
validation. In a future release, the other SHA algorithms will be supported.
RSA Validation
System (RSAVS)
Beginning September 28, 2006: Validation testing for
RSA algorithm implementations of the RSASSA-PKCS1-v1_5, as specified
in Public Key Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography
Standard-2002, and the RSA X9.31 algorithms include additional
testing to assure the encoded message EM and the intermediate integer
IR are in the correct formats. This testing verifies that an implementation
under test (IUT) does not contain a potential implementation design
that could introduce a vulnerability in these algorithms. This testing
has been added to the Signature Verification validation test described
in the RSAVS document. No modification to this document was necessary
to add this feature. Below in the Test Vectors section, there are test
vectors available to informally test if this vulnerability exists in
an implementation.
For all validated cryptographic modules that incorporate RSA, the CMVP and CAVP strongly suggest re-testing of the RSA algorithmic implementations to determine if the vulnerability is present.
If new CAVP testing is performed and the vulnerability is determined not to be present, the CMTL can submit the new test results to the CAVP along with a letter indicating that the implementation passed the RSA testing in CAVS5.2 and the vulnerability is not present. The letter should request that a new algorithm certificate be printed to replace the already issued certificate referencing the new version of CAVS. Please indicate the already issued certificate number. This letter should be included in the zip file along with the other files. Note that the certificate number will not change. Only the reference to the version of the CAVS tool and the signatory date will be changed. (Note the validation request will be submitted using already established procedures.)
If CAVP testing is performed and the vulnerability is discovered, the following revalidation process shall be followed:
Additional testing note: For the RSA functions, all underlying SHA algorithm(s) supported by the RSA implementation must be validated as part of the RSA validation.
Eliptic
Curve Digial Signature Algorithm (ECDSA) Validation System (ECDSAVS)
Additional testing note: For the Signature Generation
and Verification functions, the underlying SHA-1 algorithm must be validated
as part of the ECDSA validation. In a future release, the other SHA
algorithms will be supported.
The following files provide an electronic version of the test vectors that can be used to informally verify the correctness of the FIPS 186-2 and FIPS 186-3 algorithm implementation using the associated validation system document (DSAVS, ECDSAVS, or RSAVS, DSA2VS, ECDSA2VS, or 186-3RSAVS). These values are properly formatted in response (.rsp) files. Vendor response files should match this format exactly.
If applicable, files with intermediate results (.txt) are supplied for the tests to aid in debugging. Please refer to the readme.txt file located in the zip files below for detailed explanations.
Use of these vectors does not take the place of validation obtained through the Cryptographic Algorithm Validation Program (CAVP).
The Secure Hash Algorithms (SHA-1, SHA-224, SHA-256, SHA-384, and SHA-512) are specified in FIPS 180-3 dated October 2008, Secure Hash Standard (SHS).
The following files provide an electronic version of the test vectors that can be used to informally verify the correctness of the SHA algorithm implementation using the SHAVS. These values are properly formatted in response (.rsp) files. Vendor response files should match this format exactly.
If applicable, files with intermediate results (.txt) are supplied for the tests to aid in debugging. Please refer to the readme.txt file located in the zip files below for detailed explanations.
Use of these vectors does not take the place of validation obtained through the Cryptographic Algorithm Validation Program (CAVP).
The algorithms for generating approved random numbers are referenced in FIPS 140-2 Annex C.
The testing requirements for these algorithms can be found in the document titled The Random Number Generator Validation System (RNGVS).
SP 800-90 Recommendation for Random Number Generation Using Deterministic Random Bit Generators (Revised_March2007) specifies mechanisms for the generation of random bits using deterministic methods. There are four mechanisms discussed in this Special Publication. These mechanisms are based on either hash functions (Hash_DRBG, HMAC_DRBG), block cipher algorithms using Counter mode (CTR_DRBG ) or number theoretic (Dual EC_DRBG) problems.
DRBG Test Vectors - These files provide an electronic version of the test vectors that can be used to informally verify the correctness of a DRBG algorithm implementation using the DRBGVS. However, use of these vectors does not take the place of validation obtained through the Cryptographic Algorithm Validation Program (CAVP).
DRBG Test Vectors DRBG Test Vectors In this zip file, there are 4 text files with NIST SP 800-90 DRBG testvectors: HASH_DRBG.txt, HMAC_DRGB.txt, CTR_DRBG.txt, and Dual_EC_DRBG.txt.
SP 800-56A Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography (Revised March 2007) specifies key establishment schemes based on standards developed by the Accredited Standards Committee (ASC) X9, Inc.: ANS X9.42 (Agreement of Symmetric Keys Using Discrete Logarithm Cryptography) and ANS X9.63 (Key Agreement and Key Transport Using Elliptic Curve Cryptography).
Testing Requirements:
CMT labs can test for conformance to the Key Agreement Schemes (KAS) and Key Confirmation algorithms specified in Special Publication 800-56A. The testing requirements for this algorithm can be found in the document titled The KAS Validation System (KASVS). Additional testing note: The KAS validation process requires additional prerequisite testing of the underlying DSA and/or ECDSA algorithm based on which type of cryptography is supported and which underlying cryptographic functions are supported, the supported SHA algorithm(s), supported MAC algorithm(s) (CCM, CMAC, and/or HMAC), and the supported RNG and/or DRBG algorithm(s). (See CAVP FAQ GEN.5 for more detailed information on prerequisites.)KAS Test Vectors - These files provide an electronic version of the test vectors that can be used to informally verify the correctness of a key agreement scheme and key confirmation algorithm implementation using the KASVS. However, use of these vectors does not take the place of validation obtained through the Cryptographic Algorithm Validation Program (CAVP).
KAS Test Vectors See the KASVS document for an explanation of the files.
The CMAC algorithm is specified in Special Publication 800-38B dated May 2005, Recommendation for Block Cipher Modes of Operation: The CMAC Mode for Authentication. CMAC can be considered a mode of operation of the block cipher because it is based on an approved symmetric key block cipher, such as the Advanced Encryption Standard (AES) algorithm currently specified in Federal Information Processing Standard (FIPS) Pub. 197. CMAC is also an approved mode of the Triple Data Encryption Algorithm (TDEA).
NOTE: Replacement examples have been provided to correct the examples located in the back of SP800-38B. (Updated SP800-38B Examples).
The Counter with Cipher Block Chaining-Message Authentication Code (CCM) is specified in Special Publication 800-38C dated May, 2004, Counter with Cipher Block Chaining-Message Authentication Code (CCM). CCM is based on an approved symmetric key block cipher algorithm whose block size is 128 bits, such as the Advanced Encryption Standard (AES) algorithm currently specified in Federal Information Processing Standard (FIPS) Pub. 197 [2]; thus, CCM cannot be used with the Triple Data Encryption Algorithm [3], whose block size is 64 bits. Currently the only NIST-Approved 128 bit symmetric key algorithm is AES.
The Galois/Counter Mode (GCM) and GMAC is specified in Special Publication 800-38D dated November, 2007, Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC. GCM is based on an approved symmetric key block cipher algorithm whose block size is 128 bits, such as the Advanced Encryption Standard (AES) algorithm currently specified in Federal Information Processing Standard (FIPS) Pub. 197 [2]; thus, GCM cannot be used with the Triple Data Encryption Algorithm [3], whose block size is 64 bits. Currently the only NIST-Approved 128 bit symmetric key algorithm is AES.
The Keyed-Hash Message Authentication Code (HMAC) is specified in FIPS 198 dated March 6, 2002, Keyed-Hash Message Authentication Code (HMAC). This algorithm utilizes the Secure Hash Algorithms as an underlying primitive.
Beginning in 2011, the CAVP offers the validation of algorithm components. There exists an increased need for the testing of individual components of approved algorithms. Some examples of situations where algorithm component testing will be required includes PIV Smartcard applications, where there are processing limitations, and situations where parts of special publications can be used with components outside the special publication. The components for which we have validation testing are listed below.
The testing of only the SP800-56A Section 5.7.1.2 Elliptic Curve Cryptography Cofactor Diffie-Hellman (ECC CDH) Primitive.
FIPS 46-3, Data Encryption Standard (DES), was withdrawn May 19, 2005 because the cryptograhic algorithm no longer provided the security that is needed to protect Federal government information. DES is no longer an Approved algorithm. The DES Algorithm Validation Webpage is still accessible via the Validations List webpage, for historical purposes only.
The automated conformance tests for FIPS 113 and 171 are no longer operational. Currently, if a FIPS 140-1 or FIPS 140-2 cryptographic module implements either of these two standards, the CMT testing laboratories perform some testing that these FIPS requirements are implemented correctly in the cryptographic module.