Перейти к основному содержимому
Версия: 7.0

Аутентификация и мастер-ключ

Аутентификация в Пассворке состоит из двух этапов: базовой аутентификации и проверки мастер-пароля (при включённом CSE).

Двухэтапная аутентификация

ЭтапНазначениеГде выполняется
Базовая аутентификацияПроверка учётных данныхСервер
Проверка мастер-пароляДоступ к зашифрованным даннымКлиент + Сервер

Этап 1: Базовая аутентификация

Локальная аутентификация

  1. Пользователь вводит логин и пароль
  2. Сервер проверяет пароль (PBKDF2, 600 000 итераций, SHA-512)
  3. При успехе выдаются Access Token и Refresh Token
  4. Клиент сохраняет токены для последующих запросов

Параметры хеширования пароля на сервере:

ПараметрЗначение
АлгоритмPBKDF2
Хеш-функцияSHA-512
Итерации600 000
Длина ключа512 бит

SSO / LDAP аутентификация

При использовании SSO или LDAP:

  1. Пользователь перенаправляется на внешний провайдер
  2. После успешной аутентификации возвращается в Пассворк
  3. Система создаёт сессию и выдаёт токены
  4. Если включено CSE — запрашивается ввод мастер-пароля

Этап 2: Проверка мастер-пароля

При включённом клиентском шифровании после базовой аутентификации требуется ввод мастер-пароля.

Получение параметров

Клиент запрашивает у сервера параметры для вычисления мастер-ключа:

  • Соль — уникальная для каждого пользователя
  • Количество итераций — 300 000
  • Тип алгоритма — PBKDF2

Вычисление мастер-ключа

На клиенте выполняется вывод ключа:

ПараметрЗначение
АлгоритмPBKDF2
Хеш-функцияSHA-256
Итерации300 000
Длина ключа512 бит
ВходМастер-пароль + Соль
ВыходМастер-ключ (Base64)

Вычисление хеша для проверки

Для подтверждения корректности ввода вычисляется хеш мастер-ключа:

ПараметрЗначение
АлгоритмSHA-256
ВходМастер-ключ (512 бит)
ВыходХеш (256 бит, hex-строка)

Проверка на сервере

Сервер сравнивает полученный хеш с сохранённым значением.

Почему простое сравнение хешей?
  • Хеш вычислен на клиенте от криптографически стойкого 512-битного ключа
  • Сервер не знает исходный мастер-ключ
  • Дополнительное хеширование на сервере не добавляет безопасности в данной модели Zero Knowledge

Полная последовательность аутентификации

Фаза 1 — Базовая аутентификация:

  1. Пользователь вводит логин и пароль
  2. Сервер проверяет учётные данные (PBKDF2, SHA-512, 600K итераций)
  3. Сервер возвращает токены доступа и флаг CSE

Фаза 2 — Мастер-пароль (если CSE включено):

  1. Клиент запрашивает параметры PBKDF2 (соль, итерации)
  2. Пользователь вводит мастер-пароль
  3. Клиент вычисляет мастер-ключ: PBKDF2(пароль, соль, 300K, SHA-256) → 512 бит
  4. Клиент вычисляет хеш: SHA-256(мастер-ключ) → 256 бит
  5. Клиент отправляет хеш на сервер
  6. Сервер сравнивает хеши
  7. При успехе сервер возвращает зашифрованный приватный RSA-ключ

Фаза 3 — Расшифровка ключей:

  1. Клиент расшифровывает приватный RSA-ключ мастер-ключом (AES-256-CBC)
  2. Клиент готов к работе с зашифрованными данными
Принцип Zero Knowledge

Мастер-пароль никогда не покидает клиент. Сервер видит только хеш мастер-ключа. Приватный RSA-ключ передаётся только в зашифрованном виде.


Параметры соли

ПараметрЗначение
Длина20 символов
АлфавитA-Z, a-z, 0-9, @, ! (64 символа)
Энтропия~120 бит
ГенерацияНа сервере при создании/изменении мастер-пароля
ХранениеВ профиле пользователя на сервере

Свойства соли:

  • Каждый пользователь имеет уникальную соль
  • При смене мастер-пароля генерируется новая соль
  • Соль не является секретом, но обеспечивает уникальность хеша

Сценарии аутентификации

Первый вход (установка мастер-пароля)

  1. Пользователь проходит базовую аутентификацию
  2. Система определяет, что мастер-пароль не установлен
  3. Сервер генерирует новую соль
  4. Пользователь вводит новый мастер-пароль
  5. Клиент выполняет криптографические операции:
    • Вычисляет мастер-ключ (PBKDF2)
    • Генерирует пару RSA-ключей (2048 бит)
    • Шифрует приватный RSA-ключ мастер-ключом (AES-256-CBC)
    • Вычисляет хеш мастер-ключа (SHA-256)
  6. Клиент отправляет на сервер:
    • Публичный RSA-ключ (открыто)
    • Зашифрованный приватный RSA-ключ
    • Хеш мастер-ключа

Повторный вход

  1. Базовая аутентификация
  2. Получение параметров PBKDF2 (соль, итерации)
  3. Ввод мастер-пароля
  4. Вычисление мастер-ключа и хеша
  5. Проверка хеша на сервере
  6. Расшифровка приватного RSA-ключа (AES-256-CBC)

Смена мастер-пароля

  1. Пользователь вводит текущий мастер-пароль
  2. Проверка корректности (сравнение хешей)
  3. Ввод нового мастер-пароля
  4. Генерация новой соли на сервере
  5. Пересчёт мастер-ключа и хеша
  6. Расшифровка приватного RSA-ключа старым мастер-ключом
  7. Перешифровка приватного RSA-ключа новым мастер-ключом (AES-256-CBC)
  8. Сохранение новых данных на сервере

Сброс мастер-пароля (администратором)

Потеря данных

При сбросе мастер-пароля администратором:

  • Генерируется новая пара RSA-ключей
  • Пользователь теряет доступ к ранее зашифрованным данным
  • Требуется повторное предоставление доступа к сейфам
  1. Администратор инициирует сброс
  2. Удаляются криптографические данные пользователя
  3. Пользователь устанавливает новый мастер-пароль
  4. Генерируются новые RSA-ключи
  5. Администраторы сейфов должны повторно предоставить доступ

Модель угроз и защита

Защита мастер-пароля

УгрозаЗащита
Перехват при вводеМастер-пароль обрабатывается только в браузере
Перехват при передачеНа сервер отправляется только хеш мастер-ключа
Атака переборомPBKDF2 с 300 000 итераций
Радужные таблицыУникальная соль для каждого пользователя
Компрометация сервераСервер не хранит мастер-пароль и мастер-ключ

Защита хеша мастер-ключа

УгрозаЗащита
Утечка хешаХеш вычислен от 512-битного ключа (не от пароля)
Подбор по хешуPBKDF2 делает каждую попытку вычислительно дорогой
Восстановление пароляТребуется сначала подобрать ключ, затем пароль

Защита сессий

ПараметрAccess TokenRefresh Token
Время жизни~2.8 часа36 часов
НазначениеАутентификация запросовОбновление Access Token
ХранениеБезопасное хранилище браузераБезопасное хранилище браузера

Обработка ошибок

Неверный мастер-пароль

  1. Вычисленный хеш не совпадает с сохранённым
  2. Сервер возвращает ошибку
  3. Клиент предлагает повторить ввод
  4. Возможны ограничения на количество попыток (настраивается администратором)

Отсутствие параметров PBKDF2

Если параметры не найдены — мастер-пароль не установлен, требуется первоначальная настройка.

Невозможность расшифровать RSA-ключ

Если расшифровка приватного RSA-ключа не удалась — введён неверный мастер-пароль или данные повреждены.


Криптографическое резюме

ОперацияАлгоритмПараметры
Хеширование пароля (сервер)PBKDF2-SHA512600 000 итераций
Вывод мастер-ключа (клиент)PBKDF2-SHA256300 000 итераций, 512 бит
Хеш для проверкиSHA-256256 бит
Шифрование RSA-ключаAES-256-CBCМастер-ключ
Генерация RSA-ключейRSA-OAEP2048 бит, SHA-256