Système modulaire de représentation

Cet article est une ébauche concernant les mathématiques.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

En mathématiques, dans la branche de l'arithmétique modulaire, un système modulaire de représentation est un outil notamment utilisé en cryptographie, eu égard à sa capacité à réduire des calculs sur de grandes valeurs à des calculs menés en parallèle sur des nombres de taille choisie. Les systèmes modulaires de représentation des nombres (Residue Number System) sont une application du théorème des restes chinois. Les nombres sont représentés par leurs restes modulo un ensemble de valeurs premières entre elles. On peut définir une addition et une multiplication qui vont ainsi s'effectuer sur chaque module de façon indépendante.

Il est ainsi possible d'avoir des calculs parallèles sans propagation de retenues.

Définitions

Soit ( m 1 , m 2 , , m n ) {\displaystyle (m_{1},m_{2},\ldots ,m_{n})} un n-uplet de modules mutuellement premiers entre eux. On l'appelle la base RNS.

On note: M = i = 1 n m i {\displaystyle M=\prod _{i=1}^{n}m_{i}} .

Soit X {\displaystyle X} un entier positif inférieur à M {\displaystyle M} avec x i X ( mod m i ) {\displaystyle x_{i}\equiv X{\pmod {m_{i}}}} . Le n-uplet ( x 1 , , x n ) {\displaystyle (x_{1},\ldots ,x_{n})} est appelé représentation RNS de X {\displaystyle X} .

D'après le théorème des restes chinois, la représentation RNS de chaque entier positif X {\displaystyle X} inférieur à M {\displaystyle M} est unique.

Exemple

On considère la base RNS ( 2 ; 3 ; 5 ) {\displaystyle (2;3;5)} . Voici les représentations RNS des entiers de 0 {\displaystyle 0} à 29 {\displaystyle 29}  :

0 = ( 0 ; 0 ; 0 ) {\displaystyle 0=(0;0;0)} 1 = ( 1 ; 1 ; 1 ) {\displaystyle 1=(1;1;1)} 2 = ( 0 ; 2 ; 2 ) {\displaystyle 2=(0;2;2)} 3 = ( 1 ; 0 ; 3 ) {\displaystyle 3=(1;0;3)} 4 = ( 0 ; 1 ; 4 ) {\displaystyle 4=(0;1;4)}
5 = ( 1 ; 2 ; 0 ) {\displaystyle 5=(1;2;0)} 6 = ( 0 ; 0 ; 1 ) {\displaystyle 6=(0;0;1)} 7 = ( 1 ; 1 ; 2 ) {\displaystyle 7=(1;1;2)} 8 = ( 0 ; 2 ; 3 ) {\displaystyle 8=(0;2;3)} 9 = ( 1 ; 0 ; 4 ) {\displaystyle 9=(1;0;4)}
10 = ( 0 ; 1 ; 0 ) {\displaystyle 10=(0;1;0)} 11 = ( 1 ; 2 ; 1 ) {\displaystyle 11=(1;2;1)} 12 = ( 0 ; 0 ; 2 ) {\displaystyle 12=(0;0;2)} 13 = ( 1 ; 1 ; 3 ) {\displaystyle 13=(1;1;3)} 14 = ( 0 ; 2 ; 4 ) {\displaystyle 14=(0;2;4)}
15 = ( 1 ; 0 ; 0 ) {\displaystyle 15=(1;0;0)} 16 = ( 0 ; 1 ; 1 ) {\displaystyle 16=(0;1;1)} 17 = ( 1 ; 2 ; 2 ) {\displaystyle 17=(1;2;2)} 18 = ( 0 ; 0 ; 3 ) {\displaystyle 18=(0;0;3)} 19 = ( 1 ; 1 ; 4 ) {\displaystyle 19=(1;1;4)}
20 = ( 0 ; 2 ; 0 ) {\displaystyle 20=(0;2;0)} 21 = ( 1 ; 0 ; 1 ) {\displaystyle 21=(1;0;1)} 22 = ( 0 ; 1 ; 2 ) {\displaystyle 22=(0;1;2)} 23 = ( 1 ; 2 ; 3 ) {\displaystyle 23=(1;2;3)} 24 = ( 0 ; 0 ; 4 ) {\displaystyle 24=(0;0;4)}
25 = ( 1 ; 1 ; 0 ) {\displaystyle 25=(1;1;0)} 26 = ( 0 ; 2 ; 1 ) {\displaystyle 26=(0;2;1)} 27 = ( 1 ; 0 ; 2 ) {\displaystyle 27=(1;0;2)} 28 = ( 0 ; 1 ; 3 ) {\displaystyle 28=(0;1;3)} 29 = ( 1 ; 2 ; 4 ) {\displaystyle 29=(1;2;4)}

Opérations

Addition et multiplication

Soit A {\displaystyle A} et B {\displaystyle B} deux entiers naturels positifs de représentations respectives ( a 1 , , a n ) {\displaystyle (a_{1},\ldots ,a_{n})} et ( b 1 , , b n ) {\displaystyle (b_{1},\ldots ,b_{n})} . Sur l'ensemble des nombres en représentation RNS, on peut définir les opérations suivantes :

L'addition : A + B {\displaystyle A+B} est représenté par l'ensemble des a i + b i {\displaystyle a_{i}+b_{i}} pour chaque module m i {\displaystyle m_{i}}  ;

La multiplication : A × B {\displaystyle A\times B} est représentée par l'ensemble des a i × b i {\displaystyle a_{i}\times b_{i}} pour chaque module m i {\displaystyle m_{i}} .

Division

Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?

La définition d'une division est plus problématique. Si le diviseur est premier avec chaque module, il est possible d'effectuer simplement une division modulo M = i = 1 n m i {\displaystyle M=\prod _{i=1}^{n}m_{i}} sur chaque résidu. Et si la division est exacte, le problème est réglé.

Dans le cas d'une réduction modulaire d'un nombre A {\displaystyle A} par un autre nombre B {\displaystyle B} , une approche désormais standard est d'utiliser une adaptation de l'algorithme de réduction modulaire de Montgomery. Cependant, il est nécessaire de procéder à des opérations coûteuses de conversion de base[1].

Une fois cette opération de réduction modulaire définie, il devient possible de construire une division euclidienne classique en utilisant la formule évidente A = B × q + A B {\displaystyle A=B\times q+\mid A\mid _{B}} , où A B {\displaystyle \mid A\mid _{B}} est une notation pour A ( mod B ) {\displaystyle A{\pmod {B}}} .

Articles connexes

  • icône décorative Portail des mathématiques
  1. J.C. Bajard, L.S. Didier and P. Kornerup, A RNS Montgomery's Modular Multiplication, journal IEEE Transactions on Computers, volume 47, numéro 7, juillet 1998