Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • AI Studio
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Key Management Service
  • Начало работы
    • Обзор
      • Симметричный ключ
      • Версия ключа
      • Симметричное шифрование
      • Аппаратный модуль безопасности (HSM)
    • Шифрование по схеме envelope encryption
    • Консистентность ключей
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Операция Encrypt
  • Операция Decrypt
  • AAD-контекст
  • Примеры использования
  1. Концепции
  2. Симметричное шифрование
  3. Симметричное шифрование

Симметричное шифрование в KMS

Статья создана
Yandex Cloud
Обновлена 27 февраля 2025 г.
  • Операция Encrypt
  • Операция Decrypt
  • AAD-контекст
  • Примеры использования

Одна из доступных схем шифрования в KMS — симметричное шифрование. В этой схеме и для шифрования, и для расшифрования используется один и тот же (симметричный) ключ. В KMS применяется AES с длиной ключа 128, 192 или 256 бит в режиме GCM.

Важное условие безопасного шифрования — это использование криптографически стойкого генератора псевдослучайных чисел (необходим для генерации ключей шифрования, векторов инициализации). В KMS используется собственная реализация алгоритма Fortuna, агрегирующая энтропию с различных источников (RDSEED и RDRAND, /dev/urandom, энтропия с хостов).

В случае использования аппаратного модуля безопасности (HSM) ключи шифрования генерируются внутри модуля HSM, используя встроенный в HSM надежный генератор энтропии.

Криптоматериал, содержащийся в версиях ключей, недоступен в открытом виде вне сервиса KMS. Шифрование и расшифрование в KMS осуществляется посредством двух криптографических операций: encrypt и decrypt.

Операция EncryptОперация Encrypt

  1. Принимает на вход идентификатор ключа (keyID) вместе с открытым текстом (plaintext).

    Если нужно выполнить шифрование с использованием неосновной версии ключа, передайте на вход операции идентификатор произвольной активной версии ключа (versionId).

  2. Шифрует открытый текст с использованием алгоритма и криптоматериала основной версии ключа.

  3. Возвращает полученный шифртекст (ciphertext).

Encrypt-операция подходит для шифрования данных небольшого размера. Максимальный размер plaintext — 32 КБ. Для шифрования данных большего объема используйте envelope encryption.

Операция DecryptОперация Decrypt

  1. Принимает на вход идентификатор ключа (keyID) и шифртекст (ciphertext).

    Шифртекст, сгенерированный encrypt-операцией, содержит идентификатор версии (versionId), использовавшейся при шифровании. Алгоритм и криптоматериал для расшифрования берутся именно из этой версии ключа.

  2. Расшифровывает текст.

  3. Возвращает в качестве результата открытый текст (plaintext).

Операции encrypt и decrypt в KMS поддерживают передачу AAD-контекста (англ. Additional Authenticated Data) в качестве параметра (aadContext), что позволяет дополнительно обезопасить шифруемые данные.

AAD-контекстAAD-контекст

Additional Authenticated Data (AAD) – дополнительные данные, передаваемые на вход операций encrypt и decrypt. Для успешного расшифрования необходимо передать такой же AAD-контекст, что был передан для шифрования.

AAD-контекст тесно связан с шифруемыми данными (без знания AAD-контекста невозможно расшифровать шифртекст), но не повышает криптостойкость шифртекста и не является его частью. Задача AAD-контекста – защита от confused deputy атак с помощью дополнительной проверки данных при расшифровании.

Примечание

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

Пример confused deputy атакиПример confused deputy атаки

Сервис хранит адреса места жительства пользователей в привязке к их логинам. Адреса сохраняются в базу данных в зашифрованном виде. Адреса шифруются с использованием ключа, но без AAD-контекста. Каждая запись в базе помечена как принадлежащая тому или иному пользователю.

  • Алиса воспользовалась сервисом и указала свой адрес.
    • В базе данных появилась новая запись, помеченная как принадлежащая Алисе. Запись содержит адрес в зашифрованном виде.
    • Алиса может видеть свой адрес: из базы данных будут выбраны, расшифрованы и показаны принадлежащие ей записи.
  • Другой пользователь — Труди, получил доступ к базе данных.
    • У Труди нет ключа шифрования и она не может расшифровать содержимое базы данных, но может модифицировать ее содержимое.
    • Труди помечает запись с зашифрованным адресом Алисы, как принадлежащую ей и получает возможность увидеть адрес Алисы.

Проблема решается, если при шифровании в качестве AAD-контекста передавать, например, логин пользователя. В таком случае:

  1. Труди попытается посмотреть данные Алисы, помеченные им, как свои.
  2. Сервис будет передавать в качестве AAD-контекста логин Труди вместо логина Алисы.
  3. Расшифровать данные не получится.

Примеры использованияПримеры использования

  • Шифрование данных с помощью CLI и API Yandex Cloud
  • Шифрование данных с помощью SDK Yandex Cloud
  • Шифрование секретов в Yandex Managed Service for Kubernetes
  • Безопасная передача пароля в скрипт инициализации

Была ли статья полезна?

Предыдущая
Версия ключа
Следующая
Аппаратный модуль безопасности (HSM)
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»