aaa pass

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

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


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

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

[code] # aptitude install pgpgpg [/code]

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

[code]$ pgpgpg -kg[/code]

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

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

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

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

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

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

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

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

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

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

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

[code]$ pgpgpg -kx my_private_pgp_key
$ pgpgpg -kxa my_public_pgp_key[/code]

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

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


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

[code]

$ 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"[/code]

Теперь этот текстовый файл надо зашифровать.
Указываем свой e-mail, который мы указывали при создании ключей.
[code]
$ pgpgpg "-e" "my_pass"
  Введите User ID. Пустая строка для завершения:[/code]

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

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

[code]$ pgpgpg "-d" "my_pass.pgp"[/code]

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

Автоматизирование процесса добавления паролей в файл.
Создаём небольшой скрипт.
[code]$ > add-password.bash
$ chmod "+x" "add-password.bash"
$ vim "add-password.bash"[/code]

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


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

[code]$ add-password.bash yandex.ru yandex_login yandex_password
$ add-password.bash mail.ru mail_login mail_password[/code]

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

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

Вот и всё. :)