Assinatura digital
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
A primitiva de assinatura digital permite verificar se ninguém adulterou
seus dados. Ele garante a autenticidade e a integridade, mas não o sigilo, dos
dados assinados. Ela é assimétrica, ou seja, usa um par de chaves (chave pública e
chave privada).
A primitiva de assinatura digital tem as seguintes propriedades:
- Autenticidade: é impossível criar uma assinatura validada por
PublicKeyVerify.Verify(signature, message)
, a menos que você tenha a
chave privada.
- Assimetria: chaves diferentes são usadas nas etapas de criação e verificação da assinatura. Dessa maneira, você consegue distribuir a chave pública com o objetivo de verificar assinaturas para pessoas que não podem criar assinaturas por conta própria.
Se você não precisar de assimetria, use a primitiva MAC (link em inglês) mais simples e eficiente.
A funcionalidade das assinaturas digitais é representada no Tink como um par de
primitivas:
- PublicKeySign para assinar dados
- PublicKeyVerify para verificar a assinatura
Escolher um tipo de chave
Recomendamos o uso de ECDSA_P256 para a maioria dos casos de uso, mas há várias
opções. Em geral, o seguinte é verdadeiro:
- ECDSA_P256 é a opção mais usada e uma configuração padrão razoável. No entanto,
as assinaturas ECDSA são maleáveis.
- O ED25519 cria assinaturas determinísticas e oferece melhor desempenho
do que o ECDSA_P256.
- RSA_SSA_PKCS1_3072_SHA256_F4 cria assinaturas determinísticas e oferece
a melhor performance de verificação, mas a assinatura é muito mais lenta do que
ECDSA_P256 ou ED25519.
Garantias mínimas de segurança
- Os dados a serem assinados podem ter comprimento arbitrário
- Nível de segurança de 128 bits contra ataques adaptativos de mensagem escolhida para esquemas
com base em curva elíptica
- Nível de segurança de 112 bits contra ataques adaptativos de mensagem escolhida para esquemas baseados em RSA (permite chaves de 2048 bits)
Maleabilidade
Um esquema de assinatura é 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 presumem implicitamente que assinaturas válidas são
únicas, e isso pode levar a resultados inesperados.
Exemplo de caso de uso:
Consulte "Quero assinar dados digitalmente".
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-07-25 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-25 UTC."],[[["\u003cp\u003eDigital signatures ensure data integrity and authenticity by verifying that data hasn't been tampered with.\u003c/p\u003e\n"],["\u003cp\u003eThey use a pair of keys (public and private) for asymmetric signing and verification, allowing for secure distribution of the public key.\u003c/p\u003e\n"],["\u003cp\u003eTink provides two primitives for digital signatures: \u003ccode\u003ePublicKeySign\u003c/code\u003e for signing and \u003ccode\u003ePublicKeyVerify\u003c/code\u003e for verifying.\u003c/p\u003e\n"],["\u003cp\u003eECDSA_P256 is generally recommended, with ED25519 offering better performance and RSA_SSA_PKCS1_3072_SHA256_F4 providing the fastest verification.\u003c/p\u003e\n"],["\u003cp\u003eDigital signatures in Tink guarantee a minimum of 112-bit security and support data of any length.\u003c/p\u003e\n"]]],["Digital signatures ensure data authenticity and integrity using asymmetric key pairs (public and private). `PublicKeySign` signs data, while `PublicKeyVerify` checks signatures. Key options include the widely used ECDSA_P256, faster ED25519, and high-verification-performance RSA_SSA_PKCS1_3072_SHA256_F4. Signatures offer 128-bit security (elliptic curves) or 112-bit security (RSA). ECDSA signatures are malleable, allowing attackers to forge valid signatures. If asymmetry is not needed consider using MAC.\n"],null,[]]