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 possède 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.

Dans Tink, la fonctionnalité des signatures numériques est représentée 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 ML_DSA_65 ou ECDSA_P256 pour la plupart des cas d'utilisation, mais il existe différentes options. En général, les règles suivantes s'appliquent :

Pour les algorithmes non post-quantiques suivants, vous devrez probablement modifier le type de clé dans un avenir proche.

  • ECDSA_P256 est l'option la plus utilisée et une option 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 les meilleures performances de validation (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é de 128 bits contre les attaques adaptatives par message choisi pour les schémas basés sur les courbes elliptiques
  • Niveau de sécurité de 112 bits contre les attaques adaptatives par message choisi pour les schémas basés sur RSA (autorise 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 autre signature valide pour un message déjà signé. Bien que cela ne pose pas de problème dans la plupart des scénarios, les programmeurs supposent parfois 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.