TS hier
@willem Dekker
Omdat wel versleuteling beter is dan geen versleuteling blijft TLS 1.0 nog even nodig. Als je mail niet aanneemt zonder STARTTLS, dan is het van belang dat mail kan worden bezorgd via een oude versleuting.
@17-04-2020, 23:06 door Anoniem
Niet gevraagd.
De NCSC volgorde is volgens internet.nl:
Good:
ECDHE-ECDSA-AES256-GCM-SHA384 (TLS_AES_256_GCM_SHA384 in 1.3) [1.2]
ECDHE-ECDSA-CHACHA20-POLY1305 (TLS_CHACHA20_POLY1305_SHA256 in 1.3) [1.2]
ECDHE-ECDSA-AES128-GCM-SHA256 (TLS_AES_128_GCM_SHA256 in 1.3) [1.2]
ECDHE-RSA-AES256-GCM-SHA384 (TLS_AES_256_GCM_SHA384 in 1.3) [1.2]
ECDHE-RSA-CHACHA20-POLY1305 (TLS_CHACHA20_POLY1305_SHA256 in 1.3) [1.2]
ECDHE-RSA-AES128-GCM-SHA256 (TLS_AES_128_GCM_SHA256 in 1.3) [1.2]
Sufficient:
ECDHE-ECDSA-AES256-SHA384 [1.2]
ECDHE-ECDSA-AES256-SHA [1.0]
ECDHE-ECDSA-AES128-SHA256 [1.2]
ECDHE-ECDSA-AES128-SHA [1.0]
ECDHE-RSA-AES256-SHA384 [1.2]
ECDHE-RSA-AES256-SHA [1.0]
ECDHE-RSA-AES128-SHA256 [1.2]
ECDHE-RSA-AES128-SHA [1.0]
DHE-RSA-AES256-GCM-SHA384 [1.2]
DHE-RSA-CHACHA20-POLY1305 [1.2]
DHE-RSA-AES128-GCM-SHA256 [1.2]
DHE-RSA-AES256-SHA256 [1.2]
DHE-RSA-AES256-SHA [1.0]
DHE-RSA-AES128-SHA256 [1.2]
DHE-RSA-AES128-SHA [1.0]
Phase out:
ECDHE-ECDSA-DES-CBC3-SHA [1.0]
ECDHE-RSA-DES-CBC3-SHA [1.0]
DHE-RSA-DES-CBC3-SHA [1.0]
AES256-GCM-SHA384 [1.2]
AES128-GCM-SHA256 [1.2]
AES256-SHA256 [1.2]
AES256-SHA [1.0]
AES128-SHA256 [1.2]
AES128-SHA [1.0]
DES-CBC3-SHA [1.0]
@allen
De NCSC documentatie legt uit wat de volgorde van ciphersuites zou moeten zijn. De vraag is welke oplossingen jullie hebben gekozen. GNUTLS heeft een enkele prioriteitstring die allerlei onderdelen opknipt. Je kan dus helaas niet zoiets als TLS_AES256_GCM_SHA384 (TLSv1.3) invullen. GNUTLS knipt het op in algoritme, HMAC, key exchange, signing, etc.
De prioriteitstring in
gnutls-cli -l --priority 'NONE:[..]:[..]:%SERVER_PRECEDENCE
begint met opzet met een leeg blad: NONE betekent dat alles naar niets gereset wordt. %SERVER_PRECEDENCE geeft aan dat de server de volgorde aangeeft. Het interessante deel is natuurlijk wat er tussenin staat.
De volgende onderdelen lijken mij van belang:
NONE:PFS:%SERVER_PRECEDENCE
+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0
+ECDHE-ECDSA:+ECDHE-RSA:+RSA
+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM:+AES-256-CBC
+AEAD:+SHA384:+SHA256:+SHA1
+GROUP-SECP384R1:+GROUP-SECP256R1:+GROUP-X25519:+GROUP-FFDHE4096:+GROUP-FFDHE3072:+GROUP-FFDHE2048
Nu moeten ze nog worden samengevoegd tot een geheel dat zowel voldoet aan de NCSC richtlijnen als aan een praktische ondersteuning voor zoveel mogelijk nog veel in gebruik zijnde of belangrijke legacysystemen.
Let op: deze string is geen aanbeveling voor productiesystemen!gnutls-cli -l --priority NONE:PFS:%SERVER_PRECEDENCE:\
+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-ECDSA:+ECDHE-RSA:+RSA:-DHE-RSA:\
+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM:+AES-256-CBC:-AES-128-CBC:-AES-256-CCM:-AES-128-CCM:\
+AEAD:+SHA384:+SHA256:+SHA1:\
+GROUP-SECP384R1:+GROUP-SECP256R1:+GROUP-X25519:+GROUP-FFDHE4096:+GROUP-FFDHE3072:+GROUP-FFDHE2048
Specifiek uitgeschakeld zijn DHE-RSA, AES-128-CBC, AES-256-CCM, AES-128-CCM. Die zijn hopelijk niet nodig voor legacy systemen. Voor TLS 1.0 is AES-256-CBC aanwezig. TLS1.0:RSA_AES_256_CBC_SHA1:256 wordt daarmee ondersteund. De signing heb ik niet apart opgegeven in de string.
Met GNUTLS 3.6.7 levert het dit op:
Cipher suites for NONE:PFS:%SERVER_PRECEDENCE:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-ECDSA:+ECDHE-RSA:+RSA:-DHE-RSA:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM:+AES-256-CBC:-AES-128-CBC:-AES-256-CCM:-AES-128-CCM:+AEAD:+SHA384:+SHA256:+SHA1:+GROUP-SECP384R1:+GROUP-SECP256R1:+GROUP-X25519:+GROUP-FFDHE4096:+GROUP-FFDHE3072:+GROUP-FFDHE2048
TLS_AES_256_GCM_SHA384 0x13, 0x02 TLS1.3
TLS_CHACHA20_POLY1305_SHA256 0x13, 0x03 TLS1.3
TLS_AES_128_GCM_SHA256 0x13, 0x01 TLS1.3
TLS_ECDHE_ECDSA_AES_256_GCM_SHA384 0xc0, 0x2c TLS1.2
TLS_ECDHE_ECDSA_CHACHA20_POLY1305 0xcc, 0xa9 TLS1.2
TLS_ECDHE_ECDSA_AES_256_CBC_SHA1 0xc0, 0x0a TLS1.0
TLS_ECDHE_ECDSA_AES_256_CBC_SHA384 0xc0, 0x24 TLS1.2
TLS_ECDHE_ECDSA_AES_128_GCM_SHA256 0xc0, 0x2b TLS1.2
TLS_ECDHE_RSA_AES_256_GCM_SHA384 0xc0, 0x30 TLS1.2
TLS_ECDHE_RSA_CHACHA20_POLY1305 0xcc, 0xa8 TLS1.2
TLS_ECDHE_RSA_AES_256_CBC_SHA1 0xc0, 0x14 TLS1.0
TLS_ECDHE_RSA_AES_256_CBC_SHA384 0xc0, 0x28 TLS1.2
TLS_ECDHE_RSA_AES_128_GCM_SHA256 0xc0, 0x2f TLS1.2
TLS_RSA_AES_256_GCM_SHA384 0x00, 0x9d TLS1.2
TLS_RSA_AES_256_CBC_SHA1 0x00, 0x35 TLS1.0
TLS_RSA_AES_256_CBC_SHA256 0x00, 0x3d TLS1.2
TLS_RSA_AES_128_GCM_SHA256 0x00, 0x9c TLS1.2
Protocols: VERS-TLS1.3, VERS-TLS1.2, VERS-TLS1.1, VERS-TLS1.0
Ciphers: AES-256-GCM, CHACHA20-POLY1305, AES-256-CBC, AES-128-GCM
MACs: SHA1, AEAD, SHA384, SHA256
Key Exchange Algorithms: ECDHE-ECDSA, ECDHE-RSA, RSA
Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-FFDHE2048, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192
PK-signatures: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1
Je kan zo al zien dat dit niet een heel aantrekkelijke volgorde in GCM/CBC en in hashes oplevert - als we mogen aannemen dat de volgorde correct is weergegeven. Daarnaast is het een mix van TLS versies, wat ook een mix van volgordes kan opleveren. Een complicerende factor is dat bepaalde suites ok zijn in TLS 1.3, maar een stuk minder in een lagere TLS versie. Zo is de TLS 1.3 suite incompleet en is DHE er helemaal niet meer.
Het kan beter, dus proberen we dit:
Let op: deze string is geen aanbeveling voor productiesystemen!gnutls-cli -l --priority NONE:PFS:%SERVER_PRECEDENCE:+VERS-TLS1.3:+VERS-TLS1.2:+VERS-TLS1.1:+VERS-TLS1.0:+ECDHE-ECDSA:+ECDHE-RSA:-GROUP-FFDHE2048:+DHE-RSA:+RSA:+AES-256-GCM:+CHACHA20-POLY1305:+AES-128-GCM:+AES-256-CBC:-AES-128-CBC:-AES-256-CCM:-AES-128-CCM:+AEAD:+SHA384:+SHA256:+SHA1:+GROUP-SECP384R1:+GROUP-SECP256R1:+GROUP-X25519:+GROUP-FFDHE4096:+GROUP-FFDHE3072:+GROUP-FFDHE2048
TLS_AES_256_GCM_SHA384 0x13, 0x02 TLS1.3
TLS_CHACHA20_POLY1305_SHA256 0x13, 0x03 TLS1.3
TLS_AES_128_GCM_SHA256 0x13, 0x01 TLS1.3
TLS_ECDHE_ECDSA_AES_256_GCM_SHA384 0xc0, 0x2c TLS1.2
TLS_ECDHE_ECDSA_CHACHA20_POLY1305 0xcc, 0xa9 TLS1.2
TLS_ECDHE_ECDSA_AES_256_CBC_SHA1 0xc0, 0x0a TLS1.0
TLS_ECDHE_ECDSA_AES_256_CBC_SHA384 0xc0, 0x24 TLS1.2
TLS_ECDHE_ECDSA_AES_128_GCM_SHA256 0xc0, 0x2b TLS1.2
TLS_ECDHE_RSA_AES_256_GCM_SHA384 0xc0, 0x30 TLS1.2
TLS_ECDHE_RSA_CHACHA20_POLY1305 0xcc, 0xa8 TLS1.2
TLS_ECDHE_RSA_AES_256_CBC_SHA1 0xc0, 0x14 TLS1.0
TLS_ECDHE_RSA_AES_256_CBC_SHA384 0xc0, 0x28 TLS1.2
TLS_ECDHE_RSA_AES_128_GCM_SHA256 0xc0, 0x2f TLS1.2
TLS_DHE_RSA_AES_256_GCM_SHA384 0x00, 0x9f TLS1.2
TLS_DHE_RSA_CHACHA20_POLY1305 0xcc, 0xaa TLS1.2
TLS_DHE_RSA_AES_256_CBC_SHA1 0x00, 0x39 TLS1.0
TLS_DHE_RSA_AES_256_CBC_SHA256 0x00, 0x6b TLS1.2
TLS_DHE_RSA_AES_128_GCM_SHA256 0x00, 0x9e TLS1.2
TLS_RSA_AES_256_GCM_SHA384 0x00, 0x9d TLS1.2
TLS_RSA_AES_256_CBC_SHA1 0x00, 0x35 TLS1.0
TLS_RSA_AES_256_CBC_SHA256 0x00, 0x3d TLS1.2
TLS_RSA_AES_128_GCM_SHA256 0x00, 0x9c TLS1.2
Protocols: VERS-TLS1.3, VERS-TLS1.2, VERS-TLS1.1, VERS-TLS1.0
Ciphers: AES-256-GCM, CHACHA20-POLY1305, AES-256-CBC, AES-128-GCM
MACs: SHA1, AEAD, SHA384, SHA256
Key Exchange Algorithms: ECDHE-ECDSA, ECDHE-RSA, DHE-RSA, RSA
Groups: GROUP-SECP256R1, GROUP-SECP384R1, GROUP-SECP521R1, GROUP-X25519, GROUP-FFDHE3072, GROUP-FFDHE4096, GROUP-FFDHE6144, GROUP-FFDHE8192, GROUP-FFDHE2048
PK-signatures: SIGN-RSA-SHA256, SIGN-RSA-PSS-SHA256, SIGN-RSA-PSS-RSAE-SHA256, SIGN-ECDSA-SHA256, SIGN-ECDSA-SECP256R1-SHA256, SIGN-EdDSA-Ed25519, SIGN-RSA-SHA384, SIGN-RSA-PSS-SHA384, SIGN-RSA-PSS-RSAE-SHA384, SIGN-ECDSA-SHA384, SIGN-ECDSA-SECP384R1-SHA384, SIGN-RSA-SHA512, SIGN-RSA-PSS-SHA512, SIGN-RSA-PSS-RSAE-SHA512, SIGN-ECDSA-SHA512, SIGN-ECDSA-SECP521R1-SHA512, SIGN-RSA-SHA1, SIGN-ECDSA-SHA1
Door
-GROUP-FFDHE2048 voor
+DHE-RSA en
+RSA te zetten wordt DH-2048 voor die algoritmes uitgeschakeld.
Ondanks de opgegeven volgorde staat SHA1 soms toch hoger dan SHA256. Er zijn ook nog tal van complicaties/combinaties die niet aan de orde zijn geweest maar wel van belang zijn.
internet.nl geeft nu een 100% score, met de opmerking over het uitfaseren van TLS 1.0 en TLS 1.1. Nu gaat het niet per se om een 100% score, maar om het zoveel mogelijk voldoen aan de NCSC richtlijnen en tegelijkertijd ook compatible blijven met oude mail servers die mail naar onze MX sturen. Wie ziet er nog mogelijkheden met een andere priority string voor verbetering?