Linux -- это интересно

PGP. Храним свои пароли в одном месте


У каждого из нас есть много аккаунтов в сети, на сайтах, на компьютерах, от почты, асек, пинкоды и т. д., словом всё то, что должны знать только вы. Как же это всё запомнить?


Есть два варианта:
1. Иметь 1-2 постоянных пароля. Но, если уведут один пароль -- сразу взломают много ваших аккаунтов.
2. Иметь на каждый сервис свой сложный пароль. Но их невозможно запомнить.

Предлагаю вам воспользоваться PGP-шифрованием, т. е. хранить всего один зашифрованный файл с вашими аккаунтами.

Для этого нам понадобится несколько вещей:

1. Флешка для хранения приватного ключа;
2. Программа pgpgpg;
3. Небольшой скрипт на bash'е.
Установим pgpgpg.

# aptitude install pgpgpg

Генерируем пару ключей.

$ pgpgpg -kg

Программа предложит выбрать тип ключа. Выбираем первый вариант.

Выберите тип ключа:
  (1) DSA и ElGamal (по умолчанию)
  (2) DSA (только для подписи)
  (5) RSA (только для подписи)
Ваш выбор (?-подробнее)? 1
 

Далее, выбираем длину ключа. Чем она больше, тем надёжнее ключ. Мы же суровые линуксойды, потому выбираем по максимому. :)

Какой размер ключа Вам необходим? (2048) 4096 

Указываем срок действия ключа -- без срока действия.

Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет
Ключ действителен до? (0)
Ключ не имеет ограничения срока действительности
Все верно? (y/N)
 

Создаём идентификатор пользователя.

Ваше настоящее имя: Sergey Blohin Email-адрес: sblohin@yandex.ru Комментарий: linux administrator 

Если всё верно, то идём дальше. Задаём пароль для приватного ключа. Дальше система сгенерирует пару ключей. Обычно это длится несколько минут.

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход?
Для защиты секретного ключа необходим пароль.

После того, как у нас сгенерированы ключи уже можно ими пользоваться.

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

$ pgpgpg -kx my_private_pgp_key
$ pgpgpg -kxa my_public_pgp_key

Копируем оба файла на флешку и удаляем их с компьютера (они всё равно в системном хранилище ключей останутся.

Хранение личных паролей.

Создаём обычный текстовый файл и вписываем в него наши данные аккаунтов.

$ echo "-e" "yandex.ru yandex_login yandex_password\n" >> "my_pass" 2> "/dev/null"
$ echo "-e" "mail.ru mail_login mail_password\n" >> "my_pass" 2> "/dev/null"
$ echo "-e" "visa_card card_holder pin_code\n" >> "my_pass" 2> "/dev/null"

Теперь этот текстовый файл надо зашифровать.

Указываем свой e-mail, который мы указывали при создании ключей.

$ pgpgpg "-e" "my_pass"
  Введите User ID. Пустая строка для завершения:

После шифрования мы получаем 2 файла. Наш исходный my_pass, который уже можно удалить и my_pass.pgp, который и хранит в себе в зашифрованном виде наши пароли.

Как достать ключи из зашифрованного файла.

$ pgpgpg "-d" "my_pass.pgp"

Вводим пароль ключа и получаем наш исходный my_pass.

Автоматизирование процесса добавления паролей в файл.

Создаём небольшой скрипт.

$ > add-password.bash
$ chmod "+x" "add-password.bash"
$ vim "add-password.bash"

Внутри файла:

#!/bin/bash
declare "-r" FILENAME="my_pass"
declare "-r" ERR_FILE="/dev/null"
declare "-r" SERVICES="$1"
declare "-r" USERNAME="$2"
declare "-r" PASSWORD="$3"
declare "-r" PGP_USER="<a class="linkification-ext" href="mailto:sblohin@yandex.ru" title="Linkification: mailto:sblohin@yandex.ru">sblohin@yandex.ru</a>"
pgpgpg "-d" "$FILENAME".pgp 2>> "$ERR_FILE"
rm "$FILENAME".pgp 2>> "$ERR_FILE"
echo "-e" "$SERVICES" "$USERNAME" "$PASSWORD" >> "$FILENAME" 2>> "$ERR_FILE"
pgpgpg "-e" "$FILENAME" "$PGP_USER" 2>> "$ERR_FILE"
rm "$FILENAME" 2>> "$ERR_FILE"
echo "-e" "Done"
Добавляем аккаунт в файл:

$ add-password.bash yandex.ru yandex_login yandex_password
$ add-password.bash mail.ru mail_login mail_password

По аналогии и читаем.

#!/bin/bash
declare "-r" FILENAME="my_pass"
declare "-r" ERR_FILE="/dev/null"
declare "-r" SERVICES="$1"
pgpgpg "-d" "$FILENAME".pgp 2>> "$ERR_FILE"
cat "$FILENAME" 2>> "$ERR_FILE" | grep "-i" "$SERVICES" 2>> "$ERR_FILE"
rm "$FILENAME" 2>> "$ERR_FILE"

Вот и всё. :)

Комментариев: 5 RSS

ну, каждому - своё :) главное, что есть выбор и есть возможность :)

$ pgpgpg -kx my_private_pgp_key
Error: File to store exported key required.

Чего делать?

лучше использовать http://www.keepassx.org/ , если не хватает опыта с консолью. Всё-таки, достойный инструмент :)

Оставьте комментарий!
Используйте нормальные имена.Войти через loginza
Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



 
(обязательно)