Академический Документы
Профессиональный Документы
Культура Документы
ndice de contenidos
Introduccin:
Qu es seguridad? Por qu crear esquemas de seguridad para web services?
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.?
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
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
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
XML Signature
XML Signature de tipo Enveloped
<doc Id="myID">
<myElement> ... </myElement> <Signature>
... <Reference URI="#myID"/> ...
</Signature>
</doc>
</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
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
XKMS
Especificaciones XKMS
XKISS: XML Key Information Service Spec.
Define un protocolo para la validacin de claves pblicas
XKMS
Implementaciones Java de XKMS
Verisign: Trust Services Integration Kit
www.xmltrustcenter.org/developer/verisign/tsi
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
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>
XACML
</Subjects>
</Target>
..
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>
</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
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)
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
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: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)
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
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
Recursos:
W3C XML Digital Signature
www.w3.org/Signature/
XKMS
www.w3.org/TR/xkms/
XACML
www.oasis-open.org/committees/xacml/
SAML
oasis-open.org/committees/security
FIN