Stephane JOLY

GNU/Linux Home Pages

Crypter des fichiers avec GnuGPG

13 avril 2020

Tatane


Des fois, il est pratique de pouvoir crypter ses fichiers, pour cela, nous allons utiliser gpg2.
Par défaut, gpg2 utilise AES.

Ouvrez un terminal, et placez-vous dans un répertoire pour réaliser vos tests.
Tout d’abord, nous allons créer un fichier txt avec un contenu :

$ echo "test de crypto" > fichierCLaire.txt

On regarde le contenu du fichier fraichement créé
$ cat fichierCLaire.txt 
test de crypto

Ensuite, nous allons crypter ce fichier afin qu'il ne soit plus lisible sans code !

$ gpg2 -o fichierCrypte.txt -c fichierCLaire.txt

Après la saisie de cette commande, un popup va apparaître pour saisir votre mot de passe (à saisir deux fois)
L'option -o correspond à out donc au fichier de sortie à créer, et l'option -c correspond à crypt suivit du nom du fichier à crypter.

En regardant dans le répertoire vous devriez avoir deux fichiers :

$ ls -la
total 16
drwxr-xr-x  2 toto toto 4096 13 avril 17:31 .
drwx------ 54
toto toto 4096 13 avril 16:43 ..
-rw-r--r--  1 toto toto 15 13 avril 17:20 fichierCLaire.txt
-rw-r--r--  1
toto toto 102 13 avril 17:31 fichierCrypte.txt

Nous allons regarder à présent le contenu du fichier crypté (fichierCrypte.txt)

$ cat fichierCrypte.txt
$ ^C��q�чE�

Donc, vous voyez que le fichier fichierCrypte.txt est illisible, le fichier de départ, lui n'a pas été modifié ! :)
A présent, nous allons décrypter le fichier crypté vers le fichier fichierDecrypte.txt

$ gpg2 -o fichierDecrypte.txt -d fichierCrypte.txt
gpg: données chiffrées avec AES
gpg: chiffré avec 1 phrase secrète

L'option -o est suivit du fichier de sortie qui sera créé et l'option -d sera suivit du fichier que nous souhaitons décrypter.
Vous remarquerez, que gpg2 ne vous a pas demandé de mot de passe ! Ne vous inquiéter pas, c'est normal car, le mot de passe est mémorisé temporairement dans un trousseau de clés. Si vous envoyer le fichier à un ami, il lui sera impossible de décrypter le fichier sans votre clé (mot de passe). De même, si vous redémarrer votre ordinateur, vous serez dans l'obligation de saisir à nouveau votre mot de passe pour décrypter votre fichier !
Le responsable est gpg-agent, pour vous en assurer, il suffit de le tuer le process correspondant. et de relancer la commande de décryptage.

On va tuer le processus gpg-agent :

$ killall gpg-agent

On relance la commande de décryptage. Et là, vous aurez un joli popup qui vous demandera la clé de décryptage :)

$ gpg2 -o fichierDecrypte.txt -d fichierCrypte.txt
gpg: données chiffrées avec AES
gpg: chiffré avec 1 phrase secrète
A présent dans le répertoire, vous devriez avoir trois fichiers, le fichier de départ fichierCLaire.txt, le fichier crypté fichierCrypte.txt et le fichier décrypté, fichierDecrypte.txt

$ ls
fichierCLaire.txt  fichierCrypte.txt  fichierDecrypte.txt


Nous allons vérifier que le fichier à bien été décrypté :

$ cat fichierDecrypte.txt 
test de crypto

Jackpot !!

Voilà, j'espère que cela vous sera utile :)

Aucun commentaire


Vous vous demandez pourquoi utiliser une interface réseau virtuelle sous Linux. J'utilise régulièrement une machine virtuelle pour réaliser du développement web avec mon ordinateur portable. Malheureusement, mon ordinateur portable ne possède pas de carte ethernet physique. Lorsque vous n'avez pas d'interface wifi active ou lorsqu'il n'y a pas de réseau cela peut être problématique pour communiquer entre les machines invitées et la machine hôte.

Pour cela, je vais créer une interface virtuelle toto dans la machine hôte (machine physique) à l'aide de la commande brctl:

# brctl addbr toto
(La commande ne renvoie rien)

$ ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: toto: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether e6:6a:27:7a:56:d9 brd ff:ff:ff:ff:ff:ff

Ensuite, il faut activer cette interface dans le même réseau que la machine hôte.

# ip addr add 192.168.1.50/24 dev toto
(La commande ne renvoie rien)

$  ip address show toto
2: toto: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 1a:36:fb:85:09:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.50/24 scope global toto
       valid_lft forever preferred_lft forever


Ensuite, une fois l'interface fonctionnelle (faite un ping sur la carte virtuelle), lancer votre machine invitée avec le mode d'accès réseau activé pour la translation d'adresse (NAT). Depuis la machine virtuelle, en vous connectant sur l'adresse virtuelle toto, vous serez en mesure d’échanger des fichiers via sftp par exemple ou tout simplement de discuter avec la machine hôte via ssh.

Enjoy !


Aucun commentaire


C'est tout simple :

# systemctl restart NetworkManager
(La commande ne renvoie rien)

Il m'arrive que ma connexion wifi ne fonctionne plus après la sortie de veille. Pour le moment au lieu de redémarrer le système, je redémarre le service network en déchargeant le module wifi. Il y a peut-être d'autres solution, mais je n'ai pas cherché.

Pour cela, j'utilise un petit script bash perso :

$ cat bin/restartwifi.sh 
#!/bin/bash
echo "Mise à l'arrêt du service network"
systemctl stop NetworkManager
echo "Suppresion des modules : iwldvm & iwlwifi"
rmmod iwldvm
rmmod iwlwifi
echo "Rechargement du module wifi : iwlwifi"
modprobe iwlwifi
echo "Mise en service du system réseau"
systemctl start NetworkManager
exit 0


En espérant que cela vous sera utile.

Enjoy

Aucun commentaire


Voilà, j'ai eu un petit souci depuis l'installation de Majaro 18.0 avec conky et la transparence.

J'ai trouvé la solution ici :

https://forum.manjaro.org/t/manjaro-18-0-xfce-conky-doesnt-work-with-transparency/78963/19

Merci au passage :)

Dans le fichier de configuration de conky il suffit d'activer own_window_argb_visual à yes !

Voilà c'est tout simple lorsque l'on le sait.

Bien à tous.

Aucun commentaire


SFTP, qui signifie SSH File Transfer Protocol, ou protocole de transfert de fichiers sécurisé, est un protocole séparé fourni avec SSH qui fonctionne de manière similaire sur une connexion sécurisée. Pour simplifier, sftp n'est rien d'autre qu'un client ftp avec un s en plus comme qui signifie secrure. Le fonctionnement de sftp est le même qu'un client ftp en ligne de commande, sauf que tout est crypté de bout en bout contrairement à ftp ou tout circule en clair. Pour que cela fonctionne, il vous faudra évidemment un serveur ssh actif et un client ssh.

Avant de tester sftp, assurez-vous que sshd et ssh sont pleinement fonctionnels :

$ ssh toto@ip_serveur_ou_nom_de_machine

Si cela fonctionne :

$ exit

A titre d'information, je vous donne quelques exemples simples d'utilisation de la commande sftp :

$ sftp toto@ip_serveur_ou_nom_de_machine

Si le serveur sshd ne tourne pas sur le port par défaut, il faudra l'indiquer au client

$ sftp -oPort=port_ssd 

Pour plus d'information sur la commande sftp, je vous invite à lancer la commande sftp --h :

$ sftp -h
usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
[-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
[-o ssh_option] [-P port] [-R num_requests] [-S program]
[-s subsystem | sftp_server] destination



Ainsi que la commande help, lorsque vous êtes connecté au serveur sshd :

Connected to toto@ip_serveur_ou_nom_de_machine
sftp> help
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-afPpRr] remote [local] Download file
reget [-fPpRr] remote [local] Resume download file
reput [-fPpRr] [local] remote Resume upload file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-afPpRr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help


Ensuite vous pourrez utiliser les commandes classiques tel que ls pour lister les fichiers dans le répertoire courant et distant, pwd pour savoir dans quel répertoire distant vous êtes. Pour récupérer une fichier du répertoire distant vers le répertoire local, il suffira de lancer la commande get nom_du_fichier_à_récupérer.

Enjoy !

Aucun commentaire