Fortuna (cryptologie)

Fortuna (cryptologie)

Fortuna (cryptographie)

Page d'aide sur l'homonymie Pour les articles homonymes, voir Fortuna.

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 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'accumulateur d'entropie qui récupère des données 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 a démarré

Le générateur est basé sur un algorithme de chiffrement 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 successivement les valeurs d'un compteur qui s'incrémente. Cette procédure n'est toutefois pas suffisante car le compteur a un nombre d'états fini et donc la séquence générée est également finie. C'est pourquoi la clé de chiffrement 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 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 divise n. Autrement dit, le groupe k n'est utilisé que sur une durée de 1/2k par rapport au temps total. 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 de vue statistique, 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 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. À 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

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.


Crypto key.png Générateurs de nombres pseudo-aléatoires
Modifier
Rapides : Générateur congruentiel linéaire, Mersenne Twister, RANDU
Cryptographiques : Blum Blum Shub, Fortuna, ISAAC, Yarrow
Briques : Congruence sur les entiers, Fonction de hachage, Registre à décalage
Voir aussi le portail de la cryptologie
  • Portail de la cryptologie Portail de la cryptologie
Ce document provient de « Fortuna (cryptographie) ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Fortuna (cryptologie) de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • Fortuna (Cryptographie) — Pour les articles homonymes, voir Fortuna. 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… …   Wikipédia en Français

  • Fortuna Muliebris — Fortuna Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sommaire 1  Brésil 2  Costa Rica 3 …   Wikipédia en Français

  • Fortuna (cryptographie) — Pour les articles homonymes, voir Fortuna. 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… …   Wikipédia en Français

  • Fortuna — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sommaire 1 Patronyme 2 Toponymes 2.1 Br …   Wikipédia en Français

  • Code pseudo-aléatoire — Générateur de nombres pseudo aléatoires Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les… …   Wikipédia en Français

  • Fonction pseudo-aléatoire — Générateur de nombres pseudo aléatoires Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les… …   Wikipédia en Français

  • Generateur de nombres pseudo-aleatoires — Générateur de nombres pseudo aléatoires Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les… …   Wikipédia en Français

  • Générateur De Nombres Pseudo-Aléatoires — Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les nombres sont supposés être… …   Wikipédia en Français

  • Générateur de nombre pseudo-aléatoire — Générateur de nombres pseudo aléatoires Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les… …   Wikipédia en Français

  • PRNG — Générateur de nombres pseudo aléatoires Un générateur de nombres pseudo aléatoires, pseudorandom number generator (PRNG) en anglais, est un algorithme qui génère une séquence de nombres présentant certaines propriétés du hasard. Par exemple, les… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”