Éditeur de texte Atom : comment chiffrer ou signer simplement un document via GPG

Éditeur de texte Atom : comment chiffrer ou signer simplement un document via GPG

Avec un Gist en bonus

Avatar de l'auteur
David Legrand

Publié dans

Logiciel

17/08/2017 5 minutes
24

Éditeur de texte Atom : comment chiffrer ou signer simplement un document via GPG

Si GPG permet de chiffrer simplement un fichier, ce n'est pas toujours aussi simple lorsqu'il s'agit de faire de même avec un morceau de texte... Ce qui peut pourtant s'avérer pratique pour protéger du contenu sensible dans un document. Heureusement, un package pour Atom permet de le faire. Nous en avons profité pour l'améliorer un peu.

GnuPG est un outil qui permet de chiffrer ou de signer simplement tout type de contenu. S'il est souvent évoqué dans le cadre de la gestion des emails du fait de sa nature asymétrique, il permet bien plus.

Il est ainsi très utilisé pour la distribution de fichiers avec signature par les développeurs, dans les différentes distributions Linux pour le déploiement de paquets, etc. Existant depuis près de 20 ans, il a beaucoup évolué depuis et dispose d'un écosystème assez complet.

Ainsi, on le retrouve intégré de manière native ou via des plugins à de nombreux outils où il permet d'ajouter une couche de chiffrement qui peut parfois s'avérer utile. C'est notamment le cas dans des éditeurs de texte, pour permettre aux développeurs de protéger facilement certaines données ou de partager simplement un texte chiffré/signé depuis une application qu'ils ont toujours sous la main.

C'est notamment le cas de Vim ou encore de SublimeText 3. Pour notre article du jour, nous avons décidé de nous attarder sur l'intégration à Atom, développé par les équipes de GitHub.

Le chiffrement/signature d'un texte en quelques clics

Celui-ci est pensé comme un outil simple, multi-plateforme et open source. Il permet d'éditer un simple texte aussi bien qu'un document en Markdown ou bien du code dans de nombreux langages. Il se veut surtout « hackable » et propose pour cela à n'importe qui de le compléter via des packages.

C'est par ce biais que l'on peut rajouter un module permettant de gérer GPG. Son installation est simple puisqu'il suffit de se rendre dans la section Install des paramètres (CTRL+,) et de chercher atom-gpg. La procédure ne prend que quelques secondes, et l'on pourra ensuite directement accéder aux paramètres du module :

Atom-gpgAtom-gpg

Dans la partie Settings, deux champs permettent de préciser l'emplacement de GPG et du trousseau de clés. Si votre installation est classique, inutile de les remplir. Vous devrez ensuite préciser la liste des destinataires, soit via une liste écrite, soit via un fichier. 

Ici, de premières subtilités émergent. Dans le premier cas, il faut indiquer un ou plusieurs destinataires à travers leur email ou l'ID de leur clé, séparés par une virgule. Si vous optez plutôt pour un fichier, il est possible de ne pas préciser de chemin précis. Dans ce cas, le module ira chercher le fichier dans le répertoire principal du projet en cours. Pratique si vous voulez adapter l'utilisation de l'extension à différents cas.

La section suivante, Keybindings, détaille les raccourcis claviers qui sont mis en place par défaut, mais comme nous allons le voir, ceux-ci peuvent poser problème et nécessitent une modification. 

Quoi qu'il en soit, une fois un ou plusieurs destinataires entrés, ainsi que les éventuels paramètres nécessaires pour que le module puisse accéder à GPG et votre trousseau de clés, vous pouvez commencer à éditer un texte à chiffrer ou à signer.

Pour cela, on crée un nouveau fichier (CTRL+N) dans lequel vous pouvez taper ce que bon vous semble. Sélectionnez du texte, effectuez un clic droit et sélectionnez GPG Encrypt. Le tour est joué, le texte sélectionné est chiffré. Vous pouvez faire de même pour la signature ou le déchiffrement (mais il faudra disposer de la clef privée associée).

Une première correction...

Par défaut, ces opérations peuvent être effectuées avec la combinaison des touches CTRL+MAJ+E, D ou S. Mais comme vous pourrez facilement le vérifier, le second choix est déjà occupé par la fonction de déduplication de texte. Un problème qui peut simplement être corrigé.

Pour cela, il faut indiquer à Atom quelle fonction est prioritaire. Bien entendu, vous pouvez aussi décider de modifier la combinaison de touches de l'une ou l'autre des fonctionnalités (File > Settings > Keybindings). Mais E, D et S sont assez proches et facilement accessibles, ce qui nous convient plutôt bien pour l'usage visé.

Il faut donc éditer le fichier keymap.cson qui est accessible via le menu File > Keymap afin de lui ajouter deux lignes de code permettant d'indiquer quelle commande effectuer de manière prioritaire :

'.editor':
    'ctrl-shift-d':'atom-gpg:decrypt-selections'

... avant un changement plus en profondeur

Et si nous allions un peu plus loin ? En effet, il est possible d'utiliser les raccourcis non pas de manière identique aux fonctions accessibles depuis un clic droit, mais de manière complémentaire. Ainsi, ces combinaisons de touches pourraient être exploitées pour sélectionner automatiquement tout le texte du document et le (dé)chiffrer/signer entièrement.

Cette fois encore, il faudra éditer le fichier de keymap afin d'attribuer de nouvelles fonctions à nos touches, mais aussi le script d'initialisation d'Atom afin de les déclarer. Celui-ci prend le nom d'init.coffee et se base sur CoffeeScript. Il est accessible via le menu File > Keymap.

Nous sommes ainsi arrivés au résultat suivant résumé dans un Gist :

Il vous suffit de rajouter ces lignes aux deux fichiers concernés, puis de les enregistrer et de relancer Atom. Vous aurez alors le fonctionnement recherché : un clic droit pour (dé)chiffrer/signer la sélection et les raccourcis CTRL+MAJ+E, D, ou S pour l'intégralité du document.

24

Écrit par David Legrand

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Le chiffrement/signature d'un texte en quelques clics

Une première correction...

... avant un changement plus en profondeur

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Commentaires (24)


Ouh pitaing, un Gist avec du CoffeeScript fraîchement moulu dedans. Le site se radicalise <img data-src=" />



Demain on aura un package NPM à déployer sur un serveur Linux distant.


Non, mais y’a du C# dans le pipe <img data-src=" />


J’ai lu que ca fait le chiffrement d’une sélection.



Est-ce qu’on peut aussi signer une sélection ? Ca serait utile pour vérifier qu’une partie du code est authentique, par exemple un copier/coller d’un code provenant d’une source de confiance.


Oui comme dit dans le papier la fonctionnalité de base concerne uniquement ce qui est sélectionné.


Merci… <img data-src=" />








David_L a écrit :



Non, mais y’a du C# dans le pipe <img data-src=" />







Ceci n’est pas un | <img data-src=" />



Il me semble en pratique bien plus simple de chiffrer/signer un fichier entier

Éventuellement signer un diff (si on veut authentifier le travail de chacun sur un fichier commun)

Mais chiffrer / signer un morceau de fichier, je ne vois pas l’usage.



Quelqu’un aurait des exemples pratiques?


Ha yes… Je viens d’installer le package dans SublimeText. Je connaissais pas <img data-src=" />


Une partie de mon quotidien… <img data-src=" />





some code

some other code



// Official Linear congruential generator from Rosetta Code

// Don’t touch that part or I kill you !!!!

//—–BEGIN PGP SIGNED MESSAGE—–

define rand() {

randseed = (randseed * 214013 + 2531011) % 2147483648

return randseed / 65536

}

//—–BEGIN PGP SIGNATURE—–

// iQwUzJwqexTEQLPACePnPE8VKKc…

//—–END PGP SIGNATURE—–



some code

some other code


Tu peux aussi vouloir chiffrer / signer un fichier entier mais chercher à le faire directement depuis un éditeur du genre que tu as sous la main, sans avoir à taper une ligne de commande ou à sortie une GUI du genre de GPA/Kleopatra <img data-src=" />


La dernière fois que j’ai testé elle n’était pas grandiose, mais je n’ai pas creusé outre mesure. Après ça a le mérite d’exister, d’où la mention :p








David_L a écrit :



La dernière fois que j’ai testé elle n’était pas grandiose, mais je n’ai pas creusé outre mesure. Après ça a le mérite d’exister, d’où la mention :p





Ca signe bien, mais ça chiffre pô.<img data-src=" />

Sitôt installé, sitôt supprimé.









David_L a écrit :



https://github.com/dmitrievav/sublime_gpg/issues



<img data-src=" />





Merci mais full Linux chez moi.<img data-src=" />



Du coup, je télécharge Atom.<img data-src=" />



Je te disais juste de déclarer le bug rencontré :p








David_L a écrit :



Je te disais juste de déclarer le bug rencontré :p





Ha ok.<img data-src=" />



Je ne connaissait pas Atom. Je suis allé sur le site avec l’objectif de le télécharger pour découvrir et essayer. Là j’ai vu ceci : “A hackable text editor for the 21st Century” et ceci : “Atom is a text editor that’s modern, approachable, yet hackable to the core”. Je me suis dit “chouette c’est super, je fonce”.

Mais là, j’ai vu ceci : “Download Windows 64-bit Installer” &gt; AtomSetup-x64.exe (163 Mo).



Non, sérieusement, non. Ya un moment il faut des limites quand même. Soit c’est un éditeur de texte, et c’en est clairement pathétique, soit ça fait aussi le café moulu et torréfié, et dans ce cas les fonctionnalités devraient être indiquées dans la description.


Le problème d’Atom, tout comme malheureusent de plus en plus d’app qui se veulent modernes en cross-platform, c’est que c’est basé sur Electron, un framework qui permet de faire des app en simple html/css/js. C’est donc un package qui embarque un navigateur internet (Chromium), un serveur NodeJS, et tout le bordel associé.



Du coup ça donne effectivement des applications énormes pour pas grand chose. Mais le pire c’est surtout :




  • que plein de web developper se mettent à faire des applications “natives” en utilisant Electron comme ils feraient une app web, ce qui donne des trucs dégueulasse à l’usage

  • et surtout la platform electron nécessite un hardware costaud, même pour un simple éditeur, et avec une carte graphique pas trop à la ramasse car sans acceleration matériel c’est effroyablement lent (quand ça se lance) ; et par exemple nous au boulot, comme dans beaucoup d’endroit, les postes de travail n’ont qu’une solution graphique intégré au processeur, ce qui est trop léger. Je ne parle même pas de lancer les dites application en bureau distant (serveur X)…


Marrant, c’était une des news d’hier sur /.



In Defense of the Popular Framework Electron



<img data-src=" />


Merci pour cette explication.



Je comprends mieux le poids de l’application du coup. Mais cela confirme mon choix : il est hors de question que j’utilise ce genre de solution.



Question à ceux qui l’utilisent (Atom) : ça se lance vite ou pas ? Depuis un HDD ou SSD (la précision est importante) ?









127.0.0.1 a écrit :



Marrant, c’était une des news d’hier sur /.



In Defense of the Popular Framework Electron



<img data-src=" />





Visiblement ce dév semble ravi de cette solution, tant mieux pour lui. Néanmoins toutes les applications que j’ai utilisé par le passé, basées sur Chromium et node.js (avec ou sans Electron, j’en sais rien) m’ont toujours laissé un goût de travail bâclé. C’est peut-être la force d’Electron, mais je n’en saurais rien ^^



Bien moins vite que Notepad++ en tout cas.

Mais Atom est bien plus complexe qu’un “text editor”… on est plus niveau IDE tout de même.



M’enfin je me rend compte que je ne l’utilise pas ou plus au final.


C’est plutôt un IDE type eclipse du coup ?


Peut-être pas à ce point là mais pas loin oui.








127.0.0.1 a écrit :



Une partie de mon quotidien… <img data-src=" />





Merci, mais… je ne comprends pas plus l’intérêt que suite à la lecture de l’article.

Dans ce contexte, c’est qui qui signe? toi en tant qu’ajouteur du bloc sensible? l’auteur du code d’origine?

Comment tu t’aperçois si quelqu’un l’a modifié? un robot qui parse le texte et qui vérifie la cohérence des signatures ? dans ce cas il se passe quoi si l’autre retire aussi les morceaux liés à PGP, et que ça redevient du code ‘normal’?

Pourquoi ne pas gérer l’intégrité ces moreaux de code sensibles via les droits d’édition ?







David_L a écrit :



Tu peux aussi vouloir chiffrer / signer un fichier entier mais chercher à le faire directement depuis un éditeur du genre que tu as sous la main, sans avoir à taper une ligne de commande ou à sortie une GUI du genre de GPA/Kleopatra <img data-src=" />





Merci, ça je vois bien, c’est vraiment sur la signature partielle que j’ai du mal à comprendre.

(perso, si j’avais l’usage de la signature, je chercherais plutôt un outil avec intégration au clic droit de l’explorateur, ça me semble être le plus simple pour un usage léger)