Перейти к содержимому

Шифрование методом envelope encryption

Используйте метод envelope encryption для данных объемом больше 4 КБ.

  • MWS CLI
  • API
  1. Если у вас нет утилиты MWS CLI:

  2. Узнайте идентификатор KMS-ключа, который будет выступать в роли KEK:

    bash
    mws kms crypto-key list
  3. Сгенерируйте DEK и зашифруйте с помощью KEK через KMS:

    bash
    mws kms crypto-key generate-data-key <идентификатор KMS-ключа> --bits=256

    Пример выполнения команды:

    bash
    dataKeyCiphertext: AQAAAAEXrlKQZ0oP6zg4Y94iC0htDMHfhiAVPS/xWzqwJUX4YYWmKCeJC3N9GYlBYlsqmFyw0xKWQJBw/xncag=
    dataKeyPlaintext: z0GWvn9qSXDcEfvVGcZkRGs1MHsS3An/OIcX1x54yo=
    version: 1
  4. Сохраните полученные DEK:

    • Значение dataKeyCiphertext — в файл dek.enc.key.
    • Значение dataKeyPlaintext — в файл dek.open.key.
  5. Создайте файл с текстом, который нужно зашифровать, и сохраните его с именем plaintext.txt.

  6. Зашифруйте данные с помощью DEK:

    bash
    openssl enc -e -aes-256-cbc \
    -salt \
    -in ./plaintext.txt \
    -out ./plaintext.txt.enc \
    -pass file:dek.open.key \
    -pbkdf2

    В результате выполнения команды будет создан файл plaintext.txt.enc, содержащий зашифрованный текст.

  7. Удалите незашифрованный DEK:

    bash
    rm dek.open.key
  8. Если исходные данные больше не нужны, удалите их:

    bash
    rm plaintext.txt
  • MWS CLI
  • API
  1. Расшифруйте DEK с помощью KEK через KMS:

    bash
    mws kms crypto-key decrypt <идентификатор KMS-ключа> \
    --ciphertext "$(cat dek.enc.key)" |
    grep "^plaintext:" |
    cut -d' ' -f2 > decrypted.dek

    В результате выполнения команды ключ dek.enc.key будет расшифрован и сохранен в открытом виде в файл decrypted.dek.

  2. Расшифруйте данные с помощью DEK:

    bash
    openssl enc -d -aes-256-cbc \
    -in plaintext.txt.enc \
    -out plaintext.decrypted \
    -pass file:decrypted.dek \
    -pbkdf2

    В результате выполнения команды будет создан файл plaintext.decrypted, в котором зашифрованный ранее текст будет сохранен в открытом виде.

  3. Удалите восстановленный открытый DEK:

    bash
    rm decrypted.dek