- PVSM.RU - https://www.pvsm.ru -
Наверняка многим из вас знакомы работы Филиппа Циммерманна [1], а в частности, самая известная из них — PGP (Pretty Good Privacy — Почти Полная Конфиденциальность), опубликованная в далеком 1991 году. Изначально PGP как пакет программного обеспечения предназначался для шифрования электронной почты и до сегодняшнего момента алгоритм(ы) шифрования, заложенные в PGP еще не были взломаны.

В этом году PGP исполняется 30 лет [2] и в связи с этой знаменательной датой я с вашего позволения напишу свой опыт взаимодействия с PGP в качестве основы для менеджера паролей.
Небольшая ремарка: PGP был отжат корпоратами и стал проприетарным, а альтернативная версия с открытым исходным кодом стала носить имя GnuPG [3] (сокр. GPG). Далее в этой статье буду пользоваться аббревиатурой GPG.
Каждый из вас наверняка пользуется менеджером паролей, а если не пользуется, то точно слышал об этом.
Если у вас нет менеджера паролей, то вы наверняка:
У меня все эти проблемы были, и, количество сервисов, на которых я регистрировался, разрослось до более чем 357. Я Осознал — надо что-то менять…
Начал задумываться о категоризации всего этого хозяйства.
Пароли у меня хранились в памяти, в e-mail сообщениях в черновиках, на обрывках бумажек, отрывных блокнотиках, листках формата А4, сложенных вдвое, на флешках в файлах *.txt и т.д.
PASS [4] — это небольшой bash-скрипт, созданный Джейсоном Доненфельдом, хранящий пароли в обычных текстовых файлах, зашифрованных с помощью GPG. Официальный сайт — www.passwordstore.org [4]
Может хранить в зашифрованном виде не только логины/пароли, но и любую текстовую информацию.
Шифрование всей информации производится с помощью GPG, запросы паролей осуществляет gpg-agent, за контроль версий и поддержку удаленного репозитория отвечает Git, а сама утилита написана на языке bash. Таким образом, у вас есть возможности, за которые можно не беспокоиться. На самом деле, если вы хотите, вы можете получить доступ к репозиторию Git и файлам Gnupg напрямую, вообще не используя PASS.
На официальном сайте PASS www.passwordstore.org [4] есть множество клиентов под разные OS.
Для того, чтобы настроить и развернуть связку PASS и Git, я использовал Gitea [7] (свободный аналог github, gitlab).
Для разворачивания Gitea достаточно будет самых минимальных требований, например можно взять тариф Старт Хит [8] (240р/мес. на момент написания статьи) на ruvds.com [9]. К тому же у них есть услуга — 3 дня малинке RaspberryPi (2,3,4 версий), хоть на банане Banana PI.
Подробно останавливаться в этой статье на установке Gitea не будем, есть подробнейшая документация со всевозможными способами установки:

Документация Gitea — варианты установки
Привязку Gitea к собственному домену, установку SSL-сертификата в этой статье рассматривать не буду. Укажу лишь отличный бесплатный вариант, который я использовал:
Используемые данные Gitea в статье:
Gitea установлен на zil02.ml [12]
login: gitlog
e-mail, указанный при создании gpg связки ключей: gitlog@zil02.ml
На странице со списком свободных OS можно выбрать приглянувшуюся —
www.gnu.org/distros/free-distros.html#for-pc [13] я установил Dragora как основную Linux систему. У вас это может быть любая OS на ядре Linux. Самая распространенная Ubuntu, но это не значит, что самая безопасная. В Ubuntu на уровне ядра есть проприетарные компоненты, которые противоречат философии свободного программного обеспечения.
Итак, открываем терминал. Обновим репозитории и установим gpg и gnupg:
sudo apt update && sudo apt upgrade -y
sudo apt install gpg
sudo apt install gnupg
Смотрим версию установленного GPG:
gpg --version

У меня версия gpg (GnuPG) 2.2.12
Для того чтобы посмотреть публичный и приватный ключи:
gpg -k #публичный ключ
gpg -K #приватный ключ

Убеждаемся, что ключей нет
Теперь давайте их создадим. Делается это командой:
gpg --full-generate-key
Выбираем — 1 (default)
Ставим максимальную длину — 4096
Не ограничиваем валидность ключа временем: ставим 0
Подтверждаем свой выбор.

Вводим Имя, Фамилию, e-mail. Подтверждаем выбор.
Далее Вас спросят придумать мастер-пароль

Это главный пароль для доступа в Вашей связке ключей! Делайте его максимально сложным и запомните, запишите в надежном месте.

Введя легкий пароль, вы увидите сообщение:

Ваш ключ создался!
Установим PASS:
apt install -y pass
Посмотрим, где у нас лежит PASS (в /usr/bin/pass):
which pass
Проинициализируем хранилище паролей, всю связку ключей, созданных ранее с e-mail: gitlog@zil02.ml:
pass init gitlog@zil02.ml
Создалась директория /.password-store
В этой директории будет лежать скрытый файл .gpg-id в нем будет одна строчка с идентификатором ключа. Именно им и будут шифроваться все ваши пароли.

Попробуем добавить любую информацию в наш менеджер паролей PASS из консоли, для лучшего понимания!
PASS использует для хранения каждого пароля к сервису отдельный файл. Это очень удобно!
Например, добавим пароль на email:
pass insert Email/gmail.com
где Email — это папка, через ‘/’ gmail.com — текстовый файл с паролем.
Введем для примера пароль 1234

Создался зашифрованный бинарник gmail.com.gpg в директории /root/.password-store/Email
Для просмотра зашифрованного пароля вводим свой мастер-пароль от gpg ключа:
pass Email/gmail.com

Проверим через редактор в WinCSP
Бинарник имеет нечитаемый вид
в PASS есть возможность сохранять пароли в ASCII.
В настройках Pass for iOS это Settings-> Advanced
включить опцию "Encrypt in ASCII-Armored"

Тогда зашифрованные данные примут человеческий вид
Теперь нам нужно настроить Git (Gitea) на локальной машине, берем user и email из настроек gitea выше:
git config --global user.name “gitlog”
git config --global user.email “gitlog@zil02.ml”
На всякий случай указываем правильный путь до gpg:
git config --global gpg.program gpg2
вместо “gpg2” у вас может быть просто “gpg”
И тестируем, подписываются ли наши сообщения:
echo “test” | gpg --clearsign

Если сообщения не подписываются, и возникает ошибка “gpg: signing failed: Inappropriate ioctl for device”
Добавить в ~/.gnupg/gpg.conf:
use-agent
pinentry-mode loopback
Добавить в ~/.gnupg/gpg-agent.conf:
allow-loopback-pinentry
Затем перезапуск:
echo RELOADAGENT | gpg-connect-agent
Справедливо для linux и osx.

Отлично! Продолжаем:
Добавляем первоначальный конфиг в /root/.gnupg/gpg.conf:
keyid-format 0xlong
throw-keyids
no-emit-version
no-comments

Теперь выбираем, каким ключом будут подписываться наши коммиты
проверяем:
gpg -k

возьмем rsa4096/0x4B0659102A08305B:
git config --global user.signingkey 0x4B0659102A08305B
git config --global commit.gpgsign true
Создадим git репозиторий

Инициализируем гит:
pass git init
Добавляем тот путь, который нам показал Gitea после установки Gitea (заменив дефолтный путь 127.0.0.1:22022 на имя домена):
pass git remote add origin https://zil02.ml/gitlog/habr_ruvds.git
Коммитим изменения. Для того чтобы закачать изменения, пользуемся стандартным методом.
cd .password-store/
git add .
git commit -m “123”
git push -u origin master
Если все сделали правильно, должно получиться следующее:

Открываем репозиторий:

Ура! Все изменения из нашего православного менеджера паролей PASS синхронизировались с нашим Gitea. (Все содержимое папки * /.password-store)
Официальный сайт приложения — mssun.github.io/passforios [5]
Экспортнем public и secret ключ и перенесем на iPhone:
gpg --export -a 0x4B0659102A08305B > 8305Bpub.gpg
gpg --export-secret-keys -a 0x4B0659102A08305B > 8305Bsecret.gpg

Пропишем настройки git репозитория:

Поздравляю Вас, мы справились на Отлично!
В этой пошаговой статье мы с Вами установили собственный git репозиторий, пакет GPG и менеджер паролей PASS на локальную систему (Linux) и на iPhone (Pass for iOS). Теперь мы можем создавать, изменять пароли с PC, айфона, синхронизировать изменения через git, использовать автозаполнение логинов-паролей на iPhone в браузерах для входа в различные онлайн сервисы.
Можем хранить любые данные помимо паролей.
Очень простой формат организации и хранения паролей дает нам достаточно широкие возможности:
Менеджер паролей PASS имеет большую поддержку со стороны сообщества. Есть бесшовная синхронизация через git между экземплярами PASS на компе, ноутах, телефонах. Существуют реализации программы для Android и iOS, плагины для веб-браузеров Chrome и Firefox, графические клиенты для Windows, Mac и Linux, расширения для Alfred, dmenu, rofi и Emacs, скрипты для импорта паролей из других менеджеров паролей!
PASS покрывает возможность хранения всей базы паролей на своем сервере/локальном компьютере/флешке/диске.
Поддерживается возможность делать быстрый backup паролей. Вы вольны выбирать какой тип шифрования использовать для сокрытия ваших паролей и любой другой приватной информации!
Вы можете придумать и реализовать свою структуру хранения паролей с категоризацией!
В первую очередь этой статьей хотел вызвать интерес к открытому программному обеспечению и правильному хранению Вашей персональной информации! Хранить пароли в месте, защищенном от хитрого взора корпораций, считаю хорошей практикой!
Автор: halsoi
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/365815
Ссылки в тексте:
[1] Филиппа Циммерманна: https://www.philzimmermann.com/RU/background/index.html
[2] PGP исполняется 30 лет: https://habr.com/ru/news/t/561842/
[3] GnuPG: https://ru.wikipedia.org/wiki/GnuPG
[4] PASS: https://www.passwordstore.org/
[5] Pass for iOS: https://mssun.github.io/passforios/
[6] VPS: https://www.reg.ru/?rlink=reflink-717
[7] Gitea: https://gitea.io/en-us/
[8] Старт Хит: https://ruvds.com/cheap_vps/
[9] ruvds.com: http://ruvds.com/
[10] my.freenom.com: https://my.freenom.com
[11] certbot.eff.org/lets-encrypt/debianstretch-nginx: https://certbot.eff.org/lets-encrypt/debianstretch-nginx
[12] zil02.ml: https://zil02.ml
[13] www.gnu.org/distros/free-distros.html#for-pc: https://www.gnu.org/distros/free-distros.html#for-pc
[14] ru.stackoverflow.com/questions/791317/gpg-signing-failed-inappropriate-ioctl-for-device: https://ru.stackoverflow.com/questions/791317/gpg-signing-failed-inappropriate-ioctl-for-device
[15] Image: http://ruvds.com/ru-rub?utm_source=habr&utm_medium=article&utm_campaign=halsoi&utm_content=menedzher_parolej_s_gpg_shifrovaniem:_nastrojka_pass_na_ios_+_git
[16] Источник: https://habr.com/ru/post/566042/?utm_source=habrahabr&utm_medium=rss&utm_campaign=566042
Нажмите здесь для печати.