derive-shared-secret
Описание
Вычисляет общий секрет, используя алгоритм согласования ключей.
Примечание
Необходимо использовать асимметричную пару ключей KMS, основанную на эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая) сKeyUsage значением KEY_AGREEMENT, чтобы вызвать DeriveSharedSecret.DeriveSharedSecret использует примитив Кофакторного Диффи-Хеллмана с использованием эллиптических кривых (ECDH) для установления согласования ключей между двумя сторонами, вычисляя общий секрет на основе их пар открытого и закрытого ключей эллиптических кривых. Вы можете использовать полученный DeriveSharedSecret сырой общий секрет для вычисления симметричного ключа, который может шифровать и расшифровывать данные, передаваемые между двумя сторонами, или генерировать и проверять HMAC. KMS рекомендует следовать рекомендациям NIST по производству ключей при использовании сырого общего секрета для вычисления симметричного ключа.
Следующий рабочий процесс демонстрирует установление согласования ключей по небезопасному каналу связи с помощью DeriveSharedSecret.
-
Алиса вызывает CreateKey для создания асимметричной пары ключей KMS с
KeyUsageзначениемKEY_AGREEMENT. Асимметричные ключи KMS должны использовать спектр ключей эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая). - Боб создаёт пару ключей эллиптических кривых. Боб может вызвать CreateKey для создания асимметричной пары ключей KMS или сгенерировать пару ключей вне KMS. Пара ключей Боба должна использовать ту же кривую эллиптических кривых (ECC) или SM2 (только для регионов Китая), что и у Алисы.
- Алиса и Боб обмениваются своими открытыми ключами по небезопасному каналу связи (например, по интернету). Используйте GetPublicKey для скачивания открытого ключа вашей асимметричной пары ключей KMS.
Примечание
KMS настоятельно рекомендует проверить, что полученный вами открытый ключ действительно принадлежит ожидаемой стороне, прежде чем использовать его для вычисления общего секрета.- Алиса вызывает DeriveSharedSecret. KMS использует закрытый ключ из пары ключей KMS, созданной на Шаге 1, открытый ключ Боба и примитив Кофакторного Диффи-Хеллмана с использованием эллиптических кривых для вычисления общего секрета. Закрытый ключ из вашей пары ключей KMS никогда не покидает KMS нешифрованным. DeriveSharedSecret возвращает сырой общий секрет.
- Боб использует примитив Кофакторного Диффи-Хеллмана с использованием эллиптических кривых для вычисления того же самого сырого секрета, используя свой закрытый ключ и открытый ключ Алисы.
Для вычисления общего секрета необходимо указать алгоритм согласования ключей, закрытый ключ асимметричной пары ключей KMS, основанной на эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая) вызывающего, и открытый ключ пары ключей вашего партнёра, основанной на эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая). Открытый ключ может быть из другой асимметричной пары ключей KMS или из пары ключей, сгенерированной вне KMS, но обе пары ключей должны быть на одной и той же эллиптической кривой.
Ключ KMS, используемый для этой операции, должен находиться в совместимом состоянии. Подробнее см. Состояния ключей KMS-ключей в «Руководстве разработчика службы управления ключами».
Использование между аккаунтами : Да. Чтобы выполнить эту операцию с ключом KMS в другом аккаунте Amazon Web Services, укажите ARN ключа или ARN псевдонима в значении параметра KeyId.
Требуемые разрешения : kms:DeriveSharedSecret (политика ключа)
Связанные операции:
- CreateKey
- GetPublicKey
- DescribeKey
См. также: Документация API AWS
Синтаксис
derive-shared-secret
--key-id <value>
--key-agreement-algorithm <value>
--public-key <value>
[--grant-tokens <value>]
[--dry-run | --no-dry-run]
[--recipient <value>]
[--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]
Параметры
--key-id (строка)
Идентифицирует асимметричный ключ KMS, основанный на эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая). KMS использует закрытый ключ в указанной паре ключей для вычисления общего секрета. Использование ключа KMS должно быть KEY_AGREEMENT . Чтобы найти KeyUsage ключа KMS, используйте операцию DescribeKey.
Для указания ключа 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 .
--key-agreement-algorithm (строка)
Указывает алгоритм согласования ключей, используемый для вычисления общего секрета. Единственное допустимое значение — ECDH .
Возможные значения:
ECDH
--public-key (байтовый массив)
Указывает открытый ключ в паре ключей вашего партнёра, основанной на эллиптических кривых, рекомендуемых NIST, или SM2 (только для регионов Китая).
Открытый ключ должен быть закодирован в DER-формате X.509, также известным как SubjectPublicKeyInfo (SPKI), как определено в RFC 5280 .
Примечание
Если вы используете Amazon Web Services CLI версии 1, вы должны предоставить открытый ключ X.509 в DER-формате в файле. В противном случае Amazon Web Services CLI повторно закодирует открытый ключ в Base64, что приведёт кValidationException .Вы можете указать открытый ключ как двоичные данные в файле с помощью fileb (fileb://<path-to-file> ) или в строке с помощью Base64 кодированной строки.
--grant-tokens (список)
Список маркеров разрешений.
Используйте маркер разрешения, когда ваше разрешение на вызов этой операции получено из нового разрешения, которое ещё не достигло постепенной согласованности . Подробнее см. Маркер разрешения и Использование маркера разрешения в «Руководстве разработчика службы управления ключами».
(строка)
Синтаксис:
"string" "string" ...
--dry-run | --no-dry-run (булево)
Проверяет, будет ли ваш запрос успешным. DryRun — необязательный параметр.
Чтобы узнать больше о том, как использовать этот параметр, см. Тестирование ваших вызовов API KMS в «Руководстве разработчика службы управления ключами».
--recipient (структура)
Подписанный документ аттестации от Amazon Web Services Nitro enclave и алгоритм шифрования, используемый с открытым ключом enclave. Единственный допустимый алгоритм шифрования — RSAES_OAEP_SHA_256 .
Этот параметр поддерживает только документы аттестации для Amazon Web Services Nitro Enclaves. Для вызова DeriveSharedSecret для Amazon Web Services Nitro Enclaves используйте Amazon Web Services Nitro Enclaves SDK для генерации документа аттестации, а затем используйте параметр Recipient из любого Amazon Web Services SDK для предоставления документа аттестации для enclave.
При использовании этого параметра KMS вместо возврата текстовой копии общего секрета шифрует текстовый общий секрет с помощью открытого ключа в документе аттестации и возвращает полученный зашифрованный текст в поле CiphertextForRecipient в ответе. Этот зашифрованный текст может быть расшифрован только с помощью закрытого ключа в enclave. Поле CiphertextBlob в ответе содержит зашифрованный общий секрет, полученный из ключа KMS, указанного параметром KeyId, и открытого ключа, указанного параметром PublicKey. Поле SharedSecret в ответе равно null или пустое.
Дополнительную информацию об взаимодействии KMS и Amazon Web Services Nitro Enclaves см. в разделе Как Amazon Web Services Nitro Enclaves использует KMS в «Руководстве разработчика службы управления ключами».
KeyEncryptionAlgorithm -> (строка)
RSAES_OAEP_SHA_256 .AttestationDocument -> (байтовый массив)
Сокращенный синтаксис:
KeyEncryptionAlgorithm=string,AttestationDocument=blob
JSON-синтаксис:
{
"KeyEncryptionAlgorithm": "RSAES_OAEP_SHA_256",
"AttestationDocument": blob
}
--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 V1, и двоичные значения должны быть переданы буквально. При предоставлении содержимого из файла, которое соответствует двоичному блоку fileb:// всегда будет обрабатываться как двоичный и будет использовать содержимое файла напрямую независимо от настроек cli-binary-format. При использовании file:// содержимое файла должно быть должным образом отформатировано для настроенного cli-binary-format.
- base64
- raw-in-base64-out
--no-cli-pager (boolean)
Отключить вывод с помощью пайпера.
--cli-auto-prompt (boolean)
Автоматически запросить параметры ввода CLI.
--no-cli-auto-prompt (boolean)
Отключить автоматическое запросы параметров ввода CLI.
Примеры
Примечание
Для использования следующих примеров необходимо установить и настроить AWS CLI. Дополнительную информацию можно найти в руководстве по началу работы в Руководстве пользователя AWS CLI.
Если не указано иное, все примеры используют правила цитирования в стиле Unix. Эти примеры необходимо адаптировать к правилам цитирования вашей оболочки. См. Использование кавычек со строками в Руководстве пользователя AWS CLI.
Для получения общего секрета
Следующий derive-shared-secret пример получает общий секрет с использованием алгоритма согласования ключей.
Для вызова DeriveSharedSecret необходимо использовать асимметричную пару ключей KMS, рекомендованную NIST (эллиптическая кривая ECC) или SM2 (только регионы Китая) с KeyUsage значением KEY_AGREEMENT.
aws kms derive-shared-secret \
--key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
--key-agreement-algorithm ECDH \
--public-key "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvH3Yj0wbkLEpUl95Cv1cJVjsVNSjwGq3tCLnzXfhVwVvmzGN8pYj3U8nKwgouaHbBWNJYjP5VutbbkKS4Kv4GojwZBJyHN17kmxo8yTjRmjR15SKIQ8cqRA2uaERMLnpztIXdZp232PQPbWGxDyXYJ0aJ5EFSag"
Вывод:
{
"KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
"SharedSecret": "MEYCIQCKZLWyTk5runarx6XiAkU9gv3lbwPO/pHa+DXFehzdDwIhANwpsIV2g/9SPWLLsF6p/hiSskuIXMTRwqrMdVKWTMHG",
"KeyAgreementAlgorithm": "ECDH",
"KeyOrigin": "AWS_KMS"
}
Дополнительную информацию см. в разделе DeriveSharedSecret в Справочнике по API AWS Key Management Service.
Вывод
KeyId -> (строка)
SharedSecret -> (двоичные данные)
Необработанный секрет, полученный с помощью указанного алгоритма согласования ключей, закрытого ключа в асимметричном KMS-ключе и открытого ключа вашего партнера.
Если ответ включает поле CiphertextForRecipient, поле SharedSecret равно null или пусто.
CiphertextForRecipient -> (двоичные данные)
Зашифрованный открытым ключом в документе аутентификации открытый секрет.
Это поле включается в ответ только тогда, когда параметр Recipient в запросе включает действительный документ аутентификации из Amazon Web Services Nitro enclave. Дополнительную информацию о взаимодействии KMS и Amazon Web Services Nitro Enclaves см. в разделе Как Amazon Web Services Nitro Enclaves использует KMS в Руководстве разработчика Key Management Service.
KeyAgreementAlgorithm -> (строка)
KeyOrigin -> (строка)
Источник исходных данных ключа для указанного KMS-ключа.
Когда это значение равно AWS_KMS, KMS создал исходные данные ключа. Когда это значение равно EXTERNAL, исходные данные ключа были импортированы или у KMS-ключа нет исходных данных ключа.
Единственные допустимые значения для DeriveSharedSecret - AWS_KMS и EXTERNAL. DeriveSharedSecret не поддерживает KMS-ключи со значением KeyOrigin равным AWS_CLOUDHSM или EXTERNAL_KEY_STORE.
© Copyright 2025, Amazon Web Services. Created using Sphinx.