Un gestionnaire de mot de passe
Avec vim(1)
et gpg(1)
, c'est facile ! Dans votre .vimrc
, ajoutez :
" Transparent editing of gpg encrypted files. " Placed Public Domain by Wouter Hanegraaff <wouter@blub.net> " (asc support and sh -c"..." added by Osamu Aoki) augroup aencrypted au! " First make sure nothing is written to ~/.viminfo while editing " an encrypted file. autocmd BufReadPre,FileReadPre *.asc set viminfo= " We don't want a swap file, as it writes unencrypted data to disk autocmd BufReadPre,FileReadPre *.asc set noswapfile " Switch to binary mode to read the encrypted file autocmd BufReadPre,FileReadPre *.asc set bin autocmd BufReadPre,FileReadPre *.asc let ch_save = &ch|set ch=2 autocmd BufReadPost,FileReadPost *.asc '[,']!sh -c "gpg --decrypt 2> /dev/null" " Switch to normal mode for editing autocmd BufReadPost,FileReadPost *.asc set nobin autocmd BufReadPost,FileReadPost *.asc let &ch = ch_save|unlet ch_save autocmd BufReadPost,FileReadPost *.asc execute ":doautocmd BufReadPost " . expand("%:r") " Convert all text to encrypted text before writing autocmd BufWritePre,FileWritePre *.asc '[,']!sh -c "gpg --default-recipient-self -ae 2>/dev/null" " Undo the encryption so we are back in the normal text, directly " after the file has been written. autocmd BufWritePost,FileWritePost *.asc u augroup END augroup bencrypted au! " First make sure nothing is written to ~/.viminfo while editing " an encrypted file. autocmd BufReadPre,FileReadPre *.gpg set viminfo= " We don't want a swap file, as it writes unencrypted data to disk autocmd BufReadPre,FileReadPre *.gpg set noswapfile " Switch to binary mode to read the encrypted file autocmd BufReadPre,FileReadPre *.gpg set bin autocmd BufReadPre,FileReadPre *.gpg let ch_save = &ch|set ch=2 autocmd BufReadPost,FileReadPost *.gpg '[,']!sh -c "gpg --decrypt 2> /dev/null" " Switch to normal mode for editing autocmd BufReadPost,FileReadPost *.gpg set nobin autocmd BufReadPost,FileReadPost *.gpg let &ch = ch_save|unlet ch_save autocmd BufReadPost,FileReadPost *.gpg execute ":doautocmd BufReadPost " . expand("%:r") " Convert all text to encrypted text before writing autocmd BufWritePre,FileWritePre *.gpg '[,']!sh -c "gpg --default-recipient-self -e 2$gt;/dev/null" " Undo the encryption so we are back in the normal text, directly " after the file has been written. autocmd BufWritePost,FileWritePost *.gpg u augroup END
(trouvé sur http://www.vim.org/tips/vimtips, plus exactement vimtips#651). Plus qu'à créer un fichier vide et le chiffrer :
$ touch file $ gpg -a -e file > file.asc gpg: WARNING: `file' is an empty file
Plus qu'à éditer avec vim(1)
.
Gestion de mots de passe pour une équipe
Si vous n'êtes pas seul, il vous faut un compte, disons netadmin@
. Dans le $HOME
seront les fichiers partagés (et chiffrés).
Tout s'articule sur la phrase secrète de la clef GnuPG : le chef d'équipe (disons bo@
) crée la clef, exporte le certificat de révocation. bo@
a sa propre phrase secrète sur la clef exportée.
bo@
confie la clef a son acolyte fh@
qui l'importe dans son trousseau. fh@
demande à changer la phrase secrète, bo@
tape la « vieille » et fh@
la nouvelle. On n'a partagé aucun secret, aucune phrase secrète mais chacun dispose de la clef et peut l'utiliser à sa guise.
Le coffre-fort numérique
Dans le $HOME
de netadmin@
, on crée :
- un fichier
.vimrc
reprenant la configuration ci-dessus, - un répertoire
.gnupg-bo
et un autre.gnupg-fh
, - un fichier
.trucrc
pour avoir un shell correctement configuré.
On remplit les répertoires à partir des ~bo/.gnupg
et ~fh/.gnupg
.
Le shell va avoir une variable d'environnement GNUPGHOME=$HOME/.gnupg-$SUDO_USER
(on va utiliser sudo(1)
).
Quand tout ça est prêt, plus qu'à :
$ sudo -u netadmin -i
Voilà, sous l'identité de netadmin@
, bo@
et fh@
enregistrent dans ~netadmin
les fichiers qu'ils se partagent et qui sont chiffrés avec la même clef GnuPG.
On n'a pas inventé l'eau froide mais ça marche très bien. Évidemment, ça marche tout aussi bien à trois ou plus.
Web 2.0
On peut faire plus simple avec un Wiki et l'extension FireGPG (http://fr.getfiregpg.org/
) de Firefox.