Назад к блогу
Туториалы

Фундаментальные принципы Phantom Security

24 Янв, 2026

Введение в парадигму эфемерной криптографии

Phantom Security представляет собой криптографическую систему, построенную на принципах пространственно-временного рассеивания ключевых материалов. В отличие от классических моделей, где мастер-ключи персистируют в памяти в восстановимом виде, данная система реализует концепцию эфемерных ключей, которые существуют только в момент выполнения криптографических операций. Этот подход является прямым ответом на современные векторы атак, нацеленные на эксфильтрацию ключей из оперативной памяти, кэшей процессора и через побочные каналы.

Принцип пространственного рассеивания

Пространственное рассеивание — это метод разделения криптографического ключа на несколько компонентов с последующим распределением их по различным уровням иерархии памяти. Каждый уровень обладает уникальными характеристиками доступа, временем задержки и уязвимостью к различным типам атак.

Иерархия хранения компонентов ключа:

  1. 1. Регистры процессора: Наиболее защищенный уровень. Компоненты в регистрах недоступны для прямого адресного обращения из пользовательского пространства и очищаются при переключении контекста. Используются для хранения динамических seed-значений, участвующих в non-linear преобразованиях при сборке ключа.
  1. 2. Кэш первого уровня (L1): Хранит статические компоненты ключа размером 8 байт. Время доступа составляет 1-3 наносекунды. Защищен аппаратной изоляцией процессов, но потенциально уязвим для атак через разделяемые ресурсы (например, атаки Prime+Probe).
  1. 3. Кэш второго уровня (L2): Содержит компоненты размером 16 байт. Время доступа — 3-10 наносекунд. Стратегия размещения данных в L2 кэше минимизирует вероятность их вытеснения часто используемыми данными приложения.
  1. 4. Оперативная память (RAM): Наименее доверенный уровень. Хранит шифрованные компоненты ключа (32 байта ciphertext) вместе с аутентификационным тегом (16 байт). Шифрование выполняется алгоритмом ChaCha20Poly1305, что обеспечивает конфиденциальность и целостность. Ключ шифрования для RAM-компонента никогда не сохраняется в памяти явно.

Принцип временного рассеивания

Временное рассеивание определяет строго ограниченный жизненный цикл каждого криптографического объекта:

  • Мастер-ключ сессии: Максимальное время жизни — 90 секунд. Автоматическая инвалидация по таймауту предотвращает долгосрочные атаки на устаревшие сессии.
  • Операционные ключи: Время жизни не превышает 10 миллисекунд. Генерируются детерминистически для каждой криптографической операции на основе мастер-компонентов, идентификатора сессии и порядкового номера.
  • Временные буферы: Аллоцируются на стеке или из предварительно созданных пулов. Немедленно зануляются после использования с применением инструкций, устойчивых к оптимизациям компилятора.

Модель угроз и защитные механизмы

Timing-атаки

Система реализует алгоритмы с постоянным временем выполнения (constant-time algorithms). Это включает:

  • Constant-time сравнение байтовых массивов через constant_time_eq
  • Отсутствие ветвлений в критических путях, зависящих от секретных данных
  • Использование арифметических инструкций вместо условных переходов
  • Детекторы аномалий, отслеживающие отклонения времени выполнения операций

Атаки на память

  • Полный ключ никогда не существует в памяти в собранном виде
  • RAM-компоненты всегда зашифрованы с аутентификацией
  • Предотвращение вытеснения в swap через mlock() системные вызовы
  • Регулярная ротация кэшированных компонентов

Side-channel атаки

  • Маскирование данных (data masking) для скрытия корреляций между обрабатываемыми значениями и побочными каналами
  • Использование векторных инструкций (SIMD) для обработки нескольких данных параллельно, что затрудняет выделение сигнала отдельных битов
  • Random delays в некритичных участках кода для нарушения временных паттернов

Криптографические примитивы и их синергия

X25519 для асимметричного шифрования

Алгоритм Диффи-Хеллмана на эллиптической кривой Curve25519 выбран по следующим критериям:

  • Безопасность: 128-битный уровень безопасности при 256-битных ключах
  • Производительность: Высокая скорость за счет эффективных формул сложения и удвоения точек
  • Устойчивость к timing-атакам: Алгоритм допускает реализацию с постоянным временем выполнения
  • Стандартизация: RFC 7748, широкое принятие в индустрии

ChaCha20 для симметричного шифрования

Потоковый шифр на основе ARX-операций (Addition, Rotation, XOR):

  • Отсутствие S-блоков: Упрощает создание constant-time реализаций
  • Высокая скорость в программных реализациях: Превышает производительность AES без аппаратного ускорения
  • Режим ChaCha20Poly1305: Обеспечивает одновременно шифрование и аутентификацию
  • Устойчивость к cryptanalysis: 20 раундов обеспечивают достаточный запас безопасности

BLAKE3 для хэширования и аутентификации

Хэш-функция на основе дерева Меркла:

  • Производительность: Использует векторные инструкции для параллельной обработки
  • Универсальность: Поддерживает режимы хэширования, MAC, KDF и XOF (extendable output function)
  • Безопасность: На основе хорошо изученного ядра ChaCha
  • Инкрементальность: Возможность обработки потоковых данных

Архитектурная целостность системы

Детерминистическая генерация ключей

Операционные ключи генерируются детерминистическим образом путем последовательного объединения четырех компонентов с последующим применением криптографической хэш-функции BLAKE3.

Входные параметры для генерации:

  1. 1. Идентификатор сессии (session_id) — уникальный 128-битный идентификатор, установленный в процессе handshake и общий для обеих сторон соединения.
  1. 2. Порядковый номер (sequence_number) — 64-битный монотонно возрастающий счетчик операций в рамках сессии, обеспечивающий защиту от атак воспроизведения.
  1. 3. Контекст операции (operation_context) — строковый идентификатор, определяющий тип криптографической операции (например, «encrypt» для шифрования, «decrypt» для расшифрования, «auth» для аутентификации).
  1. 4. Компоненты мастер-ключа (master_key_components) — рассеянные части мастер-ключа, которые динамически собираются для генерации операционного ключа, но никогда не существуют в памяти в полном объединенном виде.

Процесс генерации:

Указанные компоненты конкатенируются в строго определенном порядке, образуя уникальный входной буфер для каждого запроса на генерацию ключа. Этот буфер затем обрабатывается функцией BLAKE3, работающей в режиме ключевой деривации (KDF), что обеспечивает криптографически стойкое преобразование в фиксированный 256-битный операционный ключ.

Криптографические свойства:

Данный подход гарантирует, что:

  • Каждая операция получает уникальный ключ, производный от общего мастер-материала, но криптографически изолированный от других операций.
  • Компрометация одного операционного ключа не ставит под угрозу другие ключи в рамках той же сессии (обеспечение forward secrecy на уровне операций).
  • Обе стороны соединения могут независимо вычислить идентичные операционные ключи без необходимости их передачи по сети.
  • Временные характеристики генерации ключей постоянны и не зависят от значений входных параметров, что обеспечивает защиту от timing-атак.

Эта детерминистическая схема обеспечивает:

  • Воспроизводимость: Обе стороны могут независимо вычислить одинаковый ключ для заданной операции
  • Forward secrecy: Компрометация одного операционного ключа не раскрывает предыдущие или будущие ключи
  • Эффективность: Отсутствие накладных расходов на передачу ключей по сети

Многоуровневая верификация целостности

Каждый пакет проходит четыре стадии проверки:

  1. 1. Верификация структуры: Проверка магических байт, длины пакета, корректности заголовка
  2. 2. Проверка цифровой подписи: Верификация подписи BLAKE3 над всем пакетом
  3. 3. Аутентификация данных: Проверка тега Poly1305 после дешифрования
  4. 4. Валидация контекста: Проверка порядкового номера, временной метки и идентификатора сессии

Иерархия доверия в операциях

Система реализует принцип наименьших привилегий на уровне криптографических операций:

  • Операционные ключи имеют доступ только к данным конкретного пакета
  • Компоненты мастер-ключа никогда не объединяются полностью — сборка происходит через промежуточные преобразования
  • Каждый уровень памяти обрабатывает только ту часть информации, которая необходима для его функции

Заключение

Phantom Security реализует радикальный подход к защите криптографических ключей, основанный на их фундаментальной эфемерности и пространственно-временном рассеивании. Система отказывается от концепции статического хранения ключей в пользу динамической сборки их компонентов только на время выполнения операций.

Архитектурные решения системы — от выбора криптографических примитивов до организации иерархии памяти — направлены на решение конкретных проблем современных атак: timing-атак, side-channel анализа, дампов памяти и атак на кэши процессора.

Ключевым достижением является демонстрация того, что повышенные требования к безопасности не обязательно ведут к снижению производительности. Через использование аппаратного ускорения, пакетной обработки и zero-allocation подходов система достигает высокой пропускной способности, оставаясь устойчивой к широкому классу атак.

Данная архитектура представляет собой сдвиг парадигмы от защиты ключей в памяти к созданию среды, где ключи как целостные сущности не существуют вовсе. Это открывает новые направления для разработки криптографических систем в условиях постоянно эволюционирующих угроз.

В следующем туториале мы детально разберем механизмы рассеивания и сборки ключей, реализованные в модулях scatterer.rs и assembler.rs, и проанализируем их криптографическую стойкость.