As the software engineer on a project, I have been asked to make a Microsoft Access application, with custom interfaces running custom VBA. That part is going just fine. Recently though I was asked to ensure that my Access application complies with FIPS 140-2. The deployment and maintenance of this application will be handled by another partner company, they are the ones asking for FIPS compliancy.

I have read the documentation for FIPS 140-2 and I understand its purpose. Level 1 FIPS compliance is all that is required in our situation. I have written a module in VBA to hash the passwords with SHA-1 used for logging into the application. SHA-1 is on the list of FIPS 140-2 approved algorithms.

My question is, what else does a software developer have to do to ensure FIPS 140-2 compliance, and how much falls in the shoulders of the contractor deploying the application on their systems?

The Access application is split, so the back-end file will live on a network share and regular users will only have access to the front-end file. I suppose both the back-end and front-end files could be encrypted, but that seems to be part of the deployment process.

2 Answers 2


As the software developer, you need to ensure that not only the chosed encryption standard is FIPS compliant, but also the cryptographic module used. AES for example is FIPS 140-2 approved as a method, but the actual implementation of the Rijndael algorithm on Windows Server 2008 [not R2] is not approved (and is therefore not FIPS compliant ... you'd have to use 3DES or something else).

For completeness, the complete list of validated modules are available here: http://csrc.nist.gov/cryptval/140-1/140val-all.htm

To ensure FIPS compliance you'll also want the system that this is running on to enforce FIPS. On a windows system this is under the following registry key:


Change the DWORD value of ENABLED to 1. As a developer you'll want to test in this mode.

Ensuring that the communication channels and that the server/workstation/etc. running the application are FIPS compliant will be part of the deployment process where there is little that you can do should a separate contractor be working the installation.

  • So do I HAVE to bring in a 3rd party tool so that the cryptographic module used is compliant or can I accomplish everything myself from VBA?
    – Justin C
    Mar 14, 2011 at 18:49
  • 1
    You can ensure your app is compliant from within VBA. The MSFT offered SHA and 3DES modules are FIPS compliant. For testing, you'll want to ensure to enable the enforcement of FIPS compliance on your box (the registry key above) [to ensure you don't accidentally use any non FIPS component ... it will throw an exception if you do]. I added the link to the complete list of modules to my answer.
    – iivel
    Mar 14, 2011 at 20:36

A security requirement that demands FIPS140-2 for compliance only applies to security functions. When it comes to home grown software the big security functions are usually encryption of the data that is being controlled or some sort of login feature.

The best way to make compliant software is to avoid providing any security functions. So in my example;

  1. Don't try to roll your own login system in to your Access app.
  2. Don't store any controlled information in the database that requires encryption.

If the nature of your DB requires it handle the controlled information then your best bet is to leverage FIPS validated cryptographic providers in the OS.

You mention rolling your own SHA-1 and ask about handling everything yourself in VBA. This is unadvised because if you do then you need to apply for FIPS validation. Most software developers want avoid this long, expensive, process because it has to be repeated every time you change something or the validation expires. Why would you do all that when the OS has validated libraries you can use?

  • Can't argue, been ~10 years since the post. Ran far far away from anything to do with gov't and FIPS compliance. Thanks for the answer though.
    – Justin C
    Sep 7, 2021 at 1:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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