Brevet FR2771525A1 — publié le 19990528

Procédé de production d'un paramètre de correction d'erreur associé à la mise en oeuvre d'opération modulaire selon la méthode de Montqomery. L'invention concerne un procédé de production d'un paramètre de correction d'erreur associé à la mise en oeuvre d'opération modulaire selon la méthode de Montgomery. Cette méthode permet d'effectuer des calculs modulaires dans un corps fini GF(2n) (corps de Gallois) sans effectuer de divisions. Classiquement, les opérations modulaires sur GF(2n) sont utilisées en cryptographie pour des applications telles que l'authentification de messages, l'identification d'un utilisateur et l'échange de clés. De tels exemples d'applications sont décrits par exemple dans un document D1 correspondant à la demande de brevet français publiée sous le numéro 2 679 054. On trouve dans le commerce des circuits intégrés dédiés à de telles applications, par exemple le produit fabriqué par SGS-THOMSON MICROELECTRONICS S.A. et référencé ST16CF54, bâti autour d'une association de type unité centrale - coprocesseur arithmétique, et dédié à la mise en oeuvre de calculs modulaires. Le coprocesseur utilisé permet de traiter des opérations modulaires, en utilisant la méthode de Montgomery. D'autres renseignements sur ce coprocesseur se trouve dans la demande de brevet européen EP-A-0 601 907 que l'on appellera document D2 par la suite, et est illustré figure 1 (cette figure correspondant à la figure 2 de la demande de brevet européen citée). L'opération de base des calculs modulaires selon la méthode de Montgomery, dite Pfield consiste, à partir de trois données binaires A (multiplicande), B (multiplieur) et N (modulo), codées sur un nombre entier n de bits, à produire une donnée binaire notée P(A, B)N codée sur n bits, telle que P(A, B)N = A * B * I mod N, I étant une erreur due à la méthode de Montgomery. La méthode de Montgomery utilise une base de calcul de k bits et décompose les mots de n bits en m mots de k bits tels que m * k g n > (m - 1) * k. La méthode de Montgomery se déroule ainsi, i étant un indice variant de 0 à m - 1: X = Si + Ai * B, Y0 = (X * J0) mod 2k, Z = X + (N * Y0) Si+1 = Z \ 2k, \ étant une division entière, si Si+l est supérieur à N alors on soustrait N à 5i+l à la prochaine itération, Ai correspondant à un mot de k bits de la décomposition de A, Si correspondant à un résultat actualisé de l'opération Pfield et Sm = P(A, B)N = A * B * I mod N. Pour réaliser une multiplication modulaire A * B mod N, il est nécessaire de supprimer l'erreur I. Cette erreur I est connue et elle vaut 2 m k. Pour la supprimer, on réalise une deuxième opération Pfield: P (SmE H)N, H étant une donnée binaire codée sur m mots de k bits et valant 22m*k mod N. La production d'un paramètre H peut se faire par soustractions successives à l'aide d'un coprocesseur de calcul tel que celui décrit dans le document D2. Il est également possible de combiner soustractions successives et opérations Pfield pour réaliser le calcul de H comme indiqué dans le document EP-A-O 712 070 (par la suite D3). Lorsque l'on effectue des multiplications modulaires avec des données de taille variable, la valeur de H peut prendre diverses valeurs comme expliqué dans le document EP-A-712 071 (par la suite D4) en fonction des tailles de A, B et N. D'une manière générale H est de la forme 2x mod N, x et N étant des entiers non nuls. De plus, le coprocesseur est utilisé également pour effectuer des calculs sur des opérandes de taille supérieure à la taille maximum des registres du coprocesseur. Le document EP-A-0 785 502 (par la suite D5) montre une évolution du circuit de soustraction successive pour traiter des valeurs de N d'une taille double de celle des registres du coprocesseur. L'invention propose un nouveau circuit de calcul pour réaliser les soustractions successives qui réalise le même calcul deux fois plus vite. L'invention a pour objet un coprocesseur d'arithmétique modulaire comportant un circuit de calcul d'un paramètre de correction d'erreur H = 2x mod N associé à la méthode de Montgomery, x et N étant des entiers non nuls, le circuit de calcul comportant un premier registre à décalage pour contenir des valeurs intermédiaires de H et un deuxième registre pour contenir N, le circuit de calcul comportant en outre des premiers moyens pour soustraire en série au contenu du premier registre soit zéro, soit N, soit deux fois N, soit trois fois N, un circuit de multiplication pour multiplier le résultat fournit par les premiers moyens par quatre, et des deuxièmes moyens pour déterminer si le résultat fournit par le circuit de multiplication est supérieur ou inférieur à N, à deux fois N, et à trois fois N. Préférentiellement, le circuit de calcul comporte en outre des troisièmes moyens pour produire deux fois N et trois fois N. Le circuit de calcul peut comporter en outre des troisième et quatrième registres de K bits pour traiter des données de taille double de celle des registres. L'invention a également pour objet un procédé de production d'un paramètre de correction d'erreur H = 2x mod N associé à la méthode de Montgomery, x et N étant des entiers non nuls, dans un coprocesseur d'arithmétique modulaire dans lequel: on mémorise une valeur intermédiaire de H dans un premier registre; on mémorise N dans un deuxième registre; on soustrait en série au contenu du premier registre soit zéro, soit N, soit deux fois N, soit trois fois N; on multiplie le résultat de la soustraction par quatre pour obtenir une nouvelle valeur intermédiaire de H; et on compare la nouvelle valeur intermédiaire de H à N, à deux fois N, et à trois fois N. Préférentiellement, on produit en permanence deux fois N et trois fois N à partir de N. Diverses variantes de l'invention sont possibles afin de répondre aux différents cas qui se présentent et peut être combinée aisément avec les enseignement des document D2 à D5. L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels: la figure 1 représente un coprocesseur d'arithmétique modulaire selon l'art antérieur; la figure 2 représente un circuit pour réaliser des soustractions successives selon l'invention; la figure 3 représente une variante de l'invention pour réaliser des calculs sur une taille de mot supérieure à la taille des registres du coprocesseur; la figure 4 représente un coprocesseur d'arithmétique modulaire modifié selon l'invention. La figure 1 représente un coprocesseur d'arithmétique modulaire selon D2. Le coprocesseur comporte: trois registres à décalage 10, 11 et 12 à entrée et sortie série. Ces registres comportent chacun un même nombre K de cellules, avec K = m * k. Ces registres pourront être subdivisables, par exemple en registres de K/2 cellules, et en registres de k bits pour les registres 10 et 12. - des multiplexeurs 13, 14 et 15 sont placés respectivement devant les registres 10, 11 et 12. On placera également des multiplexeurs devant les subdivisions si celles ci existent. trois registres 16, 17 et 18 comportant chacun k cellules. Les registres 16, 17 et 18 sont des registres à sortie parallèle et entrée série. - deux circuits de multiplication 19 et 20 comprenant chacun une entrée série, une entrée parallèle et une sortie série. L'entrée parallèle du circuit de multiplication 19 est reliée à la sortie du registre 16 par le biais d'une bascule de mémorisation 21 de k cellules. L'entrée parallèle du circuit de multiplication 20 est reliée à l'une des sorties des registres 17 ou 18, par le biais d'une bascule de mémorisation 22 de k cellules. Cette bascule 22 est elle-même reliée à l'une des sorties des registres 17 et 18, par le biais d'un multiplexeur à deux entrées parallèles et une sortie parallèle. - des multiplexeurs 24, 25, 26, 36, 37 et 38. - un démultiplexeur 39. - des circuits de soustraction série 27, 28 et 29. - des circuits d'addition série 30 et 31. - des circuits de retardement 32, 33 et 34 pour retarder de k temps de cycle la propagation de données binaires. - un circuit de mémorisation 35 de stockage de résultat de comparaison. Pour plus de détails sur la réalisation et le fonctionnement de ce circuit, l'homme du métier peut se reporter au document D2. La figure 2 représente un circuit de soustraction successive de l'invention pour réaliser le calcul du paramètre de correction d'erreur H = 2x mod N. Le circuit de soustractions successives de la figure 2 comporte: - des premier et deuxième registres 201 et 202 à décalage de K bits chacun, et ayant chacun une entrée série et une sortie série, l'entrée du deuxième registre 202 étant connectée à sa sortie; - un premier circuit de soustraction 203 ayant des première et deuxième entrées séries et une sortie série, la première entrée étant connectée à la sortie du premier registre 201; - un premier multiplexeur 204 ayant quatre entrées de données, une entrée de bus de sélection, et une sortie, la sortie étant connectée à la deuxième entrée du premier circuit de soustraction 203, la première entrée de données recevant en permanence un "zéro" logique, la deuxième entrée de données étant connectée à la sortie du deuxième registre 202; - des premier, deuxième et troisième circuits de retard 205 à 207 ayant chacun une entrée série et une sortie série, chaque circuit de retard 205 à 207 retardant les données d'un cycle d'horloge entre l'entrée et la sortie et pouvant être remis à zéro à l'aide de moyens non représentés (l'homme du métier utilisera par exemple des bascules synchrones de type D avec entrée de remise à zéro), l'entrée du premier circuit de retard 205 étant connectée à la sortie du deuxième registre 202, la sortie du premier circuit de retard 205 étant connectée à la troisième entrée de données du premier multiplexeur 204, et l'entrée du deuxième circuit de retard 206 étant connectée à la sortie du premier circuit de soustraction 203; - un deuxième multiplexeur 208 ayant des première et deuxième entrées et une sortie, la première entrée étant connectée à la sortie du premier circuit de soustraction 203, la deuxième entrée étant connectée à la sortie du deuxième circuit de retard 206, et la sortie étant connectée à l'entrée du troisième circuit de retard 207; - un circuit d'addition 209 série ayant des première et deuxième entrées séries et une sortie série, la première entrée étant connectée à la sortie du premier circuit de retard 205, la deuxième entrée étant connectée à la sortie du deuxième registre 202, et la sortie étant connectée à la quatrième entrée de données du premier multiplexeur 204; - des deuxième, troisième et quatrième circuits de soustraction 210 à 212 série ayant chacun des première et deuxième entrées séries et une sortie série, la première entrée de chacun des deuxième à quatrième circuits de soustraction 210 à 212 étant connectée à la sortie du troisième circuit de retard 207; - un circuit de décodage 213 ayant trois entrées et une sortie de bus de sélection, les trois entrées étant respectivement connectées aux sorties des deuxième à quatrième circuits de soustraction 210 à 212, et la sortie de bus étant connectée à l'entrée de bus du premier multiplexeur 204; - des quatrième à huitième circuits de retard 214 à 218 identiques aux premier à troisième circuits de retard 205 à 207, l'entrée du quatrième circuit de retard 214 étant connectée à la sortie du troisième circuit de retard 207, la sortie du quatrième circuit de retard 214 étant connectée à l'entrée du cinquième circuit de retard 215, la sortie du cinquième circuit de retard 215 étant connectée à l'entrée du premier registre 201, l'entrée du sixième circuit de retard 216 étant connectée à la sortie du deuxième registre 202, l'entrée du septième circuit de retard 217 étant connectée à la sortie du premier circuit de retard 205, l'entrée du huitième circuit de retard 218 étant connectée à la sortie du circuit d'addition 209, la sortie du sixième circuit de retard 216 étant connectée à la deuxième entrée du deuxième circuit de soustraction 210, la sortie du septième circuit de retard 217 étant connectée à la deuxième entrée du troisième circuit de soustraction 211, la sortie du huitième circuit de retard 218 étant connectée à la deuxième entrée du quatrième circuit de soustraction 212. Pour réaliser les circuits de soustraction, d'addition, et les registres, l'homme du métier peut par exemple se reporter au document D2. Fonctionnellement, le premier registre 201 sert à mémoriser les différentes valeurs intermédiaires du calcul de H, le poids faible étant rangé vers la sortie. Le deuxième registre 202 sert à mémoriser le modulo N, le poids faible étant rangé vers la sortie. Dans l'exemple décrit, les données sont rangées dans les premier et deuxième registres 201 et 202 avec le bit de poids le plus faible près de la sortie et le bit de poids le plus fort vers l'entrée. Le premier circuit de retard 205 reçoit N et produit deux fois N. Le circuit d'addition 209 additionne N et deux fois N pour obtenir trois fois N. Le premier circuit de retard 205 et le circuit d'addition 209 sont à considérer comme des moyens pour produire deux fois N et trois fois N à partir de N. L'homme du métier remarquera que si l'on utilise un circuit d'addition 209 comme décrit dans D2, un retard est créé en sortie ce qui désynchronise d'un cycle d'horloge trois fois N de N et deux fois N. Ce léger problème est résolu à l'aide d'une désynchronisation du circuit d'addition d'un demi cycle d'horloge par rapport aux autres éléments du circuit en utilisant un front actif différent. Pour conserver la synchronisation, il est aussi possible d'ajouter des circuits de retard supplémentaires sur les fils transportant les autres données. Une autre possibilité est de mémoriser deux fois N et trois fois N dans d'autres registres mais cela a pour effet d'augmenter considérablement la taille du circuit intégré. Le premier multiplexeur 204 reçoit en série sur quatre entrées distinctes zéro, N, deux fois N, et trois fois N pour fournir sur une sortie une donnée correspondant à une seule des quatre entrées. Le premier circuit de soustraction 203 soustrait à la donnée du premier registre 201 qui correspond à une valeur intermédiaire de H la données provenant de la sortie du premier multiplexeur 204. Le premier circuit de soustraction 203 et le premier multiplexeur 204 sont à considérer comme des moyens de soustraction pour soustraire en série au contenu du premier registre soit zéro, soit N, soit deux fois N, soit trois fois N. Les deuxième et troisième circuits de retard 206 et 207 et le deuxième multiplexeur 208 sont à considérer comme un circuit de multiplication pour multiplier le résultat fournit par le premier circuit de soustraction 203 soit par quatre soit par deux. Chaque circuit de retard 206 ou 207 à pour effet de multiplier par deux la donnée qui entre dans le circuit de retard 206 ou 207 par ajout d'un zéro en bit de poids le plus faible. Le deuxième multiplexeur 208 sert à shunter ou non le deuxième circuit de retard 206 sélectionnant ainsi une multiplication par deux ou une multiplication par quatre. La multiplication par deux n'est utile dans l'invention que si l'on veut calculer H = 2x mod N avec x - n impair, n étant la taille de N. S'il est envisagé de faire un circuit utilisable uniquement avec x n pair, le deuxième multiplexeur 208 est superflu et l'on utilisera uniquement un circuit de multiplication par quatre. Les deuxième à quatrième circuits de soustraction 210 à 212 et le circuit de décodage 213 sont à considérer comme des moyens de comparaison pour déterminer si le résultat fournit par le circuit de multiplication est supérieur ou inférieur à N, à deux fois N, et à trois fois N. Les deuxième à quatrième circuits de soustraction 210 à 212 effectuent simultanément les soustractions respectivement de N, de deux fois N, et de trois fois N au résultat fourni par le circuit de multiplication. Le circuit de décodage 213 comporte d'une part d'un circuit de logique combinatoire pour déterminer si le résultat fourni par le circuit de multiplication est supérieur ou inférieur à N, deux fois N, ou trois fois N. Le circuit de décodage 213 mémorise le résultat de la comparaison pour l'utiliser ultérieurement. Le circuit de décodage 213 comporte d'autre part une bascule de mémorisation afin de mémoriser à la fin de chacune des soustractions successives effectuées le résultat de la comparaison qui détermine quelle doit être l'entrée du premier multiplexeur 204 qui doit être reliée à la deuxième entrée du premier circuit de soustraction 203 pour la soustraction suivante. Les quatrième et cinquième circuits de retard 214 et 215 servent à augmenter la taille du premier registre 201 pour stocker des donnees dont la taille est supérieure à la taille du registre. Les sixième à huitième circuits de retard 216 à 218 servent à masquer le retard causé par le premier circuit de soustraction 203. Les explications qui vont suivre permettront à l'homme du métier de réaliser le séquencement adéquat du circuit de la figure 2 pour réaliser le calcul de H = 2x mod N, N étant codé sur n bits, x étant supérieur à n, et n étant inférieur ou égal à K: A/ chargement du complément à deux de N, noté H(0), dans le premier registre 201 et chargement des n bits de N dans le deuxième registre 202 en bits de poids faible, les K - n bits de poids fort du deuxième registre 202 étant mis à zéro, initialisation à zéro des premier à troisième circuits de retard 205 à 207, initialisation d'un indice de boucle de séquencement i à zéro, et forçage de la sortie de bus du circuit de décodage 213 afin que les moyens de comparaison indique qu'il faut relier la première entrée du premier multiplexeur 204 à la deuxième entrée du premier circuit de soustraction 203 pour soustraire "0" lors d'une première itération de boucle; B/ réalisation de la boucle comportant les étapes B1 à B5 tant que l'on a i B1/ décalage simultané du contenu des premier et deuxième registres 201 et 202 de K bits, afin de soustraire à H(i) soit "0", soit N, soit 2N, ou soit 3N; B2/ obtention de H(i + 2) par la multiplication par "2" du résultat de la soustraction si i = x - n - 1, ou obtention de H(i + 2) par la multiplication par "4" du résultat de la soustraction si i X x - n - 1; B3/ stockage de H(i + 2) dans le premier registre 201 et dans les quatrième et cinquième circuits de retard 214 et 215; B4/ comparaison de H(i + 2) avec N, deux fois N, et trois fois N et positionnement, à la fin de la comparaison, du premier multiplexeur 204 pour: - soustraire "0" lors de la prochaine itération de la boucle si H(i + 2) est inférieur à N, - soustraire N lors de la prochaine itération de la boucle si N - soustraire deux fois N lors de la prochaine itération de la boucle si 2 * N - soustraire trois fois N lors de la prochaine itération de la boucle si 3 * N S H(i + 2); B5/ incrémentation de l'indice de séquencement de boucle i de deux: i = i + 2; C/ décalage d'un bit du premier registre 201 et décalage supplémentaire d'un bit du premier registre si i = x - n; D/ le paramètre de correction d'erreur H est alors présent dans le premier registre 201. L'homme du métier remarquera que la multiplication par deux de l'étape B2 ne peut avoir lieu que pour la dernière itération de la boucle B et uniquement si x - n est impair. Le déroulement simultané des étapes B1 à B5 nécessite K + 4 car les premier à quatrième circuits de soustraction ont besoin d'un cycle supplémentaire pour réaliser complètement une soustraction. Le calcul de H = 2x mod N demande dans le pire cas : x = 2n = 2K K * (K + 4) / 2 cycles d'horloge au lieu des K * (K + 1) cycles d'horloges pour le circuit du document D2. Par ailleurs, il est possible d'utiliser différentes variantes et améliorations des procédés de calcul dévoilés dans D3 ou D5. Pour ce qui est des conditions initiales, il est possible de charger H (0) = 0 dans le premier registre 201 et de commencer la première itération de la boucle B par une soustraction de N au lieu d'une soustraction de "0". Il est possible d'utiliser des premier et deuxième registres 201 et 202 de taille variable afin que ceux-ci soit particulièrement bien adaptés à la taille des données. Il est également possible de réduire le nombre de soustractions successives en utilisant des opérations de type Pfield comme décrit dans le document D3. Dans D5, un registre supplémentaire est ajouté pour obtenir un circuit de calcul de H pouvant calcul H lorsque N = 2 * K. Une telle amélioration est également possible. D'autres amélioration du circuit de la figure 2 sont possible pour réduire la taille de certains éléments et pour gagner quelques temps de cycles lors d'une itération. Le circuit de la figure 3 représente un circuit de soustraction successive selon l'invention dans le cas où l'on désire calculer H avec des données de taille supérieure à la taille des registres du coprocesseur et comportant d'autres amélioration. Sur le circuit de la figure 3, tous les éléments de la figure 2 ont été conservés sauf les troisième à huitième circuits de retard 207 et 214 à 218 qui ont été supprimés pour diminuer l'encombrement et gagner quelques cycles d'horloges. En effet, le premier circuit de soustraction crée un retard lors de son fonctionnement d'un cycle d'horloge, il suffit d'utiliser ce retard comme un circuit de multiplication par deux comme cela était déjà fait dans D2. Pour obtenir une multiplication par quatre seul le deuxième circuit de retard 206 est nécessaire, d'où la suppression du troisième circuit de retard 207. Le retard créé par le fonctionnement du premier circuit de soustraction 203 étant utilisé de manière fonctionnelle, il n'est plus nécessaire de le compenser, ce qui rend inutile les sixième à huitième circuits de retard 216 à 218. Les quatrième et cinquième circuits de retard 214 et 215 ont été supprimés car les deux bits de poids le plus faible de H(i + 2) sont toujours nuls et qu'il n'est donc pas nécessaire de les mémoriser puisqu'ils sont déjà connus. Le circuit de la figure 3 comporte en outre: - des troisième et quatrième registres 301 et 302 à décalage de K bits décalage de K bits chacun, et ayant chacun une entrée série et une sortie série, l'entrée du troisième registre 301 étant connectée avec l'entrée du premier registre 201 à la sortie du deuxième multiplexeur 208, l'entrée du quatrième registre 302 étant connectée à sa sortie; - un troisième multiplexeur 303 ayant des première à troisième entrées et une sortie, la première entrée étant connectée à la sortie du premier registre 201, la deuxième entrée recevant en permanence un zéro logique, la troisième entrée étant connectée à la sortie du troisième registre 301, et la sortie étant connectée à la première entrée du premier circuit de soustraction 203; - un quatrième multiplexeur 304 ayant des première et deuxième entrées et une sortie, la première entrée étant connectée à la sortie du deuxième registre 202, la deuxième entrée étant connectée à la sortie du quatrième registre 302, et la sortie étant connectée à la deuxième entrée du premier multiplexeur 204, à l'entrée du premier circuit de retard 205, et à la deuxième entrée du deuxième circuit de soustraction 210. Le troisième multiplexeur permet d'une part d'utiliser deux registres et d'autre part d'envoyer des zéros sur la première entrée du premier circuit de soustraction 203. L'envoi de zéros permet de ne pas avoir à initialiser les premier et troisième registres 201 et 301 avant d'effectuer une première soustraction et permet également d'envoyer des zéros en bits de poids faible lorsque les bits de poids faible n'ont pas été mémorisés. Une autre amélioration, non visible sur le schéma, consiste à utiliser comme sortie pour les deuxième à quatrième circuits de soustraction 210 à 212 la retenue interne du circuit pour obtenir le résultat de la comparaison un cycle d'horloge plus tôt. Les explications qui vont suivre permettront à l'homme du métier de réaliser le séquencement adéquat du circuit de la figure 3 pour réaliser le calcul de H = 2x mod N, N étant codé sur n bits, x étant supérieur a n, et n étant supérieur à K et inférieur ou égal à 2 * K: Al/ chargement des K bits de poids faible de N dans le deuxième registre 202 et chargement des n - K bits de poids fort de N dans le quatrième registre 302 en bits de poids faible, les 2 * K N bits de poids fort du quatrième registre 302 étant mis à zéro, initialisation à zéro du premier circuit de retard 205, A2/ décalage du contenu du deuxième registre 202 de K bits puis décalage du contenu du quatrième registre 302 de K bits, le troisième multiplexeur 303 étant positionné pour envoyer une succession de zéros au premier circuit de soustraction 203 et le premier multiplexeur 204 étant positionné pour envoyer N sur la deuxième entrée du circuit de soustraction 203 afin de soustraire N à zéro; A3/ multiplication par "4" du résultat de la soustraction en retardant le résultat, le résultat de la multiplication étant appelé H(2); A4/ stockage des bits de poids 22 à 2K+1 de H(2) dans le premier registre 201 et stockage des bits de poids 2K+2 à 22K+1 de H(2) dans le troisième registre 301; A5/ comparaison de H(2) avec N, deux fois N, et trois fois N et positionnement, à la fin de la comparaison, du premier multiplexeur 204 pour: - soustraire "0" lors d'une première étape B1 si H(2) est inférieur à N, - soustraire N lors de la première étape B1 si N - soustraire deux fois N lors de la première étape B1 si 2 * N - soustraire trois fois N lors de la première étape B1 si 3 * N # H(2), et initialisation d'un indice de boucle de séquencement i à deux: i = 2; B/ réalisation d'une boucle comportant les étapes B1 à B5 tant que l'on a i B1/ décalage de deux bits du contenu du deuxième registre 202 avec fourniture simultanée de deux "zéro" sucessifs par le troisième multiplexeur 303, puis décalage simultané du contenu des premier et deuxième registres 201 et 202 de K - 2 bits, puis décalage simultané du contenu des premier et quatrième registres 201 et 302 de deux bits, puis décalage simultané du contenu des troisième et quatrième registres 301 et 302 de K - 2 bits, puis décalage de deux bits du troisième registre 301 afin de soustraire à H(i) soit "0", soit N, soit 2N, ou soit 3N; B2/ obtention de H(i + 2) par la multiplication par "2" du résultat de la soustraction si i = x - n - 1, ou obtention de H(i + 2) par la multiplication par "4" du résultat de la soustraction si i # x - n - 1; B3/ stockage des bits de poids 22 à 2K+1 de H(i + 2) dans le premier registre 201 et stockage des bits de poids 2K+2 à 22K+1 de H(i + 2) dans le troisième registre 301 B4/ comparaison de H(i + 2) avec N, deux fois N, et trois fois N et positionnement, à la fin de la comparaison, du premier multiplexeur 204 pour: - soustraire "0" lors de la prochaine itération de la boucle si H(i + 2) est inférieur à N, - soustraire N lors de la prochaine itération de la boucle si N - soustraire deux fois N lors de la prochaine itération de la boucle si 2 * N - soustraire trois fois N lors de la prochaine itération de la boucle si 3 * N B5/ incrémentation de l'indice de séquencement de boucle i de deux: i = i + 2; C/ le paramètre de correction d'erreur H est alors présent dans le premier registre 201. L'homme du métier remarquera que lors de la dernière itération de la boucle, un cycle d'horloge de moins est nécessaire au stockage de H dans les premier et troisième registres 201 et 301 si x - n est impair. Une amélioration peut être faite pour ne pas avoir à faire attention à cette dernière itération pour le stockage, il suffit de connecter les entrées des premie correspondent à l'identique aux éléments de la figure 3 utilisent les mêmes références que sur la figure 3. Les éléments qui correspondent à l'identique aux éléments de la figure 1 mais qui ne sont pas utilisés par la figure 3 portent les références de la figure 1. Les multiplexeurs 1000 à 1012 correspondent à des multiplexeurs modifiés ou ajoutés pour pouvoir combiner les fonctionnalités du circuit de la figure 1 et du circuit de la figure 3. REVENDICATIONS 1. Coprocesseur d'arithmétique modulaire comportant un circuit de calcul d'un paramètre de correction d'erreur H = 2x mod N associé à la méthode de Montgomery, x et N étant des entiers non nuls, le circuit de calcul comportant un premier registre (201) à décalage pour contenir des valeurs intermédiaires de H et un deuxième registre (202) pour contenir N, caractérisé en ce que le circuit de calcul comporte en outre: - des premiers moyens (203, 204) pour soustraire en série au contenu du premier registre (201) soit zéro, soit N, soit deux fois N, soit trois fois N, - un circuit de multiplication (206) pour multiplier le résultat fournit par les premiers moyens (203, 204) par quatre, et - des deuxièmes moyens (210 à 213) pour déterminer si le résultat fournit par le circuit de multiplication est supérieur ou inférieur à N, à deux fois N, et à trois fois N. 2. Coprocesseur selon la revendication 1, caractérisé en ce que le circuit de calcul comporte en outre des troisièmes moyens (205, 209) pour produire deux fois N et trois fois N. 3. Coprocesseur selon l'une des revendications 1 ou 2, caractérisé en ce que le circuit de calcul comporte en outre des troisième et quatrième registres (301, 302) de K bits. 4. Coprocesseur selon l'une des revendications 1 à 3, caractérisé en ce que les premiers moyens comportent un premier multiplexeur (204) recevant en série sur quatre entrées distinctes zéro, N, deux fois N, et trois fois N pour fournir sur une sortie une donnée correspondant à une seule des quatre entrées et un premier circuit de soustraction (203) pour soustraire à la données du premier registre (201) la données provenant de la sortie du premier multiplexeur (204). 5. Coprocesseur selon l'une des revendications 1 à 4, caractérisé en ce que le circuit de multiplication comporte au moins un circuit de retard (206). 6. Coprocesseur selon l'une des revendications 1 à 5, caractérisé en ce que le circuit de multiplication comporte un deuxième multiplexeur (208) pour shunter le circuit de retard (206) lorsque l'on désire réaliser des multiplications par deux. 7. Coprocesseur selon l'une des revendications 1 à 6, caractérisé en ce que les deuxièmes moyens comportent des deuxième à quatrième circuits de soustraction (210 à 212) pour soustraire respectivement N, deux fois N, et trois fois N au résultat fourni par le circuit de multiplication et un circuit de décodage (213) pour déterminer à partir des résultats fournis par les deuxième à quatrième circuits de soustraction (210 à 212) si le résultat fourni par le circuit de multiplication est supérieur ou inférieur à N, deux fois N, ou trois fois N. 8. Coprocesseur selon l'une des revendications 2 à 7, caractérisé en ce que les troisièmes moyens comportent un circuit de retard (205) recevant N et produisant deux fois N, et un circuit d'addition (209) série qui additionne N et deux fois N pour obtenir trois fois N. 9. Procédé de production d'un paramètre de correction d'erreur H = 2x mod N associé à la méthode de Montgomery, x et N étant des entiers non nuls, dans un coprocesseur d'arithmétique modulaire dans lequel on mémorise une valeur intermédiaire de H dans un premier registre (201) et on mémorise N dans un deuxième registre (202), caractérisé en ce qu'il comporte les étapes suivantes: - soustraction en série au contenu du premier registre (201) soit zéro, soit N, soit deux fois N, soit trois fois N, - multiplication du résultat de la soustraction par quatre pour obtenir une nouvelle valeur intermédiaire de H, et - comparaison de la nouvelle valeur intermédiaire de H à N, à deux fois N, et à trois fois N. 10. Procédé selon la revendication 9, caractérisé en ce que l'on produit en permanence deux fois N et trois fois N à partir de N.