Информационная безопасность

Шифрование данных: at rest и in transit

2008 год. Heartland Payment Systems. 130 миллионов кредитных карт. Данные были зашифрованы при хранении и передаче - SSL использовался. Атакующий установил malware на payment processing серверах, перехватывающий данные карт в памяти после TLS расшифровки - между приёмом и шифрованием для хранения. TLS и at-rest encryption не помогли. Шифрование in transit и at rest необходимо, но недостаточно.

  • Heartland 2008: 130M карт, перехват в памяти между TLS termination и encryption - TLS не помог
  • LastPass 2022: vault данные в незашифрованном S3 bucket - at-rest encryption отсутствовала для backup
  • MongoDB без auth 2017: десятки тысяч открытых баз данных удалены с требованием выкупа - нет шифрования, нет аутентификации

Envelope Encryption: шифрование ключей ключами

Наивный подход: шифровать данные одним мастер-ключом. Проблема: если мастер-ключ скомпрометирован - все данные расшифровываются. **Envelope Encryption** разделяет ключи: Data Encryption Key (DEK) шифрует данные, Key Encryption Key (KEK) шифрует DEK. Компрометация KEK требует расшифровки DEK перед расшифровкой данных.

AES-256-GCM - рекомендуемый режим шифрования: AES с ключом 256 бит, Galois/Counter Mode с аутентификацией (AEAD). GCM: одновременно шифрует и проверяет целостность. Невозможно незаметно изменить ciphertext. ChaCha20-Poly1305 - альтернатива, быстрее на системах без AES-NI (мобильные устройства).

БД содержит миллион зашифрованных записей (envelope encryption). KEK нужно ротировать. Что потребует ротация?

Key Rotation: жизненный цикл ключей

Ключи имеют cryptoperiod - максимальный срок использования. NIST SP 800-57 рекомендует: AES-256 для шифрования данных - до 2 лет. Причина: за долгое время накапливается больший объём данных для cryptanalysis, выше риск компрометации.

Потеря ключа шифрования = потеря данных. Key escrow: дублировать ключи в защищённом хранилище (HSM, hardware backup). Vault: unseal keys хранятся по протоколу Shamir Secret Sharing - нужно N из M ключей. AWS KMS: managed HSM, backup управляется AWS.

Приложение потеряло ключ шифрования для 10 млн зашифрованных записей. Что произойдёт?

TLS: шифрование в transit

HTTPS = HTTP + TLS. TLS 1.3 (2018) - текущий стандарт: 1-RTT handshake (vs 2-RTT в TLS 1.2), perfect forward secrecy обязательно, устаревшие cipher suites удалены. TLS 1.0 и 1.1 deprecated (RFC 8996, 2021). Использование TLS 1.0 - compliance нарушение для PCI DSS, HIPAA.

Perfect Forward Secrecy (PFS): каждая TLS сессия имеет уникальный ephemeral ключ. Если долгосрочный private key скомпрометирован - прошлые сессии не расшифровываются. ECDHE cipher suites обеспечивают PFS. RSA key exchange - не PFS (пассивная запись трафика + поздняя компрометация key = decrypt).

Nginx настроен: ssl_ciphers ALL. Что произойдёт?

Шифрование баз данных

Данные в БД - наиболее ценный актив. Два уровня шифрования: at-rest (диск) и application-level (поля). At-rest encryption защищает от физической кражи диска. Application-level - от компрометации БД сервера (атакующий с SQL shell не видит plaintext).

Always Encrypted (SQL Server) и Google Confidential Computing обеспечивают шифрование данных даже при обработке в памяти. Confidential VMs: TEE (Trusted Execution Environment) шифрует RAM - даже hypervisor не видит данные. Применение: обработка медицинских данных в cloud.

HTTPS достаточно для защиты данных - всё зашифровано в transit

HTTPS защищает данные только в transport. At-rest encryption защищает диски. Application-level encryption защищает от компрометации БД. Нужны все три слоя для defence in depth.

Реальные атаки: Heartland (2008) - данные перехвачены в памяти сервера после TLS расшифровки. At-rest encryption не помогла бы. Application-level encryption с ключами вне БД - единственная защита от полного SQL доступа.

БД сервер скомпрометирован (SQL shell). At-rest encryption включена. Видит ли атакующий данные?

Итоги

  • Envelope Encryption: DEK шифрует данные, KEK шифрует DEK. Ротация KEK без перешифровки данных. Уникальный DEK на запись
  • Key Rotation: NIST SP 800-57: AES-256 криптопериод до 2 лет. KMS automatic rotation. Потеря ключа = потеря данных - escrow обязателен
  • TLS: TLS 1.3 обязательно, Perfect Forward Secrecy, explicit cipher whitelist. HSTS с preload. Certificate Transparency мониторинг
  • Database Encryption: at-rest защищает диск, не SQL shell. Application-level с ключами вне БД - защита при полной компрометации СУБД

Связанные темы

Шифрование - практическое применение криптографических примитивов:

  • Безопасность AWS/GCP/Azure — KMS - управляемый сервис для encryption keys
  • Supply Chain Security — Sigstore и cosign используют те же криптографические примитивы
  • Шифрование данных: криптография — Основы симметричного и асимметричного шифрования

Вопросы для размышления

  • Используется ли envelope encryption для sensitive данных? Где хранятся DEK и KEK?
  • Включён ли TLS 1.3? Настроен ли HSTS с preload?
  • Что произойдёт если encryption key потерян? Есть ли disaster recovery процедура?

Связанные уроки

  • sec-27 — KMS - инструмент шифрования в cloud
  • sec-04 — Криптографические основы - TLS и symmetric encryption
  • sec-19 — Подпись артефактов в supply chain использует те же примитивы
  • crypto-14-aes
  • crypto-32-tls
Шифрование данных: at rest и in transit

0

1

Войти