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