Fortuna (cryptographie)
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Fortuna est un générateur de nombres pseudo-aléatoires inventé par Bruce Schneier et Niels Ferguson et destiné à une utilisation cryptographique. Il a été nommé d'après Fortuna, la déesse romaine du hasard.

Plus précisément, Fortuna est une famille de générateurs cryptographiques de nombres pseudo-aléatoires. Sa conception est assez flexible quant à l'implémentation (Le mot implantation peut avoir plusieurs significations :) qui en est faite. Le générateur est divisé en plusieurs parties :

  • le générateur lui-même qui une fois qu'il a reçu une graine produira une suite infinie
  • l'accumulteur d'entropie (En thermodynamique, l'entropie est une fonction d'état introduite au milieu du XIXe siècle par Rudolf Clausius dans le cadre du second principe, d'après les travaux de Carnot[1]. Clausius a montré que le rapport Q/T (où Q est la...) qui récupère des données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement,...) aléatoires à partir de diverses sources, il envoie une nouvelle graine au générateur lorsque l'entropie est suffisante
  • le fichier des graines qui stocke suffisamment d'informations pour pouvoir commencer une génération de nombres dès que l'ordinateur (Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un ensemble de circuits électroniques permettant de manipuler des données sous...) a démarré

Le générateur est basé sur un algorithme de chiffrement (En cryptographie, le chiffrement (parfois appelé à tort cryptage) est le procédé grâce auquel on peut rendre la compréhension d'un document...) par bloc. Dans Cryptographique pratique, Schneier suggère d'utiliser AES, Serpent ou Twofish. L'idée est d'employer l'algorithme de chiffrement en mode compteur, c’est-à-dire qu'il chiffre (Un chiffre est un symbole utilisé pour représenter les nombres.) successivement les valeurs d'un compteur qui s'incrémente. Cette procédure n'est toutefois pas suffisante car le compteur a un nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) d'états fini et donc la séquence générée est également finie. C'est pourquoi la clé de chiffrement (Une clé est un paramètre utilisé en entrée d'une opération cryptographique (chiffrement, déchiffrement, scellement, signature numérique, vérification de signature).) est périodiquement modifiée. Si plus de 1 mégaoctet de données est généré, alors la clé est automatiquement changée. La clé est également modifiée après chaque requête (Le mot requête, synonyme de demande, est employé dans les domaines suivants :) principale.

L'accumulateur d'entropie est conçu pour être résistant à une attaque par injection de données, sans toutefois utiliser des estimateurs d'entropie trop complexes et donc peu sûrs. On considère plusieurs groupes d'entropie, chaque source d'entropie va répartir ses informations dans les différents groupes de manière uniforme. L'idée principale derrière ce système est de produire une nouvelle graine en changeant à chaque fois de groupe. Plus formellement, lors de la n-ième création de la graine, le groupe k est utilisé seulement si 2k divises n. Autrement dit, le groupe k n'est utilisé que sur une durée de 1/2k par rapport au temps (Le temps est un concept développé par l'être humain pour appréhender le changement dans le monde.) total ( Total est la qualité de ce qui est complet, sans exception. D'un point de vue comptable, un total est le résultat d'une addition, c'est-à-dire une somme. Exemple : "Le total des...). En augmentant k, les nouvelles graines sont envoyées moins fréquemment mais par contre, on accumulera plus d'entropie.

La génération de la graine se fait via deux hachages des groupes avec SHA-256, cette valeur est ensuite utilisée comme clé pour l'algorithme de chiffrement.

Résistance

Le système est totalement vulnérable si l'attaquant peut contrôler toutes les sources d'entropie qui arrivent dans le système. Dans ce cas, il devient totalement déterministe et aucun algorithme ne peut résister à cette hypothèse. Si l'attaquant s'empare de quelques sources d'entropie, il y aura certains groupes dans l'accumulateur d'entropie qui pourront continuer à en collecter. Dès qu'ils seront prêts du point (Graphie) de vue (La vue est le sens qui permet d'observer et d'analyser l'environnement par la réception et l'interprétation des rayonnements lumineux.) statistique (Une statistique est, au premier abord, un nombre calculé à propos d'un échantillon. D'une façon générale, c'est le résultat de l'application d'une méthode...), une nouvelle graine sera produite. C'est pourquoi le système est résistant à une injection de données mais mettra un certain temps à s'en remettre, tout (Le tout compris comme ensemble de ce qui existe est souvent interprété comme le monde ou l'univers.) dépend de la taille des données frauduleuses envoyées et du nombre de sources compromises ainsi que le nombre de groupes.

Fortuna utilise 32 groupes et de ce fait, cette restriction empêche une génération d'une graine plus de 10 fois par seconde ( Seconde est le féminin de l'adjectif second, qui vient immédiatement après le premier ou qui s'ajoute à quelque chose de nature identique. La seconde est une unité de mesure du temps. La seconde d'arc est une mesure d'angle plan. La...). À ce rythme, il faudrait 13 ans pour ne plus disposer de suffisamment de groupes. Cette durée semble suffisante pour Schneier et Ferguson. Pour les implémentations qui nécessiteraient de très grand taux de générations, on peut toujours augmenter le nombre de groupes.

Différence entre Fortuna et Yarrow (Yarrow est un générateur cryptographique de nombres pseudo-aléatoires inventé par Bruce Schneier, John Kelsey et Niels Ferguson.)

Fortuna est une version améliorée de Yarrow, un autre générateur conçu par Schneier, Kelsey et Ferguson. La principale différence concerne l'accumulateur d'entropie. Yarrow nécessitait un mécanisme supplémentaire pour déterminer l'entropie qu'il recevait et n'utilisait que deux groupes. De plus, la fonction de hachage utilisée était une itération de SHA-1 (Yarrow-160) au lieu de deux itérations de SHA-256.

Page générée en 0.103 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique