Partie 1 - Hachage
Partie 2 - Le Bloc
Partie 3 - La Chaîne
Partie 4 - Sécurité
Partie 5 - Minage
Objectifs Pédagogiques
- Cybersécurité :
- Comprendre le hachage (SHA-256) et l'effet avalanche.
- Comprendre l'intégrité des données par chaînage de blocs.
- Comprendre le principe de "Proof of Work" (Preuve de travail).
- Programmation (Python) :
- Pratiquer la POO : Classes, Constructeurs, Méthodes d'instance, Méthodes spéciales (
__str__). - Manipuler des librairies standards (
hashlib,time). - Algorithmie : Boucles de validation et de recherche (minage).
- Pratiquer la POO : Classes, Constructeurs, Méthodes d'instance, Méthodes spéciales (
Introduction : Le Grand Livre Numérique
Une blockchain est une base de données distribuée et sécurisée. Imaginez un grand cahier où tout le monde peut écrire, mais :
- Immuable : Une fois écrit, on ne peut plus effacer ni modifier une ligne sans que cela se voie.
- Chronologique : Chaque page est liée à la précédente.
- Sécurisé : Pour valider une page, il faut résoudre un problème mathématique complexe.
Dans ce TP, nous allons construire ce mécanisme de zéro.
Partie 1 : Le Hachage (Les fondations)
Pour sécuriser notre chaîne, nous avons besoin d'une empreinte digitale numérique unique pour chaque bloc. C'est le rôle des fonctions de hachage.
📚 Tutoriel : Le module hashlib
En Python, le hachage se fait en 3 étapes strictes :
- Encoder la chaîne en octets (
.encode()). - Hacher avec l'algorithme (
hashlib.sha256()). - Convertir en hexadécimal pour la lecture (
.hexdigest()).
Exemple complet :
import hashlib
texte = "Bonjour BTS SIO"
# 1. Encodage (String -> Bytes)
texte_bytes = texte.encode('utf-8')
# 2. Hachage
hash_object = hashlib.sha256(texte_bytes)
# 3. Conversion (Bytes -> Hex String)
empreinte = hash_object.hexdigest()
print(empreinte)
# Résultat : a2c4e... (64 caractères)
📝 Exercice 1.1 : Premier Hash
- Créer un fichier
blockchain.py. - Importer les modules
hashlibettime. - Créer une fonction
test_hachage()qui demande une saisie utilisateur, calcule son SHA-256 et l'affiche.
📝 Exercice 1.2 : L'Effet Avalanche
L'effet avalanche signifie qu'une modification minime de l'entrée change radicalement la sortie.
- Dans votre script, hacher le mot
"Blockchain". - Hacher le mot
"blockchain"(minuscule). - Comparer les deux résultats caractère par caractère. Se ressemblent-ils ?
- Réponse attendue : Non, ils sont totalement différents.