„Perfect Forward Secrecy“ und Windows < 8.1

Dankenswerterweise hat Microsoft im April diesen Jahres einen Patch veröffentlicht, der für Windows 8.1 und Windows Server 2012 R2 die TLS Ciphers derart umsortiert, dass Verbindungen die per PFS (Perfect Forward Secrecy) gesichert sind bevorzugt werden, siehe hier: http://support.microsoft.com/kb/2929781

Allerdings ist Microsoft offensichtlich der Meinung, das ältere Betriebssysteme sowieso niemand mehr benutzen sollte und enthält diese Änderung allen anderen eigentlich noch aktiv supporteten Windows Versionen vor (Vista, Server 2008(R2), Server 2012, 7, 8).

Also müssen wir selbst aktiv werden und diese Änderung vornehmen.

Eine kurze Prüfung mit dem Internet Explorer unter Windows 7 auf z.B. der Testseite von
Qualys (hier) bestätigt die bevorzugte Nutzung von TLS Methoden ohne PFS:

TLS_WIN7_BEFORE

 

In der Registrierung findet sich im Pfad

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002

der Schlüssel Functions vom Typ REG_MULTI_SZ.
Auf einem Standard Windows 7 enthält dieser den Inhalt

TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
SSL_CK_RC4_128_WITH_MD5
SSL_CK_DES_192_EDE3_CBC_WITH_MD5
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA

Zum Einen sehen wir genau die Reihenfolge, die der Test ergeben hat, zum Anderen tauchen
auch noch Verschlüsselungsmethoden auf, die besser nicht mehr genutzt werden (z.B. RC4, DES, NULL)

Diese Reihenfolge ließe sich jetzt beliebig ändern, wenn wir aber ohnehin dabei sind unser Windows zu „optimieren“ machen wir gleich noch ein paar weitere Dinge, die die Sicherheit durchaus verbessern können.

  • Deaktivieren von SSL2.0 und TLS1.0  für den IE (KB2643584).
    Dazu legen wir in den Registry Keys
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    und
    HKEY_LOCAL_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    den Schlüssels SecureProtocols als REG_DWORD mit dem Wert a20 an.
    ie_secureprotocols
  • Deaktivieren von DES, NULL, RC2 und RC4 und aktivieren von AES für SChannel (KB245030)
    Dies einfach entsprechend des verlinkten Knowledge Base Artikels, effektiv müssen folgende Schlüssel angelegt werden:
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\AES 128/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\AES 256/256
     In diesen beiden neuen Schlüsseln wird ein neuer DWORD-Wert namens Enabled mit dem Inhalt ffffffff angelegt
    (der diese beiden Cipher aktiviert)HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\DES 56/56
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\NULL
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC2 40/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC2 56/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC2 128/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC4 40/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC4 56/128
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SChannel\Ciphers\RC4 64/128
    In diesen beiden neuen Schlüsseln wird ein neuer DWORD-Wert namens Enabled mit dem Dezimal-Inhalt 0 angelegt
    (der diese unsicheren Cipher deaktiviert)
  • Installieren des Updates KB2973337. Dieses aktiviert SHA512 für TLS1.2 Verbindungen.

Abschließend sortieren wir dann die Cipher in dem o.g. Registry Key noch um, damit diejenigen mit PFS zu bevorzugt werden.
Ich habe dort den vorhanden Eintrag einfach durch diesen ersetzt:

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P521
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
TLS_DHE_DSS_WITH_AES_256_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_RSA_WITH_NULL_MD5

Einen Reboot später sollte sich der Lohn der Mühe zeigen:

TLS_WIN7_AFTER

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.