ORG File crittografato (Emacs, org-mode, Gnupg)

Org-mode, plugin di Emacs, è un progetto che apprezzo da anni. L’ho sempre considerato un’idea semplicemente fikissima! Questo fa emergere il mio nerdismo… capisco, me ne rendo conto. In ogni modo, tra i vari file che utilizzo day by day ho sempre avuto un file excel (non chiedete per favore) protetto da password che conteneva account vari. Insomma un file prezioso direi. Ebbene finalmente mi sono tolto l’excel e sono passato ad un file .org prodotto ovviamente col plugin org-mode di Emacs. Sorge il problema di come proteggerlo da occhi indiscreti nel caso venisse acceduto volutamente o erroneamente da altri, I file .org rimangono comunque file di testo quindi leggibili in moltissimi modi molto semplici. Nasce quindi l’esigenza di proteggere il file ma come eventualmente ogni altro file ritenuto sensibile. La soluzione ovviamente è utilizzare Gnupg (gpg) che non solo permette una crittografia più che decente ma anche certamente molto meglio della crittografia offerta da Excel.

Pre-condizione

Emacs installato, org-mode già integrato in Emacs, Gnupg installato, di seguito le versioni utilizzate anche se non obbligatorie.

  1. Emacs 27.1-2 (ArchLinux: sudo pacman -S emacs)
  2. Spacemacs (https://www.spacemacs.org)
  3. Gnupg 2.2.21 (ArchLinux: sudo pacman -S gnupg)

Dovrete inoltre aver creato la vostra chiave gpg, la mia ha come recipient o user-id VOSTROID. Per criptare il file e in questo caso il file .org, è semplice:

> gpg -s -a -e -r VOSTROID nomefile

Vi creerà un file con l’aggiunta dell’estensione .asc

Configurazione Emacs

Configurazione di Emacs Nella configurazione di Emacs con Spacemacs avrete un file ~/.spacemacs nella vostra $HOME ma che non dovrete toccare. Sempre nella vostra $HOME avrete la directory ~/.emacs.d con all’interno tutto il “malloppo” Spacemacs ed eventuali vostre personalizzazioni. Il file da modificare sarà: init.el. La parte da inserire in coda è la seguente:

(require 'epa-file)
(epa-file-enable)
(setq epa-file-name-regexp "\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'\\|\\.asc") (epa-file-name-regexp-update)
  
;; Minor mode for ASCII-armored gpg-encrypted files (define-minor-mode auto-encryption-armored-mode "Save files in encrypted, ASCII-armored format"
;; The initial value.   nil 
;; The indicator for the mode line. " Encrypted,Armored"
;; The minor mode bindings.   nil
  
(if 
  (symbol-value auto-encryption-armored-mode)
  (set (make-local-variable 'epa-armor) t)
  (kill-local-variable 'epa-armor)
)
(add-to-list 'auto-mode-alist '("\\.asc$" . auto-encryption-armored-mode))

Ok, ora potrete avviare Emacs per verificare se non ci sono errori ma sappiate che per ogni org file che vorrete crittografare dovrete inserire come prima del file, la seguente:

# -*- mode:org; epa-file-encrypt-to: ("ktx@oblab.com") -*-*  

Ovviamente con la vostra user-id, all’apertura vi verrà richiesta la vostra passphrase e il file verrà letto correttamente da Emacs attraverso il modulo org-mode e correttamente interpretato . Il file verrà salvato nel medesimo formato .asc così da rimanere crittato.