Un registre à décalage à rétroaction linéaire, ou LFSR (sigle de l'anglais linear feedback shift register), est un dispositif électronique ou logiciel qui produit une suite de bits qui peut être vue comme une suite récurrente linéaire sur le corps fini F2 à 2 éléments (0 et 1). La notion a été généralisée à n'importe quel corps fini.
Réalisé électroniquement, dans le cas particulier d'une suite de 0 et de 1, c'est un registre à décalage avec rétroaction linéaire, ce qui signifie que le bit entrant est le résultat d'un OU exclusif (ou XOR) entre plusieurs bits du registre, cette opération étant également l'addition sur le corps fini F2. Ces dispositifs sont simples, peu coûteux et efficaces.
La suite récurrente produite par un LFSR est nécessairement périodique à partir d'un certain rang. Les LFSR sont utilisés en cryptographie pour engendrer des suites de nombres pseudo-aléatoires. La fonction de rétroaction est alors choisie de façon à obtenir une période la plus grande possible.
L’étendue des applications est très large : chiffrement des communications, contrôle d'erreurs sur la transmission de données, auto-test des composants électroniques…


Un LFSR est un dispositif dérivé du registre à décalage de type SIPO, Serial In - Parallel Out, dans lequel un ou plusieurs « étages » du registre subissent une transformation pour être réinjectés en entrée de celui-ci.
Il est dit de longueur « » lorsqu'il est composé de éléments appelés « étages » ou « cellules », le contenu de l'ensemble de ces éléments à un moment « » est l'état du LFSR à ce moment. À chaque top d'horloge le contenu d'un étage est transféré au suivant et le premier est rempli par le résultat d'une fonction linéaire qui prend en compte l'état d'un ou de plusieurs étages.
| Horloge | État du LFSR | Sortie |
|---|---|---|
| 0 | 0 1 1 0 | |
| 1 | 1 0 1 1 | 0
|
| 2 | 0 1 0 1 | 1
|
| 3 | 0 0 1 0 | 1
|
| 4 | 0 0 0 1 | 0
|
| 5 | 1 0 0 0 | 1
|
| 6 | 1 1 0 0 | 0
|
| 7 | 0 1 1 0 | 0
|
Exemple des états successifs d'un LFSR à 4 bits avec une connexion des premier, second et quatrième étages au niveau de la fonction de retour :
0 1 1 0 ;1 , l'état du LFSR est 1 0 1 1 et le bit de sortie vaut 0 ;0 , l'état du LFSR est 0 1 0 1 et le bit de sortie vaut 1 ;0 , l'état du LFSR est 0 0 1 0 et le bit de sortie vaut 1 ;0 , l'état du LFSR est 0 0 0 1 et le bit de sortie vaut 0 ;1 , l'état du LFSR est 1 0 0 0 et le bit de sortie vaut 1 ;1 , l'état du LFSR est 1 1 0 0 et le bit de sortie vaut 0 ;0 , l'état du LFSR est 0 1 1 0 et le bit de sortie vaut 0.Au septième top d'horloge l'état du registre est identique à son état initial. On dit que le LFSR est de période 7.

Un LFSR est défini comme suit sur un corps fini où est premier et :
Un LFSR peut être défini comme un triplet , où Fq est le corps fini à q éléments, r est le nombre de cellules du LFSR, les coefficients c1, …, cr sont des éléments de Fq.
, pour
ou de façon équivalente
.
Puisque la prochaine valeur d'entrée d'un LFSR dépend uniquement des valeurs de certains étages de celui-ci et que l'état « tout à zéro » ne génère jamais de changement sa séquence est de période maximale sur où est la taille du registre,.
Une séquence d'un LFSR sur avec une période où est la taille du registre est appelé une « m-sequence »,.
Exemple : Un LFSR aura une période maximale de .
Introduit en 1969 par James Massey l'algorithme de Berlekamp-Massey (en) permet d'obtenir le plus petit LFSR possible pour une séquence de sortie choisie. Il suffit de capter bits consécutifs d'une m-séquence de période pour pouvoir reconstruire la séquence entièrement.
Description de l'algorithme :
En entrée : les éléments d'une séquence récurrente de manière linéaire définie sur avec donnés par la liste . Le polynôme minimal est de degré limite .
En sortie : le polynôme caractéristique minimal de la séquence.
Début
Fin
La représentation employée jusqu'ici pour représenter la connexion entre les différents étages du registre décrit le mode dit de « Fibonacci ». Une autre représentation est possible, utilise le mode dit de « Galois ».

Un registre en mode Fibonacci applique strictement la définition d'un LFSR : les contenus des différents étages sont ajoutés ou non les uns aux autres, le résultat de cette addition est ensuite placé dans l'étage d'entrée du registre et tous les étages subissent un décalage vers la sortie.

Dans le mode dit de Galois le contenu de l'étage de sortie est ajouté ou non au contenu des étages du registre puis tous les étages subissent un décalage vers la sortie et le contenu de l'étage sortant est réinjecté dans l'étage d'entrée.
Au niveau matériel les LFSR sont souvent mis en œuvre en utilisant ce mode car celui-ci est plus rapide et présente moins de latence que le mode Fibonacci puisque les étages sont mis à jour simultanément,.
Les LFSR existent sous deux formes : matérielle et logicielle, mais c'est surtout la première configuration qui est utilisée car elle est simple à mettre en œuvre (matériel peu onéreux associé à un algorithme de traitement simple).
L'usage de cette technologie peut se retrouver dans les domaines suivants :
Il y a eu beaucoup de publications à propos de la génération des nombres pseudo-aléatoires par les registres à décalage et à part quelques études sur les registres à rétroaction non linéaires (en), la majorité des auteurs utilisent la rétroaction linéaire.
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 :

Les générateurs pseudo-aléatoires à base de LFSR sont utilisés dans les chiffrements de flux que l'on retrouve sous le terme anglais cipher stream, ils constituent avec les chiffrements par bloc les 2 grandes catégories modernes du chiffrement symétrique de la cryptographie.
Les LFSR sont les composants de base de nombreux générateurs chiffrants.
Les raisons pour lesquelles les LFSR sont utilisés dans un grand nombre de générateurs de flux sont les suivantes :
Cependant, l'utilisation des LFSR dans leur configurations initiales est devenue très vite vulnérable aux attaques mathématiques (démontré par l'algorithme de Berlekamp-Massey).
Un système informatique pour ne pas être vulnérable doit être sécurisé contre les attaques connues et référencées, c'est pourquoi un LFSR ne doit jamais être utilisé par lui-même comme un générateur de flux de clés.
Néanmoins, les LFSR restent encore utilisés en raison de leurs coûts de mise en œuvre très bas.
Trois méthodes peuvent être employées pour contourner l'effet des propriétés de linéarité des LFSR :
Les propriétés attendues d'un générateur de flux de chiffrement sont :
Exemples d'algorithmes cryptographiques utilisant les LFSR :

La stéganographie est la technique qui permet de cacher de l'information, le plus souvent un texte dans des images, une des méthodes est de remplacer le bit de poids faible de chaque pixel formant l'image par un autre bit d'information.
Les séquences pseudo-aléatoires à base de LFSR sont une des méthodes de chiffrement de l'information.
Embarqués dans des circuits logiques programmables tels que les FPGA, ils répondent à un besoin croissant de cacher l'information.
| Application | Type | taille LFSR |
|---|---|---|
| CRC | CRC-12 | 12 |
| CRC-16 | 16 | |
| Réseau ATM | CRC-32 | 32 |
Ce mécanisme que l'on appelle contrôle de redondance cyclique et que l'on retrouve sous le nom de CRC est un dispositif de contrôle d'erreur lors des transmissions de données brutes dans le domaine du réseau, le stockage numérique ou encore dans la compression de donnée.
Les composants hardware LFSR sont un des moyens faciles et bon marché pour générer des suites pseudo-aléatoires utilisées par ces procédés.
Le test des circuits électroniques a été longtemps problématique car les solutions existantes donnant des temps de réponses corrects étaient souvent très onéreuses. Le coût n'est pas le seul problème, il faut aussi que le dispositif puisse répondre à 2 problématiques :
La technologie BIST est une méthode de test des composants électroniques qui s'appuie sur plusieurs mécanismes :
Les tests aléatoires sur une partie du composant suppose de pouvoir agir sur un échantillonnage des données du composant.
C'est l’étude du traitement du signal numérisé tel que le filtrage ou la compression, elle est assurée par un processeur de signal numérique que l'on retrouve indiqué dans ce domaine par DSP. Ces opérations seraient difficilement réalisables directement sur les données binaires en mémoire sans algorithme de compression/décompression.
Les LFSR sont fréquemment utilisés pour cette tache car ils sont efficaces dans le traitement de grande quantité de données binaires et ils ont un faible cout d’implémentation dans leurs formes matériels.
Les compteurs binaires sont des composants qui sont utilisés couramment dans des équipements nécessitant un comptage, comme les montres digitales ou les chronomètres.
Un LFSR est un type spécial de compteur qui génère une séquence pseudo-aléatoire, il peut être utilisé en remplacement des compteurs binaires traditionnels.
Exemples d'utilisation:
Utilisation du XNOR
| Avantages | Inconvénients |
|---|---|
Nécessite peu de logique pour être mis en place ;
|
|
L'industrie du jeu vidéo a utilisé le LFSR au travers d'un composant qui est le SN76489 (en), on a pu ainsi sonoriser certaines consoles de jeux vidéo grâce à ce circuit électronique.
: document utilisé comme source pour la rédaction de cet article.