6e7d7ce0f4aaf1ec99456cbfad7b090fac5f1c8b
[ach-master.git] / src / theory / cipher_suites / choosing.tex
1 %%\subsection{Choosing your own cipher suites}
2 %%\label{section:ChoosingYourOwnCipherSuites}
3
4 \todo{ Adi...  you want to describe how to make your own selection of cipher suites here.}
5
6 %%SSL/TLS cipher suites consist of a key exchange algorithm, an authentication, a
7 %%stream cipher (or a block cipher with a chaining mode) and a message authentication
8 %%mechanism.
9 %% ^^ commented out due to duplication (see previous section on architecture) - azet
10
11 Many of the parts in a cipher suite are interchangeable. Like the key exchange
12 algorithm in this example: \texttt{ECDHE-RSA-AES256-GCM-SHA384} and
13 \texttt{DHE-RSA-AES256-GCM-SHA384}.  To provide a decent level of security, all
14 algorithms need to be safe (subject to the disclaimer in section
15 \ref{section:disclaimer}).
16
17 Note: There are some very weak cipher suites in every crypto library, most of
18 them for historic reasons or due to legacy standards. The crypto export embargo
19 is a good example~\cite{Wikipedia:ExportCipher}.  For the following chapter
20 support of these low-security algorithms is disabled by setting
21 \texttt{!EXP:!LOW:!NULL} as part of the cipher string.
22
23 \todo{Team: do we need references for all cipher suites considered weak?}
24
25 \subsubsection{Key Exchange}
26
27 Many algorithms allow secure key exchange.  Those are RSA, DH, EDH, ECDSA,
28 ECDH, EECDH amongst others. During the key exchange, keys used for authentication
29 and symmetric encryption are exchanged. For RSA, DSA and ECDSA those keys are derived
30 from the server's public key.
31
32 \todo{explain this section}
33
34 \begin{center}
35 \begin{tabular}{llll}
36     \toprule
37           & \textbf{Key}  & \textbf{EC}  & \textbf{ephemeral} \\ \cmidrule(lr){1-4}
38    RSA    & RSA           & no           & no                 \\
39    DH     & RSA           & no           & no                 \\
40    EDH    & RSA           & no           & yes                \\
41    ECDH   & both          & yes          & no                 \\
42    EECDH  & both          & yes          & yes                \\
43    DSA    & DSA           & no           & no                 \\
44    ECDSA  & DSA           & yes          & no                 \\
45 \bottomrule
46 \end{tabular}
47 %disabled: \texttt{!PSK:!SRP}
48 \end{center}
49
50 \textbf{Ephemeral Key Exchange} uses different keys for authentication (the server's RSA
51 key) and encryption (a randomly created key). This advantage is called ``Forward
52 Secrecy'' and means that even recorded traffic cannot be decrypted later when someone
53 obtains the server key.
54
55 All ephemeral key exchange schemes are based on the Diffie-Hellman algorithm and require
56 pre-generated Diffie-Hellman parameter (which allow fast ephemeral key generation). It
57 is important to note that the Diffie-Hellman parameter settings need to reflect at least 
58 the security (speaking in number of bits) as the RSA host key. \todo{add reference!}
59
60
61 \textbf{Elliptic Curves} (see section \ref{section:EllipticCurveCryptography})
62 required by current TLS standards only consist of the so-called NIST-curves
63 (\texttt{secp256r1} and \texttt{secp384r1}) which may be weak because the
64 parameters that led to their generation were not properly explained by the
65 authors~\cite{DJBSC}. Disabling support for Elliptic Curves leads to no
66 ephemeral key exchange being available for the Windows platform. When you
67 decide to use Elliptic Curves despite the uncertainty, make sure to at least
68 use the stronger curve of the two supported by all clients
69 (\texttt{secp384r1}).
70
71
72 Other key exchange mechanisms like Pre-Shared Key (PSK) are irrelevant for
73 regular SSL/TLS use.
74
75 \subsubsection{Authentication}
76
77 RSA, DSA, DSS, ECDSA, ECDH
78
79 During Key Exchange the server proved that he is in control of the private key
80 associated with a certain public key (the server's certificate). The client
81 verifies the server's identity by comparing the signature on the certificate
82 and matching it with its trust database. For details about the trust model of
83 SSL/TLS please see \ref{section:PKIs}.
84
85 In addition to the server providing its identity, a client might do so as well.
86 That way mutual trust can be established. Another mechanism providing client
87 authentication is Secure Remote Password (SRP)\todo{reference}. All those
88 mechanisms require special configuration.
89
90 Other authentication mechanisms like Pre Shared Keys are not used in SSL/TLS.
91 Anonymous sessions will not be discussed in this paper.
92
93 \texttt{!PSK:!aNULL}
94
95 \subsubsection{Encryption}
96
97 AES, CAMELLIA, SEED, ARIA(?), FORTEZZA(?)...
98
99 Other ciphers like IDEA, RC2, RC4, 3DES or DES are weak and therefore not recommended:
100 \texttt{!DES:!3DES:!RC2:!RC4:!eNULL}
101
102 \subsubsection{Message authentication}
103
104 SHA-1 (SHA), SHA-2 (SHA256, SHA384), AEAD
105
106 Note that SHA-1 is considered broken and should not be used. SHA-1 is however the
107 only still available message authentication mechanism supporting TLS1.0/SSLv3. Without
108 SHA-1 most clients will be locked out.
109
110 Other hash functions like MD2, MD4 or MD5 are unsafe and broken: \texttt{!MD2:!MD4:!MD5}
111
112 \subsubsection{Combining cipher strings}
113 %% reference 'man ciphers' and 'openssl ciphers' and show some simple examples
114 %% VERY IMPORTANT: hint at the IANA-list and the differences in implementations
115
116 \todo{ Adi...  The text below was simply the old text, still left here for reference.}
117
118 %%% NOTE: we do not need to list this all here, can move to an appendix
119 %At the time of this writing, SSL is defined in RFCs:   
120 %
121 %\begin{itemize*}
122 %\item RFC2246 - TLS1.0         
123 %\item RFC3268 - AES            
124 %\item RFC4132 - Camelia                
125 %\item RFC4162 - SEED           
126 %\item RFC4279 - PSK            
127 %\item RFC4346 - TLS 1.1                
128 %\item RFC4492 - ECC            
129 %\item RFC4785 - PSK\_NULL              
130 %\item RFC5246 - TLS 1.2                
131 %\item RFC5288 - AES\_GCM               
132 %\item RFC5289 - AES\_GCM\_SHA2\_ECC            
133 %\item RFC5430 - Suite B                
134 %\item RFC5487 - GCM\_PSK               
135 %\item RFC5489 - ECDHE\_PSK             
136 %\item RFC5932 - Camelia                
137 %\item RFC6101 - SSL 3.0                
138 %\item RFC6209 - ARIA           
139 %\item RFC6367 - Camelia                
140 %\item RFC6655 - AES\_CCM               
141 %\item RFC7027 - Brainpool Curves               
142 %\end{itemize*}
143
144 %\subsubsection{Overview of SSL Server settings}
145 %
146 %
147 %Most Server software (Webservers, Mail servers, etc.) can be configured to prefer certain cipher suites over others. 
148 %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.
149 %
150 %Following Ivan Ristic's adivce we arrived at a categorisation of cipher suites.
151 %
152 %\begin{center}
153 %\begin{tabular}{lllll}
154 %\cmidrule[\heavyrulewidth]{2-5}
155 %& \textbf{Version}   & \textbf{KeyEx} & \textbf{Cipher}    & \textbf{MAC}       \\\cmidrule(lr){2-5}
156 %\cellcolor{green}prefer  & TLS 1.2   & DHE\_DSS   & AES\_256\_GCM   & SHA384        \\
157 %    &   & DHE\_RSA   & AES\_256\_CCM   & SHA256        \\
158 %    &   & ECDHE\_ECDSA   & AES\_256\_CBC   &       \\
159 %    &   & ECDHE\_RSA &   &       \\ 
160 %    &   &   &   &       \\
161 %\cellcolor{orange}consider    & TLS 1.1   & DH\_DSS    & AES\_128\_GCM   & SHA       \\
162 %    & TLS 1.0   & DH\_RSA    & AES\_128\_CCM   &       \\
163 %    &   & ECDH\_ECDSA    & AES\_128\_CBC   &       \\ 
164 %    &   & ECDH\_RSA  & CAMELLIA\_256\_CBC  &       \\
165 %    &   & RSA   & CAMELLIA\_128\_CBC  &       \\
166 %    &   &   &   &       \\
167 %\cellcolor{red}avoid   
168 %& SSL 3.0   & NULL  & NULL  & NULL      \\
169 %    &   & DH\_anon   & RC4\_128   & MD5       \\
170 %    &   & ECDH\_anon & 3DES\_EDE\_CBC  &       \\
171 %    &   &   & DES\_CBC   &       \\
172 %    &   &   &   &       \\
173 %\cellcolor{blue}{\color{white}special }
174 %&   & PSK   & CAMELLIA\_256\_GCM  &       \\
175 %    &   & DHE\_PSK   & CAMELLIA\_128\_GCM  &       \\
176 %    &   & RSA\_PSK   & ARIA\_256\_GCM  &       \\
177 %    &   & ECDHE\_PSK & ARIA\_256\_CBC  &       \\
178 %    &   &   & ARIA\_128\_GCM  &       \\
179 %    &   &   & ARIA\_128\_CBC  &       \\
180 %    &   &   & SEED  &       \\
181 %\cmidrule[\heavyrulewidth]{2-5}
182 %\end{tabular}
183 %\end{center}
184 %
185 %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.
186 %
187 %%% NOTE: s/forward secrecy/perfect forward secrecy???
188 %
189 %Note that the entries marked as ``special'' are cipher suites which are not common to all clients (webbrowsers etc).
190 %
191 %
192 %\subsubsection{Tested clients}
193
194 %Next we tested the cipher suites above on the following clients:
195 %
196 %%% NOTE: we need to test with more systems!!
197 %\begin{itemize*}
198 %\item Chrome 30.0.1599.101 Mac OS X 10.9
199 %\item Safari 7.0 Mac OS X 10.9
200 %\item Firefox 25.0 Mac OS X 10.9
201 %\item Internet Explorer 10 Windows 7
202 %\item Apple iOS 7.0.3
203 %\end{itemize*}
204 %
205 %
206 %The result of testing the cipher suites with these clients gives us a preference order as shown in table \ref{table:prefOrderCipherSuites}. 
207 %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.
208 %
209 %\begin{table}[h]
210 %\centering\small
211 %    \begin{tabular}{cllcccc}
212 %    \toprule
213 %    \textbf{Pref}   & \textbf{Cipher Suite}                            & \textbf{ID}   & \multicolumn{4}{l}{\textbf{Supported by}}\\ 
214 %    \cmidrule(lr){4-7}
215 %                    & \textbf{OpenSSL Name}                            &               & Chrome & FF   & IE   & Safari \\
216 %    \cmidrule(lr){1-7}
217 %    \phantom{0}1    & \verb|TLS_DHE_RSA_WITH_AES_256_GCM_SHA384|     & \verb|0x009f| & \no    & \no  & \no  & \no    \\
218 %                    & \verb|DHE-RSA-AES256-GCM-SHA384|                      &               & &&&\\\rowcolor{lightlightgray}
219 %    \phantom{0}2    & \verb|TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384| & \verb|0xC024| & \no    & \no  & \no  & \yes   \\\rowcolor{lightlightgray}
220 %                    & \verb|ECDHE-ECDSA-AES256-SHA384|                      &               & &&&\\
221 %    \phantom{0}3    & \verb|TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384|   & \verb|0xC028| & \no    & \no  & \no  & \yes   \\
222 %                    & \verb|ECDHE-RSA-AES256-SHA384|                        &               & &&&\\\rowcolor{lightlightgray}
223 %    \phantom{0}4    & \verb|TLS_DHE_RSA_WITH_AES_256_CBC_SHA256|     & \verb|0x006B| & \yes   & \no  & \no  & \yes   \\\rowcolor{lightlightgray}
224 %                    & \verb|DHE-RSA-AES256-SHA256|                          &               & &&&\\
225 %    \phantom{0}5    & \verb|TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA|    & \verb|0xC00A| & \yes   & \yes & \yes & \yes   \\
226 %                    & \verb|ECDHE-ECDSA-AES256-SHA|                         &               & &&&\\\rowcolor{lightlightgray}
227 %    \phantom{0}6    & \verb|TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA|      & \verb|0xC014| & \yes   & \yes & \yes & \yes   \\\rowcolor{lightlightgray}
228 %                    & \verb|ECDHE-RSA-AES256-SHA|                           &               & &&&\\
229 %    \phantom{0}7    & \verb|TLS_DHE_RSA_WITH_AES_256_CBC_SHA|        & \verb|0x0039| & \yes   & \yes & \no  & \yes   \\
230 %                    & \verb|DHE-RSA-AES256-SHA|                             &               & &&&\\\rowcolor{lightlightgray}
231 %    \phantom{0}8    & \verb|TLS_DHE_DSS_WITH_AES_256_CBC_SHA|        & \verb|0x0038| & \no    & \yes & \yes & \no    \\\rowcolor{lightlightgray}
232 %                    & \verb|DHE-DSS-AES256-SHA|                             &               & &&&\\
233 %    \phantom{0}9    & \verb|TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA|   & \verb|0x0088| & \no    & \yes & \no  & \no    \\
234 %                    & \verb|DHE-RSA-CAMELLIA256-SHA|                        &               & &&&\\\rowcolor{lightlightgray}
235 %    \phantom{}10    & \verb|TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA|   & \verb|0x0087| & \no    & \yes & \no  & \no    \\\rowcolor{lightlightgray}
236 %                    & \verb|DHE-DSS-CAMELLIA256-SHA|                        &               & &&&\\
237 %   \bottomrule
238 %    \end{tabular}
239 %\caption{Preference order of cipher suites.  All suites are supported by OpenSSL.}
240 %\label{table:prefOrderCipherSuites}
241 %\end{table}
242 %
243 %Note: the above table \ref{table:prefOrderCipherSuites} contains Elliptic curve key exchanges. There are currently strong doubts\footnote{\url{http://safecurves.cr.yp.to/rigid.html}} concerning ECC.
244 %If unsure, remove the cipher suites starting with ECDHE in the table above.
245 %
246 %
247 %Based on this ordering, we can now define the corresponding settings for servers. We will start with the most common web servers.