tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>`__.