4.4 KiB
4.4 KiB
CM Cryptographie et sécurité des communications - Notes de cours
À la rencontre d'Alice, Bob et Ernest
Comment permettre à Alice et Bob de communiquer de manière sûre sur un canal non sûr ? Notion centrale en sécurité/crypto : le modèle d'attaque.
- Alice et Bob veulent communiquer, Ernest écoute (attaque passive) ou altère (attaque active) les échanges
- Le medium non sûr :
- Un messager qui peut se faire capturer
- Un réseau de câbles téléphoniques
- Internet (routage multi-saut multi-acteurs, écoute possible sur la route + par des attaquants qui arriveraient à dévier)
- Exemples de positions MitM - Man in the Middle :
- La DSI de l'UBS sur eduroam
- Orange sur les livebox
- Lumen sur du transatlantique
- Autre transitaire fournissant le service au serveur visé
- Attaquant sur le réseau local (attention aux LP Cyber qui jouent par là...)
- ...
- L'objectif de la crypto : communiquer de manière sûre sur un medium non sûr
- Aujourd'hui, (très) peu de services réseau sans crypto
Communiquer de manière sûre ?
- Confidentialité : chiffrement
- Intégrité : signature/scellement
- Authentification : preuve de possession de matériel crypto
- Non-répudiation : signature
La cryptographie moderne
La cryptographie asymétrique :
- Chaque acteur a une paire de clés publique/privée reliées mathématiquement
- Chiffrer = utiliser la clé publique de l'interlocuteur, déchiffrer = utiliser sa propre clé privée (tout le monde peut nous parler, nous seuls pouvons comprendre)
- Signer = utiliser sa propre clé privée, vérifier = utiliser la clé publique de l'interlocuteur (nous seuls pouvons signer, tout le monde peut vérifier)
- Exemples : RSA, ECDSA
La cryptographie symétrique :
- Chaque paire d'acteurs a une clé secrète
- Cette clé secrète est utiliser pour chiffrer/déchiffrer et sceller/vérifier
- Exemple : AES, HMAC
Le hachage :
- Empreinte de taille fixe à sens unique (non inversible)
- Hachage crypto doit être robuste aux attaques (collision, pré-images)
- Exemples SHA-256, SHA3-512
Quelle taille de clé ? KeyLength
La mise en œuvre
L'obtention des clés : les PKI - Public Key Infrastructure
- La difficulté majeure côté usage : obtenir la bonne clé. Comment l'obtenir de manière sûre quand le medium est non sûr ?
- Le risque : parler chiffré mais pas avec le bon interlocuteur (ie, avec Ernest)
- Les PKI sont des moyens d'associer des clés publiques (donc pour crypto asymétrique) à des identifiants (nom de personne, nom DNS, ...)
- Quelques modèles :
- Centralisé CA (autorités de certification) / PKIX
- Distribué PGP
- DANE/TLSA dans DNSSEC
- Diffus style keybase.io
- L'échange direct / uniquement en out-of-band (donc pas vraiment de PKI)
- La mise en contact
La négociation : les protocoles cryptographiques
- Pour communiquer, il faut un standard : un protocole
- Quelques protocoles cryptographiques : TLS, SSH, S/MIME, PGP, ...
- Généralement pour la mise en place d'une communication en crypto hybride :
- Échange de clés symétriques en crypto asymétrique
- Puis communication payload en crypto symétrique
- Exemple des suites cryptographiques TLS ("ECDHE-RSA-AES128-GCM-SHA256")
Exemple : le modèle HTTPS
- Objectif : un tunnel chiffré entre le client (navigateur) et le serveur
- Pour cela il nous faut :
- Un protocole : TLS
- La (bonne) clé publique du serveur : Certificat
- Un certificat = (clé publique, nom) signé par un tiers. Ici :
- clé publique = celle du serveur, il a la clé privée qui va avec
- nom = nom d'hôte DNS (par exemple www.univ-ubs.fr)
- tiers = une autorité de certification (par exemple Let's Encrypt)
- => On a bien une association entre un nom et une clé, ici certifiée par un tiers
- Le client doit valider la signature de la CA, et ainsi vérifier l'association (clé publique, nom) :
- Il lui faut donc vérifier avec la clé publique de la CA
- Les clés publiques des CA reconnues par les clients sont pré-installées dans les navigateurs, pas de magie, il faut une ancre de confiance dans le logiciel