GH GambleHub

Шифрование At Rest

Шифрование At Rest

1) Зачем это нужно и что именно мы защищаем

Определение. Шифрование at rest — это защита данных, записанных на носитель (диски, снапшоты, бэкапы, объекты, логи, дампы памяти), с тем чтобы несанкционированный доступ к физическому носителю или к «сырому» хранилищу не раскрывал содержание.

Что покрываем:
  • Блок-/файловые тома, объектные хранилища, базы данных, очереди/кейвэлью, кэш-дампы, логи/трейсы, резервные копии, экспорт/импорт, снимки ВМ/контейнеров, дампы ядра/процессов, подкачка/swap.
  • Многоарендные сценарии: изоляция между клиентами/проектами/окружениями.

Чего не покрываем полностью: кража сеансов в памяти, атаки на живой процесс, уязвимости приложения, компрометация учетных данных. Для этого требуются шифрование «в полете», строгая аутентификация/авторизация, минимизация прав и мониторинг (см. связанные статьи: «Аутентификация и авторизация», «Подпись и верификация запросов»).

2) Модель угроз и цели контроля

Типовые риски:
  • Потеря/кража носителя (диск, лента, USB, устройство разработчика).
  • Несанкционированный доступ к бэкапам/снапшотам/логам.
  • Злоупотребление привилегиями на уровне платформы/гипервизора/сторадж-нод.
  • Пересечение арендаторов при ошибках конфигурации.
  • «Замусоренные» временные файлы и дампы, попадающие в артефакты и образы.
Цели:

1. Конфиденциальность данных на носителе.

2. Криптографическая изоляция арендаторов/окружений.

3. Управляемость ключей (создание, хранение, ротация, отозвание).

4. Аудитируемость (кто и когда использовал ключ).

5. Минимизация эксплуатационных рисков при инцидентах.

3) Базовые принципы архитектуры

Шифруем все по умолчанию. Opt-out запрещен без исключений на уровне риска.
Иерархия ключей (envelope encryption). Root/KEK → DEK (data encryption keys) → объекты/файлы/страницы БД.
KMS/HSM как источник доверия. Генерация и хранение KEK в KMS/HSM, операции обертывания/развертывания ключей выполняются там же.
Per-tenant / per-dataset ключи. Гранулярность под требования изоляции и ротации.
Разделение обязанностей. Команды платформы ≠ владельцы ключей арендатора; минимум привилегий (PoLP).
Crypto-agility. Возможность безопасно мигрировать алгоритмы/длины ключей.
Ротация как процесс, а не событие. Ключи и данные должны поддерживать «скользящую» замену.

4) Алгоритмы и режимы шифрования

Для объектов/файлов/записей: AES-256-GCM или AES-256-SIV (AEAD с аутентификацией).
Для блочных устройств/томов: AES-XTS-256/512 (защита от перестановок блоков; не AEAD — использовать поверх файловых форматов с MAC там, где важно целостность).

Для баз данных:
  • TDE (Transparent Data Encryption) движка: Oracle TDE, SQL Server TDE, MySQL/InnoDB TDE и пр.
  • Полевая/строчная криптография (FPE/детерминированное шифрование) — для возможностей поиска/джойнов на зашифрованных полях; применять осмотрительно.
  • Генерация и хранение ключей: KEK — в KMS/HSM; DEK — в памяти приложений краткоживущие, при хранении — только в обернутом виде.

5) Иерархия ключей и KMS/HSM

Уровни:

1. Root key (статутный, в HSM/KMS). Не покидает периметр HSM/KMS.

2. KEK (Key Encryption Key). На проект/окружение/арендатора. Управляет жизненным циклом DEK.

3. DEK (Data Encryption Key). На объект/файл/таблицу/сегмент. Короткоживущий, ротация без остановки.

Практики:
  • Все операции обертывания/развертывания — через KMS API с аудитом.
  • Политики: кто может «использовать» ключ ≠ кто может «управлять» ключом.
  • Геораспределение ключей: pin-to-region + dual-control для межрегиона.
  • Возможна «двухчековая» модель (двух операторов) для операций высокого риска.
  • Для изоляции сильного уровня — отдельные key-rings на арендатора.

6) Ротация, отзыв и комплаенс

Ротация DEK: прозрачно и постоянно (rolling re-encryption на уровне объектов/страниц).
Ротация KEK: периодическая (например, раз в 6–12 месяцев) + немедленный отзыв при подозрении на компрометацию.
Отзыв доступа: через KMS-политики; блокировка unwrap операций = мгновенная «крипто-уничтожаемость» данных.
Журналы аудита: кто, когда, с какими правами использовал ключи; хранить отдельно и тоже шифровать.
Нормативы и стандарты: ориентируемся на требования отрасли (например, GDPR/PCI-допуски/локальные регуляторы), используем сертифицированные криптомодули (например, соответствие уровням сертификации).

7) Паттерны по видам хранилищ

7.1 Блочные/файловые тома и ВМ/контейнеры

Полнодисковое шифрование (XTS) + управление ключами через KMS (инициализация тома при монтировании).
Защитить swap, crash-дампы, tmp-директории, контейнерные overlay-слои, образы/AMI.
Снимки/снапшоты — всегда в зашифрованном виде с отдельными DEK.

7.2 Объектное хранилище

Envelope encryption: уникальный DEK на объект; заголовки/метаданные — без утечек PII.
Контроль доступа к KMS ключу по арендаторам и окружениям.
Сервер-сайд шифрование (SSE с собственным KMS) или клиент-сайд (CSE) — выбирать по доверительной модели.

7.3 Базы данных

Включить TDE там, где доступно; ключи БД привязать к KMS через плагин/экстеншн.
Для особо чувствительных полей — прикладное шифрование (AEAD) до попадания в БД.
Журналы редо/транзакционные логи, архивные логи, дампы — шифровать отдельно, ключи — отдельные.

7.4 Логи/трейсы/метрики

Формат логов — без чувствительных данных по умолчанию (санитайзинг).
Архивы логов — отдельные ключи и короткие TTL хранения.
Доступ к чтению логов — через прокси-сервис с A&A и аудитом.

7.5 Резервные копии и офлайн-носители

Всегда шифровать на стороне клиента до записи на ленту/облако.
Хранить ключи отдельно (out-of-band), escrow с раздельным контролем.
Для чрезвычайных случаев — разделение секрета (например, m-of-n) для восстановления master-доступа.

8) Многоарендность (multi-tenant)

Ключ на арендатора: KEK-per-tenant + DEK-per-dataset.
Изоляция политиками: пространства имен KMS, IAM-границы, отдельные IDP-роли.
Удаление по запросу клиента: «крипто-стереть» — отозвать KEK арендатора и уничтожить DEK.
Отчетность для клиента: артефакты соответствия, логи доступа к ключам, подтверждение ротации.

9) Производительность и эксплуатация

Аппаратные ускорения (AES-NI/x86, ARMv8 Crypto Extensions).
Профилирование горячих путей: шифруем на границах I/O, избегаем двойного шифрования без нужды.
Пулы сеансов KMS, кэширование обернутых DEK в памяти (с TTL и защитой от дампов).
SLO/метрики: латентность unwrap, доля «перешифрованных» объектов, ошибки KMS, скорость бэкап-шифрования.

10) Процесс внедрения (reference runbook)

Шаг 0 — инвентаризация данных. Каталогировать все хранилища и пути утечки (tmp, дампы, экспорт, analytics-бакеты).
Шаг 1 — дизайн ключевой иерархии. Определяем уровни KEK/DEK, гранулярность, регионы, роли.
Шаг 2 — выбор режимов/библиотек. Одобренные алгоритмы, криптобиблиотеки, политики версий.
Шаг 3 — интеграция с KMS/HSM. Генерация/обертка/аудит, политики IAM, гео-пиннинг.
Шаг 4 — шифрование на запись. Включить по умолчанию, миграция существующих данных через бэкграунд-реэнкрипт.
Шаг 5 — ротация и аварийные сценарии. Регламенты, тесты «key compromise», «KMS недоступен».
Шаг 6 — мониторинг и аудит. Дашборды, алерты, регулярные отчеты соответствия.
Шаг 7 — обучение и «secure coding». Гайды для инженеров, запрет вывода секретов в логи/дампы.

11) Тестирование и верификация

Крипто-юнит-тесты: корректность AEAD (проверка тегов), валидация отказа при изменении байта.
Failure-tests: отключение KMS, устаревшие версии ключей, принудительный отзыв KEK.
Red/Blue-тесты: попытки прочитать «сырой» диск/снапшот/бэкап.
Проверка совместимости: миграция алгоритмов/длин ключей (crypto-agility).
Аттестация библиотек: использовать только проверенные криптомодули; фиксировать версии.

12) Частые ошибки и как их избежать

Двойное шифрование без смысла. Лишняя латентность и сложность. Держите слой, который дает нужную гранулярность и изоляцию.
Хранение ключей рядом с данными. Ключи — всегда отдельно, под другой моделью доступа.
Забытые артефакты. Незашифрованные временные файлы, экспорт CSV, дампы поддержки. Включите контроль в CI/CD и Data Loss Prevention.
Отсутствие ротации. Сделайте ротацию частью pipeline/cron, а не ручной процедурой.
Логи с чувствительными данными. Вводите контракт на формат логов и автоматические санитайзеры.

13) Мини-рецепты (псевдокод)

Envelope-шифрование объекта:

1) Request unwrap DEK from KMS by tenant KEK id dek = kms. unwrap(kek_id, wrapped_dek)

2) Generate fresh nonce/iv, encrypt payload (AEAD)
ciphertext, tag = aead_encrypt(dek, iv=random(), aad=metadata, plaintext=data)

3) Delete DEK from memory (zeroize), save {ciphertext, iv, tag, wrapped_dek}
Ротация KEK без простоя:

For each object:
new_wrapped_dek = kms. rewrap(old_wrapped_dek, old_kek_id -> new_kek_id)
store(new_wrapped_dek)
We do not touch the data: we turn over only DEK
«Крипто-удаление» набора данных:

kms. disable_key (tenant_kek_id) # Deny unwrap kms. schedule_destroy (tenant_kek_id, hold_period_days=7) # Optional hold

14) Чек-листы

Перед запуском в прод:
  • Включено шифрование по умолчанию на всех типах хранилищ.
  • Иерархия ключей описана и реализована; роли и IAM-политики настроены.
  • KMS/HSM интегрирован, аудит ключевых операций включен.
  • Ротация DEK/KEK автоматизирована; сценарии компрометации отработаны.
  • Бэкапы, снапшоты, логи и дампы — зашифрованы; ключи хранятся отдельно.
  • Настроены алерты на ошибки KMS, отклонения AEAD-тегов, долю незашифрованных артефактов.
  • Пройдены тесты на недоступность KMS и отзыв ключей.
Эксплуатация:
  • Ежемесячный отчет об использовании ключей и попытках доступа.
  • План crypto-agility и окно для безболезненной миграции алгоритмов.
  • Периодический Red-team на извлечение данных с «сырых» носителей.

15) Вопросы и ответы (FAQ)

В: Достаточно ли полнодискового шифрования?
О: Для физических рисков — да, но для изоляции арендаторов и гибкой ротации лучше envelope с DEK-на-объект/набор.

В: Что делать при компрометации KEK?
О: Немедленно отозвать KEK в KMS, перевыпустить новый, выполнить rewrap всех DEK, проверить журналы и провести RCA.

В: Как шифровать поля, по которым ищем?
О: Использовать детерминированные схемы или FPE только при строгой оценке рисков (леки паттернов). Лучше проектировать запросы так, чтобы чувствительные поля не требовали индексируемого открытого вида.

В: Нужна ли отдельная команда для ключей?
О: Рекомендуется «Crypto/KMS-оператор» как роль с отдельными правами и процедурами.

Связанные материалы в разделе «Архитектура и Протоколы»:
  • «Управление ключами и ротация»
  • «S2S-аутентификация»
  • «Подпись и верификация запросов»
  • «OAuth2/OpenID Connect в ядре»
  • «Гарантии доставки вебхуков»
Contact

Свяжитесь с нами

Обращайтесь по любым вопросам или за поддержкой.Мы всегда готовы помочь!

Начать интеграцию

Email — обязателен. Telegram или WhatsApp — по желанию.

Ваше имя необязательно
Email необязательно
Тема необязательно
Сообщение необязательно
Telegram необязательно
@
Если укажете Telegram — мы ответим и там, в дополнение к Email.
WhatsApp необязательно
Формат: +код страны и номер (например, +380XXXXXXXXX).

Нажимая кнопку, вы соглашаетесь на обработку данных.