Глоссарий терминов
Определения ключевых терминов, используемых в документации по криптографии Пассворка.
Основные сущности
Сейф
Сейф — контейнер для хранения записей. Каждый сейф имеет собственный симметричный ключ шифрования (ключ сейфа), которым защищаются все записи внутри него. Сейфы могут быть корпоративными (общими) или личными.
Запись
Запись — единица хранения секретной информации. Каждая запись содержит набор полей: название, логин, пароль, URL, описание, теги, дополнительные поля и вложения. Запись шифруется собственным ключом записи.
Термин «пароль» в контексте Пассворка может означать как саму запись, так и конкретное поле внутри записи. В документации мы используем термин «запись» для обозначения сущности и «поле пароля» для обозначения конкретного поля.
Поле записи
Поле — отдельный элемент данных внутри записи. Поля делятся на:
- Стандартные поля: название, логин, пароль, URL, описание, теги
- Дополнительные поля (Custom Fields): произвольные пары «имя-значение», добавляемые пользователем
- TOTP-секрет: секрет для генерации одноразовых паролей (двухфакторная аутентификация)
Вложение
Вложение — файл, прикреплённый к записи. Каждое вложение шифруется собственным ключом вложения (AES-256-CBC), который в свою очередь защищается ключом записи.
Папка
Папка — способ организации записей внутри сейфа. Папки н е имеют собственных ключей шифрования; записи в папках шифруются ключом сейфа.
Пользователь и аутентификация
Мастер-пароль
Мастер-пароль — секретный пароль пользователя, известный только ему. Используется для получения мастер-ключа через алгоритм PBKDF2. Мастер-пароль никогда не передаётся на сервер и не хранится в открытом виде.
Мастер-ключ пользователя
Мастер-ключ пользователя — криптографический ключ длиной 512 бит, получаемый из мастер-пароля с помощью функции PBKDF2 (300 000 итераций, SHA-256). Используется для:
- Шифрования приватного RSA-ключа пользователя (AES-256-CBC)
- Проверки корректности ввода мастер-пароля (через хеш SHA-256)
Хеш мастер-ключа
Хеш мастер-ключа — SHA-256 хеш от мастер-ключа пользователя. Отправляется на сервер для проверки корректности введённого мастер-пароля. Сервер сравнивает полученный хеш с сохранённым значением.
Соль
Соль — случайная строка длиной 20 символов, уникальная для каждого пользователя. Используется в алгоритме PBKDF2 вместе с мастер-паролем для получения мастер-ключа. Соль хранится на сервере и передаётся клиенту при аутентификации.
RSA-ключи пользователя
Пара асимметричных ключей RSA-2048, генерируемых с помощью WebCrypto API:
- Публичный ключ — хранится на сервере в открытом виде. Используется для шифрования ключей сейфов при предоставлении доступа.
- Приватный ключ — хранится на сервере в зашифрованном виде (зашифрован мастер-ключом, AES-256-CBC). Используется для расшифровки ключей сейфов.
Ключи шифрования
Ключ сейфа
Ключ сейфа — случайный симметричный ключ (256 бит), генерируемый при создании сейфа. Используется для шифрования ключей записей внутри сейфа (AES-256-CBC). Для каждого пользователя с доступом к сейфу создаётся копия ключа сейфа, зашифрованная его публичным RSA-ключом (RSA-OAEP).
Ключ записи
Ключ записи — случайный симметричный ключ (256 бит), генерируемый индивидуально для каждой записи. Используется для шифрования содержимого записи (поля пароля, дополнительные поля, TOTP) и ключей вложений (AES-256-CBC). Ключ записи шифруется ключом сейфа. При каждой операции шифрования автоматически генерируется уникальный вектор инициализации (IV).
Ключ вложения
Ключ вложения — случайный симметричный ключ (256 бит), генерируемый для каждого файла. Используется для шифрования бинарного содержимого файла (AES-256-CBC). Ключ вложения шифруется ключом записи.
Серверный ключ шифрования
Серверный ключ — симметричный ключ длиной 256 бит, хранящийся на сервере в файле. Используется для дополнительного шифрования данных перед сохранением в базу данных (AES-256-CFB через OpenSSL).
Токены и сессии
Access Token
Access Token — токен доступа длиной 256 бит (44 символа в Base64). Используется для аутентификации API-запросов. Время жизни по умолчанию: ~2.8 часа (10 000 секунд).
Refresh Token
Refresh Token — токен обновления длиной 256 бит. Используется для получения нового Access Token без повторного ввода учётных данных. Время жизни по умолчанию: 36 часов (129 600 секунд).
Local Storage Secret Code
Local Storage Secret Code — случайный токен (~596 бит энтропии), генерируемый сервером при создании пользователя. Используется для шифрования мастер-ключа при сохранении в localStorage браузера (функция «Запомнить мастер-пароль»). Шифрование выполняется через AES-256-CBC.
Режимы шифрования
Клиентское шифрование (Client-Side Encryption, CSE)
Клиентское шифрование — режим работы, при котором данные шифруются в браузере пользователя до отправки на сервер. Обеспечивает принцип Zero Knowledge: сервер не имеет доступа к расшифрованным данным. Используется AES-256-CBC.
Серверное шифрование (Server-Side Encryption)
Серверное шифрование — дополнительный уровень защиты, при котором данные шифруются на сервере перед записью в базу данных. Работает всегда, независимо от настроек клиентского шифрования. Используется AES-256-CFB через OpenSSL.
Zero Knowledge
Zero Knowledge — принцип, при котором сервер не располагает информацией, достаточной для расшифровки пользовательских данных. Все криптографические операции выполняются на стороне клиента.
End-to-End Encryption (E2E)
End-to-End Encryption — сквозное шифрование, при котором данные шифруются на устройстве отправителя и расшифровываются только на устройстве получателя. В Пассворке реализуется через обмен ключами с использованием RSA-OAEP.
Обмен данными
Внутренний шэринг
Внутренний шэринг — предоставление доступа к сейфу или записи другому пользователю Пассворка. Ключ шифруется публичным RSA-ключом получателя (RSA-OAEP через WebCrypto).
Внешняя ссылка
Внешняя ссылка — способ поделиться записью с человеком без учётной записи в Пассворке. Создаётся копия записи, зашифрованная специальным ключом ссылки (AES-256-CBC). Токен ссылки встраивается в URL.
Токен ссылки
Токен ссылки — случайная строка длиной 43 символа (~256 бит), используемая для идентификации внешней ссылки и доступа к зашифрованным данным.
Криптографические алгоритмы
PBKDF2
PBKDF2 (Password-Based Key Derivation Function 2) — алгоритм получения криптографического ключа из пароля. Использует соль и большое число итераций для защиты от атак перебором.
Параметры в Пассворке:
- Клиент: 300 000 итераций, SHA-256, 512 бит
- Сервер: 600 000 итераций, SHA-512, 512 бит
AES-256-CFB
AES-256-CFB — симметричный блочный шифр с длиной ключа 256 бит в режиме CFB (Cipher Feedback). Используется для серверного шифрования данных через OpenSSL.
AES-256-CBC
AES-256-CBC — симметричный блочный шифр с длиной ключа 256 бит в режиме CBC (Cipher Block Chaining). Используется для клиентского шифрования.
RSA-OAEP
RSA-OAEP — асимметричный алгоритм шифрования с оптимальным асимметричным шифрованием с дополнением. В Пассворке используются ключи длиной 2048 бит с хеш-функцией SHA-256. Реализован через WebCrypto API.
CryptoJS AES
CryptoJS AES — библиотека для AES-шифрования на клиенте. Использует режим CBC с дополнением PKCS#7 и встроенную функцию вывода ключа. Результат кодируется в Base32.
Сокращения
| Сокращение | Расшифровка | Описание |
|---|---|---|
| CSE | Client-Side Encryption | Клиентское шифрование |
| E2E | End-to-End Encryption | Сквозное шифрование |
| PBKDF2 | Password-Based Key Derivation Function 2 | Функция вывода ключа из пароля |
| AES | Advanced Encryption Standard | Симметричный алгоритм шифрования |
| RSA | Rivest–Shamir–Adleman | Асимметричный алгоритм шифрования |
| OAEP | Optimal Asymmetric Encryption Padding | Схема дополнения для RSA |
| CFB | Cipher Feedback | Режим шифрования с обратной связью |
| CBC | Cipher Block Chaining | Режим сцепления блоков шифротекста |
| IV | Initialization Vector | Вектор инициализации |
| TOTP | Time-based One-Time Password | Одноразовый пароль на основе времени |
| TTL | Time To Live | Время жизни токена |