Мультирегиональная стратегия для KMS

#amazon-web-services #encryption #amazon-dynamodb #aws-kms

#amazon-веб-сервисы #шифрование #amazon-dynamodb #amazon-kms

Вопрос:

Я пытаюсь реализовать стратегию для нескольких регионов для моих лямбд, которые используют глобальные таблицы dynamodb.

Я хочу использовать KMS для шифрования на стороне клиента для идентификатора пользователя и PIN-кода. Как я могу реализовать стратегию для нескольких регионов для KMS. Я нашел этот пример, в котором говорится о том же https://aws.amazon.com/blogs/security/how-to-use-the-new-aws-encryption-sdk-to-simplify-data-encryption-and-improve-application-availability/

Означает ли это, что я должен создавать ключи KMS во всех регионах, в которых я развертываю свой lambda (для задержки)?

Вопрос-1: Если да, то если я предоставляю несколько регионов в MultipleProviderFactory, какой из ключей он использует для шифрования данных и какой регион он использует для расшифровки данных?

Вопрос-2: Как это изменится, если мне придется шифровать данные размером более 4096 КБ?

Ответ №1:

Идея SDK для шифрования заключается в использовании шифрования в конверте. Таким образом, каждый раз, когда вы шифруете сообщение или данные, SDK генерирует случайный ключ данных для этого сообщения и использует его для шифрования тела сообщения. Затем он шифрует сам ключ ВСЕМИ вашими поставщиками и включает эти зашифрованные ключи в заголовок сообщения.

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

Итак, первый вопрос: он шифрует их всеми и расшифровывает с помощью любого из них. Я не знаю фактической логики того, как он выбирает поставщика для дешифрования, но, вероятно, это просто в том порядке, в котором они определены в multiproviderfactory.

И другие: Вы можете зашифровать более 4 КБ (предполагая, что «4096 КБ» — это опечатка) без каких-либо изменений, поскольку тело зашифровано / расшифровано локально с помощью AES. Ограничение в 4 КБ предназначено только для полезной нагрузки в / из KMS, которая является просто ключом данных.