Signature numérique

Une signature numérique vous permet de vérifier que personne ne falsifie vos données. Elle garantit l'authenticité et l'intégrité des données signées, mais pas leur confidentialité. Elle est asymétrique, ce qui signifie qu'elle utilise une paire de clés (clé publique et clé privée).

Les signatures possèdent les propriétés suivantes:

  • Authenticité: à moins de disposer de la clé privée, il est impossible de créer une signature pour laquelle PublicKeyVerify.Verify(signature, message) est validé.
  • Asymétrie: la création de la signature utilise une clé différente de celle utilisée pour la validation. Cela vous permet de distribuer la clé publique pour valider les signatures aux tiers qui ne peuvent pas créer de signatures eux-mêmes.

Si vous n'avez pas besoin d'asymétrie, envisagez plutôt d'utiliser le MAC plus simple et plus efficace.

La fonctionnalité des signatures numériques est représentée dans Tink par une paire de primitives:

  • PublicKeySign pour la signature des données.
  • PublicKeyVerify pour valider la signature.

Choisir un type de clé

Nous vous recommandons d'utiliser ECDSA_P256 dans la plupart des cas d'utilisation, mais il existe différentes options. En règle générale, les affirmations suivantes sont vraies:

  • ECDSA_P256 est l'option la plus utilisée. C'est une valeur par défaut raisonnable. Notez toutefois que les signatures ECDSA sont malléables.
  • ED25519 crée des signatures déterministes et offre de meilleures performances qu'ECDSA_P256.
  • RSA_SSA_PKCS1_3072_SHA256_F4 crée des signatures déterministes et offre des performances de vérification optimales (mais la signature est beaucoup plus lente que ECDSA_P256 ou ED25519).

Garanties de sécurité minimales

  • Les données à signer peuvent avoir une longueur arbitraire
  • Niveau de sécurité 128 bits contre les attaques adaptatives par message choisi pour les schémas basés sur les courbes elliptiques
  • Niveau de sécurité 112 bits contre les attaques adaptatives par message choisi pour les schémas basés sur RSA (clés de 2 048 bits sont autorisées)

Exemple d'utilisation

Consultez Je souhaite signer numériquement des données.

Malléabilité

Un schéma de signature est malléable si un pirate informatique peut créer une signature valide différente pour un message déjà signé. Bien que cela ne pose pas de problème dans la plupart des scénarios, dans certains cas, les programmeurs supposent implicitement que les signatures valides sont uniques, ce qui peut entraîner des résultats inattendus.