Vous êtes sur la page 1sur 94

Fonctions de

hachage

Procédés de
signature

Collisions

Attaque des
anniversaires
Fonctions de hachage
SHA-256

1 / 28
Fonctions de
hachage
Table des matières
Procédés de
signature

Collisions

Attaque des
anniversaires 1 Procédés de signature
SHA-256

2 Collisions

3 Attaque des anniversaires

4 SHA-256

2 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires

SHA-256

3 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires Pour les documents électroniques on utilise les procédés de
SHA-256
signature.

3 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires Pour les documents électroniques on utilise les procédés de
SHA-256
signature. Une signature dans ce cas peut être transmise sur un
réseau informatique.

3 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires Pour les documents électroniques on utilise les procédés de
SHA-256
signature. Une signature dans ce cas peut être transmise sur un
réseau informatique.

Bien entendu, un procédé de signature doit satisfaire les mêmes


exigences qu’une signature conventionnelle.

3 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires Pour les documents électroniques on utilise les procédés de
SHA-256
signature. Une signature dans ce cas peut être transmise sur un
réseau informatique.

Bien entendu, un procédé de signature doit satisfaire les mêmes


exigences qu’une signature conventionnelle. Ainsi, une signature
électronique doit être “attachée” voire “collée” à un document.

3 / 28
Fonctions de
hachage

Procédés de
signature
Une signature “conventionnelle” sur un document est une façon
Collisions
d’engager la responsabilité du signataire.
Attaque des
anniversaires Pour les documents électroniques on utilise les procédés de
SHA-256
signature. Une signature dans ce cas peut être transmise sur un
réseau informatique.

Bien entendu, un procédé de signature doit satisfaire les mêmes


exigences qu’une signature conventionnelle. Ainsi, une signature
électronique doit être “attachée” voire “collée” à un document.
Une signature électronique doit être vérifiable, i.e., que l’on
peut authentifier le signataire.

3 / 28
Fonctions de
hachage

Procédés de
signature

Collisions
Un procédé de signature doit donc être composé d’un
Attaque des
anniversaires algorithme de signature, privé, et d’un algorithme de
SHA-256 vérification, public.

4 / 28
Fonctions de
hachage

Procédés de
signature

Collisions
Un procédé de signature doit donc être composé d’un
Attaque des
anniversaires algorithme de signature, privé, et d’un algorithme de
SHA-256 vérification, public.

Bob signe un message x avec un algorithme (secret) sig. Puis


le résultat sig(x) peut être vérifié par l’algorihme (public) ver
de vérification :

4 / 28
Fonctions de
hachage

Procédés de
signature

Collisions
Un procédé de signature doit donc être composé d’un
Attaque des
anniversaires algorithme de signature, privé, et d’un algorithme de
SHA-256 vérification, public.

Bob signe un message x avec un algorithme (secret) sig. Puis


le résultat sig(x) peut être vérifié par l’algorihme (public) ver
de vérification : ver(x, y ) = vrai si y = sig(x) et
ver(x, y ) = faux si y 6= sig(x).

4 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256

5 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256
Bob signe un message x ∈ Zn comme sigKd (x) = x d mod n.

5 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256
Bob signe un message x ∈ Zn comme sigKd (x) = x d mod n.

L’algorithme de vérification est : verKe (x, y ) = vrai si, et


seulement si, x ≡ y e (mod n).

5 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256
Bob signe un message x ∈ Zn comme sigKd (x) = x d mod n.

L’algorithme de vérification est : verKe (x, y ) = vrai si, et


seulement si, x ≡ y e (mod n).

Comme Ke est public, tout le monde peut employer verKe afin


de vérifier une signature de Bob.

5 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256
Bob signe un message x ∈ Zn comme sigKd (x) = x d mod n.

L’algorithme de vérification est : verKe (x, y ) = vrai si, et


seulement si, x ≡ y e (mod n).

Comme Ke est public, tout le monde peut employer verKe afin


de vérifier une signature de Bob. Alice reçoit le document x
avec la signature y = x d mod n de Bob.

5 / 28
Fonctions de
hachage
RSA en mode signature
Procédés de
signature

Collisions Soient Ke = (e, n) la clef publique de Bob, et Kd = (d, p, q) sa


Attaque des clef privée (pour RSA).
anniversaires

SHA-256
Bob signe un message x ∈ Zn comme sigKd (x) = x d mod n.

L’algorithme de vérification est : verKe (x, y ) = vrai si, et


seulement si, x ≡ y e (mod n).

Comme Ke est public, tout le monde peut employer verKe afin


de vérifier une signature de Bob. Alice reçoit le document x
avec la signature y = x d mod n de Bob. Afin de s’assurer de
l’authenticité de y , elle calcule y e mod n, de sorte que y e
mod n = x si, et seulement, si y = x d mod n.

5 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (1/2)
signature
Les procédés de signature actuels ne permettent de signer – en
Collisions
un temps raisonnable – que de “petits” messages, et la taille des
Attaque des
anniversaires signatures (en nombre de bits) est du même ordre que la taille
SHA-256 des messages signés...

6 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (1/2)
signature
Les procédés de signature actuels ne permettent de signer – en
Collisions
un temps raisonnable – que de “petits” messages, et la taille des
Attaque des
anniversaires signatures (en nombre de bits) est du même ordre que la taille
SHA-256 des messages signés...
Les fonctions de hachage sont une solution à ce problème.

6 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (1/2)
signature
Les procédés de signature actuels ne permettent de signer – en
Collisions
un temps raisonnable – que de “petits” messages, et la taille des
Attaque des
anniversaires signatures (en nombre de bits) est du même ordre que la taille
SHA-256 des messages signés...
Les fonctions de hachage sont une solution à ce problème. Une
fonction de hachage doit être rapide à calculer, et transforme
un message de longueur arbitraire en une empreinte numérique
de taille fixée (par exemple 160 bits).

6 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (1/2)
signature
Les procédés de signature actuels ne permettent de signer – en
Collisions
un temps raisonnable – que de “petits” messages, et la taille des
Attaque des
anniversaires signatures (en nombre de bits) est du même ordre que la taille
SHA-256 des messages signés...
Les fonctions de hachage sont une solution à ce problème. Une
fonction de hachage doit être rapide à calculer, et transforme
un message de longueur arbitraire en une empreinte numérique
de taille fixée (par exemple 160 bits). Donc, au lieu de signer un
message arbitrairement long, il suffit de signer son empreinte
numérique.

6 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (2/2)
signature

Collisions

Attaque des
anniversaires

SHA-256
Lorsque Bob souhaite signer un message x, il calcule d’abord
l’empreinte numérique z = h(x),

7 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (2/2)
signature

Collisions

Attaque des
anniversaires

SHA-256
Lorsque Bob souhaite signer un message x, il calcule d’abord
l’empreinte numérique z = h(x), signe avec y = sig(z),

7 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (2/2)
signature

Collisions

Attaque des
anniversaires

SHA-256
Lorsque Bob souhaite signer un message x, il calcule d’abord
l’empreinte numérique z = h(x), signe avec y = sig(z), et
transmet le couple (x, y ) au travers du canal public de
communication.

7 / 28
Fonctions de
hachage
Signature et fonctions de hachage
Procédés de (2/2)
signature

Collisions

Attaque des
anniversaires

SHA-256
Lorsque Bob souhaite signer un message x, il calcule d’abord
l’empreinte numérique z = h(x), signe avec y = sig(z), et
transmet le couple (x, y ) au travers du canal public de
communication.

Tout le monde peut vérifier la signature en calculant z = h(x)


puis en appliquant ver(z, y ).

7 / 28
Fonctions de
hachage
Table des matières
Procédés de
signature

Collisions

Attaque des
anniversaires 1 Procédés de signature
SHA-256

2 Collisions

3 Attaque des anniversaires

4 SHA-256

8 / 28
Fonctions de
hachage

Il est nécessaire d’être précautionneux pour que l’emploi de la


Procédés de
signature fonction de hachage n’affaiblisse pas la sécurité du procédé de
Collisions signature.
Attaque des
anniversaires

SHA-256

9 / 28
Fonctions de
hachage

Il est nécessaire d’être précautionneux pour que l’emploi de la


Procédés de
signature fonction de hachage n’affaiblisse pas la sécurité du procédé de
Collisions signature. Comme on signe l’empreinte numérique au lieu du
Attaque des message, il est nécessaire que h satisfasse quelques critères afin
anniversaires

SHA-256
d’éviter les falsifications.

9 / 28
Fonctions de
hachage

Il est nécessaire d’être précautionneux pour que l’emploi de la


Procédés de
signature fonction de hachage n’affaiblisse pas la sécurité du procédé de
Collisions signature. Comme on signe l’empreinte numérique au lieu du
Attaque des message, il est nécessaire que h satisfasse quelques critères afin
anniversaires

SHA-256
d’éviter les falsifications.

L’attaque la plus évidente consiste, pour Oscar, à partir d’un


message signé (x, y ) authentique (avec y = sig(h(x))) envoyé
par Bob sur le canal public, à calculer z = h(x) et à chercher
x 0 6= x tel que h(x 0 ) = z.

9 / 28
Fonctions de
hachage

Il est nécessaire d’être précautionneux pour que l’emploi de la


Procédés de
signature fonction de hachage n’affaiblisse pas la sécurité du procédé de
Collisions signature. Comme on signe l’empreinte numérique au lieu du
Attaque des message, il est nécessaire que h satisfasse quelques critères afin
anniversaires

SHA-256
d’éviter les falsifications.

L’attaque la plus évidente consiste, pour Oscar, à partir d’un


message signé (x, y ) authentique (avec y = sig(h(x))) envoyé
par Bob sur le canal public, à calculer z = h(x) et à chercher
x 0 6= x tel que h(x 0 ) = z. S’il y parvient, alors (x 0 , y ) est un
message signé valide.

9 / 28
Fonctions de
hachage

Il est nécessaire d’être précautionneux pour que l’emploi de la


Procédés de
signature fonction de hachage n’affaiblisse pas la sécurité du procédé de
Collisions signature. Comme on signe l’empreinte numérique au lieu du
Attaque des message, il est nécessaire que h satisfasse quelques critères afin
anniversaires

SHA-256
d’éviter les falsifications.

L’attaque la plus évidente consiste, pour Oscar, à partir d’un


message signé (x, y ) authentique (avec y = sig(h(x))) envoyé
par Bob sur le canal public, à calculer z = h(x) et à chercher
x 0 6= x tel que h(x 0 ) = z. S’il y parvient, alors (x 0 , y ) est un
message signé valide.

Pour éviter ce type d’attaque, on demande à h d’être à


collisions faibles difficiles.

9 / 28
Fonctions de
hachage
Collisions faibles difficiles
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256 Une fonction de hachage h est à collisions faibles difficiles si,


étant donné un message x, il est calculatoirement difficile
d’obtenir un message x 0 6= x tel que h(x 0 ) = h(x).

10 / 28
Fonctions de
hachage
Collisions faibles difficiles
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256 Une fonction de hachage h est à collisions faibles difficiles si,


étant donné un message x, il est calculatoirement difficile
d’obtenir un message x 0 6= x tel que h(x 0 ) = h(x).

Observons que par sa définition même une fonction de hachage


ne peut pas être injective, de sorte que des collisions existent
(i.e., x 6= x 0 mais h(x) = h(x 0 )).

10 / 28
Fonctions de
hachage
Collisions fortes difficiles
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256 Une fonction de hachage h est à collisions fortes difficiles s’il est
calculatoirement difficile d’obtenir deux message distincts x, x 0
tel que h(x 0 ) = h(x).

11 / 28
Fonctions de
hachage
Collisions fortes difficiles
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256 Une fonction de hachage h est à collisions fortes difficiles s’il est
calculatoirement difficile d’obtenir deux message distincts x, x 0
tel que h(x 0 ) = h(x).

Notons qu’une fonction de hachage à collisions fortes difficiles


est nécessairement aussi à collisions faibles difficiles. (cf. Exo.)

11 / 28
Fonctions de
hachage
Fonction à sens unique
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256

Une fonction de hachage h est à sens unique si, étant donné


une empreinte numérique z, il est calculatoirement difficile de
trouver un message x tel que h(x) = z.

12 / 28
Fonctions de
hachage
Table des matières
Procédés de
signature

Collisions

Attaque des
anniversaires 1 Procédés de signature
SHA-256

2 Collisions

3 Attaque des anniversaires

4 SHA-256

13 / 28
Fonctions de
hachage

Procédés de
signature On va mettre en évidence une condition de sécurité nécessaire
Collisions portant sur la longueur des empreintes.
Attaque des
anniversaires

SHA-256

14 / 28
Fonctions de
hachage

Procédés de
signature On va mettre en évidence une condition de sécurité nécessaire
Collisions portant sur la longueur des empreintes. Cette condition résulte
Attaque des
anniversaires
d’une méthode simple pour obtenir des collisions appelée
SHA-256 attaque des anniversaires.

14 / 28
Fonctions de
hachage

Procédés de
signature On va mettre en évidence une condition de sécurité nécessaire
Collisions portant sur la longueur des empreintes. Cette condition résulte
Attaque des
anniversaires
d’une méthode simple pour obtenir des collisions appelée
SHA-256 attaque des anniversaires.

Elle repose sur le soi-disant paradoxe des anniversaires qui


énonce que la probabilité qu’il existe deux personnes
(différentes) partageant la même date d’anniversaire (sauf
eventuellement l’année) dans une assemblée de 23 personnes est
d’au moins 12 .

14 / 28
Fonctions de
hachage

Procédés de
signature On va mettre en évidence une condition de sécurité nécessaire
Collisions portant sur la longueur des empreintes. Cette condition résulte
Attaque des
anniversaires
d’une méthode simple pour obtenir des collisions appelée
SHA-256 attaque des anniversaires.

Elle repose sur le soi-disant paradoxe des anniversaires qui


énonce que la probabilité qu’il existe deux personnes
(différentes) partageant la même date d’anniversaire (sauf
eventuellement l’année) dans une assemblée de 23 personnes est
d’au moins 12 . Bien sûr, ceci ne constitue pas un paradoxe, mais
cela défie l’intuition.

14 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres.
SHA-256

15 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres. La probabilité que deux personnes aient la même date
SHA-256 sera alors 1 − qn .

15 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres. La probabilité que deux personnes aient la même date
SHA-256 sera alors 1 − qn .

Comptons le nombre de possibilités où n personnes possèdent


des dates de naissance deux-à-deux distinctes

15 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres. La probabilité que deux personnes aient la même date
SHA-256 sera alors 1 − qn .

Comptons le nombre de possibilités où n personnes possèdent


des dates de naissance deux-à-deux distinctes : c’est un
365!
arrangement de 23 parmi 365, c’est-à-dire (365−23)! , puisqu’il
s’agit d’un choix de n parmi 365 sans répétition.

15 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres. La probabilité que deux personnes aient la même date
SHA-256 sera alors 1 − qn .

Comptons le nombre de possibilités où n personnes possèdent


des dates de naissance deux-à-deux distinctes : c’est un
365!
arrangement de 23 parmi 365, c’est-à-dire (365−23)! , puisqu’il
s’agit d’un choix de n parmi 365 sans répétition.
365! 1
Il s’ensuit que qn = (365−23)! × 365 n puisque le nombre total de

date de naissance possibles est 365n .

15 / 28
Fonctions de
hachage
Paradoxe des anniversaires
Procédés de
signature
Calculons la probabilité qn que chaque personne, dans une
Collisions
assemblée de n, ait un jour de naissance différent de celui des
Attaque des
anniversaires autres. La probabilité que deux personnes aient la même date
SHA-256 sera alors 1 − qn .

Comptons le nombre de possibilités où n personnes possèdent


des dates de naissance deux-à-deux distinctes : c’est un
365!
arrangement de 23 parmi 365, c’est-à-dire (365−23)! , puisqu’il
s’agit d’un choix de n parmi 365 sans répétition.
365! 1
Il s’ensuit que qn = (365−23)! × 365 n puisque le nombre total de

date de naissance possibles est 365n .

En particulier, 1 − q23 ≥ 12 .

15 / 28
Fonctions de
hachage
Application aux collisions (1/5)
Procédés de
signature

Collisions

Attaque des Soit h : X → Z une fonction de hachage, pour des ensembles


anniversaires

SHA-256
finis X et Z tels que m ≥ 2n, avec m = |X | et n = |Z |.

16 / 28
Fonctions de
hachage
Application aux collisions (1/5)
Procédés de
signature

Collisions

Attaque des Soit h : X → Z une fonction de hachage, pour des ensembles


anniversaires

SHA-256
finis X et Z tels que m ≥ 2n, avec m = |X | et n = |Z |.

Observons qu’il y a nécessairement des collisions puisque h ne


peut pas être injective (sauf si m = 0 = n).

16 / 28
Fonctions de
hachage
Application aux collisions (1/5)
Procédés de
signature

Collisions

Attaque des Soit h : X → Z une fonction de hachage, pour des ensembles


anniversaires

SHA-256
finis X et Z tels que m ≥ 2n, avec m = |X | et n = |Z |.

Observons qu’il y a nécessairement des collisions puisque h ne


peut pas être injective (sauf si m = 0 = n).

Une méthode simple pour trouver des collisions consiste à tirer


k messages aléatoires deux-à-deux distincts x1 , · · · , xk , de
calculer zi = h(xi ), i = 1, · · · , k, et de chercher s’il y a une
collision parmi eux.

16 / 28
Fonctions de
hachage
Application aux collisions (2/5)
Procédés de Calculons la borne inférieure de la probabilité de trouver une
signature
collision par une telle méthode.
Collisions

Attaque des
anniversaires

SHA-256

17 / 28
Fonctions de
hachage
Application aux collisions (2/5)
Procédés de Calculons la borne inférieure de la probabilité de trouver une
signature
collision par une telle méthode. On suppose pour faire simple
Collisions

Attaque des
que les fibres de h sont uniformément distribuées, i.e., quel que
anniversaires soit z ∈ Z , |h−1 ({ z })| = m
n (on suppose soit que n divise m,
SHA-256 sinon on prend la division entière) .

17 / 28
Fonctions de
hachage
Application aux collisions (2/5)
Procédés de Calculons la borne inférieure de la probabilité de trouver une
signature
collision par une telle méthode. On suppose pour faire simple
Collisions

Attaque des
que les fibres de h sont uniformément distribuées, i.e., quel que
anniversaires soit z ∈ Z , |h−1 ({ z })| = m
n (on suppose soit que n divise m,
SHA-256 sinon on prend la division entière) . Notons que si une fibre
h−1 ({ z }) a plus d’éléments que mn , alors la probabilité de
trouver une collision sera plus grande (en effet, on aura une plus
grande chance de tirer au sort deux éléments distincts qui sont
tous deux dans cette fibre).

17 / 28
Fonctions de
hachage
Application aux collisions (2/5)
Procédés de Calculons la borne inférieure de la probabilité de trouver une
signature
collision par une telle méthode. On suppose pour faire simple
Collisions

Attaque des
que les fibres de h sont uniformément distribuées, i.e., quel que
anniversaires soit z ∈ Z , |h−1 ({ z })| = mn (on suppose soit que n divise m,
SHA-256 sinon on prend la division entière) . Notons que si une fibre
h−1 ({ z }) a plus d’éléments que m n , alors la probabilité de
trouver une collision sera plus grande (en effet, on aura une plus
grande chance de tirer au sort deux éléments distincts qui sont
tous deux dans cette fibre). Il s’ensuit que l’hypothèse
précédente est sensée puisqu’on cherche à évaluer une borne
inférieure de la probabilité.

17 / 28
Fonctions de
hachage
Application aux collisions (2/5)
Procédés de Calculons la borne inférieure de la probabilité de trouver une
signature
collision par une telle méthode. On suppose pour faire simple
Collisions

Attaque des
que les fibres de h sont uniformément distribuées, i.e., quel que
anniversaires soit z ∈ Z , |h−1 ({ z })| = mn (on suppose soit que n divise m,
SHA-256 sinon on prend la division entière) . Notons que si une fibre
h−1 ({ z }) a plus d’éléments que m n , alors la probabilité de
trouver une collision sera plus grande (en effet, on aura une plus
grande chance de tirer au sort deux éléments distincts qui sont
tous deux dans cette fibre). Il s’ensuit que l’hypothèse
précédente est sensée puisqu’on cherche à évaluer une borne
inférieure de la probabilité.

Puisque les fibres sont toutes de même taille et que les xi sont
tirés aléatoirement, les zi = h(xi ) peuvent eux-mêmes être
considérés comme des éléments aléatoires (non nécessairement
distincts) de Z .
17 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit :
Collisions

Attaque des
anniversaires

SHA-256

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions
totalement arbitraire ;
Attaque des
anniversaires

SHA-256

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions 1
totalement arbitraire ; la probabilité que z2 6= z1 est de 1 − n ;
Attaque des
anniversaires

SHA-256

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions
totalement arbitraire ; la probabilité que z2 6= z1 est de 1 − n1 ;
Attaque des
anniversaires la probabilité que z3 soit distinct de z1 et de z2 est de 1 − n2 , etc.
SHA-256

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions
totalement arbitraire ; la probabilité que z2 6= z1 est de 1 − n1 ;
Attaque des
anniversaires la probabilité que z3 soit distinct de z1 et de z2 est de 1 − n2 , etc.
SHA-256
La probabilité qu’il n’y ait pas de collision est donc
k−1
1 2 k −1 Y i
(1 − )(1 − ) · · · (1 − )= (1 − ).
n n n n
i=1

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions
totalement arbitraire ; la probabilité que z2 6= z1 est de 1 − n1 ;
Attaque des
anniversaires la probabilité que z3 soit distinct de z1 et de z2 est de 1 − n2 , etc.
SHA-256
La probabilité qu’il n’y ait pas de collision est donc
k−1
1 2 k −1 Y i
(1 − )(1 − ) · · · (1 − )= (1 − ).
n n n n
i=1

Si x est un nombre réel suffisamment petit, 1 − x ' e −x , or


2 3
e −x = 1 − x + x2! − x3! + · · · de sorte que
Qk−1 Qk−1 − i −k(k−1)
i
i=1 (1 − n ) ' i=1 e .
n = e 2n

18 / 28
Fonctions de
hachage
Application aux collisions (3/5)
Procédés de
La probabilité que les zi = h(xi ), i = 1, · · · , k, soient tous
signature distincts se calcule comme suit : le premier tirage z1 est
Collisions
totalement arbitraire ; la probabilité que z2 6= z1 est de 1 − n1 ;
Attaque des
anniversaires la probabilité que z3 soit distinct de z1 et de z2 est de 1 − n2 , etc.
SHA-256
La probabilité qu’il n’y ait pas de collision est donc
k−1
1 2 k −1 Y i
(1 − )(1 − ) · · · (1 − )= (1 − ).
n n n n
i=1

Si x est un nombre réel suffisamment petit, 1 − x ' e −x , or


2 3
e −x = 1 − x + x2! − x3! + · · · de sorte que
Qk−1 Qk−1 − i −k(k−1)
i
i=1 (1 − n ) ' i=1 e .
n = e 2n

La propabilité qu’il y ait au moins une collision est donc


−k(k−1)
 = 1 − e 2n .
18 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n,
Collisions

Attaque des
anniversaires

SHA-256

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−
−k(k−1)
⇔ 2n = log(1 − )

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−
−k(k−1) (1)
⇔ 2n = log(1 − )
1
⇔ k2 − k = 2n log 1−

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−
−k(k−1) (1)
⇔ 2n = log(1 − )
1
⇔ k2 − k = 2n log 1−
1
1 2
Si on ignore le terme −k, on obtient k = (2n log 1− ) .

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−
−k(k−1) (1)
⇔ 2n = log(1 − )
1
⇔ k2 − k = 2n log 1−
1
1 2
Si on ignore le terme −k, on obtient k = (2n log 1− ) .

Avec  = 12 , on obtient k ' 1, 17 n,

19 / 28
Fonctions de
hachage
Application aux collisions (4/5)
Procédés de
signature
Nous avons donc  en fonction de k et de n, et on peut trouver
Collisions
k en fonction de n et de , i.e., résoudre l’équation suivante en
Attaque des
anniversaires la variable k :
SHA-256
−k(k−1)
e 2n = 1−
−k(k−1) (1)
⇔ 2n = log(1 − )
1
⇔ k2 − k = 2n log 1−
1
1 2
Si on ignore le terme −k, on obtient k = (2n log 1− ) .

Avec  = 12 , on obtient k ' 1, 17 n, ce qui signifie que si on

hache environ n messages de X , alors on obtient une collision
avec la probabilité 12 .

19 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires :

20 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires : avec n = 365, on obtient k ' 22, 5.

20 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires : avec n = 365, on obtient k ' 22, 5. Ainsi
comme déjà énoncé, parmi 23 personnes, deux ont la même
date d’anniversaire avec une probabilité de 12 .

20 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires : avec n = 365, on obtient k ' 22, 5. Ainsi
comme déjà énoncé, parmi 23 personnes, deux ont la même
date d’anniversaire avec une probabilité de 12 .

Cette attaque des anniversaires impose une borne inférieure sur


la longueur des empreintes.

20 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires : avec n = 365, on obtient k ' 22, 5. Ainsi
comme déjà énoncé, parmi 23 personnes, deux ont la même
date d’anniversaire avec une probabilité de 12 .

Cette attaque des anniversaires impose une borne inférieure sur


la longueur des empreintes. Une empreinte de 40 bits est
vulnérable à une attaque des anniversaires utilisant seulement
220 (environ un million) de messages aléatoires.

20 / 28
Fonctions de
hachage
Application aux collisions (5/5)
Procédés de
signature
Si X est une assemblée d’individus et si Z est l’ensemble des
Collisions
365 jours d’une année (non bissextile), si h(x) représente la
Attaque des
anniversaires date d’anniversaire d’une personne x, on retrouve le paradoxe
SHA-256 des anniversaires : avec n = 365, on obtient k ' 22, 5. Ainsi
comme déjà énoncé, parmi 23 personnes, deux ont la même
date d’anniversaire avec une probabilité de 12 .

Cette attaque des anniversaires impose une borne inférieure sur


la longueur des empreintes. Une empreinte de 40 bits est
vulnérable à une attaque des anniversaires utilisant seulement
220 (environ un million) de messages aléatoires.

Actuellement on suggère l’emploi d’empreintes de plus ou moins


500 bits pour une très bonne sécurité.

20 / 28
Fonctions de
hachage
Table des matières
Procédés de
signature

Collisions

Attaque des
anniversaires 1 Procédés de signature
SHA-256

2 Collisions

3 Attaque des anniversaires

4 SHA-256

21 / 28
Fonctions de
hachage

Procédés de
signature Pour décrire SHA-256 (Secure Hash Algorithm) nous employons
Collisions les notations suivantes pour des opérations sur des blocs de 32
Attaque des
anniversaires
bits :
SHA-256
⊕ XOR bit-à-bit
∧ ET logique bit-à-bit
∨ OU logique bit-à-bit
¬ complémentation binaire bit-à-bit
+ addition modulo 232
Rn décalage à droite de n bits (et zéros à gauche)
Sn décalage circulaire à droite de n bits

22 / 28
Fonctions de
hachage
SHA-256 (1/6)
Procédés de
signature
(0) (0) (0)
Collisions L’empreinte initiale est (H1 , · · · , H8 ) où chaque Hi est un
Attaque des
anniversaires
bloc de 32 bits, fixé (et indépendant du message à hacher) dans
SHA-256 l’algorithme de SHA-256.

23 / 28
Fonctions de
hachage
SHA-256 (1/6)
Procédés de
signature
(0) (0) (0)
Collisions L’empreinte initiale est (H1 , · · · , H8 ) où chaque Hi est un
Attaque des
anniversaires
bloc de 32 bits, fixé (et indépendant du message à hacher) dans
SHA-256 l’algorithme de SHA-256.

Le calcul de l’empreinte d’un message M s’effectue tout d’abord


en effectuant un bourrage.

23 / 28
Fonctions de
hachage
SHA-256 (1/6)
Procédés de
signature
(0) (0) (0)
Collisions L’empreinte initiale est (H1 , · · · , H8 ) où chaque Hi est un
Attaque des
anniversaires
bloc de 32 bits, fixé (et indépendant du message à hacher) dans
SHA-256 l’algorithme de SHA-256.

Le calcul de l’empreinte d’un message M s’effectue tout d’abord


en effectuant un bourrage. Si le message M a ` bits, alors on
concatène un 1 à la fin de M (à droite), et puis k zeros, où k
est la plus petite solution positive à l’équation ` + 1 + k ≡ 448
(mod 512).

23 / 28
Fonctions de
hachage
SHA-256 (1/6)
Procédés de
signature
(0) (0) (0)
Collisions L’empreinte initiale est (H1 , · · · , H8 ) où chaque Hi est un
Attaque des
anniversaires
bloc de 32 bits, fixé (et indépendant du message à hacher) dans
SHA-256 l’algorithme de SHA-256.

Le calcul de l’empreinte d’un message M s’effectue tout d’abord


en effectuant un bourrage. Si le message M a ` bits, alors on
concatène un 1 à la fin de M (à droite), et puis k zeros, où k
est la plus petite solution positive à l’équation ` + 1 + k ≡ 448
(mod 512). Puis on concatène au résultat obtenu un bloc de 64
bits qui est la représentation en base deux (sur 64 bits) du
nombre `.

23 / 28
Fonctions de
hachage
SHA-256 (1/6)
Procédés de
signature
(0) (0) (0)
Collisions L’empreinte initiale est (H1 , · · · , H8 ) où chaque Hi est un
Attaque des
anniversaires
bloc de 32 bits, fixé (et indépendant du message à hacher) dans
SHA-256 l’algorithme de SHA-256.

Le calcul de l’empreinte d’un message M s’effectue tout d’abord


en effectuant un bourrage. Si le message M a ` bits, alors on
concatène un 1 à la fin de M (à droite), et puis k zeros, où k
est la plus petite solution positive à l’équation ` + 1 + k ≡ 448
(mod 512). Puis on concatène au résultat obtenu un bloc de 64
bits qui est la représentation en base deux (sur 64 bits) du
nombre `. On obtient alors un message dont la longueur est un
multiple de 512.

23 / 28
Fonctions de
hachage
SHA-256 (2/6)
Procédés de
signature

Collisions

Attaque des Par exemple, pour M = abc où a, b, c sont considérés comme


anniversaires
des caractères ASCII, ` = 8 × 3 = 24.
SHA-256

24 / 28
Fonctions de
hachage
SHA-256 (2/6)
Procédés de
signature

Collisions

Attaque des Par exemple, pour M = abc où a, b, c sont considérés comme


anniversaires
des caractères ASCII, ` = 8 × 3 = 24.
SHA-256

On a alors 448 − (24 + 1) = 423 (mod 512) de sorte que l’on


concatène abc avec un 1 puis 423 zéros,

24 / 28
Fonctions de
hachage
SHA-256 (2/6)
Procédés de
signature

Collisions

Attaque des Par exemple, pour M = abc où a, b, c sont considérés comme


anniversaires
des caractères ASCII, ` = 8 × 3 = 24.
SHA-256

On a alors 448 − (24 + 1) = 423 (mod 512) de sorte que l’on


concatène abc avec un 1 puis 423 zéros, et puis sa longueur `
en binaire, soit |00 · · ·{z
011000}, sur 64 bits.
64 bits

24 / 28
Fonctions de
hachage
SHA-256 (2/6)
Procédés de
signature

Collisions

Attaque des Par exemple, pour M = abc où a, b, c sont considérés comme


anniversaires
des caractères ASCII, ` = 8 × 3 = 24.
SHA-256

On a alors 448 − (24 + 1) = 423 (mod 512) de sorte que l’on


concatène abc avec un 1 puis 423 zéros, et puis sa longueur `
en binaire, soit |00 · · ·{z
011000}, sur 64 bits.
64 bits

On obtient donc le bloc de 512 bits suivant :


| {z } 01100010
01100001 | {z } 01100011
| {z } 1 |00 {z · · · 0} |00 · · ·{z
011000}
a b c 423 64

24 / 28
Fonctions de
hachage
SHA-256 (3/6)
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256
Ensuite le message M obtenu par l’étape de bourrage est
découpé en blocs de 512 bits chacun M (1) , M (2) , · · · , M (N) .

25 / 28
Fonctions de
hachage
SHA-256 (3/6)
Procédés de
signature

Collisions

Attaque des
anniversaires

SHA-256
Ensuite le message M obtenu par l’étape de bourrage est
découpé en blocs de 512 bits chacun M (1) , M (2) , · · · , M (N) .
(i)
Les 32 premiers bits de M (i) sont notés M0 , les 32 suivants
(i) (i)
M1 , et ainsi de suite jusqu’à M15 .

25 / 28
Fonctions de
hachage
SHA-256 (4/6)
Boucle principale de l’algorithme
Procédés de
signature

Collisions Boucle de i = 1 à N
(i−1) (i−1) (i−1) (i−1)
Attaque des
anniversaires
a := H1 ; b := H2 ; c := H3 ; d := H4 ;
(i−1) (i−1) (i−1) (i−1)
SHA-256 e := H5 ; f := H6 ; g := H7 ; h := H8 ;
Boucle de j = 0 à 63
T1 := h + Σ1 (e) + Ch(e, f , g ) + Kj + Wj ;
T2 := Σ0 (a) + Maj(a, b, c);
h := g ; g := f ; f := e; e := d + T1 ; d := c; c := b;
b := a; a := T1 + T2 ;
Fin
(i) (i−1) (i) (i−1)
H1 := a + H1 ; H2 := b + H2 ;...;
(i) (i−1)
H8 := h + H8 ; Fin

26 / 28
Fonctions de
hachage
SHA-256 (4/6)
Boucle principale de l’algorithme
Procédés de
signature

Collisions Boucle de i = 1 à N
(i−1) (i−1) (i−1) (i−1)
Attaque des
anniversaires
a := H1 ; b := H2 ; c := H3 ; d := H4 ;
(i−1) (i−1) (i−1) (i−1)
SHA-256 e := H5 ; f := H6 ; g := H7 ; h := H8 ;
Boucle de j = 0 à 63
T1 := h + Σ1 (e) + Ch(e, f , g ) + Kj + Wj ;
T2 := Σ0 (a) + Maj(a, b, c);
h := g ; g := f ; f := e; e := d + T1 ; d := c; c := b;
b := a; a := T1 + T2 ;
Fin
(i) (i−1) (i) (i−1)
H1 := a + H1 ; H2 := b + H2 ;...;
(i) (i−1)
H8 := h + H8 ; Fin

(N) (N)
H (N) = (H1 , · · · , H8 ) est l’empreinte de M.

26 / 28
Fonctions de
hachage
SHA-256 (5/6)
Procédés de
signature Dans l’algorithme précédent, et le suivant, on emploie les
Collisions fonctions suivantes, lesquelles opérent sur des blocs de 32 bits,
Attaque des
anniversaires
et produisent des blocs de 32 bits également.
SHA-256

Ch(x, y , z) = (x ∧ y ) ⊕ (¬x ∧ ¬z)


Maj(x, y , z) = (x ∧ y ) ⊕ (x ∧ z) ⊕ (y ∧ z)
Σ0 (x) = S 2 (x) ⊕ S 13 (x) ⊕ S 22 (x)
(2)
Σ1 (x) = S 6 (x) ⊕ S 11 (x) ⊕ S 25 (x)
σ0(x) = S 7 (x) ⊕ S 18 (x) ⊕ R 3 (x)
σ1 (x) = S 17 (x) ⊕ S 19 (x) ⊕ R 10 (x)

27 / 28
Fonctions de
hachage
SHA-256 (5/6)
Procédés de
signature Dans l’algorithme précédent, et le suivant, on emploie les
Collisions fonctions suivantes, lesquelles opérent sur des blocs de 32 bits,
Attaque des
anniversaires
et produisent des blocs de 32 bits également.
SHA-256

Ch(x, y , z) = (x ∧ y ) ⊕ (¬x ∧ ¬z)


Maj(x, y , z) = (x ∧ y ) ⊕ (x ∧ z) ⊕ (y ∧ z)
Σ0 (x) = S 2 (x) ⊕ S 13 (x) ⊕ S 22 (x)
(2)
Σ1 (x) = S 6 (x) ⊕ S 11 (x) ⊕ S 25 (x)
σ0(x) = S 7 (x) ⊕ S 18 (x) ⊕ R 3 (x)
σ1 (x) = S 17 (x) ⊕ S 19 (x) ⊕ R 10 (x)

Des constantes K0 , · · · , K63 sont également utilisés.

27 / 28
Fonctions de
hachage
SHA-256 (6/6)
Procédés de
signature

Collisions

Attaque des
anniversaires
Les blocs W0 , · · · , W63 sont calculés par l’algorithme de
SHA-256
dérivation suivant :
(i)
Wj := Mj pour j = 0, 1, · · · , 15;

Boucle de j = 16 à 63
Wj := σ1 (Wj−2 ) + Wj−7 + σ0 (Wj−15 ) + Wj−16 ;
Fin

28 / 28

Vous aimerez peut-être aussi