10
$\begingroup$

We are in the processing to understand if our software applications is FIPS 140-2 compliant or not. Currently in our application, we are using our own implementation of AES algorithm. AES is a FIPS 140-2 compliant algorithm.

The question would be whether this would render our app not FIPS 140-2 compliant since we are not using FIPS validated library (Advanced Encryption Standard Algorithm Validation List) even though we are using a FIPS compliant cryptographical algorithm.

Again, we are not try to certify our application for FIPS 140-2, rather we just want to make sure that we are FIPS 140-2 compliant.

$\endgroup$
4
  • 3
    $\begingroup$ “Our app is FIPS 140-2-compliant” means the same thing as “our application is certified for FIPS 140-2”. What matters for compliance isn't just getting it right but also getting the rubber stamp. $\endgroup$ Commented Aug 21, 2013 at 15:50
  • 1
    $\begingroup$ Maybe you would also like to check out another Q&A related to FIPS 140-2 compliance too: "What needs to be encrypted for FIPS 140-2 compliance?" $\endgroup$
    – e-sushi
    Commented Aug 21, 2013 at 16:23
  • 1
    $\begingroup$ There is a potential gotcha in the terminology: If you are a software project coordinator and hire someone to deliver a FIPS 140-2 compliant/conformant module, then the cost of validation and certification is not included, but it would be if you ordered a FIPS 140-2 certified module. The same distinction might apply to cryptographic libraries, depending on if the cryptographic boundary is expected to end up inside the library or inside your software that consumes the library. $\endgroup$ Commented Aug 22, 2013 at 13:56
  • $\begingroup$ Just to be equivocal, so that means that a software AES that 'does' AES correctly is 140-2 "compliant/conformant" even if not certified? The boundaries are set by where there are keys &/or plaintext, richtig? $\endgroup$
    – outer
    Commented May 6, 2019 at 1:21

2 Answers 2

14
$\begingroup$

If you are using an AES library that has not undergone the FIPS validation process, then you are not FIPS compliant (or, at least, your use of AES is not).

FIPS compliant means more than "we use algorithms that FIPS likes", it means "having passed the FIPS certification process"; that is how NIST defines it.

Sorry, but NIST is quite strict about this; if you haven't undergone the full testing, then NIST is concerned that you haven't implemented AES correctly; there may be subtle bugs that affect the security. And, since NIST makes up the rules for what's "FIPS compliant", well, there's no point in arguing about its likelihood.

In addition, FIPS talks more than what algorithms you use; it also talks about health tests and key zeroization and other such things; the FIPS certification process checks all that as well.

If you need to be FIPS compliant, then your choices are:

  • Use a FIPS-certified library to perform all the FIPS-approved crypto operations

  • Go through the FIPS-certification process for your application (or, at least, the crypto pieces of your application).

The FIPS certification process is surprisingly complicated; I'd advise you to use a FIPS-certified library.

$\endgroup$
8
  • $\begingroup$ There was some talk in the OpenSSL mailing lists about their FIPS certification, if I'm not mistaken. Maybe there is something about side channel attacks in FIPS as well? I only know Common Criteria very well, FIPS not so much in detail. $\endgroup$
    – Maarten Bodewes
    Commented Aug 21, 2013 at 16:30
  • $\begingroup$ To clarify what poncho said in "Use a FIPS-certified library to perform all the FIPS-approved crypto operations" - to be certified for FIPS 140-2 compliance, you still need to submit your application to a testing lab so they can verify that you did apply the library modules correctly. Using certified modules will help in the certification process, since the lab need not analyze the crypto modules themselves - just the implementation. $\endgroup$
    – Ninveh
    Commented Aug 21, 2013 at 16:38
  • 1
    $\begingroup$ @Ninveh: Actually, I don't believe that is currently true; I believe that you are allowed to draw the "FIPS boundary" to include only the library modules; if your application isn't included within the FIPS boundary, it needn't undergo certification. $\endgroup$
    – poncho
    Commented Aug 21, 2013 at 16:45
  • $\begingroup$ @owlstead: I don't see anything in FIPS 140-2 that talks about side channel attacks. I'm also not aware of any Implementation Guidances (notes that NIST issues which effectively add requirements to the FIPS process, or things more detailed than they want for the main FIPS document) or NIST Special Publications that talk about it either, although I may have missed something. I had thought FIPS 140-3 (which is still a draft) talked about it at higher security levels; however I can't find that text. $\endgroup$
    – poncho
    Commented Aug 21, 2013 at 16:56
  • 1
    $\begingroup$ Actually I don't think NIST ever defines "compliance" the way you indicate. Rather, they talk of compliance/conformance as what is being tested as part of the validation process, in order to achieve certification. $\endgroup$ Commented Aug 22, 2013 at 12:09
0
$\begingroup$

The CMVP's twin sister program is the CAVP (Cryptographic Algorithm Validation Program).

In order to have your module certified your FIPS Approved algorithms must be tested and validated by a lab and then certified by the CAVP, giving your company a certificate (example: AES #1880).

This is the route most companies go even if they are using another library (95% companies do use another library such as OpenSSL, RSA BSAFE, or Intel Crypto library, etc.).

However, there is another option in which you can claim another validated module's algorithm certificates if that module is validated, and then your module certificate will have a caveat (publicly posted on the NIST website) like this:

This module contains the embedded module [module name] validated to FIPS 140-2 under Cert. #xxxx operating in FIPS mode.

This gets into a bound vs. embedded module and it all depends on the architecture of your module, is it a simple wrapper or does it also perform an Approved algorithm?

Claiming someone else's validated algorithm certificate # is dicey at best and perhaps even impossible if it is not implemented within a validated CMVP module. The best bet is to contact a lab.

$\endgroup$

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.