Café vie privée

SSL / TLS / HTTPS

@aeris
16 novembre 2014, Ubuntu Party 14.10

Aeris

crypto-anarchiste chaton des Internet

Mail / Jabber : aeris@imirhil.fr
GNU/Social : https://status.imirhil.fr/
Blog : https://blog.imirhil.fr/
Conférences : https://confs.imirhil.fr/
GPG : EFB7 4277 ECE4 E222
OTR : 5769 616D 2D3D AC72
Hacktiviste

Sécurité des communications — Transport

2 modes de protection
  • Point-à-point (TLS…)
  • End-to-End (GPG, OTR…)

Historique de SSL/TLS

  • 1994 :  SSL v1.0 (théorie, jamais mise en œuvre)
  • 1995 : SSL v2.0 (trop moisi, SSL v3.0 lancé dans la foulée)
  • 1996 : RFC 6101, SSL v3.0 (tout moisi aussi, + 2014 : Poodle)
  •  
  • 1999 : RFC 2246, TLS v1.0
  • 2006 : RFC 4346, TLS v1.1
  • 2008 : RFC 5246, TLS v1.2

Objectifs

Les chiffrements symétriques (AES, RC4, DES) sont
rapides et supportent les flux
mais reposent sur un partage de secret
Les chiffrements asymétriques (RSA, DSS, ECDSA) sont
lents et ne supportent pas les flux
mais ne supposent pas une ligne sécurisée

Objectifs

SSL/TLS est un protocole couplant
un échange de secret par chiffrement asymétrique
un chiffrement symétrique avec ce secret
SSL/TLS doit assurer 3 fonctions :
  • l’authentification
  • le chiffrement
  • l’intégrité

Authentification & échange de clef

Chiffrement

Intégrité

Exemple : IE 6

Exemple : IE 11

Exemple : Chrome 37

Exemple : Firefox 32

Comment qu’on se cause alors ?

« Eh, coucou, je cause SSLv3, TLSv1.0 et TLSv1.1 ! Et toi ? »
« Je cause TLSv1.0, TLSv1.1 et TLSv1.2. On a qu’à causer TLSv1.1 donc ! »
« OK, mais quel dialecte ? Je cause [insérer ici whatmille cipher]. »
« Moi je cause [insérer ici un bouzillion de ciper], on a qu’à causer TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ! »

Perfect Forward Secrecy (PFS)

Échange de clef initial :
  • Le client génère un nombre aléatoire C l’envoie en clair
  • Le serveur génère un nombre aléatoire S l’envoie en clair
  • Le client calcule
    • la clef maîtresse P = f(C, S)
    • la pré-clef maîtresse P′ = f′(C, S)
    et envoie P′ au serveur en la chiffrant avec la clef publique du serveur
  • Le serveur déchiffre P′ avec sa clef privée et calcule P″ = f″(P′, S)
Par la magie des maths, P″ = P, on a un secret commun malgré une communication non sécurisée

Perfect Forward Secrecy (PFS)

  • un attaquant peut enregistrer l’intégralité du flux chiffré
  • il peut mettre la main sur la clef privée par la suite
  • il peut alors déchiffrer l’intégralité des communications enregistrées !
    • Il a accès à C et S, qui circulait en clair
    • Il peut déchiffrer P′ avec la clef privée compromise
    • Il peut recalculer P″ = P
⇒ Nécessité de la Perfect Forward Secrecy
(Promis, je vous épargne la théorie mathématique 😁)

HTTP Strict Transport Security (HSTS)

  • Un site peut commencer en clair et décider ensuite de faire du HTTPS
  • Tout le monde peut faire des liens vers n’importe qui et n’importe comment
  • Il y a des gros michants qui s’amusent avec le réseau (SSLStrip)

HTTP Strict Transport Security (HSTS)

On a quand même envie de protéger nos utilisateurs et de les obliger à passer en HTTPS
  • S’il clique sur un (vieux) lien HTTP
  • S’il clique sur un lien qu’on ne maîtrise pas
  • S’il y a un gros michant sur sa ligne

⇒ En-tête HSTS

Une fois le site consulté une 1ère fois, il mémorise qu’il doit obligatoirement revenir dessus en HTTPS

S’il voit du HTTP, il redirige automatiquement et sans aucune requête en clair vers la version HTTPS

L’enfer TLS

Très dépendant de la compétence des administrateurs https://imirhil.fr/ssl.html

L’enfer TLS

Très dépendant de la compétence des administrateurs https://www.ssllabs.com/ssltest/

L’enfer TLS

4 lignes pour se mettre à l’abri
Caisse d’Épargne : 2 ans and counting…
SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES;+HIGH:+MEDIUM
#SSLCipherSuite AES256+EECDH:AES256+EDH:AES128+EECDH:AES128+EDH:+SHA
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
SSLCompression off

Résumé

  • Disponible pour plus ou moins tout (Web, mail…)
  • Transparent pour l’utilisateur
  • Mauvaise volonté Bon vouloir des admins
  • InCompétences des admins
  • Sécurité « opportuniste »
  • Transparent pour l’utilisateur

Sécurité des communications — TLS

Vrai ou faux ?

HTTPS garantit que :
  • seule ma banque peut lire mes informations ?
  • je suis sur le serveur de ma banque ?

FAUX !

HTTPS garantit uniquement que :
  • seul le serveur en face peut lire mes informations
  • que le serveur en face a été approuvé par une des 181 autorités de certification embarquées dans le navigateur
  • Pas que c’est bien ma banque en face !

Sécurité des communications — TLS

TLS est basé sur une chaîne de confiance :
Les amis de mes amis sont mes amis.

Mais qui sont mes amis qui n’ont aucun ami au-dessus ?
⇒ Embarqués « en dur » dans le navigateur
181 dans Mozilla Firefox
Problème :
Gouvernement chinois, syrien, turc, français…
Microsoft, Dell, AOL, Atos…
Comodo, Digicert, RSA…
Bref, la moitié de la planète…

Sécurité des communications — TLS

CACert, autorité de certification communautaire
⇒ Supprimée des dépôts standards

  • Considération purement technique/physique
    • Résister à 1600° pendant 2h
    • Résister au crash d’un Boeing à pleine vitesse
  • Mais qu’une didactature ou une entité commerciale/gouvernementale ait accès à la clef privée n’est pas génant

Sécurité des communications — TLS

Non !!!
Le cadenas et
la barre verte
ne suffisent pas !

The end

(#oupa)