Assinatura digital

Com uma assinatura digital, você garante que ninguém vai adulterar seus dados. Ele fornece autenticidade e integridade dos dados assinados, mas não o sigilo deles. Ela é assimétrica, ou seja, usa um par de chaves pública e privada.

As assinaturas têm as seguintes propriedades:

  • Autenticidade: é impossível criar uma assinatura validada por PublicKeyVerify.Verify(signature, message), a menos que você tenha a chave privada.
  • Assimetria: a criação da assinatura usa uma chave diferente da verificação. Isso permite que você distribua a chave pública e verifique assinaturas para pessoas que não podem criar assinaturas por conta própria.

Se você não precisar de assimetria, use o MAC mais simples e eficiente.

A funcionalidade das assinaturas digitais é representada no Tink como um par de primitivos:

  • PublicKeySign para assinar dados
  • PublicKeyVerify para verificar a assinatura.

Escolha um tipo de chave

Recomendamos o uso de ECDSA_P256 na maioria dos casos de uso, mas há várias opções. De modo geral, acontece o seguinte:

  • ECDSA_P256 é a opção mais usada e um padrão razoável. As assinaturas ECDSA são malfáveis.
  • A ED25519 cria assinaturas determinísticas e oferece um desempenho melhor do que a ECDSA_P256.
  • RSA_SSA_PKCS1_3072_SHA256_F4 cria assinaturas determinísticas e oferece o melhor desempenho de verificação (mas a assinatura é muito mais lenta do que ECDSA_P256 ou ED25519).

Garantias de segurança mínimas

  • Os dados a serem assinados podem ter tamanho arbitrário
  • Nível de segurança de 128 bits contra ataques adaptáveis de mensagens escolhidas para esquemas baseados em curva elíptica.
  • Nível de segurança de 112 bits contra ataques de mensagens escolhidas para esquemas baseados em RSA (permite chaves de 2.048 bits)

Exemplo de caso de uso

Consulte Quero assinar dados digitalmente.

maleabilidade

Um esquema de assinatura será maleável, se um invasor puder criar uma assinatura válida diferente para uma mensagem já assinada. Embora isso não seja um problema para a maioria dos cenários, em alguns casos, os programadores supõem implicitamente que as assinaturas válidas são exclusivas, o que pode levar a resultados inesperados.