Pour DNS Over TLS est-ce que TLS 1.3 va permettre de faire baisser le RTT ? Il me semblait avoir lu quelque part que pour toutes les implémentations actuelles, pour chaque paquet il y avait un full round trip d'effectué. C'est côté TLS que c'est géré ou plus "haut" ?
Le lun. 24 sept. 2018 à 21:28, Jean-Francois Billaud <bill...@billaud.eu.org> a écrit : > > Tests TLS 1.3 (version finale RFC 8446) > --------------------------------------- > > > TROLON;PALU sommaire : La version 1.3 finale de TLS (RFC 8446) a été > publiée > le 13 août 2018 ; on a de la documentation, des bibliothèques pour tester > et > une vague idée de la manière de configurer les serveurs. > > Version 2018-09-24 > Conditions opératoires : Debian 8, 9, 10 avec des bouts de testing et de > instable dedans, Slackware current, Saccharomyces cerevisiae. > > > Documentation > ------------- > > Le RFC 8446 (The Transport Layer Security (TLS) Protocol Version 1.3) : > https://www.rfc-editor.org/rfc/rfc8446.txt > > Un article de Eric Rescorla (alias EKR), l'auteur du RFC : > TLS 1.3 Published: in Firefox Today > > https://blog.mozilla.org/security/2018/08/13/tls-1-3-published-in-firefox-today/ > (avec le joli logo) > > Les commentaires de Stéphane Bortzmeyer : > http://www.bortzmeyer.org/8446.html > > En complément pour les autres versions de TLS : > > RFC 8447 (IANA Registry Updates for TLS and DTLS) > précisant les chiffrements (section 8) et groupes (section 9) recommandés : > https://www.rfc-editor.org/rfc/rfc8447.txt > > RFC 8422 (Elliptic Curve Cryptography (ECC) Cipher Suites > for Transport Layer Security (TLS) Versions 1.2 and Earlier) > avec des précisions sur ECDH(E) RSA ECDSA EdDSA : > https://www.rfc-editor.org/rfc/rfc8422.txt > > Sur l'abandon de TLS 1.0 et 1.1 (Deprecating TLSv1.0 and TLSv1.1 - > draft-ietf-tls-oldversions-deprecate : > https://tools.ietf.org/html/draft-ietf-tls-oldversions-deprecate-00 > Voir https://www.ietf.org/mail-archive/web/tls/current/maillist.html pour > les avis. > > > Les bibliothèques et autres logiciels > ------------------------------------- > > Trois bibliothèques classiques : > > openssl https://www.openssl.org/ > openssl 1.1.1 (LTS) incluant TLS 1.3 final disponible depuis le 11/9/2018 : > https://www.openssl.org/blog/blog/2018/09/11/release111/ > Si l'ordre par défaut ne vous plaît pas, ou si voulez rajouter les suites > CCM, il faut éditer openssl-1.1.1/include/openssl/ssl.h lignes 176 et > suivantes. > > gnutls https://gnutls.org/ > Les versions stables et previous ne parlent pas le TLSv1.3, il faut > utiliser la version next branch 3.6.3 : > https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.3.tar.xz > > NSS https://developer.mozilla.org/fr/docs/NSS > version 3.39 > > https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.39_release_notes > https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_39_RTM/src/ > > > Serveurs HTTPS > -------------- > > Nginx > https://nginx.org/ > https://nginx.org/en/download.html > version 1.15.3 (mainline, pas stable) avec openssl 1.1.1 > A partir des sources (à adapter) : > ./configure --with-http_ssl_module --with-http_v2_module \ > --with-http_stub_status_module --with-http_gzip_static_module \ > --with-http_geoip_module --prefix=/usr/local/nginx \ > --add-module=../ngx-fancyindex --with-openssl-opt=no-shared \ > --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module \ > --add-dynamic-module=/usr/src/nginx-ct-master/ \ > --with-openssl=/usr/src/openssl-1.1.1 > nginx.conf : > ssl_protocols TLSv1.2 TLSv1.3; > ssl_ciphers > > TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA; > Il manque juste la configuration spécifique des suites TLS 1.3. > Ça a l'air stable et utilisable (sous réserve de tests adaptés à la > situation) > > > Apache > https://github.com/apache/httpd > version 2.5.x (dev) avec openssl 1.1.1, pas envisageable en production > Pas facile à installer si openssl 1.1.1 n'est pas installé par défaut > On y arrive quand même : > [02/Sep/2018:08:11:25 +0000] 192.168.1.253 TLSv1.3 TLS_AES_256_GCM_SHA384 > "GET /image.php HTTP/1.1" 353 > > openssls s_server > openssl-1.1.1 > utilisable pour des tests > ./openssl s_server -accept 443 -www -status -serverpref \ > -key privkey13.pem -cert cert13.pem -chainCAfile fullchain13.pem \ > -CAfile DST_Root_CA_X3.pem -dhparam dh4096.pem \ > -curves X448:X25519:P-521:P-384:P-256 \ > -cipher > > TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256 > > > Clients HTTPS > ------------- > > openssls s_client > openssl-1.1.1 > utilisable pour des tests > openssl s_client -connect monserveur:443 -curves X25519 -ciphersuites > TLS_CHACHA20_POLY1305_SHA256 > SSL-Session: > Protocol : TLSv1.3 > Cipher : TLS_CHACHA20_POLY1305_SHA256 > > nss > version 3.39 ou suivante > ./nss/dist/Debug/bin/tstclnt -h monserveur -p 443 -b -v -V tls1.3: > LD_LIBRARY_PATH=/usr/src/nss/dist/Debug/lib/ > /usr/src/nss/dist/Debug/bin/tstclnt -h monserveur -p 443 -b -v -V tls1.3: > tstclnt: SSL version 3.4 using 256-bit CHACHA20POLY1305 with 128-bit AEAD > MAC > tstclnt: Server Auth: 384-bit TLS 1.3, Key Exchange: 255-bit TLS 1.3 > > > gnutls > version 3.6.3 ou suivante > Voir README.md > To download the version controlled sources: > $ git clone https://gitlab.com/gnutls/gnutls.git > [...] > ./gnutls/src/gnutls-cli monserveur > - Ephemeral EC Diffie-Hellman parameters > - Using curve: SECP256R1 > - Curve size: 256 bits > - Version: TLS1.3 > - Server Signature: ECDSA-SECP384R1-SHA384 > - Cipher: CHACHA20-POLY1305 > > Firefox > version 63 (actuellement beta, finale le 23 octobre) ou suivante > RAS, ça marche. > extensions utilisables : Certainly Something, ConsistentHTTPS, HTTPS > Everywhere > > Chrome / Chromium > version 70 et suivantes (dev channel), 70 finale disponible fin octobre > 2018 > about://flags TLS 1.3 Sets the TLS 1.3 variant used. – Mac, Windows, > Linux, Chrome OS, Android : Enabled (Final) > RAS, ça marche. > > > Outils divers > ------------- > > tshark / wireshark > version 3.6.3 > Voir Client hello > tshark -f 'tcp port 443' -V > capture.txt > Extension: supported_versions (len=9) > Type: supported_versions (43) > Length: 9 > Supported Versions length: 8 > Supported Version: TLS 1.3 (0x0304) <- version finale > Supported Version: TLS 1.2 (0x0303) > Supported Version: TLS 1.1 (0x0302) > Supported Version: TLS 1.0 (0x0301) > > > Qualys SSL Labs SSL Server Test > SSL Report v1.32.6 (RFC 8446) disponible depuis le 24/9/2018 > https://dev.ssllabs.com/ssltest/index.html > (https://www.ssllabs.com/ssltest/ est en version v1.32.5 : draft 28 et > non finale RFC 8446) > <cite>Experimental: This server supports TLS 1.3 (RFC 8446).</cite> > > High-Tech bridge (Htbridge) > https://www.htbridge.com/ssl/ > Conformité PCI DS, HIPAA, NIST > reconnait TLS 1.3 final > > Observatory by Mozilla > https://observatory.mozilla.org/ > Pas de TLS 1.3 pour le moment, mais analyse des en-têtes dont CSP > > > Choix des protocoles pour HTTPS > ------------------------------- > > Si les clients ne sont pas trop anciens : > TSL 1.2 et 1.3 > certificats RSA et ECDSA avec des bouts de NIST dedans (pour EdDSA avec > X25519 il faudra attendre) > CHACHA20-POLY1305 et AES-256 et AES-128 > courbes X25519:secp521r1:secp384r1:prime256v1 (X448 pas utilisable avec > Firefox et Chrome, utilisable pour test et proxies) > Attention à la cohérence de l'ordre des courbes (du chiffrement le plus > fort vers le plus faible) > A étudier : HTTPS sans HTTP mais avec HSTS Preloading (les logs sont moins > remplis) > > > SMTP + StartTLS > --------------- > > MTA Postfix > Testé avec Postfix 3.3.1 et postfix-3.4-20180904 > smtpd_tls_protocols = TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, !SSLv2, !SSLv3 > > tls_high_cipherlist=TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA > > checktls > https://www.checktls.com/ > https://www.checktls.com/#TLSv1_3 > CheckTLS email works with TLS 1.3, as do most of our tests. > Dans les logs : > Sep 23 09:10:26 mervent postfix/smtpd[19790]: Anonymous TLS connection > established from www6.checktls.com[159.89.187.50]: TLSv1.3 with cipher > TLS_AES_256_GCM_SHA384 (256/256 bits) > > > > DNS over TLS > ------------ > > Côté serveur : Stunnel 5.49 + bind > La configuration : > [dns] > accept = :::853 > connect = 127.0.0.1:53 > cert = /etc/letsencrypt/live/coincoin/cert.pem > key = /etc/letsencrypt/live/coincoin/privkey.pem > CAfile = /etc/letsencrypt/live/coincoin/chain.pem > ciphers = > > TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA > curve = secp384r1 > options = NO_TLSv1 > options = NO_TLSv1.1 > > Côté client : getdns_query > De la doc : > https://linuxfr.org/news/quad9-resolveur-dns-public-et-securise-par-tls > http://www.bortzmeyer.org/quad9.html > http://www.bortzmeyer.org/7858.html > Les tests : > $ getdns_query @192.168.1.2 -s -l L monserveur A > "address_data": <bindata for 109.190...>, > "address_type": <bindata of "IPv4"> > $ getdns_query @192.168.1.2 -s -l L monserveur AAAA > "ipv6_address": <bindata for 2001:41d0:...>, > "rdata_raw": <bindata of 0x200141d0...> > > Dans les logs de Postfix : > 2018.09.23 09:13:14 LOG6[1]: TLS accepted: new session negotiated > 2018.09.23 09:13:14 LOG6[1]: TLSv1.3 ciphersuite: TLS_AES_256_GCM_SHA384 > (256-bit encryption) > > > EOT > > JFB > > > --------------------------- > Liste de diffusion du FRnOG > http://www.frnog.org/ > --------------------------- Liste de diffusion du FRnOG http://www.frnog.org/