Un cryptage asymétrique.
Le cryptage RSA se base sur un système à clé publique/clé privée, c'est-à-dire que chaque personne possède deux clés : la clé dite privée que lui seul connaît, qui permet de déchiffrer, et la clé publique qui permet à n'importe qui de crypter un message qui ne sera déchiffrable que par cette clé privée. Les clés publiques sont disponibles dans un annuaire qui n'a pas à être tenu secret.
C'est ce qu'on appelle le cryptage asymétrique.
Principe
Considérons trois personnes : Alice, Bernard et Eve. Alice souhaite envoyer un message à Bernard en toute sécurité ; Eve ne rêve que d'une chose, de décrypter les messages qu'Alice et Bernard échangent.
Alice et Bernard ont choisi le cryptage RSA pour assurer la confidentialité de leurs échanges.
Pour qu'Alice puisse envoyer un message à Bernard, celui-ci doit avoir une clé privée et une clé publique. Pour générer celles-ci, il commence par choisir deux nombres premiers p et q aléatoires de grande taille. Soit N = p * q et soit e, premier avec (p - 1)(q - 1). Le couple (N, e) forme alors la clé publique que Bernard peut mettre à la disposition de tout le monde. Il choisit ensuite le nombre d tel que e*d = 1 [(p-1)(q-1)]. Le couple (N, d) forme la clé privée que seul Bernard connaît.
Les nombre p et q ne sont plus nécessaires ; ils peuvent être éliminés.
Clé publique de Bernard : (N, e) connue par tout le monde
Clé privée de Bernard : (N, d) uniquement connue de Bernard
|
Pour coder le message, Alice commence par découper son texte en groupes de lettres de taille constante. A chacun de ces groupes de lettres, elle associe un nombre selon une méthode connue de tous. Par exemple, si le groupe n'est constitué que d'une seule lettre, on pourra utiliser le code ASCII, qui à chaque lettre associe un nombre compris entre 0 et 255. Ce code est international. Mais attention : n'avoir des groupes constitués que d'une lettre revient à remplacer une lettre par une autre, ce qui est aisément déchiffrable au moyen de tables de fréquence.
On obtient ainsi une liste de chiffres, dont on élève chaque chiffre à la puissance e et on prend le plus petit chiffre tel que :
Ci = Mie [N]
où Mi est le nombre associé au groupe de lettres,
e et N sont les composantes de la clé publique,
Et Ci est le nombre chiffré.
|
Alice transmet ainsi à Bernard la liste des nombres Ci ainsi formés.
Pour décoder, Bernard prend individuellement chaque nombre Ci et obtient le message décodé en élevant les Ci à la puissance d et on prend le plus petit chiffre tel que :
Mi = Cid [N]
où Mi est le nombre associé au groupe de lettres du message décodé,
d et N sont les composantes de la clé privé,
Et Ci est le nombre chiffré.
|