Cryptographie : Algorithmes

 

III) Algorithmes plus complexes

          La plupart des algorithmes présentés jusqu'ici sont assez simple, même s'ils permettent d'obtenir un cryptage complexe et sûr en les combinant. Voici donc quelques autres algorithmes un peu plus complexes, basés sur des règles mathématiques plus complexes.

       A) Un cryptosystème sans clé

          Supposons qu'Alice et Bob veuillent communiquer. Ils choisissent P un nombre premier très grand, public. Le message sera chiffré par blocs, assimilés à des nombres M, plus petits que P.

          En effet :

Eb' = Da'.b' = Ca'.b.b' = Ca'= Ma.a' = M [mod P]

       B) Cryptosystème à clé publique (Diffie-Helmann)

          Soit un groupe de N utilisateurs. Voici un protocole à clé publique pour leur permettre de communiquer sans avoir à échanger leurs clés.

       C) Algorithme du "sac à dos"

          Soit une suite (ai) supercroissante, c'est-à-dire que chaque terme de la suite est strictement supérieur à la somme de tous les précédents. Soit N un entier, somme de plusieurs ai. On peut facilement décomposer N pour obtenir la liste des ai correspondants, puisque la suite est supercroissante. Si (bi) est un vecteur de bits, c'est à dire une suite de bits du type (01001011010...), de longueur finie, on codera le message M sous forme binaire : M = (bi) par C = S bi.ai. En retrouvant les ai, on reconstitue donc M facilement.
          Pour compliquer un peu cet algorithme, on choisit m supérieur à la somme de tous les ai, ainsi que u premier avec m et v inverse de u modulo m, tous secrets, et publie (ci) avec ci = u.ai [m].

          Cet algorithme permet à n'importe qui d'envoyer des messages cryptés, mais seul celui qui possède u, v et m peut déchiffrer les messages.

       D) Calcul matriciel

          Ici, le message est assimilé à une matrice colonne M, de dimension n. La clé est une matrice carrée K d'ordre n inversible. On peut alors écrire le message chiffré sous forme d'une matrice colonne C :

C = K.M

          Pour déchiffrer, on calcule alors :

D = K-1.C = K-1.K.M = M

Copyright © BLANC David - 2000


1 Racine primitive : Selon le critère de Lehmer, un nombre P est premier si et seulement si il existe un entier a tel que : a est alors une racine primitive de P.