I present a proposal to remove some vulnerable/deprecated/legacy TLS 
ciphersuits from Firefox. I am not proposing addition of any new ciphersuits, 
changing of priority order, protocol removal, or any other changes in 
functionality.

I have read these proposed IETF drafts and am using them as guidance along with 
my experience:
https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01
https://tools.ietf.org/html/draft-sheffer-tls-bcp-01

These are the default available ciphersuits in Firefox Aurora 28.0a2 on a 
Windows system:
C02B  TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
C02F  TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
C009  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
C013  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
C00A  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
C014  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
C012  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
C007  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
C011  TLS_ECDHE_RSA_WITH_RC4_128_SHA
0033  TLS_DHE_RSA_WITH_AES_128_CBC_SHA
0032  TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0045  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
0039  TLS_DHE_RSA_WITH_AES_256_CBC_SHA
0038  TLS_DHE_DSS_WITH_AES_256_CBC_SHA
0088  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
0016  TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
002F  TLS_RSA_WITH_AES_128_CBC_SHA
0041  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
0035  TLS_RSA_WITH_AES_256_CBC_SHA
0084  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
000A  TLS_RSA_WITH_3DES_EDE_CBC_SHA
0005  TLS_RSA_WITH_RC4_128_SHA
0004  TLS_RSA_WITH_RC4_128_MD5

Now follows reasoning for removing some of the ciphersuits.

Apache/nginx (and possibly many other) configurations that establish Perfect 
Forward Secrecy (PFS) ciphersuits will always have available a PFS ciphersuit 
that contains AES. This means that the following ciphersuits can be safely 
removed, also given their non-usage in real client-server connections:
C012  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
C007  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
C011  TLS_ECDHE_RSA_WITH_RC4_128_SHA
0016  TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA

Removing the above ciphersuits also helps avoiding some usage of 3DES (due to 
its low performance) and RC4 (due to its vulnerability).

DSS is obsolete and is not used for real client-server connections, hence the 
following ciphersuits can be removed:
0032  TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0038  TLS_DHE_DSS_WITH_AES_256_CBC_SHA

Camellia ciphersuits are little supported, never negotiated cipher, and not as 
well-tested & reviewed as AES ciphersuits. The following ciphersuits can be 
removed:
0045  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
0088  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
0041  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
0084  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA

The last remaining 3DES ciphersuit should be removed for performance 
considerations and its legacy status:
000A  TLS_RSA_WITH_3DES_EDE_CBC_SHA

The last remaining RC4 ciphersuits should be removed due to their vulnerability:
0005  TLS_RSA_WITH_RC4_128_SHA
0004  TLS_RSA_WITH_RC4_128_MD5

RC4 ciphersuits will likely soon be prohibited anyway if the proposal is 
accepted https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01

Overall, this means that the following ciphersuits should be removed from the 
TLS handshake:
C012  TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
C007  TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
C011  TLS_ECDHE_RSA_WITH_RC4_128_SHA
0032  TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0045  TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
0038  TLS_DHE_DSS_WITH_AES_256_CBC_SHA
0088  TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
0016  TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
0041  TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
0084  TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
000A  TLS_RSA_WITH_3DES_EDE_CBC_SHA
0005  TLS_RSA_WITH_RC4_128_SHA
0004  TLS_RSA_WITH_RC4_128_MD5

This would bring the ciphersuit list down to:
C02B  TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
C02F  TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
C009  TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
C013  TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
C00A  TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
C014  TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
0033  TLS_DHE_RSA_WITH_AES_128_CBC_SHA
0039  TLS_DHE_RSA_WITH_AES_256_CBC_SHA
002F  TLS_RSA_WITH_AES_128_CBC_SHA
0035  TLS_RSA_WITH_AES_256_CBC_SHA

The positives of removing the listed ciphersuits:
1) It makes the TLS handshake smaller thus preventing some issues related to 
long handshake.
2) It protects users from misconfigured server ciphersuit preference order - 
and thus no vulnerable RC4 ciphersuits will be used.
3) It protects servers from misconfigured server ciphersuit preference order - 
and thus no performance hit will be incurred due to use of 3DES.
4) It prevents the use of little-reviewed Camellia ciphersuits.
5) It prevents the use of retired DSS.

The possible negatives of the removal:
1) Some client-server connections might fail.

Suggested mitigation of negatives:
If the initial handshake fails, make it a silent failure and retry with a 
handshake that contains a larger set of ciphersuits. This could also be 
accompanied with some non-blocking failure similar to how mixed-content 
warnings are presented to the user - and not show the full padlock icon in the 
addressbar.

Positives of this mitigation:
1) No client-server connections will fail (compared to the current state).

Negatives of mitigation:
1) Users are not as well protected against downgrade attacks as they could be - 
but this is probably the best we can do at the moment.

I have especially not heard anything similar to the suggested mitigation of the 
negatives of decreasing the number of available ciphersuits, so this might 
perhaps be a new idea how to move forward.

If you have any comments against the removal of a particular ciphersuit, please 
present a publicly accessible non-test webserver that only allows negotiation 
of the removed ciphersuits (and thus the client-server connection will fail).

I believe this proposal should be accepted, the ciphersuits removed, and the 
mitigation implemented in Firefox nightlies to gain more data on a larger 
userbase.

-- 
Marlene

-- 
dev-tech-crypto mailing list
dev-tech-crypto@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-tech-crypto

Reply via email to