Redpass: консольный менеджер паролей
redpass
– менеджер паролей для персонального использования, предназначен для защищенного хранения и извлечения паролей доступа к сайтам, устройствам в операционных системах Linux/MacOS в консольном режиме.
Справка по использованию
Параметр --help
,-h
выдаёт справку по использованию программы.
redpass -h
Redpass: консольный менеджер паролей. Версия: 0.1.44-SNAPSHOT. Red Stars Systems, 2025 г.
Запуск: redpass [<url>] [<login>] [opts]
Под <url> понимается любое место, устройство или сайт. Например: rssys.org, "ssh:192.168.1.1", "pin:ipad4"
Примеры: `redpass myrouter admin -g` - создаст новый пароль в базе и поместит его в буфер обмена.
`redpass myrouter admin` - извлечёт пароль из базы и поместит его в буфер обмена.
`redpass myr` - если подстрока url уникальна, то логин указывать не обязательно.
`redpass -s ssh` - поиск всех url по подстроке `ssh`.
`redpass -s :login admin` - поиск всех логинов по подстроке `admin`.
`redpass -i ~/mycreds.txt` - импортировать данные.
Опции:
-f, --file ~/.redpass/redpass.vault Полный путь к файлу с базой паролей.
-g, --generate Генерация нового пароля.
-i, --import <имя файла> Импортировать логины и пароли из файла. Формат файла: ^url логин пароль\n.
-l, --length 32 Длина генерируемого пароля.
-p, --print Печать таблицы известных паролей на экран.
--print-key Печать ключа в виде hex-строки, выработанного на базе мастер-пароля.
-q, --quiet Подавить вывод лишней информации на экран.
-r, --remove Удаление пароля из базы.
-s, --search Поиск пароля по url или его части.
Зачем нужен еще один менеджер паролей?
Я хотел:
Написать нечто подобное сам;
Не зависеть от менеджеров паролей, принадлежащих большим корпорациям;
Иметь надёжное хранилище паролей для desktop-систем MacOS/Linux;
Чтобы для защиты использовались российские криптографические алгоритмы;
Удобно извлекать пароли при работе в командной строке к различным системам.
Большие корпорации владеют данными пользователей и могут менять правила управления и доступа к ним вне зависимости от желаний пользователей. Менеджер паролей встроенный в ОС контролируется создателями ОС. Менеджер паролей в браузере контролируется создателями браузера. У нас нет возможности проверить кто имеет доступ к паролям при использовании вышеуказанных парольных менеджеров. Да и сами эти парольные менеджеры не понятно как контролировать.
Такие менеджеры как LastPass
и любые западные аналоги остались в прошлом. У них другая юрисдикция и непредсказуемые правила игры. Безопасность облачных парольных менеджеров не вызывает вопросов – они являются недоверенными технологиями, находящихся в руках неизвестно кого.
redpass
локальная программа, находящаяся под полным контролем пользователя. Он содержит минимальное количество кода и может быть подвергнут аудиту без посторонней помощи. Я не ставил себе целью написать средство защиты, соответствующее различным ГОСТам и стандартам, но кое-какие из них смотрел для справки.
Почему ГОСТ и российские алгоритмы? Во-первых, любые иные алгоритмы управляются и изменяются по зарубежным стандартам, которые для нас в непонятном статусе и, что важно, под экспортными ограничениями. Во-вторых, Россия одна из немногих стран, которая обладает независимой криптографией и солидной научной базой в этой области. В третьих, многие западные алгоритмы, например SHA-256 подвержены огромному ускорению на GPU/ASIC устройствах. Это создает условия для атак грубого перебора и быстрого вскрытия парольной базы, защищенной паролем с применением алгоритма PBKDF2. (Для справки, для защиты базы паролей, как правило, используется мастер-пароль, на основе которого вырабатывается секретный ключ шифрования базы паролей, с применением алгоритмов: PBKDF2-HMAC-SHA256 или их вариаций. Рекомендуемое увеличение количества итераций для этих алгоритмов с 10000 до 600000 за последние годы говорит само за себя.)
Российская функция хеширования (Streebog) судя по открытым данным, очень “неудобна” для GPU/ASIC. Буквально в 1000+ раз медленнее на GPU/ASIC, но быстрая на обычных CPU, что является очень хорошим свойством для применения алгоритмов типа PBKDF2, для выработки ключа шифрования базы паролей.
Российский алгоритм шифрования (“Кузнечик”) относительно новый и проектировался с учётом всех известных атак на блочные шифры. По крайней мере это алгоритм знают тут и он хорошо исследован. Популярный шифр AES или любой иной для нас под экспортными ограничениями.
Установка
Скачайте бинарный файл redpass
под нужную ОС и архитектуру процессора по ссылке последнего релиза.
Для запуска в любой ОС можно также воспользоваться jar-файлом, но это потребует установки java
и запуск будет медленнее.
Распакуйте архив бинарного файла и скопируйте исполняемый файл в каталог /usr/local/bin
под именем redpass
.
После этого попытайтесь запустить: redpass -h
. Если появилась справка - установка завершена.
Проверьте, что в терминале MacOS у вас доступна утилита pbcopy
, а в Linux у вас установлена утилита xclip
(установка командой: apt-get install xclip
).
Использование
Создание базы паролей
При первом запуске, без параметров будет создана пустая база паролей.
redpass
Введите мастер-пароль к базе:
По умолчанию путь к базе ~/.redpass/redpass.vault
. Если файл уже существует, то ничего не произойдет.
Файл базы паролей будет иметь права доступа rw-------
(600).
Если нужно изменить место хранения базы, то при создании и дальнейшем использовании нужно всегда указывать параметр --file
, -f
с указанием полного пути файла.
Например, следующая команда создаст файл в текущем каталоге:
redpass -f ./my.vault
Введите мастер-пароль к базе:
Для блокировки множественного доступа к базе используется lock-файл. Если он случайно остался на диске и блокирует доступ к базе, то этот lock-файл можно безопасно удалить.
Создание пароля
Выполните команду в формате: redpass <url> <login> -g
.
По умолчанию, длина генерируемого пароля равна 32 символа.
Для выработки случайного пароля используется датчик случайных чисел в виде класса java.security.SecureRandom
. Данный класс обладает достаточной энтропией для работы с криптографическими функциями, поэтому подходит для выработки случайных паролей.
Пример создания пароля для пользователя root
.
redpass ssh:192.168.1.1 root -g
Redpass: консольный менеджер паролей. Версия: 0.1.30-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Новый пароль записан в базу.
Пароль скопирован в буфер обмена.
Пример выработанного пароля: usY=Q`pL*?qgLtnpxJ1c_x$^Z;4R355-
В качестве url
можно использовать различные идентификаторы. Главное, чтобы они что-то значили.
Например:
Доменное имя. Например: www.rssys.org, rssys. Не рекомендуется использовать полную ссылку, т.к это будет не удобно отображать в таблице в консоли.
Название устройства . Например, планшет, банковская карта, пропуск на вход в квартиру:
ipad4
,card4057
,kv234
.Ip-адрес с префиксом протокола. Например: ssh:192.168.1.1, “http://127.0.0.1:8080”.
В качестве login
можно использовать любое имя или то имя под которым зарегистрирован пользователь.
Если, нужно изменить длину пароля по умолчанию, то при генерации пароля нужно указать параметр --length
, -l
.
Пример, генерации пароля из 16 символов:
redpass ssh:192.168.67.1 root -g -l 16
Redpass: консольный менеджер паролей. Версия: 0.1.30-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Новый пароль записан в базу.
Пароль скопирован в буфер обмена.
Пример, выработанного пароля: FtT235=)y1Vd/6zO
.
Просмотр базы
Параметр --print
,-p
выдаёт содержимое базы, без просмотра самих паролей.
redpass -p
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Количество транзакций над базой: 11.
Дата последнего изменения: 2025-02-06 15:16:42
Общее количество записей: 5
| :url | :login |
|-----------------------+-----------------|
| card4057 | pin |
| http://127.0.0.1:8080 | admin |
| ipad4 | pin |
| kv234 | pin |
| mmail.ru | email1@mmail.ru |
| ssh:192.168.1.1 | root |
| ssh:myrouter | admin |
| telegram | login123 |
Извлечение пароля
Базовый способ
Базовый способ извлечения пароля является вызов: redpass <url> <login>
.
Менеджер паролей найдет по переданной связке нужный пароль и запишет его в буфер обмена. Данная возможность вставки в буфер обмена работает только в MacOS (утилита pbcopy
) и Linux (утилита xclip
).
Пример:
redpass telegram login123
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Пароль скопирован в буфер обмена.
При нажатии (Ctrl-V / Cmd-V) происходит вставка пароля в нужной программе, например в браузере.
Быстрый способ
Для удобства быстрый способ работает по уникальной подстроке url
среди всего множества url, без указания логина.
Для извлечения пароля по части url
можно воспользоваться вызовом: redpass <часть url>
.
Например, мы знаем, что в текущей базе “telegram” это уникальный url
и тогда мы можем запросить пароль только по части url: “tel”.
redpass tel
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Найден пароль для пары: [telegram login123]
Пароль скопирован в буфер обмена.
Если переданная часть url будет не уникальной в общем списке, то будет выдана подсказка возможных вариантов. Допустим мы хотим найти пароль для подстроки “ssh”, которая встречается в нескольких записях.
redpass ssh
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Найдено два или более вариантов. Выберите нужный:
| :url | :login |
|-----------------+--------|
| ssh:192.168.1.1 | root |
| ssh:myrouter | admin |
Для извлечения пароля достаточно указать теперь любую уникальную подстроку из двух представленных вариантов (например: “myr” или “192”).
Вывод пароля на экран
Для целей конвейерной обработки команд может понадобиться передать пароль другой программе через pipe. Для этого предусмотрена возможность вывода пароля на экран, вместо копирования его в буфер обмена. Для этого нужно установить переменную окружения REDPASS_PWD_OUTPUT_STDOUT
и присвоить ей любое значение. Также нужно указать параметр --quiet
,-q
для подавления лишнего вывода, чтобы была осуществлена печать на экран только пароля.
При этом redpass
всё еще будет запрашивать ввода мастер-пароля. Для полной автоматизации, чтобы redpass
не ждал ввода мастер-пароля с клавиатуры воспользуйтесь переменными окружения REDPASS_MASTER_PWD_INPUT_FILE
или REDPASS_SECRET_KEY_FILE
, но об этом далее.
Пример:
export REDPASS_PWD_OUTPUT_STDOUT=1
redpass card -q
I3I`=:SMn8?L'^2bSMa%$6Q18_]KANMi
При этом пароль будет передан как есть, без символа новой строки в конце.
Если переменной окружения присвоить значение newline
, то при выводе пароля на экран в конце будет добавлен символ новой строки.
Пример:
export REDPASS_PWD_OUTPUT_STDOUT=newline
redpass card -q
I3I`=:SMn8?L'^2bSMa%$6Q18_]KANMi
Не забудьте удалить переменную командой: unset REDPASS_PWD_OUTPUT_STDOUT
Вывод пароля в файл
Для целей автоматизации может понадобиться извлекать пароль и записывать его в конкретный файл. Для этого нужно установить переменную окружения REDPASS_PWD_OUTPUT_FILE
и в качестве её значения указать путь к файлу, куда записать пароль. При этом redpass
всё еще будет запрашивать ввода мастер-пароля.
Для полной автоматизации, чтобы redpass
не ждал ввода мастер-пароля с клавиатуры воспользуйтесь переменными окружения REDPASS_MASTER_PWD_INPUT_FILE
или REDPASS_SECRET_KEY_FILE
, но об этом далее.
Например:
export REDPASS_PWD_OUTPUT_FILE=a.txt
redpass card
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Найден пароль для пары: [card4057 pin]
cat a.txt
I3I`=:SMn8?L'^2bSMa%$6Q18_]KANMi
Не забудьте удалить переменную командой: unset REDPASS_PWD_OUTPUT_FILE
Поиск по базе
Параметр --search
, -s
осуществляет поиск по базе по url
или по login
.
Вызов команды для поиска по url
: redpass -s <url или его часть>
.
Вызов команды для поиска по login
: redpass -s :login <login или его часть>
.
Пример поиска по части url
:
redpass -s rout
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
| :url | :login |
|--------------+--------|
| ssh:myrouter | admin |
Пример поиска по части login
:
redpass -s :login adm
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
| :url | :login |
|-----------------------+--------|
| http://127.0.0.1:8080 | admin |
| ssh:myrouter | admin |
Импорт данных
Для загрузки в базу учётных данных из других источников предусмотрен параметр --import
,-i
.
Вызов команды импорта: redpass -i <filename>
.
В качестве входного файла должен быть текстовый документ с одной или множеством строк. На каждой строке должна быть запись:
<значение url> <значение login> <значение пароля>
Пример файла с импортируемыми данными:
creds.txt
url1 login1 password1
url2 login2 password2
url3 login3 password3
Пример импорта:
redpass -i test-data/creds.txt
Redpass: консольный менеджер паролей. Версия: 0.1.31-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
Импорт учётных данных из файла: test-data/creds.txt
Пара [url1 login1] подготовлена к вставке.
Пара [url2 login2] подготовлена к вставке.
Пара [url3 login3] подготовлена к вставке.
База обновлена.
Всего учетных данных: 3
Вставлено: 3
Пропущено: 0
Повторная вставка данных из того же файла приведет к игнорированию этих данных.
Стойкость паролей в импортированных данных – ответственность пользователя.
Чтение мастер-пароля из файла
Можно записать мастер-пароль от базы в файл и хранить его на флешке (или на любом съемном носителе) и использовать переменную окружения REDPASS_MASTER_PWD_INPUT_FILE
для указания файла, откуда читать мастер-пароль.
Это тотально снижает безопасность базы паролей, в случае кражи или несанкционированного доступа к файлу с мастер-паролем.
Пример распечатки пароля на экран, без запроса мастер-пароля.
export REDPASS_MASTER_PWD_INPUT_FILE=1.txt
export REDPASS_PWD_OUTPUT_STDOUT=newline
redpass card -q | cat
I3I`=:SMn8?L'^2bSMa%$6Q18_]KANMi
Не забудьте выключить эту возможность, когда пропадет необходимость командами:
unset REDPASS_MASTER_PWD_INPUT_FILE
unset REDPASS_PWD_OUTPUT_STDOUT
Замена мастер-пароля ключом шифрования 256-бит
Можно использовать 256-битный ключ шифрования для доступа к базе паролей и не использовать мастер-пароль. В этом случае мастер-пароль не будет запрашиваться при доступе к базе.
Для этого необходимо при создании базы указать файл с ключом шифрования в переменной окружения REDPASS_SECRET_KEY_FILE
, которым нужно зашифровать базу. Для выработки ключа шифрования нужно использовать криптографически стойкий генератор случайных чисел. Ключ шифрования должен быть в виде HEX-строки, длиной 64 символа (32 байта). Нужно поместить файл с ключом шифрования на любой сменный носитель.
Утеря или искажение ключа навсегда заблокирует доступ к паролям в базе.
В случае кражи или несанкционированного доступа к файлу с ключом шифрования все пароли будут скомпроментированы.
Например, для выработки ключа шифрования и его установки для redpass
можно воспользоваться командой:
head -c 32 /dev/random | xxd -p -c 32 > master-key.txt
export REDPASS_SECRET_KEY_FILE=master-key.txt
После этого можно создать базу и пользоваться redpass
без запроса мастер-пароля.
redpass -f ./my.vault rssys.org login1 -g
Также можно заменить мастер-пароль к существующей базе ключом шифрования, который получен от этого мастер-пароля по алгоритму PBKDF2-GOST3411-2012-HMAC. Для получения ключа из пароля можно вызвать redpass
с параметром --print-key
.
redpass --print-key
Redpass: консольный менеджер паролей. Версия: 0.1.37-SNAPSHOT. Red Stars Systems, 2025 г.
Введите мастер-пароль к базе:
150f29fc0744261446ee59261e0151b0402d740372221cb56686a50fa5afd451
Не забудьте выключить эту возможность, когда пропадет необходимость командой:
unset REDPASS_SECRET_KEY_FILE
Общие советы
Используйте
redpass
только на личном устройстве;Используйте программное обеспечение в ОС полученное из доверенных источников;
Не запускайте “кряки” или любой недоверенный софт с торрентов на устройстве, где стоит
redpass
;Делайте резервную копию (backup) базы хотя бы 1 раз в месяц. Для этого есть множество средств;
Не храните файл с ключом шифрования или мастер-паролем на том же диске, что и база паролей;
Для изменения количества итераций при выработке ключа из мастер—пароля можно воспользоваться переменной
REDPASS_MASTER_PWD_ITERATIONS
. Не ставьте это значение ниже 10000. По умолчанию стоит 30000.Если решите хранить зашифрованную базу в облаке, переименуйте файл так, чтобы не было понятно, что это
vault
. Например, дайте имя:numbers.dat
. Структура базы внутри файла полностью скрыта и нет ни одного постоянного признака, поэтому как-то идентифицировать данные по содержимому невозможно.redpass
это начальная “линия обороны”. Во всём нужен системный подход. Используйте дополнительные средства для усиления защиты.
Раздел для разработчиков
Проект redpass
создан на основе Шаблона приложения.
Цели проекта
Для настройки целей проекта используйте файлы bb.edn
и build.clj
.
Для вывода списка целей проекта запустите команду bb tasks
:
clean Очистить содержимое папки target
javac Компиляция Java классов
build Собрать дистрибутив программы в виде uberjar файла
run Запуск программы через функцию -main
standalone Создать самодостаточный пакет: программа + JRE (используя jlink, JDK 9+)
native Создать нативное приложение
deploy Опубликовать jar файл в публичный репозиторий
release Сделать выпуск: присвоить тэг, сделать сборку, опубликовать в репозиторий
test Запустить тесты
repl Запустить Clojure REPL
outdated Проверить устаревшие зависимости
outdated:fix Проверить устаревшие зависимости и обновить
format Форматировать исходный код
lint Проверить исходный код линтером
docmd Конвертация README.adoc в Markdown формат
requirements Установить зависимости необходимые проекту
Самостоятельная сборка программы
Примечание: универсальнее всего сборка проходит на Debian 11. Но там jdk версии 17, но это не принципиально.
Все нижеследующие команды выполнялись в ОС AltLinux p11
aarch64.
Установка языка Clojure
Под учетной записью root
нужно установить ряд программ:
Установка базовых программ.
apt-get update apt-get install java-21-openjdk apt-get install git apt-get install curl rlwrap unzip bash
Установка языка Clojure.
Linux
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh chmod +x linux-install.sh ./linux-install.sh
MacOS
brew install clojure/tools/clojure
Установка Babashka (язык Clojure для разработки скриптов).
Linux
bash < <(curl -s https://raw.githubusercontent.com/babashka/babashka/master/install)
MacOS
brew install borkdude/brew/babashka
Установка сборочного окружения
Под обычной учетной записью необходимо выполнить:
- Установка
clojure -Ttools install-latest :lib io.github.seancorfield/deps-new :as new
Сборка проекта
Клонирование проекта:
git clone https://gitflic.ru/project/red-stars-systems/redpass.git
cd redpass/
Сборка проекта
bb build
Проверка работоспособности jar-файла
java -jar target/redpass-0.1.45-standalone.jar -h
Должна появиться справка об использовании программы.
Получение исполняемого файла
Необходимо под учётной записью root
выполнить следующие команды.
Установка GraalVM. На сайте https://www.graalvm.org/downloads/ необходимо выбрать нужную ОС и архитектуру процессора. В данном примере приведена ссылка для Linux aarch64.
curl -L https://download.oracle.com/graalvm/23/latest/graalvm-jdk-23_linux-aarch64_bin.tar.gz -O tar xvf ./graalvm-jdk-23_linux-aarch64_bin.tar.gz mkdir -p /usr/local/jvm/ mv graalvm-jdk-23.0.2+7.1 /usr/local/jvm/
Установка
gcc
:apt-get install gcc zlib-devel
Примечание: Для Debian этот пакет называется
zlib1g-dev
.
Под обычной учетной записью, в папке проекта нужно выполнить:
Сборка:
export GRAALVM_HOME=/usr/local/jvm/graalvm-jdk-23.0.2+7.1 bb native
Проверка работы исполняемого файла
target/redpass-0.1.45-standalone -h
Должна появится справка об использовании программы.
Установка исполняемого файла в ОС:
sudo cp target/redpass-0.1.45-standalone /usr/local/bin/redpass
Лицензия
© 2025 Михаил Ананьев.
Данный проект распространяется под Открытой лицензией на программное обеспечение РЭД СТАРС СИСТЕМС 1.0
Текст лицензии находится в файле LICENSE или по ссылке.