Шифрование данных
Сервис 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:
- Пользователь генерирует DEK с помощью ключа шифрования KEK.
- Пользователь локально шифрует данные сгенерированным ключом шифрования DEK.
- Пользователь шифрует DEK с помощью KEK и сохраняет его рядом с зашифрованными данными.
- Пользователь уничтожает незашифрованный DEK.
- Пользователь уничтожает незашифрованные данные.
Расшифрование методом envelope encryption:
- Пользователь расшифровывает DEK с использованием KEK.
- Пользователь локально расшифровывает данные с помощью DEK.
- Пользователь удаляет восстановленный DEK.