Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a list of which browser supports which TLS cipher suite? [closed]

I'm trying to increase the security of my application by having a higher version of TLS. However, I do not want to exclude too many users. Does anyone know if there is a list which lists all main browsers, and which versions supported which cipher suites for TLS? e.g

Chrome version Y supports TLS_RSA ...., TLS_ECDHE...., ...
Chrome version Y+1 supports....
Safari version X ...
IE version Z ....
Microsoft Edge ...
Opera .... 
Firefox ...

I've been googling my behind off and I cant seem to find it anywhere. Anyone seen a website like this? Thanks a million!

like image 922
Daxterwous Avatar asked Aug 03 '15 10:08

Daxterwous


People also ask

How do I disable cipher suites in Chrome?

Currently, Chrome does not offer any interface for enabling or disabling individual SSL/TLS cipher suites, either through the UI or through the administrative policies.

Which cipher suites should be disabled?

If you must still support TLS 1.0, disable TLS 1.0 compression to avoid CRIME attacks. You should also disable weak ciphers such as DES and RC4. DES can be broken in a few hours and RC4 has been found to be weaker than previously thought. In the past, RC4 was advised as a way to mitigate BEAST attacks.


2 Answers

I don't know if there is somewhere you can find this information.

I see 2 ways to ensure compatibility with most browsers:

  • Use Qualys SSLLabs to check handshakes after each change you make to your configuration,
  • Keep using TLSv1.0 is you need support for Android v4.3 and earlier and support at least cipher suites defined in corresponding TLS RFC.

The mandatory cipher suites to be compliant to the RFCs are:

  • TLS_RSA_WITH_3DES_EDE_CBC_SHA for TLSv1.1 (let's say for TLSv1.0 too)
  • TLS_RSA_WITH_AES_128_CBC_SHA for TLSv1.2

If you use these settings, you will support all browsers, except IE6 on Windows XP.

Then once you support these protocols and cipher suites, you can add and prefer stronger ones:

  • TLS_(EC)DHE_RSA_WITH_AES_256_GCM_SHA384 (not widely supported yet)
  • TLS_(EC)DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_(EC)DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_(EC)DHE_RSA_WITH_AES_128_CBC_SHA

With these settings, you should support almost all browsers and have a good security level with the modern ones.

If you want to know for a specific browser version, install it and go to this website (Still Qualys SSLLabs, but for client).

like image 55
Jyo de Lys Avatar answered Oct 21 '22 09:10

Jyo de Lys


The PyTLS project is a very low-level SSL/TLS implementation in pure python and comes with a basic server implementation that handles this job well, right out of the box.

  1. clone https://github.com/WestpointLtd/pytls
  2. run python server.py -p 4433
  3. point your browser at https://localhost:4433/

The running python script will print out the cipher suites requested by the browser to the console. They are listed in order of preference, with the browser's most preferred cipher suite at the top of the list.

e.g.

Google Chrome 56, Windows 10, April 2017

Binding...
Connection from ('127.0.0.1', 64858)
Record Version: TLS1_0
Handshake Version: TLS1_2
Session ID Length: 0
Cipher Suites Length (bytes): 32
Cipher Suites:
0x8a8a GREASE_i
0xc02b TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
0xc02f TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
0xc02c TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
0xc030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
0xcca9 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
0xcca8 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
0xcc14 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_non_iana
0xcc13 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_non_iana
0xc013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
0xc014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
0x009c TLS_RSA_WITH_AES_128_GCM_SHA256
0x009d TLS_RSA_WITH_AES_256_GCM_SHA384
0x002f TLS_RSA_WITH_AES_128_CBC_SHA
0x0035 TLS_RSA_WITH_AES_256_CBC_SHA
0x000a TLS_RSA_WITH_3DES_EDE_CBC_SHA

Mozilla Firefox 52, Windows 10, April 2017

Binding...
Connection from ('127.0.0.1', 64814)
Record Version: TLS1_0
Handshake Version: TLS1_2
Session ID Length: 0
Cipher Suites Length (bytes): 26
Cipher Suites:
0xc02b TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
0xc02f TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
0xcca9 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
0xcca8 TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
0xc02c TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
0xc030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
0xc00a TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
0xc009 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
0xc013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
0xc014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
0x002f TLS_RSA_WITH_AES_128_CBC_SHA
0x0035 TLS_RSA_WITH_AES_256_CBC_SHA
0x000a TLS_RSA_WITH_3DES_EDE_CBC_SHA

curl 7.42.1 (x86_64-suse-linux-gnu) libcurl/7.42.1 OpenSSL/1.0.1k zlib/1.2.8 libidn/1.31 libssh2/1.5.0, April 2017

Binding...
Connection from ('127.0.0.1', 47096)
Record Version: TLS1_0
Handshake Version: TLS1_2
Session ID Length: 0
Cipher Suites Length (bytes): 118
Cipher Suites:
0xc030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
0xc02c TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
0xc028 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
0xc024 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
0xc014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
0xc00a TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
0x00a3 TLS_DHE_DSS_WITH_AES_256_GCM_SHA384
0x009f TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
0x006b TLS_DHE_RSA_WITH_AES_256_CBC_SHA256
0x006a TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
0x0039 TLS_DHE_RSA_WITH_AES_256_CBC_SHA
0x0038 TLS_DHE_DSS_WITH_AES_256_CBC_SHA
0x0088 TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
0x0087 TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA
0xc032 TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384
0xc02e TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384
0xc02a TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384
0xc026 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384
0xc00f TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
0xc005 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA
0x009d TLS_RSA_WITH_AES_256_GCM_SHA384
0x003d TLS_RSA_WITH_AES_256_CBC_SHA256
0x0035 TLS_RSA_WITH_AES_256_CBC_SHA
0x0084 TLS_RSA_WITH_CAMELLIA_256_CBC_SHA
0xc02f TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
0xc02b TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
0xc027 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
0xc023 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
0xc013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
0xc009 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
0x00a2 TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
0x009e TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
0x0067 TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
0x0040 TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
0x0033 TLS_DHE_RSA_WITH_AES_128_CBC_SHA
0x0032 TLS_DHE_DSS_WITH_AES_128_CBC_SHA
0x009a TLS_DHE_RSA_WITH_SEED_CBC_SHA
0x0099 TLS_DHE_DSS_WITH_SEED_CBC_SHA
0x0045 TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
0x0044 TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA
0xc031 TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
0xc02d TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
0xc029 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
0xc025 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
0xc00e TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
0xc004 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
0x009c TLS_RSA_WITH_AES_128_GCM_SHA256
0x003c TLS_RSA_WITH_AES_128_CBC_SHA256
0x002f TLS_RSA_WITH_AES_128_CBC_SHA
0x0096 TLS_RSA_WITH_SEED_CBC_SHA
0x0041 TLS_RSA_WITH_CAMELLIA_128_CBC_SHA
0xc012 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
0xc008 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
0x0016 TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
0x0013 TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
0xc00d TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
0xc003 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
0x000a TLS_RSA_WITH_3DES_EDE_CBC_SHA
0x00ff TLS_EMPTY_RENEGOTIATION_INFO_SCSV

Repeat connections from the same browser will often show different sets of cipher suites, as the browser may randomly throw in different GREASE ciphers at various locations in the requested cipher list.

Note that this project only handles the transport of TLS Records and Messages and does not deal with any crypto. It is primarily aimed at security researchers that want to investigate or replicate the behaviour of different SSL/TLS implementations at the protocol level, and requires some knowledge of the required protocol behaviour to extend its use effectively as a library.

Disclaimer: I have worked closely with the author and contributed to some aspects of this project.

like image 38
Cheekysoft Avatar answered Oct 21 '22 09:10

Cheekysoft