Added HSTS section
authormartin-rublik <martin.rublik@gmail.com>
Mon, 5 May 2014 12:05:03 +0000 (13:05 +0100)
committermartin-rublik <martin.rublik@gmail.com>
Mon, 5 May 2014 12:05:03 +0000 (13:05 +0100)
src/acknowledgements.tex
src/theory.tex
src/theory/TLS.tex [new file with mode: 0644]
src/theory/tls/HSTS.tex [new file with mode: 0644]

index 24ad838..7978982 100644 (file)
@@ -26,6 +26,7 @@ Petukhova, Anna (Logo) \\
 Pichler, Patrick \\
 Riebesel, Nicolas \\
 Roeckx, Kurt \\
+Rublik, Martin \\
 Seidl, Eva (PDF layout) \\
 Wagner, Sebastian («sebix») \\
 Zangerl, Alexander \\
index 83ded83..fcada95 100644 (file)
@@ -6,3 +6,4 @@
 \input{theory/SHA}
 \input{theory/DH}
 \input{theory/PKIs}
+\input{theory/TLS}
\ No newline at end of file
diff --git a/src/theory/TLS.tex b/src/theory/TLS.tex
new file mode 100644 (file)
index 0000000..1b5fd11
--- /dev/null
@@ -0,0 +1,18 @@
+\section{TLS and its support mechanisms}
+\label{section:TLS}
+\todo{Add a short intro}
+
+\subsection{HTTP Strict Transport Security}
+\label{subsection:HSTS}
+\input{"./theory/tls/HSTS.tex"}
+%\fixme{Secure Sockets Layer} is a network security protocol that aims to 
+%provide confidentiality and authenticity of transmitted data. It is used 
+%widely to protect higher level application protocols such as HTTP, SMTP, 
+%IMAP, POP3, LDAP, etc.
+
+%If SSL/TLS is correctly configured and used, it provides decent degree of security against eavesdropping and man-in-the-middle attacks. On the other hand, as illustrated by \fixme, there are several ways to defeat the protection.    
+
+%The attacks can be either active or passive from network communications point of view. An 
+%active attacker can modify the network communications and a passive attacker only. 
+
+%relevant  
diff --git a/src/theory/tls/HSTS.tex b/src/theory/tls/HSTS.tex
new file mode 100644 (file)
index 0000000..e7e67c8
--- /dev/null
@@ -0,0 +1,70 @@
+%\subsection{HTTP Strict Transport Security}
+HTTP Strict Transport Security (HSTS) is a web security policy mechanism. HSTS is realized through HTTP header by which a web server declares that complying user agents (web browsers) should interact with it by using \emph{only} secure HTTPS connections\footnote{\url{https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security}}. 
+
+HSTS header is bound to DNS name or domain by which the server was accessed. For example if server serves content for two domains and it is HTTPS enabled only for one domain, the browser won't enforce HSTS for the latter. 
+
+HSTS reduces the risk of unintentional mistakes (such as missing HTTPS links within one domain or its subdomains) as well as the active man-in-the-middle attacks (such as SSL striping or impersonation attacks with \emph{untrusted} certificate). 
+
+After the web browser receives a HSTS header in a \emph{correctly}\footnote{Website must load without SSL/TLS browser warnings (certificate is issued by a trusted CA, contains correct DNS name, it is time valid, etc.)} prepared SSL session it will automatically use secure HTTPS links for accessing the server. This prevents unencrypted HTTP access (SSL striping, mistyped HTTPS URLs, etc.) when the server is accessed later by the client. 
+
+When a server (that previously emitted a HSTS header) starts using untrusted certificate, complying user agent must show an error message and \emph{block the server connection}. Thus impersonation MITM attack with \emph{untrusted} certificate cannot occur.
+
+For the first time setup HSTS header needs a trusted secure connection over HTTPS. This limitation can be addressed by compiling a list of STS enabled sites  directly into a browser\footnote{List of the preloaded sites can be found at \url{http://dev.chromium.org/sts}. This list is managed by Google/Chrome but it is also used by Firefox \url{https://wiki.mozilla.org/Privacy/Features/HSTS_Preload_List}}. 
+
+\subsubsection{HSTS Header Directives}
+\label{subsubsection:HSTS Header Directives}
+HSTS header can be parametrized by two directives:
+\begin{itemize*}
+  \item max-age=<number-of-seconds> 
+       \item includeSubdomains 
+\end{itemize*}
+
+\emph{max-age} is a required directive. This directive indicates the number of seconds during which the user agent should enforce the HSTS policy (after the reception of the STS header field from a server).
+
+\emph{includeSubdomains} is an optional directive. This directive indicates that the HSTS Policy applies to this HSTS Host as well as \emph{any subdomains of the host's domain name}.
+
+\subsubsection{HSTS Client Support}
+\label{subsubsection:HSTS Client Support}
+HSTS is supported\footnote{\url{http://caniuse.com/stricttransportsecurity}} by these web browsers:
+\begin{itemize*}
+  \item Firefox version >= v4.0
+       \item Chrome version >= 4.0
+       \item Android Browser >=4.4
+       \item Opera version >= 12.0 
+       \item Opera mobile >= 16.0
+       \item Safari >= 7.0
+\end{itemize*}
+Microsoft should add HSTS support in Internet Explorer 12\footnote{\url{http://status.modern.ie/httpstricttransportsecurityhsts}}.
+
+\subsubsection{HSTS Considerations}
+\label{subsubsection:HSTS Considerations}
+Before enabling HSTS it is recommended to consider following:
+\begin{itemize*}
+  \item Is it \emph{required} to serve content or services over HTTP?
+       \item Enabling \emph{includeSubdomains} and SSL certificate management.
+       \item Proper value of \emph{max-age}. 
+\end{itemize*}
+
+It is recommended to serve all content using HTTPS, but there are exceptions to this rule as well. Consider running a private PKI\footnote{see \nameref{section:PKIs}}. CRLs and OCSP responses are published typically by HTTP protocol. If HSTS is enabled on the site where OCSP and CRLs are published the browser might fail fetching CRL or validating OCSP response.
+
+Similar reasoning goes for \emph{includeSubdomains}. One needs to be sure that HTTPS can be enforced for all subdomains. Moreover the administrators are advised to watch for expiration of the SSL certificate and handle the renewal process with caution. If a SSL certificate is renewed after expiration or misses a (HSTS enabled) domain name, the connection to site will break (without providing override mechanism to the end user).  
+
+Finally HSTS should be tested with lower \emph{max-age} values and deployed with higher \emph{max-age} values. 
+
+\subsubsection{Testing HSTS}
+\label{subsubsection:Testing HSTS}
+HSTS can be tested either using locally or through the Internet. 
+
+For local testing it is possible to utilize Chrome Web browser UI by typing \url{chrome://net-internals/#hsts}\footnote{see \url{http://blog.chromium.org/2011/06/new-chromium-security-features-june.html}} in the address bar.
+
+Testing over the Internet can be conducted by Qualys SSL Labs test \url{https://www.ssllabs.com/ssltest/}. \emph{Strict Transport Security (HSTS)} information is located in the \emph{Protocol Details} section.
+
+\subsubsection{References}
+\begin{itemize*}
+       \item Websites Must Use HSTS in Order to Be Secure \url{https://www.eff.org/deeplinks/2014/02/websites-hsts}
+       \item OWASP: HTTP Strict Transport Security: \url{https://www.owasp.org/index.php/HTTP_Strict_Transport_Security}
+       \item HSTS Browser Compatibility List: \url{http://caniuse.com/stricttransportsecurity}
+  \item RFC 6797:HTTP Strict Transport Security (HSTS) - Examples: \url{https://tools.ietf.org/html/rfc6797#section-6.2}
+\end{itemize*}
+
+