Emacs Password Manager
Думаю, что объяснять, для чего нужны Password Managers не нужно. Ресурсов много, желательно для каждого использовать свои логины и пароли, причем пароли должны быть стойкими. Запомнить их проблематично, а когда количество ресурсов становиться более сотни – то и не реально.
Для хранения паролей используются специализированные программы, типа keepassx, fpm2… Но часто, работая в Emacs просто не хочется переключаться на другие программы. Да и зачем собственно? Если в Emacs уже присутствует интерфейс для работы с GPG (свободная реализация PGP). Давайте попробуем создать свой Password Manager на основе Emacs?
Для этого создаем файл с расширением .org.gpg. И открываем его в Emacs. Двойное расширение используется для указания режимов, в которых будет работать емакс после открытия данного файла.
org – используется для указания режима org-mode, подробно на нем останавливаться не буду, чуть позже только покажу, для чего мы будем использовать его, расскажу чуть позже.
gpg – используется для указания того, что данный файл кодируется с применением GnuPG.
Если org-mode установлен и настроен, то после открытия файла появляются два пункта меню: Org и Tbl. Вот вторым мы и воспользуемся. Выбираем создание таблицы и указываем формат 4×2, то есть четыре столбца и 2 строки.
Заполняем заголовки нужными нам значениями (по сути формируем таблицу так, как считаем нужным), я выбрал следующие поля и начал заполнять значения:
Режим org-mode очень удобен при создании таблиц тем, что при заполнении таблицы ширина столбцов меняется автоматически (обратите внимание на то, как изменилась ширина при изменении содержимого стобцов):
После того, как заполнили таблицу, просто сохраняем файл (Ctrl+x Ctrl+s), на что получаем вопрос об используемом ключе:
В зависимости от того, что мы выберем (ключ или просто нажмем ок), будет использоваться различный тип шифрования. Если будет выбран ключ, то используется асимметричное шифрование. Более строгое и надежное, но возникает сложность в том случае, если срок действия ключа не большой, и в том случае, если собираемся использовать файл с паролями вне рабочей машины.
Если же просто нажать ОК, то будет использоваться симметричное шифрование. В данном случае сложность шифрования зависит только от выбранного пароля.
После ввода пароля файл сохраняется на диске уже в закодированном виде. В активном буфере будет все так же отображаться наша таблица. При попытке открытия данного файла сразу будет спрашиваться пароль, который использовался при шифровании.
Далее возможно два варианта: или введенный пароль будет кешироваться и в следующий раз при открытии данного файла пароль уже запрашиваться не будет (в течение текущей сессии), или же пароль будет спрашиваться каждый раз. Регулировать данное поведение можно устанавливая значение переменной epa-file-cache-passphrase-for-symmetric-encryption в файле конфигурации емакса:
(setq epa-file-cache-passphrase-for-symmetric-encryption t)
в данном случае пароль будет кэшироваться, а если
(setq epa-file-cache-passphrase-for-symmetric-encryption nil)
то пароль не сохраняется… Естественно, в традициях безопасности пароль лучше всего не сохранять, каждый раз спрашивая его у пользователя.
Таким образом мы только что, с минимумом усилий, создали небольшой и довольно надежный менеджер паролей. При этом, для удобства, можно в конфигурации задать клавиатурную комбинацию для открытия данного файла. Жмем данную комбинацию, вводим пароль, осуществляем поиск по файлу, копируем в буфер нужные данные, закрываем файл…
зы: совсем забыл указать, что в версии емакса 23.1 работа с gpg встроена и работает из коробки, не требуя предварительной настройки…
Похожие записи:
Метки: emacs





круто, я именно так и храню свои пароли уже примерно год, очень удобно. Еще обычно открыт буфер dired с дирой, где все мои org файлы, нажал на файлике с паролями v, ввел пароль и получил свою базу.
я не претендовал на открытие… просто решил поделиться методами работы… =)
орг-моде используешь для организации паролей?
Я использую epa для хранения паролей к различным сервисам (mail, twitter, jabber, lastfm,…), следующим образом:
(defun my-auth-info ()
(interactive)
(save-excursion
(find-file «~/.emacs.d/private.el.gpg»)
(eval-buffer)
(kill-buffer)))
(add-hook ‘after-init-hook ‘my-auth-info)
в данном случае файл private.el.gpg содержит описание функций авторизации на данные сервисы? причем сервисы используются в самом емаксе? я правильно понимаю?
Я так думаю у него в файле private.el.gpg просто переменные с логинами/паролями, которые после эвала используются различными приложениями в Emacs.
А для меня обязательной функцией менеджера паролей является генерирование случайного пароля при добавлении записи, т.к. я добавляю её обычно в тот момент, когда регистрируюсь в сервисе.
Можно написать генератор на Elisp, а можно просто использовать один из многочисленных cli генераторов паролей.
P.S. Я раньше использовал для управления паролями шелл-скрипт:
http://pavel.vyazovoi.info/articles/bash-password-manager/pass?attredirects=0
А сейчас использую портативный keepass с ключами в симбиозе с truecrypt.
Я тоже так подумал, что именно в таком виде он использует… Но в статье говориться немного о другом…
Для меня генерирование пароля тоже важная часть менеджера. Тут просто ее еще не реализовал. Надо будет попробовать…
А пока, как и несколько лет подряд уже, использую keepassx… Начинал давненько уже с keepass…
А в последнее время еще обратил внимание на lastpass, хорошая вещь для веба.
Гм, у меня не появляется список средств асимметричного шифрования,
как на скриншоте:
http://www.juev.ru/wordpress/wp-content/uploads/2009/08/emacs-pass-3.png
Хотя выбор способа и предлагают (из 0 вариантов).
Я даже не против симметричного, но хотелось бы просто понять
в чем дело.
ОС: Win XP SP 2
GNU Emacs 23.1.50.1 (i386-mingw-nt5.1.2600)
gpg (GnuPG) 1.4.9 (из Cygwin)
P.S. За статью спасибо, очень кстати – беру на вооружение
Под Win я не пробовал использовать Emacs с GnuPG, потому точного ответа даже не могу дать, почему вам не дают вариантов шифрования.