Merge branch 'master' of https://git.bettercrypto.org/ach-master
[ach-master.git] / presentations / HACK.LU-2014 / presentation / agenda.md
1 % Bettercrypto - Applied Crypto Hardening for Sysadmins
2 % L. Aaron Kaplan <kaplan@cert.at> ;  David Durvaux <david.durvaux@gmail.com>; Aaron Zauner <azet@azet.org>
3 % 2014/10/21
4 ---------------------------
5
6
7
8 # Part 1:  Intro to the project
9
10
11 ![logo](img/logo)
12
13
14 ---
15 # Overview 
16
17   1. Intro & Motivation
18   2. How we got started, how we work, what's there, what's missing, 
19      how to use the guide
20   3. History of Crypto in a nutshell
21   4. Theory
22   4. 10:10 __break__
23   5. Theory (cont.)
24   6. Attacks
25   7. Current trends (IETF, ...)
26   7. wrap up
27   9. 11:45 __lunch__
28     
29
30 # Prerequisites
31
32   * Participants should have a basic knowledge of System administration and be
33 familiar with configuring Apache, nginx, etc.
34   * know git/github
35   * a basic knowledge of crypto will help.
36
37 # Motivation
38
39 ![NSA](img/nsa.png)
40
41 # Motivation (2)
42
43 Please note:
44
45   * the leaks also revealed to non-democratic countries precise recipies on how to do country wide or even Internet-wide surveillance, traffic inspection and -modification, etc.
46   * If politicians in other countries did not know how to do this, now they know!
47   * If criminals did not know how to do this, now they know!
48
49 # The reaction
50
51 \centering { \textbf{Don't give them anything for free}\par
52   It's your home, you fight! }
53
54
55 # The reaction (2)
56
57   * We as humans are used to certain **modes** in communications:
58 spoken words tend to:
59     * be forgotten over time ("data expires")
60     * get modified/changed whenever "copied" (repeated)
61     * get changed/modified over time  ("forgetfullness")
62     * we tend to be not so harsh about them ("forgive")
63     * have a limited geographic range ("town talk")
64     * be very decentralized ("accoustic range")
65   * digital traces/data tends to be:
66     * stored for ever. Never modified by default
67     * used against you in the future
68     * very centralized
69     * copied very easily
70     * always searchable in O(log(n)) 
71     
72   
73 # The reaction (3)
74
75 \centering { \textbf{Crypto is the only thing that might still help}
76 \par
77 a.k.a.:\par
78         ``\textit{The Bottom Line Is That Encryption Does Work}'', Edward Snowden
79 }
80
81 # But where?
82
83   * Ca. August 2013: Adi Kriegisch asks Aaron where he could find good recommendations on SSL settings.
84   * Does that exist? At that time:
85     - no ssllabs cookbook
86     - only theoretical recommendations (ENISA, eCrypt II, NIST)
87     - ioerror's duraconf settings are outdated
88     - no practical copy & paste-able settings exist?
89
90
91 # Project plan
92
93 ![Project plan](img/metalab-world-domination.jpg)
94
95
96 # Project plan  (srsly)
97
98   * Do at least something against the **Cryptocalypse**
99   * Check SSL, SSH, PGP crypto SeIngs in the most common services and certificates:
100     –  Apache, Nginx, lighthNp
101         –  IMAP/POP servers (dovecot, cyrus, ...) –  openssl.conf
102         –  Etc.
103   * Write down our experinces as guide
104   * Create easy, copy & paste-able settings which are "OK" (as far as we know) for sysadmins.
105   * Keep the guide short. There are many good recommendations out there written by cryptographers for cryptographers
106   * Many eyes must check this!
107   * Make it open source
108
109   
110
111
112 # Why is this relevant for you?
113
114   * You run networks and services. These are targets. If you believe it or not.
115   * You produce code. Make sure it uses good crypto coding practices
116
117   * However good crypto is hard to achieve
118   * Crypto does not solve all problems, but it helps
119
120
121 # Who?
122
123 Wolfgang Breyha (uni VIE), David Durvaux (CERT.be), Tobias Dussa (KIT-CERT), L. Aaron Kaplan (CERT.at), Christian Mock (coretec), Daniel Kovacic (A-Trust), Manuel Koschuch (FH Campus Wien), Adi Kriegisch (VRVis), Ramin Sabet (A-Trust), Aaron Zauner (azet.org), Pepi Zawodsky (maclemon.at), IAIK, A-Sit, ...  
124
125
126 # Contents so far
127
128   * Intro
129   * Disclaimer 
130   * Methods 
131   * Theory
132     * Elliptic Curve Cryptography 
133     * Keylengths 
134     * Random Number Generators 
135     * Cipher suites – general overview & how to choose one
136   * Recommendations on practical settings 
137   * Tools 
138   * Links 
139   * Appendix
140
141
142 # Methods and Principles
143
144 C.O.S.H.E.R principle:
145   * **C**ompletely
146   * **O**pen 
147   * **S**ource
148   * **H**eaders
149   * **E**ngineering and
150   * **R**esearch
151
152 Methods:
153   * Public review
154   * commits get **discussed**
155   * recommendations **need** references (like wikipedia)
156   * Every commit gets logged & we need your review!
157
158 # How to commit
159
160   * https://git.bettercrypto.org (master, read-only)
161   * https://github.com/BetterCrypto/ (please clone this one & send PRs)
162
163 How?
164   1. discuss the changes first on the mailinglist
165   2. clone 
166   3. follow the templates 
167   3. send pull requests
168   3. **split the commit into many smaller commits **
169   4. don't be cross if something does not get accepted. 
170   5. be ready for discussion
171  
172 # History part
173
174 Pre-history
175   * Scytale (7h century BC)
176   * Caesar 
177   * Vigenère (in a cifra del. Sig. Giovan Battista Bellaso, 1533)
178
179 ![Scytale](img/scytale.png)
180
181 How you can loose your head
182   * Mary Queen of Scots (1542 - 1587)
183     * Queen of Scotland until 1567
184     * Try to regain the throne 
185     * Was found guilty of plotting to assassinate Queen Elizabeth I of England
186     * Prooven after his code get broken...
187
188 ![Mary](img/mary.jpg)
189
190 How it change a war
191   * II World War
192     * Enigma in use by German Army
193     * Broken by the first comuter (Alan Turing)
194     * Sign the end of U-Boat supremacy on the sea
195
196 ![Enigmae](img/enigma.jpg)
197
198 A sort of Steganography 
199   * Navajos Code Talkers (Pacific War - US Navy)
200
201 ![Navajo](img/navajo.jpg)
202
203 Nowadays
204   * Asymetric cryptography
205     * RSA (River - Shamir - Adleman) - 1977
206     * GPG (Phil Zimmerman) - 1991
207   * AES (Rijdael) - 1998
208
209 Famous names
210   * Cryptography was an hot topic for a lot of people
211     * Thomas Jefferson (1790) - ciphering cylinder (used for 150 years)
212     * Charles Babbage - break the Vigenère Cipher (1854, unknown until 20th Century)
213     * Gilbert S. Vernam (AT&T, 1917) - polyalphatic cipher with random key without repetition
214       * Only ciphersuite impossible to break both in theory and in practice!
215
216 XXX FIXME David add stuff XXX
217
218 # Theory part
219
220 \[
221  \hbar \frac{\partial}{\partial t}\Psi = \hat H \Psi
222 \]
223
224
225 # Some thoughts on ECC
226
227   * Currently this is under heavy debate
228   * Trust the Math
229     * eg. NIST P-256 (http://safecurves.cr.yp.to/rigid.html)
230     * Coefficients generated by hashing the unexplained seed c49d3608 86e70493 6a6678e1 139d26b7 819f7e90.
231   * Might have to change settings tomorrow
232   * Most Applications only work with NIST-Curves
233   * Bottom line: we leave the choice of ECC yes or no to the reader. You might have to adapt again.
234   * However, many server operators tend towards ECC  (speed)
235
236 # Keylengths
237
238   * http://www.keylength.com/ 
239   * Recommended Keylengths, Hashing algorithms, etc.
240   * Currently:
241     * RSA: >= 3248 bits (Ecrypt II)     
242     * ECC: >= 256       
243     * SHA 2+ (SHA 256,…)
244     * AES 128 is good enough
245
246 # AES 128? Is that enough?
247
248 \centering{,,On the choice between AES256 and AES128: I would never consider using AES256, just like I don’t wear a helmet when I sit inside my car. It’s too much bother for the epsilon improvement in security.''\par
249 — Vincent Rijmen in a personal mail exchange Dec 2013
250 }
251   * Some theoretical attacks on AES-256
252
253
254 # (Perfect) Forward Secrecy
255
256 Motivation:
257
258 * Three letter agency (TLA) stores all ssl traffic
259 * Someday TLA gains access to ssl-private key (Brute Force, Physical Force)
260 * TLA can decrypt all stored traffic
261
262 Solution:
263 * **Ephemeral** session keys via Diffie Hellman (**DHE**)
264
265 # Review of Diffie Hellman
266
267 Let g be a primitive root mod p. p is a Prime.
268
269 Alice to Bob: \[ X = g^x \mod p  \]
270 Bob to Alice:  \[ Y = g^y \mod p  \]
271 Alice calculates: \[  k_1 = Y^x \mod p \]
272 Bob calculates:   \[ k_2 = X^y \mod p  
273 \text{. Therefore, } k_1 = k_2 \]
274
275 Proof:
276 \[ k_1 = Y^x = (g^y)^x = g^{(x*y)} = (g^x)^y = X^y = k_2  \mod p \qed \]
277
278
279 # Reality 
280
281 \centerline{\includegraphics[width=2cm]{img/xkcd-TLA.png}}
282
283 # Well...
284
285 We still recommend perfect forward secrecy.
286
287  * Ephemeral: new key for each execution of a key exchange process
288  * SSL private-Key only for authentication
289  * Alternative new ssl private key every x days months
290  * Pro:
291     - Highest Security against future attacks
292  * Contra: 
293     - Elliptic Curve
294     - Processing costs
295
296 # (P)RNGs
297
298   * (P)RNGs **are** important!
299   * Nadia Heninger et al / Lenstra et al
300 ,,… to identify apparently vulnerable devices from 27 manufacturers.''
301 ![mining P's and Q's](img/mining-ps-and-qs.png)
302   * Entropy after startup: embedded devices quite bad
303
304
305 # (P)RNGs - recommendations
306   * Look out for known weak RNG
307     * Dual EC_DRBG is weak (slow, used in RSA-toolkit)
308     * Intel RNG ? Recommendation: add System-Entropy (Network). Entropy only goes up.
309   * Use tools (e.g. haveged/HaveGE http://dl.acm.org/citation.cfm?id=945516)
310   * RTFM 
311     * when is the router key generated
312     * Default Keys ?
313   * Re-generate keys from time to time
314
315
316 # Attacks
317
318 Overview:
319   * BEAST
320   * ...
321
322 XXX FIXME: azet .... XXX
323
324
325
326
327 # Cipher suites
328
329   * What is a SSLCipherSuite?
330   * vs. SSLProtocol
331
332   * Example:
333
334         SSLProtocol All -SSLv2 -SSLv3
335         SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'
336
337 # Some general thoughts on settings
338
339   * General:
340     * Disable SSL 2.0 (weak algorithms)
341     * Disable SSL 3.0 (BEAST vs IE/XP)
342     * Enable TLS 1.0 or better
343     * Disable TLS-Compression (SSL-CRIME Attack)
344     * Implement HSTS (HTTP Strict Transport Security)
345   * Variant A: fewer supported clients
346   * Variant B: more clients, weaker settings
347
348
349
350 # Variant **A**
351
352     EECDH+aRSA+AES256:EDH+aRSA+AES256:!SSLv3
353
354 ![Variant A](img/variantA.png)
355
356 Compatibility: 
357
358 Only clients which support TLS1.2 are covered by these cipher suites (Chrome 30, Win 7 and Win 8.1, Opera 17, OpenSSL >= 1.0.1e, Safari 6 / iOS 6.0.1, Safari 7 / OS X 10.9) 
359
360 # Variant **B**
361
362   * weaker ciphers, many clients 
363
364 ![Variant B](img/variantB.png)
365
366 # Variant B compatibility
367
368 ![Compatibility](img/variantBcompatibility.png)
369
370 # Choosing your own CipherSuite string
371
372   * Rolling your own cipher suite string involves a trade-off between:
373     * Compatibility (server <-> client), vs.
374     * Known weak ciphers/hashes/MACs
375     * The choice ECC or not, vs.
376     * Support by different ssl libs (gnutls, openssl,...) vs.
377     * Different versions of ssl libs
378   * In case of ssl lib version issues: do you want to re-compile the whole server for a newer version?
379   * Be aware of these issues before choosing your own cipher suite. Have test suites!
380
381
382 # Choosing your own CipherSuite string (2)
383
384   * Complexity 
385   * It is a multi-dimensional optimisation problem
386   * Consider strong alternativesto de-facto standards (pros/cons - CAMELLIA vs. AES)
387   * _WISHLIST_: generator for settings? click-dropdown boxes on the webserver -> gernate config
388
389 # Practical settings
390
391 ![Tools](img/rusty_tools.jpg)
392
393 # What we have so far
394
395 * Web server: Apache, nginx, MS IIS, lighttpd
396 * Mail: Dovecot, cyrus, Postfix, Exim
397 * DBs: Mysql, Oracle, Postgresql, DB2
398 * VPN: OpenVPN, IPSec, Checkpoint, ...
399 * Proxies: Squid, Pound
400 * GnuPG
401 * SSH
402 * IM servers (jabber, irc)
403 * _DANE_
404 * _Configuration code snippets_
405
406
407 # What are we missing
408
409 _WISHLIST_:
410
411   * Mail: Exchange, Sendmail
412   * SIP
413   * RDP
414
415   * Everything as HTML (easier to copy & paste)
416   * Config generator on the website
417
418
419
420
421 # Example Apache
422
423