Crypto -- Est-ce là le SHA d'Alice?

Difficile de résister à expliquer quelques mots :wink: du dernier post de @how

J’ai repris pour cela un cours d’intro à la cryptographie pour économistes que j’avais donné il y a longtemps, voici quelques définitions et exemples pour que le mot sha256 soit moins mystérieux.

sha256 est une fonction de hachage. Une fonction de hachage est une fonction qui associe à un message de longueur arbitraire une valeur de longueur fixe appelée empreinte du message.

Le paragraphe suivant sur les propriétés peut-être zappé en première lecture.

Extrait du livre de D. Vergnaud, p.79 :
Les propriétés de que l’on attend d’une fonction de hachage 𝐻

  1. résistance à la pré-image : étant donné une empreinte ℎ, il doit être caclulatoirement difficile de trouver un message 𝑚 tel que 𝐻(𝑚)=h.
  2. résistance à la seconde pré-image : étant donné un message 𝑚
    , il doit être caclulatoirement difficile de trouver un message 𝑚′≠𝑚 tel que 𝐻(𝑚)=𝐻(𝑚′)* ;
  3. résistance aux collisions : il doit être caclulatoirement difficile de trouver deux messages 𝑚 et 𝑚′ tels que 𝐻(𝑚)=𝐻(𝑚′).

Pour le calcul : bibliothèque Python pour les fonctions de hachage :

Pour jouer un peu : tester une fonction de hachage sur deux textes quasi identiques avec une micro différence :

# Code python
import hashlib
m = hashlib.sha256(b"Texte de longueur quelconque....") 
#b pour convertir la chaîne de caractère en type bytes
print(m.digest())#renvoie l'empreinte (digest) du texte, objet de type bytes
print(m.hexdigest())#format hexadecimal 
m2 = hashlib.sha256(b"Texte de longueur quelconque....1") 
#différence entre m et m2
#b pour convertir la chaîne de caractère en type bytes
print(m2.digest())#renvoie l'empreinte (digest) du texte, objet de type bytes
print(m2.hexdigest())#format hexadecimal 

Ta fonction sha256sum

c’est la fonction sha256 + une vérification de l’empreinte par rapport au texte de référence ?

2 Likes

Non c’est simplement un raccourci pour passer le nom du fichier et obtenir le résultat de la commande sha256sum pour ce fichier : cela permet de créer le fichier de vérification. Moi je dis : la somme c’est ça et elle se trouve ici. Comme elle apparaît sur notre site web dans la fiche de présentation du livre et à côté du fichier PDF correspondant, si tu obtiens une copie du fichier, tu peux vérifier que la somme de ta copie correspond à celle que nous fournissons.

                                 ______________ nom du fichier destination
function ss() { sha256sum "$1" > "$1".sha256sum; } # Définit la fonction ss
                ^ commande ^   ^ renvoyer le résultat dans un fichier
                            \_ premier argument (nom du fichier source)

Si la source ($1) est livre.pdf alors la destination est fichier.pdf.sha256sum :

$ ss livre.pdf              # crée le fichier livre.pdf.sha256sum
$ cat livre.pdf.sha256sum   # lit le fichier livre.pdf.sha256sum
20db825136c0e838f08fa9c5fe5806d40f8b955f73d5840cf41973032e18cd16  livre.pdf.sha256sum
$# ss livre.pdf est équivalent à :
$ sha256sum livre.pdf > livre.pdf.sha256sum

Merci en tout cas pour l’éclairage ! Sans doute une explication plus précise devrait être fournie en lien avec la colonne SHA256sum sur les pages de présentation des livres :slight_smile:

Ok je comprends maintenant, juste pour être sûre peut-on dire que sha256sum est en fait la fonction sha256 (utilisée dans linux) ?

https://sha256sum.com/
Comment vérifier la somme de contrôle SHA256 du fichier sous Linux

Si la source ($1) est livre.pdf alors la destination est livre.pdf.sha256sum

Merci pour les explications !

Oui, de man sha256sum :

sha256sum - compute and check SHA256 message digest

En fait, SHA est l’acronyme de Secure Hash Algorithm.