Signature numérique

La primitive de signature numérique vous permet de vérifier que personne n'a falsifié 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).

La primitive de signature numérique présente 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) renvoie une validation.
  • Asymétrie: la création de la signature repose sur une clé différente de celle utilisée pour la validation. Cela vous permet, pour valider les signatures, de distribuer la clé publique aux tiers qui ne peuvent pas créer de signatures eux-mêmes.

Si vous n'avez pas besoin d'asymétrie, envisagez d'utiliser la primitive MAC plus simple et plus efficace à la place.

La fonctionnalité des signatures numériques est représentée dans Tink sous la forme d'une paire de primitives:

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

Choisir un type de clé

Nous vous recommandons d'utiliser ECDSA_P256 pour la plupart des cas d'utilisation, mais il existe de nombreuses options. En règle générale, les éléments suivants sont valables:

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

Garanties de sécurité minimales

  • La longueur des données à signer peut être arbitraire.
  • Niveau de sécurité de 128 bits contre les attaques par message choisi adaptatif pour les schémas basés sur les courbes elliptiques
  • Niveau de sécurité de 112 bits contre les attaques par message choisi adaptatif pour les schémas basés sur RSA (permet les clés de 2 048 bits)

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 cas, dans certains cas, les programmeurs supposent implicitement que les signatures valides sont uniques, ce qui peut entraîner des résultats inattendus.

Exemple d'utilisation

Consultez Signer numériquement des données.