GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec les outils de chiffrement en ligne de commande sous Linux

1 Présentation

Le cryptage est le processus de codage de messages ou d'informations de manière à ce que seules les parties autorisées puissent les lire. Avec presque aucune confidentialité dans notre génération numérique, le cryptage de nos données est l'un des outils les plus nécessaires. La plupart des applications comme gmail chiffrent nos données, mais les données de votre système ne sont toujours pas sécurisées et des pirates ou des utilisateurs non autorisés attendent d'y accéder. Une façon de minimiser le risque de vol de données consiste à chiffrer les données présentes même sur notre système local.

Ce didacticiel présente plusieurs méthodes de chiffrement des données sur les systèmes Linux à l'aide d'outils de ligne de commande.

2 Chiffrement avec GPG

2.1 Présentation de GPG

GPG signifie GNU Private Guard qui est un utilitaire de ligne de commande utilisé pour chiffrer et déchiffrer des fichiers ou des dossiers de données à l'aide d'un chiffrement à clé symétrique ou publique. GPG est une alternative sous licence GPL à la suite logicielle cryptographique PGP. GPG est également utilisé par les systèmes compatibles OpenPGP.

2.2 Chiffrement à l'aide d'une clé symétrique

Ici, j'ai un fichier nommé "test.txt" que je vais chiffrer puis déchiffrer avec une clé symétrique et imprimer le texte déchiffré dans un autre fichier appelé "output.txt".

Exécutez la commande suivante pour chiffrer le fichier test.txt à l'aide d'une clé symétrique. L'option "-c" indiquait au GPG d'utiliser des clés symétriques.

gpg -c test.txt

Le résultat ressemblera à l'image ci-dessous. La première fois que GPG est exécuté, un dossier .gnupg est créé. Il contient les fichiers nécessaires au processus de cryptage. Il vous demande ensuite d'entrer une phrase de passe deux fois. Assurez-vous de saisir une phrase de passe forte et de vous en souvenir, car vous en aurez besoin à l'avenir pour déchiffrer vos fichiers.

Ainsi, une fois la phrase secrète saisie correctement, un fichier nommé "test.txt.gpg" est créé. Ceci est le fichier crypté. L'image suivante montre le fichier avant et après le cryptage. Vous pouvez voir que le texte crypté est dans un format illisible.

Utilisez la commande suivante pour décrypter le fichier crypté

gpg -o output.txt test.txt.gpg

Vous serez invité à entrer la phrase de passe utilisée pour chiffrer. Une fois que vous l'avez entré correctement, le fichier "output.txt" sera créé avec le même contenu que celui de "test.txt". Le résultat du déchiffrement peut ressembler à l'image ci-dessous :

2.3 Chiffrement à clé publique

Ici, nous allons chiffrer un ensemble de fichiers en utilisant le mécanisme de chiffrement à clé publique/privée de GPG. Cela implique la création d'une clé privée qui ne doit jamais être partagée avec qui que ce soit et d'une clé publique qui doit être partagée avec les personnes qui souhaitent vous envoyer des données cryptées.

Tout d'abord, nous devrons emballer les fichiers dans un dossier compressé. Ici, j'ai un répertoire appelé "enctest" avec trois fichiers test1.txt à test3.txt. Nous allons compresser ce fichier tar.gz de répertoire. J'utiliserai la commande suivante pour créer l'archive tar.gz compressée :

tar czf files.tar.gz ~/enctest

Cela crée un fichier "files.tar.gz" . Nous devons maintenant générer la paire de clés publique/privée. Exécutez la commande suivante pour générer la clé :

gpg --gen-key

N'oubliez pas que cela ne doit être fait qu'une seule fois et que n'importe quel nombre de fichiers et de dossiers peut être chiffré avec cette clé. Une fois que vous avez tapé cette commande, diverses séries de questions vous seront posées. Les questions seront :

  • Quel type de chiffrement utiliser ? J'en ai sélectionné 1 qui est RSA et RSA.
  • Quelle devrait être la taille de la clé ? J'ai choisi 2048, vous pouvez choisir n'importe quelle taille entre 1024 et 4096.
  • Quand la clé doit-elle expirer ? J'ai sélectionné 0 , ce qui signifie que la clé n'expire jamais. Mais peut fournir des jours, des semaines ou des années si vous souhaitez qu'il expire à un moment donné.

D'autres choses comme la phrase de passe vous seront demandées, vous serez invité à la saisir deux fois. Assurez-vous d'en utiliser une forte et de vous souvenir de la phrase de passe. Vos informations d'identification seront également utilisées. Les informations d'identification que j'ai utilisées ici (fournies ci-dessous) sont uniquement à des fins de test. Il est recommandé d'utiliser vos informations d'identification authentiques telles que votre nom, votre adresse e-mail et de fournir des commentaires.

Le contenu suivant montre ma réponse et le résultat :

gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <[email protected]>"

Real name: John Doe
Email address: [email protected]
Comment: tis is key generation
You selected this USER-ID:
    "John Doe (tis is key generation) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.
    

Une fois que vous avez entré la phrase de passe, il commence à générer la clé. Il vous demandera de faire quelques travaux. Il est recommandé de déplacer la souris ou de taper quelque chose ou d'utiliser les lecteurs pour ouvrir certains fichiers. Il utilisera ce travail pour générer des bits aléatoires. Vous devrez peut-être le faire plusieurs fois. La sortie pour moi est montrée ci-dessous :

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 187 more bytes)
+++++
...+++++
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 92 more bytes)
.....+++++

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 114 more bytes)

+++++

Une fois cela fait, la clé a été générée. Il ressemblera au contenu ci-dessous :

gpg: /home/akshay/.gnupg/trustdb.gpg: trustdb created
gpg: key FA2314B6 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/FA2314B6 2015-04-02
      Key fingerprint = 5A02 5D77 3E0A 8B69 8086  3032 DE51 6EA5 FA23 14B6
uid                  John Doe (tis is key generation) <[email protected]>
sub   2048R/6F78E642 2015-04-02

Il y a deux choses importantes ici :fournissez une phrase secrète solide et assurez-vous de vous souvenir de votre phrase secrète

Maintenant que les clés sont générées, il va maintenant falloir exporter le fichier de clé publique pour l'importer sur d'autres systèmes ou l'envoyer par email. Pour lancer l'export, utilisez la commande suivante :

gpg --armor --output file-enc-pubkey.txt --export 'John Doe'

Remplacez "John Doe" par le nom que vous avez utilisé lors de la génération de la clé.

Il est également recommandé de faire une sauvegarde de la clé privée. Nous pouvons utiliser gpg pour le faire. Pour effectuer la sauvegarde, utilisez la commande suivante :

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'John Doe'

Ici le fichier "file-enc-privkey.asc" conservera la sauvegarde de la clé privée en toute sécurité. Une fois l'exportation et la sauvegarde de la clé terminées, nous pouvons maintenant chiffrer et déchiffrer le fichier .tar.gz. Utilisez la commande suivante pour chiffrer :

gpg --encrypt --recipient 'John Doe' files.tar.gz

N'oubliez pas de remplacer "John Doe" dans la commande ci-dessus par le nom que vous avez donné lors de la génération de la clé, sinon le cryptage échouera. Lorsque la commande s'exécute avec succès, un fichier chiffré appelé "files.tar.gz.gpg" sera créé.

Nous pouvons maintenant déchiffrer l'archive tar.gz à l'aide de la commande suivante. Il utilisera la clé privée avec la phrase secrète pour déchiffrer et fournir le dossier déchiffré. Utilisez la commande suivante pour déchiffrer :

gpg --output output.tar.gz --decrypt files.tar.gz.gpg

La commande ci-dessus demandera la phrase secrète, puis déchiffrera le fichier chiffré et créera un fichier compressé nommé "output.tar.gz" qui peut ensuite être extrait dans un dossier avec tar pour récupérer les fichiers. L'image suivante montre le résultat des commandes de chiffrement et de déchiffrement :

2.4 Pourquoi GPG ?

GPG prend en charge à la fois :le cryptage à clé publique et le cryptage symétrique, ce qui offre une bonne flexibilité et peut être utilisé pour un large éventail d'applications. Il n'est pas nécessaire de fournir des informations sensibles et gpg peut également avoir n'importe quel nombre de chiffreurs en utilisant la clé publique. Le choix est donné à l'utilisateur de choisir parmi plusieurs algorithmes de chiffrement. Ces raisons en font un outil de sécurité très utile pour le chiffrement des fichiers et des dossiers ou des données.

3 Chiffrement avec OpenSSL

3.1 Introduction à OpenSSL

Le projet OpenSSL est un effort collaboratif visant à développer une boîte à outils robuste, de qualité commerciale, complète et Open Source mettant en œuvre les protocoles Secure Sockets Layer (SSL v2/v3) et Transport Layer Security (TLS) ainsi qu'un bibliothèque cryptographique. OpenSSL est disponible pour la plupart des systèmes d'exploitation de type Unix et est basé sur SSLeay. OpenSSL prend également en charge de nombreuses applications SSH, SFTP et SCP. Ici, nous utilisons OpenSSL pour crypter les données en utilisant le cryptage asymétrique et le chiffrement AES. Le chiffrement symétrique peut être utilisé pour chiffrer des fichiers ou des données plus volumineux.

3.2 Génération des clés publiques et privées

La première chose que nous devons faire est de générer les clés publique et privée. Nous générons d'abord la clé privée. Pour ce faire, utilisez la commande suivante :

openssl genrsa -out private_key.pem 1024

La commande ci-dessus demande à OpenSSL d'utiliser RSA pour générer une clé privée d'une taille de 1024 octets. La clé est ensuite stockée en toute sécurité dans un fichier appelé "private_key.pem" . Le résultat de cette commande ressemblera à l'image ci-dessous :

Une fois la clé privée (la clé secrète) générée, nous pouvons l'utiliser pour générer la clé publique afin qu'elles forment une paire. Utilisez la commande suivante pour générer la clé publique :

openssl rsa -in private_key.pem -out public_key.pem -outform PEM -pubout

Il ressemblera à l'image ci-dessous :

3.3 Chiffrement des données

Nous pouvons maintenant utiliser la clé publique pour chiffrer les données. Ici, nous allons chiffrer le fichier "test.txt" et stocker le texte chiffré dans le fichier encrypt.dat. Exécutez la commande suivante :

openssl rsautl -encrypt -inkey public_key.pem -pubin -in encrypt.txt -out encrypt.dat

Les images suivantes montrent le fichier texte avant et après le chiffrement :

3.4 Décryptage des données

Ici, nous utilisons la clé privée pour déchiffrer le fichier. Exécutez la commande suivante :

openssl rsautl -decrypt -inkey private_key.pem -in encrypt.dat -out decrypt.txt

Le fichier decrypt.txt contiendra les données décryptées. L'exécution de la commande ci-dessus ainsi que le contenu du fichier sont illustrés dans l'image ci-dessous :

4 Conclusion

Les méthodes présentées ci-dessus sont hautement sécurisées lorsqu'elles sont utilisées avec précaution et permettent plusieurs chiffrements et niveaux de sécurité pour s'adapter à différents niveaux de sécurité. Ainsi, chacun de ces éléments peut être utilisé dans divers scénarios pour chiffrer des fichiers/dossiers et des données brutes.

  • OpenSSL
  • OpenPGP

Linux
  1. Premiers pas avec les pare-feux Linux

  2. Premiers pas avec la commande Linux tac

  3. Premiers pas avec PiFlash :démarrer votre Raspberry Pi sous Linux

  4. Premiers pas avec la commande Linux cat

  5. Premiers pas avec SSH sous Linux

Premiers pas avec le système d'exploitation Linux

Tutoriel Vagrant - Premiers pas avec Vagrant sous Linux

Premiers pas avec Docker Compose sous Linux

Premiers pas avec VirtualBox sous Linux - Partie 1

Premiers pas avec Flutter sur Linux Desktop

Débuter avec Linux Mint ? Focus sur ces trois outils