XML Signature
XML Signature (aussi nommé XMLDsig, XML-DSig, XML-Sig) est une recommandation du W3C destinée à permettre l'utilisation de signatures numériques dans les documents XML.
Tout comme les techniques générales de cryptographie à clé publique qu'elle met en œuvre, elle permet d'assurer l'authentification, l'intégrité et par voie de conséquence la non-répudiation des données signées, mais en tirant profit de la souplesse offerte par le langage XML.
Une caractéristique importante apportée par XML est la possibilité de ne signer que des portions spécifiques d'un même document. C'est particulièrement utile lorsque certaines parties doivent être signées par des personnes différentes et/ou en laissant ouvert la modification du reste du document, par exemple lors de la transmission d'un formulaire signé, à un utilisateur qui le complétera. Dans ce cas, si la signature couvrait tout le document, la moindre modification ou ajout apporté par l'utilisateur rendrait la signature invalide.
Suivant la position de la signature dans le document, on distingue généralement trois cas :
- la signature « enveloppée » (enveloped signature) : lorsque la signature s'applique aux données qui l'entourent dans le reste du document
- la signature « enveloppante » (enveloping signature) : lorsque les données signées forment un sous-élément de la signature elle-même
- la signature « détachée » (detached signature) : lorsque la signature concerne des ressources extérieures au document qui la contient
Forme canonique
Un autre intérêt majeur de la signature XML réside dans une transformation préalable en forme canonique, rendant la signature indépendante du jeu de caractère ou de la syntaxe utilisée.
En effet, un document XML donné peut avoir plusieurs représentations conformes à la norme, différentes mais équivalentes. Par exemple, certains espaces dans un document XML ne sont pas syntaxiquement significatifs, par exemple la balise <elem >
Ă©quivaut Ă <elem>
.
Or les algorithmes d'empreintes cryptographiques sur lesquels reposent les signatures numériques sont conçus de manière telle que la moindre divergence entraine un résultat radicalement différent.
C'est pour éviter ce problème et garantir qu'on produira des signatures identiques sur des documents XML logiquement équivalents, qu'on procède à une transformation canonique (c14n).