decrypt
Описание
Расшифровывает зашифрованный текст, который был зашифрован ключом KMS с помощью любого из следующих операций:
- Encrypt
- GenerateDataKey
- GenerateDataKeyPair
- GenerateDataKeyWithoutPlaintext
- GenerateDataKeyPairWithoutPlaintext
Вы можете использовать эту операцию для расшифровки зашифрованного текста, который был зашифрован с помощью симметричного ключа KMS или асимметричного ключа KMS. Если ключ KMS асимметричный, вы должны указать ключ KMS и алгоритм шифрования, который использовался для шифрования зашифрованного текста. Дополнительную информацию об асимметричных ключах KMS см. в разделе «Асимметричные ключи KMS» в руководстве разработчика Key Management Service.
Операция Decrypt также расшифровывает зашифрованный текст, который был зашифрован вне KMS с помощью открытого ключа асимметричного ключа KMS. Однако она не может расшифровывать симметричный зашифрованный текст, созданный другими библиотеками, такими как Amazon Web Services Encryption SDK или клиентская сторона шифрования Amazon S3. Эти библиотеки возвращают формат зашифрованного текста, несовместимый с KMS.
Если зашифрованный текст был зашифрован с помощью симметричного ключа KMS, параметр KeyId является необязательным. KMS может получить эту информацию из метаданных, которые он добавляет к блоку симметричного зашифрованного текста. Эта функция повышает устойчивость вашей реализации, гарантируя, что авторизованные пользователи могут расшифровывать зашифрованный текст через десятилетия после его шифрования, даже если они потеряли данные идентификатора ключа. Однако всегда рекомендуется указывать ключ KMS в качестве лучшей практики. Когда вы используете параметр KeyId для указания ключа KMS, KMS использует только указанный вами ключ KMS. Если зашифрованный текст был зашифрован с помощью другого ключа KMS, операция Decrypt завершается с ошибкой. Это гарантирует, что вы используете нужный ключ KMS.
По возможности используйте политики ключей, чтобы предоставить пользователям разрешение на вызов операции Decrypt для конкретного ключа KMS, а не политики IAM. В противном случае вы можете создать политику IAM, которая предоставляет пользователю разрешение Decrypt на все ключи KMS. Этот пользователь может расшифровывать зашифрованный текст, зашифрованный ключами KMS в других учетных записях, если политика ключа для ключа KMS в другой учетной записи разрешает это. Если вам необходимо использовать политику IAM для разрешений Decrypt, ограничьте пользователя конкретными ключами KMS или конкретными доверенными учетными записями. Дополнительные сведения см. в разделе «Рекомендации по политикам IAM» в руководстве разработчика Key Management Service.
Decrypt также поддерживает Amazon Web Services Nitro Enclaves, которые предоставляют изолированную вычислительную среду в Amazon EC2. Чтобы вызвать Decrypt для Nitro enclave, используйте Amazon Web Services Nitro Enclaves SDK или любой Amazon Web Services SDK. Используйте параметр Recipient для предоставления документа подтверждения для enclave. Вместо данных открытого текста ответ включает данные открытого текста, зашифрованные открытым ключом из документа подтверждения (CiphertextForRecipient). Дополнительную информацию о взаимодействии между KMS и Amazon Web Services Nitro Enclaves см. в разделе «Как Amazon Web Services Nitro Enclaves использует KMS» в руководстве разработчика Key Management Service.Ключ KMS, который вы используете для этой операции, должен быть в совместимом состоянии. Дополнительные сведения см. в разделе «Состояния ключей ключей KMS» в руководстве разработчика Key Management Service.
Использование в другой учетной записи: Да. Если вы используете параметр KeyId для идентификации ключа KMS в другой учетной записи Amazon Web Services, укажите ARN ключа или ARN псевдонима ключа KMS.
Необходимые разрешения: kms:Decrypt (политика ключа)
Связанные операции:
- Encrypt
- GenerateDataKey
- GenerateDataKeyPair
- ReEncrypt
См. также: AWS API документацию
Синтаксис
decrypt
--ciphertext-blob <value>
[--encryption-context <value>]
[--grant-tokens <value>]
[--key-id <value>]
[--encryption-algorithm <value>]
[--recipient <value>]
[--dry-run | --no-dry-run]
[--cli-input-json | --cli-input-yaml]
[--generate-cli-skeleton <value>]
[--debug]
[--endpoint-url <value>]
[--no-verify-ssl]
[--no-paginate]
[--output <value>]
[--query <value>]
[--profile <value>]
[--region <value>]
[--version <value>]
[--color <value>]
[--no-sign-request]
[--ca-bundle <value>]
[--cli-read-timeout <value>]
[--cli-connect-timeout <value>]
[--cli-binary-format <value>]
[--no-cli-pager]
[--cli-auto-prompt]
[--no-cli-auto-prompt]
Параметры
--ciphertext-blob (blob)
--encryption-context (map)
Указывает контекст шифрования для использования при расшифровке данных. Контекст шифрования действителен только для криптографических операций с симметричным ключом KMS. Стандартные асимметричные алгоритмы шифрования и алгоритмы HMAC, которые использует KMS, не поддерживают контекст шифрования.
Контекст шифрования — это набор пар «ключ-значение» без секретов, представляющих дополнительные данные для проверки подлинности. При шифровании данных с использованием контекста шифрования вы должны указать тот же контекст шифрования (точное соответствие регистру) для расшифровки данных. Контекст шифрования поддерживается только в операциях с симметричными ключами KMS. В операциях с симметричными ключами KMS контекст шифрования является необязательным, но его настоятельно рекомендуется использовать.
Дополнительные сведения см. в разделе «Контекст шифрования» в руководстве разработчика Key Management Service.
key -> (строка)
value -> (строка)
Сокращенный синтаксис:
KeyName1=string,KeyName2=string
Синтаксис JSON:
{"string": "string"
...}
--grant-tokens (список)
Список маркеров грантов.
Используйте маркер гранта, когда разрешение на вызов этой операции получено из нового гранта, который еще не достиг «постепенной согласованности». Дополнительные сведения см. в разделе «Маркер гранта и Использование маркера гранта» в руководстве разработчика Key Management Service.
(строка)
Синтаксис:
"string" "string" ...
--key-id (строка)
Указывает ключ KMS, который KMS использует для расшифровки зашифрованного текста.
Введите идентификатор ключа ключа KMS, который использовался для шифрования зашифрованного текста. Если вы укажете другой ключ KMS, операция Decrypt вызовет ошибку IncorrectKeyException.
Этот параметр требуется только в том случае, если зашифрованный текст был зашифрован с помощью асимметричного ключа KMS. Если вы использовали симметричный ключ KMS, KMS может получить ключ KMS из метаданных, которые он добавляет к блоку симметричного зашифрованного текста. Однако всегда рекомендуется использовать его в качестве лучшей практики. Это гарантирует, что вы используете нужный ключ KMS.
Для указания ключа KMS используйте его идентификатор ключа, ARN ключа, имя псевдонима или ARN псевдонима. При использовании имени псевдонима добавьте префикс "alias/". Чтобы указать ключ KMS в другой учетной записи Amazon Web Services, необходимо использовать ARN ключа или ARN псевдонима.
Например:
- Идентификатор ключа:
1234abcd-12ab-34cd-56ef-1234567890ab - ARN ключа:
arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab - Имя псевдонима:
alias/ExampleAlias - ARN псевдонима:
arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
Чтобы получить идентификатор ключа и ARN ключа для ключа KMS, используйте ListKeys или DescribeKey. Чтобы получить имя псевдонима и ARN псевдонима, используйте ListAliases.
--encryption-algorithm (строка)
Указывает алгоритм шифрования, который будет использоваться для расшифровки зашифрованного текста. Укажите тот же алгоритм, который использовался для шифрования данных. Если вы укажете другой алгоритм, операция Decrypt завершится с ошибкой.
Значение по умолчанию, SYMMETRIC_DEFAULT, представляет единственный поддерживаемый алгоритм, действительный для симметричных ключей шифрования KMS.
Возможные значения:
SYMMETRIC_DEFAULTRSAES_OAEP_SHA_1RSAES_OAEP_SHA_256SM2PKE
--recipient (структура)
Подписанный документ подтверждения из Amazon Web Services Nitro enclave и алгоритм шифрования для использования с открытым ключом enclave. Единственным допустимым алгоритмом шифрования является RSAES_OAEP_SHA_256.
Этот параметр поддерживает только документы подтверждения для Amazon Web Services Nitro Enclaves. Для включения этого параметра используйте Amazon Web Services Nitro Enclaves SDK или любой Amazon Web Services SDK.
При использовании этого параметра вместо возвращения данных открытого текста KMS шифрует данные открытого текста с помощью открытого ключа в документе подтверждения и возвращает полученный зашифрованный текст в поле CiphertextForRecipient в ответе. Этот зашифрованный текст может быть расшифрован только с помощью закрытого ключа в enclave. Поле Plaintext в ответе равно null или пустое.
Дополнительную информацию о взаимодействии между KMS и Amazon Web Services Nitro Enclaves см. в разделе «Как Amazon Web Services Nitro Enclaves использует KMS» в руководстве разработчика Key Management Service.
KeyEncryptionAlgorithm -> (строка)
RSAES_OAEP_SHA_256.AttestationDocument -> (blob)
Сокращенный синтаксис:
KeyEncryptionAlgorithm=string,AttestationDocument=blob
Синтаксис JSON:
{
"KeyEncryptionAlgorithm": "RSAES_OAEP_SHA_256",
"AttestationDocument": blob
}
--dry-run | --no-dry-run (логическое значение)
Проверяет, будет ли ваш запрос успешным. DryRun — необязательный параметр.
Дополнительные сведения о том, как использовать этот параметр, см. в разделе «Тестирование ваших вызовов API KMS» в руководстве разработчика Key Management Service.
--cli-input-json | --cli-input-yaml (строка) Читает аргументы из предоставленной строки JSON. Строка JSON следует формату, указанному в --generate-cli-skeleton. Если другие аргументы предоставлены в командной строке, эти значения переопределят значения, предоставленные в JSON. Невозможно передавать произвольные двоичные значения с помощью предоставленного значения JSON, так как строка будет взята буквально. Это может не быть указано вместе с --cli-input-yaml.
--generate-cli-skeleton (строка) Выводит JSON-скелет в стандартный вывод без отправки запроса API. Если предоставлено значение без значения или значение input, выводит пример входного JSON, который может быть использован в качестве аргумента для --cli-input-json. Аналогично, если предоставлено значение yaml-input, будет выведен пример входного YAML, который можно использовать с --cli-input-yaml. При предоставлении значения output проверяются входные данные команды и возвращается пример выходного JSON для этой команды. Сгенерированный JSON-скелет не стабилен между версиями AWS CLI, и нет гарантий обратной совместимости в сгенерированном JSON-скелете.
Общие параметры
--debug (boolean)
Включить отладовую регистрацию.
--endpoint-url (string)
Переопределить URL по умолчанию команды заданным URL.
--no-verify-ssl (boolean)
По умолчанию AWS CLI использует SSL при общении с AWS-сервисами. Для каждого SSL-соединения AWS CLI будет проверять SSL-сертификаты. Этот параметр переопределяет поведение проверки SSL-сертификатов по умолчанию.
--no-paginate (boolean)
Отключить автоматическую постраничную навигацию. Если автоматическая постраничная навигация отключена, AWS CLI выполнит только один вызов для первой страницы результатов.
--output (string)
Стиль форматирования вывода команд.
- json
- text
- table
- yaml
- yaml-stream
--query (string)
Запрос JMESPath для фильтрации данных ответа.
--profile (string)
Использовать определенный профиль из файла с учетными данными.
--region (string)
Регион для использования. Переопределяет настройки конфигурации/среды.
--version (string)
Отобразить версию этого инструмента.
--color (string)
Включить/отключить цветной вывод.
- on
- off
- auto
--no-sign-request (boolean)
Не подписывать запросы. Учетные данные не будут загружены, если этот параметр указан.
--ca-bundle (string)
Файл с сертификатами CA для проверки SSL-сертификатов. Переопределяет настройки конфигурации/среды.
--cli-read-timeout (int)
Максимальное время чтения сокета в секундах. Если значение равно 0, чтение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию составляет 60 секунд.
--cli-connect-timeout (int)
Максимальное время подключения сокета в секундах. Если значение равно 0, подключение сокета будет выполняться блокирующим образом без таймаута. Значение по умолчанию составляет 60 секунд.
--cli-binary-format (string)
Стиль форматирования, используемый для двоичных блоков. Формат по умолчанию — base64. Формат base64 ожидает, что двоичные блоки будут предоставлены в виде строки, закодированной в base64. Формат raw-in-base64-out сохраняет совместимость с поведением AWS CLI версии 1, а двоичные значения должны передаваться буквально. При предоставлении содержимого из файла, соответствующего двоичному блоку, fileb:// всегда будет обрабатываться как двоичный и использовать содержимое файла напрямую независимо от параметра cli-binary-format. При использовании file:// содержимое файла должно быть должным образом отформатировано для настроенного cli-binary-format.
- base64
- raw-in-base64-out
--no-cli-pager (boolean)
Отключить вывод страницы CLI.
--cli-auto-prompt (boolean)
Автоматически запросить параметры ввода CLI.
--no-cli-auto-prompt (boolean)
Отключить автоматическое запросить параметры ввода CLI.
Примеры
Примечание
Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию см. в руководстве по началу работы в Руководстве пользователя AWS CLI.
Если не указано иное, все примеры используют правила цитирования Unix. Эти примеры необходимо адаптировать к правилам цитирования вашей оболочки. См. Использование кавычек со строками в Руководстве пользователя AWS CLI.
Пример 1: Расшифровка зашифрованного сообщения с помощью симметричного ключа KMS (Linux и macOS)
Следующий пример команды decrypt демонстрирует рекомендуемый способ расшифровки данных с помощью AWS CLI. Этот вариант показывает, как расшифровывать данные с помощью симметричного ключа KMS.
-
Предоставьте шифрованный текст в файле.
В значении параметра
--ciphertext-blobиспользуйте префиксfileb://, который сообщает CLI о чтении данных из двоичного файла. Если файл находится не в текущем каталоге, укажите полный путь к файлу. Дополнительную информацию о чтении параметров AWS CLI из файла см. в Загрузка параметров AWS CLI из файла <https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html> в Руководстве пользователя командной строки AWS и Рекомендации по локальным параметрам файла <https://aws.amazon.com/blogs/developer/best-practices-for-local-file-parameters/> в блоге Инструмента командной строки AWS. -
Укажите ключ KMS для расшифровки шифрованного текста.
Параметр
--key-idне требуется при расшифровке с помощью симметричного ключа KMS. AWS KMS может получить идентификатор ключа KMS, который использовался для шифрования данных, из метаданных в шифрованном тексте. Но всегда рекомендуется указывать используемый ключ KMS. Это гарантирует, что вы используете нужный ключ KMS и предотвращает случайную расшифровку шифрованного текста с помощью ключа KMS, которому вы не доверяете. -
Запросите вывод открытого текста в виде текстового значения.
Параметр
--queryсообщает CLI получить только значение поляPlaintextиз вывода. Параметр--outputвозвращает вывод в виде текста. -
Декодируйте открытый текст в base64 и сохраните его в файле.
В следующем примере данные параметра
Plaintextпередаются в утилиту Base64, которая их декодирует. Затем декодированный вывод перенаправляется (>) в файлExamplePlaintext.
Перед выполнением этой команды замените пример идентификатора ключа на действительный идентификатор ключа из вашей учетной записи AWS.
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--output text \
--query Plaintext | base64 \
--decode > ExamplePlaintextFile
Эта команда не выводит ничего на экран. Вывод команды decrypt декодируется в base64 и сохраняется в файле.
Дополнительную информацию см. в разделе Decrypt в Справочнике по API AWS Key Management Service.
Пример 2: Расшифровка зашифрованного сообщения с помощью симметричного ключа KMS (командная строка Windows)
Следующий пример аналогичен предыдущему, за исключением того, что он использует утилиту certutil для декодирования данных открытого текста в base64. Эта процедура требует двух команд, как показано в следующих примерах.
Перед выполнением этой команды замените пример идентификатора ключа на действительный идентификатор ключа из вашей учетной записи AWS.
aws kms decrypt ^
--ciphertext-blob fileb://ExampleEncryptedFile ^
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab ^
--output text ^
--query Plaintext > ExamplePlaintextFile.base64
Выполните команду certutil.
certutil -decode ExamplePlaintextFile.base64 ExamplePlaintextFile
Вывод:
Input Length = 18
Output Length = 12
CertUtil: -decode command completed successfully.
Дополнительную информацию см. в разделе Decrypt в Справочнике по API AWS Key Management Service.
Пример 3: Расшифровка зашифрованного сообщения с помощью асимметричного ключа KMS (Linux и macOS)
Следующий пример команды decrypt показывает, как расшифровать данные, зашифрованные асимметричным ключом KMS RSA.
При использовании асимметричного ключа KMS требуется параметр encryption-algorithm, который указывает алгоритм, используемый для шифрования открытого текста.
Перед выполнением этой команды замените пример идентификатора ключа на действительный идентификатор ключа из вашей учетной записи AWS.
aws kms decrypt \
--ciphertext-blob fileb://ExampleEncryptedFile \
--key-id 0987dcba-09fe-87dc-65ba-ab0987654321 \
--encryption-algorithm RSAES_OAEP_SHA_256 \
--output text \
--query Plaintext | base64 \
--decode > ExamplePlaintextFile
Эта команда не выводит ничего на экран. Вывод команды decrypt декодируется в base64 и сохраняется в файле.
Дополнительную информацию см. в разделе Асимметричные ключи в AWS KMS в Руководстве разработчика AWS Key Management Service.
Вывод
KeyId -> (строка)
Plaintext -> (двоичные данные)
Расшифрованные данные открытого текста. При использовании HTTP API или AWS CLI значение закодировано в base64. В противном случае оно не закодировано в base64.
Если ответ включает поле CiphertextForRecipient, поле Plaintext равно null или пустое.
EncryptionAlgorithm -> (строка)
CiphertextForRecipient -> (двоичные данные)
Данные открытого текста, зашифрованные открытым ключом в документе аутентификации.
Это поле включается в ответ только тогда, когда параметр Recipient в запросе содержит действительный документ аутентификации от виртуальной среды Amazon Web Services Nitro. Дополнительную информацию об взаимодействии KMS и виртуальных сред Amazon Web Services Nitro Enclaves см. в разделе Как виртуальные среды Amazon Web Services Nitro Enclaves используют KMS в Руководстве разработчика Key Management Service.
© Copyright 2025, Amazon Web Services. Created using Sphinx.