Instructions for using SQL Server 2012 in the FIPS 140-2-compliant mode
- The terms "FIPS 140-2 compliant," "FIPS 140-2 compliance," and "FIPS 140-2-compliant mode" are defined here for use and clarity. These terms are not recognized or defined government terms. The United States and Canadian governments recognize the validation of cryptographic modules against standards like FIPS 140-2 and not the use of cryptographic modules in a specified or conformant manner. In this article, we use "FIPS 140-2-compliant," "FIPS 140-2 compliance," and "FIPS 140-2-compliant mode" in the sense that SQL Server 2012 uses only FIPS 140-2-validated instances of algorithms and hashing functions in all instances in which encrypted or hashed data is imported to or exported from SQL Server 2012. Additionally, this means that SQL Server 2012 will manage keys in a secure manner, as is required of FIPS 140-2-validated cryptographic modules. The key-management process also includes both key generation and key storage.
- We use "certified" here to mean that the instance of the algorithm is FIPS 140-2 validated or that the operating system contains FIPS 140-2-validated instances of algorithms.
What is FIPS?Federal Information Processing Standard (FIPS) is a standard developed by the following two government bodies:
- The National Institute of Standards and Technology (NIST) in the United States
- The Communications Security Establishment (CSE) in Canada
What is FIPS 140-2?FIPS 140-2 is a statement that is titled "Security Requirements for Cryptographic Modules." It specifies which encryption algorithms and which hashing algorithms can be used and how encryption keys are to be generated and managed. Some hardware, software, and processes can be FIPS 140-2 certified, and some hardware, software, and processes can be FIPS 140-2 compliant.
What is the difference between being FIPS 140-2 compliant and being FIPS 140-2 certified?SQL Server 2012 can be configured and run in a manner that is compliant with FIPS 140-2. To configure SQL Server 2012 in this manner, SQL Server 2012 must run on an operating system that is FIPS 140-2 certified or on an operating system that provides a cryptographic module that is certified. The difference between compliance and certification is not subtle. Algorithms can be certified. It is insufficient to use an algorithm from the approved lists in FIPS 140-2. Instead, you have to use an instance of such an algorithm that is certified. Certification requires testing and verification by a government-approved evaluation lab. Windows Server 2003, Windows XP, and Windows Server 2008 contain the allowed algorithms, and an instance of each of these operating systems is evaluation lab tested and government certified.
Which application products can be FIPS 140-2 compliant?All applications that perform encryption or hashing and that run on a certified version of Windows can be compliant by using only the certified instances of the approved algorithms and by complying with the key-generation and key-management requirements either by using the Windows function for key generation and key management or by complying with key-generation and key-management requirements within the application. Be aware that areas in a FIPS-compliant application may exist where noncompliant algorithms or processes are enabled. For example, some internal processes that stay within the system and some external data that is to be additionally encrypted by a certified algorithm instance are allowed.
Is SQL Server 2012 always FIPS 140-2 compliant?No. SQL Server 2012 can be FIPS 140-2 compliant because it can be configured and run in such a way that it uses only the FIPS 140-2-certified algorithm instances that are called by using CryptoAPI for encryption or by hashing in every instance where FIPS 140-2 compliance is required.
How can SQL Server 2012 be configured to be FIPS 140-2 compliant?
- Operating system requirement: You must install SQL Server 2012 on a server that is based on one of the following operating systems:
- Windows Server 2003
- Windows XP
- Windows Server 2008
- Windows system administration requirement: The FIPS mode must be set before SQL Server 2012 is started. SQL Server reads the setting at startup. To set the FIPS mode, follow these steps:
- Log on to Windows as a Windows system administrator.
- Click Start.
- Click Control Panel.
- Click Administrative Tools.
- Click Local Security Policy. The Local Security Settings window appears.
- In the navigation pane, click Local Policies, and then click Security Options.
- In the right-side pane, double-click System cryptography: Use FIPS compliant algorithms for encryption, hashing, and signing.
- In the dialog box that appears, click Enabled, and then click Apply.
- Click OK.
- Close the Local Security Settings window.
- SQL Server administrator requirement
- When the SQL Server service detects that the FIPS mode is enabled at startup, SQL Server logs the following message in the SQL Server error log:Service Broker transport is running in FIPS compliance mode.
Additionally, you may find the following message logged in the Windows event log:You can verify that the server is running in the FIPS mode by looking for these messages.
Database Mirroring transport is running in FIPS compliance mode.
- For dialog security (between services), the encryption uses the FIPS-certified instance of AES if the FIPS mode is enabled. If the FIPS mode is disabled, the encryption uses RC4.
- When you configure a service broker endpoint in the FIPS mode, the administrator must specify "AES" for the service broker. If the endpoint is configured to RC4, SQL Server will generate an error. Therefore, the transport layer will not start.
- When the SQL Server service detects that the FIPS mode is enabled at startup, SQL Server logs the following message in the SQL Server error log:
How is SQL Server 2012 operated in FIPS 140-2-compliant mode?
- With the FIPS mode in Windows turned on, in all areas where the user has no choice about whether to encrypt/hash and how it will be done, SQL Server 2012 will execute in compliance with FIPS 140-2. (SQL Server 2012 will use CryptoAPI in Windows and will use only the certified instances of the algorithms.)
- With the FIPS mode in Windows turned on, in all areas where the user has a choice of whether to use encryption, SQL Server 2012 will either enable only FIPS 140-2 compliant encryption or will not enable any encryption.
- Important information for software developers In all areas where the developer or the user writes their own code for encryption or hashing, they must be instructed to use only CryptoAPI (and therefore only the certified instances) and to specify only the algorithms that are allowed by FIPS 140-2. Specifically, they must specify only Triple DES (3DES) or AES for encryption and only SHA-1 for hashing.
What is the effect of running SQL Server 2012 in FIPS 140-2-compliant mode?
- The use of stronger encryption may have a small effect on performance for those processes for which less strong encryption is allowed when the process is not operating as FIPS 140-2 compliant.
- The selection of encryption for SSIS (UseEncryption=True) will generate an error message that states that the available encryption is incompatible with FIPS compliance and is not allowed. In other words, no encryption of the message process is performed.
- The use of encryption together with legacy DTS is not compliant with FIPS 140-2. Be aware that for DTS, the FIPS mode in Windows is not checked. Therefore, it is the responsibility of the user to select no encryption to remain compliant.
- Because most SQL Server 2012 encryption and hashing processes are already FIPS 140-2 compliant, executing at full compliance (that is, with the FIPS mode in Windows turned on) will have little or no effect on the use or performance of the product.
Where can I learn more about FIPS 140-2?For more information about the FIPS 140-2 standard and how to download it, go to the following NIST website:
Article ID: 2733626 - Last Review: 11/21/2012 19:23:00 - Revision: 2.1
- kbtshoot kbexpertiseinter kbsurveynew KB2733626