Add paragraph "Insecure ciphers" on Sweet32 attack on Blowfish and (3)DES ciphers.
[ach-master.git] / src / practical_settings / vpn.tex
index f59e7af..ef739ac 100644 (file)
@@ -34,10 +34,11 @@ table~\ref{tab:IPSEC_psk_len} gives the minimum lengths in characters.
 
 
 \ctable[%
+pos=ht,
 caption={PSK lengths},
 label=tab:IPSEC_psk_len,
 ]{lc}{}{
-\FL    IKE Hash & PSK length
+\FL    IKE Hash & PSK length (chars)
 \ML    SHA256 & 43
 \NN    SHA384 & 64
 \NN    SHA512 & 86
@@ -65,12 +66,12 @@ label=tab:IPSEC_suites,
     \texttt{Suite-B-GCM-128} \newline \texttt{VPN-B} &
     All Suite-B variants use NIST elliptic curves
 \LL}
-\paragraph{IKE or Phase 1:}
+\paragraph{Phase 1:}
 
 Alternatively to the pre-defined cipher suites, you can define your
 own, as described in this and the next section.
 
-IKE or Phase 1 is the mutual authentication and key exchange phase;
+Phase 1 is the mutual authentication and key exchange phase;
 table~\ref{tab:IPSEC_ph1_params} shows the parameters.
 
 Use only ``main mode``, as ``aggressive mode`` has known security
@@ -88,8 +89,8 @@ label=tab:IPSEC_ph1_params,
 %\NN    Lifetime & \todo{need recommendations; 1 day seems to be common practice} &
 \LL}
 
-\paragraph{ESP or Phase 2:}
-ESP or Phase 2 is where the actual data are protected; recommended
+\paragraph{Phase 2:}
+Phase 2 is where the parameters that protect the actual data are negotiated; recommended
 parameters are shown in table \ref{tab:IPSEC_ph2_params}.
 
 \ctable[%
@@ -113,9 +114,12 @@ label=tab:IPSEC_ph2_params,
 \end{itemize*}
 
 
-%---------------------------------------------------------------------- 
+%----------------------------------------------------------------------
 \subsection{Check Point FireWall-1}
 
+% Attention, only example...
+%Checkpoint firewall is a \gls{firewall} that ....
+
 \subsubsection{Tested with Versions}
 \begin{itemize*}
   \item R77 (should work with any currently supported version)
@@ -137,7 +141,7 @@ Communities can be found in the ``IPSEC VPN'' tab of SmartDashboard.
   \label{fig:checkpoint_1}
 \end{figure}
 
-Either chose one of the encryption suites in the properties dialog
+Either choose one of the encryption suites in the properties dialog
 (figure \ref{fig:checkpoint_1}), or proceed to
 ``Custom Encryption...'', where you can set encryption and hash for
 Phase 1 and 2 (figure \ref{fig:checkpoint_2}).
@@ -191,13 +195,15 @@ Please note that these settings restrict the available algorithms for
 
 %% cipherstrings current 2013-12-09
 % ---------------------------------------------------------------------- 
+\FloatBarrier % the preceding section has several figures. Floating them too far away might get confusing for readers.
+
 \subsection{OpenVPN}
 
 \subsubsection{Tested with Versions}
 \begin{itemize*}
-  \item OpenVPN 2.3.2 from Debian ``wheezy-backports'' linked against openssl (libssl.so.1.0.0) 
-  \item OpenVPN 2.2.1 from Debian Wheezy linked against openssl
-    (libssl.so.1.0.0) 
+  \item OpenVPN 2.3.10 from Ubuntu Xenial 16.04.1 LTS linked against openssl (libssl.so.1.0.0)
+  \item OpenVPN 2.3.2 from Debian ``wheezy-backports'' linked against openssl (libssl.so.1.0.0)
+  \item OpenVPN 2.2.1 from Debian Wheezy linked against openssl (libssl.so.1.0.0)
   \item OpenVPN 2.3.2 for Windows
 \end{itemize*}
 
@@ -216,6 +222,11 @@ that is then negotiated as usual with TLS, the \verb|cipher|
 and \verb|auth| options both take a single argument that must match on
 client and server.
 
+OpenVPN duplexes the tunnel into a data and a control channel. The control
+channel is a usual TLS connection, the data channel currently uses 
+encrypt-then-mac CBC, see \url{https://github.com/BetterCrypto/Applied-Crypto-Hardening/pull/91#issuecomment-75365286}
+
+
 \paragraph{Server Configuration}
 ~\\
 % the cipherlist here is config B without the ECDHE strings, because
@@ -264,6 +275,27 @@ transfer huge amounts of data over your tunnel, you might consider
 configuring a shorter interval, or switch to a byte- or packet-based
 interval (\verb|reneg-bytes| or \verb|reneg-pkts|).
 
+\paragraph{Insecure ciphers}
+
+Sweet32\footnote{\url{https://sweet32.info/}} is an attack on 64-bit block
+ciphers, such as \verb|3DES| and \verb|Blowfish| in OpenVPN. The following
+ciphers are affected, and should no longer be used:
+\begin{itemize*}
+  \item BF-*
+  \item DES* (including 3DES variants)
+  \item RC2-*
+\end{itemize*}
+The following ciphers are not affected:
+\begin{itemize*}
+  \item AES-*
+  \item CAMELLIA-*
+  \item SEED-*
+\end{itemize*}
+According to mitigation section on Sweet32 website\footnote{\url{https://sweet32.info/\#impact}}
+users users should change the cipher from the DES or Blowfish to AES
+(\verb|cipher AES-128-CBC|). If cipher change is not possible users can
+mitigate the attack by forcing frequent rekeying (\verb|reneg-bytes 64000000|).
+
 \paragraph{Fixing ``easy-rsa''}
 When installing an OpenVPN server instance, you are probably using
 \emph{easy-rsa} to generate keys and certificates.
@@ -407,8 +439,7 @@ Legacy ASA models (e.g. 5505, 5510, 5520, 5540, 5550) do not offer the possibili
 \end{itemize*}
 
 \subsubsection{Settings}
-NB: The available algorithms depend on your kernel configuration (when using protostack=netkey) and/or
-build-time options.
+Note: the available algorithms depend on your kernel configuration (when using protostack=netkey) and/or build-time options.
 
 To list the supported algorithms
 \begin{lstlisting}
@@ -465,7 +496,7 @@ $ ipsec auto --status | less
 and look for 'IKE algorithms wanted/found' and 'ESP algorithms wanted/loaded'.
 
 \subsubsection{References}
-\todo{more specific References}
+%\todo{more specific References??}
 \begin{itemize*}
   \item \url{https://www.openswan.org/}
 \end{itemize*}
@@ -494,7 +525,7 @@ Old keys will not be deleted (but disabled), you have to delete them manually. A
 \begin{itemize}
 \item tincd(8) man page
 \item tinc.conf(5) man page
-\item \href{http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}{tinc mailinglist}
+\item \href{http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}{tinc mailinglist: http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}
 \end{itemize}