updated TODO
[ach-master.git] / src / cipher_suites.tex
1 \section{Cipher suites}
2
3 Cipher suites are a combination of algorithms to provide for 
4 Confidentiality, Integrity and Authenticity
5 \footnote{\url{http://en.wikipedia.org/wiki/Information\_security}} of 
6 communication. For example: sending encrypted data over the wire does not 
7 ensure that the data can not be modified (message integrity), similarly
8 encrypted data can be sent from an adversary. It is therefore paramount to
9 prove that data has been sent from the desired source (message authenticity).
10 This concept is known as authenticated encryption
11 \footnote{\url{http://en.wikipedia.org/wiki/Authenticated\_encryption}}
12 \footnote{\url{http://www.cs.jhu.edu/~astubble/dss/ae.pdf}}.
13
14 \subsection{Forward Secrecy}
15 Forward Secrecy or Perfect Forward Secrecy is a property of a cipher suite 
16 that ensures confidentiality even if the server key has been compromised.
17 Thus if traffic has been recorded it can not be decrypted even if an adversary
18 has got hold of the decryption key
19 \footnote{\url{http://en.wikipedia.org/wiki/Forward\_secrecy}}
20 \footnote{\url{https://www.eff.org/deeplinks/2013/08/pushing-perfect-forward-secrecy-important-web-privacy-protection}}. 
21
22 \subsection{Recommended cipher suites}
23
24 In principle, system administrators who want to improve their servers need to
25 make a hard decision between locking out some users while keeping very high
26 cipher suite security levels or supporting as many users as possible while
27 lowering some settings. \url{https://www.ssllabs.com/} gives administrators a
28 tool to test out different settings. The authors used ssllabs.com to arrive at
29 a set of cipher suites which we will recommend throught this document.
30 \textbf{Caution: these settings can only represent a subjective choice of the
31 authors at the time of this writing. It might be a wise choice to select your
32 own cipher suites based on the instructions in section
33 \ref{section:ChosingYourOwnCipherSuites}}.
34
35
36 \subsubsection{Configuration A: strong ciphers, fewer clients}
37
38 At the time of this writing, we recommend the following set of strong cipher
39 suites which may be useful in an environment where you do not depend on many,
40 diverse external clients and where compatibility is not an issue.  An example
41 of such an environment might be machine 2 machine communications or corporate
42 environments where you can define the software which must be used.
43
44
45 We arrived at this set of cipher suites by selecting
46
47 \begin{itemize}
48 \item TLS 1.2
49 \item Perfect forward secrecy / ephemeral Diffie Hellman
50 \item strong Hashes (SHA-2)
51 \item GCM as chaining mode if possible 
52 \end{itemize}
53
54 This results in the string:
55
56 \begin{lstlisting}[breaklines]
57 'EECDH+aRSA+AES256:EDH+aRSA+AES256:!SSLv3'
58 \end{lstlisting}
59
60 %$\implies$ resolves to 
61 %
62 %\begin{verbatim}
63 %openssl ciphers -V $string
64 %\end{verbatim}
65
66
67
68 \begin{center}
69
70 \begin{tabular}{| l | l | l | l | l| l | l |}
71 \hline
72 ID        & OpenSSL name                & Version & KeyEx & Auth & Cipher & Hash \\ \hline
73 \verb|0xC030| & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
74 \verb|0xC028| & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
75 \verb|0x009F| & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
76 \verb|0x006B| & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
77 \end{tabular}
78 \end{center}
79
80
81 \textbf{Compatibility}
82
83 Only clients which support TLS1.2 are covered by these cipher suites (Chrome 30,
84 Win 7 and Win 8.1 crypto stack, Opera 17, OpenSSL $\ge$ 1.0.1e, Safari 6 / iOS
85 6.0.1, Safari 7 / OS X 10.9).
86
87
88
89 \subsubsection{Configuration B: weaker ciphers, many clients}
90
91 In this section we propose a slighly "weaker" set of cipher suites. There are
92 some known weaknesses of for example SHA-1 which is included in this this set.
93 However, the advantage of this set of cipher suites is its wider compatibility
94 with clients. 
95
96
97 \textbf{In the following document, all further examples in this paper will use Configuration B}.
98
99
100 We arrived at this set of cipher suites by selecting
101
102 \begin{itemize}
103 \item TLS 1.2, TLS 1.1, TLS 1.0
104 \item allowing SHA-1
105 \end{itemize}
106
107 This results in the string:
108
109 \begin{lstlisting}[breaklines]
110 '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'
111 \end{lstlisting}
112
113
114
115 \begin{center}
116 \begin{tabular}{| l | l | l | l | l| l | l |}
117 \hline
118 ID        & OpenSSL name                            & Version & KeyEx & Auth & Cipher & Hash \\ \hline
119 0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
120 0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
121 0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
122 0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
123 0x0088 & DHE-RSA-CAMELLIA256-SHA     & SSLv3   & DH    &  RSA &Camellia(256)& SHA1   \\ \hline
124 0xC014 & ECDHE-RSA-AES256-SHA        & SSLv3   & ECDH  &  RSA &AES(256)     & SHA1   \\ \hline
125 0x0039 & DHE-RSA-AES256-SHA          & SSLv3   & DH    &  RSA &AES(256)     & SHA1   \\ \hline
126 0x0035 & AES256-SHA                  & SSLv3   & RSA   &  RSA &AES(256)     & SHA1   \\ \hline
127
128 \end{tabular}
129 \end{center}
130
131 \textbf{Compatibility}
132
133 Note that these cipher suites will not work with anything using Windows XP's
134 crypto stack (IE, Outlook), Java 6, Java 7 and Android 2.3. Java 7 could be
135 made compatible by installing the "Java Cryptography Extension (JCE) Unlimited
136 Strength Jurisdiction Policy Files"
137 (JCE) \footnote{\url{http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html}}.
138 We could not verify yet if installing JCE also fixes the Java 7
139 DH-parameter length limitation (1024 bit). 
140
141 \textbf{Explanation}
142
143 For a detailed explanation of the cipher suites chosen, please see
144 \ref{section:ChosingYourOwnCipherSuites}. In short, finding the perfect cipher
145 string is impossible and must be a tradeoff. On the one hand
146 there are mandatory and optional ciphers defined in a few RFCs, on the other hand
147 there are clients and servers only implementing subsets of the specification.
148
149 Straight forward, we wanted strong ciphers, forward secrecy
150 \footnote{\url{http://nmav.gnutls.org/2011/12/price-to-pay-for-perfect-forward.html}}
151 and the most clients we could get while still having a cipher string that can be
152 used on older servers too (think OpenSSL 0.9.8). This cipher string is meant to be used
153 by copy and paste and needs to just work.
154
155 \begin{itemize}
156 \item TLS1.2 is preferred over TLSv1.0/SSLv3 (while still providing a useable cipher
157       string for SSLv3).
158 \item AES256 and CAMELLIA256 count as strong ciphers at the moment; preferrably in
159       GCM mode.\\
160           \todo{add a reference here please}
161       \todo{Adi: add 128bit ciphers too} \\
162       \todo{Team: discuss ordering of keys (256 $\rightarrow$ 128 or vice versa?)}
163 \item DHE or ECDHE for forward secrecy
164 \item RSA as this will fit most of todays setup
165 \item AES256-SHA as a last ressort (with this cipher at the end, even systems with
166       very old versions of openssl like 0.9.8 will just work. Just forward secrecy
167       will not be used. On systems that do not support elliptic curves, that cipher
168       offers support for the Microsoft crypto libraries that only support ECDHE.
169 \end{itemize}
170 \todo{Adi: review "justification" when next section is written}
171
172
173
174
175 \subsection{Chosing your own cipher suites}
176 \label{section:ChosingYourOwnCipherSuites}
177 \todo{ Adi...  you want to describe how to make your own selection of cipher suites here. The text below was simply the old text, still left here for reference.}
178
179 %%% NOTE: we do not need to list this all here, can move to an appendix
180 %At the time of this writing, SSL is defined in RFCs:   
181 %
182 %\begin{itemize}
183 %\item RFC2246 - TLS1.0         
184 %\item RFC3268 - AES            
185 %\item RFC4132 - Camelia                
186 %\item RFC4162 - SEED           
187 %\item RFC4279 - PSK            
188 %\item RFC4346 - TLS 1.1                
189 %\item RFC4492 - ECC            
190 %\item RFC4785 - PSK\_NULL              
191 %\item RFC5246 - TLS 1.2                
192 %\item RFC5288 - AES\_GCM               
193 %\item RFC5289 - AES\_GCM\_SHA2\_ECC            
194 %\item RFC5430 - Suite B                
195 %\item RFC5487 - GCM\_PSK               
196 %\item RFC5489 - ECDHE\_PSK             
197 %\item RFC5932 - Camelia                
198 %\item RFC6101 - SSL 3.0                
199 %\item RFC6209 - ARIA           
200 %\item RFC6367 - Camelia                
201 %\item RFC6655 - AES\_CCM               
202 %\item RFC7027 - Brainpool Curves               
203 %\end{itemize}
204
205 \subsubsection{Overview of SSL Server settings}
206
207
208 Most Server software (Webservers, Mail servers, etc.) can be configured to prefer certain cipher suites over others. 
209 We followed the recommendations by Ivan Ristic's SSL/TLS Deployment Best Practices\footnote{\url{https://www.ssllabs.com/projects/best-practices/index.html}} document (see section 2.2 "Use Secure Protocols") and arrived at a list of recommended cipher suites for SSL enabled servers.
210
211 Following Ivan Ristic's adivce we arrived at a categorisation of cipher suites.
212
213 \begin{center}
214 \begin{tabular}{| l | l | l | l | l|}
215 \hline
216 & Version   & Key\_Exchange  & Cipher    & MAC       \\ \hline
217 \cellcolor{green}prefer  & TLS 1.2   & DHE\_DSS   & AES\_256\_GCM   & SHA384        \\ \hline
218     &   & DHE\_RSA   & AES\_256\_CCM   & SHA256        \\ \hline
219     &   & ECDHE\_ECDSA   & AES\_256\_CBC   &       \\ \hline
220     &   & ECDHE\_RSA &   &       \\ \hline
221     &   &   &   &       \\ \hline
222 \cellcolor{orange}consider    & TLS 1.1   & DH\_DSS    & AES\_128\_GCM   & SHA       \\ \hline
223     & TLS 1.0   & DH\_RSA    & AES\_128\_CCM   &       \\ \hline
224     &   & ECDH\_ECDSA    & AES\_128\_CBC   &       \\ \hline
225     &   & ECDH\_RSA  & CAMELLIA\_256\_CBC  &       \\ \hline
226     &   & RSA   & CAMELLIA\_128\_CBC  &       \\ \hline
227     &   &   &   &       \\ \hline
228 \cellcolor{red}avoid   
229 & SSL 3.0   & NULL  & NULL  & NULL      \\ \hline
230     &   & DH\_anon   & RC4\_128   & MD5       \\ \hline
231     &   & ECDH\_anon & 3DES\_EDE\_CBC  &       \\ \hline
232     &   &   & DES\_CBC   &       \\ \hline
233     &   &   &   &       \\ \hline
234 \cellcolor{blue}{\color{white}special }
235 &   & PSK   & CAMELLIA\_256\_GCM  &       \\ \hline
236     &   & DHE\_PSK   & CAMELLIA\_128\_GCM  &       \\ \hline
237     &   & RSA\_PSK   & ARIA\_256\_GCM  &       \\ \hline
238     &   & ECDHE\_PSK & ARIA\_256\_CBC  &       \\ \hline
239     &   &   & ARIA\_128\_GCM  &       \\ \hline
240     &   &   & ARIA\_128\_CBC  &       \\ \hline
241     &   &   & SEED  &       \\ \hline
242 \end{tabular}
243 \end{center}
244
245 A remark on the ``consider'' section: the BSI (Federal office for information security, Germany) recommends in its technical report TR-02102-2\footnote{\url{https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR02102/BSI-TR-02102-2_pdf.html}} to \textbf{avoid} non-ephemeral\footnote{Ephemeral keys are session keys which are destroyed upon termination of the encrypted session. In TLS/SSL, they are realized by the DHE cipher suites. } keys for any communication which might contain personal or sensitive data. In this document, we follow BSI's advice and therefore only keep cipher suites containing (EC)DH\textbf{E} (ephemeral) variants. System administrators, who can not use forward secrecy can still use the cipher suites in the ``consider'' section. We however, do not recommend them in this document.
246
247 %% NOTE: s/forward secrecy/perfect forward secrecy???
248
249 Note that the entries marked as ``special'' are cipher suites which are not common to all clients (webbrowsers etc).
250
251
252 \subsubsection{Tested clients}
253  
254 Next we tested the cipher suites above on the following clients:
255
256 %% NOTE: we need to test with more systems!!
257 \begin{itemize}
258 \item Chrome 30.0.1599.101 Mac OS X 10.9
259 \item Safari 7.0 Mac OS X 10.9
260 \item Firefox 25.0 Mac OS X 10.9
261 \item Internet Explorer 10 Windows 7
262 \item Apple iOS 7.0.3
263 \end{itemize}
264
265
266 The result of testing the cipher suites with these clients gives us a preference order as shown in table \ref{table:prefOrderCipherSuites}. 
267 Should a client not be able to use a specific cipher suite, it will fall back to the next possible entry as given by the ordering.
268
269 \begin{center}
270 \begin{table}[h]
271 \small
272     \begin{tabular}{|l|l|l|l|l|}
273     \hline
274     Pref & Cipher Suite                                   & ID         & Browser                     \\ \hline
275     1    & TLS\_DHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384     &     0x009f & OpenSSL command line client \\ \hline
276     2    & TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA384 &     0xC024 & Safari                      \\ \hline
277     3    & TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA384   &     0xC028 & Safari                      \\ \hline
278     4    & TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA256     &     0x006B & Safari, Chrome              \\ \hline
279     5    & TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA    &     0xC00A & Safari, Chrome, Firefox, IE \\ \hline
280     6    & TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA      &     0xC014 & Safari, Chrome, Firefox, IE \\ \hline
281     7    & TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA        &     0x0039 & Safari, Chrome, Firefox     \\ \hline
282     8    & TLS\_DHE\_DSS\_WITH\_AES\_256\_CBC\_SHA        &     0x0038 & Firefox, IE                 \\ \hline
283     9    & TLS\_DHE\_RSA\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0088 & Firefox                     \\ \hline
284     10   & TLS\_DHE\_DSS\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0087 & Firefox                     \\ \hline
285     \end{tabular}
286 \caption{Preference order of cipher suites}
287 \label{table:prefOrderCipherSuites}
288 \end{table}
289 \end{center}
290
291
292 Table \ref{table:prefOrderOpenSSLNames} shows the same data again with specifying the corresponding OpenSSL name.
293
294 \begin{center}
295 \begin{table}[h]
296 \small
297     \begin{tabular}{|l|l|l|}
298     \hline
299     Cipher Suite                                   & ID         & OpenSSL Name                  \\ \hline
300     TLS\_DHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384     &     0x009f &         DHE-RSA-AES256-GCM-SHA384 \\ \hline
301     TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA384 &     0xC024 &     ECDHE-ECDSA-AES256-SHA384 \\ \hline
302     TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA384   &     0xC028 &     ECDHE-RSA-AES256-SHA384   \\ \hline
303     TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA256     &     0x006B &     DHE-RSA-AES256-SHA256     \\ \hline
304     TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA    &     0xC00A &     ECDHE-ECDSA-AES256-SHA    \\ \hline
305     TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA      &     0xC014 &     ECDHE-RSA-AES256-SHA      \\ \hline
306     TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA        &     0x0039 &     DHE-RSA-AES256-SHA        \\ \hline
307     TLS\_DHE\_DSS\_WITH\_AES\_256\_CBC\_SHA        &     0x0038 &     DHE-DSS-AES256-SHA        \\ \hline
308     TLS\_DHE\_RSA\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0088 &     DHE-RSA-CAMELLIA256-SHA   \\ \hline
309     TLS\_DHE\_DSS\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0087 &     DHE-DSS-CAMELLIA256-SHA   \\ \hline
310     \end{tabular}
311 \caption{Preference order of cipher suites, with OpenSSL names}
312 \label{table:prefOrderOpenSSLNames}
313 \end{table}
314 \end{center}
315
316 Note: the tables \ref{table:prefOrderOpenSSLNames} and \ref{table:prefOrderCipherSuites} contain Elliptic curve key exchanges. There are currently strong doubts\footnote{\url{http://safecurves.cr.yp.to/rigid.html}} concerning ECC.
317 If unsure, remove the cipher suites starting with ECDHE in the table above.
318
319
320 Based on this ordering, we can now define the corresponding settings for servers. We will start with the most common web servers.
321