Skip to content

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

Сервис KMS поддерживает алгоритмы симметричного шифрования Advanced Encryption Standard в режиме GCM (Galois/Counter Mode) — AES-GCM.

Криптографические операции в MWS доступны только через API и CLI.

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

В таком методе зашифрование и расшифрование выполняются с использованием одного и того же симметричного ключа.

Зашифрование данных выполняется операцией encrypt. Операция принимает идентификатор симметричного ключа и данные, которые необходимо зашифровать — открытый текст (plaintext). Зашифрование данных выполняется с помощью версии ключа и по выбранному алгоритму шифрования. В результате операция возвращает полученные зашифрованные данные — шифртекст (ciphertext). Он содержит криптографический материал и метаданные: идентификатор ключа, идентификатор версии ключа и алгоритм шифрования.

Расшифрование данных выполняется операцией decrypt. Операция принимает идентификатор симметричного ключа, шифртекст и выполняет поиск версии ключа, с помощью которой данные были зашифрованы. В результате операция возвращает исходный открытый текст.

Для поддержания производительности операций encrypt и decrypt объем данных, передаваемых в одном вызове операции, не должен превышать 4 КБ. Для шифрования данных большего объема используйте метод envelope encryption, в котором шифрование выполняется на стороне пользователя.

Вы можете перешифровать данные с использованием другого ключа или версии ключа с помощью операции reEncrypt. Эта операция принимает шифртекст, исходный ключ и новый ключ. Данные расшифровываются исходным ключом и зашифровываются новым ключом.

Envelope encryption

Метод envelope encryption не имеет ограничений по объему шифруемых данных и требует выполнения криптографических операций на стороне пользователя.

В envelope encryption для шифрования используются ключ шифрования данных Data Encryption Key (DEK) и ключ шифрования ключа Key Encryption Key (KEK). KMS участвует только в шифровании DEK с помощью операций encrypt и decrypt.

Зашифрование методом envelope encryption:

  1. Пользователь генерирует DEK с помощью ключа шифрования KEK.
  2. Пользователь локально шифрует данные сгенерированным ключом шифрования DEK.
  3. Пользователь шифрует DEK с помощью KEK и сохраняет его рядом с зашифрованными данными.
  4. Пользователь уничтожает незашифрованный DEK.
  5. Пользователь уничтожает незашифрованные данные.

Расшифрование методом envelope encryption:

  1. Пользователь расшифровывает DEK с использованием KEK.
  2. Пользователь локально расшифровывает данные с помощью DEK.
  3. Пользователь удаляет восстановленный DEK.