Contexto de criptografia - AWS Key Management Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Contexto de criptografia

nota

Você não pode especificar um contexto de criptografia em uma operação criptográfica com uma chave assimétrica ou uma KMS chave. HMAC KMS Algoritmos e MAC algoritmos assimétricos não oferecem suporte a um contexto de criptografia.

Todas as operações AWS KMS criptográficas com KMSchaves de criptografia simétricas aceitam um contexto de criptografia, um conjunto opcional de pares de chave-valor não secretos que podem conter informações contextuais adicionais sobre os dados. Você pode inserir o contexto de criptografia nas Encrypt operações AWS KMS para aprimorar a autorização e a auditabilidade de suas chamadas de AWS KMS API descriptografia. AWS KMS usa o contexto de criptografia como dados autenticados adicionais (AAD) para oferecer suporte à criptografia autenticada. O contexto de criptografia é associado de maneira criptográfica ao texto cifrado, de modo que o mesmo contexto de criptografia é necessário para descriptografar os dados.

O contexto de criptografia não é secreto nem criptografado. Ele é exibido em texto simples em Logs do AWS CloudTrail, para você possa usá-lo para identificar e categorizar suas operações de criptografia. Seu contexto de criptografia não deve incluir informações confidenciais. Recomendamos que o seu contexto de criptografia descreva os dados que estão sendo criptografados ou descriptografados. Por exemplo, quando você criptografar um arquivo, poderá usar parte do caminho do arquivo como contexto de criptografia.

"encryptionContext": { "department": "10103.0" }

Por exemplo, ao criptografar volumes e snapshots criados com a CreateSnapshotoperação Amazon Elastic Block Store EBS (Amazon), a Amazon EBS usa o ID do volume como valor de contexto de criptografia.

"encryptionContext": { "aws:ebs:id": "vol-abcde12345abc1234" }

Você também pode usar o contexto de criptografia para refinar ou limitar o acesso à AWS KMS keys sua conta. Você pode usar o contexto de criptografia como uma restrição em concessões e como uma condição nas declarações de política.

Para saber como usar o contexto de criptografia para proteger a integridade dos dados criptografados, consulte a postagem Como proteger a integridade de seus dados criptografados usando AWS Key Management Service e EncryptionContext no blog AWS de segurança.

Mais informações sobre contexto de criptografia.

Regras de contexto de criptografia

AWS KMS impõe as seguintes regras para chaves e valores de contexto de criptografia.

  • A chave e o valor em um par de contexto de criptografia devem ser strings literais simples. Se você usar um tipo diferente, como um inteiro ou flutuante, o AWS KMS o interpretará como uma string.

  • As chaves e valores em um contexto de criptografia podem incluir caracteres Unicode. Se um contexto de criptografia incluir caracteres que não são permitidos em políticas ou IAM políticas de chave, você não poderá especificar o contexto de criptografia em chaves de condição de política, como kms:EncryptionContext:context-keykms:EncryptionContextKeyse. Para obter detalhes sobre as regras de documento de política de chaves, consulte Formato de política de chaves. Para obter detalhes sobre as regras do documento de IAM política, consulte os requisitos de IAM nome no Guia IAM do usuário.

Contexto de criptografia em políticas

O contexto de criptografia é usado principalmente para verificar a integridade e a autenticidade. Mas você também pode usar o contexto de criptografia para controlar o acesso à criptografia simétrica AWS KMS keys nas principais políticas e IAM políticas.

As chaves de EncryptionContextKeys condição kmsEncryptionContext:: e kms: permitem (ou negam) uma permissão somente quando a solicitação inclui chaves de contexto de criptografia específicas ou pares de valores-chave.

Por exemplo, a declaração de política principal a seguir permite que a RoleForExampleApp função use a KMS chave nas Decrypt operações. Ela usa a chave da condição kms:EncryptionContext:context-key para conceder essa permissão somente quando o contexto de criptografia na solicitação inclui um par de contexto de criptografia AppName:ExampleApp.

{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:AppName": "ExampleApp" } } }

Para obter mais informações sobre essas chaves de condição de contexto de criptografia, consulte Chaves de condição para AWS KMS.

Contexto de criptografia em concessões

Ao criar uma concessão, você pode incluir restrições de concessão que estabeleçam condições para as permissões de concessão. AWS KMS suporta duas restrições de concessão EncryptionContextEquals e EncryptionContextSubset ambas envolvem o contexto de criptografia em uma solicitação de uma operação criptográfica. Quando você usa essas restrições de concessão, as permissões na concessão são efetivas apenas quando o contexto de criptografia na solicitação para a operação criptográfica atende aos requisitos das restrições de concessão.

Por exemplo, você pode adicionar uma restrição de EncryptionContextEquals concessão a uma concessão que permita a GenerateDataKeyoperação. Com essa restrição, a concessão permite a operação apenas quando o contexto de criptografia na solicitação é uma correspondência com maiúsculas e minúsculas ao contexto de criptografia na restrição de concessão.

$ aws kms create-grant \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:user/exampleUser \ --retiring-principal arn:aws:iam::111122223333:role/adminRole \ --operations GenerateDataKey \ --constraints EncryptionContextEquals={Purpose=Test}

Uma solicitação como a seguinte da entidade principal receptora da concessão atenderia à restrição EncryptionContextEquals.

$ aws kms generate-data-key \ --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \ --key-spec AES_256 \ --encryption-context Purpose=Test

Para obter detalhes sobre as restrições de concessão, consulte Usar restrições de concessão. Para obter informações detalhadas sobre concessões, consulte Subsídios em AWS KMS.

Registrar em log o contexto de criptografia

AWS KMS usa AWS CloudTrail para registrar o contexto de criptografia para que você possa determinar quais KMS chaves e dados foram acessados. A entrada de registro mostra exatamente quais KMS chaves foram usadas para criptografar ou descriptografar dados específicos referenciados pelo contexto de criptografia na entrada de registro.

Importante

Como o contexto de criptografia é registrado em log, ele não deve conter informações confidenciais.

Armazenar o contexto de criptografia

Para simplificar o uso de qualquer contexto de criptografia quando você chama as operações Decrypt ou ReEncrypt, é possível armazenar o contexto de criptografia com os dados criptografados. Recomendamos que você armazene apenas o suficiente do contexto de criptografia para ajudar a criar o contexto de criptografia por completo quando você precisar dele para criptografia ou descriptografia.

Por exemplo, se o contexto de criptografia é o caminho para um arquivo, armazene apenas parte desse caminho com o conteúdo do arquivo criptografado. Quando você precisar do contexto de criptografia completo, reconstrua-o do fragmento armazenado. Se alguém tentar violar o arquivo, como renomear ou mover para um local diferente, o valor do contexto de criptografia será alterado e a solicitação de descriptografia falhará.