Comment prouver qu’un fichier n’a pas changé
Une empreinte (en anglais hash) est un nombre calculé à partir du contenu d’un fichier. Si un seul caractère change, l’empreinte change complètement.
C’est ce qui permet de prouver, des mois plus tard, qu’un fichier est resté tel qu’on l’a collecté. Les métadonnées, elles, disent qui l’a créé et quand.
À la fin de cette leçon
Remarque
Je peux prouver qu’un fichier n’a pas changé et lire ses métadonnées.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Empreinte | un nombre calculé sur le contenu d’un fichier | 2cb4b143… |
| Fonction de hachage | le calcul qui transforme un contenu en empreinte | SHA-256 |
| Intégrité | l’état d’un fichier qui n’a subi aucun changement | |
| Métadonnées | les informations sur un fichier, pas son contenu | |
| Date de modification | l’instant où le contenu a changé pour la dernière fois | |
| Propriétaire | le compte auquel appartient un fichier |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une empreinte résume un fichier en un nombre
Une fonction de hachage lit tout le contenu et rend un nombre de longueur fixe. SHA-256 rend 64 chiffres hexadécimaux.
Un chiffre hexadécimal va de 0 à 9, puis de a à f. Le même contenu donne toujours la même empreinte. Un contenu différent donne une empreinte sans rapport.
L’empreinte du mot bonjour
printf 'bonjour' | sha256sumAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La même chose avec une majuscule
printf 'Bonjour' | sha256sumAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Exemple travaillé : une lettre change tout
| Texte | Début de l’empreinte SHA-256 | Ce qu’on remarque |
|---|---|---|
| bonjour | 2cb4b1431b84 | Référence |
| Bonjour | 9172e8eec99f | Une majuscule : tout est différent |
| (texte vide) | e3b0c44298fc | Même un fichier vide a une empreinte |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Comparer deux empreintes prouve l’intégrité
Au moment de la collecte, on calcule l’empreinte et on la note dans le rapport. Plus tard, on la recalcule.
Si les deux empreintes sont égales, le fichier est intact : on parle d’intégrité. Si elles diffèrent, le contenu a changé, même d’un seul octet.
Un virement de 1500 euros
printf 'virement 1500 euros\n' | sha256sumAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le même virement avec un chiffre changé
printf 'virement 7500 euros\n' | sha256sumAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup de gens pensent que deux fichiers de même taille et de même date sont identiques. Une taille et une date se copient ou se changent facilement. Seule l’empreinte prouve que le contenu est le même.
Les métadonnées racontent le fichier, pas son contenu
Les métadonnées sont ce qu’un système écrit autour d’un fichier : son propriétaire, ses droits, sa taille et ses dates.
Elles aident à situer un fichier dans le temps. Mais elles se changent avec une simple commande : une métadonnée est un indice, jamais une preuve seule.
Exemple travaillé : lire des métadonnées
| Métadonnée | Ce qu’elle dit | Peut-on la falsifier ? |
|---|---|---|
| Propriétaire | Quel compte détient le fichier | Oui, avec les droits d’administration |
| Droits | Qui peut lire, écrire ou lancer | Oui, avec les droits du propriétaire |
| Date de modification | Quand le contenu a changé | Oui, très facilement |
| Empreinte | Quel est le contenu exact | Non : tout changement la modifie |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Lire un nombre de secondes comme une date
date -u -d @1700000000 '+%F %T'Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
L’en-tête du fichier de dates du dossier
head -n 1 case/mtimes.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le nombre de lignes de ce fichier
wc -l case/mtimes.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.