You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: "More relevant technical concepts relating to HTTPS."
3
+
title: Technical Guidelines
4
+
permalink: /technical-guidelines/
5
+
description: "Technical guidelines relating to HTTPS strength and quality."
6
6
---
7
7
8
+
This page covers some relevant technical concepts relevant to the **strength and quality** of a server's HTTPS configuration.
8
9
9
-
### Forward Secrecy
10
+
*[SSL and TLS](#ssl-and-tls)
11
+
*[Forward secrecy](#forward-secrecy)
12
+
*[Signature algorithms](#signature-algorithms), such as SHA-1 and SHA-2
13
+
*[RC4](#rc4), a common but insecure cipher
10
14
11
-
In regular TLS connections, a temporary secret key is generated by the client, encrypted using the public key of the server, and then sent over the network to the server. This means that anyone possessing a copy of the private key of the server can learn the temporary secret and then decrypt all of the traffic sent in that connection. To make matters worse, if an attacker is able to gain access to the private key, they can decrypt all past messages no matter how long ago they were as long as they still have a copy of the original encrypted data.
15
+
### SSL and TLS
12
16
13
-
Forward secrecy is a mechanism which allows the client and server to agree on a temporary secret key without ever transmitting it over the network. This means that in order to decrypt traffic on the network you need both a temporary secret stored on the server *and* a temporary secret stored on the client. Possessing just one of those secrets without the other is not enough to decrypt past traffic.
17
+
HTTPS today uses **Transport Layer Security**, or **TLS**. TLS is a network protocol that establishes an encrypted connection to an authenticated peer over an untrusted network.
14
18
15
-
In TLS, forward secrecy is provided by the [Ephemeral Diffie-Hellman (DHE)](https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange) and [Ephemeral Elliptic Curve Diffie–Hellman (ECDHE)](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) key exchanges. It is ideal to have the strength of your key exchange be equivalent to that of your certificate, which means that for a 2048 bit RSA key, you want 2048 bit DHE params or roughly 256 bits for ECDHE. ECDHE is preferable to DHE because it is much faster.
19
+
Earlier, less secure versions of this protocol were called **Secure Sockets Layer**, or **SSL)**.
16
20
17
-
18
-
### RC4
19
-
20
-
There are a number of ciphers available to a TLS connection, and one of those is the [RC4](https://en.wikipedia.org/wiki/RC4) (Also known as ARC4 or ARCFOUR). RC4 was a popular cipher due to being a fast cipher which was not vulnerable to the [BEAST](https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls) attack. However in 2013 it was announced that [RC4 had a serious flaw](http://www.isg.rhul.ac.uk/tls/) that would make it possible for a determined attacker to decrypt data encrypted with RC4 in TLS.
21
-
22
-
Due to the serious flaw in RC4 and the fact that the BEAST attack has been mitigated by all modern browsers, all HTTPS sites should be configured to use ciphers other than RC4.
23
-
24
-
25
-
### Protocols: SSL and TLS
26
-
27
-
HTTPS today uses **Transport Layer Security (TLS)**. TLS is a network protocol that establishes an encrypted connection to an authenticated peer over an untrusted network.
28
-
29
-
Earlier, less secure versions of this protocol went by the name **Secure Sockets Layer (SSL)**.
30
-
31
-
SSL and TLS do the same thing, and because of its early ubiquity, "SSL" is frequently used today to generically refer to TLS/HTTPS. However, all versions of SSL as a protocol are now considered insecure for modern use.
21
+
SSL and TLS perform the same function, and TLS is a direct successor and replacement for TLS. Because of its early ubiquity, "SSL" is frequently used today to generically refer to TLS/HTTPS. However, all versions of SSL as a protocol are now considered insecure for modern use.
32
22
33
23
The major versions of SSL/TLS in use today are:
34
24
@@ -45,25 +35,42 @@ A downgrade attack can be prevented by using **[TLS Fallback SCSV](https://tools
45
35
46
36
For more details of NIST recommendations, read [NIST Special Publication 800-52](http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-52r1.pdf).
***[The Pulse HTTPS dashboard for .gov domains](https://pulse.cio.gov/https/domains/)** will note when a domain still offers insecure SSLv3, or when a domain does not yet offer TLSv1.2.
39
+
***[https.cio.gov is configured](https://www.ssllabs.com/ssltest/analyze.html?d=https.cio.gov)** to support TLSv1.0, TLSv1.1, and TLSv1.2, and has TLS Fallback SCSV enabled.
40
+
41
+
### Forward secrecy
42
+
43
+
**Forward secrecy** protects information sent over an encrypted HTTPS connection _now_ from being decrypted _later_, even if the server's private key is later compromised.
44
+
45
+
In non-forward-secret HTTPS connections, if an attacker records encrypted traffic between a website and its visitors, and later obtains the website's private key, that key can be used to decrypt all past recorded traffic.
49
46
50
-
A key component of the TLS security model is X.509 certificates, which use cascading signatures. A root certificate authority's certificate (which is included with your OS) is used to sign an intermediary certificate, which is used to sign your website's certificate.
47
+
In forward secret connections, the server and client create a temporary key for every new session that gets effectively "thrown away" after the session is complete. This means that even if the server's base private key is compromised, an attacker can't retroactively decrypt information.
51
48
52
-
A part of this signature process is computing the hash of the data included in the certificate. Right now the [web is in the process of migrating the recommended hashing algorithm from SHA-1 to SHA-256](http://googleonlinesecurity.blogspot.com/2014/09/gradually-sunsetting-sha-1.html), as a result of increasingly advanced cryptanalysis of SHA-1.
49
+
In TLS, forward secrecy is provided by choosing ciphersuites that include the [Ephemeral Diffie-Hellman (DHE)](https://en.wikipedia.org/wiki/Diffie–Hellman_key_exchange) and [Ephemeral Elliptic Curve Diffie–Hellman (ECDHE)](https://en.wikipedia.org/wiki/Elliptic_curve_Diffie%E2%80%93Hellman) key exchanges.
53
50
54
-
Any new certificates you acquire will generate the "yellow lock" icon in Chrome if they, or any of the intermediary certificates in the chain, use SHA-1. Therefore when generating a new certificate it's important to check with your CA to make sure both your certificate, and their intermediates, use SHA-256.
51
+
***[The Pulse HTTPS dashboard for .gov domains](https://pulse.cio.gov/https/domains/)** will note when a domain offers little or no forward secrecy.
52
+
***[https.cio.gov is configured](https://www.ssllabs.com/ssltest/analyze.html?d=https.cio.gov)** to offer robust forward secrecy.
55
53
54
+
### Signature algorithms
56
55
57
-
### Session Tickets and Session IDs
56
+
The HTTPS/TLS security model uses "certificates" to guarantee authenticity. These certificates are cryptographically "signed" by a trusted certificate authority.
58
57
59
-
Opening a TLS connection is a fairly expensive and slow process which includes several round trips of data and some fairly slow cryptography. It's not unusual for the handshake to take 300ms or more to fully complete. However TLS includes two different mechanisms which allow a client to reuse a previous handshake for a period of time to reduce the time it takes to establish a secure connection.
58
+
The certificate authority's trusted root certificate (which is included with your OS or browser) is used to sign an intermediary certificate, which is used to sign your website's certificate. There may be more than one intermediary certificate in the chain.
60
59
61
-
The first of these methods is called Session ID. In this method the server generates a unique identifier for the connection and records all of the information it needs to reuse a handshake under that ID. It then communicates the unique identifier to the client. When the client receives the unique identifier it also records the information it needs to reuse the connection along with the unique identifier. On subsequent connections it will tell the server that it has a previous session by including the unique identifier when it first starts to open the connection. When the server sees that the client is attempting to connect it will notice that it included a session ID, and if it has the information still recorded it will tell the client to just reuse that session instead of finishing the longer handshake.
60
+
A part of the signature process is computing a "hash" of the data included in the certificate. This can be done using a standard hashing algorithm, such as [SHA-1](https://en.wikipedia.org/wiki/SHA-1) or [SHA-2](https://en.wikipedia.org/wiki/SHA-2).
62
61
63
-
Session IDs rely on storing per client state on the server and if you have more than one server terminating TLS it requires a strategy to ensure that when the client connects they will connect to a server that knows about their session ID. The two primary ways of doing this are by using a shared storage method and by ensuring that the same client is likely to get routed to the same server each time.
62
+
SHA-1 has been shown to have serious weaknesses, and so browser and OS providers like [Google](http://googleonlinesecurity.blogspot.com/2014/09/gradually-sunsetting-sha-1.html), [Microsoft](http://blogs.technet.com/b/pki/archive/2013/11/12/sha1-deprecation-policy.aspx), and [Mozilla](https://blog.mozilla.org/security/2014/09/23/phasing-out-certificates-with-sha-1-based-signature-algorithms/) have announced timelines to deprecate SHA-1 in favor of the SHA-2 family of algorithms.
63
+
64
+
While details on browser and OS policies vary, site owners should generally consider SHA-1 to be unsupported by January 2017.
65
+
66
+
***[The Pulse HTTPS dashboard for .gov domains](https://pulse.cio.gov/https/domains/)** will note when a domain is still using a certificate signed with SHA-1.
67
+
***[https.cio.gov is configured](https://www.ssllabs.com/ssltest/analyze.html?d=https.cio.gov)** to use a certificate chain signed with SHA-2.
68
+
69
+
### RC4
64
70
65
-
The second method is called Session Tickets, and like session IDs it works by recording all of the information needed for the server to reuse the existing handshake. However instead of storing this on the server and generating a unique identifier the server encrypts this data and then gives it to the client in the form of a session ticket. When the client attempts to establish a new connection it will include this session ticket and, if the server can decrypt it, the server and client can reuse the previous handshake through the information included in that ticket.
71
+
There are a number of ciphers available to a TLS connection, and one of those is the [RC4](https://en.wikipedia.org/wiki/RC4) (Also known as ARC4 or ARCFOUR). RC4 was a popular cipher due to being a fast cipher which was not vulnerable to the [BEAST](https://community.qualys.com/blogs/securitylabs/2011/10/17/mitigating-the-beast-attack-on-tls) attack. However, in 2013 it was announced that [RC4 had a serious flaw](http://www.isg.rhul.ac.uk/tls/) that would make it possible for a determined attacker to decrypt data encrypted with RC4 in TLS.
66
72
67
-
Using session tickets requires similar strategies to Session IDs, except instead of needing to share session data between all servers all servers must be configured with the same secret key which is used to encrypt the session tickets or a client must be routed to the same server as their last connection.
73
+
Due to the serious flaw in RC4, and the fact that the BEAST attack has been mitigated by all modern browsers, all HTTPS sites should be configured to use ciphers other than RC4.
68
74
69
-
The use of these methods to resume a previous session can greatly speed up the creation of a new TLS connection, allowing the connection to skip doing the most expensive parts of the handshake. However if they are not handled carefully they can [remove the benefit of forward secrecy](https://www.imperialviolet.org/2013/06/27/botchingpfs.html) because anyone who is able to access the session data can decrypt anything sent using any connection that relied on that session data.
75
+
***[The Pulse HTTPS dashboard for .gov domains](https://pulse.cio.gov/https/domains/)** will note when a domain employs the RC4 cipher.
76
+
***[https.cio.gov is configured](https://www.ssllabs.com/ssltest/analyze.html?d=https.cio.gov)** to avoid using the RC4 cipher.
0 commit comments