Contacts

Un registre de décalage avec un retour linéaire C. Base théorique du travail. Quelles sont les séquences générées par des registres de décalage

La séquence des registres de cisaillement est utilisée à la fois dans des cryptographies et dans la théorie du codage. Leur théorie a parfaitement élaboré, la diffusion des chiffres en streaming sur la base des registres de cisaillement était un cheval de travail dans la cryptographie militaire avant que l'électronique n'apparaisse.

Un registre à décalage de rétroaction (ci-après dénommé RSHSOS) comprend deux parties: le registre de décalage et les fonctions de rétroaction. Le registre de changement de vitesse est une séquence de bits. Le nombre de bits est déterminé longueur du shiftSi la longueur est n bits, le registre est appelé registre à quart de n-bits. Chaque fois que vous devez supprimer le bit, tous les bits du registre de décalage à droite à 1 position. Le nouveau bit extrême gauche est la fonction de tous les autres bits du registre. À la sortie du registre de cisaillement, il en résulte un, généralement la signification plus jeune, le bit. Une période de registre de quart de travail Il s'appelle la longueur de la séquence résultante avant le début de la répétition.

Figure 1. Registre de décalage de retour

Les registres de décalage ont très vite trouvé l'utilisation de chiffres en continu, car ils sont facilement implémentés à l'aide d'équipements numériques. En 1965, Ernst Selmer (Ernst Selmer), la cryptographie principale du gouvernement norvégien, a développé la théorie de la séquence des registres de cisaillement. Solomon Golomb (Solomon Golomb), NSA Mathematics, a écrit un livre qui expose certains de ses résultats et les résultats de la Selmer. La vue la plus simple du registre du décalage de commentaires est un registre de décalage de commentaires linéaire (registre de décalage de commentaires linéaire, puis LFSR ou RGSSLOS). La rétroaction de ces registres est simplement XOR (ajout de deux modulo) de certains des bits du registre, la liste de ces bits est appelée séquence de robinet. Parfois, un tel registre s'appelle la configuration FIBBonaci. En raison de la simplicité de la séquence de retour d'information, une théorie mathématique assez développée peut être utilisée pour l'analyse de RSSLOS. Après avoir analysé les séquences de sortie reçues, vous pouvez vous assurer que ces séquences sont assez aléatoires. RSSKSLOS est utilisé plus souvent que d'autres registres de cisaillement de la cryptographie.


Figure 2. RSSKSLOS FIBBONACHES

Dans le cas général, N-Bit Rgsslos peut être dans l'un des états internes N \u003d 2 N -1. Cela signifie que théoriquement, un tel registre peut générer une séquence pseudo-aléatoire avec une période T \u003d 2 N -1 bits. (Le nombre d'états internes et de la période sont N \u003d T Max \u003d 2 N -1, car le remplissage du RSSHSLOS zéro entraînera le registre de décalage produira une séquence infinie de zéros, qui est absolument inutile). Seules certaines séquences rejetées des RSSLOS seront cycliques à travers tous les états internes de 2 N -1, ces RSSSLOS sont Rsskslos avec une période maximale. Le résultat résultant est appelé Séquence M.

Exemple . La figure ci-dessous montre un RGSSLOS 4 bits avec un robinet des premier et quatrième bits. S'il est initialisé par la valeur 1111, alors avant la répétition, le registre prendra les états internes suivants:

Tract de changement de vitesse (état interne)

Statut du registre

Bit de sortie

Sens initial

15 (retour à un état initial)

16 (États répétés)

La séquence de sortie sera une chaîne de bits significatifs plus jeunes: 1 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 avec une période T \u003d 15, le nombre total d'états internes possibles (sauf zéro), n \u003d 2 4 -1 \u003d 16-1 \u003d 15 \u003d t max, par conséquent, la séquence de sortie est la séquence M.

Pour qu'un RSSKSLOS spécifique ait une période maximale, un polynôme, formé à partir de la séquence de robinet et de la constante 1, doit être primitif par module 2. Le polynôme est représenté comme la quantité de degrés, par exemple, un polynôme de degré N semble comme ça:

uNE. n. x n + a n-1 x N-1 + ... + a 1 x 1 + a 0 x 0 \u003d un n. x n + a n-1 x N-1 + ... + a 1 x + A. 0 où un. jE. \u003d (0.1) pour i \u003d 1 ... n, et x i - indique la décharge.

Le degré de polynôme est la longueur du registre de changement de vitesse. Le degré polynomial primitif N est un polynôme irréductible qui est un séparateur X 2N? 1 +1, mais n'est pas un diviseur X D +1 pour tous D, qui sont des diviseurs 2 N -1. La théorie mathématique correspondante peut être trouvée dans.

En général, il n'y a pas de moyen simple de générer des polynômes primitifs d'un degré donné par module 2. Le moyen le plus simple de choisir un polynôme de manière aléatoire et de vérifier si elle est primitive. Ce n'est pas facile et quelque chose comme vérifier s'il s'agit d'un nombre simple choisi au hasard - mais de nombreux packages de programmes mathématiques sont capables de résoudre une telle tâche.

Certains, mais bien sûr, pas tous, les polynômes de divers degrés, la primitif modulo 2, sont donnés plus tard. Par exemple, écrire

(32, 7, 5, 3, 2, 1, 0) signifie que le polynôme suivant est primitif pour le module 2: x 32 + x 7 + x 5 + x 3 + x 2 + x + 1.

Cela peut être facilement résumé pour les RSSSLOS avec la période maximale. Le premier numéro est la longueur des RSSSLOS. Le dernier numéro est toujours égal à 0, et il peut être omis. Tous les numéros, à l'exception de 0, définissent la séquence de suppression comptant du bord gauche du registre de décalage. C'est-à-dire que les membres du polynôme avec un degré moindre correspondent aux positions plus proches du bord droit du registre.

Exemple continu, l'enregistrement (32, 7, 5, 3, 2, 1, 0) signifie que le nouveau bit d'un registre de décalage 32 bits a un nouveau bit est généré à l'aide de Xor trente seconde, septième, cinquième, troisième, troisième, seconde et Premiers bits. Les Rshslos résultants auront une longueur maximale, passant cycliquement à la répétition après 2 32 -1 valeurs.


Figure 4. RgsSlos 32 bits avec une longueur maximale

Considérez le code du programme RSSLOS, dans lequel la séquence du robinet est caractérisée par un polynôme (32, 7, 5, 3, 2, 1, 0). Dans la langue c ressemble comme suit:

statique non signé long shiftregister \u003d 1;

/ * Tout sauf 0. * /

Shiftregister \u003d ((((shiftregister \u003e\u003e 31)

^ (Shiftregister \u003e\u003e 6)

^ (Shiftregister \u003e\u003e 4)

^ (Shiftregister \u003e\u003e 2)

^ (Shiftregister \u003e\u003e 1)

^ Shiftregister))

| (Shiftregister \u003e\u003e 1);

retour shiftregister & 0x00000001;)

Si le registre de décalage est plus long qu'un mot informatique, le code est compliqué, mais pas beaucoup. L'annexe B fournit une table de polynômes primitifs dans le module 2, l'utilisera à l'avenir pour identifier certaines propriétés de ces polynômes, ainsi que dans la mise en oeuvre du logiciel pour définir la séquence du robinet.

Il convient de noter que tous les éléments de table sont un nombre impair de coefficients. Une telle longue table est donnée pour plus de travaux avec le RSSSLO, car les RSSllos sont souvent utilisés pour la cryptographie avec des chiffres en streaming et des générateurs de nombres pseudo-aléatoires. Dans notre cas, vous pouvez utiliser des polynômes avec un degré de plus de sept plus de sept.

Si p (x) est primitif, puis primitif et x n p (1 / x), chaque élément de la table définit réellement deux polynômes primitifs. Par exemple, si (A, B, 0) est primitif, puis primitif et (A, A-B, 0). Si la primitive (A, B, C, D, 0) est primitive et (A, A-D, A-C, A-B, 0). Mathématiquement:

s'il est primitif x a + x b +1, puis primitif et x a + x a-b +1,

s'il est primitif X A + X B + X C + X D +1, puis Primitive et X A + X A-D + X A-C + X A-B +1. Plus rapide Il est mis en œuvre par programme par primitif de trois mètres, car pour générer un nouveau bit, il est nécessaire d'exécuter Xor seulement deux bits du registre de décalage (point zéro n'est pas pris en compte, c'est-à-dire x 0 \u003d 1, voir exemple ci-dessus) . En effet, tous les polynômes de retour indiqués dans la table sont raréfiés, c'est-à-dire qu'ils ont des coefficients. Les récompenses représentent toujours une source de faiblesse, ce qui est parfois suffisant pour ouvrir l'algorithme. Pour les algorithmes cryptographiques, il est beaucoup préférable d'utiliser des polynômes primitifs denses, ceux dont de nombreux coefficients. Application des polynômes denses, en particulier dans le cadre de la clé, vous pouvez utiliser des rshslos significativement plus courts.

Générez des polynômes primitifs denses dans le module 2 n'est pas facile. En général, pour générer des polynômes primitifs de degré K, il est nécessaire de connaître la décomposition sur les multiplicateurs du nombre 2 K -1.

En soi, les RSSllos sont de bonnes séquences pseudo-aléatoires, mais elles ont des propriétés non désirées non aléatoires (déterministes). Les bits série sont linéaires, ce qui les rend inutiles à cryptage. Pour RSSLOS Lone N State interne est le précédent n des bits de sortie du générateur. Même si le schéma de rétroaction est stocké secrètement, il peut être déterminé par des bits de sortie 2n du générateur à l'aide d'un algorithme de Berlekamp-Massey hautement efficace.

De plus, de grands nombres aléatoires générés à l'aide des bits de cette séquence exécutée dans une rangée sont fortement corrélés et que certains types d'applications ne sont pas du tout aléatoires. Malgré cela, les RSSllos sont souvent utilisés pour créer des algorithmes de cryptage en tant que composants des systèmes et des algorithmes de cryptage.

La vue la plus simple de la fonction de rétroaction est une fonction linéaire, par exemple la somme du module 2 du contenu de certaines décharges. Un tel registre s'appelle un registre à décalage de commentaires linéaire (registre de décalage de retour linéaire, abrégé LFSR). Dans le cas général, la fonction de rétroaction linéaire est définie par la formule. Ici c.\u003d 1, si k.Le son est utilisé dans la fonction de retour d'information, et c.\u003d 0 sinon. Le symbole Å dénote l'ajout de module 2 (à l'exclusion ou).

Par exemple, considérez la LFSR avec une fonction de rétroaction (voir la figure).

Si l'état initial du registre est 1111, alors dans les horloges ultérieures, il prendra les états suivants de l'état: 1111, 0111, 1011, 0101, 1010, 1101, 0110, 0011, 1001, 0100, 0010, 0001, 1000, 1100, 1110, 1111, ...

La séquence de sortie est formée à partir de la décharge de registre plus jeune (extrême droite). Il ressemblera à ceci: 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 0 1. On peut constater que la séquence de bits générée est entièrement déterminée par l'état initial de la fonction de registre et de rétroaction. Étant donné que le nombre de toutes sortes d'états d'enregistrement est bien sûr (il est égal à 2 L.), tôt ou tard, la séquence clé commencera à répéter. La longueur maximale de la partie inintégration de la séquence clé est appelée sa période. T.. La période dépend de la fonction de rétroaction. La période maximale possible est égale T. Max \u003d 2. L.-1 (le registre prend tous les états possibles sauf 0000 ... 0). La séquence de sortie de LFSR possédant la période maximale est appelée Séquence M.

Pour connaître les conditions dans lesquelles le LFSR aura une période maximale, les fonctions de rétroaction sont alignées sur un polynôme caractéristique. Ainsi, le registre indiqué ci-dessus à titre d'exemple correspond au polynôme. L'analyse théorique montre que la LFSR aura une période maximale puis et seulement si la police P.(x.) est un primitif. Vous trouverez ci-dessous des polynômes primitifs recommandés pour une utilisation dans la pratique. Le tableau montre le degré de variable x.dans l'enregistrement du polynôme. Par exemple, l'enregistrement (31, 3) correspond au polynôme.

P.(x.) P.(x.) P.(x.)
(39, 16, 23, 35) (38, 5, 6, 27) (32, 2, 7, 16)
(30, 6, 4, 1) (31, 6) (31, 7)
(31, 13) (31, 25, 23, 8) (33, 13)
(35, 2) (47, 5) (48, 9, 7, 4)
(47, 11, 24, 32) (46, 18, 31, 40) (53, 6, 2, 1)
(55, 24) (57, 7) (58, 19)
(59, 7, 4, 2) (41, 27, 31, 32) (61, 5, 2, 1)
(42, 30, 31, 34) (51, 15, 24, 46) (50, 17, 31, 34)


Initialement, les LFSR ont été conçues pour la mise en oeuvre matérielle sous la forme d'un ensemble de circuits numériques. Les implémentations logicielles LFSR perdent généralement la vitesse du matériel. Pour augmenter la vitesse, le statut du registre est rentable pour stocker sous la forme d'un tout L.-Roro-numéro, dont les bits individuels correspondent à la décharge binaire du registre. Ensuite, pour l'accès à des bits individuels, des opérations de saveur sont utilisées (décalage, masquage, etc.).

Registre de la cisaille de retour ( FSR. ) se compose de deux parties: registre de changement de vitesse et fonctions de retour .

Erreur: la source de référence non trouvée) est une séquence de bits. Lorsque vous devez supprimer le bit, tous les bits du registre de décalage passent vers la droite à 1 position. Le nouveau bit extrême gauche est la valeur de la fonction de rétroaction du reste des bits du registre. Période un registre à décalage est appelé la longueur de la séquence résultante avant que la répétition ne commence.

Le type le plus simple de registre de cisaillement avec feedback est registre de cisaillement linéaire avec rétroaction (LFSR.La gauche. Retour Changement. S'inscrire) (Erreur: source de référence non trouvée). Commentaires est un bit Simxorect Bits eaketice, la liste de ces bits est appelée séquence jusqu'à la séquence.

n.-Bitfs peut être situé dans l'un des 2 n. -1 états internes. Cela signifie que théoriquement, un tel registre peut générer une séquence pseudo-aléatoire avec une période 2 n. -1 morceaux. Le nombre d'états internes et de la période est égal, car le registre remplissant avec des zéros conduira au fait qu'il produira une séquence infinie de zéros, qui est absolument inutile. Seulement avec certaines séquences rejetéesLFSCC transcompensez cycliquement tout 2 n. -1 états internes. TLLFSRote LFSR. Avec une période maximale.

Pour la période maximale de LFSrell spécifique, le polynôme formé à partir de la séquence de robinet et de la constante 1 doit être primitif par module 2 .

Le calcul de la primitivité du polynôme est une tâche mathématique plutôt compliquée. Par conséquent, il existe des tables prêtes à l'emploi, qui fournissent les numéros des séquences de prise garantissant la période génératrice maximale. Par exemple, pour un registre de change 32 bits, vous pouvez trouver une telle entrée: (32,7,5,3,2,1,0) . Cela signifie que pour générer un nouveau bit, il est nécessaire d'utiliser une fonction Xorprix un trente-deuxième, septième, cinquième, troisième, seconde, et premiers bits.

Le code d'une telle LFSR est la langue C ++ sera la suivante:

// toute valeur en plus de zéro

Shiftregister \u003d ((((shiftregister \u003e\u003e 31)

^ (Shiftregister \u003e\u003e 6)

^ (Shiftregister \u003e\u003e 4)

^ (Shiftregister \u003e\u003e 2)

^ (Shiftregister \u003e\u003e 1)

^ Shiftregister)

& 0x00000001)<<31)

| (Shiftregister \u003e\u003e 1);

retour shiftregister & 0x00000001;

Les implémentations logicielles LFSRD sont lentes et plus rapides, s'ils sont écrits sur un assembleur, et non sur S. une solution consiste à utiliser le parallèle 16-Tylfsr (ou 32, en fonction de la longueur de mot dans l'architecture d'un ordinateur particulier). Dans un tel schéma, une gamme de mots est utilisée, dont la taille est égale à la longueurLFSR, et chaque que les mots yit de la matrice se réfèrent à sa propriété. À condition que les mêmes numéros soient utilisés, il peut donner un gain de performance notable.

DE les commentaires du jambon peuvent également être modifiés. Dans le même temps, le générateur n'aura pas de plus grande résistance cryptique, mais il sera plus facile de mettre en œuvre des logiciels. Au lieu d'utiliser pour générer un nouveau bit extrême gauche des bits de la séquence de robinence, les bits de la séquence de robinet avec la sortie du générateur et le remplaçant avec le résultat de cette action, le résultat du générateur devient un nouveau bit extrême gauche (Erreur: source de référence non trouvée).

Cette modification est appelée la configuration de galoah. Dans la langue, ça ressemble à ceci:

statique non signé long shiftregister \u003d 1;

void weer_lfsr (graines longues non signées)

Shiftregister \u003d graine;

int galua_lfsr (vide)

si (shiftregister & 0x00000001) (

Shiftregister \u003d (shiftregister ^ masque \u003e\u003e 1) | 0x8000000;

Shiftregister \u003e\u003e \u003d 1;

Les gains consistent que tous les Xors sont remplis d'une seule opération. Ce schéma peut également être parallèle.

Par eux-mêmes, les LF sont bonnes dans des séquences pseudo-aléatoires, mais elles ont des propriétés non aléatoires indésirables. Les bits série sont linéaires, ce qui les rend inutiles à cryptage. Forlfsrdlin n.état interne est le précédent n.générateur de bits de sortie. Même si le schéma de retour est stocké secrètement, il peut être déterminé par 2 n.bits de sortie du générateur avec des algorithmes spéciaux. De plus, de grands nombres aléatoires générés à l'aide des bits de cette séquence exécutée dans une rangée sont fortement corrélés et certains types d'applications ne sont pas aléatoires. Malgré cela, les LFSR sont utilisés pour créer des algorithmes de cryptage. Pour cela, SeverallFSR est utilisé, généralement avec des longueurs différentes et des nombres de séquences de robinet. La clé est l'état initial des registres. Chaque fois qu'un nouveau bit est nécessaire, tous les registres sont déplacés. Cette opération est appelée extraordinaire. Les bits de sortie sont une fonction, de préférence non linéaire, certaines bitslfsr. Cette fonctionnalité est appelée combinaisonet le générateur dans son ensemble - combinaison de générateur. Beaucoup de ces générateurs sont en sécurité jusqu'à présent.

Registre de changement de retour linéaire (RSLO, Anglais. registre de changement de retour linéaire, LFSR) - Le registre de décalage du mot Bit, qui a la valeur du bit d'entrée (mobile) égale à la fonction de taureau linéaire sur les valeurs des bits restants du registre avant le décalage. Il peut être organisé à la fois logiciels et matériel. Il est utilisé pour générer les séquences pseudo-aléatoires des bits, qui trouvent une utilisation, en particulier de la cryptographie.

La description

Le contrôle du registre dans les implémentations matérielles est effectué en fournissant une impulsion de décalage (autrement appelé takhov ou alors synchronisation) Sur toutes les cellules. La gestion de registres dans la mise en œuvre logicielle est effectuée par le cycle. À chaque itération du cycle, la fonction de rétroaction est calculée et le décalage du mot dans le mot est effectué.

Principe d'opération

Complexité linéaire

Indépendance de corrélation

Essayant d'obtenir la complexité linéaire élevée de la séquence générée, les cryptographes sont sans linéairement les sorties de plusieurs registres de décalage. Dans ce cas, une ou plusieurs séquences de sortie (ou même les sorties de RSLOS individuels) peuvent être associées à un flux total et ouverts avec des cryptanalitiques. Le piratage sur la base de telles vulnérabilités s'appelle ouverture de corrélation. L'idée principale de ce piratage est de détecter une certaine corrélation entre la dérivation du générateur et les conclusions de ses composants. Ensuite, observant la séquence de sortie, vous pouvez obtenir des informations sur ces conclusions intermédiaires et rapprocher ainsi le générateur. Thomas Sperentaler a montré qu'il était possible de définir avec précision l'indépendance de la corrélation et qu'il existe un compromis entre l'indépendance de la corrélation et la complexité linéaire.

Mise en œuvre du logiciel

Les implémentations logicielles des RSLOS sont suffisamment lentes et travaillent plus rapidement si elles sont écrites en assembleur. L'une des solutions est l'utilisation parallèle de 16 RSLOS (ou 32S, en fonction de la longueur du mot dans l'architecture informatique). Dans un tel schéma, une gamme de mots est utilisée, dont la taille est égale à la longueur du registre de décalage et chaque lot de mots fait référence à son RSLO. Étant donné que le même nombre de séquences de robinet sont utilisés, il peut donner un gain notable dans la performance génératrice.

Configuration Fibonacci

Considérez un registre de changement de change 32 bits. Il y a une séquence de tap. (32, 31, 30, 28, 26, 1) (\\ displaystyle \\ gauche (32, \\; 31, \\; 30, \\; 28, \\; 26, \\; 1 \\ \\ droite)). Cela signifie que pour générer un nouveau bit, il est nécessaire d'utiliser l'opération XOR pour résumer les 31s, 30e, 29e, 27e, 27ème, 25ème et 0e bits. Les RSLOS résultants ont la période maximale 2 32 - 1 (\\ DisplayStyle 2 ^ (32) -1). Le code pour un tel registre dans la langue Si est comme suit:

int lfsr_fibonacci (vide) (statique non signé long S \u003d 0x00000001; S \u003d ((((((((S \u003e\u003e 31) ^ (S \u003e\u003e 30) ^ (S \u003e\u003e 29) ^ (S \u003e\u003e 27) ^ (S \u003e\u003e 25) ^ s) & 0x00000001)<< 31 ) | (S >\u003e 1); Retour S & 0x00000001; )

Configuration de la Galua

Ce générateur n'a pas de résistance cryptique supérieure, mais cela donne un gain de performance: toutes les opérations XOR peuvent être effectuées pour une action par parallélisation et non séquentiellement une après l'autre, comme dans la configuration Fibonacci. Ce schéma donnera également un gain lorsqu'il sera équipé.

Le code de la longueur de la longueur de la longueur de 32 bits dans la langue SI est la suivante:

int lfsr_galois (vide) (statique non signé long S \u003d 0x00000001; Si (S \u003d (S ^ 0x80000057 \u003e\u003e 1) | 0x80000000; Retour 1;) Autres (S \u003e\u003e \u003d 1; Retour 0;))

Il convient de noter que le cycle d'un nombre fixe d'appels La fonction LFSR_GALOIS dans la configuration de galoa est planifiée environ 2 fois plus rapidement que la fonction LFSR_FIBONACI dans la configuration Fibonacci (compilateur MS VS 2010 sur Intel Core I5).

Un exemple d'une séquence générée

Configuration Fibonacci

Laissez les RSLOS définir le polynôme caractéristique x 3 + x + 1 (\\ displaystyle x ^ (3) + x + 1). Cela signifie que les morceaux de la décharge seront les 2e et 0th et l'unité de formule du polynôme signifie que le 0e bit est entré. La fonctionnalité de commentaires a une vue S j \u003d s j - 1 ⊕ s j - 3 (\\ displaystyle s_ (j) \u003d S_ (J-1) \\ OPLUS S_ (J-3)). Supposons que l'état initial du registre de quart était une séquence. D'autres registres sont présentés dans le tableau ci-dessous:

Numéro d'étape état Débutant
0 [0, 0, 1] (\\ displaystyle \\ GAUCHE) 1
1 0
2 0
3 1
4 1
5 1
6 0
7 [0, 0, 1] (\\ displaystyle \\ GAUCHE) 1

Étant donné que l'état intérieur de la septième étape est retourné à l'original, à partir de la prochaine étape, il y aura une rejoue des bits. C'est-à-dire que la séquence générée est la suivante: [1, 0, 0, 1, 1, 1, 1, 0, 1. . . ] (\\ Displaystyle \\ GAUCHE) (L'ordre des bits dans la séquence correspond à l'ordre de leur génération de RSLOS). Ainsi, la période de séquence est 7, c'est-à-dire la valeur maximale possible, qui s'est produite en raison de la primitivité du polynôme spécifié.

Configuration de la Galua

Prenez le même polynôme caractéristique, c'est-à-dire C 3 \u003d C 1 \u003d 1 (\\ displaystyle c_ (3) \u003d c_ (1) \u003d 1), C 2 \u003d 0 (\\ displaystyle c_ (2) \u003d 0). Sur le bit de sortie, il n'y a que 1 côté bits. L'état initial est le même. Autres registres:

Numéro d'étape état Débutant
0 [0, 0, 1] (\\ displaystyle \\ GAUCHE) -
1 [1, 0, 0] (\\ displaystyle \\ GAUCHE) 0
2 [0, 1, 1, 1] (\\ displaystyle \\ GAUCHE) 1
3 [1, 0, 1] (\\ displaystyle \\ GAUCHE) 1
4 [1, 1, 1] (\\ DisplayStyle \\ GAUCHE) 1
5 [1, 1, 0] (\\ DisplayStyle \\ GAUCHE) 0
6 [0, 1, 0] (\\ DisplayStyle \\ GAUCHE) 0
7 [0, 0, 1] (\\ displaystyle \\ GAUCHE) 1

L'état intérieur du registre à la septième étape est renvoyé à l'original, de sorte que sa période est également 7. Contrairement à la configuration Fibonacci, les registres internes du registre se sont révélés être l'autre, mais la séquence générée est simplement décalée par 4 horloges: [0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1 ,. . . ] (\\ Displaystyle \\ GAUCHE) (L'ordre des bits dans la séquence correspond à l'ordre de leur génération de RSLOS).

Génération de polynômes primitifs

Morceaux N (\\ displaystyle n) Polynôme primitif Période, 2 N - 1 (\\ displaystyle 2 ^ (n) -1) Nombre de polynômes primitifs
2 x 2 + x + 1 (\\ displaystyle x ^ (2) + x + 1) 3 1
3 x 3 + x 2 + 1 (\\ displaystyle x ^ (3) + x ^ (2) +1) 7 2
4 x 4 + x 3 + 1 (\\ displaystyle x ^ (4) + x ^ (3) +1) 15 2
5 x 5 + x 3 + 1 (\\ displaystyle x ^ (5) + x ^ (3) +1) 31 6
6 x 6 + x 5 + 1 (\\ displaystyle x ^ (6) + x ^ (5) +1) 63 6
7 x 7 + x 6 + 1 (\\ displaystyle x ^ (7) + x ^ (6) +1) 127 18
8 x 8 + x 6 + x 5 + x 4 + 1 (\\ displaystyle x ^ (8) + x ^ (6) + x ^ (5) + x ^ (4) +1) 255 16
9 x 9 + x 5 + 1 (\\ displaystyle x ^ (9) + x ^ (5) +1) 511 48
10 x 10 + x 7 + 1 (\\ displaystyle x ^ (10) + x ^ (7) +1) 1023 60
11 x 11 + x 9 + 1 (\\ displaystyle x ^ (11) + x ^ (9) +1) 2047 176
12 x 12 + x 11 + x 10 + x 4 + 1 (\\ displaystyle x ^ (12) + x ^ (11) + x ^ (10) + x ^ (4) +1) 4095 144
13 x 13 + x 12 + x 11 + x 8 + 1 (\\ displaystyle x ^ (13) + x ^ (12) + x ^ (11) + x ^ (8) +1) 8191 630
14 x 14 + x 13 + x 12 + x 2 + 1 (\\ displaystyle x ^ (14) + x ^ (13) + x ^ (12) + x ^ (2) +1) 16383 756
15 x 15 + x 14 + 1 (\\ displaystyle x ^ (15) + x ^ (14) +1) 32767 1800
16 x 16 + x 14 + x 13 + x 11 + 1 (\\ displaystyle x ^ (16) + x ^ (14) + x ^ (13) + x ^ (11) +1) 65535 2048
17 x 17 + x 14 + 1 (\\ displaystyle x ^ (17) + x ^ (14) +1) 131071 7710
18 x 18 + x 11 + 1 (\\ displaystyle x ^ (18) + x ^ (11) +1) 262143 7776
19 x 19 + x 18 + x 17 + x 14 + 1 (\\ displaystyle x ^ (19) + x ^ (18) + x ^ (17) + x ^ (14) +1) 524287 27594
20 - 168
2 - 786, 1024, 2048, 4096

Avantages et inconvénients

Avantages

  • grande vitesse d'algorithmes cryptographiques créés sur la base de RSLOS (par exemple des chiffres en continu);
  • l'utilisation de seuls bits d'opérations et de multiplications de bits simples, difficilement implémenté dans presque tous les dispositifs informatiques;
  • bonnes propriétés cryptographiques (RSLOS peut générer une grande séquence avec de bonnes propriétés statistiques);
  • en raison de sa structure, RSLOS est facilement analysé à l'aide de méthodes algébriques.

désavantages

Façons d'améliorer la cryptoptecture des séquences générées

Générateurs avec plusieurs registres de changement de vitesse

Le générateur de ce type consiste en plusieurs registres de changement de vitesse avec des commentaires linéaires qui génèrent des bits x 1, i, x 2, je, ..., x m, i (\\ displaystyle x_ (1, i), \\; x_ (2, i), \\; \\ points, \\; x_ (m, i) respectivement. Ensuite, les bits générés sont convertis par une fonction booléenne. f (x 1, i, x 2, je, ..., xm, i) (\\ displaystyle f (x_ (1, i), \\; x_ (2, i), \\; x_ ( m, i)))). Il convient de noter que les générateurs de ce type de registres L i (\\ displaystyle l_ (i))), i \u003d 1, 2, ..., m (\\ displaystyle i \u003d 1, \\; 2, \\; \\ points, \\; m), Mutuellement simple.

La période de ce générateur est égale T \u003d (2 L 1 - 1) ⋅ (2 L 2 - 1) ⋯ (2 LM - 1) ≲ 2 L (\\ displaystyle t \u003d (2 ^ (l_ (1)) - 1) \\ CDOT (2 ^ ( L_ (2)) - 1) \\ CDOTS (2 ^ (L_ (m)) - 1) \\ MOASSIM 2 ^ (L)) L \u003d σ i \u003d 1 m l i (\\ displaystyle l \u003d \\ sum \\ limites _ (i \u003d 1) ^ (m) l_ (i)) - Nombre total de cellules. Par conséquent, l'utilisation de plusieurs RSLOS augmente la période de la séquence générée par rapport à un registre, ce qui augmente la cryptoption du générateur. Augmente également la complexité linéaire ou la longueur du registre le plus court correspondant à ce générateur. Un tel registre est à l'aide de l'algorithme Berlekmpa - Massey pour la séquence générée. Au mieux, sa longueur est à la mesure d'une période de séquence générée.

Générateurs avec des transformations non linéaires

Le diagramme structurel d'un tel générateur n'est pas différent du diagramme du générateur précédent. La principale différence est que le dispositif de conversion est défini sur la fonction de lait non linéaire. F (x 1, x 2, ..., x m) (\\ displaystyle f (x_ (1), x_ (2), \\ dots, x_ (m)))). En tant que telle fonction, elle est prise, par exemple, une zhegalkyne polynomie (selon le théorème Zhegalkin, chaque fonction booléenne ne peut être représentée que par le polynôme de Zhegalkin).

Générateur non linéaire peut également être mis en œuvre sur le registre de cisaillement avec des commentaires non linéaires. Il peut donner 2 2 L - 1 - L (\\ DisplayStyle 2 ^ (2 ^ (L-1) -L)) Variantes des séquences de la période maximale, qui est plus que des RSLOS.

La cryptopôte de ce générateur augmente en raison de la non-linéarité de la fonction utilisée. La détermination de l'état des registres sur la séquence générée des bits est une tâche mathématique complexe, car elle n'est pas connue pour l'algorithme qui restaure les états initiaux.

Cette méthode est utilisée, par exemple, dans générateur Hepfa et un générateur généralisé HETHF, cependant, ces générateurs peuvent être piratés par une ouverture de corrélation.

Générateurs avec une tactile différente pour les registres de changement de vitesse

Générateur "stop-go"

Générateur "stop-go" (eng. Stop-and-Go, les deux-Piper) utilise le retrait du RSLOS-1 pour contrôler la fréquence de l'horloge RSLO-2, de sorte que le RSLOS-2 modifie son état à un moment donné, uniquement si la sortie de Le RSLOS-1 à l'heure du temps était égal à l'unité. Ce schéma n'a pas résisté avant l'ouverture de corrélation.

Afin d'augmenter la cryptopitude a été proposée générateur alternatif "STOP-WORKED". Il utilise trois registres de décalage de différentes longueurs. Ici, le RSLOS-1 gère la fréquence d'horloge des 2e et 3ème registres, c'est-à-dire que le RSLOS-2 modifie son état lorsque la sortie du RSLOS-1 est égale à une, et le RSLOS-3 - lorsque la sortie de Le RSLOS-1 est zéro. La sortie du générateur est le fonctionnement de l'ajout du module deux sorties du RSLOS-2 et RSLOS-3. Ce générateur a une longueur longue et une grande complexité linéaire. Il existe une méthode pour l'ouverture de corrélation du RSLOS-1, mais cela ne affaiblit pas considérablement les propriétés cryptographiques du générateur.

Le schéma d'horloge compliqué est utilisé dans générateur bilatéral "STOP-WORKED"qui utilise 2 décalcomanie de la même longueur. Si la sortie du RSLOS-1 à un moment donné T I - 1 (\\ DisplayStyle T_ (I-1)) - l'unité, alors le RSLOS-2 n'est pas enregistré au moment du temps T i (\\ displaystyle t_ (i)). Si la sortie du RSLOS-2 au moment T I - 1 (\\ DisplayStyle T_ (I-1)) égal à zéro et à l'heure du temps T I - 2 (\\ DisplayStyle T_ (I-2)) - unité, et si ce registre est synchronisé à l'heure du temps T i (\\ displaystyle t_ (i)), Dans le même temps, le RSLOS-1 n'est pas synchronisé. La complexité linéaire de ce schéma est approximativement égale à la période de la séquence générée.

Générateur auto-absorbant

Générateur multi-vitesses avec travail interne

Ce générateur utilise deux registres à décalage RSLOS-1 et RSLO-2. Fréquence d'horloge de RCLLO-2 D (\\ displaystyle d) Une fois de plus que le RSLOS-1. Certains bits de ces registres sont multipliés et fonctionnent. Les résultats des multiplications sont résumés par l'opération XOR et la séquence de sortie est obtenue. Ce générateur a une complexité linéaire élevée et présente de bonnes propriétés statistiques. Cependant, son état peut être déterminé par la séquence de sortie de longueur L 1 + l 2 + log 2 \u2061 d (\\ displaystyle l_ (1) + l_ (2) + \\ journal _ (2) (d))) L 1 (\\ displaystyle l_ (1)) et L 2 (\\ displaystyle l_ (2)) - les longueurs du RSLOS-1 et RSLOS-2, respectivement et D (\\ displaystyle d) - le rapport de leurs fréquences d'horloge.

Cascade de Hallmanna

Ce schéma est une version améliorée du générateur "stop-envoi". Il se compose de la séquence PCLOS, l'horlogerie de chacun d'entre eux est géré par les RSLOS précédents. Si la sortie du RSLOS-1 au moment T i (\\ displaystyle t_ (i)) est 1, alors le RSLOS-2 est synchronisé. Si la sortie du RSLOS-2 à l'heure T i (\\ displaystyle t_ (i)) est 1, puis RSLOS-3 est horlogé, et ainsi de suite. La sortie des derniers RSLOS est la sortie du générateur. Si la longueur de tous les RSLOS est la même et égale L (\\ displaystyle l)Puis la période du système de M (\\ displaystyle m) RSLOS est égal (2 L - 1) m (\\ displaystyle (2 ^ (L) -1) ^ (m)))et complexité linéaire - L (S) \u003d L (2 L - 1) M - 1 (\\ DisplayStyle L (S) \u003d L (2 ^ (L) -1) ^ (M-1)) .

Cette idée est simple et peut être utilisée pour générer des séquences avec d'énormes périodes, de grandes difficultés linéaires et de bonnes propriétés statistiques. Mais, malheureusement, ils sont sensibles à l'ouverture, appelé fermé à clé (eng. verrouillage) quand

Les séquences de registres de cisaillement sont utilisées à la fois en cryptographie et en théorie du codage. Leur théorie est parfaitement élaborée, la diffusion des chiffres en streaming sur la base des registres de cisaillement constituait un ouvrier de la cryptographie militaire avant l'apparition de l'électronique.

Un registre à décalage de retour est composé de deux parties: un registre de décalage et une fonction de rétroaction (Figure 1.2.1). Le registre de changement de vitesse est une séquence de bits. (Le nombre de bits est déterminé par la longueur du registre de décalage. Si la longueur est n bits, le registre s'appelle un registre à décalage N-bits.) Chaque fois que vous devez supprimer le bit, tous les bits du décalage du registre de décalage vers le droit à 1 position. Le nouveau bit extrême gauche est la fonction de tous les autres bits du registre. À la sortie du registre de cisaillement, il en résulte un, généralement la signification plus jeune, le bit. La période du registre de décalage est appelée la longueur de la séquence obtenue avant qu'elle ne commence à répéter.

Figure. 1.2.1.

Les cryptographes ont aimé diffuser des chiffres en streaming basés sur des registres de cisaillement: ils sont facilement mis en œuvre à l'aide d'équipements numériques. Je ne suis que légèrement déchiré sur la théorie mathématique. En 1965, Ernst Selmer (Ernst Selmer), la cryptographie principale du gouvernement norvégien, a développé la théorie de la séquence de registres de cisaillement. Solomon Golomb (Solomon Golomb), NSA Mathematics, a écrit un livre qui expose certains de ses résultats et les résultats de la Selmer.

Le type le plus simple de registre de décalage avec rétroaction est un registre de retour linéaire (registre de décalage de retour linéaire ou LFSR) (Figure 1.2.2). Les commentaires sont simplement xor certains des bits de bits, la liste de ces bits est appelée séquence de robinet. Parfois, un tel registre s'appelle la configuration FIBBonaci. En raison de la simplicité de la séquence de rétroaction pour l'analyse LFSR, vous pouvez utiliser une théorie mathématique assez développée. Les cryptographes aiment analyser les séquences, convaincant que ces séquences sont assez aléatoires d'être sûres. LFSR est plus souvent utilisé dans les registres cryptographiques.


Figure. 1.2.2.

En figue. 1.2.3 montre un LFSR 4 bits avec un robinet des premier et quatrième bits. S'il est initialisé par la valeur 1111, alors avant la répétition, le registre prendra les états internes suivants:

Figure. 1.2.3. quatre

La séquence de sortie sera une chaîne de bits significatifs juniors:

1 1 1 1 0 1 0 1 1 0 0 1 0 0 0....

n-Bit LFSR peut être dans l'un des états internes de 2n-1. Cela signifie que théoriquement, un tel registre peut générer une séquence pseudo-aléatoire avec une période de 2 n-1 bits. (Le nombre d'états internes et de la période est 2n-1, car le remplissage des zéros LFSR entraînera un registre de décalage pour produire une séquence infinie de zéros, qui est absolument inutile.) Seulement avec certaines séquences de LFSR diversifiées seront cycliquement à travers Tous les états internes 2n-1. Ces LFSR sont LFSR avec la période maximale. Le résultat résultant s'appelle la séquence M.

Pour que la LFSR spécifique ait une période maximale, le polynôme, formé à partir de la séquence de robinet et de la constante 1, doit être primitif par module 2. Le degré de polynôme est une longueur de registre à décalage. Diplôme polynomial primitif N est un polynôme irréductible, qui est un diviseur, mais n'est pas un revendeur XD + 1 pour tous D, qui sont des diviseurs 2N-1.

En général, il n'y a pas de moyen simple de générer des polynômes primitifs d'un degré donné par module 2. Le moyen le plus simple de choisir un polynôme de manière aléatoire et de vérifier si elle est primitive. Ce n'est pas facile - et quelque chose comme un chèque, qu'il s'agisse d'un numéro simple choisi au hasard - mais de nombreux packages de programmes mathématiques sont capables de résoudre une telle tâche.

Certains, mais bien sûr, pas tous, des polynômes de divers degrés, un module primitif 2. Par exemple, l'enregistrement (32, 7, 5, 3, 2, 1, 0) signifie que le polynôme suivant est primitif par module 2:

x32 + x7 + x5 + x3 + x2 + x + 1

Cela peut être facilement généralisé pour LFSR avec une période maximale. Le premier nombre est la longueur LFSR. Le dernier numéro est toujours égal à 0, et il peut être omis. Tous les numéros, à l'exception de 0, définissent la séquence de suppression comptant du bord gauche du registre de décalage. C'est-à-dire que les membres du polynôme avec un degré moindre correspondent aux positions plus proches du bord droit du registre.

Exemple continu, l'enregistrement (32, 7, 5, 3, 2, 1, 0) signifie que le nouveau bit d'un registre de décalage 32 bits a un nouveau bit est généré à l'aide de Xor trente seconde, septième, cinquième, troisième, troisième, seconde et Premiers bits. Le LFSR résultant aura une longueur maximale, passant de manière cyclique jusqu'à répéter après 232-1 valeurs.



Avez-vous aimé l'article? Partagez-le