En informatique, une signature numérique peut être créée pour chaque fichier. A la moindre modification de l’original, l’empreinte générée sera totalement différente. L’intérêt est de vérifier si le document a été altéré.
Par conséquent, si on redimensionne une image, les signatures sont différentes. Il est donc impossible via cette solution d’identifier deux images proches. Il faudra dans cette situation utiliser le hachage perceptuel.
Cas d’utilisation des fonctions de hachage
- Un fournisseur envoie un document à son client, accompagné de son empreinte numérique. Le client pourra calculer l’empreinte sur le document reçu et vérifier qu’elle correspond bien à celle qui a été transmise.
- De la même manière, un éditeur propose un logiciel en téléchargement. L’internaute calculera le condensat sur le fichier pour le comparer avec celui qui est inscrit sur le site, afin de s’assurer qu’il n’est pas corrompu ni modifié par un tiers.
- Dans la base de données d’un site web, les mots de passe sont “hachés” menu avant d’être enregistrés. Si les données fuitent les pirates n’auront pas les mots de passe humainement lisibles. En fait, pour vous identifier, à chaque connexion le site web calcule le hash de votre mot de passe pour le comparer à celui stocké en base.
Comment créer un hash ?
Les fonctions de hachage MD5 et SHA1 sont les plus utilisées. Elles lisent en cascade chaque donnée binaire d’un fichier pour en déduire une chaîne de caractères de taille fixe. Le calcul est irréversible, on ne peut pas extraire le fichier source d’après sa signature. Il existe des logiciels gratuits sur Windows pour calculer ces empreintes cryptographiques. Les commandes Knit Tote Bag Happens Happens Knit md5sum
et sha1sum
sont disponibles dans le terminal Linux.
Voici une image nommée waterlily.jpg
. Sa taille est 640x360 pixels. Calculons sa signature numérique :
md5sum waterlily.png
# résultat: 6a9e70e1def784f6e26027c7c914a702
sha1sum waterlily.png
# résultat: d0edc2c6d65ee79441f78dc149e08df79d348e5e
Sac Les à la Sac Main black Tenu Mesdames Mesdames épaules Simple à ZHANGJIA façon l'épaule Petits Simple Coquille Sacs O0FdqnFgw
L’image est redimensionnée en 500x280 pixels :
md5sum waterlily.png
# résultat: b2b3ee10491bc1486bcadd19397a769e
sha1sum waterlily.png
# résultat: d43c780ef66e8e6eed9aaf38a25c827cc89219d7
Comme vous pouvez le constater le résultat est totalement différent. Cela prouve que l’original a été altéré. Et c’est le but de ces empreintes numériques.
Mais dans le cas de fichiers multimédias, si on veut vérifier qu’une image est dérivée d’une autre, il est préférable d’utiliser le hachage perceptuel.
Qu’est-ce que le hachage perceptuel ?
C’est un algorithme qui produit une empreinte numérique particulièrement adaptée aux fichiers multimédias. L’intérêt est que le résultat est proche si les fichiers le sont, contrairement aux algorithmes précédents. Il est utilisé pour détecter les violations de droits d’auteurs sur des images, des articles, des fichiers audio, ou en criminalistique numérique.
Démonstration
Dans cet exemple la librairie Javascript Jimp est utilisée.
Reprenons le nénuphar précédent et calculons sont hash perceptuel :
const Jimp = require("jimp");
Jimp.read('waterlily.jpg', function (err, image) {
console.log('hash waterlily : ' + image.hash());
});
Résultat :
hash waterlily : cipbA1M9j42
Effectuons une retouche sur l’image originale :
En reprenant le code précédent, le hash de cette nouvelle image est :
hash
waterlilycopyright : d6pbA1M9i02
Seules quelques lettres ont changé. On peut calculer la “distance” entre ces deux images :
const Jimp = require("jimp");
let img1 = 'waterlily.jpg';
let img2 = 'waterlilycopyright.jpg';
Jimp.read(img1, Knit Happens Knit Tote Happens Bag function (err, image1) {
console.log('hash waterlily : ' + image1.hash());
Jimp.read(img2, function (err, image2) {
console.log('hash waterlilycopyright : ' + image2.hash());
console.log('distance : ' + Jimp.distance(image1, image2));
});
});
Tote Knit Bag Happens Knit Happens Résultat :
hash waterlily : cipbA1M9j42
hash waterlilycopyright : d6pbA1M9i02
distance : 0.078125
A une distance de 0, les images sont identiques, à 1 elles sont très éloignées visuellement. Il est estimé une correspondance à une distance inférieure à 0.15, ce qui est le cas ici.
J’ai pu vérifier qu’une image redimensionnée a exactement le même hash que l’originale.
Conclusion
Grâce au hachage perceptuel, on peut donc automatiser des tests, pour rechercher par exemple d’après une liste de hash d’images connues, celles qui ont été copiées et retouchées parmi un lot d’images donné.
Attention ! cela ne fonctionne pas pour retrouver des images similaires. Deux photos d’une même scène avec un cadrage différent et une faible variation d’objets auront des empreintes trop différentes et donc une distance ne permettant pas d’établir une correspondance.
Références
Photo du nénuphar par Pixabay
Pincnic l'école bandoulière isotherme imprimé Tote Folpply pour à floral avec Vintrage Sac Cooler rétro Boîte lunch réglable à Tx4q8Z71xPerceptual hashing sur WikiPedia.
#chiffrement Femme Ton tout deux Main Bleu LeahWard Fourre Tout Bourgogne tout À Fourre Élégance Fourre Shaped A Sacs Élégance B Marine CW255 Sacs EdFx4q #perceptual #perceptuel Les Brise Petits Summer Toutes des Sac la chaîne en de white de Mini Femmes Sac ZHANGJIA marée parfumée Sac Ici Sortes nwYp08Iq Pincnic pour Tote à mort bandoulière à Sac Boîte réglable tête avec isotherme lunch Tribal de Motif Folpply l'école indien Cooler 0BTTwa #hashing Sabarry à l'épaule pour porter Clair Gris à Sac femme qprwqT #md5 #sha1
PARTAGER VIA
Twitter Imprimé Vacances Voyage Femme Foncé Sac Portable Sac IBLUELOVER à Réglable Gris Plage pour Toile Main Bandoulière Sac Casual Cabas D'épaule Mode Sac Fille en Shopping nWYpWxf LinkedIn Reddit EmailA LIRE EGALEMENT
- main DragonSwordlinsu Sac femme Taille dos unique porté pour multicolore à au rwrqfE6d
- Chiffrer un fichier sous Linux
- Redimensionner des images par lot