Brevet FR2897964A1 — publié le 20070831

PROCÉDÉ DE CALCUL NUMÉRIQUE INCLUANT LA DIVISION EUCLIDIENNE La présente invention concerne un traitement et un calcul arithmétiques effectués par des ordinateurs numériques programmables, des processeurs, des circuits logiques et des matériels électroniques similaires et tous logiciels associés, et concerne en particulier des procédés de calcul ou de calcul informatisé dans lesquels l'opération arithmétique effectuée par ces matériaux sur des données exprimées sous forme numérique binaire est la division, ou plus spécifiquement, la division euclidienne. La division euclidienne est une opération arithmétique de base qui est fondée sur une propriété consistant en ce qu'étant donné deux entiers quelconques a (dividende) et b ~ 0 (diviseur), il existe une autre paire d'entiers q (quotient) et r (reste) tels que a = qb + r, où 0 r La mise en oeuvre matérielle d'algorithmes cryptographiques (comme dans les cartes à puce basées sur RISC, jeu d'instructions réduit) peut être sujette à des attaques de canal latéral, y compris des attaques d'analyse de puissance et temporelles. Un attaquant surveille en externe les aspects du matériel qui sont accessibles, comme le courant dans les puces ou les émissions électromagnétiques d'une puce, afin d'obtenir des informations sur des opérations internes, qui peuvent être soumises à diverses analyses dams une tentative de découverte la clé de chiffrement. Typiquement, les microcontrôleurs sûrs pour les cartes à puce utilisent divers types de contre-mesures matérielles pour contrecarrer ces attaques. Même si certaines contre-mesures de niveau logiciel introduites dans l'algorithme cryptographique lui-même doivent aussi être prises en considération, il est très important que ces contre-mesures n'affectent pas défavorablement la vitesse ou la précision des calculs sous-jacents. Toutes les opérations internes d'un algorithme cryptographique ne sont pas si facilement adaptables pour permettre d'incorporer des contre-mesures logicielles sans ralentissement important ni dégradation de la précision du résultat final. En particulier, les opérations arithmétiques, y compris la division euclidienne, nécessitent généralement un résultat spécifique de la part d'une opération sur des opérandes donnés. Tout: changement qui entraînerait un résultat final erroné serait clairement indésirable. La présente invention améliore les précédentes mises en oeuvre de la division euclidienne d'entiers à multiples mots dans les systèmes d'ordinateur en exécutant un nombre d'arrondis constant, avec un jeu constant d'opérations internes et aucun besoin d'un test conditionnel des données intermédiaires. L'invention comprend également une répartition aléatoire interne, à utiliser quand la division est exécutée comme faisant partie d'un chiffre, tout en obtenant toujours le même résultat final. Le procédé obtient la réciproque d'une approximation du diviseur puis la multiplie par le dividende pour obtenir une approximation d'entier du quotient. Ici, le diviseur est surestimé en utilisant les deux mots les plus significatifs du diviseur plus un. Donc, le quotient est sous-estimé et est calculé avec deux mots significatifs. Le quotient est également décrémenté d'une valeur aléatoire de jusqu'à un mot moins un bit. L'estimation résultante et les erreurs de répartition aléatoire se produisant dans le mot le moins significatif calculé dans un arrondi sont corrigées dans un arrondi suivant. Le nombre d'arrondis peut être égal à la différence de longueur (en mots) entre le dividende et le diviseur, plus un, et un mot supplémentaire du quotient est calculé à chaque arrondi. Dans son sens le plus large, l'invention concerne un procédé mis en oeuvre dans un système de traitement numérique électronique pour effectuer un calcul de division d'entiers sur de grands opérandes à multiples mots, le procédé comprenant : (a) le chargement des opérandes du dividende et du diviseur dans des emplacements de stockage accessibles au 5 système de traitement ; (b) l'initialisation d'un quotient et d'un reste ; (c) l'extraction d'un nombre spécifié de mots les plus significatifs dudit diviseur, l'incrémentation de la valeur extraite, et le calcul d'une réciproque de celle- 10 ci avec ledit nombre spécifié de mots significatifs ; (d) l'exécution par ledit système de traitement d'un nombre d'arrondis, chaque arrondi comprenant : (i) la multiplication desdits reste et réciproque pour obtenir une valeur de quotient pour cet arrondi avec 15 ledit nombre spécifié de mots significatifs ; (ii.) la décrémentation de la valeur de quotient par une valeur aléatoire d'une longueur non supérieure à un bit moins un mot ; (iii) la multiplication du quotient pour cet arrondi 20 par le diviseur et la soustraction du produit résultant du reste pour actualiser le reste ; et. (iv) le décalage à gauche du quotient partiel d'un nombre de mots pour cet arrondi et son addition au quotient pour cumuler le quotient ; et 25 (e) si le reste après le dernier arrondi est toujours plus grand que le diviseur, alors, la soustraction du diviseur du reste et l'incrémentation du quotient jusqu'à ce que le reste soit inférieur au diviseur, d'où ainsi l'obtention du quotient et du reste 30 pour le dividende et le diviseur chargés. Selon différents modes de réalisation : - le nombre d'arrondis lors de l'étape (d) est égal à la différence en mots des longueurs desdits dividende et diviseur, plus un ; - le nombre d'arrondis lors de l'étape (d) est suivi par un arrondi supplémentaire qui est le même que l'étape (d) excepté que la décrémentation aléatoire de la sous-étape (ii) n'est pas exécutée, et excepté que lors de la sous-étape (iv), le quotient partiel est décalé vers la droite d'un mot puis ajouté au quotient pour cumuler le quotient ; - le nombre spécifié est deux pour le nombre de mots les plus significatifs du diviseur, le nombre de mots significatifs de la réciproque et le nombre de mots significatifs du quotient pour tout arrondi donné ; - la réciproque du diviseur est obtenue en divisant les mots extraits du diviseur plus un supérieur d'une puissance de deux à un nombre total de bits dans le diviseur ; - la multiplication dudit reste et de ladite réciproque lors de la sous-étape (i) comprend le fait de faire accéder un pointeur à trois mots significatifs du reste, en commençant lors d'un premier arrondi avec trois mots les plus significatifs et en se décalant d'une position de mot vers les mots les moins significatifs par arrondi, et dans lequel seuls deux mots les plus significatifs d'un produit du reste et de la réciproque sont retenus pour mettre à jour la valeur du quotient pour cet arrondi ; - dans lequel le système de traitement comprend un 30 multiplicateur et un accumulateur matériels qui exécutent les instructions programmées. L'invention concerne également un procédé mis en oeuvre dans un système de traitement numérique électronique pour effectuer un calcul de division d'entiers sur de grands opérandes à multiples mots, le procédé comprenant : (a) le chargement d'un opérande de dividende A et 5 d'un opérande de diviseur B dans des positions de stockage accessibles au système de traitement ; (b) l'initialisation d'un quotient Q à zéro et d'un reste R comme étant égal audit dividende B ; (c) l'extraction des deux mots les plus 10 significatifs TW dudit diviseur, l'incrémentation de la valeur extraite TW de un et le calcul d'une réciproque S = b4 div (TW+1) ; (d) l'exécution par ledit système de traitement d'un nombre N d'arrondis, chaque arrondi comprenant : 15 (i) la multiplication du reste R avec la réciproque S du diviseur pour obtenir une valeur de quotient pour cet arrondi, T = S x R, avec deux mots significatifs ; (ii) la décrémentation de la valeur de quotient pour 20 cet arrondi d'une valeur aléatoire, telle que T = (S x R) - ALEATOIRE, où la longueur de la valeur aléatoire n'est pas supérieure à un mot moins un bit ; (iii) la multiplication de la valeur de quotient T pour cet arrondi par le diviseur B et la soustraction 25 d'un produit résultant du reste R pour actualiser le reste, c'est-à-dire de façon que R := R û (T x B) ; et (iv) i.e décalage vers la gauche du quotient partiel T pour cet arrondi d'un nombre de mots (N-I) et l'addition au quotient Q pour cumuler le quotient, c'est- 30 à-dire de façon que Q := Q + T 2(N-I)F`, où I est un index pour cet arrondi et W est une longueur de mots en bits ; et (e) si le reste R après le dernier arrondi est toujours plus grand que le diviseur B, alors la soustraction du diviseur du reste, R := R ù B et l'incrémentation du quotient de un, Q := Q + 1, jusqu'à ce que le reste soit inférieur au diviseur, pour obtenir ainsi le quotient Q et le reste R pour le dividende A et le diviseur B chargés, où A = (B x Q) + R, et 0 R Selon plusieurs modes de réalisation : - le nombre N d'arrondis exécutés par le système de traitement est égal à une différence en mots des longueurs desdits dividende et diviseur, plus un ; - le nombre N d'arrondis exécutés par le système de traitement est complété par un arrondi supplémentaire qui est identique à l'exécution du système de traitement de l'étape (d) excepté que la décrémentation aléatoire de la sous-étape (ii) n'est pas mise en oeuvre, et excepté que lors de la sous-étape (iv), le quotient partiel T est décalé vers la droite d'un mot, puis ajouté au quotient Q pour cumuler le quotient. La figure 1 est un schéma fonctionnel illustrant un exemple de mode de réalisation du procédé de division d'entiers à arrondis constants selon la présente invention. Par référence à la figure 1, après le chargement du dividende A et du diviseur B pour le calcul dans des registres matériels accessibles par un coeur de processeur (étapes 101 et 102), et l'initialisation des valeurs du quotient Q (démarre à 0 et se cumule) et du reste R (démarre à A et se décrémente) (étapes 103 et 104), le procédé de division d'entiers commence avec une surestimation du diviseur B (étape 105). En particulier, nous extrayons les deux mots les plus significatifs TW du diviseur B et incrémentons cette valeur à deux mots de un. La présente invention peut être appliquée à des nombres de toute base b. L'explication donnée ici prend le cas particulier où la base est une puissance de deux, c'est-à-dire b = 2w, W étant la longueur des mots en bits. Le cas plus général peut être déduit facilement de l'exemple donné. Ainsi., la formule de réciproque donnée ci-dessous devient S =: b4 div (TW + 1) pour la base b. Dans un processeur numérique, les nombres représentés par une base non binaire (comme la base décimale b = 10) peuvent être stockés et traités en format à codage numérique (tel qu'une décimale binaire codifiée). La réciproque S est ensuite générée (étape 106). Un mot de 32 bits est utilisé ici comme exemple. Nous définissons S = 2128 div (TW + 1). Il faut noter que tandis que TW est long de 64 bits (deux mots), TW + 1 peut être :Long de 65 bits, à savoir dans le cas particulier où TW + 1 = 264. Dans le cas habituel où TW Dans chaque arrondi, la valeur de la réciproque calculée S est multipliée (étape 108) avec les trois meilleurs mots du reste (égal au dividende A pour le premier arrondi) de façon à obtenir une valeur de quotient T, qui pour le premier arrondi est une approximation des deux mots les plus significatifs du quotient. Une mise en oeuvre de cette étape calcule T en ayant un pointeur, PA, qui pointe les trois mots les plus significatifs du numérateur A lors du premier arrondi, puis se déca:Le d'une position de mot (vers les mots moins significatifs) par arrondi. Ceci est équivalent à T := (S x R) div ((2^(longueur de mot en bits))^3), ce qui signifie que lors d'une multiplication d'une valeur de deux mots (la réciproque S) par une valeur de trois mots (les trois meilleurs mots courants du numérateur A), nous gardons juste les deux mots les plus significatifs du produit. Dans cette mise en oeuvre, nous décalons simplement le pointeur PA à chaque arrondi d'une position pour actualiser les meilleurs mots courants du numérateur. Le quotient est rendu aléatoire, c'est-à-dire décrémenté d'une valeur aléatoire ( ALEATOIRE ) d'une longueur qui est au plus inférieure d'un bit à un mot complet,. (Les erreurs résultantes sont corrigées automatiquement lors de l'arrondi suivant.) La valeur aléatoire peut être fournie par un matériel générateur de nombres aléatoires associé au processeur. Cette valeur de quotient T est multipliée par le diviseur entier B et le résultat soustrait du dividende pour obtenir un nouveau reste R (étape 109). Ce reste est retenu pour l'arrondi suivant. La valeur de quotient partiel T obtenue lors du premier arrondi est multipliée par 2")", W étant la longueur de mot en bits (qui peut être accomplie par un décalage à gauche de N-1 mots) et ajoutée au quotient Q (au préalable initialisé à zéro). Après le premier arrondi Q = 7' * En utilisant un diviseur surestimé (TW + 1), nous assurons que le quotient est sousestimé et évitons d'obtenir un reste négatif. Aucune condition de sous capacité n'est donc générée, et nous n'avons pas à effectuer des tests du reste ni une correction conditionnelle du quotient et du reste calculés. En particulier, puisque le reste calculé est assuré d'être toujours positif, nous n'avons pas besoin de tester le bit de report pour savoir si le reste est positif ou négatif. Nous n'avons pas besoin de soustraire conditionnellement un du quotient calculé ni d'ajouter conditionnellement une valeur de diviseur au reste au cas où le reste s'avère être négatif d'après le test, puisque cette condition ne se produit pas. Le reste R obtenu pendant le premier arrondi (qui n'est plus égal au dividende) est utilisé lors du deuxième arrondi lorsqu'il est multiplié par la réciproque S du diviseur surestimé (arrondi 2, étape 108). À nouveau, une valeur de quotient T avec deux mots significatifs est obtenue. Cette deuxième valeur de quotient est multipliée avec le diviseur complet, et les résultats soustraits du reste du premier arrondi pour obtenir un reste de deuxième arrondi (arrondi 2, étape 109). Le reste de deuxième arrondi est retenu pour être utilisé lors du troisième arrondi, remplaçant le reste de premier arrondi. La valeur de quotient partiel T obtenue lors de ce deuxième arrondi est multipliée par 2~N-27, W étant la longueur de mot en bits (ce qui peut être fait par un décalage à gauche de N-2 mots), et ajoutée à la valeur de quotient Q du premier arrondi pour obtenir une valeur de quotient cumulée Q (arrondi 2, étape 110), qui est une autre sous-estimation, mais maintenant avec trois mots significatifs. Chaque arrondi utilise :La réciproque S, conjointement au reste R de l'arrondi précédent tel que mis en oeuvre par exemple de la manière décrite ci-dessus, dans laquelle le pointeur PA se décale d'une position de mot par arrondi. De façon équivalente, multiplier les deux (étape 108) obtient une valeur de quotient T pour cet arrondi avec deux mots significatifs. Multiplier cette valeur de quotient avec le diviseur complet B et soustraire le résultat du reste R (étape 109) obtient un nouveau reste R à utiliser lors de l'arrondi suivant. Multiplier la valeur de quotient partiel T obtenue dans cet arrondi par puis ajouter le résultat au quotient cumulé Q (étape 110) produit un nouveau quotient cumulé Q avec un mot significatif supplémentaire. Ce calcul est fait avec W comme longueur de mot en bits et I comme index d'arrondi. La multiplication peut être effectuée par un décalage à gauche de N-I mots. Si N-I = 0 (le nième arrondi), aucun décalage n'est effectué. Lorsqu'un arrondi supplémentaire est ajouté, N-I = -1 et un décalage à droite d'un mot est effectué. Lors de la mise en oeuvre de chaque arrondi de la division (multiplication par une réciproque, étape 108), nous obtenons une valeur de quotient T avec deux mots significatifs. Le mot plus significatif corrige les erreurs de sous-estimation dans le quotient cumulé Q de l'arrondi précédent, tandis que le mot moins significatif de la valeur de quotient T de l'arrondi courant fournit une nouvelle sous-estimation. Il est également possible de sélectionner n'importe quel nombre de mots de quotient à estimer dans n'importe quel arrondi (non représenté sur la figure :1). Par exemple, au lieu d'obtenir une réciproque à deux mots significatifs à partir des deux meilleurs mots significatifs surestimés du diviseur (étapes 105 et 106), et d'utiliser cette réciproque pour obtenir une valeur de quotient à deux mots significatifs lors de chaque arrondi (étape 108), nous pourrions utiliser un nombre de mots plus grand dans ces calculs. Ainsi, par exemple, les trois meilleurs mots significatifs du diviseur, plus un pour produire une surestimation, peuvent être utilisés pour obtenir une réciproque à trois mots significatifs et donc des valeurs de quotient à trois mots significatifs. Le quotient cumulé gagne deux mots significatifs pendant chaque arrondi, le meilleur mot significatif de la valeur de quotient de l'arrondi étant utilisé pour corriger les erreurs de sous-estimation de l'arrondi précédent dans le quotient cumulé. Cependant, tandis que le nombre total d'arrondis serait réduit de moitié, des calculs supplémentaires seraient nécessaires lors de chaque arrondi pour calculer le mot significatif supplémentaire dans la valeur de quotient. Particulièrement dans les cas où cette opération de division fait partie d'un système cryptographique, les opérations internes peuvent être rendues aléatoires sans affecter le résultat final, en introduisant une décrémentati.on aléatoire de la valeur de quotient (étape 108). Les erreurs introduites dans chaque arrondi par cette répartition aléatoire sont corrigées automatiquement lors de l'arrondi suivant, à condition que la valeur aléatoire injectée dans le quotient soit inférieure à la valeur maximum d'un mot moins un bit. (l'erreur injectée est présente dans le meilleur mot du quotient de l'étape suivante, avec celle générée par l'utilisation d'une réciproque pour son calcul.) Il est important de faire remarquer que dans ce cas, il n'est pas possible d'injecter une valeur aléatoire dans un quotient et de le rendre négatif, sinon nous aurions des restes négatifs et dépendant du matériel intégré, et ceci peut être un inconvénient. Il est possible, du fait de la sous-estimation du quotient, qu'après le dernier arrondi de la boucle de calcul, le reste de ce dernier arrondi soit toujours légèrement plus grand que le diviseur (étape 111). Le nombre d'arrondis de division (multiplication par une réciproque) peut être étendu d'un pour (n+l) arrondis. Cet arrondi ajouté réduit considérablement le nombre de soustractions finales nécessaires à seulement une soustraction. Il calcule également un premier mot fractionné du quotient. En variante, un ensemble supplémentaire (étape 112) de soustractions conditionnelles du diviseur complet du reste, conjointement à l'incrémentation du quotient cumulé, peut gérer cette situation. Un arrondi supplémentaire est préférable à de nombreuses soustractions conditionnelles, mais les deux approches peuvent être utilisées. Dès que le nombre d'arrondis est étendu de un pour réduire le nombre de soustractions finales, la répartition aléatoire n'est pas effectuée sur le dernier arrondi, de façon à éviter d'injecter une erreur dans la valeur de quotient finale qui rie serait pas corrigée. Le procédé peut être exécuté par logiciel ou exécuté par micrologiciel dans un processeur matériel contenant le matériel nécessaire de multiplication et de cumul et les registres ou accès mémoire suffisants pour stocker le diviseur, sa réciproque approximative, la valeur de quotient, le reste et le quotient cumulé. En variante, les concepteurs de systèmes matériels ont tout à fait la REVENDICATIONS 1. Procédé mis en oeuvre dans un système de traitement cryptographique pour effectuer un calcul de division d'entiers sur de grands opérandes à multiples mots logiciels ou matériels, le procédé comprenant : (a) le chargement des opérandes du dividende (A) et du diviseur (B) dans des emplacements de stockage accessibles au système de traitement ; (b) l'initialisation d'un quotient (Q) et d'un reste (R) dans des emplacements de stockage accessibles au 10 système de traitement ; (c) l'extraction, par le système de traitement, d'un nombre spécifié de mots les plus significatifs dudit diviseur (B), l'incrémentation de la valeur extraite, et le calcul d'une réciproque (S) de celle-ci avec ledit 15 nombre spécifié de mots significatifs ; (d) l'exécution par ledit système de traitement d'un nombre d'arrondis, chaque arrondi comprenant : (i) la multiplication desdits reste (R) et réciproque (S) pour obtenir une valeur de quotient 20 partiel (T) pour cet arrondi avec ledit nombre spécifié de mots significatifs ; (ii) la décrémentation de la valeur de quotient partiel (T) par une valeur aléatoire d'une longueur non supérieure à un mot moins un bit ; 25 (iii) la multiplication du quotient partiel (T) pour cet arrondi par le diviseur (B) et la soustraction du produit résultant du reste (R) pour actualiser le reste (R) ; et (iv) le décalage à gauche du quotient partiel (T) 30 d'un nombre de mots pour cet arrondi et son addition au quotient (Q) pour cumuler le quotient (Q) ; et(e) si le reste (R) après le dernier arrondi est toujours plus grand que le diviseur (B), alors, la soustraction du diviseur (B) du reste (R) et l'incrémentation du quotient (Q) jusqu'à ce que le reste (R) soit inférieur au diviseur (B), d'où ainsi l'obtention du quotient (Q) et du reste (R) pour le dividende (A) et le diviseur (B) chargés. 2. Procédé selon la revendication 1, dans lequel le nombre d'arrondis lors de l'étape (d) est égal à la différence en mots des longueurs desdits dividende (A) et diviseur (B), plus un. 3. Procédé selon la revendication 1 ou 2, dans lequel le nombre d'arrondis lors de l'étape (d) est suivi par un arrondi supplémentaire qui est le même que l'étape (d) excepté que la décrémentation aléatoire de la sous-étape (ii) n'est pas exécutée, et excepté que lors de la sous-étape (iv), le quotient partiel (T) est décalé vers la droite d'un mot puis ajouté au quotient (Q) pour cumuler le quotient (Q). 4. Procédé selon l'une des revendications 1 à 3, dans lequel le nombre spécifié est deux pour le nombre de mots les plus significatifs du diviseur (B), le nombre de mots significatifs de la réciproque (R) et le nombre de mots significatifs du quotient (Q) pour tout arrondi donné. 5. Procédé selon l'une des revendications précédentes, dans lequel la réciproque du diviseur (B) est obtenue en divisant les mots extraits du diviseur (B) plus un supérieur d'une puissance de deux à un nombre total de bits dans le diviseur (B). 6. Procédé selon l'une des revendications précédentes, dans lequel la multiplication dudit reste (R) et de ladite réciproque (S) lors de la sous-étape (i) comprend le fait de faire accéder un pointeur (PA) à trois mots significatifs du reste (R), en commençant lors d'un premier arrondi avec trois mots les plus significatifs et en se décalant d'une position de mot vers les mots les moins significatifs par arrondi, et dans lequel seuls deux mots les plus significatifs d'un produit du reste (R) et de la réciproque (S) sont retenus pour mettre à jour la valeur du quotient pour cet arrondi. 7. Procédé selon l'une des revendications précédentes, dans lequel le système de traitement comprend un multiplicateur et un accumulateur matériels qui exécutent les instructions programmées. 8. Procédé mis en oeuvre dans un système de traitement cryptographique pour effectuer un calcul de division d'entiers sur de grands opérandes à multiples mots logiciels ou matériels, le procédé comprenant : (a) le chargement d'un opérande de dividende (A) et d'un opérande de diviseur (B) dans des positions de 25 stockage accessibles au système de traitement ; (b) l'initialisation d'un quotient (Q) à zéro et d'un reste (R) comme étant égal audit dividende (B) dans des positions de stockage accessibles au système de traitement ; 30 (c) l'extraction, par le système de traitement, des deux mots les plus significatifs (TW) dudit diviseur (B), l'incrémentation de la valeur extraite (TW) de un et le calcul d'une réciproque S = b4 div (TW+1) ;(d) l'exécution par ledit système de traitement d'un nombre N d'arrondis, chaque arrondi comprenant : (i) la multiplication du reste (R) avec la réciproque S du diviseur pour obtenir une valeur de quotient pour cet arrondi, T = S x R, avec deux mots significatifs ; (ii) la décrémentation de la valeur de quotient pour cet arrondi d'une valeur aléatoire, telle que T = (S x R) - ALEATOIRE, où la longueur de la valeur aléatoire n'est pas supérieure à un mot moins un bit ; (iii) la multiplication de la valeur de quotient (T) pour cet arrondi par le diviseur (B) et la soustraction d'un produit résultant du reste (R) pour actualiser le reste (R), c'est-à-dire de façon que R := R û (T x B) ; et (iv) le décalage vers la gauche du quotient partiel T pour cet arrondi d'un nombre de mots (N-I) et l'addition au quotient (Q) pour cumuler le quotient (Q), c'est-à-dire de façon que Q := Q + T • 2 (N-I)W, où I est un index pour cet arrondi et W est une longueur de mots en bits ; et (e) si le reste R après le dernier arrondi est toujours plus grand que le diviseur (B), alors la soustraction du diviseur (B) du reste (R), R := R û B et l'incrémentation du quotient de un, Q := Q + 1, jusqu'à ce que le reste (R) soit inférieur au diviseur (B), pour obtenir ainsi le quotient (Q) et le reste (R) pour le dividende (A) et le diviseur (B) chargés, où A = (B x Q) + R, et 0 9. Procédé selon la revendication 8, dans lequel le nombre d'arrondis N est égal à une différence en mots des longueurs desdits dividende (A) et diviseur (B), plus un. 10. Procédé selon la revendication 8 ou 9, dans lequel les N arrondis de l'étâpé (d) sont suivis par un arrondi supplémentaire qui est le même que l'étape (d) excepté que la décrémentation aléatoire de la sous-étape (ii) n'est pas mise en œuvre et excepté que lors de l'étape (iv), le quotient partiel (T) est décalé vers la droite d'un mot puis ajouté au quotient (Q) pour cumuler le quotient (Q). 11. Procédé selon l'une des revendications 8 à 10, dans lequel la multiplication dudit reste (R) et de ladite réciproque (S) lors de la sous-étape (i) comprend l'accès d'un pointeur (PA) à trois mots significatifs du reste (R), en commençant lors d'un premier arrondi avec trois mots les plus significatifs et en se décalant d'une position de mot vers les mots les moins significatifs par arrondi, et dans lequel seuls deux mots les plus significatifs d'un produit du reste (R) et de la réciproque (S) sont retenus pour actualiser la valeur de quotient pour cet arrondi. 12. Support lisible par processeur stockant un programme exécutable par un système de traitement cryptographique, le programme stocké sur ledit support amenant le système de traitement numérique électronique à : (a) charger un opérande de dividende (A) et un opérande de diviseur (B) à multiples mots logiciels ou matériels dans des positions de stockage accessibles au système de traitement ; (b) initialiser un quotient (Q) à zéro et un reste (R) comme étant égal audit dividende (B) dans despositions de stockage accessibles au système de traitement ; (c) extraire deux its les plus significatifs (TW) dudit diviseur, incrémenter la valeur extraite (TW) de un et calculer une réciproque S = b4 div (TW + 1) ; (d) faire exécuter par ledit système de traitement un nombre N d'arrondis, dans lequel chaque arrondi : (i) multiplie le reste (R) avec la réciproque (S) du diviseur pour obtenir une valeur de quotient pour cet arrondi, T = S x R, avec deux mots significatifs ; (ii) décrémente la valeur de quotient pour cet arrondi d'une valeur aléatoire, de façon que T = (S x R) - ALEATOIRE, où la longueur de la valeur aléatoire n'est pas supérieure à un mot moins un bit ; (iii) multiplie la valeur de quotient (T) pour cet arrondi par le diviseur (B) et soustrait un produit résultant du reste (R) pour actualiser le reste (R), c'est-à-dire de façon que R := R û (T x B) ; et (iv) décale vers la gauche le quotient partiel (T) pour cet arrondi par un nombre de mots (N-I) et l'ajoute au quotient (Q) pour cumuler le quotient, c'est-à-dire de façon que Q := Q + T • 2', où I est un index pour cet arrondi et W est une longueur de mot en bits ; et (e) si le reste R après le dernier arrondi est toujours plus grand que le diviseur (B), alors soustraire le diviseur du reste (R), R := R û B, et incrémenter le quotient de un, Q := Q + 1, jusqu'à ce que le reste (R) soit inférieur au diviseur (B), pour obtenir ainsi le quotient (Q) et le reste (R) pour le dividende (A) et le diviseur (B) chargés, où A = (B x Q) + R, et 0 13. Support lisible par processeur selon la revendication 12, dans lequel le nombre N d'arrondisexécutés par le système de traitement est égal à une différence en mots des longueurs desdits dividende (A) et diviseur (B), plus un. 14. Support lisible par processeur selon la revendication 12 ou 13, dans lequel le nombre N d'arrondis exécutés par le système de traitement est complété par un arrondi supplémentaire qui est identique à l'exécution du système de traitement de l'étape (d) excepté que la décrémentation aléatoire de la sous-étape (ii) n'est pas mise en oeuvre, et excepté que lors de la sous-étape (iv), le quotient partiel (T) est décalé vers la droite d'un mot, puis ajouté au quotient (Q) pour cumuler les quotients (Q).