Résumé
Les registres Ă dĂ©calage Ă rĂ©troaction linĂ©aire sont un excellent outil pour implĂ©menter un gĂ©nĂ©rateur de bits pseudo-alĂ©atoires dans le matĂ©riel; ils inhibent une structure Ă©lectronique simple et efficace. De plus, ils sont capables de produire des sĂ©quences de sortie avec de grandes pĂ©riodes et de bonnes propriĂ©tĂ©s statistiques. Cependant, les LFSR standard ne sont pas sĂ©curisĂ©s cryptographiquement, car la sĂ©quence de sortie peut ĂȘtre prĂ©dite de maniĂšre unique Ă©tant donnĂ© un petit nombre de bits de flux de clĂ©s en utilisant l'algorithme Berlekamp-Massey. Plusieurs mĂ©thodes ont Ă©tĂ© proposĂ©es pour dĂ©truire la linĂ©aritĂ© inhĂ©rente Ă la conception LFSR. Ces mĂ©thodes comprennent des gĂ©nĂ©rateurs de combinaison non linĂ©aires, des gĂ©nĂ©rateurs de filtres non linĂ©aires et des gĂ©nĂ©rateurs contrĂŽlĂ©s par horloge. NĂ©anmoins, ils restent vulnĂ©rables Ă de nombreuses attaques telles que les attaques par canal latĂ©ral et les attaques algĂ©briques. En 2015, un nouveau gĂ©nĂ©rateur commandĂ© par horloge, appelĂ© gĂ©nĂ©rateur Ă dĂ©coupage, a Ă©tĂ© proposĂ©. Ce nouveau gĂ©nĂ©rateur s'est avĂ©rĂ© rĂ©sistant aux attaques algĂ©briques et aux attaques par canal latĂ©ral, tout en prĂ©servant les exigences d'efficacitĂ© et de sĂ©curitĂ©. Dans ce projet, nous prĂ©sentons une conception du gĂ©nĂ©rateur de commutation utilisant Verilog HDL.
Introduction et historique
L'histoire de la génération de nombres pseudo aléatoires dans le matériel est fortement liée au développement des chiffrements de flux. Les chiffrements de flux sont des chiffrements qui chiffrent les caractÚres de texte brut individuellement (généralement bit par bit), contrairement aux chiffrements par blocs, qui chiffrent le texte brut en gros blocs (64 bits ou plus). De nombreuses architectures de chiffrement de flux nécessitent un générateur de flux de clés, qui est un générateur de bits pseudo-aléatoires dont la graine est la clé de chiffrement. Pour chaque bit de texte brut, le bit de texte chiffré correspondant est calculé comme une fonction réversible (généralement une porte xor) du bit de texte brut et du bit de flux de clé correspondant. Par conséquent, la conception de générateurs de flux de clés sûrs et efficaces est essentielle pour le fonctionnement du chiffrement de flux.
Un outil utile pour construire des gĂ©nĂ©rateurs de flux clĂ©s est les registres Ă dĂ©calage Ă rĂ©troaction linĂ©aire. Ils peuvent ĂȘtre facilement transformĂ©s Ă l'aide de composants Ă©lectroniques Ă©lĂ©mentaires et peuvent ĂȘtre programmĂ©s simplement sur des dispositifs logiques programmables. De plus, en raison de leur structure simple, les LFSR peuvent ĂȘtre modĂ©lisĂ©s et analysĂ©s mathĂ©matiquement, ce qui a conduit Ă un vaste ensemble de connaissances et de rĂ©sultats les concernant. La sĂ©quence de sortie d'un LFSR correctement construit a une longueur exponentielle et de bonnes propriĂ©tĂ©s statistiques telles qu'une grande complexitĂ© linĂ©aire.
MalgrĂ© les bonnes propriĂ©tĂ©s statistiques du LFSR, il ne peut pas ĂȘtre utilisĂ© comme gĂ©nĂ©rateur de flux de clĂ©s sous sa forme standard en raison de sa nature linĂ©aire. Si un attaquant a rĂ©ussi Ă savoir
2L bits de flux de clĂ©s consĂ©cutifs, alors la sĂ©quence de sortie peut ĂȘtre prĂ©dite de maniĂšre unique et efficace en utilisant l'algorithme de Berlekamp-Massey, oĂč
L est le nombre de registres. De nombreuses façons différentes de détruire la linéarité inhérente à la séquence de sortie LFSR ont été proposées:
- Utilisation de plusieurs LFSR et d'une fonction de combinaison non linéaire de leurs sorties (générateurs de combinaison non linéaire).
- Génération de la séquence de sortie en tant que fonction non linéaire de l'état LFSR (générateurs de filtres non linéaires).
- Synchronisation irréguliÚre des LFSR (générateurs commandés par horloge).
Pourtant, toutes ces conceptions sont restĂ©es vulnĂ©rables aux attaques telles que les attaques algĂ©briques et latĂ©rales. AprĂšs l'an 2000, ce n'Ă©tait plus un problĂšme critique, car le chiffrement par blocs Rijndael a Ă©tĂ© proposĂ© et Ă©lu comme Advanced Encryption Standard (AES). AES Ă©tait capable de fonctionner en mode de chiffrement de flux et de rĂ©pondre Ă toutes les normes industrielles pour un chiffrement de flux. De plus, avec l'augmentation des pouvoirs de calcul, AES pourrait ĂȘtre dĂ©ployĂ© sur diverses plates-formes. Cela a conduit Ă une diminution significative des applications de chiffrement de flux.
Adi Shamir a présenté une conférence invitée dans State of the Art dans Stream Ciphers 2004 et Asiacrypt 2004 intitulée "Stream Ciphers: Dead or Alive?". Dans sa présentation, il a suggéré que les chiffrements de flux peuvent survivre dans les applications suivantes:
- Applications orientées logiciel avec des vitesses exceptionnellement élevées (par exemple des routeurs).
- Applications orientées matériel avec un encombrement exceptionnellement faible (par exemple les cartes à puce).
L'une des derniĂšres propositions de gĂ©nĂ©rateurs de flux clĂ©s est le gĂ©nĂ©rateur de commutation. Il est censĂ© ĂȘtre rĂ©sistant aux attaques algĂ©briques et des canaux latĂ©raux, tout en prĂ©servant l'efficacitĂ© et les vitesses de fonctionnement.
Dans ce projet, nous présenterons une conception du générateur de commutation en matériel, en utilisant Verilog HDL. Tout d'abord, nous présentons les deux formes courantes de LFSR, les LFSR de Fibonacci et les LFSR de Galois. Ensuite, nous présentons une présentation mathématique des LFSR. Nous présenterons ensuite le générateur de commutation tel qu'introduit par. Enfin, nous présentons notre conception Verilog du générateur de commutation.
Registres à décalage à rétroaction linéaire
Les registres à décalage à rétroaction linéaire sont des circuits constitués d'une liste linéaire de registres (également appelés éléments à retard) et d'un ensemble prédéfini de connexion entre eux. Un signal d'horloge global (unique) contrÎle le flux de données à l'intérieur du LFSR. Les deux types de LFSR les plus couramment utilisés sont les LFSR de Fibonacci et les LFSR de Galois; ne différer que sous forme de connexions. Comme nous le verrons plus loin dans la section sur les modÚles mathématiques, il existe de nombreuses similitudes entre les architectures de Fibonacci et de Galois, la préférence l'une par rapport à l'autre étant spécifique à l'application.
Tout au long de cet article, nous supposons un compteur de temps global hypothĂ©tique commençant Ă
0 et augmentant de
1 aprĂšs chaque front positif du cycle d'horloge global.
Registres
Un registre est un élément logique capable de stocker un bit de données, appelé l'état. Il a deux lignes d'entrée: une ligne de données à un bit et une ligne de signal d'horloge. Il a une sortie d'un bit qui est toujours égale à l'état interne. à chaque front positif de l'entrée d'horloge, l'entrée de données est affectée à l'état, sinon l'état reste inchangé. Notons l'état d'un registre
S au moment
t comme
mathopS nolimitst .
Fibonacci lfsrs
Un LFSR de Fibonacci se compose de
L registres énumérés à partir de
0 Ă
Lâ1 , tous connectĂ©s au mĂȘme signal d'horloge. L'entrĂ©e du registre
i est la sortie du registre
i+1 pour
0 lei leLâ2 . L'entrĂ©e de rĂ©troaction pour le registre
Lâ1 est la somme xor des sorties d'un sous-ensemble de registres. La mise Ă jour du registre peut ĂȘtre dĂ©crite mathĂ©matiquement comme suit:
\ mathop S \ nolimits_i ^ t = \ left \ {\ begin {array} {l} \ mathop S \ nolimits_ {i + 1} ^ {t-1} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rm {if} \ \} 0 \ le i \ le L-2 \\ \ mathop \ bigoplus \ limits_ {j = 1} ^ k \ mathop S \ nolimits_j ^ {t-1} \ otimes \ mathop C \ nolimits_j {\ \ \ \ \ rm {if} \ \} i = L-1 \ end {array} \ right.
\ mathop S \ nolimits_i ^ t = \ left \ {\ begin {array} {l} \ mathop S \ nolimits_ {i + 1} ^ {t-1} {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rm {if} \ \} 0 \ le i \ le L-2 \\ \ mathop \ bigoplus \ limits_ {j = 1} ^ k \ mathop S \ nolimits_j ^ {t-1} \ otimes \ mathop C \ nolimits_j {\ \ \ \ \ rm {if} \ \} i = L-1 \ end {array} \ right.
oĂč
Cj=1 si vous vous inscrivez
j est inclus dans les commentaires et
0 sinon.
La séquence de sortie est obtenue à partir du registre
0 . Autrement dit, la séquence de sortie est
\ mathop {\ left \ {{\ mathop S \ nolimits_0 ^ i} \ right \}} \ nolimits_ {i \ ge 0}\ mathop {\ left \ {{\ mathop S \ nolimits_0 ^ i} \ right \}} \ nolimits_ {i \ ge 0} .

LFSR de Galois
Les LFSR de Galois consistent également en une liste linéaire de
L registres énumérés à partir de
0 Ă
Lâ1 , partageant tous le signal d'horloge global. L'entrĂ©e du registre
i est la sortie du registre
iâ1 pour
1 lei leLâ1 . Pour certains sous-ensembles de registres, leur entrĂ©e est xorĂ©e avec la sortie du registre
Lâ1 . Cela peut s'exprimer comme suit:
\ mathop S \ nolimits_i ^ t = \ left \ {\ begin {array} {l} \ mathop S \ nolimits_ {i-1} ^ {t-1} \ oplus \ mathop S \ nolimits_ {L-1} ^ {t-1} \ otimes \ mathop C \ nolimits_i {\ rm {\ \ \ \ if \ \}} 1 \ le i \ le L-1 \\ \ mathop S \ nolimits_ {L-1} ^ {t- 1} \ otimes \ mathop C \ nolimits_0 {\ rm {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if \ \}} i = 0 \ end {array} \ right.
\ mathop S \ nolimits_i ^ t = \ left \ {\ begin {array} {l} \ mathop S \ nolimits_ {i-1} ^ {t-1} \ oplus \ mathop S \ nolimits_ {L-1} ^ {t-1} \ otimes \ mathop C \ nolimits_i {\ rm {\ \ \ \ if \ \}} 1 \ le i \ le L-1 \\ \ mathop S \ nolimits_ {L-1} ^ {t- 1} \ otimes \ mathop C \ nolimits_0 {\ rm {\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if \ \}} i = 0 \ end {array} \ right.
oĂč
Ci=1 si l'entrée du registre
i est xored avec la sortie du registre
Lâ1 .
D'une maniÚre similaire à celle des LFSR de Fibonacci, la séquence de sortie est définie comme
\ mathop {\ left \ {{\ mathop S \ nolimits_ {L-1} ^ i} \ right \}} \ nolimits_ {i \ ge 0}\ mathop {\ left \ {{\ mathop S \ nolimits_ {L-1} ^ i} \ right \}} \ nolimits_ {i \ ge 0} .

Comparaison entre Fibonacci et Galois Designs
Il existe une correspondance directe entre les LFSR de Fibonacci et de Galois au sens mathématique, comme nous le verrons dans la section suivante. Cependant, l'utilisation de la conception de Galois présente deux avantages notables:
- Dans la mise en Ćuvre logicielle, il ne nĂ©cessite pas de L vĂ©rification de la paritĂ© des bits, qui ajoute un facteur logarithmique de complexitĂ©.
- Dans l'implémentation matérielle, il ne nécessite que des portes xor à deux entrées, dont le retard de propagation est nettement inférieur à celui des portes xor à entrées multiples utilisées dans la conception de Fibonacci.
Dans notre projet, nous considérons la formulation matricielle du LFSR, donc les deux architectures sont interchangeables.
ModÚle mathématique des LFSR
Dans les sections suivantes, sauf indication contraire, nous supposons que tous les calculs sont effectués sous champ de Galois
Gf gauche(2 droite) . Autrement dit, toutes les opérations sont calculées modulo
2 . Une autre implémentation de cette convention est que toute multiplication est une porte logique et que toute sommation est une porte xor.
Considérez les états de tous
L registres d'un LFSR à un moment donné
t ; cela peut ĂȘtre reprĂ©sentĂ© comme un vecteur de
{\ left \ {{0,1} \ right \} ^ L}{\ left \ {{0,1} \ right \} ^ L} :
St= left( mathopS nolimitst0; mathopS nolimitst1; ldots; mathopS nolimitstLâ1 right)
Nous désignons ce vecteur comme l'état du LFSR. Notez qu'il y a tout au plus
2L états possibles pour un
L enregistrer LFSR. Notez également que si un LFSR devait atteindre l'état zéro, il ne pourrait atteindre aucun autre état. Par conséquent, nous disons qu'il y a

non trivial d'un LFSR.
Considérez la transformation linéaire suivante:
F = \ left ({\ begin {array} {* {20} {c}} 0 & 1 & \ cdots & 0 \\ \ vdots & \ vdots & \ ddots & \ vdots \\ 0 & 0 & \ cdots & 1 \\ {\ mathop C \ nolimits_0} & {\ mathop C \ nolimits_1} & \ cdots & {\ mathop C \ nolimits_ {L-1}} \ end {array}} \ right)
F = \ left ({\ begin {array} {* {20} {c}} 0 & 1 & \ cdots & 0 \\ \ vdots & \ vdots & \ ddots & \ vdots \\ 0 & 0 & \ cdots & 1 \\ {\ mathop C \ nolimits_0} & {\ mathop C \ nolimits_1} & \ cdots & {\ mathop C \ nolimits_ {L-1}} \ end {array}} \ right)
Ătant donnĂ© que
mathopS nolimitst est l'état d'un LFSR de Fibonacci, on peut observer que
F cdot mathopS nolimitst= mathopS nolimitst+1
Si
mathopS nolimitst était un état d'un LFSR de Galois, alors considérons la transformation
G :
G = \ left ({\ begin {array} {* {20} {c}} 0 & \ cdots & 0 & {\ mathop C \ nolimits_0} \\ 1 & \ cdots & 0 & {\ mathop C \ nolimits_1} \\ \ vdots & \ ddots & \ vdots & \ vdots \\ 0 & \ cdots & 1 & {\ mathop C \ nolimits_ {L-1}} \ end {array}} \ right)
G = \ left ({\ begin {array} {* {20} {c}} 0 & \ cdots & 0 & {\ mathop C \ nolimits_0} \\ 1 & \ cdots & 0 & {\ mathop C \ nolimits_1} \\ \ vdots & \ ddots & \ vdots & \ vdots \\ 0 & \ cdots & 1 & {\ mathop C \ nolimits_ {L-1}} \ end {array}} \ right)
Dans ce cas, nous avons
G cdot mathopS nolimitst= mathopS nolimitst+1
Les reprĂ©sentations matricielles des LFSR peuvent ĂȘtre flexibles lorsqu'il s'agit de mises Ă jour rĂ©pĂ©tĂ©es, car elles peuvent ĂȘtre interprĂ©tĂ©es comme un simple produit matriciel. On constate que
F=GT . Ce fait indique les nombreuses similitudes entre les plans de Fibonacci et de Galois s'ils étaient considérés comme des transformations linéaires
{\ left \ {{0,1} \ right \} ^ N} Ă
{\ left \ {{0,1} \ right \} ^ N} .
La multiplication du vecteur d'état de certains LFSR par une matrice (de type Fiboancci ou Galois) est connue sous le nom d'horloge ou de mise à jour du LFSR.
Le générateur de commutation
Le générateur de commutation est un générateur commandé par horloge proposé en 2015. Il est prouvé qu'il résiste aux attaques algébriques et à canaux latéraux. Dans cette section, nous présenterons la conception du générateur de commutation, telle que spécifiée par ses inventeurs.
Structure de base
Le générateur de commutation se compose de deux LFSR: un LFSR de commande
A de longueur
N et un LFSR de données
B de longueur
M . Le contrÎle LFSR est mis à jour comme décrit précédemment. Cependant, le LFSR de données est mis à jour à l'aide de l'une des deux matrices possibles,
mathopM nolimitsi1 ou
mathopM nolimitsj2 , oĂč
M1,M2 sont des matrices compagnes de certains polynĂŽmes primitifs. Le choix d'une matrice par rapport Ă l'autre est dĂ©terminĂ© par la sortie du signal du LFSR de commande. Ce processus peut ĂȘtre dĂ©crit comme suit:
\ mathop B \ nolimits ^ t = \ left \ {\ begin {array} {l} \ mathop M \ nolimits_1 ^ i \ cdot \ mathop B \ nolimits ^ {t-1} {\ rm {\ \ \ \ if \ \}} \ mathop A \ nolimits_ {M-1} ^ t = 0 \\ \ mathop M \ nolimits_2 ^ j \ cdot \ mathop B \ nolimits ^ {t-1} {\ rm {\ \ \ \ if \ \}} \ mathop A \ nolimits_ {M-1} ^ t = 1 \ end {array} \ right.
La sortie du générateur de commutation est la sortie de LFSR
B . Notez que nous avons supposé que
A est un LFSR de Galois. Il peut tout aussi bien s'agir d'un LFSR de Fibonacci.
Entiers
i,j Sont appelés les indices de commutation.
La graine
Rappelons qu'un LFSR peut parcourir au plus
2Lâ1 Ă©tats non triviaux avant de revenir sur les Ă©tats prĂ©cĂ©dents. Depuis les matrices
M1,M2 sont des matrices de transformation de LFSR, on peut en déduire que les entiers
i,j peut ĂȘtre au maximum

avant que les matrices commencent à se répéter.
Le germe du générateur de commutation est
N+3M bits, représentant les états initiaux des LFSR
A et
B et les puissances entiĂšres
i,j . Notez que les matrices
M1,M2 sont fixĂ©s tout au long de la mise en Ćuvre et ne sont pas inclus dans la graine.
Conception Verilog
Dans cette section, nous présenterons notre conception du générateur de commutation utilisant Verilog HDL. Nous présenterons chaque conception de module de façon ascendante. à la toute fin, nous présentons le module générateur de commutation.
Dans notre conception, nous avons essayé de réduire au minimum les composants synchrones. Les seuls composants contrÎlés par horloge sont les LFSR
A,B .
Les opĂ©rations matricielles et vectorielles peuvent ĂȘtre mises en Ćuvre dans un certain nombre de mĂ©thodes diffĂ©rentes, variant en termes de consommation d'unitĂ©s logiques, d'unitĂ©s de mĂ©moire et de complexitĂ© procĂ©durale. Dans notre conception, nous Ă©liminons le besoin de blocs procĂ©duraux et utilisons les Ă©lĂ©ments logiques au maximum.
Toutes les matrices des modules suivants sont indexées à partir de
0 de gauche Ă droite, puis de haut en bas.
Notez également que tous les modules ont des tailles paramétrées; c'est à des fins de débogage. Dans une implémentation réelle, toutes les tailles sont fixes.
Multiplexeur
Ceci est un module implémentant un 2 à 1
N multiplexeur de bits. Le module a deux
N lignes d'entrée à 1 bit, une ligne de sélection à 1 bit et
N ligne de sortie -bit. Si l'entrée du sélecteur est
0 alors la sortie est définie sur la premiÚre ligne d'entrée, sinon elle est définie sur la seconde.
Module multiplexeurTransformation vectorielle
Ce module implémente une transformation linéaire sur un vecteur. Il accepte en entrée un
N foisN matrice de transformation et un
N -bit vecteur. Il produit le produit matrice-vecteur de son entrée.
Chaque bit du vecteur de sortie est le résultat d'un
N -bit xor gate, prenant en entrée le résultat de la
N -bit au niveau du bit et du vecteur d'entrée et de la ligne de matrice correspondante. Autrement dit, chaque bit de sortie est cùblé à l'entrée et aucun bloc de procédure n'est nécessaire.
Exactement
N2 deux entrées et portes sont utilisées, ainsi que
NN - portes xor d'entrée.
Module de transformation vectorielleIdentité
Ce module n'accepte aucune entrée. Son
N foisN la sortie -bit est initialisée à la
N matrice d'identité. Un tel module est déclaré par souci de commodité, de sorte que nous n'avons pas à initialiser un vecteur de registre global pour chaque taille différente.
Module de matrice d'identitéTransposer
Ce module accepte un
N foisN matrice et sortie sa transposition. Aucun élément logique ni élément mémoire n'est utilisé dans ce module, sa sortie n'est qu'une permutation de son entrée
.
Module de transposition matricielleMultiplication de matrice
Il s'agit d'un module implémentant la multiplication matrice-matrice. Il accepte deux
N foisN matrices en entrée, et sort leur produit matrice-matrice.
Ce module contient une instance du module de transposition matricielle. Cela permet d'affecter des indices consécutifs aux colonnes de la deuxiÚme matrice d'entrée. Chaque entrée de la matrice de sortie est ensuite affectée à la sortie d'un
N -entrée xor gate, dont l'entrée est au niveau du bit et de la ligne correspondante de la premiÚre matrice et de la colonne de la seconde.
Exactement
N3 deux entrées et portes et
N2N Les xor d'entrée sont utilisés dans cette implémentation.
Module de multiplication de matriceExponentiation matricielle
Ce module élÚve une matrice à une puissance entiÚre. Il accepte en entrée un
N foisN matrice et un
K -bit entier. Sa sortie est la matrice élevée à la puissance entiÚre spécifiée.
Module d'exponentiation matricielleUnité de contrÎle
Ce module implémente le
N -bit control LFSR. Il s'agit de l'un des deux modules contrÎlés par horloge de notre conception.
Il comprend un statique
N foisN Matrice de transformation LFSR et une variable
N état -bit. Son entrée comprend une horloge, un
N réinitialisation de l'état des bits et un signal de réinitialisation. Sa sortie est un seul bit, qui est le dernier bit du LFSR.
AprÚs chaque front positif du signal d'horloge, l'état est mis à jour en fonction de la matrice de transformation à l'aide d'un module de multiplication matrice-vecteur. La réinitialisation d'état est affectée à l'état interne aprÚs chaque front positif du signal de réinitialisation.
Module d'unité de commandeUnité de données
Le
N LFSR de données est implémenté à l'aide de ce module. Comme le module de l'unité de contrÎle, il est commandé par horloge
Le module comprend deux
N foisN matrices de transformation et un
N état LFSR -bit. Il accepte en entrée un signal d'horloge, un signal de commande, un
N réinitialisation de l'état LFSR à 2 bits, deux
N foisN la transformation de matrice est réinitialisée et un signal de réinitialisation. Il a une sortie d'un bit, le dernier bit du LFSR interne.
Notez que puisque la graine peut ĂȘtre modifiĂ©e, les matrices de transformation peuvent Ă©galement ĂȘtre modifiĂ©es, contrairement Ă l'unitĂ© de contrĂŽle dont la matrice de transformation est fixe.
\ Unité de donnéesLe générateur de commutation
Ceci est le module principal de notre conception. Il est paramétré par des entiers
N,M , qui sont les tailles des unités de contrÎle et de données, respectivement.
L'entrée de ce module est un signal d'horloge, un
N+3M -bit seed, et un signal défini. Le germe est simplement une concaténation de la réinitialisation du LFSR de contrÎle, de la réinitialisation du LFSR de données et des nombres entiers
i,j Sa sortie est un bit, le bit pseudo aléatoire généré par le générateur de commutation.
Ce module comprend deux
M foisM matrices
mathopM nolimits1, mathopM nolimits2 . Ces matrices sont fixées tout au long de l'implémentation.
Deux instances de modules d'exponentiation de matrice sont utilisĂ©es pour calculer les matrices d'entrĂ©e pour l'unitĂ© de donnĂ©es, oĂč leurs entrĂ©es sont les matrices de transformation fixes et les entiers
i,j , extrait de la graine.
Le module générateur de commutationConclusions et recommandations
Dans ce projet, nous avons prĂ©sentĂ© une conception du gĂ©nĂ©rateur de commutation utilisant Verilog HDL. Cette conception est entiĂšrement axĂ©e sur le matĂ©riel et Ă©limine l'utilisation de blocs procĂ©duraux. Une telle approche permet des performances maximales au dĂ©triment des Ă©lĂ©ments logiques et mĂ©moire. Pour certaines applications avec des contraintes d'Ă©lĂ©ments logiques et de mĂ©moire, il peut ĂȘtre avantageux de sacrifier les performances et d'augmenter l'utilisation de blocs procĂ©duraux pour rĂ©duire l'utilisation des Ă©lĂ©ments Ă©lectroniques.
Un inconvénient du projet est qu'il confie la responsabilité de choisir de bons indices de commutation à l'utilisateur. Un progrÚs possible consiste à ajouter un composant matériel pour vérifier la validité de l'index de commutation utilisé. Cela nécessite une implémentation matérielle d'algorithmes complexes tels que la recherche des caractéristiques polynomiales d'une matrice donnée et la vérification de la primitivité.
Un progrĂšs possible consiste Ă ajouter un vĂ©ritable gĂ©nĂ©rateur de nombres alĂ©atoires pour vĂ©rifier les indices de commutation alĂ©atoires et Ă sortir une paire valide une fois qu'il est trouvĂ©. Il peut ĂȘtre prouvĂ© que ce processus s'arrĂȘte aprĂšs un court laps de temps avec une forte probabilitĂ©.
Les références
- Katz, Jonathan et al. Manuel de cryptographie appliquée. Presse CRC, 1996.
- Choi, Jun et al. "Le générateur de commutation: Nouveau générateur commandé par horloge avec une résistance contre les attaques algébriques et latérales." Entropie 17,6 (2015): 3692-3709.
- Shamir, Adi. "Chiffres de flux: morts ou vivants?." ASIACRYPT. 2004.
- LFSR pour les non-initiés