Fixed makefile: remove bibtex, we don't use it right now
authorAaron Kaplan <aaron@lo-res.org>
Wed, 13 Nov 2013 14:08:59 +0000 (15:08 +0100)
committerAaron Kaplan <aaron@lo-res.org>
Wed, 13 Nov 2013 14:08:59 +0000 (15:08 +0100)
re-wrote the cipher suites section (previously overview of overview_common_crypto_systems)
renamed overview_common_crypto_systems.tex -> cipher_suites.tex

src/Makefile
src/applied-crypto-hardening.tex
src/cipher_suites.tex [new file with mode: 0644]
src/overview_common_crypto_systems.tex [deleted file]

index 8b9a889..8411373 100644 (file)
@@ -3,11 +3,11 @@ NOW := $(shell date)
 all:
        pdflatex applied-crypto-hardening
        # no bibtex citations atm
-       bibtex applied-crypto-hardening
+       #bibtex applied-crypto-hardening
        #latex applied-crypto-hardening
        pdflatex applied-crypto-hardening
        #dvipdfm -z 9 applied-crypto-hardening
        #dvipdf applied-crypto-hardening.dvi
 
 clean:
-       rm -f applied-crypto-hardening.aux applied-crypto-hardening.bbl applied-crypto-hardening.blg applied-crypto-hardening.dvi applied-crypto-hardening.log applied-crypto-hardening.pdf
+       rm -f applied-crypto-hardening.aux applied-crypto-hardening.bbl applied-crypto-hardening.blg applied-crypto-hardening.dvi applied-crypto-hardening.log applied-crypto-hardening.pdf applied-crypto-hardening.toc
index 7a47129..ce50a07 100644 (file)
 \input{ECC}
 \input{keylengths}
 \input{RNGs}
-\input{overview_common_crypto_systems}
+\input{cipher_suites}
 \input{practical_settings}
 \input{tools}
 \input{further_research}
diff --git a/src/cipher_suites.tex b/src/cipher_suites.tex
new file mode 100644 (file)
index 0000000..aeeea78
--- /dev/null
@@ -0,0 +1,100 @@
+\section{Cipher suites}
+
+
+\subsection{Recommended cipher suites}
+
+In principle, system administrators who want to improve their servers need to
+make a hard decision between locking out some users while keeping very high
+cipher suite security levels or supporting as many users as possible while
+lowering some settings. \url{https://www.ssllabs.com/} gives administrators a
+tool to test out different settings. The authors used ssllabs.com to arrive at
+a set of cipher suites which we will recommend throught this document.
+\textbf{Caution: these settings can only represent a subjective choice of the
+authors at the time of this writing. It might be a wise choice to select your
+own ciper suites based on the instructions in section
+\ref{section:ChosingYourOwnCipherSuites}}.
+
+
+\subsubsection{Configuration A: strong ciphers, fewer clients}
+
+At the time of this writing, we recommend the following set of strong cipher suites which may be useful in an environment where you do not depend on many, diverse external clients and where compatibility is not an issue.  An example of such an environment might be machine 2 machine communications or corporate environments where you can define the software which must be used.
+
+
+We arrived at this set of cipher suites by selecting
+
+\begin{itemize}
+\item TLS 1.2
+\item Perfect forward secrecy / ephemeral Diffie Hellman
+\item strong Hashes (SHA-2)
+\item GCM as chaining mode if possible 
+\end{itemize}
+
+This results in the string:
+
+\begin{verbatim}
+EECDH+aRSA+AES256:EDH+aRSA+AES256:!SSLv3
+\end{verbatim}
+
+%$\implies$ resolves to 
+%
+%\begin{verbatim}
+%openssl ciphers -V $string
+%\end{verbatim}
+
+
+
+\begin{center}
+\begin{tabular}{| l | l | l | l | l| l | l |}
+\hline
+ID        & OpenSSL name                & Version & KeyEx & Auth & Cipher & Hash \\ \hline
+0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
+0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
+0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
+0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
+\end{tabular}
+\end{center}
+
+
+Compatibility:
+
+Only clients which support TLS1.2 are covered by this cipher suites (Chrome 30, Win 7 and Win 8.1 crypto stack, Opera 17, OpenSSL >= 1.0.1e, Safari 6 / iOS 6.0.1, Safari 7 / OS X 10.9).
+
+
+
+\subsubsection{Configuration B: weaker ciphers, many clients}
+
+TLS 1.2, TLS 1.1, TLS 1.0, -SSLv3, -SSLv2
+
+\todo{HOW did we arrive at this string? Constraints: which clients are supported by this string? }
+
+string="EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EDH+CAMELLIA256:EECDH:EDH+aRSA:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!AES128:!CAMELLIA128:!ECDSA:AES256-SHA"
+
+
+$\implies$ resolves to openssl ciphers -V \$string
+
+\begin{center}
+\begin{tabular}{| l | l | l | l | l| l | l |}
+\hline
+ID        & OpenSSL name                           & Version & KeyEx & Auth & Cipher & Hash \\ \hline
+0xC030 & ECDHE-RSA-AES256-GCM-SHA384 & TLSv1.2 & ECDH  &  RSA &AESGCM(256)  & AEAD   \\ \hline
+0xC028 & ECDHE-RSA-AES256-SHA384     & TLSv1.2 & ECDH  &  RSA &AES(256)     & SHA384 \\ \hline
+0x009F & DHE-RSA-AES256-GCM-SHA384   & TLSv1.2 & DH    &  RSA &AESGCM(256)  & AEAD   \\ \hline
+0x006B & DHE-RSA-AES256-SHA256       & TLSv1.2 & DH    &  RSA &AES(256)     & SHA256 \\ \hline
+0x0088 & DHE-RSA-CAMELLIA256-SHA     & SSLv3   & DH    &  RSA &Camellia(256)& SHA1   \\ \hline
+0xC014 & ECDHE-RSA-AES256-SHA        & SSLv3   & ECDH  &  RSA &AES(256)     & SHA1   \\ \hline
+0x0039 & DHE-RSA-AES256-SHA          & SSLv3   & DH    &  RSA &AES(256)     & SHA1   \\ \hline
+0x0035 & AES256-SHA                  & SSLv3   & RSA   &  RSA &AES(256)     & SHA1   \\ \hline
+
+\end{tabular}
+\end{center}
+
+Compatibility:
+
+Note that this cipher suites will not work with anything using Windows XP's crypto stack (IE, Outlook), Java 6, Java 7 and Android 2.3. Java 7 could be made compatible by installing the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" (JCE). We could not verify yet if installing JCE also fixes the Java 7 DH-parameter length limitation (1024 bit). 
+
+
+
+\subsection{Chosing your own cipher suites}
+\label{section:ChosingYourOwnCipherSuites}
+\todo{ Adi... }
+
diff --git a/src/overview_common_crypto_systems.tex b/src/overview_common_crypto_systems.tex
deleted file mode 100644 (file)
index f95436b..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-\section{A brief overview of common crypto software}
-
-
-\subsection{Cipher suites and choices}
-
-In principle, system administrators who want to improve their servers need to make a hard decision between locking out some users while keeping very high cipher suite security levels or supporting as many users as possible while lowering some settings. 
-For reasonable cipher suite
-
-
-\subsubsection{Configuration A: strong, fewer clients}
-TLS 1.2; 
-Perfect forward secrecy
-
-XXX make a table!!! Add the clients (color coded?)
-\begin{verbatim}
-          0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
-          0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
-          0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
-          0x00,0x6B - DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
-\end{verbatim}
-
-When to use this set of settings?
-M2M communications... You have your own PKI, corporate setting where you can control clients
-
-
-\subsubsection{Configuration B: weaker but many clients}
-
-TLS 1.2, TLS 1.1, TLS 1.0, SSLv3, -SSLv2
-
-string="EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EDH+CAMELLIA256:EECDH:EDH+aRSA:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED:!CAMELLIA128:!ECDSA:AES256-SHA"
-
-$\implies$ resolves to openssl ciphers -V \$string
-
-
-XXX make a table!!! Add the clients (color coded?)
-\begin{verbatim}
-          0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
-          0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
-          0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA384
-          0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA256
-          0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
-          0x00,0x6B - DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256
-          0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
-          0x00,0x67 - DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA256
-          0x00,0x88 - DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
-          0xC0,0x14 - ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
-          0xC0,0x13 - ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
-          0x00,0x39 - DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
-          0x00,0x33 - DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
-\end{verbatim}
-
-
-
-
-