Criptografia de envelope
Operações criptográficas são apenas API. Criptografar, descriptografar, gerar chave de dados, assinar e verificar não têm controles de console. O console cria chaves, as inspeciona e as desliga; as operações que usam uma chave são executadas a partir de sua aplicação, ao lado do texto sem formatação no qual elas atuam.
POST /v1/keys/{key_id}/encrypt envia seu texto simples para o KMS e recebe o texto cifrado de volta. Isso é bom para algo pequeno e raro — um valor de configuração, um token de API. É a forma errada para qualquer outra coisa, porque cada byte atravessa a rede duas vezes e cada operação custa uma viagem de ida e volta.
A alternativa é uma chave de dados: o KMS cria uma chave aleatória nova, entrega duas cópias dela e nunca a armazena.
- API
- CLI
- Go
plaintext, então joga plaintext fora e armazena ciphertext ao lado dos dados que ele protege. Para ler os dados de volta, envie ciphertext para POST /v1/keys/{key_id}/decrypt e você terá a chave de dados novamente.
Seus dados em massa nunca saem do processo, uma chamada KMS cobre um lote inteiro e a chave KMS permanece uma chave de criptografia de chave — a única coisa que ela envolve são outras chaves.
number_of_bytes aceita 16, 32 ou 64 e nada mais — 16 para AES-128, 32 para AES-256 (o padrão), 64 para HMAC-SHA512. Qualquer outro valor falha.
Quando a criptografia direta se esgota
Uma chave simétrica não tem um limite algorítmico comparável, mas o corpo da solicitação ainda tem que caber em uma chamada HTTP e você ainda paga uma viagem de ida e volta por operação. Trate a criptografia direta como uma conveniência para valores pequenos e infrequentes, e procure uma chave de dados para tudo o mais.Contexto de criptografia
aad é opcional, dados autenticados adicionais. Ele está ligado à tag AES-GCM, então um texto cifrado só será aberto se o mesmo contexto for apresentado novamente - útil para fixar um blob à coisa a que pertence, então um texto cifrado roubado não pode ser reproduzido contra um registro diferente.

