Bonjour,
Aujourd’hui je vais
vous montrez comment crypter et décrypter des messages grâce à la cryptographie
en se basant sur le programme PGP. Mais tout d’abord,
Qu’est-ce
que la cryptographie ?
La cryptographie est
une discipline incluant les principes, les moyens et les méthodes de
transformation des données, dans le but de masquer leur contenu, empêcher leur
modification ou leur utilisation illégale, ainsi que les opérations inverses,
pour rendre le document à nouveau intelligible. Ainsi, la cryptographie assure
la confidentialité, l’authenticité et l’intégrité des messages.
Il existe deux types de
cryptographie :
La
cryptographie symétrique
La cryptographie
symétrique, dite également cryptographie ou chiffrement à clé secrète ou privée,
consiste à chiffrer et déchiffrer des messages à l’aide de la même clé ;
La
cryptographie asymétrique
La cryptographie
asymétrique, ou chiffrement à clé privée et publique, consiste quant à elle, à
chiffrer et déchiffrer des messages à l’aide d’une paire de clés, une paire
composée d’une clé publique, qui va servir au chiffrement, et d’une clé privée,
qui servira elle à déchiffrer.
La cryptographie se
distingue de la stéganographie en ce qu’elle rend inintelligible le message à
autre qu’à qui de droit alors que la stéganographie quant à elle fait passer
inaperçu un message en cachant ce dernier dans un autre message.
(Ps: plus
ample détail sur la stéganographie dans mon article consacré au sujet ici)
Qu’est-ce
que PGP ?
PGP (Pretty Good
Privacy), est un programme de cryptage, c’est un système hybride que l’on peut
classer dans les systèmes à « clé de
session », c'est-à-dire, un système qui utilise à la fois le principe
du chiffrement à clé privée et le principe du chiffrement à clé publique. PGP
offre toutes les fonctionnalités d’un cryptosystème complet : cryptage,
décryptage, signature, certificat. PGP possède de nombreux avantages tels que,
la rapidité de chiffrement et déchiffrement et également un haut niveau de
sécurité.
A présent que vous en
savez un peu plus sur la cryptographie et PGP, nous pouvons à présent entrer
dans le vif du sujet,
Le scénario de notre
simulation est semblable à la topologie suivante :
Nous avons donc deux
entités jacques et goueth qui vont via internet,
s’échanger des messages chiffrés grâce à PGP, et à la réception de ces messages,
ils vont les déchiffrer toujours grâce à PGP. Nous allons mettre en application
ici deux méthodes de chiffrement et déchiffrement à savoir symétrique et
asymétrique basé sur PGP.
Comment
chiffrer et déchiffrer des messages avec PGP de manière asymétrique ?
Le principe est le
suivant :
Après s’être échangé
les clés via un canal « sûr » ou « sécurisé » (rencontre en
face-à- face, …), l’émetteur pour envoyer un message crypté au récepteur, va
chiffrer le message avec la clé publique du récepteur, qui à son tour à la
réception du message va déchiffrer le message avec sa propre clé privée.
En pratique, pour ce
faire avec PGP, nous devons suivre les étapes suivantes :
Tout d’abord, s’assurer
que le programme de cryptage PGP est installé sur les systèmes qui souhaitent
communiquer de manière sécurisée.
(Ps: la
majorité des systèmes GNU/Linux intègrent déjà le programme PGP au sein de leur
logiciel, dans notre cas ici, nous ferons donc notre simulation sur des
systèmes d’exploitation Ubuntu)
Ainsi, pour vérifier
que PGP est bien présent dans le système, nous entrons la commande « pgp » dans le terminal :
Nous constatons que le
programme cryptographique PGP est bien installé, ensuite, chacune des entités
qui souhaitent communiquer de manière asymétrique dans notre cas ici jacques et goueth doivent générer une paire de clés : une clé publique
qui sera échangée avec les autres communicants, et une clé privée qui devra
impérativement garder et rester secrète, ainsi pour générer une nouvelle paire
de clés, nous entrons la commande « gpg
--gen-key » :
A la suite de cette
commande PGP nous demande de choisir quel type d’algorithme de chiffrement sera
utilisé par la paire de clés que l’on souhaite générer, nous choisirons la
première option RSA (Rivest Shamir Adleman), parce que c’est un algorithme de
chiffrement à double clé donc asymétrique et qui de plus utilise seulement des
nombres premiers et donc la structure jusqu’à présent s’est révélé assez fiable
et sûre d’un point de vue sécuritaire, le programme PGP nous invite également à
définir la taille en bits des clés, dans notre cas, nous optons pour 2048 bits
pour rendre le chiffrement plus « robuste » et « efficace »,
et enfin, nous devons également déterminer la durée (en terme de jours,
semaines, mois ou années) de validité de la paire de clés à générer :
Puis, nous devons
définir un utilisateur pour chaque paire de clés créées, cet utilisateur permet
d’associer la paire de clés créées avec une personne physique, en renseignant
certaines informations « personnelles » du propriétaire de la dite clé.
A présent, le programme
PGP à besoin que nous lui indiquons un mot de passe qui représente en fait ici
notre clé secrète ou privée, c’est cette clé secrète qui permettra à nos
personnes désirants communiquées de déchiffrer les messages qui leur seront
envoyés :
(Ps: ce mot
de passe doit être connu de vous et vous seule, d’où son appellation de clé
secrète (:)), il va donc de soit que ce
mot de passe doit être soigneusement choisi.)
Après avoir entré le
mot de passe, le programme PGP va lancer la procédure de génération
« aléatoire » de la paire de clés, en s’inspirant des quelques
informations enregistrées précédemment, mais de plus, il faudra fournir au
système d’exploitation une aide à travers certaines actions comme bouger
le curseur de la souris, taper au clavier, utiliser les disques, … pour
augmenter l’aspect « aléatoire » du programme PGP pour générer une
paire de clés plus « efficace » on parle également
« d’entropie »,
Dans notre cas par
exemple, pour augmenter le caractère aléatoire du programme, nous décidons d’effectuer
des opérations de multiplications et division avec des nombres très grands :
Au bout d’un certain
laps de temps, nos paires de clés sont générées avec succès,
Maintenant que les
paires de clés ont été générées avec succès nos entités peuvent dorénavant
s’échanger des messages de manière sécurisée via un chiffrement et
déchiffrement asymétrique.
Nous pouvons vérifier
que la paire de clés a été bien générée avec la commande « gpg - - list – key »
A présent, les entités
doivent partager leur clé publique avec toutes personnes avec qui elles
souhaitent communiquer, par conséquent chaque entité doit exporter sa clé
publique, avec le programme PGP ceci se fait avec la commande « gpg - -export - -output nom_clé »
Il est aussi important
de noter que la clé exportée avec la commande précédemment entrée sera dans un
format « binaire »,
Qui peut souvent
s’avérer problématique si la clé doit être envoyée par email ou publiée sur une
page web, raison pour laquelle il est plus judicieux d’ajouter à la commande
précédente le paramètre « --armor »,
Qui va causer
l’exportation de la clé publique dans un format ASCII, cet encodage permettra
que la clé soit échangée via divers canaux sans encombre.
Une fois les clés publiques
exportées, les entités peuvent se les échanger, via le canal qui les
conviendra email, serveur spécialisé de clés, disque amovible, …
Dans notre cas, nous
utiliserons un outil de transfert du nom
de SCP (Secure Copy), du protocole SSH (Secure Shell) : « scp fichier_a_transférer
nom_utilisateur@adresse_ip :chemin_destination »
Une fois les clés
échangées, chaque entité doit préciser au programme PGP de prendre en compte la
nouvelle clé sauvegardée et de l’ajouter dans son « trousseau de
clés », ceci est rendu possible grâce à la commande « gpg - - import nom_clé » ou « gpg - - import * » :
Suite à cette commande,
le programme PGP nous notifie que la nouvelle clé sauvegardée a été importée
avec succès,
Et si on entre de
nouveau la commande « gpg - - list –
key », nous constatons que chacune des entités dispose actuellement
dans son trousseau de clés, la clé publique de la personne avec qui elle
souhaite communiquer,
C’est cette clé
publique qui permettra donc de chiffrer les messages.
Supposons à présent que
l’entité goueth souhaite envoyer un
message chiffré à jacques, que ce
dernier sera le seul en mesure de lire. Pour ce faire, nous devons tout d’abord
naturellement rédiger le message « secret »
que l’on veut transmettre :
Une fois le message
rédigé, il est pour l’instant « en
clair », lisible par n’importe qui du peu qu’il réussit à intercepter
le message, pour rendre illisible ce message par un tiers autre celui à qui il
est adressé, nous devons à présent chiffrer le message avec la commande « gpg - - armor - - encrypt message »,
Après avoir validé
cette commande, le programme PGP va demander à l’émetteur, (dans notre cas ici goueth) d’enter l’identifiant de la clé
publique du récepteur du message (dans notre cas jacques) :
Une fois l’opération
arrivée à terme, un nouveau fichier avec l’extension « .asc » fait son apparition dans les dossiers de
l’émetteur,
En parcourant ce
fichier, nous constatons qu’il est rempli de caractères
« incompréhensibles »,
Ces caractères sont en
fait la forme chiffrée de notre message « en clair »,
précédemment rédigé.
Il ne reste plus qu’à
transmettre le message chiffré à celui à qui il est destiné à travers le canal
qui nous convient, soit par la voie des réseaux sociaux,
Ou encore, via des
disques amovibles, emails, messageries instantanées, …
A présent, notre
récepteur n’a plus qu’à « copier-coller » le message, ou alors le
télécharger (si le message est envoyé en pièce jointe)
Qui peut alors grâce à
sa clé privée déchiffrer le message « secret »
qui lui est destiné, avec la commande « gpg -
- armor - - decrypt message »
Après avoir validé la
commande précédente, le destinataire du message est invité à entrer un mot de
passe, ce mot de passe est en réalité sa clé privée et correspond au mot de
passe renseigné lors de la création de la paire de clés avec le programme PGP tout
à l’heure effectué.
Et si le mot de passe,
donc la clé privée correspond, le programme PGP du destinataire déchiffre alors
le message et le destinataire peut apercevoir le message secret « en clair » :
Dès lors, l’objectif
recherché par les deux correspondants qui est de communiquer de manière
sécurisée via le chiffrement asymétrique est atteint avec succès.
A présent, nous allons
nous intéresser au chiffrement et déchiffrement symétrique des messages via
PGP.
Comment
chiffrer et déchiffrer des messages avec PGP de manière symétrique ?
Le principe est le
suivant :
Après s’être échangé la
clé via un canal « sûr » ou « sécurisé », l’émetteur pour
envoyer un message crypté va chiffrer le message avec une clé secrète puis
transmettre la clé secrète au récepteur, qui aura besoin de la même clé secrète
pour déchiffrer le message secret.
(Ps: le
problème fondamental de la cryptographie symétrique est le problème de
l’échange des clés, quel canal de communication sûr peut être utilisé pour
communiquer la clé elle-même ? c’est l’un des avantages de la
cryptographie asymétrique dont on a parlé précédemment par rapport à la
cryptographie symétrique qui résout ce problème d’échange de clés. Mais
concernant la cryptographie symétrique, une fois que l’émetteur et le récepteur
ont trouvé un moyen fiable de s’échanger la clé secrète, le chiffrement et le déchiffrement
des messages se fait de manière sécurisée et plus rapidement que lors de la
cryptographie asymétrique.)
En pratique, pour ce
faire avec PGP, nous devons nous prendre comme suit :
Supposons que jacques souhaite répondre à goueth, en lui envoyant à son tour un
message, mais cette fois-ci avec un chiffrement symétrique. Tout comme procédé
précédemment, l’émetteur après avoir saisi le message secret
Le chiffre avec la
commande « gpg
- - armor - - symmetric message », cette fois-ci, vous remarquerez l’option « - - symmetric » en lieu et place de
l’option « - - encrypt » inscrit
lors du chiffrement asymétrique :
Suite à cette commande
le programme PGP va demander à l’émetteur d’entrer un mot de passe qui ici en
fait représente la clé secrète. Ensuite, il faudra également confirmer cette
clé secrète en l’entrant une seconde fois :
Tout comme précédemment
à la suite de cette commande de chiffrement, un nouveau fichier à l’extension « .asc » est créé,
Fichier qui sera
transmis toujours suivant un canal opté par l’émetteur au récepteur, ce dernier
pourra déchiffrer le message secret via la commande « gpg
- - armor - - decrypt message », à la suite de quoi il sera invité
à entrer le mot de passe de déchiffrement qui est ici rappelons-le la même clé
secrète utilisé par l’émetteur au moment du chiffrement du message :
Si le mot de passe entré
lors de la phase de déchiffrement correspond à la clé secrète entrée pendant la
phase de chiffrement, le message secret apparait alors « en clair » dans le terminal du récepteur.
Dès lors, l’objectif
recherché par les deux correspondants qui est de communiquer de manière
sécurisée via le chiffrement symétrique est atteint avec succès.
A présent, vous savez
ce qu’on entend par cryptographie, les différents types qui en existe, à savoir
la cryptographie symétrique et la cryptographie asymétrique, mais également ce qu’est le programme PGP, à
savoir un programme de cryptage représentant à lui tout seul un parfait petit
cryptosystème, et aussi qu’on peut le classer dans les systèmes dit à
« clé de session », et surtout comment chiffrer et déchiffrer des messages
de manière sécurisée via la méthode symétrique et asymétrique grâce à PGP.
Merci d’avoir suivi le
tutoriel jusqu’à la fin.
A très bientôt !!!
Aucun commentaire :
Enregistrer un commentaire