MODULE 2 : NOTIONS DE CRYPTOGRPHIE
Présentation du cours
Compétence générale : Comprendre et appliquer les principes fondamentaux de la cryptographie
pour assurer la sécurité des communications et des données.
Compétences spécifiques :
1. Expliquer la notion de cryptographie et son importance.
2. Différencier les types de cryptographie et leurs principes de fonctionnement.
3. Identifier les algorithmes cryptographiques courants et leurs usages.
4. Comprendre le rôle des PKI, certificats numériques et signatures numériques.
1. Phase d’Observation : Introduction à la Cryptographie
Activité : Discussion en groupe – "Comment protéger une information confidentielle ?".
1.1. Définition de la cryptographie
La cryptographie est l’ensemble des techniques permettant de sécuriser les informations en les
transformant de manière à ce qu’elles ne soient lisibles que par les personnes autorisées.
1.2. Importance de la cryptographie
✅ Confidentialité : Protéger les informations sensibles (ex : mots de passe, transactions bancaires).
✅ Authentification : Vérifier l’identité d’un utilisateur ou d’un message.
✅ Intégrité : Garantir que les données n’ont pas été modifiées.
✅ Non-répudiation : Empêcher un utilisateur de nier avoir envoyé un message.
2. Phase d’Analyse : Types de Cryptographie et Algorithmes
2.1. Cryptographie symétrique (exemple avec AES)
🔑 Principe : Un même secret (clé) est utilisé pour chiffrer et déchiffrer les données.
📌 Exemple d'algorithme AES (Advanced Encryption Standard)
AES chiffre les données en blocs de 128 bits avec des clés de 128, 192 ou 256 bits.
Exemple en Python :
from [Link] import AES
import os
key = [Link](16) # Génération d'une clé AES 128 bits
cipher = [Link](key, AES.MODE_EAX)
nonce = [Link]
data = b"Message secret"
ciphertext, tag = cipher.encrypt_and_digest(data)
print("Message chiffré:", [Link]())
✅ Rapide et efficace, mais le partage de clé pose un risque.
David 1
2.2. Cryptographie asymétrique (exemple avec RSA)
🔑 Principe : Utilise une paire de clés (publique pour chiffrer, privée pour déchiffrer).
📌 Exemple d'algorithme RSA
RSA repose sur la difficulté de factoriser de grands nombres premiers.
Exemple en Python :
from [Link] import RSA
key = [Link](2048)
public_key = [Link]().export_key()
private_key = key.export_key()
print("Clé publique:", public_key.decode())
print("Clé privée:", private_key.decode())
✅ Sécurise les communications, mais est plus lent que AES.
2.3. Fonctions de hachage (exemple avec SHA-256)
🔑 Principe : Transformer une donnée en une empreinte unique et irréversible.
📌 Exemple d'algorithme SHA-256
Utilisé pour les signatures numériques et la blockchain.
Exemple en Python :
import hashlib
data = b"Message secret"
hash_sha256 = hashlib.sha256(data).hexdigest()
print("SHA-256 Hash:", hash_sha256)
✅ Assure l’intégrité des données, mais ne permet pas de retrouver le message original.
3. Phase d’Approfondissement : PKI, Certificats et Signatures Numériques
3.1. Infrastructure à Clé Publique (PKI)
🔑 Définition : La PKI (Public Key Infrastructure) est un ensemble de technologies et de règles permettant
de gérer les clés publiques et privées de manière sécurisée.
3.2. Fonctionnement de la PKI
1. Autorité de Certification (CA - Certificate Authority) : Émet et vérifie les certificats numériques.
2. Autorité d’Enregistrement (RA - Registration Authority) : Valide l’identité des utilisateurs avant
d’émettre un certificat.
3. Dépositaire des Clés (Key Repository) : Stocke les clés publiques accessibles aux utilisateurs.
David 2
3.3. Les certificats numériques
🔑 Définition : Un certificat numérique est un fichier électronique contenant une clé publique et des
informations d'identité, signé par une Autorité de Certification (CA).
📌 Exemple de certificat numérique (format X.509) :
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAg...
-----END CERTIFICATE-----
✅ Sécurise les sites web (HTTPS), la signature des documents et l'authentification des utilisateurs.
3.4. Signatures numériques
🔑 Définition : Une signature numérique est une méthode cryptographique permettant de garantir
l’authenticité et l’intégrité d’un document ou d’un message.
📌 Principe :
1. L’émetteur chiffre un hachage du message avec sa clé privée (création de la signature).
2. Le destinataire vérifie la signature avec la clé publique de l’émetteur.
Exemple en Python avec RSA et SHA-256 :
from [Link] import pkcs1_15
from [Link] import SHA256
from [Link] import RSA
# Génération des clés
key = [Link](2048)
public_key = [Link]()
private_key = key
# Création de la signature
message = b"Message important"
hash_obj = [Link](message)
signature = pkcs1_15.new(private_key).sign(hash_obj)
# Vérification de la signature
try:
pkcs1_15.new(public_key).verify(hash_obj, signature)
print("Signature valide !")
except (ValueError, TypeError):
print("Signature invalide !")
✅ Garantit l’intégrité et l’authenticité des documents électroniques.
Activité : Étudier un certificat SSL d'un site web et vérifier sa signature numérique.
David 3
4. Phase de Réinvestissement : Rôles des Acteurs et Responsabilités
Acteur Rôle et Responsabilité
Utilisateur final Vérifier les certificats avant de faire confiance à un site web.
Implémenter correctement l’utilisation des certificats et signatures
Développeur
numériques.
Administrateur système Gérer les certificats et les clés publiques sur les serveurs.
Autorité de Certification (CA) Délivrer des certificats numériques fiables.
5. Évaluation des Acquis
Différencier la cryptographie symétrique et asymétrique.
Expliquer l’importance des PKI, certificats numériques et signatures numériques.
Vérifier une signature numérique avec un exemple pratique.
Conclusion
Les PKI, certificats numériques et signatures numériques sont essentiels pour garantir la sécurité sur
Internet.
🚀 Défi final : Imagine que tu dois sécuriser un document juridique numérique. Quels outils utiliserais-tu ?
David 4