Assinaturas digitais

Uma assinatura digital é uma saída criptográfica usada para verificar a autenticidade dos dados. Um algoritmo de assinatura digital permite duas operações distintas:

  • Uma operação de assinatura, que usa uma chave para produzir uma assinatura sobre dados brutos.

  • Uma operação de verificação, em que a assinatura pode ser validada por um grupo que não tem conhecimento da chave de assinatura.

Os principais objetivos de uma assinatura digital são os seguintes:

  • Verificação da integridade dos dados assinados.
  • Não repúdio se o assinante alegar que a assinatura não é autêntica.

Assinaturas digitais contam com criptografia assimétrica, também conhecida como criptografia de chave pública. Uma chave assimétrica consiste em um par de chaves pública/privada. A chave privada é usada para criar uma assinatura, e a chave pública correspondente é usada para verificar a assinatura.

Exemplo de casos de uso para uma assinatura digital

Você pode validar versões usando assinaturas digitais. Por exemplo, um binário que é assinado digitalmente por uma chave privada pode ter a validade verificada por meio da chave pública correspondente à chave privada. Se a assinatura do binário não for válida, o binário foi adulterado e/ou corrompido.

Outro exemplo é validar o assunto de um certificado emitido por uma autoridade de certificação (CA, na sigla em inglês). Uma CA emite um certificado para um assunto com base na propriedade do assunto da parte da chave privada de uma chave pública/privada. O certificado contém uma assinatura digital criada com a chave privada do assunto. O certificado também contém a parte da chave pública do assunto da chave pública/privada. Uma entidade que está interagindo com o assunto usa a chave pública dele e regras adicionais de verificação de certificado para validar a assinatura. Se a assinatura não corresponder aos dados em questão, ou se as regras de verificação prescritas pelo certificado forem violadas, a assinatura será considerada inválida.

Fluxo de trabalho da assinatura digital

A seguir, descrevemos o fluxo para criar e validar uma assinatura. Os dois participantes neste fluxo de trabalho são o assinante e o destinatário de dados.

  1. O assinante cria uma chave assimétrica compatível com assinatura digital.

    O assinante pode usar essa chave para criar várias assinaturas.

  2. O assinante desempenha uma operação de chave privada sobre os dados para criar uma assinatura digital.

  3. O assinante fornece os dados e a assinatura digital ao destinatário de dados.

  4. O destinatário usa a parte da chave pública do par de chaves pública/privada do assinante para verificar a assinatura digital. Se a verificação não foi bem-sucedida, os dados foram alterados.

Algoritmos de assinatura

O Cloud Key Management Service é compatível com algoritmos de curva elíptica (EC, na sigla em inglês) e RSA para assinatura digital. Ambos os algoritmos padrão do setor oferecem opções de algoritmo de resumo e tamanho de chave.

A elliptic curve cryptography baseia-se em funções de hash unidirecionais e multiplicação de pontos para calcular pontos em uma curva elíptica, combinada com a intratabilidade de determinar o multiplicando por um ponto, dada a origem. Essa dificuldade em determinar o multiplicando é o benefício criptográfico da criptografia EC. Quanto maior o tamanho da curva, mais difícil é calculá-lo. Um benefício da criptografia EC é que uma chave EC tem um tamanho de chave menor em comparação a uma chave RSA que oferece a mesma força criptográfica.

A criptografia RSA depende da dificuldade em fatorar um grande número inteiro em dois ou mais fatores. Quanto maior o tamanho da chave, mais difícil é fatorar os números inteiros.

Funcionalidade da assinatura digital do Cloud KMS

O Cloud KMS oferece as seguintes funcionalidades relacionadas à criação e validação de assinaturas digitais.

O Cloud KMS não fornece diretamente a capacidade de validar uma assinatura digital. Em vez disso, valide uma assinatura digital usando SDKs e ferramentas disponíveis publicamente, como o OpenSSL. Esses SDKs e ferramentas exigem a chave pública recuperada do Cloud KMS. Para informações sobre como usar SDKs e ferramentas abertas, consulte como validar uma assinatura de curva elíptica e como validar uma assinatura RSA.