Vous êtes sur la page 1sur 11

Message

Top Secret
Par :

Philippe Lapierre, 5050 avenue des Champs, La Doré, G8J 1B8, 418-256-3564

Pierre-Luc Bouchard, 154 rue Beauséjour, Dolbeau-Mistassini, G8L 2Y5, 418-276-5019

RÉSUMÉ : Lapierre P. et Bouchard P.-L., 2001, Message Top Secret, Expo-


Journal, rapport interne, programme des sciences de la nature, Cégep de St-
Félicien, St-Félicien, 8 pages.

Le programme que nous voulions réaliser à l’aide du logiciel Maple devait


avoir pour but le codage d’un message en utilisant le système d’algorithmes
du protocole RSA. Ce protocole fait partie d’une classe récente de systèmes
cryptographiques que l’on appelle cryptographie à clés révélées. L’étude des
fonctions de programmations Maple ainsi que des fonctions mathématiques
principales ont permis d’arriver à un résultat concluant. Le programme final
a la capacité d’encrypter et de décrypter un texte suivi composé de plusieurs
caractères différents.

MOTS-CLÉS : Mathématiques, programmation, cryptographie, protocole, RSA


L’essor que connaît le domaine des télécommunications depuis les trois ou
quatre dernières décennies est fulgurant. Le meilleur exemple de ce rapide
développement est le réseau Internet. Depuis le développement du world
wide web, les possibilités du réseau Internet ont grandement évolué. Il est
maintenant facile d’envoyer des documents ou de faire des transactions
monétaires sur le réseau. De même, il devient impératif de protéger
adéquatement ces opérations lorsque les détails de celles-ci doivent
demeurer secrets.

La façon la plus efficace de transmettre une information secrète à l’aide d’un


moyen de télécommunication courant est de crypter cette information. De
façon générale, le cryptage est une opération réversible qui consiste à
changer un symbole quelconque par un autre symbole, afin que le message
changé soit illisible pour une personne ne connaissant pas le changement
effectué. Ainsi le message peut être transmis sans que le récepteur ou
l’émetteur de celui-ci s’inquiète du secret de la transmission. Le
changement que l’expéditeur effectue, qui est connu également du
destinataire, peut-être mathématique ou « alphabétique ».

Une des premières méthodes de codage simple et grandement utilisé durant


l’antiquité est d’inverser les lettres d’un message entre elles. Cette façon de
faire comporte un nombre fini d’inversion Il n’est donc pas difficile de
décoder la transmission en effectuant tous les changements possibles.

Une deuxième méthode consiste à remplacer des lettres ou des chiffres d’un
message par d’autres chiffres et ensuite à effectuer des calculs sur ces
derniers. Ces démarches offrent une sécurité plus ou moins grande du fait
que pour décoder la transmission le ou les destinataires doivent connaître
les calculs à effectuer. Ainsi, plus le nombre de destinataires et
d’expéditeurs connaissant les calculs et utilisant ses transformations
mathématiques est grand, moins le code est sûr.

Une troisième méthode de codage utilisé il y a encore trente ans, était


constituée d’un algorithme de calcul ainsi que de nombres de grande taille
appelés clefs. Ces clefs et les algorithmes de calcul sont utilisés pour
transformer mathématiquement chaque élément du message en un message
codé. Bien que ce système puisse sembler sûr, car deux éléments assurent
l’inviolabilité, celui-ci possède le même désavantages que le cryptosystème
précédent.

Finalement, il y a peu près vingt cinq ans, Ronald Rivest, Adi Shamir, et
Leonard Adleman du MIT ( Massachusetts institute of technologies ) se sont
inspirés d’un système de codage théorique afin de créer le protocole de
cryptage RSA qui est à la base de tous ceux dont on se sert actuellement.

Message Top Secret M08.2


Le cryptosystème à la base de ce protocole se nomme cryptographie à clef
révélée. Celui-ci utilise également des algorithmes et des clefs, mais a
comme particularité d’utiliser une clé de codage différente de la clé de
décodage. Cette particularité est due aux calculs complexes utilisés et
permet à n’importe qui de crypter une transmission et à une seule de
pouvoir la décoder.

CRYPTOGRAPHIE À CLEF RÉVÉLÉE

L’explication du cryptosystème à clé révélée qui suit, est adaptée au réseau


Internet et est un schéma de base du Protocole RSA. Celui-ci permet de
comprendre plus facilement cette manière de coder les messages.

Figure 1 : Diagramme simplifié de la cryptographie à clef révélée.

Comme il est possible de le constater à la figure 1, lorsqu’une personne


désire recevoir des communications secrètes sur Internet, celle-ci doit
effectuer une opération avant de pouvoir recevoir une transmission. Par
l’intermédiaire d’un logiciel générateur de nombres, la personne doit créer
deux clefs. La première, la clé de codage ou clé publique, est envoyée sur le
réseau Internet et est stockée sur un serveur qui sert d’annuaire public.
N’importe qui possédant le logiciel de cryptage peut avoir accès a cet
annuaire. Pour ce qui est de la deuxième clé, la clé privée, celle-ci est
soigneusement gardée secrète par le récepteur du message ou destinataire.

Lorsque cette étape est réalisée, une personne voulant envoyer un message,
un expéditeur, va chercher sur le serveur la clé publique du destinataire qu’il
veut rejoindre. Ensuite à l’aide du logiciel et la clé de codage l’expéditeur
crypte le message et le transmet sur le réseau, au destinataire.

Message Top Secret M08.3


Enfin, quand le destinataire reçoit le message, celui-ci applique, à l’aide de la
clé privée, une série de calculs qui permettent de décoder le message
transmis, pour qu’ainsi le message codé reprenne sa forme initiale. Il est
important de noter que la clé est différente et que ces calculs sont l’inverse
de ceux utilisés pour le codage.

PROTOCOLE RSA

Maintenant, précisons le fonctionnement du protocole RSA à l’aide de ce


diagramme.
Clé de codage Expéditeur
E,n

Texte en clair
Clé secrète
D,n Message en
-1
l dé i l
D = E modulo
φn
φ(n) = (p - 1) (q - 1)
n=pxq Blocs de nombres
P1 , P2 , ...
E,p,q
Texte codé

Générateur C = P1E modulo n


de C PE d l
nombres
lé t i
Transmission

Destinataire
Rétablissement du
texte
décimal

P1 = C1D modulo n

Figure 2 : Diagramme représentant les étapes de codage et


décodage selon le protocole RSA.
Comme le protocole RSA est de la cryptographie à clef révélée, avant de
pouvoir recevoir un message le destinataire, par l’intermédiaire d’un logiciel
doit effectuer quelques étapes.
Ainsi, l’ordinateur de ce dernier détermine aléatoirement trois nombres
premiers très grand, qu’on nomme p, q, E. Lorsque les « professionnels »
du cryptage désirent protéger convenablement leur communication, ceux-ci
font générer des nombres d’au moins 100 chiffres et tous les calculs
nécessaires au codage sont faits à l’aide d’un ordinateur. Après avoir généré
ces nombres, l’ordinateur du récepteur effectue trois calculs qui permettront
d’élaborer les clefs, les voici.

Message Top Secret M08.4


D = E-1 modulo φ(n) (1.1)
φ(n) = (p - 1) (q - 1) (1.2)
n=pxq (1.3)

Faisons une parenthèse pour expliquer en quoi consiste l’opération


mathématique modulo. Simplement, disons que le modulo est le reste d’une
division. Ainsi,

18 modulo 4 = 2 (1.4)

L’étape suivante du cryptage, consiste à rassembler les chiffres E et n


ensemble pour former la clé de codage et les chiffres D et n pour former la
clé secrète. Après avoir placé la clé de codage dans un annuaire publique,
comme sur un serveur Internet, le destinataire est près à recevoir des
transmissions.

Ainsi, un expéditeur voulant envoyer un message, commence par changer


tous les symboles de son message par des chiffres. Le tableau 1
correspond à un exemple de changement de symbole.

Cette inversion de symbole crée un très grand nombre ( en fonction du


message initiale ). Pour faciliter les calculs de transformation, ce grand
nombre est divisé en plus petits nombres de quatre chiffres que l’on appelle
P. Il est important de considérer cette série de chiffres comme un vecteur
informatique ou variable indicée afin que l’ordinateur les traite et les range à
la bonne place à la fin des calculs.

Tableau 1 : Tableau des correspondances entre les symboles du


message non-codé et les nombres décimaux utilisés
= 10 a = 11 b =12 c = 13 d =14
e =15 f =16 g = 17 h = 18 i = 19
J = 20 k = 21 l = 22 m = 23 n = 24
o = 25 p = 26 q = 27 r = 28 s =29
t = 30 u = 31 v = 32 w = 33 x =34
y =35 z = 36 é = 37 è = 38 ê = 39
à = 40 â = 41 î = 42 ï = 43 ù = 44
û = 45 ô = 46 A = 47 B = 48 C = 49
D = 50 E = 51 F = 52 G = 53 H = 54
I = 55 J = 56 K = 57 L = 58 M = 59
N = 60 O = 61 P = 62 Q = 63 R = 64
S = 65 T = 66 U = 67 V = 68 W =69
X = 70 Y = 71 Z = 72 É = 73 È = 74
Ê = 75 À = 76 Â = 77 Î = 78 Ï = 79

Message Top Secret M08.5


Ù = 80 Û = 81 Ô = 82 1 = 83 2 = 84
3 = 85 4 = 86 5 = 87 6 = 88 7 = 89
8 = 90 9 = 91 0 = 92 . = 93 , = 94
« = 95 + = 96 - = 97 = = 98 * = 99

Après cette étape l’ordinateur de l’émetteur effectue le calcul suivant pour


chaque bloc P.

C1 = P1E modulo n (1.5)

Cette phase terminée, l’ordinateur prend le nombre résultant ( C ) et ajoute


des zéros devant celui-ci jusqu'à ce qu’il ait la longueur du nombre n.
Ensuite, le système prend les nombres C ajouté de zéros et les regroupe
tous ensemble pour former un autre très grand nombre. C’est ce grand
nombre qui est alors transmis sur Internet ou encore sur les ondes radio.
On peut appeler ce nombre message codé.
Lorsque le destinataire reçoit le message codé, l’ordinateur de celui-ci divise
le grand nombre en plus petit nombre de longueur n. Ces petits nombres
sont les nombres C. Ensuite, celui-ci applique la série de calculs suivante.

P1 = C1D modulo n (1.6)

Comme il est possible de constater, la réponse de la précédente équation est


le nombre P, le même P qui à servi au codage du message. Quand tous les
calculs de C sont effectués, les nombres P résultants sont placés côte à côte
dans l’ordre du début. Finalement, il suffit à l’ordinateur de remplacer
chaque nombre de deux chiffres en partant du premier, pour ainsi obtenir le
message du début.
Ainsi, comme il est possible de constater, la réalisation d’un programme de
cryptage selon le protocole RSA est à la portée de gens ayant une base en
informatique. Nous nous sommes donc fixer comme objectif à la suite de
cette observation, de concevoir un programme de codage et de décodage
qui fonctionne selon le protocole RSA et ce à l’aide du logiciel de
mathématique et de programmation Maple.

NOTRE PROGRAMME

Pour la programmation, nous avons choisi l’interface Maple à cause des


nombreuses fonctions déjà intégrées (Tableau 1). Celles-ci sont très bien
expliquées dans l’aide qui fait partie intégrante du logiciel et dont nous
n’aurions pas pu nous passer au cours de la programmation. La tâche qui
consiste à trouver les fonctions particulières et nécessaires à la conception a
été une difficulté au cours de la programmation. Les principales fonctions de
Maple que l’on a utilisé sont les suivantes :

Message Top Secret M08.6


Tableau 2 : Principales fonctions de programmation
Fonction Signification
nextprime Trouve le prochain nombre premier après un nombre donné.
rand Génère un nombre aléatoire dans un intervalle donné.
cat Concatène (ajouter à la fin ou au début) une valeur a une
autre valeur donné.
length Détermine la longueur d’une chaîne de caractères.
substring Extrait les valeurs d’une chaîne de caractères pour un
intervalle donné.
convert Converti dans un autre système de numération ou dans un
autre type de variable.
parse Converti une variable en type integer utilisée pour les
calculs.
mul Multiplie une séquence de valeurs entre elles.
modp Effectue le modulo des valeurs données.
read Lit un fichier extérieur au programme.
save Enregistre des données dans un fichier extérieur au
programme.

Comme mentionné plus haut, ces fonctions ont été prises tel quel pour
faciliter et alléger la programmation. Ces fonctions ont, par la suite, été
elles-mêmes utilisées dans d’autres fonctions plus générales à la base de la
programmation.

La première expression globale importante de notre programmation est la


boucle. Celle-ci est l’atout majeur pour manipuler les vecteurs utilisés tout
au long du processus de codage et de décodage. Maple utilise des boucles
de type :

for valeur1 from 1 to valeur2 do


fonction
od;

La valeur1 est la variable changeante au sein de la boucle et dans notre cas


présent : l’indice du vecteur. La valeur2 définit la fin de l’intervalle, c’est-à-
dire où doit se terminer la boucle. Dans le cas présent, celle-ci est la
longueur du vecteur. La fonction est l’opération ou la série d’opérations à
effectuer le nombre de fois déterminé dans l’intervalle. Il suffit alors de

Message Top Secret M08.7


définir une variable indice, un intervalle et la ou les opérations et celle(s)-ci
s’effectueront pour les composantes voulues.

La deuxième fonction globale importante est la condition. Celle-ci a été


utilisée particulièrement pour évaluer le contenu de vecteurs. Maple utilise
des conditions de type :

If condition
then
fonction1
else
fonction2
end if;

La condition est un énoncé logique qui sert à la comparaison entre deux


valeurs à l’aide des signes : <, > ou =. Ensuite, il faut spécifier la fonction1
qui va avoir lieu si la condition est vraie et la fonction2 si la condition est
fausse.

De plus, le programme que nous avons fait s’intègre totalement dans un


système de fichiers. Ce principe de fractionnement du programme est très
utile lors de la transmission des messages, car les utilisateurs peuvent
transmettre uniquement les fichiers nécessaires au codage ou décodage de
données.

Par exemple, le destinataire peut publier uniquement la clé publique ou


l’émetteur peut seulement envoyer le message codé par un réseau, comme
Internet. On voit l’importance et même l’obligation d’utiliser ce système
pour la fonctionnalité et l’inviolabilité du programme. Il est important de
mentionner que les fichiers d’extension .mws sont de type Maple et les .txt
sont des fichiers textes standards.

Le système de fichiers utilisé est le suivant :

nombres.mws
↓ ↓
clefpub.txt clefpriv.txt

Figure 3 : Pour générer les clefs.

Message Top Secret M08.8


message.txt clefpub.txt
↓ ↓
encode.mws

messagecoder.txt

Figure 4 : Pour encoder le message.

messagecoder.txt clefpriv.txt
↓ ↓
decode.mws

messagedecoder.txt

Figure 5 : Pour décoder le message codé.

L’opération qui génère les clés (figure 3) est exécutée par le destinataire. Il
doit exécuter le fichier nombres.mws qui donne comme résultats les deux
fichiers clefpub.txt et clefpriv.txt. Ensuite, l’émetteur doit encoder le
message (figure 4). Il lui suffit d’entrer un message dans message.txt et
d’exécuter encode.mws. Le fichier va lire clefpub.txt et message.txt et
donnera comme résultat messagecoder.txt . Celui-ci est le code à
transmettre et seul le destinataire peut le décoder. Ce destinataire va
décoder (figure 5) en exécutant decode.mws. Le programme va lire
messagecoder.txt et clefpriv.txt et redonner le message initial de l’émetteur
dans messagedecoder.txt .

RÉSULTATS

Le résultat final est le programme en tant que tel. Celui-ci fonctionne


correctement et permet de coder et de décoder parfaitement un message. Il
est aussi capable de générer deux clés dépendantes et cela aléatoirement.
Cependant, les limites que celui-ci impose quant à la grosseur des clés sont
importantes. Pour une utilisation facile et rapide, les nombres D et E des
clés doivent compter au plus 4 chiffres. Lorsqu'ils comportent 6 chiffres
chacun, le résultat est encore intéressant mais si on augmente au-delà de
cette limite, le travail devient trop long et pénible.

L'autre problème majeur et qui pourrait expliquer la lenteur d'exécution du


programme, est le fait que celui-ci ne soit pas compilé. En effet, un
programme compilé s'exécute beaucoup plus facilement et rapidement que
sous la forme de ligne de code. Maple peu générer un code en langage C
prêt pour la compilation.

Message Top Secret M08.9


La plus grande force de notre projet est sûrement l'utilisation d'un système
de fichiers. Pour un programme de type cryptage, la transmission n'est pas
à négliger et est même à considérer en priorité. Ce principe permet
aisément la transmission du message codé et la diffusion de clés destinées à
un large public. Celles-ci sont très facilement transmissibles par un réseau
ou par Internet.

L'autre caractéristique qui a permis d'arriver au résultat escompté dans les


délais est le fait d'utiliser le programme Maple. Les fonctions et les
algorithmes intégrés ont permis d'avancer plus rapidement dans la
conception.

IMPACT DU PROJET

Malgré ses limites, le programme est quant même intéressant à consulter


pour pouvoir voir et comprendre le principe de cryptage à clé révélée. Ce
principe est couramment utilisé dans la vie de tous les jours par un grand
nombre de gens sans le savoir et c'est sur lui que repose des secrets très
importants. En effet, le courriel ainsi que les transactions bancaires par
carte magnétique doivent être protégées et c'est à un système semblable au
nôtre que les professionnels font appel. Ainsi, pour obtenir une variante, il
faut changer les algorithmes.

SUGGESTIONS

Notre projet serait très intéressant à améliorer et comporte des facettes


importantes qui ouvre la porte plusieurs projets. Pour améliorer le projet, il
faudrait absolument trouver un algorithme qui permettrait de calculer
rapidement le modulo de très grands nombre. Nous en avons déjà utilisé un
qui facilite les calculs en exprimant les exposants sous une forme binaire. Il
n'est pas parfait, car celui-ci répète toujours les mêmes calculs. Il faudrait
lui intégrer une fonction pour que le programme garde en mémoire les
calculs exécutés auparavant.

Cela aurait pour effet de modifier grandement la vitesse de calcul et serait


un grand pas dans l'avancement de ce projet. Par la suite, la compilation
serait un atout précieux et permettrait des résultats forts intéressants.

De plus, le système de fichiers est intéressant mais il n'est pas pratique pour
la consultation rapide et l'utilisation. La solution à ce problème pourrait être
la programmation d'une interface simple qui pourrait permettre de manipuler
facilement et à l'aide d'opérations faciles les différents fichiers. Elle pourrait

Message Top Secret M08.10


aussi permettre d'entrer le message de façon plus esthétique et plus
pratique.

REMERCIEMENT

Les auteurs tiennent à remercier notre professeur de mathématiques au


CÉGEP de Saint-Félicien, pour son aide précieuse tant sur le plan
mathématique qu'informatique.

MÉDIAGRAPHIE

Delahaye, J-P. Janvier 2000. La cryprographie RSA vingt ans après. Pour la
science, p.104-108.
Heal, K. M., Hansen, M. L., et Rickard, K. M. 1998. Maple V – Learning
Guide. Waterloo Maple Inc., Waterloo, Canada, 284 p.
Heal, K. M., Geddes, K. O., Monagan, M. B., Labahn, G., et Vorkoetter, S. M.
1998. Maple V – Progamming Guide. Waterloo Maple Inc., Waterloo, Canada,
380 p.
Hellman, M. Septembre 1979. Les mathématiques de la cryptographie à clef
révélée. Pour la science, p.114-123.
http://www.gel.ulaval.ca/~parizeau/ift19496/Projet/Projet.html, Projet du
département du génie électrique de l'Université Laval.

Message Top Secret M08.11