Le chiffrement est un procédé cryptographique qui transforme des données lisibles (plaintext) en données inintelligibles (ciphertext) à l'aide d'un algorithme et d'une clé. Contrairement au hachage, le chiffrement est réversible : la donnée originale peut être retrouvée avec la bonne clé.
On distingue deux grandes familles :
| Type | Principe | Exemples | Usage typique |
|---|---|---|---|
| Symétrique | Une seule clé pour chiffrer et déchiffrer | AES, ChaCha20 | Chiffrement de données au repos, VPN |
| Asymétrique | Paire clé publique/clé privée | RSA, Ed25519, ECDSA | Échange de clés, signatures, TLS |
Exemple de chiffrement symétrique AES en Python :
from cryptography.fernet import Fernet
# Génération d'une clé (à stocker de manière sécurisée)
key = Fernet.generate_key()
cipher = Fernet(key)
# Chiffrement
plaintext = b"Donnees sensibles"
ciphertext = cipher.encrypt(plaintext)
# Déchiffrement
decrypted = cipher.decrypt(ciphertext)
La gestion des clés est l'aspect le plus critique : une clé compromise rend tout le chiffrement inutile. Les bonnes pratiques incluent la rotation régulière des clés, l'utilisation de HSM (Hardware Security Module) et le principe du moindre privilège.
À retenir
Les mêmes principes cryptographiques — génération d'aléa, entropie, imprévisibilité — sont utilisés dans notre générateur de mot de passe pour garantir des identifiants aussi robustes que les clés de chiffrement elles-mêmes.
Termes connexes : AES, RSA, clé publique/privée, TLS, hachage.
