2. • Índice de contenidos
− Introducción:
• ¿Qué es seguridad?
• ¿Por qué crear esquemas de seguridad para web services?
− Iniciativas basadas en XML para seguridad en WS
• Firma XML (XML signature)
• Encriptación XML
• XKMS
• XACML
• SAML
• WS-security
• ¿Cómo trabajan juntas?
3. Introducción
• ¿Qué es seguridad? Conceptos básicos
− Confidencialidad: ¿Pueden los ojos cotillas verlo?
− Autenticación: ¿Eres quien dices ser?
− Confianza: ¿Me fío de trabajar contigo?
− No repudio: ¿Puedes decir: “Yo no he sido” y mentir?
− Integridad: ¿Me ha llegado alterado o no?
− Autorización: ¿Tienes permiso para tenerlo?
− Auditoría: ¿Puedes probar lo que ha ocurrido sin tener que
llamar a los de C.S.I.?
5. Esquemas de seguridad
• ¿Por qué definir nuevos esquemas de seguridad para
Web Services? A día de hoy…
− La interacción se centra más “sobre internet” (frente a un
escenario “dentro de la intranet”)
− Interacción entre miembros que previamente no habían
establecido una relación (mutuamente desconocidos).
− Interacción programa a programa (frente a interacción humano
a programa)
− Interacción más dinámica (frente a interacción estática)
− El número de servicios, proveedores y consumidores se
incrementa.
6. 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 sólo cuando los datos viajan por el cable. No hay seguridad
de datos fuera del cable.
• HTTPS no tiene soporte a no repudio.
• HTTP podría no ser el único protocolo de transporte usado.
• No hay medios de firmar o encriptar elementos.
7. Esquemas de seguridad
• ¿Puede el modelo actual de seguridad en web
services controlar los web services?
− La técnica habitual es HTTPS usando SSL
• Comunicación punto a punto encriptada temporalmente.
• Transient point-to-point encrypted communication
− Los WS pueden usar y usan esta técnica, 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
12. XML Signature
• ¿Qué es XML Digital Signature (firma digital XML)?
− Autenticación, 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.
13. XML Signature
• ¿Por qué XML Signature?
• Muy flexible; puede soportar diversos conjuntos de
modelos de transacción de intenet.
− Puede firmar elementos individuales de un documento XML
− Puede firmar múltiples 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 múltiples niveles de firma (diferentes semánticas)
para el mismo contenido.
• Firma, co-firma (firma conjunta), testigo, notario, etc.
14. XML Signature
• Formularios de firma XML
− Enveloped (ensobrado)
− Enveloping (más o menos “envolvente”)
− Detached (más o menos “diferida”)
15. XML Signature
• XML Signature de tipo Enveloped
<doc Id="myID">
<myElement>
...
</myElement>
<Signature>
La firma está “ensobrada” dentro
...
del contenido que ha sido firmado
<Reference URI="#myID"/>
...
</Signature>
</doc>
16. XML Signature
• XML Signature de tipo Enveloping (envolvente)
<Signature>
...
<Reference URI="#myRefObjectID"
...
<Object Id="myRefObjectID">
<doc> La firma envuelve el contenido
<myElement>
que hay que firmar.
...
</myElement>
...
</doc>
</Object>
</Signature>
17. XML Signature
• XML Signature de tip Detached (diferida).
<Signature>
...
<Reference URI="http://www.buy.com/books/purchaseWS"/>
...
</Signature>
<signature> es externo al contenido a firmar.
18. XML Signature
• 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>
20. Encriptación XML
• ¿Qué es XML Encryption (encriptación XML)?
− Privacidad en los datos (confidencialidad)
− Define:
• Sintaxis XML para datos encriptados
• Cómo encriptar/desencriptar datos
• Cómo encriptar ciertas partes de un documento.
21. Encriptación XML
• Encriptación XML versus SSL
− SSL encripta todos los datos transmitidos a través de
un canal SSL
− La encriptación XML puede encriptar porciones de
datos de forma selectiva.
• Por ejemplo, un elemento específico dentro de un
documento XML
22. Encriptación XML
• Ejemplo de encriptación 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>
23. Encriptación XML
• Apache tiene un framework bastante bueno para hacer
encriptación de XML: xmlsec
• Depende de xalan (procesador XSLT, para transformar
un documento XML en HTML o en otro XML).
25. 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 pública)
• public key validation (validación de clave pública)
• public key discovery (descubrimiento de clave pública)
• public key revocation (recocación de clave pública)
− 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
encriptación XML (XML Encryption)
26. XKMS
• ¿Por qué XKMS?
− PKI es muy importante para los Web Services y el comercio
electrónico.
− Las operaciones de PKI son muy costosas para dispositivos
pequeños.
• XKMS reduce el trabajo de procesamiento desplazándolo a un servidor
XKMS
− Las operaciones de PKI son demasiado complejas para
muchas aplicaciones.
• XKMS facilita la integración PKI desplazando la complejidad de las
operaciones de PKI a un servidor XKMS
27. XKMS
• Especificaciones XKMS
− XKISS: XML Key Information Service Spec.
• Define un protocolo para la validación de claves públicas
− XKRSS: XML Key Registration Service Spec.
• Define un protocolo para registro, revocación y recuperación de claves
públicas
30. XACML
• ¿Qué es XACML?
− Define el núcleo del schema (esquema) y namespace para las
políticas de autorización en XML:
• Se usa contra elementos de un documento XML
• Es extensible
− Muy cercanos al desarrollo SAML
• Los Policy Decision Points, PDPs (puntos de política de decisión)
implicados en SAML podrían consultar políticas codificadas en XACML
para determinar si se permite el acceso al recurso.
31. XACML
• ¿Por qué XACML?
− Estandarizar lenguages de control de acceso en XML
− Lenguage extensible con semánticas flexibles
− Costes menores
• No es necesario desarrollar lenguajes específicos
• No es necesario escribir políticas en diferentes lenguages
− Más simple
• Los administradores sólo necesitan conocer un lenguage
− Composición de políticas
• Se pueden combinar las políticas escritas por distintas partes.
32. XACML
• Ejemplo:
− Este ejemplo muestra un escenario en el que un usuario
intenta acceder a una página web.
− El código proporcionado incluye
• Solicitud (request)
• Política (policy)
• Respuesta (response)
− El usuario efectúa una solicitud en el que proporciona su
identidad (código de usuario) y el grupo al que pertenece, el
recurso al que quiere acceder y la acción que quiere efectuar
sobre el recurso.
− La política definida afecta a cualquiera que intente cualquier
acción sobre el recurso.
38. SAML
• ¿Qué es SAML?
− Define un framework XML para intercambiar información de
autenticación y autorización.
− Existen varias declaraciones (assertion) XML:
• Credenciales, autenticación, atributo, autorización, etc.
• Protocolo de tipo Request&Response
− Permite habilitar Single-Sign-On (SSO)
− Es un estándar OASIS
39. SAML
• ¿Por qué SAML?
− Están apareciendo estándares para numerosas facetas de
comercio colaborativo, como
• Transacciones de negocio (Por Ejemplo ebXML)
• Interacción de software (PEj.- SOAP)
− Pero no está estandarizado un medio para comunicar esas
propiedades de seguridad
• Pobre acoplamiento entre componentes
40. SAML
• Casos de uso para compartir información de seguridad
a través de SAML
− SAML ha desarrollado en la línea de tres “casos de uso” para
acometer sus diseños y requerimientos:
• Single Sign-on -SSO- (Autenticación unificada)
• Transacción distribuída
• Servicio de autorización
41. SAML
• Escenario hipotético de SSO:
− A los administradores del domino juntadeandalucia.es se les
permite el acceso a juntaex.es sin hacer relogin. Lo recíproco
también se cumpliría.
42. SAML
• Escenario de transacción distribuída.
− Un comprador de un coche, contrata un seguro de automóvil
en seguros.com , que está afiliada a coches.com.
43. SAML
• Escenario de servicio de autenticación
− Un empleado de la Junta de Andalucía (JA) se loga
directamente en guadalinex.org que efectúa su propia
autorización contra juntadeandalucia.es
44. SAML
• SAML
− Es un framework basado en XML para intercambiar
información XML
• Declaraciones de seguridad (security assertions) codificadas en XML
• Protocolo request/response codificado en XML
• Reglas de uso de assertions con frameworks estándares de mensajería
y transporte.
45. SAML
• SAML Assertions
− Las assertions son declaraciones o descripciones de
un “hecho”, asociados a “alguien”.
− Las assertions SAML son conjuntos de uno o más de
tres clases de “sentencia” (statement) acerca de un
“sujeto” (subject).
• Autenticación (authentication statement)
• Atributo (attibute statement)
• Autorización (authorization statement)
46. SAML
• Authentication statement
− Un authority assert declara que:
• El sujeto S ha sido autenticado
• Con las intenciones I
• En la hora H
− Diseñado con el objetivo de usarlo en servicios de Single
Sign-On.
47. 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>
49. 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 página web o un web service.
52. WS-Security
• Especificación WS-Security
− Conjunto de extensiones SOAP de mensajería segura
extremo-a-extremo
• Esquemas de seguridad en el nivel de mensaje
− Se firman y encriptan mensajes SOAP añadiendo tokens de
seguridad a los mensajes SOAP
• Cualquier combinación de partes de mensaje: bloques de cabecera,
cuerpo, adjuntos…
− Proporciona
• Integridad
• Autenticación
• Privacidad
53. WS-Security
• WS-Security
− Múltiples modelos de seguridad
• username/password (usuario/contraseña)
• Certificate (certificado)
− Múltiples tecnologías de seguridad
• Kerberos
• PKI
− Múltiples tipos de tokens de seguridad
• Kerberos ticket
• X509 certificate
• SAML assertions
54. 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>contraseña</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
...
</S:Header>
...
</S:Envelope>
56. Uniéndolo todo
• Las opciones más prácticas:
− SAML y XACML
• XACML puede usarse para definir control de
acceso/políticas 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.