Review cours Terminale NSI — POO, SQL, Sécurité, Soc, Calculabilité, Réseau

This commit is contained in:
2026-06-15 11:28:37 +02:00
parent fcb20e45f9
commit 9ad5b99920
9 changed files with 1305 additions and 827 deletions

View File

@@ -145,6 +145,99 @@ Ces protocoles agissent au niveau de la couche 5 du modèle OSI
--------
### 6. Le hachage
Le chiffrement protège la **confidentialité** des données — seul le destinataire peut lire le message. Mais il ne garantit pas l'**intégrité** : comment savoir si le fichier que vous téléchargez n'a pas été altéré en route ? Comment un site web peut-il vérifier votre mot de passe sans le stocker en clair ?
C'est le rôle du **hachage**.
#### Définition
Une **fonction de hachage** prend une donnée de taille quelconque (un mot, un fichier, une vidéo) et produit une empreinte de taille fixe appelée **condensat** ou *hash*.
```
"Bonjour" → SHA-256 → 6f5cd4a2d7e0e5... (64 caractères hexadécimaux)
"bonjour" → SHA-256 → 97df3588b5a3f2... (64 caractères hexadécimaux)
```
#### Propriétés fondamentales
Une bonne fonction de hachage vérifie trois propriétés :
| Propriété | Signification |
|-----------|---------------|
| **Déterministe** | La même entrée donne toujours le même hash |
| **Effet avalanche** | Un seul bit modifié change complètement le hash |
| **Résistance aux collisions** | Il est pratiquement impossible de trouver deux entrées différentes produisant le même hash |
Et surtout : le hachage est une **fonction à sens unique**. On ne peut pas retrouver le message original à partir du hash. Il n'y a pas de clé, pas de déchiffrement possible.
> **Chiffrement vs Hachage**
>
> | | Chiffrement | Hachage |
> |---|---|---|
> | Réversible | ✅ Oui (avec la clé) | ❌ Non |
> | Clé | ✅ Nécessaire | ❌ Aucune |
> | Taille du résultat | Variable | Fixe |
> | Usage principal | Confidentialité | Intégrité, authentification |
#### Algorithmes courants
| Algorithme | Taille du hash | État actuel |
|------------|----------------|-------------|
| MD5 | 128 bits | ⚠️ Cassé — ne pas utiliser pour la sécurité |
| SHA-1 | 160 bits | ⚠️ Cassé — déprécié |
| **SHA-256** | 256 bits | ✅ Standard actuel |
| bcrypt | variable | ✅ Recommandé pour les mots de passe |
#### Usages
**1. Intégrité de fichiers**
Quand vous téléchargez un logiciel, le site fournit souvent un hash SHA-256. Après téléchargement, vous pouvez calculer le hash du fichier et comparer : si les deux correspondent, le fichier n'a pas été altéré.
**2. Mots de passe**
Un site web ne doit **jamais** stocker les mots de passe en clair. Il stocke leur hash. Lors de la connexion, il hache le mot de passe saisi et compare avec le hash stocké.
```
Inscription : sha256("monMotDePasse") → "a94a8fe5..." → stocké en base
Connexion : sha256("monMotDePasse") → "a94a8fe5..." → correspond ✅
Connexion : sha256("mauvaisMotDePasse") → "b14a6f2c..." → ne correspond pas ❌
```
Même si la base de données est volée, les mots de passe en clair restent inconnus.
**3. Intégrité dans HTTPS**
TLS utilise des fonctions de hachage pour vérifier que les données n'ont pas été modifiées pendant leur transit (via un mécanisme appelé MAC).
#### En Python
```python
import hashlib
def hacher(message):
"""Retourne le hash SHA-256 d'un message."""
return hashlib.sha256(message.encode()).hexdigest()
>>> hacher("Bonjour")
'6f5cd4a2d7e0e5b67f5bcf8e8b79d1b3f4c7a9e2d1c0f3b8a5e6d7c9b2a1f0e'
>>> hacher("bonjour") # Un seul caractère différent → hash complètement différent
'97df3588b5a3f24cd3d18804b48df9c7db98d0a03e74e39b0e88c18bf0a79f7e'
```
> La bibliothèque `hashlib` est incluse dans Python, pas besoin d'installation.
#### Exercice
1. En Python, calculez le hash SHA-256 de votre prénom, puis de votre prénom avec une majuscule différente. Que constatez-vous ?
2. Pourquoi ne suffit-il pas de hacher un mot de passe pour qu'il soit totalement protégé ? *(Indice : cherchez ce qu'est une "rainbow table")*
3. La Partie 6 du TP gestionnaire de mots de passe utilise `hashlib`. Maintenant que vous connaissez le concept, reprenez-la et expliquez à quoi sert exactement le hash dans ce contexte.
--------
#### Sources
<a href="https://www.flaticon.com/free-icons/computer" title="computer icons">Computer icons created by Freepik - Flaticon</a>