Merge github.com:BetterCrypto/Applied-Crypto-Hardening
[ach-master.git] / src / practical_settings / im.tex
index 0a5d26d..2ee2f75 100644 (file)
@@ -1,10 +1,10 @@
 %%\subsection{Instant Messaging Systems}
 \subsubsection{XMPP / Jabber}
-\todo{ts: Describe ejabberd configuration. Reference to Peter`s manifesto https://github.com/stpeter/manifesto}
 
-\subsubsection{Server configuration}
 
-For servers, we mostly recommend to apply what's proposed by the {\it Peter's manifesto}\footnote{https://github.com/stpeter/manifesto}.
+\subsubsection{General server configuration recommendations}
+
+For servers, we mostly recommend to apply what's proposed by the \emph{Peter's manifesto}\footnote{\url{https://github.com/stpeter/manifesto}}.
 
 In short:
 \begin{itemize}
@@ -17,7 +17,13 @@ The last point being out-of-scope for this section, we will only cover the first
 
 \paragraph{ejabberd}
 
-ejabberd is one of the popular Jabber server.  In order to be compliant
+\begin{description}
+\item[Tested with Version:] Debian 7.0, version 2.1.10-4+deb7u1
+
+\item[Settings:] \mbox{}
+
+
+ejabberd is one of the popular Jabber servers.  In order to be compliant
 with the manifesto, you should adapt your
 configuration\footnote{\url{http://www.process-one.net/docs/ejabberd/guide_en.html}}:
 \begin{lstlisting}[breaklines]
@@ -42,20 +48,75 @@ configuration\footnote{\url{http://www.process-one.net/docs/ejabberd/guide_en.ht
 {s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
 \end{lstlisting}
 
+\item[Additional settings:]
+
+Older Versions of ejabberd ($ < $ 2.0.0) need to be patched\footnote{\url{http://hyperstruct.net/2007/06/20/installing-the-startcom-ssl-certificate-in-ejabberd/}} to be able to parse all of the certificates in the CA chain.
+
+Newer versions of ejabberd now support specifying the cipher string in the config file. See the commit message: \url{https://github.com/processone/ejabberd/commit/1dd94ac0d06822daa8c394ea2da20d91c8209124}. However, this change did not yet make it into the stable release at the time of this writing. 
+
+
+\item[References:] 
+
+\item[How to test:] \url{https://xmpp.net} is a practical website to test Jabber server configurations.
+
+\end{description}
+
 
 \subsubsection{Chat privacy - Off-the-Record Messaging (OTR)}
 
-The OTR protocol works on top of the Jabber protocol(\footnote{https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html}).  
-It add to popular chat clients (Adium, Pidgin...) the following propoerties for chiffered chats:
+The OTR protocol works on top of the Jabber protocol\footnote{\url{https://otr.cypherpunks.ca/Protocol-v3-4.0.0.html}}.  
+It adds to popular chat clients (Adium, Pidgin...) the following properties for encrypted chats:
 \begin{itemize}
-    \item Authentification
+    \item Authentication
     \item Integrity
     \item Confidentiality
-    \item Forward privacy
+    \item Forward secrecy
 \end{itemize}
 
-It bascially uses Diffie-Helleman, AES and SHA1. 
+It basically uses Diffie-Hellman, AES and SHA1. Communicating over an insecure instant messaging network, OTR can be used for end to end encryption.
 
-There are no specific configuration required but the protocol itself worth to be mentionned.
+There are no specific configurations required but the protocol itself is worth to be mentioned.
 
 \subsubsection{IRC}
+
+There are numerous implementations of IRC servers.  In this section, we choose \emph{Charybdis} which serves as basis for \emph{ircd-seven}\footnote{\url{https://dev.freenode.net/redmine/projects/ircd-seven}}, developed and used by freenode. Freenode is actually the biggest IRC network\footnote{\url{http://irc.netsplit.de/networks/top10.php}}.  \emph{Charybdis} is part of the \emph{Debian} \& \emph{Ubuntu} distributions.
+
+\begin{lstlisting}[breaklines]
+/* Extensions */
+# Some modules 
+#loadmodule "extensions/chm_sslonly_compat.so";
+loadmodule "extensions/extb_ssl.so";
+# Some other modules
+
+serverinfo {
+  /* Standard piece of information */
+  
+  ssl_private_key = "etc/test.key";
+  ssl_cert = "etc/test.cert";
+  ssl_dh_params = "etc/dh.pem";
+  # set ssld_count as number of cores - 1
+  ssld_count = 1; 
+};
+
+listen {
+  /* Standard ports */
+  sslport = 6697;
+
+  /* IPv6 configuration */
+};
+\end{lstlisting}
+
+
+\subsubsection{SILC}
+
+SILC\footnote{\url{http://www.silcnet.org/} and
+\url{https://en.wikipedia.org/wiki/SILC_(protocol)}} is instant messaging
+protocol publicly released in 2000. SILC is a per-default secure chat protocol
+thanks to a generalized usage of symmetric encryption. Keys are generated by
+the server meaning that if compromised, communication could be compromised.
+
+The protocol is not really popular anymore.
+
+
+
+