🔐 Zero Password Manager: первый стабильный релиз selfhosted менеджера паролей с архитектурой нулевого разглашения
Привет, VC. Сегодня хочу рассказать о проекте, над которым работал последние месяцы — Zero Password Manager, open-source менеджере паролей, который ставит во главу угла приватность и полный контроль над данными.
Почему я написал свой менеджер паролей
Большинство популярных решений — LastPass, 1Password, Bitwarden Cloud — хранят ваши зашифрованные данные на своих серверах. Да, они используют «нулевое разглашение» (zero-knowledge), но это означает лишь то, что они обещают не читать ваши данные. Технически у них есть доступ к зашифрованным блокам, метаданным, логам подключений.А что если сервер скомпрометируют? Что если изменится политика компании? Что если завтра введут санкции и доступ к облаку пропадёт?Zero Password Manager предлагает другой подход:
- ✅ Вы разворачиваете сервер на своём железе (домашний сервер, VPS, Raspberry Pi)
- ✅ Шифрование происходит на устройстве до отправки данных в сеть
- ✅ Сервер криптографически слеп — он не знает ни ваших паролей, ни даже URL сайтов, для которых они сохранены
Никаких подписок. Никакого vendor lock-in. Никаких уведомлений о взломах от компании, о которой вы уже забыли.
🏗 Архитектура: как это работает
Клиент-серверная модель с сквозным шифрованием
┌─────────────────────────┐ ┌─────────────────────────┐
│ Ваш смартфон / ПК │ │ Ваш сервер (VPS) │
│ (Flutter: Android/iOS │ HTTPS │ (FastAPI + SQLite) │
│ / Web / Desktop) │────────►│ │
│ │ │ │
│ • Мастер-пароль + соль │ │ • Хранит только: │
│ • PBKDF2-SHA256 │ │ - HMAC-хеш URL сайта │
│ • AES-256-GCM шифрование│ │ - Зашифрованный блок │
│ • Локальное хранилище │ │ - Хеш логина (Argon2)│
└─────────────────────────┘ └─────────────────────────┘
Ключевые особенности шифрования
- Мастер-пароль никогда не покидает устройство. Из него через PBKDF2-SHA256 (100 000 итераций) выводится ключ шифрования.
- Данные шифруются на клиенте алгоритмом AES-256-GCM с уникальным nonce для каждой записи.
- URL сайтов хешируются через HMAC-SHA256 — даже если злоумышленник получит доступ к БД, он не узнает, для каких сайтов у вас есть пароли.
- Сервер видит только: хеш сайта + зашифрованный blob + хеш логина. Ничего больше.
Ваше устройство:
Мастер-пароль + соль
│
▼
PBKDF2-SHA256 (100k итераций)
│
├──► Ключ хранилища ──► AES-256-GCM ──► Зашифрованный блок
│
└──► HMAC-SHA256(site_url) ──► Хеш сайта (для поиска)
Сеть: передаются только зашифрованный блок + хеш сайта
Ваш сервер:
Хранит: [хеш_сайта][зашифрованный_блок][хеш_логина]
Знает: Ничего. Криптографически слеп.
✨ Что умеет версия 1.0🔒 Безопасность и приватность
AES-256-GCM Аутентифицированное шифрование: защищает и от чтения, и от подмены данных PBKDF2-SHA256, 100k итераций Замедляет подбор мастер-пароля даже при утечке хешей Blind site hashing URL сайтов не хранятся в открытом виде — даже в зашифрованном хранилище Обязательная 2FA (TOTP)Нельзя отключить — защита от компрометации мастер-пароля OTP-гейтинг на операции Можно требовать свежий код для чтения/записи особо важных записей WebAuthn / FIDO2Вход по аппаратным ключам (YubiKey) или биометрии устройства Биометрическая разблокировка Отпечаток / Face ID для быстрого доступа без ввода мастер-пароляПолный аудит-логКаждая операция (вход, чтение, запись) логируется с таймстемпом и IP
⚙ Удобство и функциональность
- 📁 Неограниченное количество записей, папок, тегов
- 🎨 12 цветов и 16 иконок для папок + 3 темы интерфейса (Midnight Dark, Cyberpunk, Glassmorphism)
- 🔄 История паролей с возможностью отката к любой версии
- 🔁 Напоминания о смене паролей
- 🆘 Экстренный доступ для доверенных контактов
- 🔐 Безопасный шеринг записей (без передачи мастер-ключа)
- 📥 Импорт из Chrome, Firefox, Bitwarden, LastPass (CSV)
- 🌐 Кроссплатформенность: Android, iOS, Web, Windows, macOS, Linux
🚀 Быстрый старт: 5 минут до первого запуска
1. Запускаем бэкенд (ваш сервер) git clone https://github.com/SoulNaturalist/zero_password_manager.git cd zero_password_manager/server pip install -r requirements.txt cp env.example .env В .env указываем два параметра: JWT_SECRET_KEY=ваш_64-символьный_секрет # сгенерировать: python -c "import secrets; print(secrets.token_hex(32))" ALLOWED_ORIGINS=http://ВАШ_IP:3000 API доступен по http://ВАШ_IP:3000, интерактивная документация — /docs. 2. Настраиваем клиент (Flutter) cd .. cp env.example env.prod flutter pub get flutter build apk --release --dart-define=ENVIRONMENT=prod Web: flutter build web --release --dart-define=ENVIRONMENT=prod iOS / Desktop — аналогично, требуются соответствующие среды сборки. Готовые APK уже доступны в GitHub Releases . 🆚 Сравнение с аналогами
🗺 Что в планах (Roadmap)
Версия 0.3 (ближайшие недели)
- Docker Compose для развёртывания сервера одной командой
- Браузерное расширение (Chrome / Firefox)
- Улучшенный онбординг для новых пользователей
Версия 0.4
- Встроенный TOTP-аутентификатор (хранение 2FA-сидов в хранилище)
- Защищённые заметки с поддержкой Markdown
- Кастомные поля для записей
Версия 0.5 и далее
- Настройка количества итераций PBKDF2 через UI
- Поддержка нескольких хранилищ (личное / рабочее)
- Экспорт зашифрованных бэкапов (.zpmbak)
- Поддержка аппаратных ключей безопасности (YubiKey)
- Автообновление через самохостинговый сервер
🤝 Как помочь проекту
Zero Password Manager — open-source, и я приветствую вклад сообщества. Особенно ценны:
- 🐛 Баг-репорты и фиксы (особенно edge-cases в UI)
- 📝 Улучшение документации и гайдов
- 🌍 Переводы (сейчас есть русский и английский)
- 🎨 Идеи по улучшению UX / доступности
- 🧪 Юнит- и интеграционные тесты
- 🔐 Аудит безопасности, ревью зависимостей
Как начать:
# 1. Форкните репозиторий
# 2. Создайте ветку под фичу
git checkout -b feature/your-feature-name
# 3. Внесите изменения и отправьте PR в main
📜 Лицензия
Проект распространяется под PolyForm Noncommercial License 1.0.0:
✅ Можно
Личное использование и самохостинг
Исследования и обучение
Хобби-проекты и эксперименты
❌ Нельзя
Коммерческое использование / SaaS
Монетизация сервисов на базе кода
Смена лицензии или удаление атрибуции
Нужна коммерческая лицензия? Напишите в Issues — обсудим.
Ссылки:
Исходный код:
Скачать APK
Сайт
💡 Итог: Zero Password Manager — это не «ещё один менеджер паролей». Это инструмент для тех, кто не готов делегировать контроль над своими данными. Если вы самохостите Nextcloud, Home Assistant или Vaultwarden — этот проект для вас.
Если проект оказался полезным — поставьте ⭐ на GitHub. Это помогает другим найти его.Есть вопросы по архитектуре, безопасности или развёртыванию? Пишите в комментариях или в Issues — отвечу.
#opensource #password #flutter #flutterdev #fastapi #github #python