Иерархия ключей
Криптографическая модель Пассворка построена на иерархии ключей, где каждый уровень защищает следующий.
Обзор иерархии
Мастер-пароль
↓ (PBKDF2)
Мастер-ключ пользователя
↓ (AES-256-CBC)
Приватный RSA-ключ
↓ (RSA-OAEP)
Ключ сейфа
↓ (AES-256-CBC)
Ключ записи
↓ (AES-256-CBC)
├── Данные записи
└── Ключи вложений
↓ (AES-256-CBC)
Содержимое файлов
Полная схема ключей
Уровень 0: Вход пользователя
Пользователь вводит мастер-пароль. С сервера получается соль (20 символов). На клиенте выполняется PBKDF2 (300 000 итераций, SHA-256).
Уровень 1: Мастер-ключ пользователя
Результат PBKDF2 — мастер-ключ (512 бит). Он используется для двух целей:
- Вычисление SHA-256 хеша для отправки на сервер (проверка правильности пароля)
- Расшифровка приватного RSA-ключа пользователя (AES-256-CBC)
Уровень 2: RSA-ключи
Приватный RSA-ключ (2048 бит) хранится на сервере в зашифрованном виде. Публичный RSA-ключ хранится открыто. Приватный ключ используется для расшифровки ключей сейфов (RSA-OAEP).
Уровень 3: Ключ сейфа
Ключ сейфа (256 бит) хранится отдельной копией для каждого пользователя с доступом. Каждая копия зашифрована публичным RSA-ключом соответствующего пользователя.
Уровень 4: Ключ записи
Ключ записи (256 бит) зашифрован ключом сейфа. Он используется для шифрования: поля пароля, дополнительных полей, TOTP-секрета, ключей вложений.