TP : Cryptographie RSA#

OpenSSL est un logiciel de cryptographie qui possède de nombreux algorithmes de chiffrement. OpenSSL est disponible sur les systèmes windows/linux/mac et s’utilise en ligne de commandes.

Nous allons dans cette activité utiliser la machine virtuelle UBUNTU pour :

  • créer une paire de clés RSA;

  • signer un message

  • chiffrer et déchiffrer un message

Créer une paire de clé RSA#

  1. Ouvrir un terminal.

  2. Créer votre paire de clés en saisissant la commande suivante:

    # Création des clés RSA
    openssl genrsa -out cle.prv 2048
    
  3. Afficher la clé générée avec la commande:

    cat cle.prv
    
  4. La clé créée contient la clé privée et la clé publique. Il faut extraire la clé publique en saisissant la commande suivante en remplaçant prenom par votre prénom:

    # Sauvegarder la clé dans un fichier
    openssl rsa -in cle.prv -pubout -out cle_prenom.pub
    
  5. Lister votre dossier et vérifier la présence des fichiers cle.prv et cle_prenom.pub contenant les clés avec la commande :

    ls
    
  6. Afficher votre clé publique avec la commande suivante en remplaçant prenom par votre prénom:

    cat cle_prenom.pub
    
  7. Envoyer votre clé publique à votre partenaire de binôme en utilisant la messagerie de l’ENT.

  8. Récupérer la clé publique de votre partenaire de binôme et l’enregistrer dans le dossier qui contient vos clés.

Avertissement

On vient de créer notre paire de clés RSA. La clé privée est secrète et ne doit pas être communiquée.

Signer un fichier#

Maintenant que nos clés sont créées, on peut signer des messages. Cela permet d’authentifier la source d’un message.

  1. Créer dans un éditeur de texte un court message. Enregistrer ce message dans un fichier nommé message.txt dans le même dossier que vos clés.

  2. Signer le fichier qui contient votre message avec votre clé privée en saisissant la commande suivante en remplaçant prenom par votre prénom :

    # Signer un fichier avec sa clé privée
    openssl rsautl -sign -inkey cle.prv -in message.txt -out message_prenom_signe
    

    Afficher le message signé et vérifier qu’il n’est pas compréhensible.

  3. Envoyer via la messagerie de l’ENT votre message signé à votre binôme.

  4. Récupérer le message signé par votre binôme et l’enregistrer dans le dossier contenant vos clés.

  5. On va maintenant vérifier la signature du message signé. Seule la clé publique de la source du message peut le déchiffrer. Saisir la commande suivante :

    # Vérifier la signature avec une clé publique
    openssl rsautl -verify -pubin -inkey cle.pub -in message_prenom_signe
    

    Si le message s’affiche en clair alors, vous avez l’assurance qu’il provient de votre binôme qui est le seul à pouvoir le signer avec sa clé privée.

Chiffrer un message#

On va communiquer en chiffrant des messages.

  1. Reprendre le message en clair message.txt.

  2. Chiffrer ce message avec la clé publique de votre binôme en saisissant la commande:

    # Chiffrer un message sauvegardé dans un fichier
    openssl rsautl -encrypt -pubin -inkey cle_prenom.pub -in message.txt -out message_chiffre
    

    Afficher le message chiffré et vérifier qu’il n’est pas compréhensible.

  3. Envoyer à votre binôme le message chiffré et récupérer son message chiffré en l’enregistrant dans le dossier qui contient vos clés.

  4. Déchiffrer le message avec votre clé privé en saisissant la commande :

    # Déchiffrer un fichier sans sauvegarde
    openssl rsautl -decrypt -inkey cle.prv -in message_chiffre
    
  5. Recommencer l’échange de messages chiffrés avec une image de votre choix.