Difference between revisions of "Enhancing SSL Security"

[unchecked revision][checked revision]
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
+++ DRAFT +++ DRAFT +++ DRAFT +++ DRAFT +++ DRAFT +++ DRAFT +++ DRAFT +++
 
 
 
The default configuration of most operating systems allow any set of supported ciphers and hashes to be used by applications when acting as SSL client or server. While this ensures full compatibility with other client and server applications, it does no longer match the expectation in SSL encrypted communication in regards to privacy and trust due to supporting insecure protocols, cipher suites and hash algorithms.
 
The default configuration of most operating systems allow any set of supported ciphers and hashes to be used by applications when acting as SSL client or server. While this ensures full compatibility with other client and server applications, it does no longer match the expectation in SSL encrypted communication in regards to privacy and trust due to supporting insecure protocols, cipher suites and hash algorithms.
  
 
Thus enhancing the security of SSL mainly consists of disabling these insecure protocols, ciphers and hashes as well as prioritize cipher suites that allow the usage of [[wikipedia:Perfect Forward Secrecy|Perfect Forward Secrecy]].
 
Thus enhancing the security of SSL mainly consists of disabling these insecure protocols, ciphers and hashes as well as prioritize cipher suites that allow the usage of [[wikipedia:Perfect Forward Secrecy|Perfect Forward Secrecy]].
  
As all components of the MailStore Service Provider Edition rely on Windows' security support provider (SSP) called ''Secure Channel'' (also known as ''Schannel''), a number of registry keys have to be created or modified in order to disable insecure protocols, ciphers and hashes. Although Microsoft's Technet article [http://support.microsoft.com/kb/245030 How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll] describes in detail which registry keys affect the security provider settings, it is not recommended to manually change these keys. A safer way to adjust the ''Schannel'' settings for server applications is [https://www.nartac.com/ Nartac Software's IIS Crypto] tool.
+
As all components of the MailStore Service Provider Edition rely on Windows' security support provider (SSP) called ''Secure Channel'' (also known as ''Schannel''), a number of registry keys have to be created or modified in order to disable insecure protocols, ciphers and hashes. Although Microsoft's article [https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings Transport Layer Security (TLS) registry settings] describes in detail which registry keys affect the security provider settings, it is not recommended to manually change these keys. A safer way to adjust the ''Schannel'' settings for server applications is [https://www.nartac.com/ Nartac Software's IIS Crypto] tool.
  
 
== Recommended Settings ==
 
== Recommended Settings ==
Highest level of security can be achieved with the following settings in ''IIS Crypto''. In a multi-server setup of MailStore SPE, the changes should be applied to all servers with Management Server or Client Access Server role. P
+
Highest level of security can be achieved with the following settings in ''IIS Crypto''. In a multi-server setup of MailStore SPE, the changes should be applied to all servers with Management Server or Client Access Server role. Some options are only available on Windows Server 2022 and Windows 11.
 
 
<p class="msnote">'''Please notice:''' The recommended settings will prevent Windows XP clients from connecting to MailStore SPE. If supporting Windows XP clients is mandatory, use the ''Best Practice'' template of ''IIS Crypto'' which re-enables the slightly weaker ''SSL 3.0'' protocol as well as the ''Tripple DES 168/168'' and ''RC4 128/128'' ciphers and ''MD5'' hashes.</p>
 
  
 
{| class="wikitable"
 
{| class="wikitable"
 
| '''Protocols Enabled'''
 
| '''Protocols Enabled'''
| TLS 1.0<br/>TLS 1.1<br/>TLS 1.2
+
| TLS 1.3<br/>
 +
TLS 1.2
 
|-
 
|-
 
| '''Ciphers Enabled'''
 
| '''Ciphers Enabled'''
| AES 128/128<br/>AES 256/256
+
| AES 128/128<br/>
 +
AES 256/256
 
|-
 
|-
 
| '''Hashes Enabled'''
 
| '''Hashes Enabled'''
| SHA
+
| SHA<br/>
 +
SHA256<br/>
 +
SHA384<br/>
 +
SHA512<br/>
 
|-
 
|-
 
| '''Key Exchange Enabled'''
 
| '''Key Exchange Enabled'''
| Diffie-Hellman<br/>PKCS
+
| Diffie-Hellman<br/>
 +
PKCS<br/>
 +
ECDH
 
|-
 
|-
 
| '''SSL Cipher Suite Order'''
 
| '''SSL Cipher Suite Order'''
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521<br/>
+
| TLS_AES_256_GCM_SHA384<br/>
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384<br/>
+
TLS_AES_128_GCM_SHA256<br/>
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256<br/>
+
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384<br/>
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521<br/>
+
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256<br/>
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384<br/>
+
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384<br/>
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256<br/>
+
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521<br/>
+
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521<br/>
+
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384<br/>
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256<br/>
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA<br/>
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384<br/>
+
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA<br/>
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384<br/>
 
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256<br/>
 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256<br/>
 
TLS_DHE_DSS_WITH_AES_256_CBC_SHA<br/>
 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256<br/>
 
TLS_DHE_DSS_WITH_AES_128_CBC_SHA<br/>
 
TLS_RSA_WITH_AES_256_CBC_SHA256<br/>
 
TLS_RSA_WITH_AES_256_CBC_SHA<br/>
 
TLS_RSA_WITH_AES_128_CBC_SHA256<br/>
 
TLS_RSA_WITH_AES_128_CBC_SHA<br/>
 
 
|}
 
|}

Latest revision as of 14:13, 22 August 2023

The default configuration of most operating systems allow any set of supported ciphers and hashes to be used by applications when acting as SSL client or server. While this ensures full compatibility with other client and server applications, it does no longer match the expectation in SSL encrypted communication in regards to privacy and trust due to supporting insecure protocols, cipher suites and hash algorithms.

Thus enhancing the security of SSL mainly consists of disabling these insecure protocols, ciphers and hashes as well as prioritize cipher suites that allow the usage of Perfect Forward Secrecy.

As all components of the MailStore Service Provider Edition rely on Windows' security support provider (SSP) called Secure Channel (also known as Schannel), a number of registry keys have to be created or modified in order to disable insecure protocols, ciphers and hashes. Although Microsoft's article Transport Layer Security (TLS) registry settings describes in detail which registry keys affect the security provider settings, it is not recommended to manually change these keys. A safer way to adjust the Schannel settings for server applications is Nartac Software's IIS Crypto tool.

Recommended Settings

Highest level of security can be achieved with the following settings in IIS Crypto. In a multi-server setup of MailStore SPE, the changes should be applied to all servers with Management Server or Client Access Server role. Some options are only available on Windows Server 2022 and Windows 11.

Protocols Enabled TLS 1.3

TLS 1.2

Ciphers Enabled AES 128/128

AES 256/256

Hashes Enabled SHA

SHA256
SHA384
SHA512

Key Exchange Enabled Diffie-Hellman

PKCS
ECDH

SSL Cipher Suite Order TLS_AES_256_GCM_SHA384

TLS_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA