🔐 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)│
└─────────────────────────┘ └─────────────────────────┘

Ключевые особенности шифрования

  1. Мастер-пароль никогда не покидает устройство. Из него через PBKDF2-SHA256 (100 000 итераций) выводится ключ шифрования.
  2. Данные шифруются на клиенте алгоритмом AES-256-GCM с уникальным nonce для каждой записи.
  3. URL сайтов хешируются через HMAC-SHA256 — даже если злоумышленник получит доступ к БД, он не узнает, для каких сайтов у вас есть пароли.
  4. Сервер видит только: хеш сайта + зашифрованный 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

2
Начать дискуссию