Blame SOURCES/crypto-policies.7.txt

99b432
////
99b432
Copyright (C) 2019 Red Hat, Inc.
99b432
99b432
This program is free software; you can redistribute it and/or modify
99b432
it under the terms of the GNU Lesser General Public License as published by
99b432
the Free Software Foundation; either version 2.1 of the License, or
99b432
(at your option) any later version.
99b432
99b432
This program is distributed in the hope that it will be useful,
99b432
but WITHOUT ANY WARRANTY; without even the implied warranty of
99b432
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
99b432
GNU General Public License for more details.
99b432
////
99b432
99b432
99b432
crypto-policies(7)
99b432
==================
99b432
:doctype: manpage
99b432
:man source: crypto-policies
99b432
99b432
99b432
NAME
99b432
----
99b432
crypto-policies - system-wide crypto policies overview
99b432
99b432
99b432
DESCRIPTION
99b432
-----------
99b432
The security of cryptographic components of the operating system
99b432
does not remain constant over time. Algorithms, such as
99b432
cryptographic hashing and encryption, typically have a lifetime,
99b432
after which they are considered either too risky to use or plain insecure.
99b432
That means, we need to phase out such algorithms from the default
99b432
settings or completely disable them if they could cause an irreparable problem.
99b432
99b432
While in the past the algorithms were not disabled in a consistent way
99b432
and different applications applied different policies, the system-wide
99b432
crypto-policies followed by the crypto core components allow consistently
99b432
deprecating and disabling algorithms system-wide.
99b432
99b432
The individual policy levels (*DEFAULT*, *LEGACY*, *FUTURE*, and *FIPS*)
99b432
are included in the *crypto-policies(7)* package. In the future, there will
99b432
be also a mechanism for easy creation and deployment of policies defined
99b432
by the system administrator or a third party vendor.
99b432
99b432
For rationale, see *RFC 7457* for a list of attacks taking advantage of
99b432
legacy crypto algorithms.
99b432
99b432
COVERED APPLICATIONS
99b432
--------------------
99b432
99b432
Crypto-policies apply to the configuration of the core cryptographic subsystems,
99b432
covering *TLS*, *IKE*, *IPSec*, *DNSSec*, and *Kerberos* protocols; i.e., the
99b432
supported secure communications protocols on the base operating system.
99b432
99b432
Once an application runs in the operating system, it follows the default
99b432
or selected policy and refuses to fall back to algorithms and protocols not
99b432
within the policy, unless the user has explicitly requested the application
99b432
to do so. That is, the policy applies to the default behavior of applications
99b432
when running with the system-provided configuration but the user can override
99b432
it on an application-specific basis.
99b432
99b432
The policies currently provide settings for these applications and libraries:
99b432
99b432
* *BIND* DNS name server daemon
99b432
* *GnuTLS* TLS library
99b432
* *OpenJDK* runtime environment
99b432
* *Kerberos 5* library
99b432
* *Libreswan* IPsec and IKE protocol implementation
99b432
* *NSS* TLS library
99b432
* *OpenSSH* SSH2 protocol implementation
99b432
* *OpenSSL* TLS library
99b432
99b432
Applications using the above libraries and tools are covered by the
99b432
cryptographic policies unless they are explicitly configured not to be so.
99b432
99b432
PROVIDED POLICY LEVELS
99b432
----------------------
99b432
99b432
*LEGACY*::
99b432
  This policy ensures maximum compatibility with legacy systems; it is
99b432
  less secure and it includes support for *TLS 1.0*, *TLS 1.1*, and *SSH2*
99b432
  protocols or later. The algorithms *DSA*, *3DES*, and *RC4* are allowed,
99b432
  while *RSA* and *Diffie-Hellman* parameters are accepted if larger than 1023 bits.
99b432
  The level provides at least 64-bit security.
99b432
99b432
  * MACs: all *HMAC* with *SHA-1* or better + all modern MACs (*Poly1305*
99b432
    etc.)
99b432
  * Curves: all prime >= 255 bits (including Bernstein curves)
99b432
  * Signature algorithms: with *SHA1* hash or better (*DSA* allowed)
99b432
  * *TLS* Ciphers: all available >= 112-bit key, >= 128-bit block (including
99b432
    *RC4* and *3DES*)
99b432
  * Non-TLS Ciphers: same as *TLS* ciphers with added *Camellia*
99b432
  * Key exchange: *ECDHE*, *RSA*, *DHE*
99b432
  * *DH* params size: >= 1023
99b432
  * *RSA* keys size: >= 1023
99b432
  * *DSA* params size: >= 1023
99b432
  * *TLS* protocols: *TLS* >= 1.0, *DTLS* >= 1.0
99b432
99b432
*DEFAULT*::
99b432
  The *DEFAULT* policy is a reasonable default policy for today's standards,
99b432
  compatible with *PCI-DSS* requirements. It allows the *TLS 1.2* and
99b432
  *TLS 1.3* protocols, as well as *IKEv2* and *SSH2*. The *RSA* and
99b432
  *Diffie-Hellman* parameters are accepted if larger than 2047 bits.
99b432
  The level provides at least 112-bit security with the exception of *SHA-1*
99b432
  signatures needed for *DNSSec* and other still prevalent legacy use of
99b432
  *SHA-1* signatures.
99b432
99b432
  * MACs: all *HMAC* with *SHA-1* or better + all modern MACs (*Poly1305*
99b432
    etc.)
99b432
  * Curves: all prime >= 255 bits (including Bernstein curves)
99b432
  * Signature algorithms: with *SHA-1* hash or better (no *DSA*)
99b432
  * *TLS* Ciphers: >= 128-bit key, >= 128-bit block (*AES*, *ChaCha20*,
99b432
    including *AES-CBC*)
99b432
  * non-TLS Ciphers: as *TLS* Ciphers with added *Camellia*
99b432
  * key exchange: *ECDHE*, *RSA*, *DHE* (no *DHE-DSS*)
99b432
  * *DH* params size: >= 2048
99b432
  * *RSA* keys size: >= 2048
99b432
  * *TLS* protocols: *TLS* >= 1.2, *DTLS* >= 1.2
99b432
99b432
*FUTURE*::
99b432
  A conservative security level that is believed to withstand any near-term
99b432
  future attacks. This level does not allow the use of *SHA-1* in signature
99b432
  algorithms. The level also provides some (not complete) preparation for
99b432
  post-quantum encryption support in form of 256-bit symmetric encryption
99b432
  requirement. The *RSA* and *Diffie-Hellman* parameters are accepted if
99b432
  larger than 3071 bits. The level provides at least 128-bit security.
99b432
99b432
  * MACs: all *HMAC* with *SHA-256* or better + all modern MACs (*Poly1305*
99b432
    etc.)
99b432
  * Curves: all prime >= 255 bits (including Bernstein curves)
99b432
  * Signature algorithms: with *SHA-256* hash or better (no *DSA*)
99b432
  * *TLS* Ciphers: >= 256-bit key, >= 128-bit block, only Authenticated
99b432
    Encryption (AE) ciphers
99b432
  * non-TLS Ciphers: same as *TLS* ciphers with added non AE ciphers and
99b432
    *Camellia*
99b432
  * key exchange: *ECDHE*, *DHE* (no *DHE-DSS*, no *RSA*)
99b432
  * *DH* params size: >= 3072
99b432
  * *RSA* keys size: >= 3072
99b432
  * *TLS* protocols: *TLS* >= 1.2, *DTLS* >= 1.2
99b432
99b432
99b432
*FIPS*::
99b432
  A level that conforms to the *FIPS 140-2* requirements. This policy is used
99b432
  internally by the *fips-mode-setup(8)* tool which can switch the system
99b432
  into the *FIPS 140-2* compliance mode.
99b432
  The level provides at least 112-bit security.
99b432
99b432
  * MACs: all *HMAC* with *SHA1* or better
99b432
  * Curves: all prime >= 256 bits
99b432
  * Signature algorithms: with *SHA-256* hash or better (no *DSA*)
99b432
  * *TLS* Ciphers: >= 128-bit key, >= 128-bit block (*AES*,
99b432
    including *AES-CBC*)
99b432
  * non-TLS Ciphers: same as *TLS* Ciphers
99b432
  * key exchange: *ECDHE*, *DHE* (no *DHE-DSS*, no *RSA*)
99b432
  * *DH* params size: >= 2048
99b432
  * *RSA* params size: >= 2048
99b432
  * *TLS* protocols: *TLS* >= 1.2, *DTLS* >= 1.2
99b432
99b432
*EMPTY*::
99b432
  All cryptographic algorithms are disabled (used for debugging only, do not
99b432
  use).
99b432
99b432
COMMANDS
99b432
--------
99b432
99b432
*update-crypto-policies(8)*::
99b432
  This command manages the policies available to the various cryptographic
99b432
  back ends and allows the system administrator to change the active
99b432
  cryptographic policy level.
99b432
99b432
*fips-mode-setup(8)*::
99b432
  This command allows the system administrator to enable, or disable the
99b432
  system FIPS mode and also apply the *FIPS* cryptographic policy level
99b432
  which limits the allowed algorithms and protocols to these allowed by
99b432
  the FIPS 140-2 requirements.
99b432
99b432
99b432
NOTES
99b432
-----
99b432
99b432
*Exceptions:*
99b432
99b432
* *Go-language* applications do not yet follow the system-wide policy.
99b432
* *Libssh* applications do not yet follow the system-wide policy.
99b432
* *GnuPG-2* application does not follow the system-wide policy.
99b432
99b432
In general only the data-in-transit is currently covered by the system-wide
99b432
policy.
99b432
99b432
If the system administrator changes the system-wide policy level with
99b432
the *update-crypto-policies(8)* command it is advisable to restart the
99b432
system as the individual back-end libraries read the configuration files
99b432
usually during their initialization. The changes in the policy level
99b432
thus take place in most cases only when the applications using the back-end
99b432
libraries are restarted.
99b432
99b432
*Removed cipher suites and protocols*
99b432
99b432
The following cipher suites and protocols are completely removed from the
99b432
core cryptographic libraries listed above:
99b432
99b432
* *DES*
99b432
* All export grade cipher suites
99b432
* *MD5* in signatures
99b432
* *SSLv2*
99b432
* *SSLv3*
99b432
* All *ECC* curves smaller than 224 bits
99b432
* All binary field *ECC* curves
99b432
99b432
*Cipher suites and protocols disabled in all policy levels*
99b432
99b432
The following ciphersuites and protocols are available but disabled in all
99b432
crypto policy levels. They can be enabled only by explicit configuration
99b432
of individual applications:
99b432
99b432
* *DH* with parameters < 1024 bits
99b432
* *RSA* with key size < 1024 bits
99b432
* *Camellia*
99b432
* *ARIA*
99b432
* *SEED*
99b432
* *IDEA*
99b432
* Integrity only ciphersuites
99b432
* *TLS* *CBC mode* ciphersuites using *SHA-384* HMAC
99b432
* *AES-CCM8*
99b432
* all *ECC* curves incompatible with *TLS 1.3*, including secp256k1
99b432
* *IKEv1*
99b432
99b432
99b432
FILES
99b432
-----
99b432
/etc/crypto-policies/back-ends::
99b432
	The individual cryptographical back-end configuration files.
99b432
	Usually linked to the configuration shipped in the crypto-policies
99b432
	package unless a configuration from *local.d* is added.
99b432
99b432
/etc/crypto-policies/config::
99b432
	The active crypto-policies level set on the system.
99b432
99b432
/etc/crypto-policies/local.d::
99b432
	Additional configuration shipped by other packages or created by
99b432
	the system administrator. The contents of the *<back-end>-file.config*
99b432
	is appended to the configuration from the policy back end as
99b432
	shipped in the crypto-policies package.
99b432
99b432
99b432
SEE ALSO
99b432
--------
99b432
update-crypto-policies(8), fips-mode-setup(8)
99b432
99b432
99b432
AUTHOR
99b432
------
99b432
Written by Tomáš Mráz.