Connexion
Abonnez-vous

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

Avec un Gist en bonus

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

Le 17 août 2017 à 14h57

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.

Commentaires (24)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

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.

votre avatar

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

votre avatar

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.

votre avatar

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

votre avatar

Merci… <img data-src=" />

votre avatar







David_L a écrit :



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







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


votre avatar

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?

votre avatar

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

votre avatar

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

votre avatar

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=" />

votre avatar

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

votre avatar







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é.


votre avatar

github.com GitHub<img data-src=" />&nbsp;

votre avatar







David_L a écrit :



github.com GitHub<img data-src=" />





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



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


votre avatar

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

votre avatar







David_L a écrit :



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





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


votre avatar

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.

votre avatar

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)…

votre avatar

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



In Defense of the Popular Framework Electron



<img data-src=" />

votre avatar

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 ^^


votre avatar

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.

votre avatar

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

votre avatar

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

votre avatar







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)


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

  • Le chiffrement/signature d'un texte en quelques clics

  • Une première correction...

  • ... avant un changement plus en profondeur

Fermer