index.rst (7610B)
1 .. _mozilla_projects_nss_fips_mode_-_an_explanation: 2 3 FIPS Mode - an explanation 4 ========================== 5 6 .. container:: 7 8 NSS has a "FIPS Mode" that can be enabled when NSS is compiled in a specific way. (Note: Mozilla 9 does not distribute a "FIPS Mode"-ready NSS with Firefox.) This page attempts to provide an 10 informal explanation of what it is, who would use it, and why. 11 12 .. _what's_a_fips: 13 14 `What's a FIPS? <#what's_a_fips>`__ 15 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 16 17 .. container:: 18 19 The United States government defines many (several hundred) "Federal Information Processing 20 Standard" (FIPS) documents. (FIPS sounds plural, but is singular; one FIPS document is a FIPS, 21 not a FIP.) FIPS documents define rules, regulations, and standards for many aspects of handling 22 of information by computers and by people. They apply to all US government employees and 23 personnel, including soldiers in the armed forces. Generally speaking, any use of a computer by 24 US government personnel must conform to all the relevant FIPS regulations. If you're a 25 US government worker, and you want to use a Mozilla software product such as Firefox, or any 26 product that uses NSS, you will want to use it in a way that is fully conformant with all the 27 relevant FIPS regulations. Some other governments have also adopted many of the FIPS 28 regulations, so their applicability is somewhat wider than just the US government's personnel. 29 30 .. _what_is_fips_mode: 31 32 `What is "FIPS Mode"? <#what_is_fips_mode>`__ 33 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 34 35 .. container:: 36 37 One of the FIPS regulations, FIPS 140, governs the use of encryption and cryptographic services. 38 It requires that ALL cryptography done by US government personnel MUST be done in "devices" that 39 have been independently tested, and certified by NIST, to meet the extensive requirements of that 40 document. These devices may be hardware or software, but either way, they must function and 41 behave as prescribed. So, in order for Mozilla Firefox and Thunderbird to be usable by people 42 who are subject to the FIPS regulations, Mozilla's cryptographic software must be able to operate 43 in a mode that is fully compliant with FIPS 140. To that end, Mozilla products can function in a 44 "FIPS Mode", which is really "FIPS 140 Mode", when paired with a compliant copy of NSS. (Note, 45 the current version of FIPS 140 is revision 2, a.k.a. FIPS 140-2. FIPS 140-3 is being devised by 46 NIST now for adoption in the future.) Users who are subject to the FIPS regulations must ensure 47 that they have Mozilla's FIPS Mode enabled when they use Mozilla software, in order to be fully 48 conformant. Instructions for how to configure Firefox into FIPS mode may be found on 49 `support.mozilla.com <https://support.mozilla.com/en-US/kb/Configuring+Firefox+for+FIPS+140-2>`__. 50 51 .. _is_nss_fips-140_compliant: 52 53 `Is NSS FIPS-140 compliant? <#is_nss_fips-140_compliant>`__ 54 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 56 .. container:: 57 58 Mozilla's NSS cryptographic software has been tested by government-approved independent testing 59 labs and certified by NIST as being FIPS 140 compliant *when operated in FIPS mode* on 4 previous 60 occasions. As of this writing, NSS is now being retested to be recertified for the fifth time. 61 NSS was the first open source cryptographic library to be FIPS certified. 62 63 .. _what_is_fips_mode_all_about: 64 65 `What is FIPS Mode all about? <#what_is_fips_mode_all_about>`__ 66 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67 68 .. container:: 69 70 A FIPS-140 compliant application must do ALL of its cryptography in a FIPS-140 certified 71 "device". Whether it is hardware or software, that device will have all the cryptographic 72 engines in it, and also will stores keys and perhaps certificates inside. The device must have a 73 way for users to authenticate to it (to "login" to it), to prove to it that they are authorized 74 to use the cryptographic engines and keys it contains. It may not do ANY cryptographic 75 operations that involve the use of cryptographic keys, nor allow ANY of the keys or certificates 76 it holds to be seen or used, except when a user has successfully authenticated to it. If users 77 authenticate to it with a password, it must ensure that their passwords are strong passwords. It 78 must implement the US government standard algorithms (also specified in other FIPS documents) 79 such as AES, triple-DES, SHA-1 and SHA-256, that are needed to do whatever job the application 80 wants it to perform. It must generate or derive cryptographic keys and store them internally. 81 Except for "public keys", it must not allow any keys to leave it (to get outside of it) unless 82 they are encrypted ("wrapped") in a special way. This makes it difficult to move keys from one 83 device to another, and consequently, all crypto engines and key storage must be in a single 84 device rather than being split up into several devices. 85 86 .. _how_does_this_affect_firefox_users: 87 88 `How does this affect Firefox users? <#how_does_this_affect_firefox_users>`__ 89 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 91 .. container:: 92 93 These requirements have several implications for users. In FIPS Mode, every user must have a 94 good strong "master password", and must enter it each time they start or restart Firefox before 95 they can visit any web sites that use cryptography (https). Firefox can only use the latest 96 version of SSL, known as "TLS", and not the older SSL 2 or SSL 3.0 protocols, and Firefox can 97 only talk to those servers that use FIPS standard encryption algorithms such as AES or 98 triple-DES. Servers that can only use non-FIPS-approved encryption, such as RC4, cannot be used 99 in FIPS mode. 100 101 .. _how_is_fips_mode_different_from_normal_non-fips_mode: 102 103 `How is FIPS Mode different from normal non-FIPS Mode? <#how_is_fips_mode_different_from_normal_non-fips_mode>`__ 104 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 105 106 .. container:: 107 108 In normal non-FIPS Mode, the "master password" is optional and is allowed to be a weak short 109 password. The user is only required to enter his master password to use his own private keys (if 110 he has any) or to access his stored web-site passwords. The user is not required to enter the 111 master password to visit ordinary https servers, nor to view certificates he has previously 112 stored. In non-FIPS mode, NSS is willing and able to use popular non-FIPS approved cryptographic 113 algorithms, such as RC4 and MD5, to communicate with older https servers. NSS divides its 114 operations up into two "devices" rather than just one. One device does all the operations that 115 may be done without needing to authenticate, and the other device stores the user's certificates 116 and private keys and performs operations that use those private keys. 117 118 .. _how_do_i_put_firefox_into_fips_mode: 119 120 `How do I put Firefox into FIPS Mode? <#how_do_i_put_firefox_into_fips_mode>`__ 121 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 123 .. container:: 124 125 Instructions for how to configure Firefox into FIPS mode may be found on 126 `support.mozilla.com <https://support.mozilla.com/en-US/kb/Configuring+Firefox+for+FIPS+140-2>`__. 127 Some third-parties distribute Firefox ready for FIPS mode, `a partial list can be found at the 128 NSS 129 wiki <https://wiki.mozilla.org/FIPS_Validation#Products_Implementing_FIPS_140-2_Validated_NSS>`__.