In den vorherigen Blog-Artikeln wurde allgemein über die Herausforderungen beim Thema E-Mail Sicherheit, die Möglichkeiten der TLS Übertragungsverschlüsselung und der E-Mail Signierung und Verschlüsselung mit S/MIME gesprochen.
In diesem Blog-Artikel werden die Verschlüsselungskomponenten beschrieben, die sowohl für die Sicherung des Übertragungskanals, als auch für die Nachrichtenverschlüsselung verwendet werden. Der Schwerpunkt des Artikels liegt auf der Security Provider Implementierung von Microsoft.
SCHANNEL – Secure Channel
Secure Channel ist das Security Support Provider Interface (SSPI) von Microsoft und wird von den unterschiedlichen Betriebssystemen bei Authentifizierungsvorgängen und bei verschlüsselter Kommunikation verwendet. Die unterstützen Verschlüsselungsalgorithmen variieren sehr stark, je nach Version des verwendeten Betriebssystems.
Cipher Suite
Eine sog. Cipher Suite beschreibt ein Sammlung von kryptografischen Algorithmen, die zur Schlüsselerstellung, Schlüsselaustausch und zur Verbindungsherstellung verwendet werden. Im Regelfall verwenden Softwarekomponenten auf Windowssystemen (Client und Server) die SCHANNEL Konfigurationen zur Verschlüsselung und Abwicklung der Kommunikation.
Jede zur Verfügung stehende Cipher Suite beschreibt eine festgelegte Kombination von
- FIPS Mode
- Unterstütztem Protokoll
- Algorithmus zum Schlüsselaustausch
- Algorithmus zur Verschlüsselung
- Algorithmus zum Hashing der Nachrichten
Die von Windows Server 2012R2 unterstützten Cipher Suites sind:
TLS_RSA_EXPORT_WITH_RC4_40_MD5
TLS_RSA_EXPORT1024_WITH_RC4_56_SHA
TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA
SSL_CK_RC4_128_EXPORT40_MD5
SSL_CK_DES_64_CBC_WITH_MD5
TLS_RSA_WITH_DES_CBC_SHA
TLS_RSA_WITH_NULL_MD5
TLS_RSA_WITH_NULL_SHA
TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA
TLS_DHE_DSS_WITH_DES_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
Diese Suites werden zwar unterstützt, stehen aber nach einer Standardinstallation des Betriebssystems nicht zur Verfügung. Hierzu muss die SCHANNEL Konfiguration per Registry angepasst werden. Mehr dazu im Abschnitt “SCHANNEL Konfiguration”.
Der Aufbau einer TLS Verbindung gliedert sich in 4 Schritte:
- Handshake und Cipher Suite Aushandlung
- Authentifizierung der Teilnehmer
- Schlüsselaustausch
- Datenaustausch der Applikation
In der nachfolgenden Beschreibung entspricht der Client dem sendenden (Verbindung aufbauenden) System und der Server dem empfangenden System.
- Handshake
- Bei Aufbau einer Verbindung sendet ein Client eine Liste der unterstützten Cipher Suites und der Server wählt eine angebotenen Suites auf Basis seiner konfigurierten, bevorzugten Reihenfolge aus und teilt dem Client das Ergebnis mit.
- An dieser Stelle wird auch entschieden, ob die aufzubauende Verbindung Perfect Forward Secrecy (PFS) verwendet oder nicht. Wird eine Cipher Suite mit Ephemeral Diffie-Hellman (DHE) oder eine Elliptic-Curve Variante (ECDHE) ausgewählt, steht PFS zur Verfügung.
- Authentifizierung
- Der Server sein öffentliches Zertifikat an den Client und fragt ggf. ein Zertifikat vom Client an.
- Falls der Server an Zertifikat angefragt hat, sendet der Client sein Zertifikat an den Server.
- Schlüsselaustausch
- Der Client erstellt ein zufälliges Pre-Master Secret und verschlüsselt es mit dem öffentlichen Schlüssel des Server-Zertifikates und sendet es an den Server.
- Der Server und der Client erstellen nun auf Basis des Pre-Master Secret das eigentliche Master Secret und die Schlüssel für die Session.
- Der Client sendet nun eine “Change Cipher Spec” Nachricht an den Server, und teilt so mit, das die neuen Sessionschlüssel für das Hashing und die ausgewählte Verschlüsselung verwendet werden.
- Der Server empfängt die Nachricht und wechselt auf symmetrische Verschlüsselung unter Verwendung der Sessionschlüssel.
- Datenaustausch
- Der sichere Kanal zwischen Client und Server ist hergestellt und Applikationsdaten können verschlüsselt übertragen werden.
Hinweis:
Bei der Konfiguration der Cipher Suites Reihenfolge sollte darauf geachtet werden, dass zwar zuerst Suites mit PFS konfiguriert werden, jedoch ein Fallback ohne PFS ebenfalls angeboten wird.
Cipher Suite Reihenfolge
Die Cipher Suite Reihenfolge legt fest, welche Suite zuerst und welche zuletzt verwendet werden soll.
In der Windows Systemregistrierung die zur Verfügungen stehenden Cipher Suites nach einer Basis Installation nicht konfiguriert. Der nachfolgende Screenshot zeigt den Registrierungsschlüssel SCHANNEL.

Einzig die zur Verfügung stehenden Protokolle (SSL/TLS) sind konfiguriert.
Die verfügbaren Cipher Suites und die eigentliche Reihenfolge der Suites werden in zwei unterschiedlichen Registrierungsschlüsseln konfiguriert.
Verfügbare Cipher Suites:
HKLM\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

Reihenfolge der Cipher Suites:
HKLM\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002

Hinweis: Der Registrierungsschlüssel für die Liste der Cipher Suites ist begrenzt auf 1023 Zeichen.
SCHANNEL Konfiguration
HINWEIS: Die direkte und eventuell fehlerhafte Anpassung der Windows Registry kann zur Instabilität des Betriebssystems führen. Die nachfolgende Beschreibung erfolgt nach bestem Wissen. Jedoch können wir keine Haftung für eventuelle Schäden übernehmen.
- Erstellen Sie ein Backup des Systems, bevor Sie Änderungen an der Systemregistrierung durchführen
- Erstellen Sie ein Backup des Systems, bevor Sie Änderungen an der Systemregistrierung durchführen
Die Konfiguration der Cipher Suites erfolgt im nachfolgenden Beispiel unter Verwendung des Tools IIS Crypto.
IIS Crypto ist ein Hilfsmittel, um die Konfiguration in der Windows Registry einfacher zu gestalten. Jedoch muss man bei Einsatz bedenken, dass beim Start des Programmes nicht die tatsächlich vorhandene Konfiguration der Systemregistrierung ausgelesen und angezeigt wird, sondern vielmehr die Standardkonfiguration von IIS Crypto.
IIS Crypto bietet vorkonfigurierte Konfigurationen für:
- FIPS 140-2
- PCI
- Best Practices



Nach der Anpassung der Cipher Suite Konfiguration (im nachfolgenden Beispiel die Best Practices Konfiguration), sind die neuen Schlüssel und Parameter in der Systemregistrierung vorhanden.

Je nach Typ (Protokoll oder Cipher Komponente) werden zur Aktivierung bzw. Deaktivierung folgende Schlüssel verwendet:
- Enabled, 0x0 oder 0xffffffff
- DisabledByDefault, 0 oder 1
Eine Beschreibung zur manuellen Konfiguration der Systemregistrierung finden Sie bei Microsoft hier: http://support2.microsoft.com/default.aspx?scid=kb;EN-US;245030
Fazit
Wenn eine besonderen Anforderungen an die Absicherung der Server-Kommunikation mit externen Systemen besteht, was eigentlich immer der Fall ist, muss eine zusätzlich Konfiguration des Secure Channel Providers erfolgen. Im Normallfall kann die einheitlich über Gruppenrichtlinien erfolgen. Verwenden Sie aber Systeme, die keine Mitgliedsserver einer Domäne sind, so müssen diese Systemen manuell über die Systemregistrierung oder durch Verwendung der lokalen Sicherheitsrichtlinie erfolgen.
Die Konfiguration des Secure Channel hat eine direkte Auswirkung auf die TLS Verschlüsselung aller TCP Protokolle. Durch die unterschiedlichen Implementierungen bei unterschiedlichen Betriebssystemen müssen die Anpassungen mit Bedacht durchgeführt werden.
Sollte es Gründe geben, dass Sie eine FIPS- oder PCI-konforme Konfiguration vornehmen müssen, gibt es allerdings keine Alternative zur Umsetzung der Vorgaben.
Links
- Secure Channel
- Cipher Suites in Windows Server 2008R2 und Windows Server 2012(R2)
- How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll
- Bewertung der unterschiedlichen Schlüsselaustausch Algorithmen
- IIS Crypto
- FIPS 140-4
- PCI Security Standards
Mini-Serie E-Mail Sicherheit
- E-Mail Verschlüsselung und E-Mail Sicherheit
- E-Mail Verschlüsselung – TLS, S/MIME & Co (Teil 1)
- E-Mail Verschlüsselung – TLS, S/MIME & Co (Teil 2)
- E-Mail Verschlüsselung und Cipher Suites
Fragen zur E-Mail Sicherheit
Haben Sie Fragen rund um das Thema E-Mail Verschlüsselung und E-Mail Sicherheit? Kontaktieren Sie uns unter: emailsecurity@granikos.eu.