LPDLIS/cours-crypto.md
Francois Lesueur 60dd6a2740 typos
2023-01-10 13:35:39 +01:00

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
    • ...
  • 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 ?

  1. Confidentialité : chiffrement
  2. Intégrité : signature/scellement
  3. Authentification : preuve de possession de matériel crypto
  4. 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