owned this note
owned this note
Published
Linked with GitHub
# Sécurisation des réseaux - cours
## Plan du cours
Introduction
Cryptographie
cryptographie symétrique
cryptographie asymétrique
Signature numérique, authentification
Principe
Somme de contôle
Les infrastructures à clés publiques
03/02 : TD/TP Chiffrement symétrique et les modes opérations
24/02 : TD/TP Chiffrement asymétrique et leur mise en oeuvre
09/03 : TD/TP Autorités de certification
23/03 IoniBalls turboGrossePute
06/04 Sori pute
## Cours 1 - Chiffrement symétrique et les modes opérations
### Définition cryptographie
Cryptographie : Etude des méthodes permettant de protéger les données.
Cryptanalyse : etude des méthodes permettant de passer outre les protections des données.
Cryptologie = cryptographie + cryptanalyse
But de la cryptologie : sauvegarder et sécuriser des données
### Cryptographie moderne
les algo modernes ont étendu les possibilitéss :
- Empêcher la lecture des données à des personnes non autorisées --> Confidentialité
- Transmettre des données de manière sure --> Confidentialité
Mais aussi :
- authentifier le créateur ou l'émetteur des données --> Authentification
- s'assurer qu'il ne pourra pas nier en être à l'origine --> Non répudiation
- Empêcher les modifications des données --> garantir l'intégrité
### Cryptographie à clé secrète :
La méthode la plus ancienne
Elle utilise la même clé pour chiffrer et déchiffrer un message (ou bien la clé de déchiffrage se déduit immédiatement de la clé de chiffrage)
Si elle est utilisée convenablement, elle est "INCASSABLE" !
(ET C'EST PROUVE par 9 chercheurs sur 10)
### Substitution et chiffre de césar
https://fr.wikipedia.org/wiki/Chiffrement_par_d%C3%A9calage
Méthode très simple de chiffrage attriibué à Jules César HIMSELF :
L'algo consiste simplement à décaler les lettres de l'alphabet du message à envoyer.
il saigne, il a le coronavirus #CORENTIN
OH NO ! ALED ON VA MPURIR
JE SUIS INFECTé, help me
J'invoque : DRAGON BLANC AUX YEUX BLEUS en position attaque : YES
ATTAQUE PAR FORCE BRUT = ON ESSAIE TOUT
J'ai éjac du nez, c'est parti vite
Me balancer par sur Twitter par contre #GIGN
@PoliceNational
### Chiffrement INCASSABLE : OTP "one time pad" ou 'OneTrickPony pour les intimes'
https://en.wikipedia.org/wiki/One-time_pad
La seule méthode de chiffrement aujourd'hui prouvée comme étant incassable est une méthjode à clé symétrique secrète : one time pad (ou "masque jetable")
Son algo est simple
Sa mise en oeuvre est rapide
- Pour le chiffrement
- Pour le déchiffrement
Mais pourquoi se faire chier avec des algos compliqués, coûteux et moins sûrs ? parceque très difficilement utilisable. (voir "Condition d'utilisation")
Pourquoi OTP est potentiellement "INCASSABLE" ?
-->
Soit M = {m0,m1,...,mn} un msg de taille n
Soit C = {c0,c1,...,cn} le message M chiffré avec la clé K
Quelque soit M' un msg de taille n, il exister une clé K' de taille n telle que pour tout i appartenant à [0,...,n], m'i ! ci + *(xor)* k'i
Condidtion d'utilisation
* La clé soit de taille au moins égale à la taille du message.
* Il faut que la clé soit purement aléatoire.
* Sinon on peut en déduire le seed de generation et potentielement brutforce la clé plus facilement
* Il faut que la clé ne serve qu'une seul fois.
OTP est très difficilement utilisable :
* Pour transmettre 10Go de donné, il faut une clé d'au moins 10Go
* Pour communiquer sur des court message il faut transmettre la clé de manière sur. Ducoup pourquoi ne pas transmettre les message en meme temps que la clé ?
* Il faut un vrai generateur de nombre aleatoire
### Méthode par diffusion (majorité des algos modernes):
- DIFFUSION = SUBSTITUTION + TRANSPOSITION
- Disperse la structure statistique du texte.
- La difusion masque la relation entre le texte clair et le texte chiffré.
Principe de confision
- Il s'agit de masquer la relation entre la clé secrète et le texte chiffré.
- On suppose que l'opposant connaît l'algo de chiffrement
- On souhaite éviter qu'à partir de l'algo et le texte chiffré, la clé soit identifiable
- L'objectif est d'obtenir un chiffrement dont la seule attaque possible est par "Force Brute"
### Méthode forte
La seule attaque possible consiste a essayer toutes les clés possible (force brute)
- on ne peut pas déduire d'informations sur la donnée claire ou la clé à partir de la donnée chiffré
- on ne peut pas déduire d'informations sur la clé à partir de la donnée en clair
- Le nombre de clés possible est très grand
- Aujourd'hui, classiquement 2¹²⁸, 2¹⁹² ou d²⁵⁶ (on estime le nombre d'atomes dans univers à ~2²⁶⁵)
### Premier standard DES : UNE ANCIENNE METHODE FORTE
En 1977 apparaît le standard DES : Data Encryption Standard
- inventé par IBM, modifiée par la NSA
- Premier standard cryptographique
- Algorythme de chiffrement par bloc
- Clés de 56 bits
2⁵⁶ clés possibles : attaques par force brute impossible en 1977
- les attaques par force brute sont désormais largement envisageables (le standard était prévu pour avoir une durée de vie de 10 ans)
- Des techniques de cryptanalyse ont été développpées rendant plus vulnérable encore DES en réduisant len nombre de clé à tester
#### Double DES une solution intermédiaire
- Solution intémédiaire : doubles DES
- Il s'agit d'appliquer 2 fois de suite DES avec deux clés distinctes
- Diffie Hellman ont trouvé une attaque qui rend presque inopérant le passage à double DES --> perte de son standard au profit d'AES après un appel d'offre du NIST
- Seconde solution : Triple-DES.
- Améliore nettement DES : 2¹¹² clés possibles
Remplacé par AES
#### AES : LE STANDARD ACTUEL
Advanced Encryption Standard
Robuste et efficace
Chiffrement par bloc
Standard du NIST depuis octobre 200
Utilise des clés de 128, 192 ou 256 bits (évolutive)
Aucune méthode connue de cryptanalyse, encore aujourd'hui personne n'a trouvé de méthode pour pouvoir l'attaquer directement en tant qu'algo
Utilisé dans de nombreux systèmes cryptographiques (WPA2 pour la norme IEEE 802.11 du Wifi, les connexions bluetooth, ...)
Chiffrement par bloc.
Il prend en entreée des blocs de donnée y applique une fonction reversible sur les blocs et retourne des blocs chiffrés
Lorsque la donnée est constituée de plusieurs blocs, la méthode la plus simple et d'utiliser la clé sur chacun des blocsn ce qui peut donner des indications, a minima (il a switch la diapo le con)
(...)
### Mode d'opération
Le mode d'opéation d'un algorythme de chiffrement par bloc décrit la manière dont on l'applique sur les différents blocs du message à chiffrer
#### Exemple de mode d'opération : Cipher block chaining (CBC)

Voir TP Crypto Ionipute avec vecteur d'initialisation
### Limite de la cryptographie à clé secrète
* L'échange des clés :
-il est fortement conseillé de changer régulièrement de clé pour le chiffrement .
* Partage de clé :
-Pour N personnes il faut (N x (N-1))/2 clés
* Distribution des clé
### Trent : distributeur des clés secrètes
Trent dispose des clés de tout le monde. C'est le TTP (Trusted Third Party)
Fait office d'intermédiaire entre X personnes
Etape 1 : Alice envoie le message chiffré avec sa clé à Trend
Etape 2 : Trend envoie le message chiffré avec la clé de Bob à Bob
Avec ce systèmen pour N utilisateurs, on aura besoin de N clés secrètes. Elles ne sont pas partagés par tout les utilisateurs
Problème :
- tout transite par Trent
- confiance de Trent ?
- centralisation des clés
- total de clé trop grand
- s'il conserve les clés, il devient un point faible du système
- opération de chiffrement lourdes et inutiles
### Solution alternative à Trent : les KDC (key distribution center)
Trent dispose de toutes les clés, Trent envoie la clé secrète cryptés à Bob et à Alice en cryptant le message avec la clé de chacun. Alice et Bob peuvent communiquer
Trent devient alors un distributeur de clés
Resout le problème des opérations inutiles de chiffrement
Résout le problème de transit unique par Trent
Problème persistants : confiance du TTP ?
SOLUTION : CRYPTOGRAPHIE A CLE PUBLIQUE
### Début de la solution à l'utiliusation d'un KDC
Ralph Merkle en 1970 a conçu un système permettant d'échanger publiquement des clés secrètes
Principe : Alice crée plein de clé indexés par un numéro de série dans le désordre et range tout dans un tableau
Puis chiffre ce tableau avec les clés générés
Puis elle envoie le tableau des numéros de série(peut êtrecapté par Eve)
Bob déchiffre un numéro du tableauu (numéro de série) et envoie le numéro de série et devient la clé secrète entre Alice et Bob
Création d'une dysémtrie entre les interlocuteurs légitimes (déchiffrement long pour 1 clé donc pour le tableau très long pour l'attaquant )
### Diffie-Hellman complexe l'idée en héritant de l'idée de Merkle
Les deux interlocuteurs partagent un problème qu'ils savent résoudre rapidement
L'adversaire manque d'une information
Etape 1 :
[
](https://)
Etape 2 :

| ka=(g^b mod p)^a mod p | kb=(g^a mod p)^b mod p |
| -------- | -------- |
| ka=(g^b)^a mod p | kb = (g^a)^b mod p |
| ka=g^(b*a) mod p | kb = g^(a*b) mod p |
ON A BIEN Ka=Kb= K LA CLE SECRETE ECHANGEE ENTRE ALICE ET BOB
La méthode de diffie helman permet de se mettre d'accord sur une clé secrètre sur un canal non sécurisé.
Limites :
- Pas d'authentification
- Fonctionnement "en ligne" (ne convient pas ax mails par exemple)
### RSA
Rivest,Shamir & Adleman (MIT);
Résout les problèmes d'authentification et d'échange de clé;
Utilisation de clés distinctes pour le chiffrement et le déchiffrement
- Une clé publique mise a dispo de tous
- Une clé secrète
- ce qui est chiffré avec la clé publique n'edst déchiffrable qu'avec la clé privée
- Ce qui est chiffré avec la clé privée n'est déchiffrable qu'avec la clé publique
Connaitre la clé publique n'aide pas à la découverte de la clé secrète.
Connaitre la clé publique n'aide pas à déchiffrer un message chiffré avec celle-ci.
Tout le monde peut connaitre la clé publique : la distribution des clés est grandement simplifié.
#### Authentification avec RSA
l'authentification consiste simplement à chiffrer un message avec la clé privée
- Le message n'est déchiffrable que grace à la clé publique correspondante
- Si la clé publique déchiffre le message, on est sûr qu'il a été chiffré avec la clé privée.
#### Intégrité avec RSA
On peut employer la même méthode que pour l'authenficiation :
- Le message chiffré avec la clé publique est corrompu s'il est modifié durant la transmission
- On peut simplement chiffrer un résumé du messge qui devient alors une signature
#### Résumé
Un résumé de message est obtenu grâce à l'utilisation d'une fonction de "Hachage cryptographique
- MD5, sha-1, sha-256 etc...
Pour être utilisable en cryptographie, une fonction de hachage doit avoir certaine propriétés :
- L'unidirectionnalité (Résistance à la première pré-image) : On ne doit pas pouvoir reconstituer tout ou partie du message à partir de son résumé.
- La résistance faible aux collisions (résistance à la seconde pré-image) : Etant donné un résumé, il est très difficile de trouver un message différent qui produit le même résumé. On ne peut pas modifier le message en le faisant passer pour le message original.
- La résistance forte aux collisiosn : Etant donné une fonction de hachage, il est très difficile de trouver deux messages différents produisant le même résumé (résistance à l'attaque des anniversaires)
#### Distribution des clés publiques
On a vu que la cryptographie à clé publique permet :
- La confidentialité
- Le contrôle d'intégrité
- L'authentification
- La non-répudiation
La sécurité repose sur la confidentialité des clés privées, mais aussi sur l'intégrité et l'authenticité des clés publiques.
Pour assurer l'authenticité des clés publiques, o nutilisera des "certificats numériques" au sein d'infrastructures à clés publiques ou PKI (public key infrastructures)
### Attaques par répétition
Alice envoie plusieurs messages :
- 1/11/2010 : "rdv 12h30 chez doc gyneco"
- 2/11/2010 : "j'ai un plan cul j'peux pas venir"
Eve intercepte le message 1, remplace son contenu par celui du 2/11/2010 et bob ne peut pas se rendre compte du problème.
Pour résoudre le problème : chaque message doit être "estampillé" par une date ou un marqueur temporaire.
### Vol des clés en mémoire
Les clés cryptographiques doivent être aussi aléatoires que possibles
- Elle contiennent donc normalement à peu près autant de bits à 1 que de bits à 0.
- Ce qui ne "ressemble" pas à n'importe quel type de données.
- On peut identifier les séquences qui peuvent correspondre à des lés cryptographiques dans la mémoire de la machine.
### Distribution des clés publiques
Problèmes :
Comment être sûr que la clé publique est bien celle de la personne avec laquelle on souhaite échanger des messages ?
Comment faire si la clé privée est volée ?
### Certificat numérique
Un certificat numérique est un document signé par un tiers de confiance contenant :
- Des informations sur le détenteur de la clé publique
- Le rôle de l'utilisateur
- La clé publique elle-même
- Des dates de début et de fin de validité
Principe :
- Les utilisateurs génèrent leurs couples de clés publiques/privées
- Ils demandent alors un certificat qui authentifie leur clé publique auprès d'un tiers de confiance
- Le tier de confiance certifie l'identité du demandeur en créant un certificat pour l'utilisateur, qu'il signe avec sa propre clé privée.
- L'utilisateur dispose maintenant d'une certification de sa clé publique par le tier de confiance.
### Les PKI
Une infrastructure à clés publiques repose sur le système de certification n des clés publiques par un tiers de confiance
Une clé est alors associé à l'identité d'une personne
Les plus répandues : PKIX.509 ou PGP : pretty good privacy
Prochain cours : certificat
## TD1 - Exo
### Exo 1 - 2 - 3 - feuille
### Exo 4
```
for ((i=0;i<80000;++i));do
echo ZARROU >> z21805306-ex4.1.txt
done
```
Chiffrer un fichier en utilisant l'algo AES-192 avec une clé et un vecteur d'initialisation spécifique :
`openssl enc -aes-192-cbc -K 00010203040506070809A0A1A2A3A4A5A6A7A8A9B0B1B2B3 -iv FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0 -in z21805306-ex4.1.txt -out z21805306-ex4.2.enc`
Modifier le fichier en remplaçant l'octet d'offset 200 par la valeur 0 :
```
dd if=z21805306-ex4.2.enc of=debut bs=1 count=199
dd if=/dev/zero bs=1 count=1 of=zero
dd if=z21805306-ex4.2.enc bs=1 skip=200 of=fin
cat debut zero fin > z21805306-ex4.3.mod
```
Déchiffrer :
(le -d permet de déchiffrer)
```
openssl enc -aes-192-cbc -d -K 00010203040506070809A0A1A2A3A4A5A6A7A8A9B0B1B2B3 -iv FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0 -in z21805306-ex4.3.mod -out z21805306-ex4.4.txt
```
Afficher en détail pour voir les erreurs du fichier :
```
hexdump -C -v z21805306-ex4.4.txt | less
```
EXO 5 :
Script (voir discord)
chmod +x exo5.sh
mkdir TEST
./exo5.sh TEST
Ca créé un répertoire en +
## Cours 2 - Chiffrement asymétrique et leur mise en oeuvre
Enfait le cours 2 est intégré au cours 1 donc cheh