41
1 Les technologies XML Les technologies XML Cours 8 : Cours 8 : Les Web Services Les Web Services Sécurisation Sécurisation Mars 2011 Mars 2011 - Version 1.0 - - Version 1.0 -

1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

Embed Size (px)

Citation preview

Page 1: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

1

Les technologies XMLLes technologies XML

Cours 8 : Cours 8 : Les Web Services Les Web Services SécurisationSécurisation

Mars 2011Mars 2011

- Version 1.0 - - Version 1.0 -

Page 2: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

2

Sécurisation - IntroductionSécurisation - Introduction

Un Web Service est exposé sur le net qui est, par Un Web Service est exposé sur le net qui est, par essence, un endroit non sécurisé.essence, un endroit non sécurisé.

Il est donc nécessaire de : Il est donc nécessaire de :

Sécuriser le transportSécuriser le transport

Authentifier un expéditeurAuthentifier un expéditeur

Chiffrer les donnéesChiffrer les données

Gérer des droits sur les services distantsGérer des droits sur les services distants

Page 3: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

3

Sécurisation – WS-SecuritySécurisation – WS-Security

WS-SecurityWS-Security : : Ensemble de protocoles pour sécuriser les Ensemble de protocoles pour sécuriser les services Webservices Web

Englobe les standards :Englobe les standards :

XKMS (XKMS (XML Key Management Specification) XML Key Management Specification) spécification conjointe du W3C et de l'IETF pour

intégrer la gestion de clés et certificats aux applications XML.

délégation du traitement de la sécurité à un service spécialisé sur Internet offrant des services de gestion de clés publiques, certificats et signatures, accessible en SOAP.

XML Signature (XML Signature (Signature de message en XMLSignature de message en XML))

XML Encryption (XML Encryption (Protocole d'échange de clés de Protocole d'échange de clés de cryptagecryptage))

Page 4: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

4

Sécurisation – WS-SecuritySécurisation – WS-Security

Originellement développé par Originellement développé par IBMIBM, , MicrosoftMicrosoft, , VeriSignVeriSign et et Forum Systems, le protocole est maintenant officiellement Forum Systems, le protocole est maintenant officiellement appelé WSS et développé via un comité dans Oasis-Open.appelé WSS et développé via un comité dans Oasis-Open.

Le protocole contient des spécifications sur la façon dont l'Le protocole contient des spécifications sur la façon dont l'intégritéintégrité et la et la confidentialitéconfidentialité peuvent être appliquées aux peuvent être appliquées aux messages de messages de services webservices web. Le protocole WSS inclut des . Le protocole WSS inclut des détails sur l'utilisation de détails sur l'utilisation de SAMLSAML et et KerberosKerberos, et des formats , et des formats de certificat comme de certificat comme X.509X.509..

OASIS

WSS : http://www.oasis-open.org/specs/index.php#wssv1.1

Page 5: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

5

Sécurisation – WS-SecuritySécurisation – WS-Security

WSS a été conçue pour sécuriser les échanges WSS a été conçue pour sécuriser les échanges mis en oeuvre sous forme de Web Services entre mis en oeuvre sous forme de Web Services entre deux applications distantes. deux applications distantes.

WSS s’occupe de l’ensemble des composantes WSS s’occupe de l’ensemble des composantes de la sécurisation : de l'authentification des de la sécurisation : de l'authentification des utilisateurs et des composants en présence en utilisateurs et des composants en présence en passant par le chiffrement, et la gestion de passant par le chiffrement, et la gestion de l'intégrité des messages par le biais de l'intégrité des messages par le biais de certificats certificats

Page 6: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

6

Sécurisation - Sécurisation - Standards

XML Signature

XML Encryption

XKMS - XML Key Management System

SAML - Security Assertions Markup Language

XACML - XML Access Control Markup Language

Page 7: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

7

XML Signature

ObjectifObjectifPrévenir la falsification d’un document XML.Prévenir la falsification d’un document XML.Gérer la non répudation des documents (identité de l’émetteur du Gérer la non répudation des documents (identité de l’émetteur du document).document).

FonctionnalitésBasé sur XML ( pas de notation ASN.1)Signatures sur des portions (arbres d’ éléments) de documents

Le document peut être recomposé/transformé par le récepteurSignatures sur plusieurs entités

1 document HTML + feuille CSS + image de bannière + …Signatures par plusieurs signataires sur tout ou partie du documentSignatures embarqués dans le document (signature dite enveloppante)

SOAP request/responseSignature d’ entités externes référencées par des URI (signature détaché)

HTML, éléments Media, CSS …

Page 8: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

8

XML Signature

Traitement

L’ émetteur crée un message, le canonise et le signe

Le récepteur reçoit un message, le canonise et vérifie sa signature

Canonisation

Indépendance de l’ indentation, de l’encodage (esp. Cr, ..) sur le calcul de la signature

W3C et IETF

XML Digital Signature http://www.w3.org/TR/xmldsig-core/

Canonisation http://www.w3.org/TR/xml-c14nAPI Java : JSR 105 XML Digital Signature APIs (javax.security.xml.dsig)

Page 9: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

9

XML Signature

Il existe 3 type de signatures :Il existe 3 type de signatures :

la signature 'enveloppée' (enveloped signature) : la signature 'enveloppée' (enveloped signature) : lorsque la signature s'applique aux données qui lorsque la signature s'applique aux données qui l'entoure dans le reste du document ;l'entoure dans le reste du document ;

la signature 'enveloppante' (enveloping la signature 'enveloppante' (enveloping signature) : lorsque les données signées forment signature) : lorsque les données signées forment un sous élément de la signature elle-même ;un sous élément de la signature elle-même ;

la signature 'détachée' (detached signature) : la signature 'détachée' (detached signature) : lorsque la signature concerne des ressources lorsque la signature concerne des ressources extérieures au document qui la contient ;extérieures au document qui la contient ;

Page 10: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

10

XML Signature – Construction message

Objet Sha

Clef de l’émetteur

Sha Dsa

Infos signées

Digest UriSignature

Infos Signées

Signature

Clef

Objets

certificat

Clef privée

Page 11: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

11

XML Signature – Exemple de signature détachée

[s01] <Signature Id="MyFirstSignature"xmlns="http://www.w3.org/2000/09/xmldsig#">

[s02] <SignedInfo>[s03] <CanonicalizationMethod

Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>[s04] <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>[s05] <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">[s06] <Transforms>[s07] <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>[s08] </Transforms>[s09] <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>[s10] <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>[s11] </Reference>[s12] </SignedInfo>[s13] <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>[s14] <KeyInfo>[s15a] <KeyValue>[s15b] <DSAKeyValue>[s15c] <P>...</P><Q>...</Q><G>...</G><Y>...</Y>[s15d] </DSAKeyValue>[s15e] </KeyValue>[s16] </KeyInfo>[s17] </Signature>

Page 12: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

12

XML Signature – les transformations

Pourquoi ?Pourquoi ?Elles permettent de ne signer que certaines Elles permettent de ne signer que certaines parties du documentparties du document

Transformations possiblesTransformations possiblesCanonisation,Encodage/Décodage (Compression/Décompression),XSLT,Xpath,Validation XML Schema,Xinclude, ..

Page 13: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

13

XML Signature – Les éléments optionnels

Élément <Object>Attention : il est optionnel et le récepteur peut ne pas le comprendreLes sous éléments doivent être identifiés

Sous Élément <SignatureProperties>Permet d’ ajouter des informations complémentaires à la signatureDate de validité de la signature, identité du processus signataire,…

Sous Élément <Manifest>Permet de signer indépendamment chaque URI listé dans le manifeste

Page 14: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

14

XML Signature – Les éléments optionnels exemple

[ ] <Signature Id="MySecondSignature" ...>[ ] <Signature Id="MySecondSignature" ...>

[p01] <SignedInfo>[p01] <SignedInfo>

[ ] ...[ ] ...

[p02] <Reference URI="http://www.w3.org/TR/xml-stylesheet/">[p02] <Reference URI="http://www.w3.org/TR/xml-stylesheet/">

[ ] ... [ ] ...

[p03] <Reference URI="#AMadeUpTimeStamp« [p03] <Reference URI="#AMadeUpTimeStamp« 

[p04] Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties">[p04] Type="http://www.w3.org/2000/09/xmldsig#SignatureProperties">

[p05] <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>[p05] <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>

[p06] <DigestValue>k3453rvEPO0vKtMup4NbeVu8nk=</DigestValue>[p06] <DigestValue>k3453rvEPO0vKtMup4NbeVu8nk=</DigestValue>

[p07] </Reference>[p07] </Reference>

[p08] </SignedInfo>[p08] </SignedInfo>

[p09] ... [p09] ...

[p10] <Object>[p10] <Object>

[p11] <SignatureProperties>[p11] <SignatureProperties>

[p12] <SignatureProperty Id="AMadeUpTimeStamp" Target="#MySecondSignature">[p12] <SignatureProperty Id="AMadeUpTimeStamp" Target="#MySecondSignature">

[p13] <timestamp xmlns="http://www.ietf.org/rfcXXXX.txt">[p13] <timestamp xmlns="http://www.ietf.org/rfcXXXX.txt">

[p14] <date>19990908</date>[p14] <date>19990908</date>

[p15] <time>14:34:34:34</time>[p15] <time>14:34:34:34</time>

[p16] </timestamp> [p16] </timestamp>

[p17] </SignatureProperty>[p17] </SignatureProperty>

[p18] </SignatureProperties>[p18] </SignatureProperties>

[p19] </Object>[p19] </Object>

[p20]</Signature> [p20]</Signature>

Page 15: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

15

XML Signature – Les éléments optionnels

KeyInfo

Permet au récepteur d’obtenir la clé nécessaire à valider la signature

KeyName (un nom, un index dans un répertoire de clé, un X500 DN, …)

RetrievalMethod

Certificats : X509, PGP, SPKI

Clés publiques : RSA, DSA

Page 16: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

16

XML Signature – traitements génération

La génération d'une référence La génération d'une référence

Pour chaque objet de données en cours de signature : Pour chaque objet de données en cours de signature :

Appliquer l'élément Transforms comme déterminé par Appliquer l'élément Transforms comme déterminé par l'application (programme), sur l'objet de données ; l'application (programme), sur l'objet de données ;

Calculer la valeur prétraitée sur l'objet de données Calculer la valeur prétraitée sur l'objet de données résultant. résultant.

Créer un élément Reference, incluant l'identification Créer un élément Reference, incluant l'identification (optionnelle) de l'objet de données, tout élément (optionnelle) de l'objet de données, tout élément (optionnel) de transformation, l'algorithme de (optionnel) de transformation, l'algorithme de prétraitement et l'élément DigestValue. (À noter que ce prétraitement et l'élément DigestValue. (À noter que ce sont les formes canoniques de ces références qui sont sont les formes canoniques de ces références qui sont signées pour la génération des signatures et validées signées pour la génération des signatures et validées pour leurs validations) pour leurs validations)

Page 17: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

17

XML Signature – traitements génération

La génération de la signature La génération de la signature

Créer l'élément SignedInfo avec les éléments SignatureMethod, Créer l'élément SignedInfo avec les éléments SignatureMethod, CanonicalizationMethod et Reference ; CanonicalizationMethod et Reference ;

Canoniser puis calculer l'élément SignatureValue sur l'élément Canoniser puis calculer l'élément SignatureValue sur l'élément SignedInfo, en fonction des algorithmes spécifiés dans SignedInfo ; SignedInfo, en fonction des algorithmes spécifiés dans SignedInfo ;

Construire l'élément Signature qui inclut les éléments Construire l'élément Signature qui inclut les éléments SignedInfo, SignedInfo, le ou les Object (si on le désire, le codage peut être différent de celui le ou les Object (si on le désire, le codage peut être différent de celui utilisé pour la signature),utilisé pour la signature),KeyInfo (si requis) KeyInfo (si requis) SignatureValue.SignatureValue.

À noter que si l'élément Signature inclut des références provenant d'un À noter que si l'élément Signature inclut des références provenant d'un même document, la validation [même document, la validation [XMLXML] ou [] ou [XML-schemaXML-schema] du document peut ] du document peut introduire des changements qui faussent la signature. Par conséquent, les introduire des changements qui faussent la signature. Par conséquent, les applications devraient faire attention de traiter le document de manière applications devraient faire attention de traiter le document de manière cohérente ou d'éviter l'utilisation de contributions externes (par exemple, cohérente ou d'éviter l'utilisation de contributions externes (par exemple, les défauts et les entités). les défauts et les entités).

Page 18: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

18

XML Signature – traitements validation

La validation de référence La validation de référence

Canoniser l'élément SignedInfo en fonction de l'élément Canoniser l'élément SignedInfo en fonction de l'élément CanonicalizationMethod dans SignedInfo ; CanonicalizationMethod dans SignedInfo ;

Pour chaque élément Reference dans SignedInfo : Pour chaque élément Reference dans SignedInfo : Obtenir les données à prétraiter. (Par exemple, l'application de signature Obtenir les données à prétraiter. (Par exemple, l'application de signature peut résoudre l'URI et exécuter l'élément Transforms fourni par le peut résoudre l'URI et exécuter l'élément Transforms fourni par le signataire dans l'élément Reference, ou elle peut obtenir le contenu par signataire dans l'élément Reference, ou elle peut obtenir le contenu par d'autres moyens tel que dans un cache local.) ; d'autres moyens tel que dans un cache local.) ; Prétraiter l' objet de données resultant en utilisant l'élément Prétraiter l' objet de données resultant en utilisant l'élément DigestMethod spécifié dans son élément Reference ; DigestMethod spécifié dans son élément Reference ; Comparer la valeur condensée générée avec la valeur de DigestValue Comparer la valeur condensée générée avec la valeur de DigestValue dans l'élément Reference de SignedInfo ; s'il y a une quelconque dans l'élément Reference de SignedInfo ; s'il y a une quelconque divergence, la validation échoue. divergence, la validation échoue.

À noter que l'élément SignedInfo est canonisé lors de la génération des À noter que l'élément SignedInfo est canonisé lors de la génération des référence. L'application (programme) doit s'assurer que l'élément référence. L'application (programme) doit s'assurer que l'élément CanonicalizationMethod n'a pas d'effets secondaires indésirables, tels que CanonicalizationMethod n'a pas d'effets secondaires indésirables, tels que la réécriture des URI, et qu'elle la réécriture des URI, et qu'elle voit ce qui est signévoit ce qui est signé, ce qui est la forme , ce qui est la forme canonique. canonique.

Page 19: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

19

XML Signature – traitements

La validation de signature La validation de signature

Obtenir les informations de la clé à partir de l'élément Obtenir les informations de la clé à partir de l'élément KeyInfoKeyInfo ou d'une ou d'une source externe ; source externe ;

Obtenir la forme canonique de l'élément SignatureMethod en utilisant Obtenir la forme canonique de l'élément SignatureMethod en utilisant l'élément CanonicalizationMethod, puis utiliser le résultat (et les l'élément CanonicalizationMethod, puis utiliser le résultat (et les informations de clé de l'élément KeyInfo précédemment obtenues) pour informations de clé de l'élément KeyInfo précédemment obtenues) pour confirmer la valeur de l'élément SignatureValue sur l'élément SignedInfo. confirmer la valeur de l'élément SignatureValue sur l'élément SignedInfo.

À noter que l'élément À noter que l'élément KeyInfoKeyInfo (ou une certaine version transformée de (ou une certaine version transformée de celui-ci) peut être signé via un élément Reference. La transformation et la celui-ci) peut être signé via un élément Reference. La transformation et la validation de cette référence est orthogonale par rapport à la validation validation de cette référence est orthogonale par rapport à la validation de l'élément Signature qui utilise l'élément KeyInfo lors de l'analyse. de l'élément Signature qui utilise l'élément KeyInfo lors de l'analyse.

De plus, l'attribut URI de l'élément SignatureMethod peut avoir été altéré De plus, l'attribut URI de l'élément SignatureMethod peut avoir été altéré par la canonisation de SignedInfo (par exemple, la transformation d'un par la canonisation de SignedInfo (par exemple, la transformation d'un URI relatif en URI absolu) et c'est la forme canonique qui DOIT être URI relatif en URI absolu) et c'est la forme canonique qui DOIT être utilisée. Cependant, la canonisation requise [utilisée. Cependant, la canonisation requise [XML-C14NXML-C14N] de cette ] de cette spécification ne change pas les URI. spécification ne change pas les URI.

Page 20: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

20

XML EncryptionXML Encryption

Pourquoi ?Pourquoi ?

Différents destinataires doivent pouvoir lire différentes parties du document (exemple d’un document regroupant toutes les notes des étudiants)

La sécurité doit être maintenue de bout en bout

W3C

XML Digital Encryption http://www.w3.org/TR/xmlenc-core/

API Java JSR 106 XML Digital Encryption APIs

Page 21: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

21

XML Encryption - ExempleXML Encryption - Exemple

<?xml version=“1”?><?xml version=“1”?>

<notes><notes>

<etudiant id=“1”><etudiant id=“1”>

<nom>Dupont</nom><nom>Dupont</nom>

<note><note>

<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherData>

<CipherValue>A23B45C56</CipherValue><CipherValue>A23B45C56</CipherValue>

</CipherData></CipherData>

</EncryptedData> </EncryptedData>

</note></note>

</etudiant></etudiant>

<etudiant id=“2”><etudiant id=“2”>

<nom>Durand</nom><nom>Durand</nom>

<note><note>

<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherData>

<CipherValue>A23B45C23</CipherValue><CipherValue>A23B45C23</CipherValue>

</CipherData></CipherData>

</EncryptedData> </EncryptedData>

</note></note>

</etudiant></etudiant>

</notes></notes>

Page 22: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

22

XML EncryptionXML Encryption

Le résultat du chiffrement des données est un Le résultat du chiffrement des données est un élément XML Encryption élément XML Encryption EncryptedDataEncryptedData qui qui contient (via le contenu de l’un de ses enfants) contient (via le contenu de l’un de ses enfants) ou identifie (via une référence d’URI) les ou identifie (via une référence d’URI) les données chiffréesdonnées chiffrées

L’élément L’élément EncryptedData EncryptedData est constitué de est constitué de plusieurs sous éléments.plusieurs sous éléments.

Page 23: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

23

XML EncryptionXML Encryption

Il est possible de chiffrer tout ou partie d’un Il est possible de chiffrer tout ou partie d’un document :document :

On peut chiffrer l’ensemble d’un document On peut chiffrer l’ensemble d’un document

Un élément complet ce qui permet de masquer le Un élément complet ce qui permet de masquer le type d’un élémenttype d’un élément

La valeur d’un élémentLa valeur d’un élément

XML Encryption utilise la cryptographie à clé XML Encryption utilise la cryptographie à clé publique afin d’assurer la confidentialité lors des publique afin d’assurer la confidentialité lors des transfertstransferts

Page 24: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

24

XML EncryptionXML Encryption

EncryptedType : Type abstrait à partir duquel les EncryptedType : Type abstrait à partir duquel les éléments éléments EncryptedDataEncryptedData et et EncryptedKeyEncryptedKey sont sont dérivésdérivés

L’élément L’élément EncryptionMethodEncryptionMethod est optionnel est optionnel

L’élément L’élément ds:KeyInfods:KeyInfo est optionnel est optionnel

L’élément L’élément CipherDataCipherData est obligatoire est obligatoire

L’élément L’élément EncryptionPropertiesEncryptionProperties

L’attribut L’attribut IdId est optionnel est optionnel

L’attribut L’attribut TypeType est optionnel est optionnel

L’attribut L’attribut MimeTypeMimeType est optionnel est optionnel

Page 25: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

25

XML EncryptionXML Encryption

Pour déchiffrer les données il existe plusieurs Pour déchiffrer les données il existe plusieurs méthodes :méthodes :

1.1. Les éléments Les éléments EncryptedDataEncryptedData ou ou EncryptedKeyEncryptedKey spécifient le matériel de gestion des clés via un spécifient le matériel de gestion des clés via un enfant de l’élément enfant de l’élément ds:KeyInfods:KeyInfo

2.2. Un élément Un élément EncryptedKeyEncryptedKey détaché est utilisé détaché est utilisé

3.3. Le destinataire peut déterminer le matériel de Le destinataire peut déterminer le matériel de gestion des clés selon le contexte de l’application gestion des clés selon le contexte de l’application et il n’est donc pas nécessaire de le mentionner et il n’est donc pas nécessaire de le mentionner explicitementexplicitement

Page 26: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

26

XKMSXKMS

XKMS (XKMS (XML Key Management Specification)XML Key Management Specification) a a pour but de normaliser un protocole PKI pour les pour but de normaliser un protocole PKI pour les échanges XML.échanges XML.

Définit les messages de requête et de réponse pour

Requérir (request) un certificat

Renouveler (renew) un certificat

Valider (validate) un certificat (expiration, CRL, OCSP, etc.)

Révoquer (revoke) un certificat (CRL)

Page 27: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

27

XKMSXKMS

Basé sur XML Signature & XML Encryption

W3C

XKMS XML Key Management Specification

Pour la v1 http://www.w3.org/TR/xkms/

Pour la v2 http://www.w3.org/TR/xkms2/

API Java

JSR 104 XML Trust Service APIs

Page 28: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

28

XKMSXKMS

La spécification XKMS est composée de deux La spécification XKMS est composée de deux protocoles :protocoles :

X-KISS (XML Key Information Service Specification) X-KISS (XML Key Information Service Specification) pour les requêtes de localisation et de validation pour les requêtes de localisation et de validation des clés publiques ; des clés publiques ;

X-KRSS (XML Key Registration Service X-KRSS (XML Key Registration Service Specification) pour enregistrer, renouveler, Specification) pour enregistrer, renouveler, révoquer et obtenir des clés. révoquer et obtenir des clés.

Page 29: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

29

XKMS - XKISSXKMS - XKISS

La spécification XKISS définit les deux opérations La spécification XKISS définit les deux opérations suivantes :suivantes :

Locate : localise le service pour obtenir des Locate : localise le service pour obtenir des informations sur la clé publique correspondant à informations sur la clé publique correspondant à l'élément <ds:KeyInfo>. Cette opération n'est pas l'élément <ds:KeyInfo>. Cette opération n'est pas obligée de se prononcer sur la validité des données obligée de se prononcer sur la validité des données liées à la clé ; elle peut permettre de relayer la requête liées à la clé ; elle peut permettre de relayer la requête vers d'autres services ou se comporter comme vers d'autres services ou se comporter comme passerelle vers une PKI.passerelle vers une PKI.

Validate : non seulement elle recherche la clé publique Validate : non seulement elle recherche la clé publique correspondant à l'élément <ds:KeyInfo>, mais elle correspondant à l'élément <ds:KeyInfo>, mais elle assure également que les informations liées à la clé assure également que les informations liées à la clé retournées sont dignes de confiance.retournées sont dignes de confiance.

Page 30: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

30

XKMS - XKRSSXKMS - XKRSS

La spécification du service XKRSS définit quatre opérations :La spécification du service XKRSS définit quatre opérations :

Register : attache des informations à une clé avec un Register : attache des informations à une clé avec un key bindingkey binding. Soit le . Soit le client donne sa clé publique accompagnée d'une preuve de la possession client donne sa clé publique accompagnée d'une preuve de la possession de la clé privée associée, soit le service génère la paire de clés pour le de la clé privée associée, soit le service génère la paire de clés pour le client. Le service peut demander davantage d'informations au client avant client. Le service peut demander davantage d'informations au client avant d'enregistrer la clé publique (et éventuellement la clé privée).d'enregistrer la clé publique (et éventuellement la clé privée).Reissue : un Reissue : un key bindingkey binding enregistré est régénéré. De nouveaux enregistré est régénéré. De nouveaux credentialscredentials sont générés dans la PKI sous-jacente. Même s'il n'y a pas de durée de vie sont générés dans la PKI sous-jacente. Même s'il n'y a pas de durée de vie pour un pour un key bindingkey binding XKMS, les XKMS, les credentialscredentials générés par la PKI peuvent en générés par la PKI peuvent en avoir et doivent donc être régénérés périodiquement.avoir et doivent donc être régénérés périodiquement.Revoke : cette opération permet à un client de détruire les objets de Revoke : cette opération permet à un client de détruire les objets de données attachés à une clé. Par exemple, un certificat données attachés à une clé. Par exemple, un certificat X.509X.509 attaché à attaché à une clé d'un service XKMS est détruit quand cette opération est appelée ;une clé d'un service XKMS est détruit quand cette opération est appelée ;Recover : cette opération permet à un client de recouvrer sa clé privée. Recover : cette opération permet à un client de recouvrer sa clé privée. Afin que cette opération soit possible, il faut que la clé privée ait été Afin que cette opération soit possible, il faut que la clé privée ait été enregistrée par le service. L'une des façons pour le service d'obtenir cette enregistrée par le service. L'une des façons pour le service d'obtenir cette clé est quand le service génère une paire de clés.clé est quand le service génère une paire de clés.

Page 31: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

31

SAMLSAML

SAML SAML ((Security assertion markup languageSecurity assertion markup language)) est est un standard définissant un protocole pour un standard définissant un protocole pour échanger des informations liées à la sécurité. échanger des informations liées à la sécurité. Basé sur le langage Basé sur le langage XMLXML, SAML a été développé , SAML a été développé par OASIS. par OASIS.

Ressources :Ressources :

http://www.oasis-open.org/committees/tc_home.phttp://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security hp?wg_abbrev=security

http://saml.xml.org/ http://saml.xml.org/

Page 32: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

32

SAMLSAML

Un SAML token (une identité portable) permet le transport des attributs de sécurité d’une entité entre différents domaines

Précède les services Web mais a été appliqué à ceux-ci et introduit dans WS-Security

Dans un contexte de commerce électronique, chaque entité conserve son mécanisme d’authentification et SAML permet la confiance inter-domaine.

Chaque organisation fait ou non le choix de faire confiance aux membres d’une autre organisation basé sur les assertions SAML

Page 33: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

33

SAMLSAML

SAML définit trois types d’assertion

Authentification (mot de passe, Kerberos, X.509, etc.)

Autorisation (peut accéder une ressource donnée de la manière spécifiée)

Attribut d’entité (donne de l’information sur une assertion d’authentification ou d’autorisation)

SAML un protocole de requêtes/réponses pour échanger et générer les assertions

Page 34: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

34

SAMLSAML

SAML a pour but de permettre l'authentification unique (en SAML a pour but de permettre l'authentification unique (en anglais anglais single sign-onsingle sign-on ou SSO) sur le web. Les solutions de ou SSO) sur le web. Les solutions de SSO au niveau d'un intranet abondent (en utilisant des SSO au niveau d'un intranet abondent (en utilisant des cookies, par exemple) mais prolonger ces solutions au cookies, par exemple) mais prolonger ces solutions au delà d'un intranet est problématique et a entraîné la delà d'un intranet est problématique et a entraîné la prolifération de technologies différents n’interopérant pas.prolifération de technologies différents n’interopérant pas.

SAML est un standard supporté par un grand nombre de SAML est un standard supporté par un grand nombre de solutions de SSO pour les problèmes de gestion d'identité. solutions de SSO pour les problèmes de gestion d'identité.

SAML suppose que le SAML suppose que le principalprincipal (souvent un utilisateur) (souvent un utilisateur) s'est inscrit auprès d’au moins un fournisseur d'identité. s'est inscrit auprès d’au moins un fournisseur d'identité. Ce fournisseur d'identité est censé fournir des services Ce fournisseur d'identité est censé fournir des services d'authentification locaux au principal. d'authentification locaux au principal.

Page 35: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

35

SAML – Assertion ExempleSAML – Assertion Exemple

Page 36: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

36

XACMLXACML

XACML (Extensible Access Control MarkupLanguage) est est un langage permettant, en conjonction avec SAML, de un langage permettant, en conjonction avec SAML, de fournir un moyen de standardiser les décisions de contrôle fournir un moyen de standardiser les décisions de contrôle d'accès pour les documents XML.d'accès pour les documents XML.

Ce langage rend interopérables les systèmes Ce langage rend interopérables les systèmes d'authentification et d'autorisation.d'authentification et d'autorisation.Formalisme XML pour exprimer des demandes et des réponses de décision d’accès à une ressource protégée

Formalisme XML pour exprimer des politiques(règles) d’autorisation d’accès

OASIShttp://www.oasis-open.org/committees/xacml/repository/cs-xacml-specification-1.1.pdf

Page 37: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

37

XACMLXACML

Page 38: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

38

XACMLXACML

1. Réception d’une requête qui aboutit à un PEP

2. Le PEP formule en XACML la requête que l’agent adresse à la ressource ("Je, soussigné agent XYZ, désire lire la ressource ABC.")

3. Le PEP envoie cette requête XACML à un “PDP” (Policy Decision Point).

4. Le PDP compare la requête XACML avec les règles d’autorisation qui ont été définies pour s’appliquer aux requêtes de ce type, sur cette ressource ABC.

5. Le PDP formule sa décision d’autorisation ("Je consens à ce que l’on réponde à cette requête” ou “je refuse") également en XACML

6. Le PDP envoie sa réponse au PEP qui agit en conséquence (donne accès à la ressource ou renvoie un message d’erreur).

Page 39: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

39

XACMLXACML

Proposition d’implantation de la norme par Proposition d’implantation de la norme par SUN :SUN :

Classes Java JDK > 1.4.0Classes Java JDK > 1.4.0

Permet de décrire une politique d’accèsPermet de décrire une politique d’accès

Guide pour implémenter les autres Guide pour implémenter les autres fonctionnalités et notamment l’utilisation de fonctionnalités et notamment l’utilisation de LDAP et de SAMLLDAP et de SAML

Page 40: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

40

XACML - ExempleXACML - Exemple

Page 41: 1 Les technologies XML Cours 8 : Les Web Services Sécurisation Mars 2011 - Version 1.0 -

41

ConclusionConclusion

Dans un monde « ouvert » il convient de bien Dans un monde « ouvert » il convient de bien évaluer le niveau de sécurisation souhaité afin évaluer le niveau de sécurisation souhaité afin de définir les solutions à mettre en œuvre.de définir les solutions à mettre en œuvre.

L’utilisation des solutions de sécurisation L’utilisation des solutions de sécurisation présentées ici peut s’avérer compliquée et présentées ici peut s’avérer compliquée et coûteuse en terme de performance.coûteuse en terme de performance.