Keccak : le nouveau standard pour les signatures digitales

Un nouveau standard international vient d’être attribué à l’algorithme Keccak. Il sera une brique de base pour les signatures digitales.

Partager sur:
Sauvegarder cet article
Aimer cet article 0
securite_informatique

La liberté d’expression n’est pas gratuite!

Mais déductible à 66% des impôts

N’oubliez pas de faire un don !

Faire un don

Keccak : le nouveau standard pour les signatures digitales

Publié le 29 octobre 2012
- A +

Un nouveau standard international vient d’être attribué à l’algorithme Keccak. Il sera une brique de base pour les signatures digitales.

Par Frédéric Prost.

Au début du mois d’octobre Keccak a été désigné vainqueur de la compétition ouverte en 2007 pour SHA-3 par le NIST. J’imagine que pour la plus grande partie des lecteurs la phrase précédente ne signifie pas grand chose. Le NIST est l’institut national des standard technologiques américains qui est de facto l’institut qui produit les standards mondiaux dans les domaines des TIC (Technologies de l’Information et des Communications). On lui doit par exemple l’algorithme de cryptage ‘standard’ recommandé pour l’administration américaine : AES. En l’occurrence SHA-3 est un nouveau standard qui porte également sur la sécurité informatique mais dont le but n’est pas de crypter des informations mais de fournir une brique de base pour authentifier l’information.

En effet rien ne ressemble plus à un fichier informatique qu’un autre fichier informatique comportant les mêmes informations : ce n’est pas une analyse de l’écriture qui pourra vous apporter une quelconque information. Un ‘0’ dans un fichier n’a pas d’identité, c’est une information pure. On ne peut pas ‘signer’ un fichier comme on le fait d’un contrat (ce qui est une modification physique du support de l’information que vous êtes réputez être seul à savoir faire). D’ailleurs, à l’inverse de ce qui se passe dans le monde matériel, il n’est pas non possible de savoir si quelqu’un a changé ce qui était un ‘1’ en ‘0’ que vous êtes en train de lire sur un fichier : là encore ce n’est pas comme ce qui se passe sur une feuille de papier où l’on peut toujours trouver des traces de gommage ou autres manipulations physiques ayant permis de modifier l’information. Les questions de l’intégrité (suis-je certain que l’information que je consulte n’a pas été modifiée ?) et de la signature (suis-je bien certain que l’information que je consulte a bien été produite par la personne qui est supposée l’avoir produite ?) ne sont pas évidentes et paraissent même impossibles à résoudre quand on y songe sérieusement.

Ces questions ont de multiple implications dans la vie de tous les jours. Sans que vous le sachiez, en permanence votre ordinateur quand il met à jour des programmes, par exemple, vérifie que ces derniers sont bien les bons (pour éviter qu’ils n’aient été modifiés par l’intégration de virus par exemple) : cela se fait au moyen d’un protocole de vérification de signature dont le constituant fondamental est une fonction mathématique ayant certaines spécificités et propriétés. SHA-3 est une de ces fonctions.

Intégrité et identité

Pour s’assurer qu’un document digital n’a pas été modifié il faut intégrer deux technologies : la cryptographie à clef publique et les fonctions de hachages. La cryptographie à clef publique permet à n’importe qui de crypter des informations de telle manière à ce que seuls ceux qui possèdent la clef privée (clef qu’il est quasi impossible à calculer en ne connaissant que la clef publique) sont en mesure de la décoder. Une description informelle mais plus détaillée peut se trouver dans cet article.

Pour utiliser un système à clef publique il faut commencer par produire une paire de clefs, d’une part la clef publique Kpub et la clef secrète qui lui correspond Kpriv. Nous noterons E(Kpub,m) l’encodage d’un message clair m, et E(Kpriv,mc) le décodage d’un message codé mc (les fonctions de codage et décodage sont les mêmes). Le système nous assure que décoder un message codé avec les bonnes clefs redonne bien le message original, et cela marche aussi dans l’autre sens. Mathématiquement cela correspond à l’équation suivante :

E(Kpriv,E(Kpub,m))=m=E(Kpub,E(Kpriv,m)).

On peut donc commencer par encrypter en utilisant la clef privée et ensuite ré-appliquer la fonction d’encryptage avec la clef publique, ce qui nous redonnera le message original.

Supposons qu’Alice désire envoyer un mail à Bob. Ce que Bob veut quand il va recevoir le mail c’est de s’assurer que personne ne l’a intercepté et modifié au passage. Pour cela Alice va agir de la façon suivante, si le message qu’elle veut transmettre est m elle va calculer h(m) où h est une fonction de hachage.

Une fonction de hachage calcule un « résumé ». En d’autres termes si vous imaginez que le message m est un grand chiffre de plusieurs milliers ou millions de bits. En effet chaque lettre d’un mail est codée comme une suite de 0 et 1 et n’est donc en fin de compte qu’un gros chiffre (même si le mail contient des pièces jointes elles seront elles aussi en dernier ressort codées comme un chiffre). L’image par la fonction de hachage du message, h(m), qu’on appelle l’empreinte ou le résumé de m, est un chiffre beaucoup plus petit, typiquement quelques centaine de bits au plus. L’idée d’une fonction de hachage est que si deux message sont différents alors leurs deux empreintes le seront également.

Ainsi Alice envoie le message suivant à Bob (nous notons m1;m2 la concaténation des messages m1 et m2) :

m;E(KprivA,h(m))

Donc en clair Alice calcule l’empreinte de son message et encrypte cette empreinte (avec sa clef privée qu’elle est supposée être la seule à la connaître) qu’elle envoie ainsi que son message à Bob. Quand Bob reçoit le mail d’Alice, grâce à la clef publique d’Alice il peut décrypter la deuxième partie du message. Il va trouver comme résultat un certain chiffre, disons r. Ensuite pour vérifier que le message n’a pas été modifié il va recalculer l’empreinte du message m. S’il se trouve que h(m) est égal à r alors le message n’a pas été modifié !

En effet supposons que Charlie intercepte le message d’Alice et le transforme, par exemple il écrit m2 à la place de m. Le message qu’il va transmettre à Bob sera:

m2;E(KprivA,h(m))

 Comme il ne connait pas la clef privée d’Alice, il ne peut pas calculer une fausse signature donc soit il écrit un chiffre au hasard (à ce moment-là Bob verra en essayant de décrypter cette partie du message que quelque chose ne va pas), soit il réutilise la signature d’Alice. Seulement quand Bob va calculer l’empreinte du message qu’il a reçu ce sera celle de m2 qu’il calculera et elle ne correspondra pas à l’empreinte de m du fait de la propriété des fonctions de hachage.

Les fonctions de hachage sécurisées

SHA-3 est une fonction de hachage dite sécurisée (d’où l’acronyme signifiant Secure Hash Algorithm). Pour qu’une fonction de hachage soit qualifiée comme telle il faut qu’elle présente certaines garanties supplémentaires. Il y a trois caractéristiques traditionnelles à prendre en compte. La première est le problème de préimage : il faut qu’il soit difficile, étant donnée un chiffre y, de trouver un message particulier m tel que h(m)=y. C’est à dire qu’étant donnée une empreinte, construire un message qui conduit à cette empreinte doit être compliqué. Le second problème à considérer est celui de la seconde préimage. Cette fois-ci on suppose donné un message m et la question est de trouver un autre message m2 différent de m mais qui ait la même empreinte, c’est-à-dire h(m)=h(m2). Enfin il faut que la fonction de hachage ne présente pas beaucoup de collisions. Comme l’empreinte est plus petite que les messages il est clair qu’il va exister plusieurs messages qui auront la même empreinte. Une fonction de hachage est résistante vis-à-vis des collisions s’il est très difficile de trouver deux mots m1 et m2 ayant la même empreinte.

Le concours du NIST consistait à trouver une fonction de hachage qui ait de bonnes propriétés vis-à-vis des trois points évoqués ci-dessus. C’est donc une équipe de STMicroelectronics (une firme franco-italienne, une fois n’est pas coutume nous pouvons nous laisser aller à un peu de chauvinisme) qui remporte la compétition en utilisant une architecture différente des précédents standard qui devrait rendre inopérantes certaines attaques.

Retour de flame

Tous ces problèmes pourraient sembler bien loin de la vie de monsieur et madame tout le monde. Pourtant il y a peu un super-virus a été découvert : Flame. Ce super malware n’est pas le produit d’un adolescent en mal de sensations fortes qui piraterait en fin de journée pour pimenter un peu sa vie. En effet, au cœur de ce malware se trouve une attaque par collision de MD-5 qui permet de fabriquer de fausses signatures : en fait le malware arrive à se faire passer comme une mise à jour Windows authentique en utilisant cette faille. Pour monter une attaque de ce type, il faut la participation d’une équipe de scientifiques d’un niveau mondial (ce n’est pas en bidouillant tout seul sur son ordinateur qu’on peut y arriver à l’instar de l’image d’Épinal qu’on se fait souvent du « hacker » dans les médias traditionnels). D’ailleurs il se trouve que Flame est le « moteur » du vers Stuxnet : un programme qui a infecté les ordinateurs des usines de retraitement nucléaire iraniennes. Le résultat fut notamment (en dehors des résultats d’espionnage inconnus à ce jour) le sabotage de dizaines de centrifugeuses qui, comme par hasard, s’autodétruisaient toutes seules… Ce fait divers montre comment de plus en plus des questions mathématiques fondamentales trouvent aujourd’hui leur chemin jusqu’au cœur de nos sociétés digitales.

Voir les commentaires (2)

Laisser un commentaire

Créer un compte Tous les commentaires (2)
  • Petite précision : NIST ne produit pas les algorithmes mais ils émettent des specs auxquelles répondent des développeurs, c’est ainsi que le système de cryptographie ayant remporté le ‘concours’ AES a été développé par deux chercheurs belges, Joan Daemen et Vincent Rijmen

    • Oui la phrase n’était pas très clair mais j’entendais par là qu’on lui devait le standard et non l’algorithme en lui même. Personnellement je préfère utiliser Twofish quand j’ai besoin d’encrypter quelque chose.

  • Les commentaires sont fermés.

La liberté d’expression n’est pas gratuite!

Mais déductible à 66% des impôts

N’oubliez pas de faire un don !

Faire un don

Par Frédéric Prost.

La toute récente cyber attaque du ransomware wanacry a atteint un niveau sans précédent : alors qu'elle n'est pas finie (on peut craindre que diverses mutations de ce virus causent de nouveaux dégâts dans un futur proche) elle illustre parfaitement plusieurs problématiques autour de la cyber-sécurité et montre combien ces dernières sont à la fois cruciales et extrêmement complexes à gérer.

Une attaque dévastatrice

L'attaque "WannaCry" dont les effets se sont répandus le 12 mai est à ce jour inédite. Des servi... Poursuivre la lecture

Par Thierry Berthier.

[caption id="attachment_179501" align="alignleft" width="235"] Besoin d'une cyber armure ? (Crédits : Sharon Drummond, licence CC-BY-NC-SA 2.0), via Flickr.[/caption]

En matière de sécurité numérique, le facteur humain constitue souvent le maillon faible de l'infrastructure de défense. Cette fragilité humaine face aux systèmes est apparue à la naissance du premier virus informatique au début des années 80. Le concept de virus a été utilisé la première fois en 1981 par Leonard Adleman dans ses échanges avec ... Poursuivre la lecture

Par Thierry Berthier

[caption id="attachment_205160" align="aligncenter" width="640"] Anonymous Hacker - Credits : Brian Klug via Flickr (CC BY-NC 2.0)[/caption]

 

On entend souvent dire que la sécurité absolue en matière d'informatique n'existe pas. Ceux qui prononcent cette phrase ne savent pas forcément justifier cette vérité qui s'appuie avant tout sur un résultat purement mathématique. Il peut être utile et agréable (car le côté esthétique de la preuve est bien présent) de reproduire sa démonstration mathématiqu... Poursuivre la lecture

Voir plus d'articles