Brevet FR3083889A1 — publié le 20200117

REGISTRE À DÉCALAGE PROTÉGÉ CONTRE LES ATTAQUES PHYSIQUES DESCRIPTION DOMAINE TECHNIQUE La présente invention concerne de manière générale le domaine de la protection de circuits intégrés contre les attaques physiques, en particulier la protection de circuits intégrés de chiffrement utilisés en cryptographie. ÉTAT DE LA TECHNIQUE ANTÉRIEURE Les circuits intégrés destinés à traiter des données confidentielles et tout particulièrement les circuits intégrés de chiffrement doivent être protégés contre les techniques de cryptanalyse. On distingue la cryptanalyse classique (ou théorique) et la cryptanalyse par attaques physiques. La cryptanalyse classique consiste à observer des données chiffrées et à essayer de remonter par une analyse différentielle ou algébrique aux données en clair. Les attaques physiques sont l'ensemble des techniques exploitant le fonctionnement du circuit de chiffrement pour remonter aux données en clair. A la différence de la cryptanalyse classique, les attaques physiques ne visent pas à attaquer l'algorithme de chiffrement en soi mais son implémentation logicielle ou matérielle. On distingue généralement deux grandes familles d'attaques physiques matérielles, à savoir les attaques par observation (ou par canaux auxiliaires) et les attaques par injection de fautes. Les attaques par observation ou SCA (Skie Channel Analysis) se fondent sur l'observation du circuit pendant l'exécution des calculs liés au chiffrement. Cette observation se traduit en pratique par des mesures physiques (consommation de courant, trace électromagnétique, temps de calcul, etc.). Les attaques par injection de fautes ou FIA (Fault Injection Attack) exploitent l'effet d'une perturbation intentionnelle sur le fonctionnement du circuit, notamment pour détourner des protections ou réduire la complexité mathématique du déchiffrement. La perturbation du fonctionnement du circuit 2 peut être induite par exemple au moyen d'une sonde électromagnétique ou d'un laser, ou encore par modulation de la tension d'alimentation ou de la fréquence de fonctionnement du circuit. Il est assez aisé de mener des attaques par canaux auxiliaires ou par injection de 5 fautes sur des registres à décalage, ces attaques permettant de déterminer les données présentes dans de tels registres. Or, les registres à décalage sont utilisés dans les implémentations matérielles de nombreux algorithmes de chiffrement, notamment dans les algorithmes de chiffrement par flot (stream cipher) tels que Trivium ou Enocoro (normalisés dans l'ISO/IEC29192-3: 2012), mais également dans les algorithmes de hash, 10 pour la génération de nombres aléatoires, ou encore simplement pour le stockage de données. Un registre à décalage non protégé est représenté schématiquement en Fig. 1. L'état interne du registre est donné par les N bits stockés dans les N cellules mémoire (ou plus simplement « cellules ») du registre, chaque cellule étant généralement 15 réalisée par une simple bascule (flip-flop). On considère qu'à chaque nouveau cycle d'horloge Clk un nouveau bit arrive en entrée du registre et que chaque bit de l'état interne est décalé d'un bit vers la sortie. Pour mener une attaque par canaux auxiliaires, un attaquant peut exploiter le poids de Hamming et/ou la distance de Hamming. On rappelle que le poids de Hamming 20 d'un mot binaire est défini par le nombre de bits ayant la valeur « i» dans ce mot et que la distance de Hamming entre deux mots (de même taille N) est égal au nombre de bits où ces deux mots diffèrent. On définit par extension la distance de Hamming d'un mot S1,..., S, comme la distance entre les mots (de taille N -1) Si...., S1 et S, .....S. . Autrement dit, la distance de Hamming d'un mot est égale au nombre de commutations 25 entre deux bits successifs de ce mot. Ainsi, on comprendra qu'un registre ne contenant que des « 1 » correspondra à un poids N et une distance de Hamming nulle et qu'un registre dans lequel les bits successifs alternent correspondra à un poids N /2 et une distance de Hamming de N -1 (N si l'on considère le bit d'entrée). Le poids de Hamming et la distance de Hamming s'obtiennent facilement à partir de la consommation statique et la consommation dynamique du registre à décalage. 3 A l'heure actuelle, il n'existe pas de contre-mesure simple adaptée aux registres à décalage, ciblant de manière efficace les attaques par injection de fautes et/ou par canaux auxiliaires. Les contre-mesures destinées à parer les attaques par injection de fautes font 5 généralement appel à une redondance spatiale (duplication des circuits et opérations effectuées en parallèle), ou à une redondance temporelle (répétition des opérations plusieurs fois), voire encore à une redondance d'information elle-même au moyen de codes de détection d'erreur (CRC) ou de correction d'erreur (ECC). Dans tous les cas, cette redondance permet de déterminer si des erreurs ont été introduites et donc de vérifier 10 l'intégrité des données. Les contre-mesures destinées à parer les attaques par canaux auxiliaires sont diverses. On pourra en trouver une présentation générale dans l'article de M. Mayhew et al. intitulé « An overview of hardware-level statistical power analysis attack countermeasures » publié dans J. Cryptogr. Eng. , vol. 7, no. 3, pp 213-244, Sept. 2017. 15 Certaines de ces contre-mesures sont fondées sur un principe de compensation de la consommation du circuit, de manière à ce que celle-ci reste constante au cours du temps. Toutefois, la compensation de la consommation est spécifique à chaque circuit et requiert donc un effort de conception important à chaque nouveau circuit, nécessitant de faire appel à des outils et des librairies spécialisés. En outre, elle suppose que l'on 20 compense l'ensemble des composants et des éléments parasites du circuit (capacités, résistances) afin que les différents chemins soient équilibrés en courant. Enfin, le surcoût en termes de surface, de consommation et de pertes de performances est généralement important. Une contre-mesure destinée à parer les attaques par canaux auxiliaires contre un 25 registre à décalage a été proposée dans l'article de S. Burman et al. intitulé « LFSR based stream cipher are vulnerable ta power attacks » publié dans INDOCRYPT 2007 Proc., pp. 384-392. Le circuit protégé est en fait un registre à décalage à rétroaction linéaire ou LFSR (Linear Feedback Shift Register) pouvant être utilisé dans le contexte d'un chiffrement par 30 flot. On rappelle qu'un chiffrement par flot est réalisé en ajoutant bit à bit un flot de clé de 4 chiffrement (key stream) à la séquence de bits du message en clair. Ce flot de clé est généralement généré à partir de tu sorties d'un registre LFSR où in N est le nombre de prises de rétroaction correspondant aux coefficients non nuls d'un polynôme primitif de degré N (voire des sorties de plusieurs registres LFSR) lesdites sorties pouvant être 5 combinées à l'aide d'un élément non-linéaire. La Fig. 2 représente de manière schématique un registre LFSR protégé contre les attaques par canaux auxiliaires.11comprend N cellules (bascules) 2100,...,210N-1, contenant les bits S0,..., S_ et une boucle de contre-réaction 220 dont les coefficients sont ceux d'un 10 polynôme primitif. La protection est apportée par des bascules de compensation 2400,...,240N-1, et les portes logiques 2300,...,230N-1. Lorsqu'une bascule 210, commute, la bascule associée 240, ne commute pas et inversement, ce qui garantit un nombre de commutations constant dans le circuit à chaque coup d'horloge. 15 On remarquera toutefois que la contre-mesure proposée n'est efficace que contre les attaques par canaux auxiliaires basées sur la distance de Hamming. Elle serait en revanche inopérante contre des attaques par canaux auxiliaires basées sur le poids de Hamming. L'objet de la présente invention est par conséquent de proposer une contre- 20 mesure permettant de protéger un registre à décalage contre les différents types d'attaques par canaux auxiliaires et, dans un mode de réalisation avantageux, de protéger ce registre à la fois contre les attaques par canaux auxiliaires et par injection d'erreurs. EXPOSÉ DE L'INVENTION 25 La présente invention est définie par un registre à décalage protégé contre les attaques physiques, comprenant un module de codage recevant des bits d'entrée et codant, à chaque coup d'horloge, un bit d'entrée (bm) en un mot de code de taille K >1, une pluralité K de registres à décalage élémentaires comportant chacun un même nombre N >2 de cellules mémoire, chaque registre à décalage élémentaire recevant en entrée un 5 bit (S,) du mot de code et fournissant un bit d'un mot à décoder de taille K pour générer un bit de sortie (b,,'), les mots de code étant choisis de manière à posséder tous un même poids de Hamming non nul et chaque couple de mots de code consécutifs présentant une même distance de Hamming non nulle. 5 Le codage mis en oeuvre par le module de codage peut être un codage systématique, le bit de sortie étant le bit systématique du mot à décoder et étant fourni par l'un des registres élémentaires. Selon une variante, le registre à décalage comprend en outre un module de décodage dont les entrées sont reliées aux sorties respectives des K registres à décalage 10 élémentaires, et décodant le mot à décoder pour fournir le bit de sortie, chaque état étant associé à un mot de code, la machine d'états passant à chaque coup d'horloge d'un état courant à un état suivant en fonction de l'état courant et du bit d'entrée, le mot de code généré par le module de codage étant celui associé à l'état suivant. Selon un premier mode de réalisation, le registre à décalage peut comprendre en 15 outre une machine d'états externe, cadencée par ladite horloge et parcourant de manière cyclique une séquence d'états, le mot de code généré par le module de codage étant fonction du bit d'entrée et de l'état courant de la machine d'états. La machine d'états externe peut notamment être réalisée par un compteur binaire synchrone. Le compteur peut fournir une parité de nombre de coups d'horloge à partir d'un 20 instant d'initialisation, le mot de code généré par le module de codage étant fonction du bit d'entrée et de ladite parité. Lorsque le module de décodage est présent, s'il détermine que le mot à décoder n'est pas un mot de code, il génère un signal d'erreur. L'invention concerne également un circuit de chiffrement par flot, comprenant au 25 moins un registre à décalage comme indiqué plus haut, le registre à décalage élémentaire correspondant au bit systématique comportant une rétroaction linéaire au moyen de coefficients d'un polynôme primitif, le bit résultant de la rétroaction linéaire servant de bit d'entrée au module de codage, les bits stockés dans le registre à décalage élémentaire correspondant au bit systématique, ou certains d'entre eux seulement, étant combinés 30 dans un module de combinaison non linéaire pour fournir un flot de clé de chiffrement, 6 une séquence de bits (a, aN) à chiffrer étant sommée au flot de clé de chiffrement (d1,.., d) ,r) pour fournir une séquence chiffrée par flot ( ). BRÈVE DESCRIPTION DES DESSINS 5 D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture d'un mode de réalisation préférentiel de l'invention, décrit en référence aux figures jointes parmi lesquelles : La Fig. 1 représente de manière schématique un registre à décalage non protégé contre les attaques physiques ; 10 La Fig. 2 représente un registre à décalage protégé contre les attaques physiques par canaux auxiliaires, connu de l'état de la technique ; La Fig. 3 représente un registre à décalage protégé contre les attaques physiques selon un premier mode de réalisation de l'invention ; La Fig. 4 représente un premier exemple de registre à décalage selon la Fig. 3 ; 15 La Fig. 5 représente un exemple de diagramme d'états pour le module de codage de la Fig. 3; La Fig. 6 représente un second exemple de registre à décalage selon la Fig. 3, utilisant le diagramme d'états de la Fig. 5 ; La Fig. 7 représente un registre à décalage contre les attaques physiques selon un 20 second mode de réalisation de l'invention ; La Fig. 8 représente schématiquement un circuit de chiffrement par flot utilisant un registre à décalage protégé contre les attaques physiques selon le second mode de réalisation de l'invention. 25 EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS Nous considérerons dans la suite un registre à décalage comportant une pluralité N 2 de cellules mémoire, à protéger contre les attaques physiques décrites plus haut. Un tel registre peut par exemple faire partie intégrante d'un circuit de chiffrement par flot à protéger comme nous le verrons plus loin. 7 L'idée à la base de l'invention est de prévoir une pluralité K>1 de registres à décalage élémentaires en parallèle et de coder chaque bit d'entrée en un mot de K bits, les bits de ce mot étant respectivement fournis aux entrées de ces registres à décalage élémentaires. Le registre à décalage à protéger peut être vu comme l'un quelconque des 5 registres à décalage élémentaires. La Fig. 3 représente un registre à décalage protégé contre les attaques physiques selon un premier mode de réalisation de l'invention. Le registre à décalage protégé contre les attaques physiques est implémenté sous 10 la forme d'une pluralité K de registres élémentaires 3301,...,330K, contrôlés par une même horloge, Clk . A chaque coup d'horloge, un nouveau bit d'entrée est fourni au module de codage, 310, pour générer un mot de code de K bits, chacune des K sorties du module de codage étant reliée à l'entrée d'un registre élémentaire. Ainsi, à chaque coup d'horloge, un bit du mot de code est fourni à un registre à décalage élémentaire. Les bits en sortie des 15 registres à décalage élémentaires, 3301,...,330K, sont fournis en parallèle sous la forme d'un mot de K bits qui est décodé par le module de décodage 320 pour fournir un bit de sortie. Selon une première variante, le codage du bit d'entrée par le module de codage peut dépendre de l'état d'une machine d'états externe, cadencée par l'horloge CM et parcourant de manière cyclique une séquence d'états. Selon une seconde variante, dans 20 laquelle le codeur (module de codage) est lui-même une machine d'états, le codage du bit d'entrée dépendra de l'état du codeur, tel que résultant de l'opération de codage précédente. Selon une troisième variante, le codage du bit d'entrée par le module de codage dépendra à la fois d'un premier état d'une machine d'états externe et d'un second état d'une machine d'états interne. 25 Quelle que soit la variante considérée, l'ensemble des mots du code, autrement dit le dictionnaire du code, n'est constitué que de mots présentant un même poids de Hamming, non nul. En outre, la distance de Hamming entre deux mots de code quelconques successifs est choisie constante, non nulle, autrement dit le nombre de commutations binaires à chaque coup d'horloge est identique et non nul. Ainsi, une même 30 valeur de bit d'entrée sera codée différemment en deux instants successifs. 8 Dans la première variante, la machine d'états externe pourra être réalisée au moyen d'un compteur binaire synchrone, voire dans son implémentation la plus simple par une bascule DO rebouclée sur elle-même (0_ sur D) de manière à effectuer une division de fréquence par 2. Dans ce dernier cas, le codage du bit d'entrée dépendra simplement 5 de la parité P du nombre de coups d'horloge à partir d'un instant d'initialisation. Un premier exemple d'un tel codage d'un bit d'entrée b pour K = 4 est donné par la table de codage ci-après : P=0 P=1 b =0 0001 0010 h=1 0100 1000 10 Table I On vérifie bien que tous les mots du code ont le même poids de Hamming (en l'occurrence 1) et que deux mots de code successifs présentent une même distance de Hamming (égale à 2). 15 La Fig. 4 représente un exemple de registre à décalage protégé dans lequel le module de codage utilise la table de codage ci-dessus. On a représenté en haut de la figure, en pointillés, le registre à décalage non-protégé équivalent. Dans cette figure, le premier coup d'horloge, correspondant à S:,...,Sfc est supposé avoir une parité impaire ( P =1). 20 Le module de décodage décode à chaque coup d'horloge le mot constitué par les K bits en sortie des registres à décalage élémentaires, en utilisant le dictionnaire du code. Si le mot en question ne fait pas partie du dictionnaire du code, une erreur est détectée et signalée. Ainsi, dans le cas de l'exemple du registre protégé représenté en Fig. 4, si le mot à décoder possède deux bits ou plus égaux à « 1 », ou bien aucun bit égal à 1, une erreur 25 sera détectée et signalée. Un attaquant souhaitant injecter une faute dans le circuit sans que celle-ci ne soit détectée devra injecter simultanément une faute à la même position et dans deux registres 9 élémentaires différents. Il devra en outre injecter cette faute sur exactement un bit par registre élémentaire, faute de quoi un état inconnu sera généré. Enfin, l'attaquant devra avoir accès à la parité P afin de réaliser cette insertion. La combinaison de ces trois conditions est très difficile à réaliser. En particulier, elle est beaucoup plus difficile à réaliser 5 qu'une attaque menée contre une contre-mesure connue de l'état de la technique, à base de simple redondance spatiale. Comme précédemment indiqué, selon une seconde variante, le module de codage peut fonctionner lui-même comme une machine d'états, autrement dit chaque coup 10 d'horloge fait passer la machine à un nouvel état, fonction de l'état précédent et de la valeur binaire du bit d'entrée (une telle machine d'états sera dite « interne »). La description des transitions entre états, en fonction des bits d'entrée est donnée par un diagramme d'états. A chaque état correspond un mot de code de K bits, ces K bits étant fournis aux K entrées respectives des registres à décalage élémentaires. 15 Les mots de code associés aux différents états sont choisis de manière à avoir tous un même poids de Hamming non nul et tels que chaque couple de mots de code successifs présente une même distance de Hamming non nulle. Le module de décodage est basé sur le même diagramme d'états que le module de codage : à partir de deux états successifs, ce module détermine la valeur binaire qui 20 correspond à la transition de l'un à l'autre, et fournit cette valeur comme bit de sortie. La Fig. 5 représente un exemple de diagramme d'états pour le module de codage de la Fig. 3. Les valeurs binaires associées aux arêtes du graphe correspondent aux valeurs possibles du bit d'entrée du module de codage. 25 La Fig. 6 représente un second exemple de registre à décalage selon la Fig. 3, utilisant le diagramme d'états de la Fig. 5. On a représenté en haut de la figure, en pointillés, le registre à décalage non-protégé équivalent. Le module de codage est représenté en 610 et celui de décodage en 30 620. Les registres à décalage élémentaires sont représentés en 6301,...,6304. 10 On a supposé ici que l'état initial de la machine d'états était 1010. Cet état est fourni en tant que premier mot de code Sil._ sr aux K registres à décalage élémentaires. L'arrivée du premier bit de valeur « 1 » fait passer le codeur de l'état 1010 à l'état 1100. Ce mot de code, S21,...,S,K , est fourni aux registres à décalage élémentaires. Le second bit de 5 valeur « 1 » fait passer le codeur de l'état 1100 à l'état 1010. Ce mot de code S S,r( est fourni aux registres à décalage élémentaires et ainsi de suite. Dans cet exemple, le poids de Ha m ming des différents mots du code est égal à 2 et la distance de Ha mming entre deux mots successifs du code est égale à 2. De la même façon que précédemment, si un mot de sortie S;!.....5: n'appartient 10 pas au dictionnaire du code, le module de décodage 620 détectera une erreur et pourra la signaler. De manière plus générale, dans une troisième variante, le codage du bit d'entrée pourra être réalisé en fonction de l'état d'une première machine d'états externe, telle 15 qu'un compteur, et de l'état d'une seconde machine d'états interne. Les transitions entre les états internes peuvent alors dépendre à la fois de l'état externe (par exemple de la partie P du compteur de coups d'horloge) et du bit en entrée du module de codage. Cela se traduit par une double indexation du diagramme d'états de la seconde machine d'états. 20 La Fig. 7 représente un registre à décalage protégé contre les attaques physiques selon un second mode de réalisation de l'invention. Comme dans le premier mode de réalisation, le module de codage 710 peut être implémenté selon la première, la deuxième ou la troisième variante exposée précédemment. 25 Il diffère toutefois du précédent en ce que le module de codage 710 utilise un code systématique. Autrement dit, le mot de code S..... S, codant le bit k contient ce bit : Sk tel que ,S," = b, Vn.11 en diffère également en ce que le module de décodage est ici absent, la sortie systématique, c'est-à-dire celle du registre à décalage élémentaire 730k étant directement utilisée. 11 Ainsi, par exemple, on peut remarquer que le registre à décalage représenté en Fig. 6 est susceptible d'être implémenté selon le second mode de réalisation de l'invention, la séquence de bits en sortie du registre 6301 étant identique à la séquence des bits d'entrée. 5 La Fig. 8 représente schématiquement un circuit de chiffrement par flot utilisant un registre à décalage protégé contre les attaques physiques, selon le second mode de réalisation de l'invention. Il convient de noter qu'un registre à décalage selon le premier mode de réalisation 10 de l'invention pourrait alternativement être utilisé, au prix d'une complexité plus grande (ajout du module de décodage) mais avec l'avantage de la détection d'erreur associée. En Fig. 8, le module de codage 810 utilise un code systématique comme le module 710 de la Fig. 7. Seul le registre à décalage élémentaire, ici 8301, correspondant à la sortie systématique est utilisé pour générer le flot de clé de chiffrement. Les contenus des cellules 15 mémoire du registre à décalage élémentaire en question sont respectivement multipliés en 840 par les coefficients binaires d'un polynôme primitif et sommés dans l'additionneur binaire (XOR) 850 pour fournir le bit à l'entrée du module de codage : ^^; bn =le 'Ai -é-keS7 =IL" N-i+ibi 20 Par ailleurs, les bits du registre élémentaire 8301, voire certains d'entre eux seulement, peuvent être combinés au moyen d'un module de combinaison 860 (par exemple porte logique) implémentant une fonction non linéaire NL pour fournir un flot de clé de chiffrement di, ...d,' . 25 La séquence de bits à chiffrer n1...., 0M formant le message en clair et le flot de clé de chiffrement sont sommés par l'additionneur logique 870 pour fournir le message chiffré , avec at = az+ . 12 En pratique, on pourra utiliser une pluralité de registres à décalage protégés contre les attaques physiques tels que celui représenté en Fig. 8 et l'on combinera certains bits de chacun des registres élémentaires correspondant à leur sorties systématiques respectives pour obtenir le flot de clé de chiffrement. Par exemple, chacun de ces registres 5 élémentaires sera associé à un module de combinaison non linéaire et les séquences en sortie de ces modules de combinaison non linéaires seront sommées entre elles. Alternativement, le module de combinaison non linéaire pourra être mutualisé entre ces registres élémentaires et recevoir certains bits de chacun d'eux REVENDICATIONS1. Registre à décalage protégé contre les attaques physiques, caractérisé en ce qu'il comprend un module de codage recevant des bits d'entrée et codant, à chaque coup d'horloge, un bit d'entrée (17,') en un mot de code de taille K>1, une pluralité K de registres à décalage élémentaires (3301,...,330K) comportant chacun un même nombre N >2 de cellules mémoire, chaque registre à décalage élémentaire recevant en entrée un bit (S,) du mot de code et fournissant un bit d'un mot à décoder de taille K pour générer un bit de sortie (170, les mots de code étant choisis de manière à posséder tous un même poids de Hamming non nul et chaque couple de mots de code consécutifs présentant une même distance de Hamming non nulle. 2. Registre à décalage selon la revendication 1, caractérisé en ce que le codage mis en oeuvre par le module de codage est un codage systématique, le bit de sortie étant le bit systématique du mot à décoder et étant fourni par l'un des registres élémentaires. 3. Registre à décalage selon la revendication 1 ou 2, caractérisé en ce qu'il comprend en outre un module de décodage (320) dont les entrées sont reliées aux sorties respectives des K registres à décalage élémentaires, et décodant le mot à décoder pour fournir le bit de sortie. 4. Registre à décalage selon l'une des revendications précédentes, caractérisé en ce que le module de codage comprend une machine d'états interne, chaque état étant associé à un mot de code, la machine d'états passant à chaque coup d'horloge d'un état courant à un état suivant en fonction de l'état courant et du bit d'entrée, le mot de code généré par le module de codage étant celui associé à l'état suivant. 5. Registre à décalage selon l'une des revendications précédentes, caractérisé en ce qu'il comprend en outre une machine d'états externe, cadencée par ladite horloge 14 et parcourant de manière cyclique une séquence d'états, le mot de code généré par le module de codage étant fonction du bit d'entrée et de l'état courant de la machine d'états. 6. Registre à décalage selon la revendication 5, caractérisé en ce que la 5 machine d'états externe est un compteur binaire synchrone. 7. Registre à décalage selon la revendication 6, caractérisé en ce que le compteur fournit une parité de nombre de coups d'horloge à partir d'un instant d'initialisation, le mot de code généré par le module de codage étant fonction du bit 10 d'entrée et de ladite parité. 8. Registre à décalage selon la revendication 3, caractérisé en ce que, lorsque le module de décodage détermine que le mot à décoder n'est pas un mot de code, il génère un signal d'erreur. 15 9. Circuit de chiffrement par flot, caractérisé en ce qu'il comprend au moins un registre à décalage selon la revendication 2, le registre à décalage élémentaire (8301) correspondant au bit systématique comportant une rétroaction linéaire (850) au moyen de coefficients d'un polynôme primitif, le bit résultant de la rétroaction linéaire servant de bit 20 d'entrée au module de codage, les bits stockés dans le registre à décalage élémentaire correspondant au bit systématique, ou certains d'entre eux seulement, étant combinés dans un module de combinaison non linéaire (860) pour fournir un flot de clé de chiffrement, une séquence de bits ( ) à chiffrer étant sommée au flot de clé de chiffrement ( ) pour fournir une séquence chiffrée par flot (a: 25