Add paragraph "Insecure ciphers" on Sweet32 attack on Blowfish and (3)DES ciphers.
[ach-master.git] / src / practical_settings / vpn.tex
index d542cee..ef739ac 100644 (file)
@@ -1,18 +1,15 @@
-%%\subsection{VPNs}
-\subsubsection{IPSec}
+% ---------------------------------------------------------------------- 
+\subsection{IPsec}
 \label{section:IPSECgeneral}
 
 % ciphersuites current 2013-12-09
-\begin{description}
 
-\item[Settings:] \mbox{}
-
-\paragraph*{Assumptions}\mbox{}\\
+\subsubsection{Settings}
 
+\paragraph{Assumptions:}
 We assume the use of IKE (v1 or v2) and ESP for this document.
 
-\paragraph*{Authentication}\mbox{}\\
-
+\paragraph{Authentication:}
 IPSEC authentication should optimally be performed via RSA signatures,
 with a key size of 2048 bits or more. Configuring only the trusted CA
 that issued the peer certificate provides for additional protection
@@ -21,42 +18,37 @@ against fake certificates.
 If you need to use Pre-Shared Key authentication:
 
 \begin{enumerate}
-\item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
-\item Use a \textbf{separate} PSK for any IPSEC connection
-\item Change the PSKs regularily
+  \item Choose a \textbf{random}, \textbf{long enough} PSK (see below)
+  \item Use a \textbf{separate} PSK for any IPSEC connection
+  \item Change the PSKs regularly
 \end{enumerate}
 
 The size of the PSK should not be shorter than the output size of
-the hash algorithm used in IKE \footnote{It is used in a HMAC, see
-  \url{http://www.ietf.org/rfc/rfc2104.txt}.}.
+the hash algorithm used in IKE\footnote{It is used in a HMAC, see
+RFC2104~\cite{rfc2104} and the discussion starting
+in \url{http://www.vpnc.org/ietf-ipsec/02.ipsec/msg00268.html}.}.
 
 For a key composed of upper- and lowercase letters, numbers, and two
 additional symbols\footnote{64 possible values = 6 bits},
 table~\ref{tab:IPSEC_psk_len} gives the minimum lengths in characters.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lc}
-    \toprule
-    IKE Hash & PSK length \\
-    \midrule
-    SHA256 & 43 \\
-    SHA384 & 64 \\
-    SHA512 & 86 \\
-    \bottomrule
-  \end{tabular}
-  \caption{PSK lengths}
-  \label{tab:IPSEC_psk_len}
-\end{table}
-
-\paragraph*{Cryptographic Suites}\mbox{}\\
 
+\ctable[%
+pos=ht,
+caption={PSK lengths},
+label=tab:IPSEC_psk_len,
+]{lc}{}{
+\FL    IKE Hash & PSK length (chars)
+\ML    SHA256 & 43
+\NN    SHA384 & 64
+\NN    SHA512 & 86
+\LL}
+
+\paragraph{Cryptographic Suites:}
 IPSEC Cryptographic Suites are pre-defined settings for all the items
 of a configuration; they try to provide a balanced security level and
 make setting up VPNs easier.
-\footnote{\url{http://tools.ietf.org/html/rfc6379}}
-\footnote{\url{http://tools.ietf.org/html/rfc4308}}
+\footnote{RFC6379~\cite{rfc6379}, RFC4308~\cite{rfc4308}}
 
 When using any of those suites, make sure to enable ``Perfect Forward
 Secrecy`` for Phase 2, as this is not specified in the suites. The
@@ -64,99 +56,76 @@ equivalents to the recommended ciphers suites in section
 \ref{section:recommendedciphers} are shown in
 table~\ref{tab:IPSEC_suites}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{p{2.5cm}p{2.5cm}l}
-    \toprule
-    Configuration A & Configuration B & Notes\\
-    \midrule
-    \verb|Suite-B-GCM-256| \newline \verb|Suite-B-GMAC-256| &
-    \verb|Suite-B-GCM-128| \newline \verb|Suite-B-GMAC-128| \newline
-    \verb|VPN-B| 
-    & All Suite-B variants use NIST elliptic curves\\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Cryptographic Suites}
-  \label{tab:IPSEC_suites}
-\end{table}
-
-\paragraph*{IKE or Phase 1}\mbox{}\\
+\ctable[%
+caption={IPSEC Cryptographic Suites},
+label=tab:IPSEC_suites,
+]{>{\raggedright}p{3cm}>{\raggedright}p{3cm}l}{}{
+\FL    Configuration A & Configuration B & Notes
+\ML
+    \texttt{Suite-B-GCM-256} &
+    \texttt{Suite-B-GCM-128} \newline \texttt{VPN-B} &
+    All Suite-B variants use NIST elliptic curves
+\LL}
+\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
 vulnerabilities \footnote{\url{http://ikecrack.sourceforge.net/}}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lll}
-    \toprule
-    & Configuration A & Configuration B \\
-    \midrule
-    Mode & Main Mode & Main Mode \\
-    Encryption & AES-256 & AES, CAMELLIA (-256 or -128) \\
-    Hash & SHA2-* & SHA2-*, SHA1 \\
-    DH Group & Group 14--18, 19--21 & Group 14--21 \\
-%    Lifetime & \todo{need recommendations; 1 day seems to be common
-%      practice} & \\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Phase 1 parameters}
-  \label{tab:IPSEC_ph1_params}
-\end{table}
-
-\paragraph*{ESP or Phase 2}\mbox{}\\
-
-ESP or Phase 2 is where the actual data are protected; recommended
+\ctable[%
+caption={IPSEC Phase 1 parameters},
+label=tab:IPSEC_ph1_params,
+]{lll}{}{%
+\FL    & Configuration A & Configuration B
+\ML    Mode & Main Mode & Main Mode
+\NN    Encryption & AES-256 & AES, CAMELLIA (-256 or -128)
+\NN    Hash & SHA2-* & SHA2-*, SHA1
+\NN    DH Group & Group 14-18 & Group 14-18
+%\NN    Lifetime & \todo{need recommendations; 1 day seems to be common practice} &
+\LL}
+
+\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}.
 
-\begin{table}[h]
-  \centering
-  \small
-  \begin{tabular}{lll}
-    \toprule
-    & Configuration A & Configuration B \\
-    \midrule
-    Perfect Forward Secrecy & yes & yes \\
-    Encryption & 
-    \parbox[t]{5cm}{\raggedright
-    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}}
-    &
-    \parbox[t]{5cm}{\raggedright
-    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}, \mbox{CAMELLIA-256}, \mbox{AES-128}, \mbox{CAMELLIA-128}} \\
-    Hash & SHA2-* (or none for AES-GCM) & SHA2-*, SHA1 (or none for AES-GCM) \\
-    DH Group & Same as Phase 1 & Same as Phase 1 \\
-%    Lifetime & \todo{need recommendations; 1-8 hours is common} & \\
-    \bottomrule
-  \end{tabular}
-  \caption{IPSEC Phase 2 parameters}
-  \label{tab:IPSEC_ph2_params}
-\end{table}
-
-\item[References:] \mbox{}
-
-``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
-  Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
-
-\end{description}
-
-\subsubsection{Check Point FireWall-1}
-   
-\begin{description}
-\item[Tested with Version:] \mbox{}
-
-\begin{itemize}
-\item R77 (should work with any currently supported version)
-\end{itemize}
-
-\item[Settings:] \mbox{}
-
+\ctable[%
+caption={IPSEC Phase 2 parameters},
+label=tab:IPSEC_ph2_params,
+]{l>{\raggedright}p{4.5cm}>{\raggedright}p{6cm}}{}{%
+\FL    & Configuration A & Configuration B
+\ML    Perfect Forward Secrecy & \yes & \yes
+\NN    Encryption & %
+    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256} &%
+    \mbox{AES-GCM-16}, \mbox{AES-CTR}, \mbox{AES-CCM-16}, \mbox{AES-256}, \mbox{CAMELLIA-256}, \mbox{AES-128}, \mbox{CAMELLIA-128}
+\NN    Hash & SHA2-* (or none for AEAD) & SHA2-*, SHA1 (or none for AEAD)
+\NN    DH Group & Same as Phase 1 & Same as Phase 1
+%\NN    Lifetime & \todo{need recommendations; 1-8 hours is common} &
+\LL}
+
+\subsubsection{References}
+\begin{itemize*}
+  \item ``A Cryptographic Evaluation of IPsec'', Niels Ferguson and Bruce
+    Schneier: \url{https://www.schneier.com/paper-ipsec.pdf}
+\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)
+\end{itemize*}
+
+\subsubsection{Settings}
 Please see section \ref{section:IPSECgeneral} for guidance on
 parameter choice. In this section, we will configure a strong setup
 according to ``Configuration A''.
@@ -167,19 +136,19 @@ Communities can be found in the ``IPSEC VPN'' tab of SmartDashboard.
 
 \begin{figure}[p]
   \centering
-  \includegraphics[width=0.592\textwidth]{checkpoint_1.png}
+  \includegraphics[width=0.592\textwidth]{img/checkpoint_1.png}
   \caption{VPN Community encryption properties}
   \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}).
 
 \begin{figure}[p]
   \centering
-  \includegraphics[width=0.411\textwidth]{checkpoint_2.png}
+  \includegraphics[width=0.411\textwidth]{img/checkpoint_2.png}
   \caption{Custom Encryption Suite Properties}
   \label{fig:checkpoint_2}
 \end{figure}
@@ -190,13 +159,13 @@ found under ``Advanced Settings'' / ``Advanced VPN Properties''
 
 \begin{figure}[p]
   \centering
-  \includegraphics[width=0.589\textwidth]{checkpoint_3.png}
+  \includegraphics[width=0.589\textwidth]{img/checkpoint_3.png}
   \caption{Advanced VPN Properties}
   \label{fig:checkpoint_3}
 \end{figure}
 
-\item[Additional settings:] \mbox{}
 
+\subsubsection{Additional settings}
 For remote Dynamic IP Gateways, the settings are not taken from the
 community, but set in the ``Global Properties'' dialog under ``Remote
 Access'' / ``VPN Authentication and Encryption''. Via the ``Edit...''
@@ -205,7 +174,7 @@ button, you can configure sets of algorithms that all gateways support
 
 \begin{figure}[p]
   \centering
-  \includegraphics[width=0.474\textwidth]{checkpoint_4.png}
+  \includegraphics[width=0.474\textwidth]{img/checkpoint_4.png}
   \caption{Remote Access Encryption Properties}
   \label{fig:checkpoint_4}
 \end{figure}
@@ -213,44 +182,34 @@ button, you can configure sets of algorithms that all gateways support
 Please note that these settings restrict the available algorithms for
 \textbf{all} gateways, and also influence the VPN client connections.
 
-%\item[Justification for special settings (if needed):]
+%\subsubsection{Justification for special settings (if needed)}
 
-%\item[Limitations:]
+%\subsubsection{Limitations}
 
-\item[References:]\mbox{}
-
-\begin{itemize}
-
-\item Check Point
-  \href{https://sc1.checkpoint.com/documents/R77/CP_R77_VPN_AdminGuide/html_frameset.htm}{VPN
-    R77 Administration Guide} (may require a
-  UserCenter account to access)
-
-\end{itemize}
-
-% \item[How to test:]
-
-\end{description}
+\subsubsection{References}
+\begin{itemize*}
+  \item Check Point \href{https://sc1.checkpoint.com/documents/R77/CP_R77_VPN_AdminGuide/html_frameset.htm}{VPN R77 Administration Guide} (may require a UserCenter account to access)
+\end{itemize*}
 
+%\subsubsection{How to test}
 
 %% cipherstrings current 2013-12-09
-\subsubsection{OpenVPN}
-
-\begin{description}
-
-\item[Tested with Version:] \mbox{}\\
+% ---------------------------------------------------------------------- 
+\FloatBarrier % the preceding section has several figures. Floating them too far away might get confusing for readers.
 
-\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 7.0 linked against openssl
-    (libssl.so.1.0.0) 
-\item OpenVPN 2.3.2 for Windows
-\end{itemize}
+\subsection{OpenVPN}
 
-\item[Settings:] \mbox{}
+\subsubsection{Tested with Versions}
+\begin{itemize*}
+  \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*}
 
-\paragraph{General}\mbox{}
+\subsubsection{Settings}
 
+\paragraph{General}
 We describe a configuration with certificate-based authentication; see
 below for details on the \verb|easyrsa| tool to help you with that.
 
@@ -263,43 +222,28 @@ 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.
 
-\paragraph{Server Configuration}\mbox{}
+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}
 
-% this is only a DoS-protection, out of scope:
-% # TLS Authentication
-% tls-auth ta.key
 
-% previous:
-% tls-cipher
-% ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-CAMELLIA256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:AES256-SHA
+\paragraph{Server Configuration}
+~\\
 % the cipherlist here is config B without the ECDHE strings, because
 % it must fit in 256 bytes...
-\begin{lstlisting}[breaklines]
-tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
-cipher AES-256-CBC
-auth SHA384
-# generate with 'openssl dhparam -out dh2048.pem 2048':
-dh dh2048.pem
-\end{lstlisting}
-
-\paragraph{Client Configuration}\mbox{}
+% DO NOT CHANGE TO THE CIPHERSTRING MACRO!
+\configfile{server.conf}{248-250}{Cipher configuration for OpenVPN (Server)}
 
+\paragraph{Client Configuration}
 Client and server have to use compatible configurations, otherwise they can't communicate.
 The \verb|cipher| and \verb|auth| directives have to be identical.
 
-\begin{lstlisting}[breaklines]
-tls-cipher DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-AES128-SHA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
-cipher AES-256-CBC
-auth SHA384
-
-# http://openvpn.net/index.php/open-source/documentation/howto.html#mitm
-remote-cert-tls server
-
-tls-remote server.example.com
-\end{lstlisting}
-
-\item[Justification for special settings (if needed):] \mbox{}\\
+% the cipherlist here is config B without the ECDHE strings, because
+% it must fit in 256 bytes...
+% DO NOT CHANGE TO THE CIPHERSTRING MACRO!
+\configfile{client.conf}{44-45,115-121}{Cipher and TLS configuration for OpenVPN (Server)}
 
+\subsubsection{Justification for special settings}
 OpenVPN 2.3.1 changed the values that the \verb|tls-cipher| option
 expects from OpenSSL to IANA cipher names. That means from that
 version on you will get ``Deprecated TLS cipher name'' warnings for
@@ -313,58 +257,72 @@ ECDHE suites.
 
 The configuration shown above is compatible with all tested versions.
 
-\item[References:] \mbox{}\\
-
-\url{http://openvpn.net/index.php/open-source/documentation/security-overview.html}
 
-%\item[How to test:]
+\subsubsection{References}
+\begin{itemize*}
+  \item OpenVPN Documentation: \emph{Security Overview} \url{https://openvpn.net/index.php/open-source/documentation/security-overview.html}
+\end{itemize*}
 
+%\subsubsection{How to test}
 
-\item[Additional settings:] \mbox{}
 
-\paragraph{Key renegotiation interval}\mbox{}
+\subsubsection{Additional settings}
 
+\paragraph{Key renegotiation interval}
 The default for renegotiation of encryption keys is one hour
 (\verb|reneg-sec 3600|). If you
 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{Fixing ``easy-rsa''}\mbox{}
-
+\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
-{\it easy-rsa} to generate keys and certificates.
+\emph{easy-rsa} to generate keys and certificates.
 The file \verb|vars| in the easyrsa installation directory has a
 number of settings that should be changed to secure values:
 
-\begin{lstlisting}[breaklines]
-export KEY_SIZE=4096
-export KEY_EXPIRE=365
-export CA_EXPIRE=1826
-\end{lstlisting}
+\configfile{vars}{53-53,56-56,59-59}{Sane default values for OpenVPN (easy-rsa)}
+
 
 This will enhance the security of the key generation by using RSA keys
-with a length of 2048 bits, and set a lifetime of one year for the
-server/client certificates and five years for the CA certificate.
+with a length of 4096 bits, and set a lifetime of one year for the
+server/client certificates and five years for the CA certificate. \textbf{NOTE: 4096 bits is only an example of how to do this with easy-rsa.} See also section \ref{section:keylengths} for a discussion on keylengths.
 
-In addition, edit the \verb|pkitool| script and replace all occurences
+In addition, edit the \verb|pkitool| script and replace all occurrences
 of \verb|sha1| with \verb|sha256|, to sign the certificates with
 SHA256.
 
-\item[Limitations:] \mbox{}
-
-Note that the ciphersuites shown by \verb|openvpn --show-tls| are {\it
-known}, but not necessarily {\it
-supported} \footnote{\url{https://community.openvpn.net/openvpn/ticket/304}}.
+\subsubsection{Limitations}
+Note that the ciphersuites shown by \verb|openvpn --show-tls| are \emph{known}, but not necessarily \emph{supported} \footnote{\url{https://community.openvpn.net/openvpn/ticket/304}}.
 
 Which cipher suite is actually used can be seen in the logs:
 
 \verb|Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-CAMELLIA256-SHA, 2048 bit RSA|
 
-\end{description}
-
 
-\subsubsection{PPTP}
+% ---------------------------------------------------------------------- 
+\subsection{PPTP}
 
 PPTP is considered insecure, Microsoft recommends to ``use a more secure VPN
 tunnel''\footnote{\url{http://technet.microsoft.com/en-us/security/advisory/2743314}}.
@@ -374,13 +332,18 @@ authentication protocol for the price of USD~200\footnote{\url{https://www.cloud
 and given the resulting MD4 hash, all PPTP traffic for a user can
 be decrypted.
 
-\subsubsection{Cisco ASA}
-The following settings reflect our recommendations as best as possible on the Cisco ASA platform. These are - of course - just settings regarding SSL/TLS (i.e. Cisco AnyConnect) and IPSec. For further security settings regarding this platform the appropriate Cisco guides should be followed.
-\begin{description}
-\item[Tested with Version:] 
-9.1(3)
-\item[Settings:] \mbox{}
-\begin{lstlisting}[breaklines]
+% ---------------------------------------------------------------------- 
+\subsection{Cisco ASA}
+The following settings reflect our recommendations as best as possible on the Cisco ASA platform. These are - of course - just settings regarding SSL/TLS (i.e. Cisco AnyConnect) and IPsec. For further security settings regarding this platform the appropriate Cisco guides should be followed.
+
+
+\subsubsection{Tested with Versions}
+\begin{itemize*}
+  \item 9.1(3) - X-series model
+\end{itemize*}
+
+\subsubsection{Settings}
+\begin{lstlisting}
 crypto ipsec ikev2 ipsec-proposal AES-Fallback
  protocol esp encryption aes-256 aes-192 aes
  protocol esp integrity sha-512 sha-384 sha-256
@@ -415,25 +378,25 @@ crypto map Outside-DMZ_map interface Outside-DMZ
 crypto ikev2 policy 1
  encryption aes-gcm-256
  integrity null
- group 24 14
+ group 14
  prf sha512 sha384 sha256 sha
  lifetime seconds 86400
 crypto ikev2 policy 2
  encryption aes-gcm-256 aes-gcm-192 aes-gcm
  integrity null
- group 24 14 5
+ group 14
  prf sha512 sha384 sha256 sha
  lifetime seconds 86400
 crypto ikev2 policy 3
  encryption aes-256 aes-192 aes
  integrity sha512 sha384 sha256
- group 24 14
+ group 14
  prf sha512 sha384 sha256 sha
  lifetime seconds 86400
 crypto ikev2 policy 4
  encryption aes-256 aes-192 aes
  integrity sha512 sha384 sha256 sha
- group 24 14 5
+ group 14
  prf sha512 sha384 sha256 sha
  lifetime seconds 86400
 crypto ikev2 enable Outside-DMZ client-services port 443
@@ -445,132 +408,143 @@ ssl encryption dhe-aes256-sha1 dhe-aes128-sha1 aes256-sha1 aes128-sha1
 ssl trust-point ASDM_TrustPoint0 Outside-DMZ
 \end{lstlisting}
 
-\item[Justification for special settings (if needed):] \mbox{}
+\subsubsection{Justification for special settings}
 New IPsec policies have been defined which do not make use of ciphers that may be cause for concern. Policies have a "Fallback" option to support legacy devices.
 
-% in case you have the need for further justifications why you chose this and that setting or if the settings do not fit into the standard Variant A or Variant B schema, please document this here
-
-\item[References:] 
-\url{http://www.cisco.com/en/US/docs/security/asa/roadmap/asaroadmap.html}
-
-% add any further references or best practice documents here
-
-%%\item[How to test:] 
-% describe here or point the admin to tools (can be a simple footnote or \ref{} to  the tools section) which help the admin to test his settings.
-
-\end{description}
-
-
-
-
-
-
-
-%%\subsubsection{Juniper VPN}
-%%\todo{write this subsubsection. AK: ask Hannes}
+3DES has been completely disabled as such Windows XP AnyConnect Clients will no longer be able to connect.
 
+The Cisco ASA platform does not currently support RSA Keys above 2048bits.
 
-%%\begin{description}
-%%\item[Tested with Version:] \todo{version?}
+Legacy ASA models (e.g. 5505, 5510, 5520, 5540, 5550) do not offer the possibility to configure for SHA256/SHA384/SHA512 nor AES-GCM for IKEv2 proposals.
 
-%%\item[Settings:] \mbox{}
-
-%%\begin{lstlisting}[breaklines]
-%%    %Here goes your setting string
-%%\end{lstlisting}
-
-%%\item[Additional settings:] \mbox{}
-
-%Here you can add additional settings
-
-%%\begin{lstlisting}[breaklines]
-%%    %copy \& paste additional settings
-%%\end{lstlisting}
-
-%%\item[Justification for special settings (if needed):] \mbox{}
-
-% in case you have the need for further justifications why you chose this and that setting or if the settings do not fit into the standard Variant A or Variant B schema, please document this here
-
-%%\item[References:] \todo{add references}
+\subsubsection{References}
+\begin{itemize*}
+  \item \url{http://www.cisco.com/en/US/docs/security/asa/roadmap/asaroadmap.html}
+  \item \url{http://www.cisco.com/web/about/security/intelligence/nextgen_crypto.html}
+\end{itemize*}
 
 % add any further references or best practice documents here
 
-%%\item[How to test:]
+%%\subsubsection{How to test}
 % describe here or point the admin to tools (can be a simple footnote or \ref{} to  the tools section) which help the admin to test his settings.
 
-%%\end{description}
-
-
 
-\subsubsection{L2TP over IPSec}
-\todo{write this subsubsection}
+% ---------------------------------------------------------------------- 
+\subsection{Openswan}
 
 
-\begin{description}
-\item[Tested with Version:] \todo{version?}
+\subsubsection{Tested with Version}
+\begin{itemize*}
+  \item Openswan 2.6.39 (Gentoo)
+\end{itemize*}
 
-\item[Settings:] \mbox{}
+\subsubsection{Settings}
+Note: the available algorithms depend on your kernel configuration (when using protostack=netkey) and/or build-time options.
 
-\begin{lstlisting}[breaklines]
-    %Here goes your setting string
+To list the supported algorithms
+\begin{lstlisting}
+$ ipsec auto --status | less
 \end{lstlisting}
-
-\item[Additional settings:] \mbox{}
-
-%Here you can add additional settings
-
-\begin{lstlisting}[breaklines]
-    %copy \& paste additional settings
+and look for 'algorithm ESP/IKE' at the beginning.
+
+\begin{lstlisting}
+aggrmode=no
+# ike format: cipher-hash;dhgroup
+# recommended ciphers:
+# - aes
+# recommended hashes:
+# - sha2_256 with at least 43 byte PSK
+# - sha2_512 with at least 86 byte PSK
+# recommended dhgroups:
+# - modp2048 = DH14
+# - modp3072 = DH15
+# - modp4096 = DH16
+# - modp6144 = DH17
+# - modp8192 = DH18
+ike=aes-sha2_256;modp2048
+type=tunnel
+phase2=esp
+# esp format: cipher-hash;dhgroup
+# recommended ciphers configuration A:
+# - aes_gcm_c-256 = AES_GCM_16
+# - aes_ctr-256
+# - aes_ccm_c-256 = AES_CCM_16
+# - aes-256 
+# additional ciphers configuration B:
+# - camellia-256
+# - aes-128
+# - camellia-128
+# recommended hashes configuration A:
+# - sha2-256
+# - sha2-384
+# - sha2-512
+# - null (only with GCM/CCM ciphers)
+# additional hashes configuration B:
+# - sha1
+# recommended dhgroups: same as above
+phase2alg=aes_gcm_c-256-sha2_256;modp2048
+salifetime=8h
+pfs=yes
+auto=ignore
 \end{lstlisting}
 
-\item[Justification for special settings (if needed):] \mbox{}
-
-% in case you have the need for further justifications why you chose this and that setting or if the settings do not fit into the standard Variant A or Variant B schema, please document this here
-
-\item[References:] \todo{add references}
-
-% add any further references or best practice documents here
-
-\item[How to test:]
-% describe here or point the admin to tools (can be a simple footnote or \ref{} to  the tools section) which help the admin to test his settings.
-
-\end{description}
-
+\subsubsection{How to test}
+Start the vpn and using
+\begin{lstlisting}
+$ ipsec auto --status | less
+\end{lstlisting}
+and look for 'IKE algorithms wanted/found' and 'ESP algorithms wanted/loaded'.
 
+\subsubsection{References}
+%\todo{more specific References??}
+\begin{itemize*}
+  \item \url{https://www.openswan.org/}
+\end{itemize*}
 
 
+\subsection{tinc}
+\subsubsection{Tested with Version}
+\begin{itemize*}
+  \item tinc 1.0.23 from Gentoo linked against OpenSSL 1.0.1e
+  \item tinc 1.0.23 from Sabayon linked against OpenSSL 1.0.1e
+\end{itemize*}
 
+\paragraph*{Defaults}\mbox{}\\
+tinc uses 2048 bit RSA keys, Blowfish-CBC, and SHA1 as default settings and suggests the usage of CBC mode ciphers.
+Any key length up to 8196 is supported and it does not need to be a power of two. OpenSSL Ciphers and Digests are supported by tinc.
 
-\subsubsection{Racoon}
-\todo{write this subsubsection}
+\paragraph*{Settings}\mbox{}\\
+Generate keys with
+\begin{lstlisting}[breaklines]
+tincd -n NETNAME -K8196
+\end{lstlisting}
+Old keys will not be deleted (but disabled), you have to delete them manually. Add the following lines to your tinc.conf on all machines
+\configfile{tinc.conf}{3-4}{Cipher and digest selection in tinc}
 
+\paragraph*{References}\mbox{}\\
+\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: http://www.tinc-vpn.org/pipermail/tinc/2014-January/003538.html}
+\end{itemize}
 
-\begin{description}
-\item[Tested with Version:] \todo{version?}
 
-\item[Settings:] \mbox{}
+% ---------------------------------------------------------------------- 
+%%\subsection{Juniper VPN}
+%%\todo{write this subsubsection. AK: ask Hannes}
 
-\begin{lstlisting}[breaklines]
-    %Here goes your setting string
-\end{lstlisting}
 
-\item[Additional settings:] \mbox{}
 
-%Here you can add additional settings
 
-\begin{lstlisting}[breaklines]
-    %copy \& paste additional settings
-\end{lstlisting}
+% ---------------------------------------------------------------------- 
+%\subsection{L2TP over IPSec}
+%\todo{write this subsubsection}
 
-\item[Justification for special settings (if needed):] \mbox{}
 
-% in case you have the need for further justifications why you chose this and that setting or if the settings do not fit into the standard Variant A or Variant B schema, please document this here
 
-\item[References:] \todo{add references}
 
-% add any further references or best practice documents here
+% ---------------------------------------------------------------------- 
+%\subsection{Racoon}
+%\todo{write this subsubsection}
 
-\item[How to test:]
-% describe here or point the admin to tools (can be a simple footnote or \ref{} to  the tools section) which help the admin to test his settings.
 
-\end{description}