Département Informatique
Master 2 E-Secure
Rapport de Projet Individuel
Signature de document XML
Etudiant : Frédéric Boussemard Année 2012-2013
Encadrant : Jacques Madelaine
Sommaire :
Introduction :..............................................................................................................................3
1. Présentation du sujet, état de l’art : ....................................................................................4
1.1. Sujet du projet : ..........................................................................................................4
1.2. Standard existant :......................................................................................................4
1.3. Vue d’ensemble de la signature et vérification par XML Dsig : ...............................5
1.4. Solutions existantes :..................................................................................................6
1.5. Solution retenue : .......................................................................................................6
2. Signature d’un document ...................................................................................................7
2.1. Les trois formes de signature : ...................................................................................7
2.2. Forger une signature en respectant XML Dsig : ........................................................8
2.3. Canonisation.............................................................................................................10
2.4. Programmation de l’action de signature...................................................................12
2.5. Résultat : signature d’un document XML................................................................13
3. Vérification d’un document signé....................................................................................14
3.1. Vérifier une signature selon XML Dsig...................................................................14
3.2. Programmation de l’action de vérification...............................................................15
4. Gestion des certificats ......................................................................................................16
4.1. Utilisation du Keystore / Truststore .........................................................................16
4.2. Génération du keystore et du truststore :..................................................................17
4.3. Validation d’un certificat : .......................................................................................17
5. Réalisation d’un prototype et tests ...................................................................................19
5.1. Prototypage avec le framework Play........................................................................19
5.2. Tests .........................................................................................................................20
6. Evolutions possibles.........................................................................................................20
6.1. Amélioration de la gestion des certificats ................................................................20
6.2. Complément à la canonisation : ...............................................................................21
7. Conclusion........................................................................................................................21
8. Annexes : Annexe 1: Code Java de signe.class .............................................................22
Annexe 2: Code Java de valide.class ...................................................................................25
Annexe 3: Code Java de TestCert.class ...............................................................................28
Annexe 4: Lignes de commandes Keytool...........................................................................31
Annexe 5: HTTPS configuration for play framework..........................................................32
Introduction
Le langage XML (eXtended Markup Langage) a été promu en version 1.0 par W3C
en 1998. Il s’ajoute à la famille des langages à balises (GML,HTML…). Les
possibilités de définition infinie d’objets l’ont rendu très populaire et XML est devenu
un standard universel pour la représentation et l’échange de données.
En standardisant la mise en forme des données à échanger, XML facilite les
échanges de données entre machines. Ces données véhiculant sur des seaux
ouverts à plusieurs machines, il faut veiller à la sécurisation des contenus échangés.
La signature numérique avec authentification par certificat permet d’assurer :
- Authentification / Identification
Qui émet les données ? Peut il le prouver ?
- Intégrité
On est capable de savoir si les données reçues ont été modifiées.
- Non re-jeu
La signature est propre au document. Elle n’est pas valide pour d’autres
usages.
- Non répudiation d'un envoi :
Le document signé porte une empreinte de l’émetteur.
Le sujet de mon projet consiste à étudier les solutions disponibles et réaliser un
prototype capable de signer et valider des documents XML. Il faudra veiller à ce que
des documents ayant une écriture différente mais la même interprétation XML
obtiennent une signature identique.
J’ai choisi ce sujet dans un but d’apprentissage. Ne connaissant pas le langage XML
et n’ayant pas développé en langage objet, j’ai trouvé en ce projet une bonne
opportunité pour enrichir mes connaissances.
Enfin, le sujet devrait me permettre d’appliquer les outils de cryptographie abordés
en cours.
1. Présentation du sujet, état de l’art :
1.1. Sujet du projet :
La signature de document numérique utilisant des principes de cryptographie
asymétrique est un processus bien connu. Ces schémas considèrent généralement
le document comme une simple suite d'octets non structurée de taille quelconque et
produisent à l'aide de la clé secrète du signataire, une signature de quelques
centaines d'octets. Cette dernière doit être adjointe au document. On pourra ensuite
prouver son intégrité et son origine à l'aide d'une procédure de vérification utilisant la
clé publique du signataire.
Le problème est ici de signer des documents XML dont il est licite de modifier leur
présentation sans pour autant constituer un autre document XML au sens de la
norme. En effet, l'ordre d'écriture des sous éléments de même nom d'un élément ou
l'ordre d'apparition des attributs d'un élément dans sa balise ouvrante ne sont pas
significatifs. Il faut donc que la signature ne soit pas dépendante de ces ordres. Nous
souhaitons aussi pouvoir ajouter cette signature au document. De plus comme nous
voulons appliquer ce schéma à de « petits » documents, il faudra expérimenter des
schémas à bas coûts.
1.2. Standard existant :
W3C a émis une recommandation destinée à l’utilisation de signatures numériques
pour les documents XML. Il s’agit de la recommandation ‘XML Signature Syntax &
Processing’ aussi nommée XML Dsig
1
.
Les processus de génération et de validation de signature y sont détaillés.
Concernant la signature, XML Dsig s’appuie sur la souplesse du langage XML et
permet de « limiter » la signature à plusieurs parties d’un document.
Cela est utile dans le cas où l’on souhaite faire signer différentes parties d’un
document par différents utilisateurs.
m edecin
laboratoire
d'analyse
pharm acien
Radiologu e
pat ient
Scanner
<dossier medical>
<patient>
...
</patient>
<medecin>
...
</medecin>
<radio>
...
</radio>
.....
.....
.....
.....
.....
</dossier medical>
Fig.1 : Multiples signataires d’un document
1
http://www.w3.org/TR/xmldsig-core
Il peut également être intéressant d’exclure de la signature des parties d’un
document signé. Considérons le cas de la transmission d’un formulaire signé que
doit remplir un utilisateur :
la partie à compléter est exclue des données à signer
L’utilisateur remplit la partie du formulaire qui lui est propre
Ainsi, la signature du document reste valide puisqu’elle ne tient volontairement pas
compte de la zone modifiée par l’utilisateur.
Les éléments obligatoires et optionnels faisant partie de la signature sont spécifiés
par la recommandation. L’essentiel des mécanismes et éléments de la signature sont
d’avantage détaillés dans le paragraphe 2.2.
Concernant la validation, XML Dsig définit également en détails les mécanismes à
mettre en œuvre. La validation est faite en deux phases : validation de la référence
puis de la signature. Nous traitons ce processus dans la partie 3.1.
1.3. Vue d’ensemble de la signature et vérification par XML
Dsig :
Fig.2 : Vue globale des processus de Signature et Validation
1 / 32 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !