Niveau :      
Résumé : RSA ; DSA

La suite ... la suite ... Aujourd'hui les signatures.

Non il ne s'agit pas du petit gribouillis que vous mettez en bas des chèques. Il s'agit de signature numérique. Et ce n'est pas non plus une image scannée de votre gribouillis. Même si le but de la signature numérique est la même, il s'agit de présenter une preuve (presque) infalsifiable du fait que vous avez bien lu, voire écrit un message.

En fait la signature ne fait que vous identifier, prouver que c'est bien vous qui étiez là. Le sens même de la signature dépend du document signé (chèque, article scientifique, patch ...)

Principe

Un document signé numériquement doit assurer deux choses :

  • Que le document transmis n'a pas été modifié depuis que vous l'avez lu
  • Que c'est bien vous qui avez lu / écrit / approuvé ce document, c'est-à-dire
    • que ce n'est pas quelqu'un d'autre
    • que vous l'avez bien fait

C'est la combinaison de deux choses qui va permettre cela :

  • Une fonction de hachage à sens unique
  • Un algorithme à clé publique

La première garantit que le document correspond à une empreinte et qu'on ne produire de document modifié ayant la même empreinte. Le deuxième garantit que la signature ne peut être générée à partir d'une empreinte différente, si ce n'est par le signataire.

Par conséquent, on prouve que c'est bien le propriétaire de la clé concernée qui a signé le document.

Attention, seule la combinaison document - empreinte - signature le prouve. Ce qui veut dire qu'il est toujours possible de supprimer un élément pour empêcher de prouver que vous l'avez signé (non monsieur le juge, il n'y a pas de preuve que j'ai signé ce chèque). Dans le même ordre d'idée, seule la signature de la clé prouve que celle-ci vous appartient et donc que c'est bien vous l'auteur de la signature. C'est donc au destinataire de conserver ces données s'il veut un jour pouvoir fournir la preuve que vous avez signé le document.

Authentification

La signature permet l'authentification. Supposons que vous vouliez vous authentifier sur un serveur. Il suffit que le serveur vous envoie un challenge (un message) que vous devrez signer. Il va alors vérifier la signature (et les certificats qui vont avec) et vous serez authentifié.

Algorithmes

Hachage

On utilise une fonction de hachage qu'on considère comme sûre (donc éviter md5). Voir l'article précédent.

RSA

Pour la partie signature à clé publique, on utilise souvent le RSA comme expliqué dans un article précédent.

DSA

Un autre algorithme est fréquemment utilisé pour les signatures, il s'agit du DSA (Digital Signature Algorithm). Cet algorithme à clé publique a été développé pour ne fonctionner que dans le mode signature.

Il n'est ni plus ni moins sécurisé que le RSA, il est juste différent. Il utilise des formules mathématiques similaires au RSA et n'est pas plus difficile à comprendre que celui-ci.