IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

[XML] Signature


Sujet :

XML/XSL et SOAP

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut [XML] Signature
    Bonjour, ou peut-être bonsoir,
    Tout d'abord sachez que je suis relativement novice dans le domaine du XML.
    Et merci du temps que vous prendrez pour lire ceci.

    Je me suis renseigné sur les différente normes :
    - XMLDsig
    - XAdES (avec toutes les lettres qui vont bien derrière :p)

    Et je me suis heurté, au plus souvent, des pages traduite (mais pas réelement
    BIEN traduite ce qui donne quelque chose d'assez peu comprehensible) ou alors des
    page en anglais (même en ayant un bon niveau d'anglais, me farcir 44pages de norme
    ou je comprend déjà pas 10 mots de ce qu'ils veulent dire, ça me donne mal a la tête).

    En bref je doit créer un outil qui signe les documents en XML.

    Alors voila ce que j'ai compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    	<SignedInfo>
    		<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
    		<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
    		<Reference>
    			<Transforms>
    				<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
    			</Transforms>
    			<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    			<DigestValue>chiffresetlettrespasbeau</DigestValue>
    		</Reference>
    	</SignedInfo>
    	<SignatureValue>tralalaletrucsigné</SignatureValue>
    	<KeyInfo>
    		<KeyName>blablabla</KeyName>
    	</KeyInfo>
    <Signature>
    1) Le document à signer n'est pas présent dans la feuille XML, seul la signature y est (on peut bien sur inclure le nom du doc.).
    2) <Signature xmlns="..."> précise que la signature est conforme a la norme du w3c.
    3) <CanonicalizationMethod Algorithm="..."/> canonise le document à signer (le remet en forme ?).
    4) <SignatureMethod Algorithm="...#rsa-sha1"/> chiffrement via algorithme RSA-SHA1.
    5) <DigestMethod Algorithm="...#sha1"/> le doc canonisé sera HASHé via algo SHA1.
    6) <DigestValue> est le HASH créé par SHA1.
    7) <SignatureValue> et le "chiffré" du HASH soit la signature en elle-même.
    8) <KeyName> la clé PUBLIQUE utilisé pour chiffré le HASH.

    J'aurait aimé avoir des explication sur la canonisation (je n'ai pas réelement compris le but)
    et j'ai aussi lu tout plein de choses surement interressante a propos des REFERENCE
    mais mon cerveau n'a pas gardé les infos >.<

    Si on pouvait m'expliquer un peu plus le principe ?
    N'hésité pas a me poser des question ne serait-ce que pour voir si j'ai bien "pigé" le truc.

    Merci beaucoup.
    Cordialement,

    Rilou

  2. #2
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Alors voici ma 2eme phase de compréhension...

    Dans le XML on va trouver :

    On trouve ::

    * un type de signature :
    - enveloppée -> pour ne signer qu'une partie du document.
    - enveloppante -> pour signer le document et par la même occasion le document XML créé.
    - détachée -> pour ne signer que le document (ce qui est mon cas on veut seulement créer une signature d'un fichier qu'un utilisateur aura envoyer via internet).

    ** Un algorithme de canonisation (CanonicalizationMethod)du doc XML :
    Alors ici ce que j'ai compris c'est que cette "méthode" est utilisée SEULEMENT pour le fichier XML lui même afin de le remettre en forme (soit supprimer toutes les bêtises qu'il y a dedans (comme par exemple les commentaires :p) car certains <PARSEUR XML> (style XPath et autres) n'interprètent pas tous de la même manière les commentaires, les espace dans les balises, etc...

    *** Un algorithme de signature (SignatureMethod) :
    Cette balise va nous indiquer l'algorithme utilisé pour créer la signature elle-même.
    Dans les exemples j'ai lu RSA-SHA1, j'en suis arrivé à supposer que c'est la combinaison du RSA et du SHA1 ?? ai-je tord ? :s

    **** Une ou plusieurs Références :
    Ici on indique le ou les documents signés.

    ***** Méthode de prétraitement (alias DigestMéthod) :
    Le type de HASHeur utilisé (hasheur c'est genre MD5 ?!O.O?!), ici SHA1 (c'est pour cela que plus haut j'ai parler du RSA-SHA1 ...).

    ****** Valeur du hash créé (DigestValue) :
    beh,..., le hash générer par le SHA1 lui-même... enfin je suppose :p

    ******* Valeur de la signature (SignatureValue):
    Alors ici on trouvera la signature elle même encodée en Base64 (kesako O.o ???)

    Alors ensuite dans <KeyValue> on va trouver les infos sur le certificat X509 utilisé et donc la clé publique utilisée pour la création de la signature via algo RSA-SHA1 ou seulement RSA je ne sais pas >.>

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,
    Citation Envoyé par rilou Voir le message
    ** Un algorithme de canonisation (CanonicalizationMethod)du doc XML :
    Alors ici ce que j'ai compris c'est que cette "méthode" est utilisée SEULEMENT pour le fichier XML lui même afin de le remettre en forme (soit supprimer toutes les bêtises qu'il y a dedans (comme par exemple les commentaires :p) car certains <PARSEUR XML> (style XPath et autres) n'interprètent pas tous de la même manière les commentaires, les espace dans les balises, etc...
    Ce n'est pas exactement ça. Du point de vue d'un parseur XML, ces deux structures sont équivalentes (les données exposées sont les mêmes) :
    Il en est de même pour ceci :
    Si tous les parseurs XML interpréteront de la même manière chaque variante, la signature elle, qui est produite selon les données telles qu'elles sont écrites (sérialisées) et non telles qu'elles sont interprétées par un parseur XML, sera différente. C'est pour éviter cela que l'algorithme de canonisation réduit toutes les variantes en un seul format, un format canonique.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  4. #4
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    D'accord, mais dans ce cas, en quoi la canonisation s'applique t'elle à une signature détaché ?

    Puisque dans mon cas je veut signé un élément externe, il me faut juste générer un fichier "conteneur" de signature ...

    Malgrés cela, cette canonisation DOIT s'appliquée...

    Merci quand même pour la réponse. Mais qu'en est-il du reste ?

  5. #5
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Citation Envoyé par rilou Voir le message
    D'accord, mais dans ce cas, en quoi la canonisation s'applique t'elle à une signature détaché ?
    Ca garantit que tous les outils de signature, y compris celui que tu vas utiliser, génère bien la même signature pour un même document XML, même si sa représentation au format texte peut présenter plusieurs variantes, sans pour autant que les données en soient différentes. Au cours de son traitement dans uen chaîne complexe impliquant le passage par plusieurs parsers, le fichier signé peut subir de subtiles variations qui ne doivent pas pour autant invalider la signature.
    Citation Envoyé par rilou Voir le message
    Mais qu'en est-il du reste ?
    Désolé, n'ayant jamais dû utiliser la signature de fichiers XML, je ne peux guère t'en dire plus.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Désolé, n'ayant jamais dû utiliser la signature de fichiers XML, je ne peux guère t'en dire plus.
    Ce n'est pas grave, merci quand même pour les precision que tu m'a apporté sur la canonisation.

    Peut-être y a-t-il d'auter personnes qualifiées dans le domaine de la signature XML présentent sur le forum et qui voudraient bien m'aider ?!

    Merci

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Personnellement, je n'ai qu'une légère expérience sur la signature de PDF via iText.
    Tes déductions me semblent juste, le Sha-1 est bien une fonction de hachage, mais qui présente des faiblesses (deux documents différents peuvent génèrer le même hash), on lui préfère le Sha-256 ou d'autre fonctions plus évoluées aujourd'hui.
    Le Base64, c'est une façon de représenter une donnée binaire sous le format text (parmis 64 caractères).
    J'ai pas cherché à comprendre la signification du RSA .
    En tout cas, je surveille ce sujet, n'hésite pas à poster tes conclusions.

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 143
    Points : 169
    Points
    169
    Par défaut
    Up !
    Alors j'ai pa enormement de nouvelles info sur le sujet ...

    XMLDsig nous donne la structure de base d'une signature numerique.
    XAdeS nous offre une structure un peu plus aboutie ou on peut trouver les unformations concernant le certificat x509 utilisé pour generer la signature.

    Le base64 (j'ai enfin trouver ce que c'est et aussi comment le decoder :p) :
    utilisé pour les certificat x509 (lorsqu'on l'ouvre avec le notepad alors on voit le certif codé base64).
    Utilisé aussi pour la signature dans le XML lui meme.
    Le base64 est une maniere de représenté des donné sous forme d'octet de 6 BITs (et non pas 8) et ce avec les caractère A à Z, a à z, 0 à 9, / et = .


    Voila merci d'apporter des infos supplémentaires!

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 79
    Points : 51
    Points
    51
    Par défaut
    Comment calcule t on le digest value ? Ce n'est pas un simple hash du document...

    Si je fais un hash du code XML de mon fichier, je n'obtiens pas "TzH/q9Sm3EEvKBqdSirar0d7WPw="

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?xml version="1.0" encoding="UTF-8" standalone="no"?><essai>
    <version>version17</version>
    <identify>refe</identify>
    <date>2009-08-11T00:00:00+00:00</date>
    <validity>0</validity>
    <client>
    <nom>fref</nom>
    <siret>frf</siret>
    <address>erfr</address>
    <phone>erf</phone>
    </client>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>TzH/q9Sm3EEvKBqdSirar0d7WPw=</DigestValue></Reference></SignedInfo><SignatureValue>aAEj+KWHybp2IG+OfuJxDG93IP+oNStc1yl6O2sAD+qw81ufJD8BHiyzqqnne+rC46nOMRgv7XZs
    Jun07lgPVrA8lEzxD9MqPMph10bHCa9VP96DTLNyRMstK/05dlr7/d8tWYSWBnrhDW6JDfZ6TDcD
    eytGZouycVKEVA19pyXQucAXGUAfJQn2zWgWXnqqokeFd0Y0rBmDMPYHx99CgTSr/kGJ05HzwMDI
    wfwb5Wbpl3hvBhngjIo/VyO+uxnYboBNchTZ+orCqLeupjP1f+YH8SZ47DOhJir+uLcGCdejC+ps
    NIyf/1oMEDcB0JW55cLEP40jafDO7MpHks4IOg==</SignatureValue><KeyInfo><X509Data><X509SubjectName>CN=moi,C=FR</X509SubjectName><X509Certificate>MIICtzCCAZ8CBEp/88wwDQYJKoZIhvcNAQEFBQAwIDELMAkGA1UEBhMCRlIxETAPBgNVBAMMCGJv
    dXNxdWV0MB4XDTA5MDgxMDEwMTc0OFoXDTEyMDgwOTEwMTc0OFowIDELMAkGA1UEBhMCRlIxETAP
    BgNVBAMMCGJvdXNxdWV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkaftCNBNm++9
    lDFAteXfJu9nfqcfsOvIlqhUEQHvLfJy1yQqPH1wgSXL2/y3FGUvegGuRkkdxYckuwQncuQImvxE
    KI0ovuQt5PIt0cc4CAdTR1W2WoTgqRuB0Fu092Xjr7sbWM5yy11j22qSdGk2zWQjFdKB9awLEQs9
    ASnJK/zAdNs2XtEaTN9Nrb1LTQmq7CKNUv0HUhzZ6I6GkJUn2Kk3hnD+Re7zTUUSDFMKss+Tre05
    kdLIMBEeXxuwNr6M5/lx8d934XBucrC1DbKHOJvQzL/1Q+45+w6ZSgyYafxOBvWPHHOJ057f+MPK
    iAlGjN/z0jWY5gZlyPNkZXBuAwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBpK4OKjmoolPvYQojj
    nNvcNbTwVXyvPLizU+mKSlinr6WT2qpcDq4pH/CmzPBlsLRuG/eTXHiUQPU8o7tMZRwDebOPgHW3
    3AdNV6eQH+IWeXHz14z+y0Fgfp+4faQ0R+bWATcUgiDjFtFRmH4SzY8AzE+j5iph8dgUeYpQxeXs
    wS/gU5d2wT24M3wFJ2GYk/Ehzi9gQ4uL6IF2b7LVXn9tHSyLOIMyMXXSjsqFyRXsx6wJMIyc5khH
    y6OtifG3mFLuuzlUDrwwSdVbVjkNQFeK/ujb/mUOqP5dqXD6M0wj4QB8QwswQPgRwBgHK4tJ30ZL
    tbzKt6cMpxFcJ3/YG7Wv</X509Certificate></X509Data></KeyInfo></Signature></essai>

  10. #10
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je me permet de venir vers toi car je suis également en train de générer une signature sur mon fichier xml.

    Les quelques explications que vous avez fournis mon aidé à comprendre un peu plus pour remplir les valeurs DigestValue et SignatureValue.

    Je m'appuie aussi sur ces documents :
    http://www.msg.gouv.qc.ca/fr/publica.../signature.pdf
    http://www.lasignature.com/cadresign...lsignature.htm

    Or, je n'arrive pas à mettre en pratique avec Delphi. Je n'ai pas réussit à trouver des composants m'aidant à générer cette signature.

    Je dois en même temps canoniser mon document.

    As-tu eu de l'aide pour résoudre ton problème ? Si oui, pourrais tu m'aider...

    Cordialement.

Discussions similaires

  1. Xml signature invalide
    Par friedman1987 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 21/04/2011, 16h15
  2. XML signature, DOM et noeuds null
    Par Saita dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2010, 11h01
  3. [System.Security.Cryptography.Xml] Signature de fichiers XML
    Par melleb dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/04/2008, 10h04
  4. [XML] XML Signature
    Par OxygEn dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/06/2006, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo