{"partition": "head_middle", "source_domain": "www.contrepoints.org", "digest": "sha1:KUVYJW7EPBHFP6UJFZAFWVXTUF4CXHBT", "path": "/lustre/fsn1/projects/rech/qgz/uzq54wg/processed_redpajama/base_processing/output/fr/2014-15/000_00049.parquet"}
Keccak : le nouveau standard pour les signatures digitales
Publié Par Frédéric Prost, le 29 octobre 2012 dans Internet, Sciences et technologies
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.
Frédéric Prost
Frédéric Prost est Maître de Conférences en informatique à l'université Joseph Fourier (Grenoble I). Il travaille sur la théorie des langages de programmations, la confidentialité et l'intelligence artificielle.
Attentat de Boston : terrorisme et déni de service
Dites-moi où vous allez et je vous dirai qui vous êtes
Le miroir aux alouettes du droit à l'oubli
Sécurité : l'illusion technologique
Militarisation d'internet : premiers mouvements
Stratégie de cybersécurité européenne : qu'en penser ?
La confidentialité compromise : une caractéristique saillante du web 3.0
Internet : la deuxième chute du Jardin d'Éden
par Frédéric Prost
Confidentialité à l'ère d'internet : la sphère privée devient de plus en plus difficile à protéger, comme le démontrent de récentes études scientifiques.
Comment choisir un bon mot de passe ?
De récentes études montrent que monsieur et madame tout le monde ne savent pas choisir des mots de passe de qualité. Mais qu'est-ce qu'un bon mot de passe ?
Conserver son anonymat sur Internet : routage et oignons Le 08-10-12
Conserver son anonymat sur Internet, pour surfer ou envoyer des emails, devient de plus en plus important pour chacun. Mais comment cela marche-t-il pratiquement?
Piratage du fichier STIC : l'alarmante efficacité des attaques par ingénierie sociale
Les attaques informatiques par ingénierie sociale, une des plus grandes menaces pour la sécurité informatique, comme vient le rappeler opportunément le piratage du fichier STIC.
L'enfer de la gestion des mots de passe en entreprise
par Alexis Vintray
Selon une étude sur les mots de passe en entreprise, permettre aux utilisateurs de les réinitialiser représenterait un gros gain de temps.
MLenoir le 30 octobre 2012 à 19 h 25 min	Répondre	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
Frédéric Prost Auteur de l’articlele 30 octobre 2012 à 21 h 28 min	Répondre	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.