Théorie des groupes et cryptographie

Les mathématiques sont l’étude de structures abstraites. Un ensemble d’éléments avec des caractéristiques bien définies constitue une structure. La nature des éléments n’importe peu. L’abstraction est ce qui fait la puissance des mathématiques.

Comme son nom l’indique, la théorie des groupes étudie la structure de groupe. Elle est utile pour concevoir des solutions au Rubik’s Cube. Elle devient indispensable en chimie ainsi qu’en cryptographie.

Cet article s’adresse aux lecteurs ayant déjà des bases dans le raisonnement mathématique. L’objectif est de présenter les résultats élémentaires de la théorie des groupes, et de les appliquer pour démontrer le fonctionnement de la cryptographie RSA.

Les démonstrations des propositions simples ne sont pas indiquées, celles des propositions plus avancées sont suggérées. Toutes les démonstrations peuvent être détaillées dans une prochaine version de l’article.

Sommaire

  1. Groupes et sous-groupes
  2. Théorème de Lagrange
  3. Groupe quotient
  4. Le groupe quotient Z/nZ
  5. Protocole RSA
  6. Conclusion

Groupes et sous-groupes

Définition : un ensemble GG est un groupe si :

Si la loi est commutative, on dit que le groupe est abélien.

Exemple : (Z,+)(\mathbb{Z}, +) est un groupe abélien.

Proposition : soit GG un groupe, alors :

Définition : Soit HH un sous-ensemble d’un groupe GG, HH est un sous-groupe de GG si HH est aussi un groupe sous la loi de composition de G.G.

Proposition : HH est un sous-groupe de GG si pour tout a,bHa,b \in H, ab1H.ab^{-1} \in H.

Proposition : Soit GG un groupe, aGa \in G. On définit a={ak:kZ}\langle a \rangle = \{a^k : k \in \mathbb{Z}\}. Alors a\langle a \rangle est un sous-groupe abélien de GG. a\langle a \rangle est le sous-groupe généré par a.a.

Proposition : Tout sous-groupe de (Z,+)(\mathbb{Z}, +) est de la forme nZn\mathbb{Z} avec nZn \in \mathbb{Z}.

Définition : Soit GG un groupe et aGa \in G :

Proposition : Soit GG un groupe et aGa \in G. Si a|\langle a \rangle| est fini, égale à nn, alors a={e,a,a2,,an1}\langle a \rangle = \{e, a, a^2, \dots, a^{n-1}\}, et an=ea^n=e .

Démonstration : Il existe un entier k>0k>0, tel que ak=ea^k=e. Le plus petit entier vérifiant cette propriété ne peut être que nn.

Proposition : Soit GG un groupe et aGa \in G, alors a=a|a| = |\langle a \rangle|. Autrement dit, l’ordre d’un élément est égal à l’odre du sous-groupe généré par cet élément.

Théorème de Lagrange

Définition : Soit GG un groupe et HH un sous-groupe de GG. Pour tout aGa \in G, on définit aHaH la classe à gauche de GG suivant HH (dénommée coset en anglais). Plus précisément :

Proposition : Les aHaH (aGa \in G) forment une partition de GG.

Démonstration : pour tout aG,aaHa \in G, a \in aH car eHe \in H. Les aHaH forment donc des ensembles non-vides qui couvrent GG. Il reste à montrer que deux tels ensembles distincts sont disjoints. Soit aHaH et bHbH distincts. On montre qu’ils sont disjoints par l’absurde. On peut montrer que si un élément appartient aux deux cosets, alors ces deux cosets sont égaux, ce qui contredit l’hypothèse.

Proposition : aba \sim b si aH=bHaH = bH définit une relation d’équivalence.

Proposition : f:HaHf : H \to aH telle que f(h)=ahf(h) = ah est une bijection. Donc H=aH|H| = |aH|.

Théorème de Lagrange : Si GG est un groupe fini et HH un sous groupe de GG, alors H|H| divise G|G|.

Démonstration : les cosets forment une partition de GG et comme GG est fini, il existe un nombre fini de cosets distincts : a1H,a2H,,arHa_1H, a_2H, \dots, a_rH et G=a1H+a2H++arH|G| = |a_1H| + |a_2H| + \dots + |a_rH| et comme aiH=H|a_iH| = |H|, on a G=rH|G| = r |H|.

rr est l’index de HH dans GG et se note [G:H][G:H]. On peut donc écrire que :

G=[G:H]×H|G| = [G:H] \times |H|

Proposition : Soit GG un groupe fini d’ordre nn, alors pour tout élément aGa \in G, an=ea^n=e.

Démonstration : Soit a=k|a| = k, on sait que ak=ea^k=e. D’après le théorème de Lagrange, kk divise nn, il existe un entier mm tel que n=kmn=km. Donc an=akm=(ak)m=em=ea^n=a^{km}=(a^k)^m=e^m=e.

Groupe quotient

Définition : Soit HH un sous-groupe du groupe GG, HH est normal si pour tout aGa \in G, aH=HaaH=Ha.

Définition : on définit G/H={aH:aG}G/H = \{aH : a \in G\}. C’est l’ensemble des cosets de HH ou classes (d’équivalence) suivant HH.

Proposition : si HH est un sous-groupe normal de GG, alors G/HG/H est un groupe sous la loi suivante : aHbH=(ab)HaH \cdot bH=(ab)H.

Note : G/HG/H est le groupe-quotient de GG par rapport au sous-groupe HH. Les éléments d’un groupe quotient sont des classes d’équivalence, c’est-à-dire des sous-ensembles d’éléments de GG.

Démonstration :

Le groupe quotient Z/nZ\mathbb{Z}/n\mathbb{Z}

nZn\mathbb{Z} est un sous-groupe de (Z,+)(\mathbb{Z}, +), clairement normal. Les cosets de ce sous-groupe sont de la forme a+nZ{a + n\mathbb{Z}}, qu’on note a\overline a.

On définit la relation d’équivalence ab(modn)a \equiv b \pmod n si a=b\overline a = \overline b.

Cela signifie que :

On sait que (Z/nZ,+)(\mathbb{Z}/n\mathbb{Z}, +) est un groupe. Et comme il y a nn restes possibles par la division euclidienne par nn, on a Z/nZ={0,1,,n1}\mathbb{Z}/n\mathbb{Z}=\{\overline 0, \overline 1, \dots, \overline{n-1}\}.

On a vu précédemment la définition de la loi du groupe quotient :

a+b=a+b\overline a + \overline b = \overline{a+b}

De façon similaire, on peut définir une loi de multiplication dans Z/nZ\mathbb{Z}/n\mathbb{Z} :

ab=ab\overline a \cdot \overline b = \overline{a \cdot b}

On peut vérifier que cette loi est bien définie. En revanche, (Z/nZ,)(\mathbb{Z}/n\mathbb{Z}, \cdot) n’est pas un groupe. Par exemple 0\overline 0 n’est pas inversible.

On définit Z/nZ={aZ/nZ:a inversible}\mathbb{Z}/n\mathbb{Z}^* = \{\overline{a} \in \mathbb{Z}/n\mathbb{Z}: \overline{a} \text{ inversible}\}, alors on peut montrer que (Z/nZ,)(\mathbb{Z}/n\mathbb{Z}^*, \cdot) est bien un groupe.

Soit aZ/nZ\overline a \in \mathbb{Z}/n\mathbb{Z}^*,

alors il existe bZ/nZ\overline b \in \mathbb{Z}/n\mathbb{Z}^* tel que :

On montre ainsi que Z/nZ=Φ(n)| \mathbb{Z}/n\mathbb{Z}^* | = \Phi(n), Φ\Phi étant l’indicatrice d’Euler.

Protocole RSA

Chiffrement RSA

On choisit pp et qq deux nombres premiers très grands et on forme n=pqn=pq. On a Φ(n)=(p1)(q1)\Phi(n)=(p-1)(q-1).

Soit eZ/Φ(n)Z\overline e \in \mathbb{Z}/\Phi(n)\mathbb{Z}^* (choix quelconque, e pour encryption) et d\overline d son inverse. On a donc :

ee et dd sont les représentants uniques de leurs classes <Φ(n)< \Phi(n).

On se place maintenant dans le groupe (Z/nZ,)(\mathbb{Z}/n\mathbb{Z}^*, \cdot) qui a pour ordre Φ(n)\Phi(n).

Soit MZ/nZ\overline M \in \mathbb{Z}/n\mathbb{Z}^* un message à chiffré ; on prend l’unique représentant M<nM < n. Si le message est trop grand, on le chiffre par bloc.

Démonstration :

Sécurité du protocole RSA

La sécurité de ce protocole s’appuie sur le fait que la connaissance de la clé publique (e,n)(e,n) ne permet pas de déduire la clé privée (d,n)(d,n). Le nombre nn étant déjà publique, pour trouver dd, un hacker devra connaître la décomposition de nn en facteurs premiers (trouver pp et qq). A partir de pp et qq, il pourra calculer Φ(n)\Phi(n) et trouver dd sans peine.

Il est très difficile de décomposer un grand nombre en facteurs premiers, mais il est facile de vérifier une solution (si on donne pp et qq, il est simple de vérifier que nn est bien égal à pqpq).

Pour des nombres pp et qq choisis suffisamment grands (au moins 2048 bits), le chiffrement RSA est considéré comme très sûr avec la technologie informatique actuelle et pour un avenir prévisible. La principale menace pour RSA serait un progrès significatif dans la technologie, notamment le développement des ordinateurs quantiques, qui pourraient potentiellement casser le chiffrement RSA en utilisant des algorithmes quantiques, comme l’algorithme de Shor.

Signature numérique

Celui qui envoie un message peut le signer en utilisant sa clé privée. Pour se faire il hache d’abord le message selon un protocole convenu (via une fonction de hachage cryptographique) et obtient HZ/nZ\overline H \in \mathbb{Z}/n\mathbb{Z}^*.

H=hash(M)H = \text{hash}(M), avec H<nH < n

Il génère ensuite une signature sur le hash du message : S=Hd\overline{S} = \overline{H}^d.

La signature consiste à envoyer S<nS < n avec le message MM.

Vérification : Se=H\overline{S}^e = \overline{H}, en effet :

Le destinataire peut alors vérifier que le hash correspond bien à celui du message reçu.

Conclusion

La théorie des groupes est un outil puissant pour la cryptographie. Elle permet de comprendre le fonctionnement et de démontrer le protocole RSA. Elle devient encore plus indispensable pour les protocoles de cryptographie plus modernes basés sur les courbes elliptiques.