Echanger des fichiers cryptés par OpenSSL

Objectif : Echanger un document de manière sécurisée avec un ou plusieurs destinataires.

Prérequis

  • accès au terminal de l'ordinateur, les opérations se faisant de ligne de commande
  • OpenSSL installé sur cette machine

Principe de fonctionnement

Le fichier à sécuriser est crypté par cryptographie asymétrique ou cryptographie à clef publique :

  • une clef publique générée par monsieur A qui la partage avec monsieur B qui cryptera son fichier avec
  • une clef privée connue que de monsieur A, utilisée pour décrypter le message envoyé par monsieur B

Etape 1 : créer la paire de clés

On utlise des clés de chiffrement RSA 2048bits.

Création de la clef privée :
$ openssl genrsa -out privateKey.pem 2048

A partir de cette clef privée, création d'une clef publique :
$ openssl rsa -in privateKey.pem -pubout -out publicKey.pem

Contenu de cette clef publique :
$ cat publicKey.pem
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6fwD3fKepTVTGWeKofo G0TyS7eSjLJu7S7AbLJnJRmLP+3cegbG9PYiDgK2Hhmv0MuXejt0GzOaTIRueHAh EwOpTdrBJxpQYfd+JHzUxiGZz3JuS0Kxl5x6EtjUxv1MQVGHhSBXSaXSrKqxrce5 exZ7RWR9cj5BORP9iDefa3I82COsrYQ3Aw1cFMwVQsCiimRTyoXKsTGGsrzsi7dW asicLeTVITWPfWDsJabtjXmGiVDxH3l8Nk6AM2Z178Bk24C25JtMZ4a0zOYSNF4B EiZAJOHfmfZZiw21P/q/OEG1eSCNejY1FByHr+QWtorp5eGUpYOq4Rtp2HVa8O2+ QQIDAQAB -----END PUBLIC KEY-----

Etape 2 : partage de la clef publique avec les correspondants

Envoi du fichier .pem ou envoi du contenu que le destinaire sauvegardera dans un fichier.

Etape 3 : chiffrement du fichier par le correspondant

Chiffrement à l'aide de la clef publique :
$ openssl pkeyutl -encrypt -pubin -inkey maClePublique.pem -in secret.txt -out secretCrypte.txt

Le fichier crypté peut être maintenant envoyé en toute sécurité à celui ou celle qui possède la clef privée.

Etape 4 : Décryptage du fichier

A l'aide de la clef privée :
$ openssl pkeyutl -decrypt -inkey maClePrivee.pem -in secretCrypte.txt -out secretDecrypte.txt