TP SLAM : Création d'une mini blockchain

BTS SIO 1 : B3 - CyberSécurité

Durée : 4 heures · Objectif : Attaquer, Comprendre, Réparer
🦊
Partie 1 - Hachage
Partie 2 - Le Bloc
Partie 3 - La Chaîne
Partie 4 - Sécurité
Partie 5 - Minage

Objectifs Pédagogiques

  1. 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).
  2. 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).

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 :

  1. Immuable : Une fois écrit, on ne peut plus effacer ni modifier une ligne sans que cela se voie.
  2. Chronologique : Chaque page est liée à la précédente.
  3. 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 :

  1. Encoder la chaîne en octets (.encode()).
  2. Hacher avec l'algorithme (hashlib.sha256()).
  3. 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

  1. Créer un fichier blockchain.py.
  2. Importer les modules hashlib et time.
  3. 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.

  1. Dans votre script, hacher le mot "Blockchain".
  2. Hacher le mot "blockchain" (minuscule).
  3. Comparer les deux résultats caractère par caractère. Se ressemblent-ils ?
    • Réponse attendue : Non, ils sont totalement différents.