Москва: проверенные б/у ноутбуки с гарантией и проверкой перед оплатой
+7 906 722-94-45

Главная → Статьи → API шифрование данных

API шифрование данных: защита передаваемой информации

API шифрование данных: HTTPS, шифрование payload, управление ключами и проверка целостности.

Прямой ответ

API шифрование данных защищает передаваемую информацию от перехвата, поэтому HTTPS и шифрование payload обеспечивают конфиденциальность.

Уровень Что шифрует
HTTPS Транспортный уровень (TLS)
Payload Данные в теле запроса
Поля Отдельные чувствительные поля
Целостность Проверка неизменности данных
from cryptography.fernet import Fernet

key = Fernet.generate_key()
cipher = Fernet(key)
encrypted = cipher.encrypt(b"sensitive data")
decrypted = cipher.decrypt(encrypted)

HTTPS шифрует транспортный уровень, поэтому данные не перехватываются при передаче. О security headers — в статье про security headers.

HTTPS, шифрование payload и управление ключами

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

HTTPS. Шифрует транспортный уровень, поэтому данные не перехватываются при передаче.

Шифрование payload. Шифрует данные в теле запроса, поэтому данные защищены даже при отсутствии HTTPS.

Управление ключами. Ключи шифрования хранятся в защищённом хранилище, поэтому доступ к ним ограничивается.

Практическое следствие: отсутствие HTTPS позволяет перехватить данные при передаче, поэтому конфиденциальность не обеспечивается.

Отдельный аспект — проверка целостности. Проверка целостности подтверждает, что данные не были изменены при передаче.

Три признака некорректной реализации шифрования.

Отсутствие HTTPS. Данные передаются в открытом виде, поэтому могут быть перехвачены.

Хранение ключей в коде. Ключи попадают в систему контроля версий, поэтому доступ к ним не ограничивается.

Отсутствие проверки целостности. Изменение данных не обнаруживается, поэтому целостность не обеспечивается.

О защите от атак — в статье про защиту API от атак; о ротации ключей — в статье про ротацию ключей.

Проверка целостности и диагностика

Проверка целостности данных подтверждает, что данные не были изменены при передаче.

Проверка целостности. Проверка подтверждает, что данные не были изменены, поэтому целостность обеспечивается.

Фиксация в логе. Запись шифрования позволяет определить, когда и какие данные были зашифрованы при диагностике.

Ротация ключей. Периодическая смена ключей ограничивает срок действия скомпрометированного ключа.

Практическое следствие: отсутствие проверки целостности приводит к тому, что изменение данных не обнаруживается.

Практика: настройка шифрования данных

1. Используйте HTTPS для всех запросов. Шифрование транспортного уровня предотвращает перехват данных.

2. Шифруйте чувствительные поля. Шифрование отдельных полей защищает данные даже при компрометации HTTPS.

3. Не храните ключи в коде. Ключи в коде попадают в систему контроля версий, поэтому доступ к ним не ограничивается.

4. Используйте защищённое хранилище для ключей. Доступ к ключам ограничивается настройкой прав.

5. Проверяйте целостность данных. Проверка целостности подтверждает, что данные не были изменены.

6. Фиксируйте шифрование в логе. Запись шифрования позволяет определить, когда и какие данные были зашифрованы.

7. Ротируйте ключи шифрования. Периодическая смена ключей ограничивает срок действия скомпрометированного ключа.

Рекомендации:

  1. Не используйте HTTP для чувствительных данных. Данные передаются в открытом виде, поэтому могут быть перехвачены.
  2. Учитывайте уровень шифрования при настройке. HTTPS шифрует транспорт, шифрование payload защищает данные в теле запроса.
  3. Сопоставляйте ключи с окружением. Ключи продакшена отличаются от разработки, поэтому окружения разделяются.
  4. Фиксируйте шифрование в ошибке. Признак в записи ошибки позволяет определить, когда были зашифрованы данные.
  5. Пересматриваем ключи при изменении требований. Новые требования могут требовать изменения ключей.

Практический сценарий: данные были перехвачены при передаче

Контекст: данные были перехвачены при передаче, поэтому конфиденциальность не обеспечивалась.

  1. Диагностика. Проверка показала, что использовался HTTP вместо HTTPS. Данные передавались в открытом виде, поэтому были перехвачены злоумышленником.
  2. Причина. HTTPS не был настроен, поэтому данные передавались в открытом виде.
  3. Действия. (а) Настроили HTTPS для всех запросов, чтобы данные шифровались при передаче; (б) добавили шифрование чувствительных полей, чтобы данные были защищены даже при компрометации HTTPS; (в) перенесли ключи в защищённое хранилище, чтобы доступ к ним ограничивался; (г) добавили проверку целостности, чтобы изменение данных обнаруживалось; (д) настроили ротацию ключей, чтобы компрометация ограничивалась сроком.
  4. Результат. Данные шифруются при передаче, поэтому перехват не выполняется.

Вывод: отсутствие HTTPS позволяет перехватить данные при передаче. HTTPS и шифрование чувствительных полей обеспечивают конфиденциальность данных.

Дополнительная защита

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

Разделение ключей по окружениям. Ключи разработки, тестирования и продакшена различаются, поэтому компрометация одного не затрагивает другие.

Практическое следствие: отсутствие шифрования при хранении и разделения ключей позволяет доступ к данным при компрометации базы и затрагивает все окружения при компрометации одного ключа.

Практический сценарий: данные были перехвачены при передаче

Контекст: данные были перехвачены при передаче, поэтому конфиденциальность не обеспечивалась.

  1. Диагностика. Проверка показала, что использовался HTTP вместо HTTPS. Данные передавались в открытом виде, поэтому были перехвачены злоумышленником.
  2. Причина. HTTPS не был настроен, поэтому данные передавались в открытом виде.
  3. Действия. (а) Настроили HTTPS для всех запросов, чтобы данные шифровались при передаче; (б) добавили шифрование чувствительных полей, чтобы данные были защищены даже при компрометации HTTPS; (в) перенесли ключи в защищённое хранилище, чтобы доступ к ним ограничивался; (г) добавили проверку целостности, чтобы изменение данных обнаруживалось; (д) настроили ротацию ключей, чтобы компрометация ограничивалась сроком.
  4. Результат. Данные шифруются при передаче, поэтому перехват не выполняется.

Вывод: отсутствие HTTPS позволяет перехватить данные при передаче. HTTPS и шифрование чувствительных полей обеспечивают конфиденциальность данных.

FAQ

Зачем нужно шифрование данных API? Шифрование защищает передаваемую информацию от перехвата. HTTPS шифрует транспортный уровень, поэтому данные не перехватываются при передаче.

Какие уровни шифрования существуют? HTTPS (транспортный уровень), шифрование payload (данные в теле запроса), шифрование отдельных полей и проверка целостности.

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

Зачем нужна ротация ключей? Периодическая смена ключей ограничивает срок действия скомпрометированного ключа. Отсутствие ротации позволяет ключу действовать неопределённый срок.

Источники: RFC 8446, Cryptography.io, OWASP API Security — ссылки в шапке.