8db4de4e183a351fef34dd0a6850596ac1a36407
[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 advesary. It is therefore paramount to
9 proof 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{Recommended cipher suites}
15
16 In principle, system administrators who want to improve their servers need to
17 make a hard decision between locking out some users while keeping very high
18 cipher suite security levels or supporting as many users as possible while
19 lowering some settings. \url{https://www.ssllabs.com/} gives administrators a
20 tool to test out different settings. The authors used ssllabs.com to arrive at
21 a set of cipher suites which we will recommend throught this document.
22 \textbf{Caution: these settings can only represent a subjective choice of the
23 authors at the time of this writing. It might be a wise choice to select your
24 own ciper suites based on the instructions in section
25 \ref{section:ChosingYourOwnCipherSuites}}.
26
27
28 \subsubsection{Configuration A: strong ciphers, fewer clients}
29
30 At the time of this writing, we recommend the following set of strong cipher
31 suites which may be useful in an environment where you do not depend on many,
32 diverse external clients and where compatibility is not an issue.  An example
33 of such an environment might be machine 2 machine communications or corporate
34 environments where you can define the software which must be used.
35
36
37 We arrived at this set of cipher suites by selecting
38
39 \begin{itemize}
40 \item TLS 1.2
41 \item Perfect forward secrecy / ephemeral Diffie Hellman
42 \item strong Hashes (SHA-2)
43 \item GCM as chaining mode if possible 
44 \end{itemize}
45
46 This results in the string:
47
48 \begin{lstlisting}[breaklines]
49 'EECDH+aRSA+AES256:EDH+aRSA+AES256:!SSLv3'
50 \end{lstlisting}
51
52 %$\implies$ resolves to 
53 %
54 %\begin{verbatim}
55 %openssl ciphers -V $string
56 %\end{verbatim}
57
58
59
60 \begin{center}
61 \begin{tabular}{| l | l | l | l | l| l | l |}
62 \hline
63 ID        & OpenSSL name                & Version & KeyEx & Auth & Cipher & Hash \\ \hline
64 0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
65 0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
66 0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
67 0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
68 \end{tabular}
69 \end{center}
70
71
72 \textbf{Compatibility}
73
74 Only clients which support TLS1.2 are covered by this cipher suites (Chrome 30,
75 Win 7 and Win 8.1 crypto stack, Opera 17, OpenSSL $\ge$ 1.0.1e, Safari 6 / iOS
76 6.0.1, Safari 7 / OS X 10.9).
77
78
79
80 \subsubsection{Configuration B: weaker ciphers, many clients}
81
82 In this section we propose a slighly "weaker" set of cipher suites. There are
83 some known weaknesses of for example SHA-1 which is included in this this set.
84 However, the advantage of this set of cipher suites is its wider compatibility
85 with clients. 
86
87
88 \textbf{In the following document, all further examples in this paper will use Configuration B}.
89
90
91 We arrived at this set of cipher suites by selecting
92
93 \begin{itemize}
94 \item TLS 1.2, TLS 1.1, TLS 1.0
95 \item allowing SHA-1
96 \end{itemize}
97
98 This results in the string:
99
100 \begin{lstlisting}[breaklines]
101 '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'
102 \end{lstlisting}
103
104
105
106 \begin{center}
107 \begin{tabular}{| l | l | l | l | l| l | l |}
108 \hline
109 ID        & OpenSSL name                            & Version & KeyEx & Auth & Cipher & Hash \\ \hline
110 0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
111 0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
112 0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
113 0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
114 0x0088 & DHE-RSA-CAMELLIA256-SHA     & SSLv3   & DH    &  RSA &Camellia(256)& SHA1   \\ \hline
115 0xC014 & ECDHE-RSA-AES256-SHA        & SSLv3   & ECDH  &  RSA &AES(256)     & SHA1   \\ \hline
116 0x0039 & DHE-RSA-AES256-SHA          & SSLv3   & DH    &  RSA &AES(256)     & SHA1   \\ \hline
117 0x0035 & AES256-SHA                  & SSLv3   & RSA   &  RSA &AES(256)     & SHA1   \\ \hline
118
119 \end{tabular}
120 \end{center}
121
122 \textbf{Compatibility}
123
124 Note that this cipher suites will not work with anything using Windows XP's
125 crypto stack (IE, Outlook), Java 6, Java 7 and Android 2.3. Java 7 could be
126 made compatible by installing the "Java Cryptography Extension (JCE) Unlimited
127 Strength Jurisdiction Policy Files" (JCE). We could not verify yet if
128 installing JCE also fixes the Java 7 DH-parameter length limitation (1024 bit). 
129
130
131
132 \subsection{Chosing your own cipher suites}
133 \label{section:ChosingYourOwnCipherSuites}
134 \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.}
135
136 %%% NOTE: we do not need to list this all here, can move to an appendix
137 %At the time of this writing, SSL is defined in RFCs:   
138 %
139 %\begin{itemize}
140 %\item RFC2246 - TLS1.0         
141 %\item RFC3268 - AES            
142 %\item RFC4132 - Camelia                
143 %\item RFC4162 - SEED           
144 %\item RFC4279 - PSK            
145 %\item RFC4346 - TLS 1.1                
146 %\item RFC4492 - ECC            
147 %\item RFC4785 - PSK\_NULL              
148 %\item RFC5246 - TLS 1.2                
149 %\item RFC5288 - AES\_GCM               
150 %\item RFC5289 - AES\_GCM\_SHA2\_ECC            
151 %\item RFC5430 - Suite B                
152 %\item RFC5487 - GCM\_PSK               
153 %\item RFC5489 - ECDHE\_PSK             
154 %\item RFC5932 - Camelia                
155 %\item RFC6101 - SSL 3.0                
156 %\item RFC6209 - ARIA           
157 %\item RFC6367 - Camelia                
158 %\item RFC6655 - AES\_CCM               
159 %\item RFC7027 - Brainpool Curves               
160 %\end{itemize}
161
162 \subsubsection{Overview of SSL Server settings}
163
164
165 Most Server software (Webservers, Mail servers, etc.) can be configured to prefer certain cipher suites over others. 
166 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.
167
168 Following Ivan Ristic's adivce we arrived at a categorisation of cipher suites.
169
170 \begin{center}
171 \begin{tabular}{| l | l | l | l | l|}
172 \hline
173 & Version   & Key\_Exchange  & Cipher    & MAC       \\ \hline
174 \cellcolor{green}prefer  & TLS 1.2   & DHE\_DSS   & AES\_256\_GCM   & SHA384        \\ \hline
175     &   & DHE\_RSA   & AES\_256\_CCM   & SHA256        \\ \hline
176     &   & ECDHE\_ECDSA   & AES\_256\_CBC   &       \\ \hline
177     &   & ECDHE\_RSA &   &       \\ \hline
178     &   &   &   &       \\ \hline
179 \cellcolor{orange}consider    & TLS 1.1   & DH\_DSS    & AES\_128\_GCM   & SHA       \\ \hline
180     & TLS 1.0   & DH\_RSA    & AES\_128\_CCM   &       \\ \hline
181     &   & ECDH\_ECDSA    & AES\_128\_CBC   &       \\ \hline
182     &   & ECDH\_RSA  & CAMELLIA\_256\_CBC  &       \\ \hline
183     &   & RSA   & CAMELLIA\_128\_CBC  &       \\ \hline
184     &   &   &   &       \\ \hline
185 \cellcolor{red}avoid   
186 & SSL 3.0   & NULL  & NULL  & NULL      \\ \hline
187     &   & DH\_anon   & RC4\_128   & MD5       \\ \hline
188     &   & ECDH\_anon & 3DES\_EDE\_CBC  &       \\ \hline
189     &   &   & DES\_CBC   &       \\ \hline
190     &   &   &   &       \\ \hline
191 \cellcolor{blue}{\color{white}special }
192 &   & PSK   & CAMELLIA\_256\_GCM  &       \\ \hline
193     &   & DHE\_PSK   & CAMELLIA\_128\_GCM  &       \\ \hline
194     &   & RSA\_PSK   & ARIA\_256\_GCM  &       \\ \hline
195     &   & ECDHE\_PSK & ARIA\_256\_CBC  &       \\ \hline
196     &   &   & ARIA\_128\_GCM  &       \\ \hline
197     &   &   & ARIA\_128\_CBC  &       \\ \hline
198     &   &   & SEED  &       \\ \hline
199 \end{tabular}
200 \end{center}
201
202 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.
203
204 %% NOTE: s/forward secrecy/perfect forward secrecy???
205
206 Note that the entries marked as ``special'' are cipher suites which are not common to all clients (webbrowsers etc).
207
208
209 \subsubsection{Tested clients}
210  
211 Next we tested the cipher suites above on the following clients:
212
213 %% NOTE: we need to test with more systems!!
214 \begin{itemize}
215 \item Chrome 30.0.1599.101 Mac OS X 10.9
216 \item Safari 7.0 Mac OS X 10.9
217 \item Firefox 25.0 Mac OS X 10.9
218 \item Internet Explorer 10 Windows 7
219 \item Apple iOS 7.0.3
220 \end{itemize}
221
222
223 The result of testing the cipher suites with these clients gives us a preference order as shown in table \ref{table:prefOrderCipherSuites}. 
224 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.
225
226 \begin{center}
227 \begin{table}[h]
228 \small
229     \begin{tabular}{|l|l|l|l|l|}
230     \hline
231     Pref & Cipher Suite                                   & ID         & Browser                     \\ \hline
232     1    & TLS\_DHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384     &     0x009f & OpenSSL command line client \\ \hline
233     2    & TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA384 &     0xC024 & Safari                      \\ \hline
234     3    & TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA384   &     0xC028 & Safari                      \\ \hline
235     4    & TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA256     &     0x006B & Safari, Chrome              \\ \hline
236     5    & TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA    &     0xC00A & Safari, Chrome, Firefox, IE \\ \hline
237     6    & TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA      &     0xC014 & Safari, Chrome, Firefox, IE \\ \hline
238     7    & TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA        &     0x0039 & Safari, Chrome, Firefox     \\ \hline
239     8    & TLS\_DHE\_DSS\_WITH\_AES\_256\_CBC\_SHA        &     0x0038 & Firefox, IE                 \\ \hline
240     9    & TLS\_DHE\_RSA\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0088 & Firefox                     \\ \hline
241     10   & TLS\_DHE\_DSS\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0087 & Firefox                     \\ \hline
242     \end{tabular}
243 \caption{Preference order of cipher suites}
244 \label{table:prefOrderCipherSuites}
245 \end{table}
246 \end{center}
247
248
249 Table \ref{table:prefOrderOpenSSLNames} shows the same data again with specifying the corresponding OpenSSL name.
250
251 \begin{center}
252 \begin{table}[h]
253 \small
254     \begin{tabular}{|l|l|l|}
255     \hline
256     Cipher Suite                                   & ID         & OpenSSL Name                  \\ \hline
257     TLS\_DHE\_RSA\_WITH\_AES\_256\_GCM\_SHA384     &     0x009f &         DHE-RSA-AES256-GCM-SHA384 \\ \hline
258     TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA384 &     0xC024 &     ECDHE-ECDSA-AES256-SHA384 \\ \hline
259     TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA384   &     0xC028 &     ECDHE-RSA-AES256-SHA384   \\ \hline
260     TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA256     &     0x006B &     DHE-RSA-AES256-SHA256     \\ \hline
261     TLS\_ECDHE\_ECDSA\_WITH\_AES\_256\_CBC\_SHA    &     0xC00A &     ECDHE-ECDSA-AES256-SHA    \\ \hline
262     TLS\_ECDHE\_RSA\_WITH\_AES\_256\_CBC\_SHA      &     0xC014 &     ECDHE-RSA-AES256-SHA      \\ \hline
263     TLS\_DHE\_RSA\_WITH\_AES\_256\_CBC\_SHA        &     0x0039 &     DHE-RSA-AES256-SHA        \\ \hline
264     TLS\_DHE\_DSS\_WITH\_AES\_256\_CBC\_SHA        &     0x0038 &     DHE-DSS-AES256-SHA        \\ \hline
265     TLS\_DHE\_RSA\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0088 &     DHE-RSA-CAMELLIA256-SHA   \\ \hline
266     TLS\_DHE\_DSS\_WITH\_CAMELLIA\_256\_CBC\_SHA   &     0x0087 &     DHE-DSS-CAMELLIA256-SHA   \\ \hline
267     \end{tabular}
268 \caption{Preference order of cipher suites, with OpenSSL names}
269 \label{table:prefOrderOpenSSLNames}
270 \end{table}
271 \end{center}
272
273 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.
274 If unsure, remove the cipher suites starting with ECDHE in the table above.
275
276
277 Based on this ordering, we can now define the corresponding settings for servers. We will start with the most common web servers.
278