Информационная безопасность
Шифрование данных: 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