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