Assinaturas digitais

Uma assinatura digital é um resultado criptográfico usado para validar a autenticidade dos dados. Um algoritmo de assinatura digital permite duas operações distintas:

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

  • Uma operação de validação, em que a assinatura pode ser validada por uma parte que não tem conhecimento da chave de assinatura

Os principais objetivos de uma assinatura digital são:

  • validação da integridade dos dados assinados
  • Não repúdio se o signatário alegar que a assinatura não é autêntica

As assinaturas digitais baseiam-se na criptografia assimétrica, também conhecida como criptografia de chave pública. Uma chave assimétrica consiste num par de chaves públicas/privadas. A chave privada é usada para criar uma assinatura, e a chave pública correspondente é usada para validar a assinatura.

Assinatura digital de criptografia pós-quântica (PQC)

Os computadores quânticos têm o potencial de desencriptar material encriptado por algoritmos de encriptação clássicos, como o RSA e o ECDSA amplamente usados, o que pode tornar esse material encriptado vulnerável. Os algoritmos criptográficos pós-quânticos são concebidos para usar hardware e software clássicos para resistir a ataques quânticos, o que ajuda a garantir a validade contínua das assinaturas digitais. As assinaturas PQC baseiam-se em diferentes problemas matemáticos que são difíceis de resolver para computadores clássicos e quânticos.

O NIST publicou duas normas de assinatura PQC: ML-DSA (FIPS-204) e SLH-DSA (FIPS-205). Pode usar as variantes aleatorizadas puras com o Cloud KMS: ML-DSA-65 e SLH-DSA-SHA2-128s, ou a variante aleatorizada pré-hash HASH-SLH-DSA-SHA2-128s-SHA256. As normas do NIST definem os seguintes valores de tamanho para chaves e assinaturas (em bytes):

Algoritmo Chave privada Chave pública Assinatura
ML_DSA_65 4032 1952 3309
SLH_DSA_SHA2_128s 64 32 7856
HASH_SLH_DSA_SHA2_128s_SHA256 64 32 7856

Exemplos de utilização de uma assinatura digital

Pode validar compilações através de assinaturas digitais. Por exemplo, dado um ficheiro binário assinado digitalmente por uma chave privada, pode verificar a respetiva validade através da chave pública correspondente à chave privada. Se a assinatura do ficheiro binário não for válida, significa que o ficheiro binário foi adulterado e/ou está danificado.

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

Fluxo de trabalho de assinatura digital

A descrição seguinte descreve o fluxo de criação e validação de uma assinatura. Os dois participantes neste fluxo de trabalho são o signatário dos dados e o destinatário dos dados.

  1. O signatário cria uma chave assimétrica que suporta a assinatura digital.

    O signatário pode usar esta chave para criar várias assinaturas.

  2. O signatário executa uma operação de chave privada sobre os dados para criar uma assinatura digital.

  3. O signatário fornece os dados e a assinatura digital ao destinatário dos dados.

  4. O destinatário usa a parte da chave pública do par de chaves públicas/privadas do signatário para validar a assinatura digital. Se a validação não for bem-sucedida, significa que os dados foram alterados.

Algoritmos de assinatura

O Cloud Key Management Service suporta algoritmos de curva elíptica (EC) e RSA para a assinatura digital. Ambos os algoritmos padrão da indústria oferecem opções de tamanho da chave e algoritmo de hash.

A criptografia de curva elíptica baseia-se em funções de hash unidirecionais e na multiplicação de pontos para calcular pontos numa curva elíptica, combinada com a dificuldade de determinar o multiplicando de um ponto dada a sua origem. Esta dificuldade em determinar o multiplicando é a vantagem criptográfica da criptografia EC. Quanto maior for o tamanho da curva, mais difícil é calcular o multiplicando. Uma vantagem da criptografia EC é que uma chave EC tem um tamanho de chave menor em comparação com uma chave RSA que oferece a mesma força criptográfica.

A criptografia RSA baseia-se na dificuldade de fatorizar um número inteiro grande em dois ou mais fatores. Quanto maior for o tamanho da chave, mais difícil é fatorizar os números inteiros.

Funcionalidade de assinatura digital do Cloud KMS

O Cloud KMS oferece a seguinte funcionalidade relacionada com a criação e a validação de assinaturas digitais.

O Cloud KMS não oferece diretamente a capacidade de validar uma assinatura digital. Em alternativa, valide uma assinatura digital através de SDKs e ferramentas disponíveis abertamente, como o OpenSSL. Estes SDKs e ferramentas requerem a chave pública que obtém do Cloud KMS. Para informações sobre como usar SDKs e ferramentas abertos, consulte a secção sobre validar uma assinatura de curva elíptica e validar uma assinatura RSA.