Chiffrement et windows - quelques expériences avec gpg

Protégeons nos fichiers avec gpg sous windows

Introduction

Simple à utiliser, simple à déployer, simple à gérer, possible à contrôler sont nos devises chez Lybero.net pour nos produits. Nous nous concentrons sur la protection de l’échange des données, et non pas sur la protection des données sur les postes.

Cela n’empêche pas qu’il faille protéger les postes par chiffrement. On peut citer 2 niveaux distincts, visant à protéger des informations dans des contextes différents. Le niveau de base est le chiffrement des partitions. Les systèmes d’exploitation proposent cette option depuis longtemps, et il est recommandé de l’utiliser. Cependant, quand votre poste fonctionne, si un attaquant arrive à avoir un accès, il peut récupérer les données qui sont déchiffrées pendant ce temps. Le fait de chiffrer individuellement les fichiers permet d’éviter cela.

Si l’on réfléchit dans les termes du Réglement Général de Protection des Données, l’article 25 (Protection des données dès la conception et protection des données par défaut) indique que “…, ces mesures garantissent que, par défaut, les données à caractère personnel ne sont pas rendues accessibles à un nombre indéterminé de personnes physiques sans l’intervention de la personne physique concernée.”

En terme technique, cela ne peut avoir d’autre signification que : toute donnée à caractère personnel, tout fichier contenant des informations à caractère personnel doivent être chiffrés avec un ou des responsables associés ayant la capacité d’y donner accès de manière volontaire. En particulier, les administrateurs systèmes ne doivent pas avoir accès aux informations personnelles, y compris via les sauvegardes.

La seule manière de faire cela est le chiffrement des fichiers. Il y a plusieurs manières de faire, mais commençons par utiliser un outil universel de chiffrement gpg.

Chiffrement individuel de fichiers sous linux

Je travaille depuis plus de 20 ans sur un poste sous linux. En 2008, j’ai commencé à me préoccuper réellement des problèmes de sécurité. Pour des raisons de diversité du système d’exploitation, les postes linux sont moins susceptibles d’être victime de virus, cependant, un attaquant décidé peut toujours cibler un poste. Ce qui me préoccupait surtout était la multiplicité des mots de passe que j’avais à gérer. Je cherchais un moyen simple de pouvoir les stocker, de manière chiffrée. J’ai donc créé 2 alias (des commandes disponibles via la ligne de commande) pe et pv : pe c’est password edition et pv c’est password view.

Je savais qu’il y avait des programmes tout fait, mais j’aime contrôler avec des solutions simples. Ces alias sont les suivants :

alias pv='pushd ~/Documents/password;make view;reset;popd'
alias pe='pushd ~/Documents/password;make edit;reset;popd'

pushd permet de changer de répertoire en mémorisant le chemin où l’on était à l’origine. popd permet de revenir à ce répertoire initial. Entre les 2, je lance les programmes via make.

Et le Makefile correspondant :

# example Makefile for viewing/editing an encrypted file
GPGID = <mon.adresse@mondomaine.com>
FILEPLAIN = index.txt.clear
FILECRYPT = index.txt

GPG = gpg
RM = /bin/rm -i
VI = vim


edit:
    @umask 0077;\
    $(GPG) --output $(FILEPLAIN) --decrypt $(FILECRYPT)
    # No backup in vim !!!
    @$(VI) -c "set nobk" $(FILEPLAIN)
    @umask 0077;\
    mv $(FILECRYPT) `date +%F-%R`-$(FILECRYPT)
    $(GPG) --output $(FILECRYPT) --encrypt --recipient "$(GPGID)" $(FILEPLAIN)
    @$(RM) $(FILEPLAIN)

view:
    @umask 0077; $(GPG) --decrypt $(FILECRYPT) | less

Quand je tape pv, une fenêtre me demande la passe-phrase de protection de ma clé gpg pour mon.adresse@mondomaine.com, puis je vois mon fichier complet dans lequel je peux faire une recherche via les commandes vim habituelles. C’est clairement une solution de geek. Mais c’est très pratique. Un nouveau mot de passe : pe, aller au bout du fichier, ajouter le mot de passe, sauvegarder, sortir. Et le fichier précédent est sauvegardé avec la date. L’utilisation de pv c’est : pv, recherche, copié collé, et hop. J’utilise vim, mais chacun peut utiliser l’éditeur de son choix.

J’ai part la suite découvert keepassX et maintenant j’utilise les 2 solutions.

A partir de là, il m’est apparu nécessaire d’avoir des commandes de chiffrement / déchiffrement pour mes fichiers avec ma clé pgp. Donc maintenant, j’ai une commande crypt et une commande decrypt (d’accord, c’est en anglais). “crypt nom_de_fichier”, chiffre le fichier en nom_de_fichier.crypto et “decrypt nom_de_fichier.crypto” déchiffre le fichier pour moi-même.

Autant ces solutions me paraissent pratiques pour quelqu’un qui n’a pas peur de la ligne de commande sous linux, autant elles sont totalement impraticable pour un utilisateur sous windows.

Chiffrement des données sous windows

Donc j’ai cherché un équivalent sous windows. Ce que je voulais, c’était avoir juste 2 commandes, une pour chiffrer et une autre pour déchiffrer dans le menu associé à chaque fichier dans l’explorateur de fichiers de windows. Si vous installez gpg4win [https://www.gpg4win.org/], vous avez une commande “Signer et chiffrer” qui ouvre une interface graphique vous permettant de signer et / ou chiffrer pour l’utilisateur par défaut ou quelqu’un d’autre. C’est bien, mais à mon avis, il y a une fenêtre avec des choix en trop. Le déchiffrement est lui très bien, vous faites un clique droit sur un fichier .pgp et le fichier est déchiffré. Inconvénient, le fichier .pgp reste en plus du fichier déchiffré.

C’est presque parfait, mais je voulais quelque chose d’encore plus simple. Juste clique-droit Chiffrer et pour les fichiers .pgp clique-droit déchiffrer, entrer la passe-phrase et c’est tout. Et bien, après quelques (ok, beaucoup) essais, cela marche.

Pour avoir une action sur un clique-droit dans l’explorateur de fichiers, il suffit d’ajouter via l’éditeur de registre regedit des entrées. Vous trouverez de nombreux tutoriaux sur comment éditer les entrées de registre. Donc j’ai ajouté 2 éléments dans le registre windows :

  • HKEY_CLASSES_ROOT -> * -> shell -> Crypt for me
  • HKEY_CLASSES_ROOT -> * -> shell -> Decrypt for me

Dans “Crypt for me”, j’ai créé une sous-entrée command, avec comme clé (par défaut) : cmd /c gpg –output “%1.gpg” –encrypt –recipient “mon.adresse@mondomaine.com” “%1” && del “%1”

Cette commande demande un peu d’explication. cmd démarre un “terminal” command.com, /c indique qu’après l’exécution de la commande suivante, le “terminal” se referme. On trouve ensuite la commande gpg. Le %1 est remplacé par le nom du fichier sur lequel on a fait un clique-droit. On indique que l’on veut chiffrer pour soit même. C’est à la création de la clé que vous indiquez le mail et la personne associée. Il y a un outil graphique de gestion des clés sous windows appelé Kleopatra, vous pouvez générer une nouvelle bi-clé en choisissant l’algorithme de chiffrement / signature. Ensuite, vous avez la liste des différentes clés disponibles. Donc j’indique que je souhaite chiffrer le fichier en ajoutant l’extension .gpg après. && indique qu’il y a une commande qui sera exécutée ensuite et qui est de supprimer le fichier original. Cette commande est exécutée uniquement si la commande précédente s’est exécutée sans erreur.

Il est possible d’utiliser le fichier crypt_for_me.reg ci-dessous pour créer directement la commande dans regedit.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Crypt for me]

[HKEY_CLASSES_ROOT\*\shell\Crypt for me\command]
@="cmd /c gpg --output \"%1.gpg\" --encrypt --recipient \"<mon.adresse@mondomaine.com>\" \"%1\" && del \"%1\""

Et pour Decrypt for me, de même, une sous-entrée command, avec comme clé (par défaut) : cmd /c gpg –use-embedded-filename “%1” && del “%1”

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Decrypt for me]

[HKEY_CLASSES_ROOT\*\shell\Decrypt for me\command]
@="cmd /c gpg --use-embedded-filename \"%1\" && del \"%1\""

Voilà, vous avez maintenant une solution de chiffrement pour vos fichiers sous windows et vous permettant simplement de respecter le RGPD. Mon objet n’est pas ensuite d’expliquer comment ensuite passer à l’échelle d’une entreprise, mais nous y reviendrons en expliquant comment gérer les clés à l’échelle de l’organisation.