Como o SDK de criptografia da AWS funciona - SDK de criptografia da AWS

Se fornecermos uma tradução da versão em inglês do guia, a versão em inglês prevalecerá caso haja qualquer conflito entre as versões. A tradução é fornecida com o uso de tradução por máquina.

Como o SDK de criptografia da AWS funciona

O SDK de criptografia da AWS usa a criptografia de envelope para proteger os dados e as chaves de dados correspondentes.

Criptografia de chave simétrica

Para criptografar dados, o SDK de criptografia da AWS envia uma chave de criptografia conhecida como chave de dados e os dados de texto simples fornecidos por você a um algoritmo de criptografia. O algoritmo de criptografia usa essas entradas para criptografar os dados. Depois, o SDK de criptografia da AWSretorna uma mensagem criptografada que inclui os dados criptografados, uma cópia criptografada da chave de dados e o contexto de criptografia, se você usou um.

Para descriptografar a mensagem, o SDK de criptografia da AWS envia a chave de dados e a mensagem criptografada retornados pelo SDK a um algoritmo de descriptografia. O algoritmo de descriptografia usa essas entradas para retornar os dados em texto simples.

Como a mesma chave de dados é usada para criptografar e descriptografar os dados, as operações são conhecidas como criptografia e descriptografia de chave simétrica. A figura a seguir mostra a criptografia e a descriptografia de chave simétrica no SDK de criptografia da AWS.


        Criptografia e descriptografia de chave simétrica

Criptografia de envelope

A segurança dos dados criptografados depende em parte da proteção da chave de dados que pode descriptografá-los. Uma prática recomendada aceita para proteger a chave de dados é criptografá-la. Para fazer isso, você precisa de outra chave de criptografia, conhecida como uma chave mestra. Essa prática de uso de uma chave mestra para criptografar chaves de dados é conhecida como criptografia de envelope. Alguns dos benefícios da criptografia de envelope incluem o seguinte.

Proteção de chaves de dados

Quando criptografa uma chave de dados, você não precisa se preocupar com o local de armazenamento da chave de dados pois a chave de dados é inerentemente protegida pela criptografia. A chave de dados criptografada pode ser armazenada com segurança junto com os dados criptografados. O SDK de criptografia da AWS faz isso para você. Ele salva os dados criptografados e a chave de dados criptografada juntos em uma mensagem criptografada.

Criptografar os mesmos dados sob várias chaves mestras

As operações de criptografia podem ser demoradas, especialmente quando os dados que estão sendo criptografados são objetos grandes. Em vez de recriptografar dados brutos várias vezes com diferentes chaves, recriptografe somente as chaves de dados que protegem os dados brutos.

Combinação de pontos fortes de vários algoritmos

Em geral, os algoritmos de criptografia de chaves simétricas são mais rápidos e produzem textos cifrados menores que a criptografia de chave pública ou assimétrica. No entanto, os algoritmos de chave pública fornecem separação inerente de funções e gerenciamento de chaves mais fácil. Você pode combinar os pontos fortes de cada um. Por exemplo, você pode criptografar dados brutos com criptografia de chave simétrica e, em seguida, criptografar a chave de dados com criptografia de chave pública.

O SDK de criptografia da AWS usa a criptografia de envelope. Ele criptografa os dados com uma chave de dados. Depois, criptografa a chave de dados com uma chave mestra. O SDK de criptografia da AWS retorna os dados criptografados e as chaves de dados criptografadas em uma única mensagem criptografada, conforme mostrado no diagrama a seguir.


        Encriptação de envelope com o SDK de criptografia da AWS

Se você tiver várias chaves mestras ou chaves de empacotamento, cada uma delas poderá criptografar a chave de dados de texto simples. Em seguida, o SDK de criptografia da AWS retorna uma mensagem criptografada que contém os dados criptografados e a coleção de chaves de dados criptografadas. Qualquer uma das chaves mestras pode descriptografar uma das chaves de dados criptografadas que depois pode descriptografar os dados.

Quando você usa a criptografia de envelope, você deve proteger suas chaves mestras contra acesso não autorizado. Você pode fazer isso por meio de uma das seguintes maneiras:

Se você não tiver um sistema de gerenciamento de chaves, recomendamos o AWS KMS. O SDK de criptografia da AWS se integra com o AWS KMS para ajudar a proteger e usar suas chaves mestras. Você também pode usar o SDK de criptografia da AWS com outros tokens de autenticação e provedores de chaves mestras, incluindo os personalizados que você define. Mesmo que não use a AWS, você ainda pode usar o SDK de criptografia da AWS.

Fluxos de trabalho de criptografia do SDK de criptografia da AWS

Os fluxos de trabalho desta seção explicam como o SDK criptografa os dados e descriptografa mensagens criptografadas. Eles mostram como o SDK usa os componentes que você cria, incluindo um provedor de chaves mestras e uma chave mestra (Java e Python) ou um token de autenticação (C ou JavaScript) para responder a solicitações de criptografia e descriptografia de seu aplicativo.

Como o SDK criptografa dados

O SDK fornece métodos que criptografam strings, matrizes de bytes e fluxos de bytes. Para obter exemplos de código que criptografam e descriptografam strings e streams de bytes em cada umas das linguagens de programação compatíveis, consulte os exemplos na seção Linguagens de programação.

  1. Seu aplicativo passa dados de texto não criptografado para um dos métodos de criptografia. Também recomendamos transmitir um contexto de criptografia opcional, não secreto.

  2. O método de criptografia solicita ao gerenciador de materiais criptográficos (CMM) materiais de criptografia.

    O CMM é um componente que monta as chaves de dados, chaves de assinatura e outros materiais de criptografia. O SDK de criptografia da AWS fornece um CMM padrão e um CMM que gerencia o armazenamento em cache de chaves de dados. Você também pode criar CMMs personalizados para seus aplicativos. Normalmente, você não cria um CMM padrão explicitamente. Quando você especifica um provedor de chaves mestras ou token de autenticação, o SDK de criptografia da AWS cria um CMM padrão para você.

  3. O CMM solicita o material de criptografia do provedor de chaves mestras ou do token de autenticação. A resposta inclui uma chave de dados de texto simples e a mesma chave de dados criptografada sob as chaves mestras. O CMM retorna esses materiais de criptografia ao método de criptografia.

  4. O método de criptografia usa a chave de dados de texto não criptografado para criptografar os dados e, em seguida, descarta a chave de dados de texto não criptografado. Se você forneceu um contexto de criptografia, o método de criptografia também vinculará de forma criptográfica o contexto de criptografia aos dados criptografados.

  5. O método de criptografia retorna uma mensagem criptografada que contém os dados criptografados, a chave de dados criptografada e outros metadados, incluindo o contexto de criptografia, se foi usado.

Como o SDK descriptografa e criptografa uma mensagem

O SDK fornece métodos que descriptografam a mensagem criptografada e retorna strings em texto simples, matrizes de bytes ou fluxos de bytes. Para obter exemplos de código em cada uma das linguagens de programação compatíveis, consulte os exemplos na seção Linguagens de programação.

Você deve usar o mesmo provedor de chaves mestras e o token de autenticação para descriptografar o que você usou para criptografar ou um compatível.

  1. O aplicativo passa uma mensagem criptografada para um método de descriptografia.

    Para indicar a origem das chaves de dados que foram usadas para criptografar os dados, sua solicitação especifica um gerenciador de materiais criptográficos (CMM) ou um provedor de chaves mestras. Se você especificar um provedor de chaves mestras ou um token de autenticação, o SDK de criptografia da AWS criará um CMM padrão para você.

  2. O método de descriptografia solicita o CMM para materiais criptográficas descriptografarem a mensagem criptografada. Ele passa informações da mensagem criptografada, incluindo as chaves de dados criptografadas.

  3. Em Java e Python, para obter o material de descriptografia, o CMM padrão solicita a seu provedor de chaves mestras uma chave mestra que pode descriptografar uma das chaves de dados criptografadas. Outros CMMs podem usar diferentes materiais técnicos para obter a descriptografia. Em C e JavaScript, o CMM solicita o material de descriptografia ao token de autenticação. O token de autenticação usa suas chaves de empacotamento para descriptografar uma das chaves de dados criptografadas.

    A resposta inclui os materiais de descriptografia, incluindo a chave de dados em texto simples.

  4. O método de descriptografia usa a chave de dados de texto não criptografado para descriptografar os dados e descarta a chave de dados de texto não criptografado.

  5. O método de descriptografia retorna os dados de texto não criptografado.