Merge branch 'master' of github.com:sebix/Applied-Crypto-Hardening into sebix-master
[ach-master.git] / TODO.md
1
2 BIG TOPICS
3 ==========
4
5
6 * be consistent: 2048 RSA < 128 bit symmetric cipher strength. We should aim at 128+ bits symmetric strength. --> fix RSA 2048 in the document. Upgrade to 3072
7
8 * clean up 9.5 "chossing your own cipher"
9
10 * DDOS possibilities when we increase cyrpto security?? What about that? (--> LATER)
11
12 * write a Justification section to every setting, maybe have that later in the document. 
13
14 * more focus on these sections:
15   - GPG
16   - SSH : do we need a client subsection? 
17
18 DONE * move the explanations to a later part of the document. Code snippets go *first* . The target group is sysadmins, must be easily copy & paste-able. Or find a different way so that they can easily use/read the document
19
20 DONE * Decide/Discuss recommended ciphers:
21   - DH parameters: what is our recommendation? >2048? >=2048? leave default (aka 1024)?
22   --> answer: we trust IETF/IKE  as described in ECRYPT2
23
24 * comments from IAIK integrate (--> Aaron, check again if it was done)
25 DONE * SHA-1 section: write why it is a problem (--> Florian Mendel)
26 * PKI section (--> Thomas Schreck)
27 DONE * include OpenSSL names/IANA names into appendix (--> cm)
28 * Document RNG problem in Apache (--> Pepi)
29 DONE * Oracle ?? (--> Berg?? maybe . Or aaron: ask nic.at. Or link to T-Systems paper) --> T-Systems paper
30 DONE * DB2 (--> Berg. Or ask MLeyrer)
31 * Add AES128 to cipherStringA ?
32 * re-work chapter 2 (practical settings). Add lots of references to chapter 3 to get people interested in reading the theory.
33 * Document : add license
34
35 * compare gv.at Richtlinien with our recommendations.
36
37 Website
38 =======
39 People with outdated browsers (winXP) etc can't see our webpage. --> make a landing page explaining 
40 how to updated the browser :)
41
42
43 Formatting
44 ==========
45
46 * check all http:// URLs that we reference - check if they are also reachable via httpS:// and if so, change our reference
47 * make style guide
48 DONE * one-column layout: make page margins smaller
49 DONE * add large "DRAFT" letters on top of every page.
50 DONE  make the git version number part of the document
51 DONE * Layout of sample code (lstisting format) : make it pretty!
52 Rendering in Firefox (inline) on Windows seems to be really messed up. What happenened?
53
54 * make every section like the Apache section (--> Aaron)
55
56 * make a HTML Version of the document. It is much easier to copy & paste from than from PDFs.
57 * Add Timestamp and git shorthash, not only date, to the title page of the document. Easier to check if you version of the document is current!
58
59 * \usepackage[utf8]{inputencoding} and all the other \usepackage things in applied-crypto-hardening.tex should be reviewed and we should take a look if it should't all be in common/\*.tex
60
61 * check epigraph: why is the "---" gone? Is it gone?
62
63
64 Formats to export
65 =================
66 Requested by many people on Twitter
67     * Plain TXT version for use on headless servers
68     * HTML version for better reading in browsers and always up-to-date
69     * EPUB version for comfortable reading on tablets and ebook readers
70
71
72 Workflow
73 ========
74
75 * how to keep things up to date?
76 * how to automatically test  compatibility?
77 * how to make sure that this document has the latest information on cipher strengths?
78 * !! GPG sign every PDF !!
79 * store the keys in DNS: see RFC 4398
80
81
82 Contents
83 ========
84
85 * disclaimer.tex:
86   add "we don't deal with ICS devices. Nonono"
87  
88 * CipherStringB: 
89   src/commons/cipherstringb.tex --> remove the "!SRP"
90
91 * Mailserver.tex:
92   Add "Dovecot" in front of 2.0.19apple1 
93   Postfix section: smtpd_tls_loglevel = 1 instead of = 0
94
95 * DBs:
96   Postgresql: put in \%*\cipherstringB*) in the config!
97   Mysql: put in \%*\cipherstringB*) in the config!
98   Oracle: mark this as "we do not test this here, since we only reference other papers for Oracle so far"
99   DB2: mark this as "we do not test this here, since we only reference other papers for Oracle so far"
100   sed -i /IMB Db2/IBM DB2/g
101
102 * theory/PKI.tex line 120: "a previously created certificate" --> "a previously created key"!
103
104
105 * Webservers:
106   Header Strict-Transport-Security "... includeSubDomains": we need to meed to mention that this can be a big pitfall.
107   Also do some more research on this!
108   For example: http://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec#section-6.1
109   fix lighttpd HTTP redirection and env vars
110   lighthttpd: ssl.ec-curve = "secp384"
111     ssl.dh-file = "/etc/lighttpd/dhparams-group16.pem"
112         ssl.ec-curve = "secp384r1"
113
114 * GPG.tex:
115   keep it "Howto" not "How-to"
116
117 * IM:
118   fix the subsubsection{XMPP/ Jabber} part. There seems to be a mix up here ? Maybe? --> check again
119
120 * SSH:
121   openssh - remark that ServerKeyBits  might still be useful. Add a note that sometimes old keys are very very old and 1024 bits. 
122
123 * Tools: 
124   mention that sslscan (the tool) does not understand all cipherstrings! For example SHA2-\* is missing
125   --> recommend something better
126
127   - tools -> section SSL \& TLS: "lever your https" --> that's not a sentence. Fix it
128   - make this more uniform: the \url in the itemized list should always be either always at the beginnig or always at the end. 
129
130 * theory/DH.tex
131   check the formatting of \cite[chapter16]{ii2011ecrypt}
132   same section: group 19-21 (256--521 bit ECC )... we need to mention it! We can not ignore it!
133
134 * cipher\_suites/architecture.tex:
135    IANA nomencalture part: make a reference to the appendix here
136
137 * .gitignore: add title.log
138
139
140 * epigraph balance between freedom and security is a delicate one --> remove this epigraph. It's not so fitting.
141
142
143 * re-write PKI section: make it *much* shorter. Reference: https://www.cs.auckland.ac.nz/~pgut001/pubs/pkitutorial.pdf and 
144   https://en.wikipedia.org/wiki/X.509#Problems_with_certificate_authorities.
145
146 * scan our local region of the internet for https/smtp/imaps/pop3s
147
148 * Common Pitfalls: 
149   - key generation
150   - key management , key life cycle
151   - cloning of VMs
152   - common / default passphrases
153 * DH parameter?
154 * Further research
155  - mysql, SMB, 
156 * Wish List for software vendors?
157 * sweet spot, wo koennen wir was sinnvoll machen, was waere zu viel (8192 bit keys...)
158
159
160 1. document the abstract needs that we have for the cipher settings (HSTS etc)
161    Then find the best cipher setting strings per se
162    Only then put it to all servers and keep it rather uniformely (as much as possible)
163
164 2. Test all settings 
165
166 * Test especially with non-Debian-OS!
167
168 * Test with more clients and other OSes than OSX / iPhone!!
169 --> clients? 
170   - thunderbird
171   - Apple Mail?
172   - Outlook *
173   - Playstation und XBox? --> LATER!
174   - Lotus Notes
175   - Blackberry\*
176   - Windows Phone 7 ???
177   How to Test?
178   - chapter owner makes a test setup
179   - tested by: XXX , on: $date. Screenshot of SSLlabs/ $testtool. (checktls.com)
180
181 * document (cite) EVERYTHING! Why we chose certain values. References, references, references. Otherwise it does not count!
182   Srsly!!
183 DONE * .bib file is completely wrong. Make good citations/references. Add books: Schneier, ...
184 * !! important: add the version string to everything that we tested!!
185
186 * two target groups:
187   - security specialists / freaks who want the very best settings
188   - should as many clients work with the settings as possible
189 * look at TLS1.2 specs and really check if we want all of these settings
190
191
192 Practical settings section
193 ----------
194 Definitely still missing these subsubsections:
195 * Exchange Server ??  (--> bei M$ angefragt, Evtl. Beitrag von A-Trust)
196   - SMTP, POP, IMAP
197 DONE * Exim4 (-> Adi & Wolfgang Breya)
198 DONE * Checkpoint (-> cm)
199 * Asa / Palo Alto (-> Azet)
200 * Terminal Server (VNC ), ??
201 DONE * Squid
202 DONE * XMPP
203   --> verweise auf die xmpp community bzw. auf xmpp.net verweisen.
204   Empfehlung: unbedingt ejabberd updaten!!  
205
206
207 ----- snip ---- all protocols that we looked at --- snip ----
208 * whatsapp --> man kann nichts machen, out of scope
209 * Lync: == SIP von M$. 
210 * Skype: man kann ncihts machen, out of scope.
211 * Wi-Fi APs, 802.1X, ... ???? --> out of scope
212 * Tomcats/...????
213 * VPNs          ???
214   * PPTP
215   * Cisco IPSec
216   * Juniper VPN
217   * L2TP over IPSec -> egal
218 * SIP   -> Klaus
219 * SRTP  -> Klaus???
220 * DNSSec ??     Verweis auf BCPxxx      --> out of scope
221    - DANE
222 What happens at the IETF at the moment?
223 * TOR?? --> out of scope
224 * S/Mime --> nachsehen, gibt es BCPs? (--> Ramin)
225 * TrueCrypt, LUKS, FileVault, etc ---> out of scope
226 * AFS -> out of scope
227 * Kerberos --> out of scope
228 * NNTP -> out of scope
229 * NTPs tlsdate -> out of scope
230 * BGP / OSPF --> out of scope
231 * irc,silc --> out of scope
232 !! * IPMI/ILO/RAC: Java --> important. Empfehlung: nie ins Internet, nur in ein eigenes mgmt VLAN, das via VPN erreichbar ist!!
233 * LDAP -> out of scope
234 * RADIUS? -> maybe later...
235 * Moxa , APC, und co... ICS . Ethernet to serial --> out of scope
236 * telnet -> DON't!!! 
237 * rsyslog --> out of scope
238 * ARP bei v6 spoofing -> out of scope
239 * tinc?? -> out of scope
240 * rsync -> nur ueber ssh fahren ausser public web mirrors
241 * telnets -> out of scope
242 * ftps -> out of scope
243 !! * seclayer-tcp --> review von Posch & co.
244 seclayer-tcp    3495/udp    # securitylayer over tcp
245 seclayer-tcp    3495/tcp    # securitylayer over tcp
246 * webmin -> maybe
247 * plesk -> out of scope
248 * phpmyadmin --> haengt am apache, out of scope
249 * DSL modems -> out of scope
250 * UPnP, natPmp --> out of scope
251 * SAML federated auth providers (e.g., all the REFEDS folks (https://refeds.org/)), including InCommon (http://www.incommon.org/federation/metadata.html)
252   https://wiki.shibboleth.net/confluence/display/SHIB2/TrustManagement (idea by Joe St. Sauver)
253
254 ----- snip ---- all protocols that we looked at --- snip ----
255
256
257
258
259
260
261 RNG section
262 ------------
263 DONE - add two, three sentences
264 DONE - mention HaveGED 
265 DONE - embedded devices are a problem
266
267
268
269 Contacting / who?
270 =================
271 * Juniper
272 * Cisco
273
274 LATER / further 
275 ================
276 * OpenLDAP (-> Adi)
277 * Radius
278 * Windows Active Directory
279 DONE * SRP: not part of this document. But we did not exclude it in our cipher string :)
280 DONE * \cipherA , \cipherB setting ---> does not work in our \begin{listing} environment --> maybe there is a different listing environment or use awk/sed/make/perl/python
281 * What about 3270 terminal emulation? How to do crypto there? Can we? ( --> IBM sec. Stammtisch. Aaron)
282
283
284 * client/users-guide:
285   * PGP 
286   * ssh client settings
287   * OTR ?
288   * public key infrastructure
289   * certificate handling
290