Skip to main content

Sécurité - Hash et chiffrement

image.png

Difficulté : Intermédiaire


Notions : Cybersécurité, Hashing, chiffrement.



I. Introduction

Afin de protéger les données sensibles et garantir la sécurité des échanges, les mécaniques cryptographiques jouent un rôle clé dans la cybersécurité. Elles permettent entre autres choses :

  • De chiffrer des données sensibles (mots de passes, contenu protégé, données confidentielles, etc...)
  • De chiffrer des communications (web, email, protocoles, ...)
  • D'authentifier un système ou un utilisateur (signature numérique, empreinte, certificat, etc...)

Il existe pléthore d'algorithmes et de méthodes pour cacher ou protéger de la donnée. On retiendra ici deux concepts majeurs :

  • Le hachage.
  • Le chiffrement.

Il sera également possible d'aborder la notion de stéganographie.

Trivia : Dû à l'évolution des puissances de calcul et des menaces croissantes, il est nécessaire de constamment adapter les algorithmes de chiffrements afin de les renforcer voire de les abandonner si une méthode a été trouvée pour les 'casser'.


II. Le Hash

2.1 Définition

Le Hash (ou hashing, hachage) est une fonction mathématique qui vise à transformer une donnée de taille variable en une empreinte de taille fixe.

Cette empreinte disposera de propriétés intrinsèques. En effet, par nature 

  • Non réversible : Il est donc impossible de retrouver le message d'origine
  • Déterministe : Une même entrée donnera toujours la même empreinte.
  • Non falsifiable : La moindre altération de la donnée d'entrée donnera un hash complètement différent.

image.png

De par sa nature, cela rend cette méthode idéale pour le stockage sécurisé de mots de passe, la vérification d'intégrité des téléchargements, les signatures numériques et l'indexation rapide.

La vérification se fera par comparaison.

exemples :

Dans le cas d'un téléchargement, le fournisseur du téléchargement fournit le hash ou somme de contrôle du téléchargement.

Après téléchargement, il est possible de calculer à son tour le hash / checksum et de les comparer à celui fourni par l'éditeur sur la page de téléchargement. Cela permet de s'assurer de l'intégrité des données et de leur non-altération.

Dans le cas de l'authentification, l'utilisateur entre son mot de passe. Celui-ci est Haché et envoyé au serveur d'authentification, celui-ci compare alors le hash reçu et le hash présent en base de donnée pour confirmer que le mot de passe fourni est le bon.

2.2 Algorithmes courants

Algorithme
Statut Usage recommandé
MD5 Obsolète Aucun (présence de failles majeures)
SHA-1 Obsolète Aucun (collisions d'entrées)
SHA-256 Sûr  Intégrité des données, signatures
SHA-3 Sûr Applications
bcrypt / scrypt / Argon2 Très sûr Stockage de mots de passe

Le statut des algorithmes se base sur les données de 2025

Attention : Lors du stockage de mots de passe avec sha-256, il faudra utiliser en complément un KDF (Key Derivation Function) comme vu ci-dessus (bcrypt, scrypt, pbkdf2, argon2).


III. Le Chiffrement

3.1 Définition

Le chiffrement (Cypher / Encryption), à l'inverse du hash, a pour vocation à être déchiffré et pas seulement comparé.

Celui-ci sert essentiellement dans les échanges. Pour chiffrer ou déchiffrer de la donnée, il faudra utiliser une ou plusieurs clés.

Il existe deux types de chiffrement, le chiffrement Symétrique et le chiffrement Asymétrique.

Info : Plus la clé de chiffrement est longue, plus le chiffrement sera fort.

3.2 Le chiffrement symétrique

Le principe du chiffrement symétrique est d'utiliser une seule clé qui permettra à la fois de chiffrer et de déchiffrer la donnée.

L'avantage de ce type d'algorithme est qu'il est rapide à mettre en oeuvre. Cela le rend donc idéal pour le chiffrement de gros volumes comme des disques dur ou des bases de données.

L'inconvénient réside dans le fait que si la clé fuite, l'ensemble des données sera simple. Ce qui rend cette clé difficilement partageable.

Les algorithmes les plus courants sont :

Algorithme
Type Statut Usage recommandé
DES Bloc Obsolète aucun
3DES Bloc Déprécié Transition uniquement
AES (128,192,256) Bloc Standard moderne VPN, TLS, Chiffrement de disque
ChaCha20 Flux Très sûr réseau mobile, environnements connectés.

A noter que AES s'accompagne également de différentes méthodes pour chiffrer des blocs successifs.

Algorithme
Statut Sécurité Remarques
ECB Osolète Mauvais Révèle les motifs (patterns) de la donnée chiffrée.
CBC Sûr Bon Nécessite un IV (Initial Vector) aléatoire
CFB / OFB Sûr Bon Flux pseudo-aléatoire
GCM Très sûr Excellent Authentifié (AEAD), rapide

3.3 Le chiffrement asymétrique

Le principe du chiffrement asymétrique est qu'il dépends de deux clé. La première sert à chiffrer la donnée, la seconde à la déchiffrer.

Il s'agit du fameux couple Clé privée / Clé publique que l'on retrouve dans l'architecture PKI.

image.png

L'on s'en sert pour échanger des clé de chiffrement de manière sécurisée, pour vérifier les certificats et signatures numériques ainsi que pour de l'authentification par certificats.

Les algorithmes les plus courants sont :

Algorithme
Type Usage recommandé
DSA Signature Aucun (déprécié)
ECDSA Curve (courbes elliptiques) Signatures
RSA (2048, 3072,4096) Facteurs premiers Chiffrement, signature
Ed25519 Curve (courbes elliptiques) multiple (rapide et sûr)
DH (Diffie-Hellman) / ECDH Echange de clés TLS, VPN


IV. Les signatures numériques

4.1 Définition

Le principe de la signature numérique est de garantir authenticité (qui), l'intégrité (non altération) et la non-répudiation.

Le processus de signature et de validation se déroule comme suit :

drawing-1-1769173434.png


V. Limitations et bonnes pratiques

5.1 Considérations générales

Lors de l'application des concepts ci-dessus, il conviendra de respecter quelques principes élémentaires :

  • Ne pas utiliser d'algorithmes obsolètes, dépréciés ou compromis.
  • Préférer des clés fortes dans la mesure du possible.
  • Conserver les secrets et clés publiques de manière sécurisée.

5.2 Considérations particulières

5.2.1 Pour le hachage

  • Toujours utiliser un KDF (Key Derivation Function) pour les mots de passes.
  • Ajouter un salt (sel) unique par utilisateur

Un Salt est un élément aléatoire introduit dans le processus de hachage des mots de passes pour éviter que si plusieurs utilisateurs utilisent le même mot de passe, le hash soit exactement le même.

Exemple sans salt :

Username String to be hashed Hashed value = SHA256
user1 password123 EF92B778BAFE771E89245B89ECBC08A44A4E166C06659911881F383D4473E94F
user2 password123 EF92B778BAFE771E89245B89ECBC08A44A4E166C06659911881F383D4473E94F

Exemple avec salt :

Username Salt value String to be hashed Hashed value = SHA256 (Password + Salt value)
user1 D;%yL9TS:5PalS/d password123D;%yL9TS:5PalS/d 9C9B913EB1B6254F4737CE947EFD16F16E916F9D6EE5C1102A2002E48D4C88BD
user2 )<,-<U(jLezy4j>* password123)<,-<U(jLezy4j>* 6058B4EB46BD6487298B59440EC8E70EAE482239FF2B4E7CA69950DFBD5532F2

5.2.2 Pour le chiffrement symétrique

  • Ne jamais réutiliser un IV (vecteur d'initialisation)

Le vecteur d'initialisation (IV) est un bloc de bits utilisé dans le chiffrement pour initialiser le processus de chiffrement.

Il est généralement généré aléatoirement ou pseudo-aléatoirement et est utilisé pour initialiser le premier bloc de donnée lors d'une opération de chiffrement.

Cela garantit que lors du chiffrement, deux blocs identiques en entrée donne des résultats différents en sortie.

Trivia : Cela rend plus difficile les attaques par cryptanalyse en évitant les pattern récurrents.

5.2.3 Pour le chiffrement asymétrique

  • Le standard actuel (2025) est d'utiliser des clés supérieures ou égales à 2048 bits.

5.2.4 Autres recommandations

  • Utilisation de TLSv1.3 pour les protocoles sécurisés
  • Utilisation de clés ed25519 pour le SSH
  • Préférer WireGuard pour le VPN client (utilisation de ChaCha20).


Conclusion

En conclusion, dans le monde d'aujourd'hui, la cryptographie n'est pas seulement un moyen technique permettant d'assurer la confidentialité des échanges. C'est un pilier essentiel de la confiance numérique garantissant également l'intégrité et l'authenticité des échanges, d'autant plus primordiale dans une logique d'architecture Zero Trust.

Les méthodes utilisées vont dépendre grandement du besoin à adresser :

Objectif Technique Algorithmes à privilégier
Intégrité des données Hash SHA-256, SHA-3
Stockage de mots de passe KDF

bcrypt, Argon2

Confidentialité Chiffrement symétrique AES‑GCM, ChaCha20
Echange de clé Asymétrique Diffie‑Hellman, ECDH
Signature Asymétrique + Hash RSA, Ed25519

Trivia : Bitlocker utilise un chiffrement asymétrique AES256 en mode XTS et s'appuie sur un chiffrement matériel grâce à la puce TPM si disponible.