Merge branch 'master' of github.com:BetterCrypto/Applied-Crypto-Hardening
authorsebix <szebi@gmx.at>
Wed, 25 Dec 2013 20:27:25 +0000 (21:27 +0100)
committersebix <szebi@gmx.at>
Wed, 25 Dec 2013 20:27:25 +0000 (21:27 +0100)
Conflicts:
src/acknowledgements.tex
src/practical_settings/DBs.tex
src/practical_settings/im.tex
src/practical_settings/vpn.tex
src/practical_settings/webserver.tex

19 files changed:
src/acknowledgements.tex
src/applied-crypto-hardening.tex
src/disclaimer.tex
src/img/howtoread-eps-converted-to.pdf [new file with mode: 0644]
src/img/howtoread.dot
src/img/howtoread.eps
src/links.tex
src/practical_settings/DBs.tex
src/practical_settings/im.tex
src/practical_settings/mailserver.tex
src/practical_settings/ssh.tex
src/practical_settings/vpn.tex
src/security.bib
src/ssllibs.tex
src/theory/DH.tex
src/theory/ECC.tex
src/theory/PKIs.tex
src/theory/RNGs.tex
src/theory/cipher_suites/recommended.tex

index f73240b..20bbffd 100644 (file)
@@ -1,8 +1,11 @@
 \newpage
-\section*{Acknowledgements}
+\section{Acknowledgements}
 \label{section:Reviewers}
 
 
+%\todo{refs to this section do not work, see methods and disclaimer}
+% fixed! it was "section*{" versus "section{"
+
 We would like to express our thanks to the following reviewers and people who have generously offered their time and interest (in alphabetical order):
 
 
@@ -16,11 +19,14 @@ Grigg, Ian  \\
 Horenbeck, Maarten \\
 Kovacic, Daniel \\
 Lenzhofer, Stefan \\
+Lor\"unser, Thomas \\
 Mendel, Florian \\
 Millauer, Tobias \\
 \end{minipage}
 \begin{minipage}[b]{0.5\linewidth}
 \center
+Pacher, Christoph \\
+Palfrader, Peter \\
 Pichler, Patrick \\
 Petukhova, Anna (Logo) \\
 Pöschl, Ulrich \\
@@ -28,6 +34,7 @@ San, Berg \\
 Schreck, Thomas  \\
 Seidl, Eva (PDF layout) \\
 Wagner, Sebastian («sebix») \\
+Zangerl, Alexander \\
 \end{minipage}
 
 \vline{}
index a7f6391..20372ae 100644 (file)
@@ -25,7 +25,6 @@
 \usepackage[hang, small,labelfont=bf,up,textfont=it,up]{caption}       % Custom captions under/above floats
 \usepackage{epstopdf}                                                                                          % Converts .eps to .pdf
 \usepackage{subfig}                                                                                                    % Subfigures
-\usepackage{booktabs}                                                                                          % Nicer tables
 \usepackage{fix-cm}                                                                                                    % Custom fontsizes
 
 \usepackage[usenames,dvipsnames]{color}
 \newcommand{\yes}{\textcolor{green}{\ding{51}}}
 \newcommand{\no}{\textcolor{red}{\ding{55}}}
 
-% human tables
-\usepackage{booktabs}
-
-\renewcommand{\arraystretch}{1.25}
 
+% Colours
 \definecolor{green}{RGB}{32,113,10}
 \definecolor{orange}{RGB}{251,111,16}
 \definecolor{red}{RGB}{247,56,0}
@@ -163,11 +159,13 @@ xrightmargin=1.8pt,
 %%% Custom sectioning (sectsty package)
 \usepackage{sectsty}                                                                                                   % Custom sectioning (see below)
 \allsectionsfont{%                                                                                                                     % Change font of al section commands
-       \usefont{OT1}{phv}{b}{n}%                                                                               % bch-b-n: CharterBT-Bold font
+       %\usefont{OT1}{phv}{b}{n}%                                                                              % bch-b-n: CharterBT-Bold font 
+\bfseries                                                                                                                      % should make it Open Sans Bold
        }
 
 \sectionfont{%                                                                                                                         % Change font of \section command
-       \usefont{OT1}{phv}{b}{n}%                                                                               % bch-b-n: CharterBT-Bold font
+       %\usefont{OT1}{phv}{b}{n}%                                                                              % bch-b-n: CharterBT-Bold font
+\bfseries      
        }
 
 % use more of the page
@@ -209,14 +207,15 @@ xrightmargin=1.8pt,
 
 
 \pretitle{\vspace{-30pt} \begin{flushleft} \HorRule 
-                               \fontsize{36}{36}  \color{darkblue} \selectfont 
+                               \fontsize{35}{36} \bfseries \color{darkblue} \selectfont 
                                }
                        \title{Applied Crypto Hardening}% \\ \vskip 0.5em \large www.bettercrypto.org}
 \posttitle{\par\end{flushleft}\vskip 0.5em}
 
 \preauthor{\begin{flushleft}
-                                       \large \lineskip 0.5em  \color{intersectgreen}}
-
+                                       \large \lineskip 0.5em  
+                                       \color{intersectgreen}}
+                                       %\vskip 0.5em
                                        \author{Wolfgang Breyha, David Durvaux, Tobias Dussa, L. Aaron
                                        Kaplan, Florian Mendel, Christian Mock, Manuel Koschuch, Adi
                                        Kriegisch, Ulrich Pöschl, Ramin Sabet, Berg San, Ralf Schlatterbeck, 
@@ -234,12 +233,15 @@ xrightmargin=1.8pt,
 
 \setlength{\parindent}{0cm}
 
-\postauthor{\footnotesize  \color{Black} 
-\\ \vskip 0.5em  (University of Vienna, CERT.be, KIT-CERT, CERT.at, IAIK, coretec.at, FH Campus Wien, VRVis, MilCERT Austria, A-Trust, , Runtux.com, Friedrich-Alexander University Erlangen-Nuremberg, azet.org, maclemon.at)
+\postauthor{\footnotesize  \color{Black}  \vskip 2.5em
+  (University of Vienna, CERT.be, KIT-CERT, CERT.at, IAIK, coretec.at, FH Campus Wien, VRVis, MilCERT Austria, A-Trust, Runtux.com, Friedrich-Alexander University Erlangen-Nuremberg, azet.org, maclemon.at)
                                        \par\end{flushleft}\HorRule}
 
 \date{\today}
 
+%tell TeX where to look for graphics/logos
+\graphicspath{ {/img/} }
+
 % hyperref needs to be the last package you load.
 \usepackage[pdftex,breaklinks,colorlinks,linkcolor=darkblue,citecolor=blue,urlcolor=blue]{hyperref}
 
@@ -255,6 +257,9 @@ xrightmargin=1.8pt,
 % The first character should be within \initial{}
 %\initial{H}\textbf{ere is some sample text to show the initial in the introductory paragraph of this template article. The color and lineheight of the initial can be modified in the preamble of this document.}
 
+% add logo graphic
+%\includegraphics{img/logo}
+
 \input{neboltai}
 \input{acknowledgements}
 \input{abstract}
index 8348b28..02bcc6a 100644 (file)
@@ -56,7 +56,7 @@ This guide can only describe what the authors currently
 \emph{believe} to be the best settings based on their personal experience and
 after intensive cross checking with literature and experts. For a complete list
 of people who reviewed this paper, see the section \ref{section:Reviewers}.
-Even though, multiple specialists reviewed the guide, the authors can give
+Even though multiple specialists reviewed the guide, the authors can give
 \emph{no guarantee whatsoever} that they made the right recommendations. Keep in
 mind that tomorrow there might be new attacks on some ciphers and many of the
 recommendations in this guide might turn out to be wrong. Security is a
diff --git a/src/img/howtoread-eps-converted-to.pdf b/src/img/howtoread-eps-converted-to.pdf
new file mode 100644 (file)
index 0000000..bd56279
Binary files /dev/null and b/src/img/howtoread-eps-converted-to.pdf differ
index 557aa61..a968152 100644 (file)
@@ -1,7 +1,7 @@
 digraph {
 //ranksep=".9 equally";
 //rankdir="LR";
-start [label="Start"];
+start [shape=circle, label="Start"];
 
 start -> intro; 
 
index 4b790e4..6c18d52 100644 (file)
@@ -1,8 +1,8 @@
 %!PS-Adobe-3.0 EPSF-3.0
-%%Creator: graphviz version 2.34.0 (20131122.1926)
+%%Creator: graphviz version 2.34.0 (20131224.1117)
 %%Title: %3
 %%Pages: 1
-%%BoundingBox: 36 36 550 464
+%%BoundingBox: 36 36 550 484
 %%EndComments
 save
 %%BeginProlog
@@ -179,20 +179,20 @@ def
 %%EndSetup
 setupLatin1
 %%Page: 1 1
-%%PageBoundingBox: 36 36 550 464
+%%PageBoundingBox: 36 36 550 484
 %%PageOrientation: Portrait
 0 0 1 beginpage
 gsave
-36 36 514 428 boxprim clip newpath
+36 36 514 448 boxprim clip newpath
 1 1 set_scale 0 rotate 40 40 translate
 % start
 gsave
 1 setlinewidth
 0 0 0 nodecolor
-111 402 27.42 18 ellipse_path stroke
+111 412 27.42 27.9 ellipse_path stroke
 0 0 0 nodecolor
 14 /Times-Roman set_font
-97.5 398.3 moveto 27 (Start) alignedtext
+97.5 408.3 moveto 27 (Start) alignedtext
 grestore
 % intro
 gsave
@@ -211,20 +211,20 @@ grestore
 gsave
 1 setlinewidth
 0 0 0 edgecolor
-newpath 111 383.94 moveto
-111 375.81 111 365.88 111 356.7 curveto
+newpath 111 383.7 moveto
+111 374.95 111 365.27 111 356.51 curveto
 stroke
 0 0 0 edgecolor
-newpath 114.5 356.44 moveto
-111 346.44 lineto
-107.5 356.44 lineto
+newpath 114.5 356.41 moveto
+111 346.41 lineto
+107.5 356.41 lineto
 closepath fill
 1 setlinewidth
 solid
 0 0 0 edgecolor
-newpath 114.5 356.44 moveto
-111 346.44 lineto
-107.5 356.44 lineto
+newpath 114.5 356.41 moveto
+111 346.41 lineto
+107.5 356.41 lineto
 closepath stroke
 grestore
 % decision
index cdffa0c..649f3c1 100644 (file)
@@ -25,4 +25,5 @@
 \item Ensuring High-Quality Randomness in Cryptographic Key Generation \url{http://arxiv.org/abs/1309.7366v1}
 \item Wikipedia: Ciphertext Stealing \url{http://en.wikipedia.org/wiki/Ciphertext_stealing}
 \item Wikipedia: Malleability (Cryptography) \url{http://en.wikipedia.org/wiki/Malleability_(cryptography)}
+\item Ritter's Crypto Glossary and Dictionary of Technical Cryptography \url{http://www.ciphersbyritter.com/GLOSSARY.HTM}
 \end{itemize}
index ad9e577..1f0b6a8 100644 (file)
@@ -13,7 +13,6 @@
 
 
 %% ---------------------------------------------------------------------- 
-\subsection{SQL Server}
 \todo{write this}
 
 
index 7e798a2..50db568 100644 (file)
@@ -83,9 +83,7 @@ There are no specific configurations required but the protocol itself is worth b
 %%---------------------------------------------------------------------- 
 \subsection{Charybdis}
 
-\todo{Quick draft -- to complete / review / validate}
-
-There are numerous implementations of IRC servers.  In this section, we choose \emph{Charybdis} which serve as basis for \emph{ircd-seven}\footnote{https://dev.freenode.net/redmine/projects/ircd-seven}, developed and used by freenode. Freenode is actually the biggest IRC network\footnote{http://irc.netsplit.de/networks/top10.php}. \emph{Charybdis} is being part of the \emph{Debian} \& \emph{Ubuntu} distributions.
+There are numerous implementations of IRC servers.  In this section, we choose \emph{Charybdis} which serves as basis for \emph{ircd-seven}\footnote{https://dev.freenode.net/redmine/projects/ircd-seven}, developed and used by freenode. Freenode is actually the biggest IRC network\footnote{http://irc.netsplit.de/networks/top10.php}. \emph{Charybdis} is part of the \emph{Debian} \& \emph{Ubuntu} distributions.
 
 \begin{lstlisting}
 /* Extensions */
index d80c1e9..54d194d 100644 (file)
@@ -95,9 +95,10 @@ parameters greater than 1024bit are not supported. The most recent version
 
 %% ---------------------------------------------------------------------- 
 
-\subsection{cyrus-imapd (based on 2.4.17)}
+\subsection{cyrus-imapd}
 
-\subsubsection{Tested with Version} \todo{FIXME: add}
+\subsubsection{Tested with Version}
+2.4.17
 
 \subsubsection{Settings}
 \paragraph*{imapd.conf}\mbox{}\\
@@ -289,8 +290,6 @@ $ zegrep "TLS connection established from.*with cipher" | /var/log/mail.log | aw
  openssl s_client -starttls smtp -crlf -connect SERVER.TLD:25
 \end{lstlisting}
 
-\subsubsection{References} \todo{FIXME}
-
 %% ---------------------------------------------------------------------- 
 
 \subsection{Exim (based on 4.82)}
@@ -453,9 +452,9 @@ There already is a working patch to provide support:\\
 
 
 %% ----------------------------------------------------------------------
-\subsection{Exchange}
+%\subsection{Exchange}
 
-\todo{FIXME: write this section}
+%\todo{FIXME: write this section}
 
 
 
index 0d765e7..e7f9555 100644 (file)
@@ -17,8 +17,7 @@
        KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
 \end{lstlisting}
 
-% XXX: curve25519-sha256@libssh.org only available upstream(!)
-Note: Older Linux systems won't support SHA2. PuTTY (Windows) does not support
+\textbf{Note:} Older Linux systems won't support SHA2. PuTTY (Windows) does not support
 RIPE-MD160. Curve25519, AES-GCM and UMAC are only available upstream (OpenSSH
 6.1). DSA host keys have been removed on purpose, the DSS standard does not
 support for DSA keys stronger than 1024bit
@@ -27,7 +26,7 @@ below current standards (see section \ref{section:keylengths}). Legacy systems
 can use this configuration and simply omit unsupported ciphers, key exchange
 algorithms and MACs.  
 \subsubsection{Additional settings}
-Note that the setting \texttt{ServerKeyBits 4096}  has no effect until you re-generate new ssh host keys. There might be issues if you have users which rely on the fingerprint of the old ssh host key being stored in their clients' \texttt{.ssh/known\_hosts} file.
+The setting \texttt{ServerKeyBits 4096}  has no effect until you re-generate new ssh host keys. There might be issues if you have users which rely on the fingerprint of the old ssh host key being stored in their clients' \texttt{.ssh/known\_hosts} file.
 %\subsubsection{Justification for special settings (if needed)}
 \subsubsection{References}
 The openssh sshd\_config  man page is the best reference: \url{http://www.openssh.org/cgi-bin/man.cgi?query=sshd_config}
index f8b5f89..77cf103 100644 (file)
@@ -101,7 +101,7 @@ vulnerabilities \footnote{\url{http://ikecrack.sourceforge.net/}}.
     Mode & Main Mode & Main Mode \\
     Encryption & AES-256 & AES, CAMELLIA (-256 or -128) \\
     Hash & SHA2-* & SHA2-*, SHA1 \\
-    DH Group & Group 14, 18 & Group 14, 18 \\
+    DH Group & Group 14-18 & Group 14-18 \\
 %    Lifetime & \todo{need recommendations; 1 day seems to be common
 %      practice} & \\
     \bottomrule
@@ -272,9 +272,8 @@ auth SHA384
 Client and server have to use compatible configurations, otherwise they can't communicate.
 The \verb|cipher| and \verb|auth| directives have to be identical.
 
-\todo{FIXME: we should use the CIPHERSTRINGB  macro here}
 \begin{lstlisting}
-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
+tls-cipher %*CIPHERSTRINGB*)
 cipher AES-256-CBC
 auth SHA384
 
index d604a5a..9b93099 100644 (file)
   title      = {Security engineering},
   author     = {Anderson, Ross},
   year       = {2008},
-  publisher  = {Wiley. com}
+  publisher  = {Wiley.com},
+  url        = {http://www.cl.cam.ac.uk/~rja14/book.html},
 }
 
 @misc{tschofenig-webpki,
   month = 07,
   day = 17,
 }
+
+@InProceedings{https13,
+       author = {Zakir Durumeric and James Kasten and Michael Bailey and J. Alex Halderman},
+       title = {Analysis of the {HTTPS} Certificate Ecosystem},
+       booktitle = {Proceedings of the 13th Internet Measurement Conference},
+       month = oct,
+       year = {2013},
+        url = {https://jhalderm.com/pub/papers/https-imc13.pdf},
+}
+
+@techreport{Wikipedia:TinyCA,
+   key       = {Wikipedia:TinyCA},
+   title     = {TinyCA},
+   institution = I_Wikipedia,
+   year      = {2013},
+   month     = Dec,
+   type      = {Wikipedia},
+   url       = {http://en.wikipedia.org/wiki/TinyCA},
+   note      = {Accessed 2013-12-24},
+}
+
index bee8583..09ec9d1 100644 (file)
@@ -10,7 +10,7 @@ using that feature. An example for that may be Apache supporting elliptic curve
 cryptography only from version 2.4 onwards, no matter if OpenSSL supported it or
 not.
 
-As you may see from the above, creating a secure setup isn't just a matter of
+As explained above, creating a secure setup isn't just a matter of
 configuration but also depends on several other factors with the most important
 being the SSL libraries and their support of protocols and cipher suites.
 Furthermore, applications actually need to make use of those.
@@ -23,9 +23,10 @@ string however is common to all versions and and library implementations:
 \texttt{TLS\_RSA\_CAMELLIA\_256\_CBC\_SHA1} in GnuTLS is equivalent to
 \texttt{CAMELLIA256-SHA} in OpenSSL and \texttt{TLS\_RSA\_WITH\_CAMELLIA\_256\_CBC\_SHA}
 in the IANA standard with the hex code \texttt{0x00,0x84} as specified
-in RFC5932\cite{rfc5932}.
+in RFC5932\cite{rfc5932}. Section \ref{section:cipher_suite_names}
+lists all currently defined cipher suites with their codes and both names.
 
-In any way, as a sysadmin you are required to check what the SSL libraries on
+Regardless of this clash of nomenclature, as a sysadmin you are required to check what the SSL libraries on
 your systems support on how you may get the most security out of your systems.
 
 \subsection{priority strings}
index 4a869a5..2b5d986 100644 (file)
@@ -4,8 +4,8 @@
 A common question is which Diffie Hellman (DH) Parameters  should be used for Diffie Hellman key exchanges\footnote{\url{http://crypto.stackexchange.com/questions/1963/how-large-should-a-diffie-hellman-p-be}}. We follow the recommendations in ECRYPT II, chapter 16.\cite{ii2011ecrypt}
 
 Where configurable, we recommend using the Diffie Hellman groups
-defined for IKE, specifically groups 14-18 (for MODP, \cite{rfc3526})
-and 19-21 (for elliptic curve DH, \cite{rfc5903}). These groups have
+defined for IKE, specifically groups 14-18 (2048--8192 bit MODP, \cite{rfc3526})
+and 19-21 (256--521 bit elliptic curve DH, \cite{rfc5903}). These groups have
 been checked by many eyes and can be assumed to be secure.
 
 For convenience, we provide these parameters as PEM files. \todo{put
index b688500..28ef7d9 100644 (file)
@@ -9,31 +9,28 @@ exceptions.''}{-- Felix Klein }
 
 Elliptic Curve Cryptography (simply called ECC from now on) is a branch of
 cryptography that emerged in the mid-1980s.  The security of the RSA
-algorithm is based on the assumption that factoring large primes is infeasible.
-Likewise the security of ECC, DH and DSA is based on the discrete logarithm
+algorithm is based on the assumption that factoring large numbers is infeasible.
+Likewise, the security of ECC, DH and DSA is based on the discrete logarithm
 problem\cite{Wikipedia:Discrete,McC90,WR13}.  Finding the discrete logarithm of
 an elliptic curve from its public base point is thought to be infeasible. This
 is known as the Elliptic Curve Discrete Logarithm Problem (ECDLP). ECC and the
-underlying mathematical foundation are not easy to understand - luckily there
+underlying mathematical foundation are not easy to understand - luckily, there
 have been some great introductions on the topic lately
 \footnote{\url{http://arstechnica.com/security/2013/10/a-relatively-easy-to-understand-primer-on-elliptic-curve-cryptography}}
 \footnote{\url{https://www.imperialviolet.org/2010/12/04/ecc.html}}
 \footnote{\url{http://www.isg.rhul.ac.uk/~sdg/ecc.html}}.
-
 ECC provides for much stronger security with less computationally expensive
-operations in comparison to traditional PKI algorithms (See the Section
+operations in comparison to traditional asymmetric algorithms (See the Section
 \ref{section:keylengths}).
-
-
 The security of ECC relies on the elliptic curves and curve points chosen as
 parameters for the algorithm in question. Well before the NSA-leak scandal
 there has been a lot of discussion regarding these parameters and their
 potential subversion. A part of the discussion involved recommended sets of
 curves and curve points chosen by different standardization bodies such as the
 National Institute of Standards and Technology (NIST)
-\footnote{\url{http://www.nist.gov}}. Which were later widely implemented in
+\footnote{\url{http://www.nist.gov}} which were later widely implemented in
 most common crypto libraries. Those parameters came under question repeatedly
-from cryptographers\cite{BL13,Sch13b,W13}.  At the time of writing there is
+from cryptographers\cite{BL13,Sch13b,W13}.  At the time of writing, there is
 ongoing research as to the security of various ECC parameters\cite{DJBSC}.
 Most software configured to rely on ECC (be it client or server) is not able to
 promote or black-list certain curves. It is the hope of the authors that such
index bc963c5..87ab65c 100644 (file)
@@ -1,15 +1,33 @@
 \section{Public Key Infrastructures}
 \label{section:PKIs}
 
-Public-Key Infrastructures aim to provide a way to simplify the verification of
-a certificate's trustworthiness.  For this, certificate authorities (CAs) are
-used to create a signature chain from the root CA down to the server (or client).
-Accepting a CA as a generally-trusted mediator solves the trust-scaling problem
-at the cost of introducing an actor that magically is more trustworthy.
-
-The first part of this section addresses how to obtain a certificate.  The
-second part offers recommendations on how to improve the security of your
-PKI.
+Public-Key Infrastructures try to solve the problem of verifying
+whether a public key belongs to a given entity, so as to prevent Man
+In The Middle attacks.
+
+There are two approaches to achieve that: {\it Certificate Authorities}
+and the {\it Web of Trust}.
+
+Certificate Authorities (CAs) sign end-entities' certificates, thereby
+associating some kind of identity (e.g. a domain name or an email
+address) with a public key. CAs are used with TLS and S/MIME
+certificates, and the CA system has a big list of possible and real
+problems which are summarized in section \ref{sec:hardeningpki} and
+\cite{https13}.
+
+The Web of Trust is a decentralized system where people sign each
+others keys, so that there is a high chance that there is a ``trust
+path'' from one key to another. This is used with PGP keys, and while
+it avoids most of the problems of the CA system, it is more
+cumbersome.
+
+As alternatives to these public systems, there are two more choices:
+running a private CA, and manually trusting keys (as it is used with
+SSH keys or manually trusted keys in web browsers).
+
+The first part of this section addresses how to obtain a certificate
+in the CA system. The second part offers recommendations on how to
+improve the security of your PKI.
 
 \subsection{Certificate Authorities}
 \label{sec:cas}
@@ -31,6 +49,11 @@ for issuing certificates.  Finally, in the research and education field, a
 number of CAs exist that are generally well-known and well-accepted within
 the higher-education community.
 
+A large number of CAs is pre-installed in client software's or
+operating system's``trust stores''; depending on your application, you
+have to select your CA according to this, or have a mechanism to
+distribute the chosen CA's root certificate to the clients.
+
 When requesting a certificate from a CA, it is vital that you generate the
 key pair yourself.  In particular, the private key should never be known to
 the CA.  If a CA offers to generate the key pair for you, you should not
@@ -82,6 +105,10 @@ issued a new root certificate, you can issue new certificates as follows:
 % sudo ./CA.pl -newreq
 \end{lstlisting}
 
+Alternatively, software such as TinyCA\cite{Wikipedia:TinyCA} that
+acts as a ``wrapper'' around OpenSSL and tries to make life easier is
+available.
+
 \subsubsection{Creating a Self-Signed Certificate}
 \label{sec:pki:selfsignedcert}
 If the desired trust level is very high and the number of systems involved
index 14c351a..f9d1f3f 100644 (file)
@@ -62,7 +62,7 @@ leading to predictable session keys\cite{HDWH12}.
 
 \todo{Other architectures, BSD, Windows?}
 
-On Linux there are two devices that return random bytes when read, the
+On Linux there are two devices that return random bytes when read; the
 \verb+/dev/random+ can block until sufficient entropy has been collected
 while \verb+/dev/urandom+ will not block and return whatever (possibly
 insufficient) entropy has been collected so far.
@@ -86,17 +86,17 @@ entropy collector to inject entropy into the kernel entropy pool.
 
 \subsection{Recommendations}
 
-To avoid situations where a newly deployed server has not enough
+To avoid situations where a newly deployed server doesn't have enough
 entropy it is recommended to generate keys (e.g. for SSL or SSH) on
-a system with enough entropy available and transfer the generated keys
+a system with a sufficient amount of entropy available and transfer the generated keys
 to the server.  This is especially advisable for small embedded devices
 or virtual machines.
 
 For embedded devices and virtual machines deploying additional userspace
 software that generates entropy and feeds this to kernel entropy pool
 (e.g. by writing to \verb+/dev/random+ on Linux) is recommended. Note
-that only a process run as root can update the entropy counters in the
-kernel, each non-root user-process can feed entropy to the pool but
+that only a process with root rights can update the entropy counters in the
+kernel; non-root or user processes can still feed entropy to the pool but
 cannot update the counters\cite{Wikipedia:/dev/random}.
 
 For Linux the \verb+haveged+
index f959f05..c1fc5d9 100644 (file)
@@ -16,11 +16,11 @@ throughout this document.\\
 
 \subsubsection{Configuration A: Strong ciphers, fewer clients}
 
-At the time of writing we recommend the following set of strong cipher
+At the time of writing, our recommendation is to use the following set of strong cipher
 suites which may be useful in an environment where one does not depend on many,
 different clients and where compatibility is not a big issue.  An example
 of such an environment might be machine-to-machine communication or corporate
-deployments where software that is to be used can be defined freely.
+deployments where software that is to be used can be defined without restrictions.
 
 
 We arrived at this set of cipher suites by selecting:
@@ -69,12 +69,12 @@ Win 7 and Win 8.1 crypto stack, Opera 17, OpenSSL $\ge$ 1.0.1e, Safari 6 / iOS
 
 
 
-\subsubsection{Configuration B: Weaker ciphers, more compatibility}
+\subsubsection{Configuration B: Weaker ciphers but better compatibility}
 
 In this section we propose a slightly weaker set of cipher suites.  For
-example, there are some known weaknesses for the SHA-1 hash function that is
+example, there are known weaknesses for the SHA-1 hash function that is
 included in this set.  The advantage of this set of cipher suites is not only
-the compatibility with a broad range of clients, but also less computational
+better compatibility with a broad range of clients, but also less computational
 workload on the provisioning hardware.
 \\
 
@@ -135,8 +135,8 @@ DH-parameter length limitation (1024 bit).
 \paragraph*{Explanation: }
 
 For a detailed explanation of the cipher suites chosen, please see
-\ref{section:ChoosingYourOwnCipherSuites}. In short, finding the perfect cipher
-string is impossible and must be a tradeoff between compatibility and security. 
+\ref{section:ChoosingYourOwnCipherSuites}. In short, finding a single perfect cipher
+string is practically impossible and there must be a tradeoff between compatibility and security. 
 On the one hand there are mandatory and optional ciphers defined in a few RFCs, 
 on the other hand there are clients and servers only implementing subsets of the 
 specification.