Modos de criptografia e exigência em trânsito

Usando a segurança da AWS para desenvolvedores

Rahul Singh

Technical Product Manager

Duas garantias, um padrão

Um aplicativo envia um objeto para um bucket Amazon S3. Um colchete verde chamado in transit cobre o salto de rede, e outro colchete verde chamado at rest cobre o objeto armazenado, acima de uma nota dizendo que SSE-S3 se aplica a menos que a solicitação diga o contrário.

  • At rest: os bytes em disco
  • In transit: os bytes na rede
Usando a segurança da AWS para desenvolvedores

Duas garantias, um padrão

Um aplicativo envia um objeto para um bucket Amazon S3. Um colchete verde chamado in transit cobre o salto de rede, e outro colchete verde chamado at rest cobre o objeto armazenado, acima de uma nota dizendo que SSE-S3 se aplica a menos que a solicitação diga o contrário.

  • At rest: os bytes em disco
  • In transit: os bytes na rede
  • Já feito: SSE-S3 em cada novo objeto
  • Ainda seu: qual modo e quem guarda a chave, você decide
Usando a segurança da AWS para desenvolvedores

Onde o plaintext termina

No servidor

  • A AWS recebe bytes legíveis
  • O S3 criptografa ao gravar

 

Um fluxo no lado do servidor. Seu processo mantém o plaintext, envia por uma conexão TLS, e o Amazon S3 criptografa na gravação. Uma barra abaixo acompanha os bytes, dividida por um traço no S3: antes dele, "seus bytes: legíveis aqui" em vermelho; depois, "ciphertext" em verde.

 

Usando a segurança da AWS para desenvolvedores

Onde o plaintext termina

No servidor

  • A AWS recebe bytes legíveis
  • O S3 criptografa ao gravar

No cliente

  • Você criptografa antes de sair
  • A AWS só armazena ciphertext

Um fluxo no lado do servidor. Seu processo mantém o plaintext, envia por uma conexão TLS, e o Amazon S3 criptografa na gravação. Uma barra abaixo acompanha os bytes, dividida por um traço no S3: antes dele, "seus bytes: legíveis aqui" em vermelho; depois, "ciphertext" em verde.

Um fluxo no lado do cliente. Seu processo criptografa primeiro, envia ciphertext por uma conexão TLS, e o Amazon S3 armazena o que recebeu. Uma barra abaixo acompanha os bytes, dividida por um traço dentro do seu processo: o trecho curto antes diz "seus bytes: legíveis aqui" em vermelho; o restante diz "ciphertext" em verde.

Usando a segurança da AWS para desenvolvedores

Quatro modos, uma diferença

Mesmo algoritmo, quatro donos de chave

  • O modo vai como um header no PUT
  • SSE-S3: chave da AWS, nada para gerenciar
  • SSE-KMS: sua chave, CloudTrail e uma key policy anexada à chave dizendo a quem ela responde

Quatro cartões empilhados nomeando SSE-S3, SSE-KMS, DSSE-KMS e SSE-C. Um trilho à esquerda vai do controle da AWS no topo ao seu controle embaixo, e cada cartão mostra apenas o valor do header que seleciona o modo.

Usando a segurança da AWS para desenvolvedores

Quatro modos, uma diferença

Mesmo algoritmo, quatro donos de chave

  • O modo vai como um header no PUT
  • SSE-S3: chave da AWS, nada para gerenciar
  • SSE-KMS: sua chave, CloudTrail e uma key policy anexada à chave dizendo a quem ela responde
  • DSSE-KMS: duas camadas independentes
  • SSE-C: sua chave a cada requisição, sua para perder

Quatro cartões empilhados nomeando SSE-S3, SSE-KMS, DSSE-KMS e SSE-C. Um trilho à esquerda vai do controle da AWS no topo ao seu controle embaixo, e cada cartão mostra apenas o valor do header que seleciona o modo.

Usando a segurança da AWS para desenvolvedores

A objeção de custo ao SSE-KMS

Duas linhas. Sem Bucket Keys, seis setas vão do Amazon S3 ao AWS KMS, uma por objeto. Com Bucket Keys, uma única seta sai de uma chave no nível do bucket dentro do S3. Uma nota abaixo diz que Bucket Keys não estão disponíveis com DSSE-KMS.

  • Sem: uma chamada KMS por objeto
  • Com Bucket Keys: uma chave de curta duração, reutilizada
  • Não disponível com DSSE-KMS
  • Até 99% menos solicitações ao KMS
Usando a segurança da AWS para desenvolvedores

Criptografe o campo, não a tabela

At rest já está ativado

  • Uma consulta retorna plaintext para quem tem leitura

Um item do DynamoDB com cinco atributos. Dois atributos têm ciphertext e trilhos azuis, enquanto a partition key, a sort key e o timestamp ficam em plaintext. Uma caixa verde abaixo diz que a tabela inteira é criptografada at rest.

Usando a segurança da AWS para desenvolvedores

Criptografe o campo, não a tabela

At rest já está ativado

  • Uma consulta retorna plaintext para quem tem leitura

AWS Database Encryption SDK

  • Criptografe atributos escolhidos no seu código
  • Partition e sort keys, usadas pelo DynamoDB para localizar itens, ficam em plaintext porque ele indexa nelas

Um item do DynamoDB com cinco atributos. Dois atributos têm ciphertext e trilhos azuis, enquanto a partition key, a sort key e o timestamp ficam em plaintext. Uma caixa verde abaixo diz que a tabela inteira é criptografada at rest.

Usando a segurança da AWS para desenvolvedores

TLS é oferecido, não exigido

Oferecido, não imposto

  • O S3 atende HTTP e HTTPS igualmente

Dois cenários. Sem condição no bucket, clientes HTTPS e HTTP alcançam o objeto. Com a negação, o caminho HTTP para em um X vermelho e não conecta.

Usando a segurança da AWS para desenvolvedores

TLS é oferecido, não exigido

Oferecido, não imposto

  • O S3 atende HTTP e HTTPS igualmente

Torne obrigatório

  • Política do bucket: negar quando aws:SecureTransport for false
  • Clientes legítimos não percebem nada

Dois cenários. Sem condição no bucket, clientes HTTPS e HTTP alcançam o objeto. Com a negação, o caminho HTTP para em um X vermelho e não conecta.

Usando a segurança da AWS para desenvolvedores

Qual autoridade atesta o nome

Nome público

  • ACM: confiável publicamente, grátis, renova sozinho

Nome que só sua rede resolve

  • AWS Private CA: sua própria autoridade certificadora
  • Nunca confiada na internet pública

Duas cartas empilhadas sobre quem pode emitir o certificado. A de cima, nome público, mostra reports ponto example ponto com como nome e ACM como emissor, confiado em todo lugar. A de baixo, nome interno, mostra admin ponto example ponto internal, resolvendo só dentro da sua VPC, e AWS Private CA como emissor.

Usando a segurança da AWS para desenvolvedores

A metade privada é sua — e pode se perder

Quem guarda

  • ACM: a AWS mantém
  • Par de chaves EC2, ou qualquer chave SSH: você guarda a metade privada, única

Duas cartas empilhadas sobre quem guarda qual metade. A de cima, metade pública, vive na AWS ou na instância. A de baixo, laranja, metade privada: você tem uma cópia sem reserva, guarde no Secrets Manager com um tique verde, e nunca em repositório, laptop ou chat, com um X laranja.

Usando a segurança da AWS para desenvolvedores

A metade privada é sua — e pode se perder

Quem guarda

  • ACM: a AWS mantém
  • Par de chaves EC2, ou qualquer chave SSH: você guarda a metade privada, única

Se for sua

  • Secrets Manager, não repositório
  • Troque periodicamente

Duas cartas empilhadas sobre quem guarda qual metade. A de cima, metade pública, vive na AWS ou na instância. A de baixo, laranja, metade privada: você tem uma cópia sem reserva, guarde no Secrets Manager com um tique verde, e nunca em repositório, laptop ou chat, com um X laranja.

Usando a segurança da AWS para desenvolvedores

Três respostas, não uma

Três cartões numerados para modo, controle da chave e trânsito, cada um mostrando o header ou a chave de condição que responde. Uma linha abaixo observa que só a terceira verificação fica fora das configurações de criptografia.

  1. Modo: o que escreveu o objeto
  2. Controle da chave: quem pode decriptar, nesta conta ou em outra
  3. Trânsito: obrigatório ou só oferecido
Usando a segurança da AWS para desenvolvedores

Vamos praticar!

Usando a segurança da AWS para desenvolvedores

Preparing Video For Download...