Fixed makefile: remove bibtex, we don't use it right now
[ach-master.git] / src / cipher_suites.tex
1 \section{Cipher suites}
2
3
4 \subsection{Recommended cipher suites}
5
6 In principle, system administrators who want to improve their servers need to
7 make a hard decision between locking out some users while keeping very high
8 cipher suite security levels or supporting as many users as possible while
9 lowering some settings. \url{https://www.ssllabs.com/} gives administrators a
10 tool to test out different settings. The authors used ssllabs.com to arrive at
11 a set of cipher suites which we will recommend throught this document.
12 \textbf{Caution: these settings can only represent a subjective choice of the
13 authors at the time of this writing. It might be a wise choice to select your
14 own ciper suites based on the instructions in section
15 \ref{section:ChosingYourOwnCipherSuites}}.
16
17
18 \subsubsection{Configuration A: strong ciphers, fewer clients}
19
20 At the time of this writing, we recommend the following set of strong cipher suites which may be useful in an environment where you do not depend on many, diverse external clients and where compatibility is not an issue.  An example of such an environment might be machine 2 machine communications or corporate environments where you can define the software which must be used.
21
22
23 We arrived at this set of cipher suites by selecting
24
25 \begin{itemize}
26 \item TLS 1.2
27 \item Perfect forward secrecy / ephemeral Diffie Hellman
28 \item strong Hashes (SHA-2)
29 \item GCM as chaining mode if possible 
30 \end{itemize}
31
32 This results in the string:
33
34 \begin{verbatim}
35 EECDH+aRSA+AES256:EDH+aRSA+AES256:!SSLv3
36 \end{verbatim}
37
38 %$\implies$ resolves to 
39 %
40 %\begin{verbatim}
41 %openssl ciphers -V $string
42 %\end{verbatim}
43
44
45
46 \begin{center}
47 \begin{tabular}{| l | l | l | l | l| l | l |}
48 \hline
49 ID        & OpenSSL name                & Version & KeyEx & Auth & Cipher & Hash \\ \hline
50 0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
51 0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
52 0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
53 0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
54 \end{tabular}
55 \end{center}
56
57
58 Compatibility:
59
60 Only clients which support TLS1.2 are covered by this cipher suites (Chrome 30, Win 7 and Win 8.1 crypto stack, Opera 17, OpenSSL >= 1.0.1e, Safari 6 / iOS 6.0.1, Safari 7 / OS X 10.9).
61
62
63
64 \subsubsection{Configuration B: weaker ciphers, many clients}
65
66 TLS 1.2, TLS 1.1, TLS 1.0, -SSLv3, -SSLv2
67
68 \todo{HOW did we arrive at this string? Constraints: which clients are supported by this string? }
69
70 string="EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EDH+CAMELLIA256:EECDH:EDH+aRSA:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128:!ECDSA:AES256-SHA"
71
72
73 $\implies$ resolves to openssl ciphers -V \$string
74
75 \begin{center}
76 \begin{tabular}{| l | l | l | l | l| l | l |}
77 \hline
78 ID        & OpenSSL name                            & Version & KeyEx & Auth & Cipher & Hash \\ \hline
79 0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
80 0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
81 0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
82 0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
83 0x0088 & DHE-RSA-CAMELLIA256-SHA     & SSLv3   & DH    &  RSA &Camellia(256)& SHA1   \\ \hline
84 0xC014 & ECDHE-RSA-AES256-SHA        & SSLv3   & ECDH  &  RSA &AES(256)     & SHA1   \\ \hline
85 0x0039 & DHE-RSA-AES256-SHA          & SSLv3   & DH    &  RSA &AES(256)     & SHA1   \\ \hline
86 0x0035 & AES256-SHA                  & SSLv3   & RSA   &  RSA &AES(256)     & SHA1   \\ \hline
87
88 \end{tabular}
89 \end{center}
90
91 Compatibility:
92
93 Note that this cipher suites will not work with anything using Windows XP's crypto stack (IE, Outlook), Java 6, Java 7 and Android 2.3. Java 7 could be made compatible by installing the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" (JCE). We could not verify yet if installing JCE also fixes the Java 7 DH-parameter length limitation (1024 bit). 
94
95
96
97 \subsection{Chosing your own cipher suites}
98 \label{section:ChosingYourOwnCipherSuites}
99 \todo{ Adi... }
100