[TECH] C’est quoi une signature avancée ?

Dans ce blog post, qui est le premier d'une série de blog posts expliquant les notions de base de la signature électronique et PKI, nous vous expliquons comment est générée une signature avancée.

Commençons par le commencement ; Pour pouvoir signer un document électroniquement, il est impératif de détenir une identité électronique.

Nous pouvons identifier l'identité électronique comme étant deux informations complémentaires qui sont :

  • Un certificat électronique : C'est une information publique qui identifie son porteur de manière unique. Ce certificat contient vos informations personnelles: votre nom et prénom, le nom de votre organisation, votre email, ... D'autres données publiques peuvent y être ajoutées. Ce certificat indique les types d'utilisation de votre identité : signature, authentification, ... Vous ne pouvez pas utiliser votre certificat en dehors des usages déclarés.
  • Une clé privée : La clé privée est une information critique. Comme son nom l'indique, vous DEVEZ être le seul à détenir cette clé privée et contrôler son utilisation. Elle est hébergée EXCLUSIVEMENT dans un support cryptographique sécurisé.
    Elle est soit dans votre token USB protégé par un PIN soit dans un HSM distant protégé par un PIN et par un OTP (d'autres moyens d'authentification sécurisés sont possibles). Les deux supports doivent présenter des niveaux de sécurité équivalents.

Une fois vous avez votre identité électronique (votre clé privée associée à votre certificat électronique public), vous êtes prêt pour la signature.

Le processus de signature est le suivant, indépendamment du support cryptographique utilisé pour sauvegarder les clés privée :

Première étape

Cette étape (appelée 'preparation phase' par l'équipe NGSign) consiste à calculer les données à signer. Il s'agit d'un ensemble de données dont certaines sont obligatoires et d'autres sont optionnelles tel que :

Exemples de données obligatoires

  • Le digest / hash de votre document : c'est l'empreinte du document, toute modification sur le document implique la modification de ce digest. Si le document est modifié après la signature, une simple comparaison de son empreinte actuelle à son empreinte au moment de la signature permet de détecter cette anomalie. Ceci permet de garantir l'intégrité des documents.
  • L'identité du signature : certains pensent que signer un document revient à signer son empreinte. Ce n'est pas faux, mais ce n'est pas totalement correct. Au moment de signature, vous vous engagez (signez) sur votre identité aussi (vous signez des données de votre certificat). Ceci permet (entre autres) d'éviter des attaques du type substitution de certificat. Un autre blog post sera réservé pour cette attaque.
    Votre certificat est public, vous DEVEZ être capable de l'avoir à portée de main (ou à portée de votre application de signature) avant d'entamer la signature !
  • L'heure de signature: C'est une autre information qui sera signée pour être conforme à un certain nombre de normes.

Exemples de données optionnelles

D'autres informations peuvent être signées selon le contexte :

  • Le lieu de la signature
  • Le rôle du signataire
  • L'identifiant d'un document représentant le contexte dans lequel la signature est générée. Un bon exemple est dans le contexte de la facture électronique en Tunisie par TTN ou le contexte est défini par une politique sous format d'un document PDF. Chaque signataire accepte les termes de ce document au moment de la signature

 

Une fois toutes ces données sont calculées en respectant le format de signature (PAdES pour des PDF, XAdES pour des XML, ...), nous obtenons ce qu'on appelle un TBS : les données To Be Signed.

Nous revenons avec d'amples détails techniques sur les formats de signature dans un prochain blog post.

 

Deuxième étape

Cette étapes consiste à générer la signature cryptographique. A ce niveau, votre clé privée et la cryptographie entrent en jeu. Vous serez sollicités pour activer l'utilisation de votre clé (PIN, PIN + OTP, ...).
Le support cryptographique prendra en charge le calcul de la signature cryptographique à partir du TBS (et non du digest du document) et nous aurons une signature dite cryptographique à la fin de ce processus.

Dernière étape

A la fin de cette étape la signature avancée sera générée. Nous appelons cette étape : 'finalization / acting phase'.

Cette étape diffère légèrement d'un format de signature à un autre (PDS, XML, ...). L'idée générale simplifiée est qu'il faut 'insérer' la signature cryptographique, les données signées (les données qui ont donné lieu à un TBS), les données publiques dans le document (sauf pour des cas particuliers que nous traiterons dans des posts ultérieurs).

La signature avancée contient des données signées, et aussi des données permettant à toutes application de valider cette signature.

 

Conclusion

Pour finir, un document signé électroniquement est surtout protégé contre :

  • La falsification : Grâce à l'utilisation des fonctions de digest, toute altération aussi minime soit elle, sur le document est détectée. La signature est considérée invalide.
  • La répudiation : un signataire n'est pas en position de nier avoir signé un document. Une signature avancée permet d'identifier de manière irréfutable le signataire.

 

Les commentaires sont fermés.