Aller au contenu

Utilisateur:Proz/brouillon

Une page de Wikipédia, l'encyclopédie libre.


Un récit courant Fowler 1999, p. 356.

1/2

[modifier | modifier le code]

Définition[modifier | modifier le code]

Cas booléen[modifier | modifier le code]

Un registre à décalage et rétroaction peut être réalisé électroniquement par un dispositif dérivé du registre à décalage de type SIPO, Serial In - Parallel Out, dans lequel le bit d'entrée est obtenu en fonction du contenu du registre. Quand la fonction en question dite fonction de rétroaction[1], est linéaire, c'est-à-dire que le bit d'entrée est obtenu par XOR (addition modulo 2), à partir de bits contenus dans le registre à certains emplacements donnés, il s'agit d'un registre à décalage et rétroaction linéaire ou LFSR[1].

Un LFSR de longueur (ou de taille) r utilise un registre de r éléments successifs appelés « étages » ou « cellules », que l'on peut numéroter de 0 à r -1. Chacun de ses éléments peut contenir un bit et possède une entrée et une sortie. Le contenu du registre est contrôlé par une horloge. À chaque top d'horloge

  • le contenu d'un étage i (0 ≤ i < r - 1) est transféré au suivant i+1,
  • le premier étage (numéroté 0) reçoit le bit de rétroaction obtenu par XOR à partir des bits contenus dans une sélection donnée des étages,
  • le bit du dernier étage (numéroté r - 1) est le bit de sortie, la suite engendrée par le LFSR est la suite des bits de sorties[2].

Un LFSR est donc décrit par sa longueur, par la sélection des étages qui seront utilisés pour calculer le bit de rétroaction. Par exemple sur le schéma donné ci-dessus, le LFSR possède 16 cellules et, en les numérotant de 0 à 15 de la gauche vers la droite, la sélection des étages utilisés pour la retroaction est [10,12,13,15].

La suite engendrée par un LFSR de longueur r, soit (st)t in ℕst est le bit de sortie au bout de t tops d'horloge, est alors entièrement déterminée par le contenu initial du registre, soit dans l'ordre de la numérotation, (sr-1, … , s0), appelé état initial du registre[3].

Plus généralement l'état du LFSR est le contenu des étages à un instant t (t top d'horloges), soit (st + r-1, … , st)[3].

Le calcul du bit de rétroaction peut également être décrit par une suite de coefficients (c1, … , cr) choisis dans {0,1} parfois appelés coefficients de rétroaction ((en)Feedback coefficients)[4], ci = 1 si le i-ème registre (numéroté i+1) est utilisé pour le calcul du bit de rétroaction, 0 sinon. Dans l'exemple ci-dessus, les coefficients de connexion sont

(c1, … , c16) = (0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1)

La suite engendrée par le LFSR est alors la suite définie par récurrence par la relation

soit pour l'exemple du schéma ci-dessus

sn+16 = sn + sn+2 + sn+3 + sn+5 (mod 2).


A remplacer[5].

Suite des états d'un LFSR de 4 cellules
t bit de rétroaction
st+4
État du LFSR
st+3 st+2 st+1 st
Sortie
st-1
0 1 1 0 0 0
1 0 1 1 0 0 0
2 1 0 1 1 0 0
3 0 1 0 1 1 0
4 0 0 1 0 1 1
5 0 0 0 1 0 1
6 1 0 0 0 1 0
7 1 1 0 0 0 1

Le LFSR considéré est de longueur 4. Il est défini par la relation de récurrence

st+4 = st+3 + st+1 + st

c'est-à-dire que les coefficients de connexion sont

(c1,c2,c3,c4) = (1,0,1,1)

et l'état initial du registre est (1,0,0,0).

Le calcul de la suite des états du registre du LFSR fait apparaître qu'au bout de 7 étapes l'état du registre égale l'état initial. La suite engendrée est donc périodique de période 7, cette période est (0,0,0,1,1,0,1).

Exemple[modifier | modifier le code]

Description mathématique[modifier | modifier le code]

Pour analyser mathématiquement le dispositif décrit à la section précédente, on s'intéresse à la suite de bits (an) engendrée, le bit si étant le contenu de la dernière cellule au i-ème top d'horloge.


Suite engendrée[modifier | modifier le code]

Les suites d'éléments de Fq pouvant être produites par un registre à décalage à rétroaction linéaire sont les suites récurrentes linéaires, si le registre est de longueur r la suite récurrente linéaire est d'ordre r.

Autrement dit on peut obtenir le terme d'indice t + r à partir des termes d'indice t,...,t+r-1 par une relation linéaire du type

où les ci appartiennent à Fq (ci = 0 ou ci = 1 dans le cas binaire F2).

Périodicité[modifier | modifier le code]

Il est facile de voir qu'une suite produite par un tel registre est nécessairement périodique : le nombre de possibilités combinatoires pour un -uplet est au plus de , donc n'est pas injective, soit . Mais, clairement on a , en prenant on a donc un multiple de la période de la suite.

La période maximale est car si le -uplet tout à zéro est atteint, la suite est nécessairement constante égal à zéro. On sait prévoir lorsque cette valeur atteinte, une condition nécessaire et suffisante étant que le polynôme de rétroaction soit primitif -- i.e. est irréductible et tel que, dans l'anneau des polynômes à coefficients binaires, le plus petit t tel que ce polynôme divise est (c'est le polynôme minimal d'un élément d'ordre multiplicatif maximal dans le corps à éléments).

Une suite de période maximale est appelée m-sequence dans la terminologie anglo-saxonne.

Représentation polynômiale[modifier | modifier le code]

Il est possible de décrire les LFSR en utilisant les séries formelles :

si à une suite on associe la série alors l'équation ci-dessus peut se mettre sous la forme suivante :

  • Le polynôme T(X) a pour degré au plus n -1 et dépend des conditions initiales (les ui de 0 à n - 1) et de P.

Le polynôme P, appelé polynôme de rétroaction, caractérise le registre.


Notion de complexité linéaire[modifier | modifier le code]

Tout -uplet de bits peut être généré par un LFSR. Plus précisément, il existe toujours un LFSR -- i.e. un polynôme de rétroaction ainsi qu'une initialisation -- tel que les premières sorties de ce LFSR correspondent au -uplet. Dans le pire des cas on prend un registre de longueur , le polynôme de rétroaction important peu dans ces conditions.

Ceci donne lieu à la définition de la complexité linéaire d'une suite (finie) comme la longueur minimale d'un LFSR généré cette suite. Comme le prouve la remarque ci-dessus cette complexité est bornée supérieurement par la longueur de la suite.

Cette notion intervient notamment en cryptographie à cause de l'existence de l'algorithme de Berlekamp-Massey.

Registre à décalage et cryptographie[modifier | modifier le code]

Génération de nombres pseudo-aléatoires[modifier | modifier le code]

Un problème fondamental en cryptologie est la production de suites de bits «aussi aléatoires que possible». Un exemple évident étant la génération des clefs de chiffrement (symétrique ou asymétrique).

Ce problème se décompose en fait en deux parties : d'une part la génération de bits par des procédés physiques, dans le cas d'un ordinateur des mesures liées à l'activité de la machine (températures interne, déplacement de la souris, etc.), et d'autre part l'expansion d'une courte suite aléatoire de bits en une suite éventuellement beaucoup plus grande. Dans ce dernier cas, on parle de suite pseudo-aléatoire.

Le chiffrement par masque jetable illustre bien les enjeux. Dans ce chiffrement, le texte chiffré est produit par addition bit à bit (modulo 2) de la clef de chiffrement. Le déchiffrement est également effectué par addition bit à bit de la clef. Le problème est qu'il est alors nécessaire de partager une donnée secrète, à savoir la clef, de la même taille que le message à échanger. C'est très souvent impraticable. Vient alors l'idée d'engendrer la clef à partir d'un procédé déterministe -- il faut pouvoir le faire au chiffrement et au déchiffrement -- utilisant une donnée secrète plus petite. C'est le fonctionnement du chiffrement par flot.

Une première possibilité consiste à choisir un LFSR et à utiliser la donnée secrète partagée comme initialisation du registre. Toutefois, l'algorithme de Berlekamp-Massey met vite fin à cette tentative : une connaissance même très partielle de la suite produite permet de retrouver toutes les informations voulues.

Dans la pratique, les LFSR ne sont donc pas utilisés de manière isolée, mais essentiellement sous la forme de registres combinés ou filtrés par des fonctions non linéaires ou mieux, par des procédés qui ne tiennent pas seulement compte des entrées mais aussi de l'état du dispositif (voir A5/1 ou E0).

Algorithme de Berlekamp-Massey[modifier | modifier le code]

Un LFSR de taille produisant des suites récurrentes linéaires d'ordre , la connaissance de termes consécutifs d'une suite et de l'équation linéaire -- ou bien de manière équivalente le polynôme de rétroaction -- détermine toute la suite.

Si maintenant on ne suppose plus connu le polynôme de rétroaction, que peut-on déduire de l'observation d'une partie de la sortie du LFSR, par exemple les termes  ? Si est supérieur où égal à deux fois la taille du plus petit LFSR générant la suite , alors on peut retrouver le polynôme de rétroaction et l'initialisation du registre, c'est-à-dire déterminer entièrement le LFSR (on voit ainsi apparaître la complexité linéaire comme le paramètre permettant d'estimer la quantité d'information nécessaire pour recréer une suite sous forme de LFSR). De plus il existe un algorithme efficace qui permet de retrouver efficacement ces paramètres, l'algorithme de Berlekamp-Massey, introduit en 1969 par James Massey (Massey, J. L. "Shift-Register Synthesis and BCH Decoding." IEEE Trans. Information Th. 15, 122-127, 1969.). C'est une adaptation d'un algorithme, dû à Elwyn Berlekamp, de décodage de codes correcteurs -- les codes de Bose-Chaudhuri-Hocquenghem.

Manuels et cours[modifier | modifier le code]

  1. a et b Klein 2013, p. 17.
  2. Menezes et van Oorschot 1996, p. 195-196
  3. a et b Menezes et van Oorschot 1996, p. 196
  4. Rueppel 1986, p. 199.
  5. Cagigal 1986, p. 191