Chiffrer, encoder ou hacher ses données ?

Ces notions sont fondamentales, elles permettent d’atteindre des objectifs et des niveaux de sécurité bien différents.

Soyons vigilant sur la bonne utilisation de ces méthodes afin de répondre correctement au besoin initial !

Description

Voici une description avec les avantages et inconvénients de chacune des méthodes.

  • Encodage : vous transformez des données dans un format spécifique (exemple: base64) afin de rendre la lecture plus simple de ces données entre les systèmes.
    • Avantage : interopérabilité améliorée, les données sont transformées vers un format standard, compris et traité uniformément sur les systèmes.
    • Inconvénient : ce n’est pas une méthode de sécurisation des données, le décodage est très simple à réaliser.

Un exemple en CLI sous Linux, en base64 :

# on encode en base64
echo -n 'Hello, world!' | base64
# on décode
echo 'SGVsbG8sIHdvcmxkIQ==' | base64 --decode
Hello, world!
  • Chiffrement : vous sécurisez des données en les rendant illisibles, elles sont lisibles uniquement grâce à une clé secrète.
    • Avantage : les données sont protégées et illisibles par des accès non autorisées.
    • Inconvénient : les clés de chiffrement doivent être gérées et stockées correctement, un fichier chiffré dont la clé est perdue ne pourra plus être déchiffré.

Un exemple avec GPG : une clé secrète à conserver en sécurité, avec un algorithme AES-256 :

# on créé un fichier avec du contenu
echo -n "Hello, world!" > message.txt
# on chiffre avec GPG
gpg --symmetric --cipher-algo AES256 message.txt
[on tape la passphrase forte à conserver]
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created

# le message.txt.gpg est créé
ls -l ./
-rw-r--r--  1 root root   13 May 13 11:26 message.txt
-rw-r--r--  1 root root   94 May 13 11:27 message.txt.gpg

# on supprime le fichier non chiffré
rm message.txt

# il nous reste un seul fichier, chiffré
ls -l
-rw-r--r-- 1 root root 94 May 13 11:27 message.txt.gpg

# on déchiffre message.txt.gpg
gpg --output decrypted_message.txt --decrypt message.txt.gpg

# puis on le lit
cat decrypted_message.txt
Hello, world!
  • Hash : imaginez le hash comme une « empreinte digitale » numérique unique pour chaque fichier – pour plus d’informations, rendez-vous sur notre article Le hash de fichier.
    • Avantages : le hash permet de détecter les altérations sur les fichiers, un aspect crucial pour la sécurité des données.
    • Inconvénients : les attaques sur les données hachées sont plus « simples » à réaliser que sur du chiffrement.

Un exemple en CLI sous Linux, avec un hash en SHA-256 :

# hachage en SHA-256
echo "Ceci est un exemple de contenu de fichier." > example.txt
sha256sum example.txt > example.txt.sha256

# on vérifie que le fichier n'a pas été altéré
# ici il ne l'est pas :
sha256sum -c example.txt.sha256
example.txt: OK

# ici on l'altère:
echo "alteration" >> example.txt
sha256sum -c example.txt.sha256
example.txt: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

Il suffit de sauvegarder la valeur de sortie, afin de vérifier que le fichier n’aie pas été altéré. Si la valeur de sortie est différente, alors il y a une altération de la donnée.

Exemple : tunnel IPSEC

Hachage

Prenons un exemple pour illustrer ces méthodes : le tunnel IPSEC. IPSEC utilise 2 méthodes : hachage et chiffrement.

Le hachage dans IPSec est utilisé pour maintenir l’intégrité et l’authenticité des données. Il assure que les données n’ont pas été altérées pendant la transmission. IPSec utilise un processus appelé HMAC (Hash-based Message Authentication Code) pour créer une empreinte numérique des données, en utilisant une clé secrète partagée.

Exemple concret : IPSec peut utiliser HMAC avec un algorithme comme SHA-256 pour garantir que les données transmises sont intactes et authentiques. Lorsque les données arrivent à leur destination, le même processus HMAC est utilisé pour vérifier le hash. Si le hash correspond, cela signifie que les données n’ont pas été altérées.

Chiffrement

IPSec utilise le chiffrement pour sécuriser les données transitant entre deux points d’un réseau. Le chiffrement transforme les données lisibles (claires) en données chiffrées (illisibles) à l’aide d’une clé secrète. Ce processus garantit que même si les données sont interceptées, elles ne peuvent être lues par personne sans la clé de déchiffrement appropriée.

Exemple concret : Dans un tunnel IPSec, le protocole ESP (Encapsulating Security Payload) peut utiliser l’algorithme AES pour chiffrer les données. Si un paquet contient des informations sensibles, telles que des données de transaction financière, AES peut être utilisé pour rendre ce paquet illisible pour quiconque interceptant le trafic sans la clé correcte.

Exemple : le certificat SSL

Lorsque vous vous connectez à un site Web sécurisé utilisant SSL (Secure Sockets Layer) ou TLS (Transport Layer Security), plusieurs éléments interviennent pour garantir la sécurité de la connexion. Voici un exemple concret de la façon dont ces éléments fonctionnent ensemble pour sécuriser une connexion à un site Web :

Processus de Connexion SSL pour Accéder à un Site Web

  1. Démarrage de la Connexion (Handshake):
    • Votre navigateur envoie une demande sécurisée au serveur. Cela inclut les versions de protocoles SSL/TLS que le navigateur prend en charge, ainsi que les suites de chiffrement disponibles.
  2. Réponse du Serveur:
    • Le serveur répond avec un certificat SSL. Ce certificat contient la clé publique du serveur et est signé par une autorité de certification (CA) pour attester de son authenticité.
    • Le serveur sélectionne également la suite de chiffrement que les deux parties utiliseront, basée sur les options envoyées par le navigateur.
  3. Vérification du Certificat:
    • Votre navigateur vérifie le certificat SSL du serveur. Il s’assure que le certificat est toujours valide, qu’il est signé par une autorité de certification de confiance, et que le nom de domaine du certificat correspond au nom de domaine du site.
  4. Établissement des Clés de Session:
    • Le navigateur génère une clé de session et la chiffre avec la clé publique du serveur (extraite du certificat SSL). Il envoie ensuite cette clé chiffrée au serveur.
    • Le serveur déchiffre la clé de session avec sa clé privée correspondante.
  5. Chiffrement Symétrique de la Communication:
    • Une fois que les deux parties ont la clé de session, elles commencent à chiffrer les communications ultérieures avec cette clé. Ceci assure que les données échangées entre le navigateur et le serveur restent confidentielles et sécurisées.
  6. Fermeture de la Connexion:
    • Lorsque la session est terminée, les clés de session sont détruites, garantissant ainsi qu’elles ne peuvent pas être réutilisées pour d’autres sessions.

Exemple d’Utilisation des Technologies

  • Chiffrement: Utilisation de clés publiques et privées pour échanger une clé de session sécurisée, suivie par un chiffrement symétrique pour la communication.
  • Hachage: Le certificat SSL contient également un hash du certificat, utilisé pour vérifier que le certificat n’a pas été modifié depuis sa création.
  • Encodage: Les certificats sont souvent encodés en format X.509, qui utilise des schémas d’encodage tels que DER (Distinguished Encoding Rules).

Cet exemple illustre comment SSL/TLS utilise le chiffrement, le hachage, et l’encodage pour sécuriser la connexion à un site Web, garantissant la confidentialité, l’intégrité, et l’authentification des données échangées entre vous et le serveur.

Aller plus loin…

Quelques liens intéressants à explorer sur le sujet :

Comments are closed