From Fedora Project Wiki
(Updated)
(renamed)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
<!-- The actual name of your proposed change page should look something like: Changes/Your_Change_Proposal_Name.  This keeps all change proposals in the same namespace -->
= Strong crypto settings =
= Strong crypto settings: phase 1 =


== Summary ==
== Summary ==
Line 13: Line 13:
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
<!-- Include you email address that you can be reached should people want to contact you about helping with your change, status is requested, or technical issues need to be resolved. If the change proposal is owned by a SIG, please also add a primary contact person. -->
* Email: <nmav@redhat.com>
* Email: <nmav@redhat.com>
* Release notes owner: <!--- To be assigned by docs team [[User:FASAccountName| Release notes owner name]] <email address> -->
* Release notes ticket: [https://pagure.io/fedora-docs/release-notes/issue/84 #84]
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
<!--- UNCOMMENT only for Changes with assigned Shepherd (by FESCo)
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
* FESCo shepherd: [[User:FASAccountName| Shehperd name]] <email address>
Line 33: Line 33:
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
CLOSED as NEXTRELEASE -> change is completed and verified and will be delivered in next release under development
-->
-->
* Tracker bug: <will be assigned by the Wrangler>
* Tracker bug: [https://bugzilla.redhat.com/show_bug.cgi?id=1534532 #1534532]


== Detailed Description ==
== Detailed Description ==
Line 41: Line 41:
While in the past we did not disable algorithms in a consistent way (different applications utilized different policies), today we have a system-wide policy followed by a large part of Fedora components. That allows us to move consistently and deprecate algorithms system-wide. For rationale see RFC 7457 for a more complete list of attacks taking advantage of legacy crypto algorithms.  
While in the past we did not disable algorithms in a consistent way (different applications utilized different policies), today we have a system-wide policy followed by a large part of Fedora components. That allows us to move consistently and deprecate algorithms system-wide. For rationale see RFC 7457 for a more complete list of attacks taking advantage of legacy crypto algorithms.  


The propose changes for default policy are:
The changes for default policy are:
* Require RSA of 2048 bits and more in the default settings
* Disable DSA by default
 
Originally the following changes were also proposed but postponed
  * Keep only TLS 1.2 (and TLS 1.3 when available) as enabled protocols and move the TLS 1.x, x<=1 to legacy level.
  * Keep only TLS 1.2 (and TLS 1.3 when available) as enabled protocols and move the TLS 1.x, x<=1 to legacy level.
  * Require finite field parameters (RSA, Diffie-Hellman) of 2048 and more in the default settings
  * Require finite field parameters (RSA, Diffie-Hellman) of 2048 and more in the default settings


That is a policy of:
That is a policy of:
Line 52: Line 57:
   Ciphers: all available > 112-bit key, >= 128-bit block (no rc4, but with 3DES)
   Ciphers: all available > 112-bit key, >= 128-bit block (no rc4, but with 3DES)
   key exchange: ECDHE, RSA, DHE
   key exchange: ECDHE, RSA, DHE
   DH params size: >=1024
   DH params size: >=1023
   RSA params size: >=1024
   RSA params size: >=1023
   TLS protocols: TLS >= 1.0
   TLS protocols: TLS >= 1.0


Line 59: Line 64:
   MACs: All HMAC with SHA1 or better + all modern MACs (poly1305 etc)
   MACs: All HMAC with SHA1 or better + all modern MACs (poly1305 etc)
   Curves: all prime >= 255 bits (including bernstein curves)
   Curves: all prime >= 255 bits (including bernstein curves)
   Signature algorithms: with SHA-1 hash or better
   Signature algorithms: with SHA-1 hash or better (not DSA)
   Ciphers: >= 128-bit key, >= 128-bit block (aes, camellia, chacha20, including aes-cbc)
   Ciphers: >= 128-bit key, >= 128-bit block (aes, camellia, chacha20, including aes-cbc)
   key exchange: ECDHE, RSA, DHE
   key exchange: ECDHE, RSA, DHE
   DH params size: >= 2048
   DH params size: >= 1023
   RSA params size: >= 2048
   RSA params size: >= 2048
   TLS protocols: TLS >= 1.2
   TLS protocols: TLS >= 1.0


  FUTURE
  FUTURE
   MACs: All HMAC with SHA256 or better + all modern MACs (poly1305 etc)
   MACs: All HMAC with SHA256 or better + all modern MACs (poly1305 etc)
   Curves: all prime >= 384 bits (including bernstein curves)
   Curves: all prime >= 384 bits (including bernstein curves)
   Signature algorithms: SHA-384 hash or better
   Signature algorithms: SHA-384 hash or better (not DSA)
   Ciphers: >= 256-bit key, >= 128-bit block, only Authenticated Encryption (AE) ciphers
   Ciphers: >= 256-bit key, >= 128-bit block, only Authenticated Encryption (AE) ciphers
   key exchange: ECDHE, DHE
   key exchange: ECDHE, DHE
Line 89: Line 94:
  * [https://bugzilla.redhat.com/show_bug.cgi?id=1487607 OpenSSL is updated to allow setting policies for TLS versions]
  * [https://bugzilla.redhat.com/show_bug.cgi?id=1487607 OpenSSL is updated to allow setting policies for TLS versions]


* Release engineering: [https://pagure.io/releng/issues #Releng issue number] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->
* Release engineering: [https://pagure.io/releng/issue/7235 #7235] (a check of an impact with Release Engineering is needed) <!-- REQUIRED FOR SYSTEM WIDE AS WELL AS FOR SELF CONTAINED CHANGES -->


** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]:
** [[Fedora_Program_Management/ReleaseBlocking/Fedora{{FedoraVersionNumber|next}}|List of deliverables]]:
Line 102: Line 107:


== Upgrade/compatibility impact ==
== Upgrade/compatibility impact ==
It may be that the new settings break software that connects to servers which utilize weak algorithms. Compatibility can be obtained by switching the system to legacy mode.
It may be that the new settings break software that connects to servers which utilize weak algorithms. Compatibility can be obtained by switching the system to legacy mode as follows.
update-crypto-policies --set LEGACY




Line 127: Line 133:


* Contingency mechanism: (What to do?  Who will do it?)  
* Contingency mechanism: (What to do?  Who will do it?)  
If we notice significant user experience degradation, e.g., due to many custom servers utilizing legacy protocols, we should consider postponing that change. The change owner will take care of this.
If we notice significant user experience degradation, e.g., due to many custom servers utilizing legacy protocols, we should consider postponing or reducing the number of updates in that change. The change owner will take care of this.
 
If the openssl changes to support a system-wide policy do not merge on upstream in time, the change will be postponed. The change owner will take care of this.


<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
<!-- When is the last time the contingency mechanism can be put in place?  This will typically be the beta freeze. -->
Line 133: Line 141:


* Blocks release? No
* Blocks release? No


== Documentation ==
== Documentation ==
Line 142: Line 149:
== Release Notes ==
== Release Notes ==


[[Category:ChangeAcceptedF28]]
[[Category:SystemWideChange]]
[[Category:SystemWideChange]]

Latest revision as of 13:04, 6 March 2018

Strong crypto settings: phase 1

Summary

This change is about updating the current system-wide crypto policy to disable legacy and unused cryptographic protocols.

Owner

Current status

Detailed Description

Fedora includes several cryptographic components who's security doesn't remain constant over time. Algorithms such as (cryptographic) hashing and encryption typically have a lifetime after which they are considered either too risky to use or plain insecure. That would mean we need to phase out such algorithms from the default settings, or completely disable if they could cause irreparable issue.

While in the past we did not disable algorithms in a consistent way (different applications utilized different policies), today we have a system-wide policy followed by a large part of Fedora components. That allows us to move consistently and deprecate algorithms system-wide. For rationale see RFC 7457 for a more complete list of attacks taking advantage of legacy crypto algorithms.

The changes for default policy are:

* Require RSA of 2048 bits and more in the default settings
* Disable DSA by default

Originally the following changes were also proposed but postponed

* Keep only TLS 1.2 (and TLS 1.3 when available) as enabled protocols and move the TLS 1.x, x<=1 to legacy level.
* Require finite field parameters (RSA, Diffie-Hellman) of 2048 and more in the default settings


That is a policy of:

LEGACY
 MACs: All HMAC with SHA1 or better + all modern MACs (poly1305 etc)
 Curves: all prime >= 255 bits (including bernstein curves)
 Signature algorithms: SHA-1 hash or better (not RIPEMD)
 Ciphers: all available > 112-bit key, >= 128-bit block (no rc4, but with 3DES)
 key exchange: ECDHE, RSA, DHE
 DH params size: >=1023
 RSA params size: >=1023
 TLS protocols: TLS >= 1.0
DEFAULT
 MACs: All HMAC with SHA1 or better + all modern MACs (poly1305 etc)
 Curves: all prime >= 255 bits (including bernstein curves)
 Signature algorithms: with SHA-1 hash or better (not DSA)
 Ciphers: >= 128-bit key, >= 128-bit block (aes, camellia, chacha20, including aes-cbc)
 key exchange: ECDHE, RSA, DHE
 DH params size: >= 1023
 RSA params size: >= 2048
 TLS protocols: TLS >= 1.0
FUTURE
 MACs: All HMAC with SHA256 or better + all modern MACs (poly1305 etc)
 Curves: all prime >= 384 bits (including bernstein curves)
 Signature algorithms: SHA-384 hash or better (not DSA)
 Ciphers: >= 256-bit key, >= 128-bit block, only Authenticated Encryption (AE) ciphers
 key exchange: ECDHE, DHE
 DH params size: >= 3072
 RSA params size: >= 3072
 TLS protocols: TLS >= 1.2


Benefit to Fedora

With this change we protect users from relying on enabled-by-default weak cryptography, as well as reduce our maintenance cost for future attacks that rely on weak crypto for exploitation.

Scope

  • Proposal owners:

The policies include in crypto-policies package need to be updated.

  • Other developers:
* Crypto policies are updated to the settings above
* OpenSSL is updated to allow setting policies for TLS versions
  • Release engineering: #7235 (a check of an impact with Release Engineering is needed)
* Crypto policies are updated to the settings above
* OpenSSL, NSS, GnuTLS and all applications covered under the Fedora Crypto Policies follow the new crypto settings.
  • Policies and guidelines:

No changes to packaging or other guidelines is needed.

  • Trademark approval: N/A (not needed for this Change)

Upgrade/compatibility impact

It may be that the new settings break software that connects to servers which utilize weak algorithms. Compatibility can be obtained by switching the system to legacy mode as follows.

update-crypto-policies --set LEGACY


How To Test

Applications which follow the system-wide policy (e.g., curl,wget) should be tested:

* whether they can connect to legacy (TLS1.0, TLS1.1) servers when system is in legacy mode
* whether the previous connection breaks when system is in default mode
* whether the system can connect to TLS 1.2 servers when in default, legacy or future mode.


User Experience

Given the existing deployment of TLS 1.2 on the internet, there should not be significant user experience degradation, although that's a speculation.

Dependencies

* nss
* gnutls
* openssl
* crypto-policies


Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?)

If we notice significant user experience degradation, e.g., due to many custom servers utilizing legacy protocols, we should consider postponing or reducing the number of updates in that change. The change owner will take care of this.

If the openssl changes to support a system-wide policy do not merge on upstream in time, the change will be postponed. The change owner will take care of this.

  • Contingency deadline: beta freeze
  • Blocks release? No

Documentation

None


Release Notes