Vim: редактирование GPG шифрованных файлов


Шифровать конфиденциальную информацию лучше, чем не шифровать. Многие используют различные программы для безопасного хранения паролей. Я, например, предпочитаю KeePassX другим.

Недавно наткнулся на неплохую консольную замену — плагин для Vim, который позволяет удобно и безопасно редактировать зашифрованные файлы.

Gnupg Vim плагин лежит здесь

Если вы читали предыдущую статью про создание PGP ключей, то уже знаете как создать свой ключ, которым можно шифровать и расшифровывать данные.

Для того, чтоб воспользоваться плагином, нам нужно его скачать в ~/.vim/plugin и добавить пару настроек в .vimrc и .bashrc для удобства.

wget -O ~/.vim/plugin/gnupg.vim
http://www.vim.org/scripts/download_script.php?src_id=18070

echo 'let g:GPGPreferArmor=1' >> ~/.vimrc
echo 'let g:GPGDefaultRecipients=["name@example.com"]' >> ~/.vimrc

echo 'export GPG_TTY=`tty`' >> ~/.bashrc
source ~/.bashrc

name@example.com это почтовый ящик, для которого вы создали приватный ключ.

На этом настройка заканчивается.

Теперь с помощью Vim можно открывать зашифрованные файлы и редактировать их, единственное требование, чтоб файлы имели расширение ‘.asc’, ‘.pgp’ или ‘.gpg’.

Создаем шифрованный файл.

echo 'secret' > secret.txt
gpg -ear name@example.com secret.txt
cat secret.txt.asc
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1.4.14 (GNU/Linux)

hQIMA3akIzX7jJ1iAQ/6Az3O1yQjxGpdEdMAEM9hEKGTzN7scnOl/p2/PJFRJ6nz
h48cZ34ur4kIVutxQx+HvcXgZNkQw96AEmo+Bq51DJWjcrwnG1RcrqIYJXuZX5A5
QgJKrSDT4/kIOrSpSkDdtYTD5XcZRMnRZg2lX/AuLaVKCeJlNSNahQLAJ1DgvkZ8
D6Rd5i0Uh/xsh2AwP6fk/wAcLbaOFyN8LdFI10Bkk/rdE4kWGPNHOYtFXk/o0q3h
tFuLy5ftWyQNYgAUJy+oLRSwW8WbOzjGOcM/dhiP0+6RlGDNy9tflZm4eQCeNtH2
uCX6alnJbYXqKjV47O2nHRw05oywgiaHOrDETGkBreDPNwQrF14TTBFeROSGV6cG
SgSynhNRjwjTgwcq27PUWMN3owr75P93vdbjMqKRedvu+yStGwcXb0bT5kQ2anVz
90R1euEICGxcDyAKNQ/l1m9VG5Is4B7NEWM0YekSrdnWNm6Hgx65S7jrMeToFWvc
Rtx/72bMVZeZxQA09/RDQzOLw77Zcr6tox87Oh4HgsNuFwkMlX7yETe/Q3M6GL+s
EeRQN38YH/k9W5IpwFKQ1Q45eoYqa+3VARvqoBxRtJM9GbQJsG7dQ1GtpgxkwU2A
v93hmuVeulYIrTreXvfi3oJsnUy+BoyocTqi9b7wjEtAQuuoLLwR4Fu7cxfrFfTS
SgEk7BhviOPRQy2X4RrjkPy8CCn1b4KPvMG67hW2/kdXIthICIZUzGlhufAbet51
BYrB2Jf5HGmbhYl5U8K3JIsZTRM4fxhWcamc
=KqMm
-----END PGP MESSAGE-----

vim -c 'wq decoded.txt' secret.txt.asc
cat decoded.txt
secret

Остановлюсь на команде gpg:

-e опция значит (–encode), что мы собираемся зашифровать файл

-a что мы будем сохранять ASCII файл, а не бинарный

-r назначает получателя, того, чьим публичным ключом мы шифруем файл. Логично указать себя, т.к. мы этот файл будем потом редактировать.

Напоследок скажу, что использовать gpg-agent — не самая плохая идея, учитывая все выше написанное.

comments powered by Disqus