Brevet FR2861474A1 — publié le 20050429

Procédé et appareil pour une période de traitement variable dans un circuit intégré Contexte de l'invention Domaine de l'invention L'invention concerne la modification de la période de traitement dans les modules logiques numériques et plus particulièrement la réduction de la période de traitement durant le chiffrement/déchiffrement afin de rendre l'analyse de courant plus difficile. Art antérieur La figure 1 est un schéma illustrant un micro-contrôleur simplifié de l'art antérieur. Un microcontrôleur comprend d'une manière générale un microprocesseur, de la mémoire, un module périphérique qui assure la corn- munication, par exemple un récepteur/émetteur universel asynchrone (UART), une interface SPI et un bus USB, ainsi qu'un contrôleur d'interruptions. Le microcontrôleur 100 comprend le microprocesseur 102 couplé à la mémoire 104. Le décodeur d'adresses 106 reçoit et décode des adresses provenant du microprocesseur 102 pour la mémoire 104 et des périphériques 108. Le décodeur d'adresses 106 et les périphériques 108 reçoivent les adresses sur le bus d'adresses 110 tandis que le décodeur d'adresses 106 transmet des informations de sélection sur la ligne de sélection de mémoire 112 et de sélection de périphérique 114. Les données sont transmises entre le microprocesseur 102, la mémoire 104, et les périphériques 108 sur un bus de données 116. Un signal de lecture ou d'écriture est transmis entre le microprocesseur 102, la mémoire 104 et les périphériques 108 sur une ligne de signal de lec- ture/écriture 117. Le microcontrôleur 100 reçoit un signal d'horloge 118 et un signal de réinitialisation 120. L'entrée 122 comprend par exemple des déclencheurs et des données d'entrée UART tandis que la sortie 124 comprend par exemple des données de sortie d'émetteur UART. Le contrôleur d'interruption 126 recueille et traite les signaux d'interruptions provenant des périphériques 108 le long d'une ligne d'interruption 128. Les périphériques 108 peuvent être une logique fonctionnelle, par exemple un UART, un traitement de chiffrement, un traitement de signal numérique (DSP), et un filtrage numérique. La figure 2 illustre un exemple de périphérique, un processeur de chiffrement. Avec un processeur de chiffrement, si un tampon de données doit être chiffré ou déchiffré, un logiciel divise le tampon de données, également appelé un message, en plusieurs parties. Chaque partie représente des données pouvant être traitées durant une période de traitement. Dès que ladite partie est entrée dans le processeur de chiffrement et/ou qu'un signal de lancement est appliqué, le périphérique commence à traiter ladite partie. Après une période de cycles d'horloge, la période de traitement se termine et le processeur de chiffrement délivre une partie chiffrée/déchiffrée qui peut être relue par le logiciel. Lorsque le traitement des données est terminé, la période nontraitement commence et un signal d'interruption peut être affirmé pour informer le microprocesseur que ladite partie est prête à être lue, et le processeur de chiffre-ment est prêt à chiffrer/déchiffrer une nouvelle partie. Une fois que la nouvelle partie est entrée dans le processeur de chiffrement et/ou qu'un signal de lancement est appliqué, la période non-traitement se termine et une nouvelle période de traitement commence. Le logiciel continue à lire et écrire des parties jusqu'à la fin du tampon de données. Lorsque l'algorithme utilisé par le processeur de chiffrement est exécuté, la consommation de courant due à la commutation des cellules numériques augmente lorsque le traitement commence et diminue lorsque le traitement se termine. Le courant croît à cause du fonc- tionnement des cellules combinatoires (par exemple des cellules AND, OR, INVERT, MUX et XOR) et séquentielles (des bascules de type D ou DFF) dans le module numérique qui exécute l'algorithme. Généralement durant une période de non-traitement le seul basculement est celui sur les broches d'horloge des DFF. Cette valeur associée à un courant de fuite statique n'est pas significative comparée au courant consommé lorsque le traitement est actif. Un module interface utilisateur 200 traite des données de système, par exemple des signaux d'adresse, de données, de lecture/écriture et de sélection, afin de générer des commandes et des données pour un module algorithme 202. Le module algorithme 202 procède à un chiffreinent/déchiffrement conformément à une instruction de commande, à des données et à une clé de chiffrement/déchiffrement fournies par le module interface utilisateur 200. Le périphérique 108 reçoit un signal de lancement de l'interface utilisateur 200 et organise le chemin des données dans le module algorithme 202. Certains algorithmes de chiffrement peuvent être représentés sous la forme d'une fonction combinatoire de base concaténée plusieurs fois pour obtenir le résultat. Par exemple, une fonction combinatoire de base est mise en oeuvre une fois et reliée à des moyens de mémorisation (DFF ou autres). Un multiplexeur est nécessaire pour sélectionner l'entrée de la fonction algorithme (entrée de données ou résultat intermédiaire) en fonction de la valeur n d'un module contrôleur (n étant le nombre d'itérations à exécuter afin d'obtenir le résultat, 16 par exemple selon la norme de cryptage des données (DES)). La norme de cryptage triple des données (TDES) utilise trois périodes de 16 itérations. Un contrôleur 204 reçoit un signal de lancement sur une ligne de lancement 206. Le signal de lancement déclenche un signal de premier cycle du contrôleur 204 jusqu'à un multiplexeur 208 du module algorithme 202. Le multiplexeur 208 reçoit le signal de premier cycle et sélectionne l'entrée d'une ligne de données d'entrée 210. Les données d'entrées vont alors au circuit combinatoire 212 qui, en combinaison avec une clé et un chiffre, manipule les données entrées. Un circuit combinatoire 212 commence le traitement à la réception du signal de premier cycle et des données d'entrée, commençant ainsi la période de traitement. Le circuit combinatoire 212 transmet les données d'entrées manipulées à un multiplexeur 213. Durant la période de traitement, le multiplexeur 213 reçoit un signal de période de traitement du contrôleur 204 et par conséquent sélectionne les données du circuit combinatoire 212. Le multiplexeur 213 transmet les don-nées d'entrée manipulées à une DFF 214, laquelle envoie alors les données manipulées à une sortie 216 ainsi qu'aux multiplexeurs 208 et 213. Pour les itérations ultérieures, aucun signal de premier cycle n'est transmis au multiplexeur 208, de sorte que le multiplexeur 208 sélectionne les données d'entrées manipulées depuis les DFF 214 et les envoie au circuit combinatoire 214, lequel manipule à nouveau les données d'entrée. Le contrôleur 204 conserve une trace de chaque itération et effectue un conserve une trace de chaque itération et effectue un dé-compte jusqu'à la dernière itération. À la dernière itération, le contrôleur 204 envoie un signal de dernier cycle au circuit combinatoire 212, indiquant la fin de la période de traitement. Le signal de période de traitement provenant du contrôleur 204 déclenche le multiplexeur 213 pour qu'il sélectionne l'entrée de la DFF 214 au lieu de celle du circuit combinatoire 212. La DFF 214 reçoit des données recyclées, qui à ce moment du cycle sont les don- nées de sortie désirées. Un signal d'interruption est envoyé du contrôleur 204 indiquant que les données disponibles à la sortie 216 sont une sortie désirée, de sorte que le module interface utilisateur 200 récupère les don-nées de sortie depuis la sortie 216 après qu'une inter- ruption ait été affirmée. À la fin de la période de traitement, le contrôleur 204 est réinitialisé et attend qu'une nouvelle séquence soit débutée. La figure 3 est un graphique il- lustrant un chronogramme et une forme d'onde de courant représentant l'activation du circuit combinatoire 212 durant la période de traitement. Lorsqu'un tampon de données est traité, la consommation de courant peut être vue comme une série d'impulsions. La période de niveau bas de cette forme d'onde représente la consommation de courant de l'arbre de l'horloge et de la broche d'horloge des DFF du module périphérique. La période de niveau élevé représente le courant de commutation du circuit combinatoire 212. En synchronisant un équipement analyseur numérique externe sur le bord ascendant des impulsions, il est possible de mémoriser une représentation numérique du courant. Ce modèle peut être traité pour extraire la valeur de "clé" de l'algorithme sans détruire le circuit intégré avec une attaque intrusive (le traitement du modèle est souvent désigné comme une attaque non-intrusive). Ceci est basé sur la différence de consommation de courant lorsque des données différentes sont traitées. De plus, de multiple formes d'onde peuvent être analysées les unes par rapport aux autres en utilisant une analyse de puissance différentielle. En comparant la valeur du courant à un stade donné de traitement, d'autres éléments clé de l'algorithme peuvent être extraits. La figure 3 illustre un signal d'horloge 300 et des données d'entrée 305. Les données d'entrée 305 sont disponibles sur la ligne de données d'entrée 210 (FIGURE 2) et représentent une partie du tampon de données d'entrée divisé. Un signal de lancement 310 est transmis le long de la ligne de lancement 206 et déclenche le commencement d'une période de traitement 315. Le contrôleur 204 décompte, dans ce cas de 15 jusqu'à zéro pour DES, avec une valeur d'intervalle 320. Un signal de premier cycle 325 se transmet du contrôleur 204, conjointe-ment au premier compte sur le contrôleur d'intervalle 320. Un signal de dernier cycle 330 se transmet du contrôleur 204 conjointement au dernier compte sur le contrôleur d'intervalle 320, et signale la fin de la période de traitement 315 et le lancement d'une période de non-traitement 335. Le circuit combinatoire 212 est commandé avec des données de commutation durant la période de traitement 315, utilisant plus de courant que pendant la période de nontraitement 335. Si une période d'horloge stable est utilisée pour planifier les différentes étapes du traitement de données, la période de traitement 315 peut être détectée ou observée par des procédés non-intrusifs comme l'analyse de la forme de la consommation de courant. Chaque fois que des données sont traitées, le courant augmente jusqu'à une plage active de courant, et ensuite diminue jusqu'à une plage inactive de courant durant la période de non-traitement 335. Une première forme d'onde 340 est comparée à une seconde forme d'onde 345. Par exemple, l'étape 2 sur 16 dans DES peut subir une analyse de puissance différen- tielle en comparant les niveaux de courant dans les deux formes d'onde. Par conséquent, il est possible de déterminer les données traitées à l'intérieur d'un circuit intégré. Il est nécessaire de disposer d'un système et d'un procédé pour rendre l'analyse de la consommation de courant plus difficile. Résumé de l'invention L'invention consiste à modifier, d'une manière aléatoire ou pseudo-aléatoire, le nombre de cycles d'horloge pendant lesquels un algorithme est exécuté. La pré-sente invention peut être utilisée dans tout circuit où des modules logiques numériques sont incorporés. La pré-sente invention se situe dans la partie numérique d'un circuit intégré. Lorsque des données sont traitées dans un module numérique, une logique combinatoire fonctionne et provoque une augmentation de la consommation d'éner- gie. L'augmentation de courant est principalement due à la commutation de cellules, en considérant uniquement la logique numérique. Le courant de fuite total des cellules est faible comparé à ce courant de commutation. Le système et le procédé remodèlent la consommation de courant afin de rendre plus difficile l'analyse du courant. Le remodelage du courant est effectué durant la période de traitement par un circuit combinatoire supplémentaire. Par exemple, plutôt que d'exécuter un algorithme DES en 16 cycles d'horloge sur chaque période de traitement, la présente invention accomplit l'algorithme DES sur 16 cycles d'horloge ou moins. Ceci augmente la difficulté d'extraire des valeurs de l'algorithme car chaque période de traitement peut avoir un nombre différent de cycles d'horloge durant lesquels l'algorithme est exécuté. L'étape 2 sur 16, par exemple, sera à deux positions différentes sur deux formes d'onde différentes et la superposition des formes d'onde ne livrera pas autant d'informations utiles que sur la figure 3. Brève description des dessins - La figure 1 est un schéma de l'art antérieur illustrant un microcontrôleur simplifié, - la figure 2 est un schéma de l'art antérieur illustrant un exemple de périphérique, - la figure 3 est un chronogramme de l'art an- térieur illustrant deux formes d'onde de courant superposées pour un périphérique de la figure 2, - la figure 4 est un schéma illustrant un mode de réalisation de l'invention dans un microcontrôleur, - la figure 5 est un schéma illustrant un mode de réalisation de l'invention d'après la figure 4, - la figure 6-1 est un chronogramme illustrant le fonctionnement de l'invention d'après la figure 5, - la figure 6-2 est un chronogramme illustrant le fonctionnement de l'invention d'après la figure 5, - la figure 7 est un chronogramme illustrant deux formes d'onde de courant superposées, - la figure 8 est un ordinogramme illustrant un procédé destiné à une période de traitement variable dans un module logique numérique, et - la figure 9 est un ordinogramme illustrant un procédé pourune période de traitement variable dans un module logique numérique. Description détaillée de l'invention La figure 4 est un schéma illustrant un mode de réalisation de l'invention dans un module logique numérique ou un périphérique d'un microcontrôleur. Un circuit de traitement 400 reçoit une entrée depuis une interface utilisateur 402 le long d'une ligne d'entrée 404. Un contrôleur 406 reçoit un signal de lancement le long d'une ligne de lancement 408 provenant de l'interface utilisateur 402. Le contrôleur 406 transmet un signal de premier cycle au circuit de traitement 400, qui commence une période de traitement. Durant une période de traite-ment, le circuit de traitement 400 manipule l'entrée afin de produire une sortie voulue, par exemple une version chiffrée ou déchiffrée de l'entrée. Du fait de la mani- pulation, par exemple la commutation de cellules logiques, le circuit de traitement 400 utilise une plage active de courant durant la période de traitement et une forme d'onde correspondante du courant sur la période peut être représentée. Le traitement est typiquement de seize cycles d'horloge pour un algorithme DES. L'invention est un pro-cédé et un système permettant de faire varier le nombre réel de cycles d'horloge sur lesquels la partie de don- nées d'un tampon est manipulée. Dans un mode de réalisa- tion, à la fin des manipulations, le contrôleur 406 transmet un signal de dernier cycle au circuit de traite-ment 400 et l'entrée manipulée est prête à un port de sortie 410 en tant que sortie. La fin de la période de traitement est le lancement de la période de non-traitement. Un signal de premier cycle et un signal de dernier cycle, qui sont prédéterminés dans un algorithme DES, sont utilisés pour un traitement spécial, et l'homme du métier reconnaîtra que ces signaux peuvent être localisés et/ou commandés différemment dans d'autres modes de réalisation sans affecter la nature de l'invention. La période de traitement entière ne sera pas nécessaire pour achever la manipulation d'un bloc de don-nées pour de nombreux blocs de données. Dans un mode de réalisation, le circuit de traitement 400 inclut des circuits combinatoires 412 connectés à un multiplexeur 414. Le multiplexeur 414 reçoit une entrée depuis la ligne d'entrée 404. Si le mul- tiplexeur 414 reçoit également un signal de premier cycle du contrôleur 406, alors le multiplexeur 414 sélectionne l'entrée depuis la ligne d'entrée 404 et l'envoie à un circuit combinatoire 412-1. Le circuit combinatoire 412-1 manipule l'entrée et délivre l'entrée manipulée à un cir- cuit combinatoire 412-2 ainsi qu'au multiplexeur 416. Le circuit combinatoire 412-2 reçoit l'entrée manipulée du circuit combinatoire 4121, la manipule et l'envoie également au multiplexeur 416. Au début de la période de traitement, le multiplexeur 416 reçoit une entrée qui re- flète les première et deuxième étapes par exemple de l'algorithme DES. Chaque manipulation peut provenir du circuit combinatoire 412-1, tandis que chaque manipulation consécutive à une première manipulation peut provenir du circuit combinatoire 412-2, en fonction de l'entrée d'un nombre aléatoire reçue par le contrôleur 406. La deuxième étape, ou chaque étape consécutive de l'algorithme DES, découle du circuit combinatoire 412-2. Dans un mode de réalisation, le circuit combinatoire 412-1 reçoit un signal de premier cycle et un signal de dernier cycle. Le signal de premier cycle et le signal de dernier cycle commandent le flux de données durant la période de traitement et indiquent un traitement spécial pour un algorithme DES. Dans un mode de réalisation, le circuit combinatoire 412-2 assure la même fonction que le circuit combinatoire 412-1. Un circuit de sélection, ou un multiplexeur 416, reçoit une entrée manipulée des circuits combinatoires 412. Le multiplexeur 416 reçoit un signal de sélec- tion du contrôleur 406 indiquant lequel des deux signaux le multiplexeur 416 dirige vers sa sortie. Le contrôleur 406 suit les manipulations déjà traitées et les signaux de sélection générés. Le contrôleur 406 génère en outre des signaux de sélection basés sur les manipulations né- cessaires restantes et une entrée de nombre aléatoire. Par exemple, si les circuits combinatoires 412-1 et 412-2 ont une entrée manipulée aux étapes 15 et 16 dans le cycle DES, respectivement, alors le signal de sélection au multiplexeur 416 sélectionne l'entrée manipulée du cir- cuit combinatoire 412-2 et le traitement de manipulation pour les données déterminées est achevé. La fin de la manipulation des données déterminées peut avoir lieu au huitième cycle d'horloge de l'algorithme de traitement à seize cycles, au neuvième, au dixième et ainsi de suite, jusqu'au seizième cycle. Le point auquel la manipulation se termine dépend de la combinaison de signaux aléatoires reçus par le contrôleur 406. Par exemple, si le contrôleur 406 reçoit des signaux aléatoires indiquant 1 manipulation par cycle d'horloge pour la période de traite- ment entière, alors la manipulation se termine après seize cycles d'horloge. À l'instant approprié, le contrôleur 406 peut envoyer un signal de dernier cycle à l'un ou l'autre des circuits combinatoires 412, pour un traitement spécial requis par l'algorithme DES. Un circuit de mémorisation 420 est connecté au multiplexeur 416 et reçoit une entrée du multiplexeur 416. Le circuit de mémorisation 420 dirige l'entrée du multiplexeur 416 vers le multiplexeur 414 et le port de sortie 410 jusqu'à ce que la manipulation d'une partie du tampon de données soit achevée. Le circuit de mémorisation 420 reçoit un signal de sélection du contrôleur 406 indiquant que la manipulation est achevée et le circuit de mémorisation 420 doit mémoriser les données récemment reçues du multiplexeur 416. Le circuit de mémorisation 420 conserve les données pendant la période de non-traitement et les transmet au port de sortie 410 ainsi qu'au multiplexeur 414. Au début de la période de traitement suivante, un signal de traitement peut indi- quer que le circuit de mémorisation 420 doit cesser la mémorisation et recommencer à transmettre toute entrée qu'il reçoit. Le circuit de mémorisation 420 délivre la partie manipulée du tampon de données au port de sortie 410 jusqu'à la période de traitement suivante et réception par le circuit de traitement 400 d'une nouvelle partie du tampon de données. Dans un mode de réalisation, le circuit de mémorisation 420 inclut un multiplexeur 422 et une DFF 424. Le multiplexeur 422 reçoit une entrée des DFF 424 et du multiplexeur 416. Une fois que le multiplexeur 422 reçoit un signal haut actif du contrôleur 406, le multiplexeur 422 sélectionne l'entrée du multiplexeur 416 et l'envoie aux DFF 424. Les DFF 424 rendent l'entrée du multiplexeur 422 disponible au port de sortie 410 et au multiplexeur 414. Jusqu'à ce que le multiplexeur 422 reçoive un signal de traitement, les mêmes données vont aller et venir entre le multiplexeur 422 et les DFF 424. Le signal de traitement est inactif lorsque le circuit de traitement 400 a fini la manipulation d'une partie déterminée du tampon de données. Les données allant et venant entre le multiplexeur 422 et les DFF 424 sont rendues disponibles et lues au port de sortie 410, parfois durant la période de non-traitement. Le signal de traitement bascule le multiplexeur 422 pour sélectionner l'entrée du multiplexeur 416 au début d'une nouvelle période de traite-ment. La figure 5 est un schéma illustrant un mode de réalisation plus détaillé de l'invention de la figure 4. Un mode de réalisation du contrôleur 406 est le contrôleur 500. Le contrôleur 500 est un exemple d'un circuit configuré pour suivre le traitement ainsi que le nombre d'étapes dans la manipulation de chaque tampon de don- nées. L'homme du métier reconnaîtra que différents circuits et logiques peuvent remplacer le contrôleur 500 et assurer une fonction similaire. Le contrôleur 500 délivre un signal de commande au circuit de traitement 410 indiquant si une ou deux étapes de manipulation seront accom- plies dans un cycle d'horloge donné. Le contrôleur 500 reçoit un signal de réinitialisation et réinitialise son compte, dans un exemple le compte est égal à 16 pour un algorithme DES par consé- quent le contrôleur 500 décompte de 15 jusqu'à zéro. Le contrôleur 500 inclut un multiplexeur 505 qui reçoit un signal de lancement, par conséquent, à la réception du signal de réinitialisation et du signal de lancement, le contrôleur 500 transmet un signal de premier cycle et réinitialise ses DFF. Le signal de lancement fait sélec- tionner au multiplexeur 505 à l'entrée ayant une valeur de 15, dans le cas d'un algorithme DES. La valeur de 15 est transmise à des DFF 510, qui ensuite conservent et transmettent la valeur à des soustracteurs 515 et à un compteur 527. De plus, le signal de lancement conduit la DFF 520 à être réinitialisée et initialise le compteur à une valeur de 15. Lorsque la DFF 520 est réinitialisée, le signal de traitement indique que le circuit de mémorisation 420 (voir figure 4) doit transmettre les données qu'il reçoit plutôt que les données mémorisées. Un soustracteur 515-1 soustrait un de l'entrée ainsi, à la réception d'une valeur de 15, le soustracteur 515-1 délivre en sortie une valeur de 14. Un soustracteur 515-2 soustrait deux de l'entrée ainsi, à la réception d'une valeur de 15, le soustracteur 515-2 délivre en sortie une valeur de 13. Un décodeur 525 reçoit l'entrée des DFF 510 (via un compteur 527) et un circuit de décodage 530. Le décodeur 525 reçoit un signal du circuit de décodage 530, lequel décodeur 525 décode et indique s'il doit traiter deux étapes ou une étape de manipulation dans un cycle d'horloge donné. Le circuit de décodage 530 reçoit un nombre aléatoire d'un générateur de nombres aléatoires et envoie, dans un mode de réalisation, un signal à un bit au décodeur 525. Le décodeur 525 reçoit le compte et transmet le signal de premier cycle avec un compte de 15, par exemple. Le décodeur 525 reçoit le compte par l'in- termédiaire du circuit de décodage 530. Sur la base du signal du circuit de décodage 530, le circuit de décodage envoie un signal de sélection à un multiplexeur 535 et au circuit de traitement 400. Le signal de sélection va déterminer si le multiplexeur 535 sélec tionne l'entrée du soustracteur 515-1 ou du soustracteur 515-2. D'une manière similaire, le signal de sélection va faire choisir au multiplexeur 416 entre les entrées des deux circuits combinatoires 412. La sélection du sous- tracteur 515-1 correspond à la sélection du circuit combinatoire 412-1, et la sélection du soustracteur 515-2 correspond à la sélection du circuit combinatoire 412-2. Par exemple, le compte dans le contrôleur 500 va se décrémenter de un avec la sélection du soustracteur 515-1 et du circuit combinatoire 412-1, indiquant qu'une étape a été exécutée dans un cycle d'horloge. De manière alter-native, le compte dans le contrôleur 500 va se décrémenter de deux avec la sélection du soustracteur 515-2 et du circuit combinatoire 412-2, indiquant que deux étapes ont été exécutées pendant un cycle d'horloge. Le compte décrémenté du multiplexeur 535 est transmis au multiplexeur 505, lequel sélectionne le compte décrémenté dans le cycle d'horloge suivant, lors- que le signal de lancement n'indique plus le lancement d'une période de traitement. Le processus de décrémentation continue avec la sélection aléatoire d'une ou de deux étapes par cycle d'horloge. Presque à la fin de la manipulation, le décodeur 527 peut indiquer un compte égal à un (ce qui signifie qu'il reste deux manipulations des données). Il existe deux possibilités. Dans la première, le décodeur 525 reçoit un nombre aléatoire indiquant que deux manipulations doivent être effectuées durant le cycle d'horloge, ensuite le dé-codeur 525 envoie un signal de dernier cycle au circuit combinatoire 412-2 et efface la DFF 520. La DFF 520 en-voie un signal de traitement au circuit de traitement 400 indiquant que le traitement est terminé et que les don- nées à recevoir doivent être sauvegardées. Dans la seconde, le décodeur 525 reçoit un nombre aléatoire indiquant qu'une manipulation doit être effectuée durant le cycle d'horloge. La manipulation est effectuée et au cycle d'horloge suivant, lorsqu'une seule étape reste dans le cycle, c'est-à-dire que la DFF 510 transmet un compte de zéro, alors la DFF 520 est effacée et elle envoie le signal de traitement au circuit de traitement 400. Le décodeur 525 envoie un signal de der- nier cycle au circuit combinatoire 412-1 et la dernière étape du cycle est accomplie. Selon cet exemple, seize étapes de traitement ont eu lieu durant les huitième à seizième cycles d'hor- loge. Comme décrit ci-dessus, après la dernière étape de traitement, la DFF 520 envoie le signal de traitement et la valeur finale est rendue disponible au port de sortie 410. La figure 6-1 est un chronogramme illustrant le fonctionnement de l'invention des figures 4 et 5. Par exemple, au début d'une période de traitement de seize cycles d'horloge 600 pour l'algorithme DES, le multiplexeur 414 reçoit des données d'entrée 605. Le multi- plexeur 505 reçoit un signal de lancement 610 et sélectionne une entrée d'une valeur de quinze. Un signal de traitement 615 indique au circuit de traitement 400 que pendant que le traitement est en cours, la mémorisation ne doit pas avoir lieu. Dans cet exemple, une entrée aléatoire décodée 617 est affirmée indiquant 2 itérations, ou manipulations, pendant un seul cycle d'horloge. Le décodeur 525 reçoit une entrée aléatoire décodée 617 indiquant que deux étapes doivent avoir lieu dans un cycle d'horloge 615 et par conséquent transmet un signal de sélection 620 déclenchant une décrémentation de deux étapes dans un cycle d'horloge. Le contrôleur 500 décrémente le compte de 15 à 13 dans un compteur 635 tandis que lemultiplexeur 416 sélectionne la sortie du circuit combinatoire 412-2. Le contrôleur 500 transmet également un signal de premier cycle 620 au circuit de traitement 400. Des résultats intermédiaires 630 sont disponibles au port de sortie 410 tandis que la valeur du comp- teur 635 décrémente jusqu'à un. Une fois le compteur 635 à un, le décodeur reçoit une entrée aléatoire de décodeur 619, indiquant une décrémentation de deux, par conséquent le signal de sélection 620 est affirmé et un signal de dernier cycle 635 est envoyé au circuit combinatoire 412-2 pour un traitement spécifique. Au cycle d'horloge suivant, le signal de traitement 615 indique que le circuit de mémorisation 420 doit maintenant mémoriser la va-leur reçue et des données de sortie 640 sont disponibles au port de sortie 410. Dans cet exemple, neuf cycles d'horloge se sont écoulés pendant le traitement des don-nées d'entrée. La figure 6-2 est un chronogramme illustrant le fonctionnement de l'invention des figures 4 et 5. Les différences entre la figure 6-1 et la figure 6-2 vont être décrites. Lorsque un compteur 650 est à un, le décodeur 525 reçoit une entrée aléatoire décodée 655 indiquant 1 itération ou manipulation dans un cycle d'horloge. Au cycle d'horloge suivant, le décodeur 525 reçoit une entrée aléatoire décodée 660 indiquant deux itérations dans un cycle d'horloge. Cependant, comme le compteur 650 indique zéro (une itération restante), les deux itérations sont ignorées par le décodeur 525 et le der-nier cycle effectue une itération. Un signal de dernier cycle 665 est affirmé au circuit combinatoire 412-1. 2861474 18 La figure 7 est un chronogramme illustrant deux formes d'onde de courant superposées. La forme d'onde 700-1 formée sur la période de traitement 710 dure par exemple seize cycles d'horloge complets. La forme d'onde 700-2 a été formée sur un certain nombre de cycles d'horloge inférieur à seize. La comparaison des formes d'onde 700 en un point quelconque, par exemple au point 720, ne procure pas autant d'informations utiles que dans la technique antérieure. La forme d'onde 700-1 peut se trou-ver à l'étape six du cycle DES tandis que la forme d'onde 700-2 peut se trouver à l'étape treize du cycle DES par exemple. Quelques informations utiles peuvent être obtenues en comparant les formes d'onde de cette manière du fait qu'elles se trouvent dans des étapes différentes du cycle DES et une comparaison point à point des formes d'onde ne donne pas de corrélation. Une période de non-traitement 730 suit une période de traitement 710. La figure 8 est un ordinogramme illustrant un procédé pour une période de traitement variable dans un module logique numérique. Dans le bloc 800, recevoir une entrée. Dans le bloc 810, manipuler l'entrée dans le circuit de traitement durant N cycles d'horloge, N étant un nombre entier définissant chacune d'une pluralité de périodes de traitement. Dans le bloc 820, affecter une va-leur de L à un compte, L étant un nombre entier correspondant au nombre de fois où l'entrée est manipulée pour de créer la sortie. Dans le bloc 830, décrémenter le compte d'une valeur supérieure ou égale à un sur un cycle d'horloge. Dans le bloc 840, achever les L manipulations de l'entrée pendant N cycles d'horloge, N étant un nombre entier inférieur ou égal à L, où N varie d'une manière aléatoire sur chacune de la pluralité de périodes de traitement. Dans le bloc 850, suivre la valeur du compte initialisé à L, où L est un nombre entier, et de N, à l'aide d'un contrôleur, le contrôleur étant couplé au circuit de traitement. Dans le bloc 860, rendre disponible une sortie au port de sortie, où la sortie est l'en- trée manipulée pendant N cycles d'horloge. La figure 9 est un ordinogramme illustrant un procédé pour une période de traitement variable dans un module logique numérique. Dans le bloc 900, recevoir une première entrée. Dans le bloc 910, suivre une première période de traitement. Dans le bloc 920, manipuler la première entrée durant la première période de traitement. Dans le bloc 930, achever la manipulation de la première entrée. Dans le bloc 940, recevoir une seconde entrée. Dans le bloc 950, suivre une seconde période de traite-ment, où la seconde période de traitement a une durée différente de la première période de traitement. Dans le bloc 960, manipuler la seconde entrée durant la seconde période de traitement. Dans le bloc 970, achever la mani- pulation de la seconde entrée, les durées de manipulation des première et seconde entrées étant différentes sans cycles d'horloge factices. L'homme du métier reconnaîtra que plusieurs circuits combinatoires ou circuits analogues à un circuit combinatoire peuvent être utilisés dans un circuit de traitement sans s'écarter de la présente invention. Avec plus de circuits, moins de cycles d'horloge seront nécessaires pendant une période de traitement. De plus, l'algorithme DES est utilisé à titre d'exemple, la pré-sente invention n'est pas limitée à DES. Tout homme du métier reconnaîtra d'après la précédente description et d'après les figures et les revendications que des modifications et des changements peuvent être réalisés sur l'invention sans s'écarter de la portée de l'invention définie dans les revendications suivantes. REVENDICATIONS 1. Système pour modifier la période de traite-ment dans un module logique numérique comprenant: un circuit de traitement configuré pour recevoir une entrée, manipuler l'entrée L fois, où L est un nombre entier, afin de créer une sortie, un contrôleur couplé au circuit de traitement et configuré pour suivre le nombre de manipulations du circuit de traitement, envoyer un signal de sélection au circuit de traitement, et faire créer au circuit de traitement la sortie sur N cycles d'horloge, où N est un nombre entier, N est inférieur ou égal à L et N varie, et un port de sortie couplé au circuit de traite-ment et configuré pour transférer la sortie. 2. Système selon la revendication 1, dans le-quel la variation de N est aléatoire. 3. Système selon la revendication 1, le circuit de traitement comprenant en outre: un premier circuit combinatoire configuré pour recevoir et manipuler l'entrée et produire une première sortie intermédiaire, un second circuit combinatoire couplé au premier circuit combinatoire et configuré pour recevoir et manipuler la première sortie intermédiaire et produire une seconde sortie intermédiaire, et un circuit de sélection couplé au second circuit combinatoire et configuré pour recevoir le signal de sélection et sélectionner la première sortie intermédiaire ou la seconde sortie intermédiaire sur la base du signal de sélection. 4. Circuit selon la revendication 3, dans le-quel le premier circuit combinatoire et le second circuit combinatoire sont configurés pour manipuler des données de la même manière. 5. Circuit selon la revendication 3, dans le-quel le premier circuit combinatoire et le second circuit combinatoire sont configurés pour manipuler des données de la même manière excepté durant une manipulation prédéterminée de chacune de la pluralité de périodes de traitement où le premier circuit combinatoire est configuré pour manipuler des données d'une manière différente du second circuit combinatoire. 6. Système selon la revendication 3, comprenant en outre: un circuit de mémorisation couplé au circuit de sélection et configuré pour recevoir un signal de traite-ment et recevoir des données du circuit de sélection, le circuit de mémorisation étant en outre configuré pour mémoriser des données reçues du circuit de sélection sur la base du signal de traitement. 7. Système selon la revendication 6, dans le-quel le signal de sélection coïncide approximativement avec la fin d'une période de la pluralité de périodes de traitement. 8. Système selon la revendication 6, dans le-quel le circuit de mémorisation comprend en outre: un multiplexeur couplé au circuit de sélection et configuré pour recevoir des données du circuit de sélection, et une bascule couplée au multiplexeur et au port de sortie et configurée pour mémoriser des données reçues du multiplexeur, la bascule étant configurée pour transmettre des données au multiplexeur et au port de sortie. 9. Système selon la revendication 1, comprenant en outre: une ligne de lancement couplée au contrôleur et configurée pour transférer un signal de lancement au contrôleur lorsque l'entrée est disponible au circuit de traitement, dans lequel le signal de lancement déclenche le début de chacune de la pluralité de périodes de traitement, et une ligne d'interruption couplée au contrôleur et configurée pour transférer un signal d'interruption du contrôleur lorsque la sortie est disponible au port de sortie, dans lequel le signal d'interruption coïncide avec la fin de chacune de la pluralité de périodes de traitement et le début de chacune d'une pluralité de périodes de non-traitement, chacune des périodes de non-traitement suivant une période de la pluralité de périodes de traitement. 10. Système selon la revendication 1, le contrôleur comprenant en outre: un soustracteur configuré pour recevoir une va-leur de comptage et décrémenter la valeur de comptage de un ou plus de un, et un décodeur couplé au soustracteur et configuré pour générer un signal de dernier cycle correspondant à la fin de chacune de la pluralité de périodes de traite-ment. 11. Système selon la revendication 10, dans le-quel le décodeur est configuré pour décoder la valeur de comptage sur la base d'un nombre généré de manière aléatoire. 12. Système selon la revendication 10, dans le-quel la valeur initiale du compte est égale au nombre de fois où l'entrée est manipulée sur N cycles d'horloge. 13. Système selon la revendication 10, dans le-20 quel le décodeur est configuré pour générer le signal de sélection. 14. Système selon la revendication 1, dans le-quel la variation de N est prédéterminée. 15. Procédé pour modifier le nombre de manipulations dans un cycle d'horloge d'un module logique numérique ayant un circuit de traitement couplé à un port de sortie, le procédé comprenant les étapes: recevoir une entrée, manipuler l'entrée du circuit de traitement durant N cycles d'horloge, N étant un nombre entier défi- 10 15 nissant chacune d'une pluralité de périodes de traite-ment, achever L manipulations de l'entrée sur N cy- cles d'horloge, N étant un nombre inférieur ou égal à L, dans lequel N varie sur chacune de la pluralité de périodes de traitement, et rendre une sortie disponible au port de sortie, dans lequel la sortie est l'entrée manipulée sur N cycles d'horloge. 16. Procédé selon la revendication 15, dans le-quel N varie d'une manière aléatoire. 17. Procédé selon la revendication 15, comprenant en outre l'étape: suivre la valeur de N à l'aide d'un contrôleur, 20 le contrôleur étant couplé au circuit de traitement. 18. Procédé selon la revendication 17, comprenant en outre les étapes. attribuer une valeur de comptage, la valeur de comptage étant un nombre entier correspondant au nombre de fois où l'entrée est manipulée pour créer la sortie, et décrémenter le compte d'une valeur supérieure ou égale à un sur un seul cycle d'horloge. 19. Procédé pour modifier le nombre de manipulations dans un cycle d'horloge d'un module logique numé- rique ayant un circuit de traitement couplé à un port de sortie, le procédé comprenant les étapes: recevoir une première entrée, suivre une première période de traitement, manipuler la première entrée durant la première période de traitement, et achever la manipulation de la première entrée avant la fin de la première période de traitement. 20. Procédé selon la revendication 19, comprenant en outre les étapes: recevoir une seconde entrée, suivre une seconde période de traitement, dans lequel la seconde période de traitement a la même durée 20 que la première période de traitement, manipuler la seconde entrée durant la seconde période de traitement, et achever la manipulation de la seconde entrée avant la fin de la seconde période de traitement, les du-rées de manipulation des première et seconde entrées étant différentes. 21. Système pour modifier la période de traite- ment dans un module logique numérique, comprenant: un circuit de traitement configuré pour recevoir une entrée afin de créer une sortie, un contrôleur couplé au circuit de traitement et configuré pour suivre N cycles d'horloge, où N est un nombre entier, N cycles d'horloge définissant chacune d'une pluralité de périodes de traitement, le contrôleur étant en outre configuré pour envoyer un signal de sélection au circuit de traitement et pour faire manipuler au circuit de traitement l'entrée sur N cycles d'horloge, où N est un nombre entier et N est inférieur ou égal à L, L étant le nombre de manipulations nécessaires pour achever un algorithme de traitement, et un port de sortie couplé au circuit de traite-ment et configuré pour transférer la sortie.