La troisième partie de votre analyse de site web portera sur les protocoles de sécurité qui sont mis en oeuvre. Cette année, nous limiterons notre analyse à TLS.

TLS est le protocole qui permet de sécuriser les transferts entre votre navigateur et les sites que vous analysez. Ce protocole contient de très nombreuses options et a beaucoup évolué durant les dernières années. Il existe de nombreuses variantes de ce protocole qui sont déployées tant du côté des navigateurs que du côté des serveurs. 

Le site web https://www.ssllabs.com/ssltest est un excellent point de départ pour l’analyse de la configuration TLS d’un site web. Il vous fournira des tas de détails sur la façon dont TLS a été configuré et certains problèmes de configuration éventuels. Vu la quantité d’informations fournie par ce site, le plus dur pour vous sera de comprendre et d’interpréter les résultats.

Les outils en ligne de commande tels que wget et curl contiennent de nombreuses options relatives à l’utilisation de TLS. Ces options s’appuient en général sur celles qui sont supportées par openssl qui reste l’implémentation la plus utilisée de TLS, même si elle a été fort décriée durant la dernière année. OpenSSL est disponible depuis https://www.openssl.org et est très souvent installé sur Linux et MacOS. La sous-commande s_client peut vous permettre de réaliser différents tests intéressants. Elle supporte de nombreuses options dont les plus utiles sont probablement :

 -connect host:port - who to connect to (default is localhost:4433)
 -verify_host host - check peer certificate matches "host"
 -verify_ip ipaddr - check peer certificate matches "ipaddr"
 -reconnect 
 -pause        - sleep(1) after each read(2) and write(2) system call
 -showcerts    - show all certificates in the chain
 -debug        - extra output
 -msg          - Show protocol messages
 -state        - print the 'ssl' states
 -srp_strength int - minimal length in bits for N (default 1024).
 -tls1_2       - just use TLSv1.2
 -tls1_1       - just use TLSv1.1
 -tls1         - just use TLSv1
 -cipher       - preferred cipher to use, use the 'openssl ciphers'
                 command to see what is available
 -servername host  - Set TLS extension servername in ClientHello
 -tlsextdebug      - hex dump of all TLS extensions received

Ainsi, la commande suivante permet de se connecter en TLS 1.1 sur le serveur multipath-tcp.org, port 443 en envoyant l’option SNI avec comme valeur www.multipath-tcp.org et en affichant les informations de debugging.

openssl s_client -debug  -tls1_1 -servername www.multipath-tcp.org -connect multipath-tcp.org:443

En analysant le support de TLS de votre serveur, vous risquez de voir qu'il propose des algorithmes cryptographiques différents de ceux qui ont étés mentionnés au cours. Renseignez-vous sur ces algorithmes pour voir si notamment ils supportent Perfect Forward Secrecy. Est-ce une propriété souhaitable de ces algorithmes ?

Vous trouverez d'autres pistes et un début d'analyse sur http://blog.computer-networking.info/tls-analysis/
 
Si votre site utilise HTTPS, vous risquez de ne pas savoir observer les requêtes échangées dans les captures Wireshark. Avez Firefox et Chrome notamment, vous pouvez exporter les clés TLS utilisées dans un format qui permet à Wireshark de les utiliser pour décrypter les paquets capturés. Voyez notamment https://blog.didierstevens.com/2020/12/28/decrypting-tls-streams-with-wireshark-part-2/ 

Modifié le: samedi 27 mars 2021, 11:08