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.
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.
O signatário executa uma operação de chave privada sobre os dados para criar uma assinatura digital.
O signatário fornece os dados e a assinatura digital ao destinatário dos dados.
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.
Capacidade de criar uma chave assimétrica com finalidade da chave de
ASYMMETRIC_SIGN
. As chaves do Cloud KMS para assinatura assimétrica suportam algoritmos de assinatura de curva elíptica e algoritmos de assinatura RSA.Capacidade de criar uma assinatura digital.
Capacidade de obter a chave pública para uma chave assimétrica.
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.