<div dir="ltr"><div><div><div><div>Hi,<br><br></div>during the last months, I have done some researches about how to find a good Protocol and Cipher Policy for TLS/SSL.<br></div>The resuls are documented in <a href="https://www.owasp.org/index.php/Germany/Projekte/Top_10_fuer_Entwickler-2013/A6-Verlust_der_Vertraulichkeit_sensibler_Daten#tab=JAVA2">Top 10 Developer Edition, in German</a>, yet.<br>
<br></div>I'd like to discuss them here and add them in the<font><span dir="auto"> <a href="http://Transport Layer Protection Cheat Sheet">Transport Layer Protection Cheat Sheet.</a><br></span></font></div><div><font><span dir="auto">Do you have any comments. Should I add my input in a new 'DRAFT:'-Copy of the document before transfering it to the Cheat Sheet?<br>
</span></font></div><div><font><span dir="auto">Perhaps you find more points that should be updated.<br></span></font></div><div><font><span dir="auto"><br>Kind Regards<br></span></font></div><div><font><span dir="auto">Torsten<br>
</span></font></div><div><font><span dir="auto"><br> <b><br>Only Support Strong Cryptographic Ciphers:</b><br>…<br></span></font><br><font><span dir="auto"><font><span dir="auto">* use the very latest recommendations, they may be volantile these days<br>
* Secure length for cryptographic keys and parameters (like DH-parameter) >=2048 bits or equivalent Elliptic Curves<br><br></span></font>Example for a Policy to get a Whitelist for recommenderd Ciphers:<br></span></font><font><span dir="auto"><font><span dir="auto">* Activate to set the Cipher Order by the Server</span></font> <br>
* Highest Priority for Ciphers that support 'Forward Secrecy'<br>* Favor DHE over ECDHE, ECDHE lacks now of really reliable Elliptic Curves, cf. <a href="http://safecurves.cr.yp.to">http://safecurves.cr.yp.to</a>; </span></font><font><span dir="auto"><br>
* Use RSA-Keys (no DSA/DSS, cf. <a href="https://projectbullrun.org/dual-ec/tls.html">https://projectbullrun.org/dual-ec/tls.html</a>)<br>* Favor GCM over CBC regardless of the cipher size<br>* Priorize the ciphers by the sizes of the Cipher and the MAC<br>
* Disable weak ciphers without diabling latency browsers and bots that have to be supported (find the best compromise), actually the cipher TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) does this job.<br>* Ciphers should be usable for DH-Pamameters >= 2048 bits, without blocking latency browsers (The cipher ‘DHE-RSA-AES128-SHA’ is suppressed as some browsers like to use it but are not capable to cope with DH-Params > 1024 bits.)<br>
</span></font></div><div><font><span dir="auto">* Define a Cipher String that works with different Versions of your </span></font>encryption tool, like openssl,<font><span dir="auto"> <br></span></font><font><span dir="auto"><font><span dir="auto">* Verify your cipher string <br>
</span></font></span></font><font><span dir="auto"><font><span dir="auto"><font><span dir="auto"><font><span dir="auto"><font><span dir="auto"><font><span dir="auto">  ° </span></font></span></font>with an autit-tool, like <a href="https://www.owasp.org/index.php/O-Saft">OWASP 'O-Saft'</a><br>
</span></font></span></font>  ° 
listing it manually with your encryption software, e.g. openssl ciphers 
-v <cipher-string> (the result may differ by version),</span></font> e.g.: </span></font>openssl ciphers -v 'EDH+aRSA+AESGCM:EDH+aRSA+AES:DHE-RSA-AES256-SHA:EECDH+aRSA+AESGCM:EECDH+aRSA+AES:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:RSA+AESGCM:RSA+AES+SHA:DES-CBC3-SHA:-DHE-RSA-AES128-SHA'<br>
<font><span dir="auto">#add optionally ':!aNULL:!eNULL:!LOW:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:!ADH:!IDEA' to protect older Versions of OpenSSL<br></span></font><br>* This results in this recommended Cpihers and their Order:<br>
</div><div><span style="font-family:courier new,monospace"><font><span dir="auto"><small><pre>0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
0x00,0x6B - DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
0x00,0x39 - DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
0x00,0x67 - DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
0xC0,0x14 - ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
0xC0,0x13 - ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
0x00,0x9D - AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD
0x00,0x9C - AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD
0x00,0x35 - AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1
0x00,0x2F - AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1
0x00,0x0A - DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1<br></pre><pre>Remarks:<br>- According to my researches the most common browsers should be supported with this setting, too.<br>- Monitor the performance of your server, e.g. the TLS handshake with DHE hinders the CPU abt 2.4 times than ECDHE (cf. <a rel="nofollow" class="" href="http://vincent.bernat.im/en/blog/2011-ssl-perfect-forward-secrecy.html#some-benchmarks">[Vincent Bernat, 2011]</a>)</pre>
</small></span></font></span><br><font><span dir="auto"><b>On additional Point:</b><br>I'd like to launch also a discussion if we should find references to good practices that are not dependant on Documents from NIST.<br>
</span></font></div></div>