Вы находитесь на странице: 1из 60

SEGURIDAD EN XML Y WEB SERVICES

ndice de contenidos
Introduccin:
Qu es seguridad? Por qu crear esquemas de seguridad para web services?

Iniciativas basadas en XML para seguridad en WS


Firma XML (XML signature) Encriptacin XML XKMS XACML SAML WS-security Cmo trabajan juntas?

Introduccin
Qu es seguridad? Conceptos bsicos
Confidencialidad: Pueden los ojos cotillas verlo? Autenticacin: Eres quien dices ser? Confianza: Me fo de trabajar contigo? No repudio: Puedes decir: Yo no he sido y mentir? Integridad: Me ha llegado alterado o no? Autorizacin: Tienes permiso para tenerlo? Auditora: Puedes probar lo que ha ocurrido sin tener que llamar a los de C.S.I.?

Por qu definir nuevos esquemas de seguridad para web services?

Esquemas de seguridad
Por qu definir nuevos esquemas de seguridad para Web Services? A da de hoy
La interaccin se centra ms sobre internet (frente a un escenario dentro de la intranet) Interaccin entre miembros que previamente no haban establecido una relacin (mutuamente desconocidos). Interaccin programa a programa (frente a interaccin humano a programa) Interaccin ms dinmica (frente a interaccin esttica) El nmero de servicios, proveedores y consumidores se incrementa.

Esquemas de seguridad
Actualidad de los esquemas de seguridad de web services
SSL/TLS/HTTPS
Nivel de seguridad de transporte (frente a nivel de seguridad de mensaje) Seguridad nicamente punto-a-punto; no se lleva a cabo seguridad de mensajes extremo-a-extremo multisalto Seguridad slo cuando los datos viajan por el cable. No hay seguridad de datos fuera del cable. HTTPS no tiene soporte a no repudio. HTTP podra no ser el nico protocolo de transporte usado. No hay medios de firmar o encriptar elementos.

Esquemas de seguridad Puede el modelo actual de seguridad en web services controlar los web services?
La tcnica habitual es HTTPS usando SSL
Comunicacin punto a punto encriptada temporalmente. Transient point-to-point encrypted communication

Los WS pueden usar y usan esta tcnica, pero es insuficiente en algunos aspectos
No es suficientemente granular; LO ENCRIPTA TODO. Es inflexible respecto al enrutamiento; funciona nicamente punto-a-punto No ofrece posibilidad a auditar lo que est pasando No puede evitarse el repudio; los datos no se firman

XML y estndares de seguridad en Web Services

Estndares en seguridad WS
Estndares

Estndares en seguridad WS
XML y esquemas de seguridad WS
XML Digital Signature XML Encryption XKMS (XML Key Management Specification) XACML (eXtensible Access Control Markup Language) SAML (Secure Assertion Markup Language) WS-Security Identity Management & Liberty Project

XML SIGNATURE (firma XML)

XML Signature
Qu es XML Digital Signature (firma digital XML)?
Autenticacin, integridad de datos y no repudio Esfuerzo conjunto de W3C/IETF Sintaxis XML para representar firma de recursos web Procedimientos para calcular y verificar esas firmas Validar por clave no est entre sus objetivos.

XML Signature
Por qu XML Signature? Muy flexible; puede soportar diversos conjuntos de modelos de transaccin de intenet.
Puede firmar elementos individuales de un documento XML Puede firmar mltiples elementos Puede firmar tanto objetos locales como remotos. Permite firmas diferidas que se aplican a un elemento remoto Contenido referenciado por URIs Puede firmar tanto contenido XML como contenido no XML Permite mltiples niveles de firma (diferentes semnticas) para el mismo contenido.
Firma, co-firma (firma conjunta), testigo, notario, etc.

XML Signature

Formularios de firma XML


Enveloped (ensobrado) Enveloping (ms o menos envolvente) Detached (ms o menos diferida)

XML Signature
XML Signature de tipo Enveloped
<doc Id="myID">
<myElement> ... </myElement> <Signature>
... <Reference URI="#myID"/> ...

La firma est ensobrada dentro del contenido que ha sido firmado

</Signature>

</doc>

XML Signature de tipo Enveloping (envolvente)


<Signature>
... <Reference URI="#myRefObjectID" ...
<Object Id="myRefObjectID"> <doc> <myElement> ... </myElement> ... </doc> </Object>

La firma envuelve el contenido que hay que firmar.

</Signature>

XML Signature de tip Detached (diferida).


<Signature>
... <Reference URI="http://www.buy.com/books/purchaseWS"/> ...

</Signature> <signature> es externo al contenido a firmar.

Ejemplo de una compra firmada


<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2000/..." /> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#PurchaseOrder">
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> <DigestValue>qZk+nkcGcWq6piVxeFdcbJzQ2JO=</DigestValue>

</Reference> </SignedInfo> <SignatureValue>IWijxQjUrcXBYc0ei4QxjWo9Kg8Dep9tlWoT4SdeRT87GH03dgh </SignatureValue> <KeyInfo> <X509Data>


<X509SubjectName>CN=Alice Smith, STREET=742 Park Avenue, L=New York, ST=NY, C=US</X509SubjectName>

</X509Data> </KeyInfo> </Signature>

ENCRIPTACIN XML

XML Encryption

Encriptacin XML
Qu es XML Encryption (encriptacin XML)?
Privacidad en los datos (confidencialidad) Define:
Sintaxis XML para datos encriptados Cmo encriptar/desencriptar datos Cmo encriptar ciertas partes de un documento.

Encriptacin XML Encriptacin XML versus SSL


SSL encripta todos los datos transmitidos a travs de un canal SSL La encriptacin XML puede encriptar porciones de datos de forma selectiva.
Por ejemplo, un elemento especfico dentro de un documento XML

Encriptacin XML
Ejemplo de encriptacin XML
<purchaseOrder> <name>Alice Smith</name> <address> ... </address> <EncryptedData xmlns='http://www.w3.org/2000/11/temp-xmlenc'> <EncryptionMethod Algorithm="urn:nist-gov:tripledes-ede-cbc"> <s0:IV xmlns:s0='http://somens'>ABCD</s0:IV> </EncryptionMethod> <KeyInfo xmlns='http://www.w3.org/2000/09/xmldsig#'> <KeyName>SharedKey</KeyName> </KeyInfo> <CipherData>A23B45C56</CipherData> </EncryptedData> <prodNumber>8a32gh19908</prodNumber> <quantity>1</quantity> </purchaseOrder>

Encriptacin XML
Apache tiene un framework bastante bueno para hacer encriptacin de XML: xmlsec Depende de xalan (procesador XSLT, para transformar un documento XML en HTML o en otro XML).

XKMS
XML Key Management Specification

XKMS
Qu es XKMS?
Define un protocolo entre un cliente XKMS y un servidor XKMS para llevar a cabo operaciones de PKI
public key registration (registro de clave pblica) public key validation (validacin de clave pblica) public key discovery (descubrimiento de clave pblica) public key revocation (recocacin de clave pblica)

Un servidor XKMS proporciona un servicio confiable (trust service) en la forma de un Web Service Se usa tanto con firma digital XML (XML signature) como con encriptacin XML (XML Encryption)

XKMS
Por qu XKMS?
PKI es muy importante para los Web Services y el comercio electrnico. Las operaciones de PKI son muy costosas para dispositivos pequeos.
XKMS reduce el trabajo de procesamiento desplazndolo a un servidor XKMS

Las operaciones de PKI son demasiado complejas para muchas aplicaciones.


XKMS facilita la integracin PKI desplazando la complejidad de las operaciones de PKI a un servidor XKMS

XKMS
Especificaciones XKMS
XKISS: XML Key Information Service Spec.
Define un protocolo para la validacin de claves pblicas

XKRSS: XML Key Registration Service Spec.


Define un protocolo para registro, revocacin y recuperacin de claves pblicas

XKMS
Implementaciones Java de XKMS
Verisign: Trust Services Integration Kit
www.xmltrustcenter.org/developer/verisign/tsi

Entrust: XKMS toolkit


xkms.entrust.com/xkms/

Phaos
www.phaos.com/products/xkms/xkms.html

XACML
eXtensible Access Control Markup Language

XACML
Qu es XACML?
Define el ncleo del schema (esquema) y namespace para las polticas de autorizacin en XML:
Se usa contra elementos de un documento XML Es extensible

Muy cercanos al desarrollo SAML


Los Policy Decision Points, PDPs (puntos de poltica de decisin) implicados en SAML podran consultar polticas codificadas en XACML para determinar si se permite el acceso al recurso.

XACML
Por qu XACML?
Estandarizar lenguages de control de acceso en XML Lenguage extensible con semnticas flexibles Costes menores
No es necesario desarrollar lenguajes especficos No es necesario escribir polticas en diferentes lenguages

Ms simple
Los administradores slo necesitan conocer un lenguage

Composicin de polticas
Se pueden combinar las polticas escritas por distintas partes.

XACML
Ejemplo:
Este ejemplo muestra un escenario en el que un usuario intenta acceder a una pgina web. El cdigo proporcionado incluye
Solicitud (request) Poltica (policy) Respuesta (response)

El usuario efecta una solicitud en el que proporciona su identidad (cdigo de usuario) y el grupo al que pertenece, el recurso al que quiere acceder y la accin que quiere efectuar sobre el recurso. La poltica definida afecta a cualquiera que intente cualquier accin sobre el recurso.

La solicitud (request)
<Request>
<Subject>

XACML

<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" DataType="urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name"> <AttributeValue>seth@users.example.com</AttributeValue> </Attribute> <Attribute AttributeId="group" DataType="http://www.w3.org/2001/XMLSchema#string" Issuer="admin@users.example.com"> <AttributeValue>developers</AttributeValue> </Attribute>

</Subject> <Resource>
<Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#anyURI"> <AttributeValue>http://server.example.com/code/docs/developer-guide.html</AttributeValue> </Attribute>

</Resource>
<Action> <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string"> <AttributeValue>read</AttributeValue> </Attribute> </Action>

</Request>

La policy (parte I):


<Subjects>
<AnySubject/>

XACML

<Policy PolicyId="ExamplePolicy" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:permit-overrides"> <Target>

</Subjects>

<Resources> <Resource> <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">


<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">http://server/devguide.html</AttributeValue> <ResourceAttributeDesignator DataType="http://www.w3.org/2001/XMLSchema#anyURI" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"/>

</ResourceMatch> </Resource> </Resources>


<Actions> <AnyAction/> </Actions>

</Target>

..

La policy (parte II):


<Rule RuleId="ReadRule" Effect="Permit"> <Target>
<Subjects> </Subjects> <Resources> </Resources> <Actions> <Action> <AnyResource/> <AnySubject/>

XACML

<ActionMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal"> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</AttributeValue> <ActionAttributeDesignator DataType="http://www.w3.org/2001/XMLSchema#string" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"/> </ActionMatch> </Action> </Actions>

</Target> <Condition FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal">


<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only"> <SubjectAttributeDesignator DataType="http://www.w3.org/2001/XMLSchema#string" AttributeId="group"/> </Apply> <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">developers</AttributeValue>

</Condition> </Rule>

</Policy>.

XACML

XACML
La respuesta:
<Response>
<Result> <Decision>Permit</Decision> <Status> <StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:ok"/> </Status> </Result>

</Response>

SAML
Security Assertion Markup Language

SAML
Qu es SAML?
Define un framework XML para intercambiar informacin de autenticacin y autorizacin. Existen varias declaraciones (assertion) XML:
Credenciales, autenticacin, atributo, autorizacin, etc. Protocolo de tipo Request&Response

Permite habilitar Single-Sign-On (SSO) Es un estndar OASIS

SAML
Por qu SAML?
Estn apareciendo estndares para numerosas facetas de comercio colaborativo, como
Transacciones de negocio (Por Ejemplo ebXML) Interaccin de software (PEj.- SOAP)

Pero no est estandarizado un medio para comunicar esas propiedades de seguridad


Pobre acoplamiento entre componentes

SAML
Casos de uso para compartir informacin de seguridad a travs de SAML
SAML ha desarrollado en la lnea de tres casos de uso para acometer sus diseos y requerimientos:
Single Sign-on -SSO- (Autenticacin unificada) Transaccin distribuda Servicio de autorizacin

SAML
Escenario hipottico de SSO:
A los administradores del domino juntadeandalucia.es se les permite el acceso a juntaex.es sin hacer relogin. Lo recproco tambin se cumplira.

SAML
Escenario de transaccin distribuda.
Un comprador de un coche, contrata un seguro de automvil en seguros.com , que est afiliada a coches.com.

SAML
Escenario de servicio de autenticacin
Un empleado de la Junta de Andaluca (JA) se loga directamente en guadalinex.org que efecta su propia autorizacin contra juntadeandalucia.es

SAML
SAML
Es un framework basado en XML para intercambiar informacin XML
Declaraciones de seguridad (security assertions) codificadas en XML Protocolo request/response codificado en XML Reglas de uso de assertions con frameworks estndares de mensajera y transporte.

SAML
SAML Assertions Las assertions son declaraciones o descripciones de un hecho, asociados a alguien. Las assertions SAML son conjuntos de uno o ms de tres clases de sentencia (statement) acerca de un sujeto (subject).
Autenticacin (authentication statement) Atributo (attibute statement) Autorizacin (authorization statement)

SAML
Authentication statement
Un authority assert declara que:
El sujeto S ha sido autenticado Con las intenciones I En la hora H

Diseado con el objetivo de usarlo en servicios de Single Sign-On.

SAML
Ejemplo de assertion con un authentication statement:
<saml:Assertion > <saml:AuthenticationStatement AuthenticationMethod=password AuthenticationInstant=2001-12-03T10:02:00Z> <saml:Subject> <saml:NameIdentifier SecurityDomain=sun.com Name=Sang /> <saml:ConfirmationMethod> http://core-25/sender-vouches </saml:ConfirmationMethod> </saml:Subject> </saml:AuthenticationStatement> </saml:Assertion>

SAML
Ejemplo de assertion con dos attribute statement
<saml:Assertion > <saml:AttributeStatement> <saml:Subject>..Sang..</saml:Subject>
<saml:Attribute AttributeName=PaidStatus AttributeNamespace=http://smithco.com>
<saml:AttributeValue> PaidUp </saml:AttributeValue>

</saml:Attribute> <saml:Attribute AttributeName=CreditLimit AttributeNamespace=http://smithco.com>


<saml:AttributeValue> <my:amount currency=USD>500.00</my:amount> </saml:AttributeValue>

</saml:Attribute>

</saml:AttributeStatement> </saml:Assertion>

SAML
Authorization statement
Una autoridad decide:
Si conceder o no acceso a la request del subject S Para el acceso de tipo A al recurso R Proporcionando la credencial E

El sujeto (subject) puede ser un humano o un programa El recurso puede ser una pgina web o un web service.

SAML
Ejemplo de assertion con authorization statement
<saml:Assertion > <saml:AuthorizationStatement Decision=Permit Resource=http://jonesco.com/rpt_12345.html> <saml:Subject></saml:Subject> <saml:Actions ActionNamespace=http://core-25/rwedc> <saml:Action>Read</saml:Action> </saml:Actions> </saml:AuthorizationStatement> </saml:Assertion>

WS-Security

WS-Security
Especificacin WS-Security
Conjunto de extensiones SOAP de mensajera segura extremo-a-extremo
Esquemas de seguridad en el nivel de mensaje

Se firman y encriptan mensajes SOAP aadiendo tokens de seguridad a los mensajes SOAP
Cualquier combinacin de partes de mensaje: bloques de cabecera, cuerpo, adjuntos

Proporciona
Integridad Autenticacin Privacidad

WS-Security
WS-Security
Mltiples modelos de seguridad
username/password (usuario/contrasea) Certificate (certificado)

Mltiples tecnologas de seguridad


Kerberos PKI

Mltiples tipos de tokens de seguridad


Kerberos ticket X509 certificate SAML assertions

WS-Security
Ejemplo de mensaje SOAP con un token username
<S:Envelope xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext"> <S:Header> ... <wsse:Security> <wsse:UsernameToken> <wsse:Username>cursoSOA</wsse:Username> <wsse:Password>contrasea</wsse:Password> </wsse:UsernameToken> </wsse:Security> ... </S:Header> ... </S:Envelope>

Unindolo todo: cmo hacer que estas tecnologas trabajen juntas

Unindolo todo
Las opciones ms prcticas: SAML y XACML
XACML puede usarse para definir control de acceso/polticas sobre las bases de controlar solicitudes assertion SAML

SAML y WS-Security
Las assertions SAML pueden transportarse como tokens de seguridad definidos en WS-Security.

RECURSOS PARA APRENDER MS

Recursos
Recursos:
W3C XML Digital Signature
www.w3.org/Signature/

W3C XML Encryption


www.w3.org/Encryption/

XKMS
www.w3.org/TR/xkms/

XACML
www.oasis-open.org/committees/xacml/

SAML
oasis-open.org/committees/security

FIN

Вам также может понравиться