Une signature n'est pas valide pour toujours
Une signature électronique n'est pas valide pour toujours. Elle est valide à une date. La formule surprend au premier abord, mais elle s'explique très bien.
Un certificat de signature a une durée de vie. Il expire, et il peut être révoqué avant terme, par exemple si sa clé privée est compromise. Que devient alors un document signé avec un tel certificat ? Faut-il le considérer comme non signé ?
Non. Mais à une condition : pouvoir prouver quand il a été signé.
Signature manuscrite, signature électronique
Une signature manuscrite lie une personne à un document, mais elle ne dit rien de son contenu : rien n'empêche d'en modifier une page a posteriori. Et la vérification suppose une expertise qui peut être délicate.
Une signature électronique répond à ces limites parce qu'elle est calculée à partir du document lui-même. Elle apporte trois garanties :
- Intégrité : la signature porte sur l'empreinte du document. Un seul octet modifié, et la vérification échoue.
- Identité : la clé de signature est associée à un certificat délivré par une autorité qui a vérifié l'identité de son titulaire.
- Non-répudiation : la clé privée reste sous le contrôle exclusif du signataire, en particulier lorsqu'elle ne quitte jamais une carte à puce ou un token.
S'y ajoute une date vérifiable, dès lors que la signature est horodatée. C'est d'ailleurs ce qui manque le plus à la signature manuscrite : une date écrite à la main n'est qu'une déclaration.
Les formats de signature
Le règlement eIDAS reconnaît plusieurs formats de signature normalisés par l'ETSI. Ils se distinguent d'abord par le type de fichier auquel ils s'appliquent :
- XAdES pour les documents XML
- PAdES pour les PDF, où la signature est intégrée au document
- JAdES pour le JSON, notamment les échanges entre applications
- CAdES pour n'importe quel type de fichier
CAdES est le format généraliste. Comme il ne suppose rien de la structure du fichier signé, la signature ne s'insère pas dedans : elle l'accompagne. On parle de signature détachée. C'est ce qui lui permet de signer une image, une archive, un fichier chiffré ou un format propriétaire sans jamais y toucher.
Le niveau T, celui qui ajoute la date
Chacun de ces formats se décline ensuite en niveaux :
- Niveau B (Basic) : la signature seule avec les attributs indispensables
- Niveau T (Timestamp) : un jeton d'horodatage vient s'ajouter à la signature
- Niveau LT (Long Term) : les éléments nécessaires à la vérification, chaîne de certificats et preuves de révocation, sont embarqués dans la signature
- Niveau LTA (Long Term Archive) : des horodatages d'archivage sont ajoutés, puis renouvelés dans le temps
La différence entre LT et LTA tient à ce que l'on cherche à protéger. Le niveau LT répond à un problème de disponibilité : dans dix ans, le service de révocation de l'autorité aura peut-être disparu, alors on conserve dès aujourd'hui, dans la signature, les preuves qui permettront de la vérifier. Le niveau LTA répond (en plus) à un problème de péremption des clés et des algorithmes : un algorithme jugé sûr aujourd'hui ne le restera pas indéfiniment, et c'est aussi le cas des clés utilisées. Enfin, le certificat de l'autorité d'horodatage a lui aussi une fin de vie. Un horodatage d'archivage vient donc sceller périodiquement l'ensemble, preuves comprises, chaque nouveau jeton prolongeant la validité de la chaîne avant que le précédent ne s'affaiblisse.
Une signature CAdES-T embarque donc un jeton d'horodatage émis par une autorité de confiance qui atteste que la signature existait à cet instant précis.
Horodater un document, horodater une signature
Ce sont deux possibilités distinctes, et ça ne prouve pas la même chose.
Horodater un document, c'est-à-dire son empreinte, c'est prouver l'existence du fichier à cette date. Ça ne dit rien de son auteur : un horodatage n'est pas une signature.
Horodater une signature, c'est prouver que la signature du document a eu lieu avant cette date, donc que le certificat était encore valide au moment où elle a été faite. (Et comme la valeur de signature couvre déjà l'empreinte du document, la preuve de date vaut aussi pour le document !)
Horodater une signature, c'est ce que fait le niveau T.
Vérifier, ce n'est pas seulement recalculer une empreinte
Vérifier une signature ne consiste pas juste à comparer deux empreintes. C'est répondre à une question de droit : le certificat du signataire était-il valide à la date attestée par le jeton ?
Cela suppose trois contrôles distincts :
- La période de validité du certificat couvrait-elle cette date ?
- Le certificat était-il révoqué à cette date ? La question vaut pour le certificat du signataire, mais aussi pour celui de l'autorité qui l'a émis.
- La chaîne de certification remonte-t-elle à une autorité de confiance reconnue ?
Ce dernier point mérite qu'on s'y arrête, car une chaîne qui remonte ne suffit pas : encore faut-il savoir jusqu'où. Chaque État membre publie une liste de confiance eIDAS, signée, qui énumère les prestataires de services de confiance qualifiés et les certificats de leurs autorités. Ces listes nationales sont elles-mêmes référencées par une liste des listes, publiée par la Commission européenne, et dont les certificats de signature paraissent au Journal officiel de l'Union européenne.
C'est cette chaîne de publication qui donne son sens au mot qualifié. Une autorité n'est pas qualifiée parce que son certificat l'affirme, mais parce qu'un État l'a inscrite sur sa liste, et que cette inscription est vérifiable par n'importe qui. Ces listes conservent l'historique des statuts, ce qui permet de répondre à la seule question qui compte ici : cette autorité était-elle qualifiée à la date du jeton ?
Car ces contrôles s'apprécient à la date du jeton, et non au moment où l'on ouvre le fichier. Un certificat expiré depuis deux ans peut parfaitement porter une signature valide. À l'inverse, un certificat encore en cours de validité porte une signature qui ne prouve pas grand-chose si sa chaîne ne remonte à aucune autorité reconnue.
Sans date prouvable, la signature meurt avec son certificat
C'est la conséquence directe. Une signature de niveau B, sans jeton, ne fournit aucune preuve de sa propre date : la date qu'elle contient est déclarée par le signataire, donc non opposable. Le jour où le certificat expire ou est révoqué, plus rien ne permet d'établir que la signature lui est antérieure.
Et généralement personne ne s'en aperçoit avant d'en avoir besoin. Et on ne peut rien y faire.
CAdES-T dans Sigalion Vault
C'est pour toutes ces raisons que nous avons retenu le format CAdES-T pour la signature dans Sigalion Vault, disponible sur macOS, Windows et Linux :
- CAdES baseline-T (ETSI EN 319 122-1), signature CMS détachée (RFC 5652) réunie avec le document dans un conteneur ASiC-S
- Jeton RFC 3161 posé sur la valeur de signature, avec au choix horodatage Sigalion ou horodatage qualifié eIDAS (conseillé)
- Certificat logiciel, carte à puce ou token (IDOpte, YubiKey), selon le support dont vous disposez
- Autorités de confiance et qualification eIDAS issues de la Liste de confiance officielle, statut de révocation du signataire et de son émetteur contrôlé à la date attestée par l'horodatage
Le fichier produit est une enveloppe .asics qui réunit le document et sa signature dans un format normalisé, vérifiable par les outils conformes aux normes ETSI.
Signer, horodater, chiffrer : trois besoins distincts
Plus largement, Vault répond à trois besoins distincts, complémentaires, mais souvent confondus :
- Signer, pour garantir l'intégrité du document, l'identité de son auteur, et traduire son accord
- Horodater, pour attester qu'il existait à une date donnée
- Chiffrer, pour garantir la confidentialité et réserver la lecture aux destinataires désignés
Les trois se combinent : un document peut être signé et horodaté puis chiffré pour son destinataire, l'ensemble pouvant aussi être horodaté.