Seguridad Para Servicios Web
-
Upload
jose-selman -
Category
Documents
-
view
18.124 -
download
0
description
Transcript of Seguridad Para Servicios Web
<Seguridad en Web <Seguridad en Web Services>Services>
Servicios Web y Frameworks de Servicios Web y Frameworks de DesarrolloDesarrollo
<José Miguel Selman Grez><José Miguel Selman Grez>
Lunes 3 de Julio de 2006Lunes 3 de Julio de 2006
En esta En esta SesiónSesión……
Porque necesitamos seguridadPorque necesitamos seguridad– MotivaciónMotivación
Desafíos introducidos por Servicios WebDesafíos introducidos por Servicios Web Presentación Tecnologías seguridad Presentación Tecnologías seguridad
para XMLpara XML Presentación Tecnologías seguridad Presentación Tecnologías seguridad
para Servicios Webpara Servicios Web Discusión y RecomendacionesDiscusión y Recomendaciones
Seguridad como un Seguridad como un habilitadorhabilitador Integración de AplicacionesIntegración de Aplicaciones EAIEAI
– CRMsCRMs– ERPsERPs
B2C, B2B, etc.B2C, B2B, etc. Automatización de Procesos de NegocioAutomatización de Procesos de Negocio Portales de Agregación de InformaciónPortales de Agregación de Información ……
Arquitectura General Arquitectura General Aplicaciones Aplicaciones EmpresarialesEmpresariales
ClientesServidor
WebServidor
App.
ServidorApp.
ServidorApp.
AccesoDatos
Conectores aSistemas Legados
Bases deDatos
Seguridad Back-Office
• Seguridad Mainframe• Seguridad RDBMS• etc.
Seguridad Middleware
• Roles• Seguridad Componentes• Criptografía• etc.
Seguridad Perímetro
• Firewalls/VPNs• Criptografía• Seguridad Servidores Web• Detección de Intrusión• etc.
Plataformas Predominantes: J2EE y .NET
¿De qué debemos ¿De qué debemos proteger nuestras proteger nuestras aplicaciones?aplicaciones?
Violación de Confidencialidad Violación de Integridad
Ataque de Repetición
Ataques AplicacionesAtaques Aplicaciones
Ataque del Intermediario (conocido como “Man in the Middle”)
Ataque típicos Ataque típicos Aplicaciones WebAplicaciones Web Manipulación de parámetrosManipulación de parámetros
– http://www.sitio.com/listadoProductos.do?maxResults=100
¿maxResults=999999999?¿maxResults=999999999?– Ataques SQL (SQL Ataques SQL (SQL InjectionInjection))
http://www.sitio.com/listTabla.aspx?orderBy=columna1– SELECT * FROM tabla ORDER BY columna1SELECT * FROM tabla ORDER BY columna1
Recursos no publicadosRecursos no publicados– http://www.sitio.com/documentos/documento1.html
¿http://www.sitio.com/documentos/?¿http://www.sitio.com/documentos/? ¿http://www.sitio.com/test/?¿http://www.sitio.com/test/? ¿http://www.sitio.com/prueba/?¿http://www.sitio.com/prueba/?
Ataques a los servidoresAtaques a los servidores– Buffer OverflowBuffer Overflow– Etc.Etc.
Etc.Etc.
Requerimientos de Requerimientos de SeguridadSeguridad AutenticaciónAutenticación AutorizaciónAutorización ConfidencialidadConfidencialidad IntegridadIntegridad No repudiaciónNo repudiación Alta DisponibilidadAlta Disponibilidad
Desafíos de Seguridad Desafíos de Seguridad Servicios WebServicios Web Seguridad basada en el usuario Seguridad basada en el usuario
finalfinal Mantener la seguridad al pasar Mantener la seguridad al pasar
por múltiples Servicios (“nodos”)por múltiples Servicios (“nodos”) Abstracción de la seguridad del Abstracción de la seguridad del
transporte subyacentetransporte subyacente
Seguridad basada en Seguridad basada en el usuario finalel usuario final
Seguridad a través de múltiples Seguridad a través de múltiples Servicios y múltiples Servicios y múltiples transportestransportes
Physical
Data Link
Network
Transport
Session
Presentation
Application
Physical
Data Link
Network
Transport
Session
Presentation
Application
Usuario Sitio Web Servicio Web
HTTP JMS
Abstracción de Seguridad del transporte subyacenteAbstracción de Seguridad del transporte subyacente Seguridad PersistenteSeguridad Persistente
Contexto de Seguridad 1
Contexto de Seguridad 2
…
Arquitectura General Arquitectura General Servicios WebServicios Web
ComunicacionesHTTP, SMTP, FTP, JMS, IIOP, …
Mensajes
Extensiones SOAPEntrega Confiable, Correlación, Transacciones…
SOAP
DescripcionesWSDL
ProcesosDescubrimiento, Agregación, Coreografía, …
XM
L, DTD
, XM
L Sch
em
a
SEGURIDAD
ADMINISTRACIÓN
Opciones de Seguridad Opciones de Seguridad Capa de TransporteCapa de Transporte
Servicio de Servicio de SeguridadSeguridad TecnologíasTecnologías
IntegridadIntegridad SSL/TLSSSL/TLS
ConfidencialidadConfidencialidad SSL/TLSSSL/TLS
Autenticación Autenticación Proveedor (Servidor)Proveedor (Servidor)
SSL/TLSSSL/TLS
Autenticación Autenticación Consumidor (Cliente)Consumidor (Cliente)
SSL/TLS con autenticación de clienteSSL/TLS con autenticación de cliente
HTTP BasicHTTP Basic
HTTP DigestHTTP Digest
HTTP AttributesHTTP Attributes
SSL/TLSSSL/TLSHTTP BasicHTTP Basic
HTTP DigestHTTP Digest
Seguridad para Seguridad para Servicios WebServicios Web Los servicios de seguridad Los servicios de seguridad
pueden ser provistos por:pueden ser provistos por:– Capa de TransporteCapa de Transporte– Capa de MensajeríaCapa de Mensajería– AmbasAmbas
Existencia de gran cantidad de Existencia de gran cantidad de especificaciones y alternativasespecificaciones y alternativas
Seguridad en la Capa Seguridad en la Capa de Mensajeríade Mensajería
Transporte
(HTTP, SMTP, FTP, MQ, etc.)
Envelope (XML)
Header Body
• RPC/Encoded• Document/Literal
• Información Rutas• Transacciones• Entrega Confiable• Seguridad
Interrelación Interrelación Tecnologías/Especificaciones de Tecnologías/Especificaciones de Seguridad Servicios WebSeguridad Servicios Web
…
TCP/IP
Capa de Transporte (HTTP, FTP, SMTP, MQ, etc.)
Seguridad Capa de Transporte (TLS/SSL)
XML Signature
XML Encryption
SOAP
WS Security
SAML XKMS Otras Alto Nivel
Infr
aest
ruct
ura
de R
ed
Fram
ew
ork
s X
ML
Fuente: “Securing Web Services With WS-Security. Demystifying WS-Security, WS-Policy, SAML, XML Signature, and XML Encryption”, Jothy Rosenberg and David Remy
XML SignatureXML Signature
Esfuerzo conjunto IETF/W3CEsfuerzo conjunto IETF/W3C Su objetivo es firmar digitalmente:Su objetivo es firmar digitalmente:
– Documentos XMLDocumentos XML– Partes de Documentos XMLPartes de Documentos XML– Objetos ExternosObjetos Externos
Utiliza tecnologías maduras de encriptación asimétrica Utiliza tecnologías maduras de encriptación asimétrica y generación de y generación de hasheshashes– SHA1SHA1– RSARSA– ……
Requiere de una infraestructura de llaves públicas Requiere de una infraestructura de llaves públicas para proveer:para proveer:– IdentidadIdentidad– No repudiaciónNo repudiación
Tipos de Firmas XML Tipos de Firmas XML SignatureSignature
<Signature> <Reference>
<ElementoFirmado>
Enveloping
<ElementoEnvolvente>
<Signature> <Reference>
Enveloped
<DocumentoXML>
<Signature> <Reference>
Detached
<ElementoDestino>
CanonicalizaciónCanonicalización
<OrdenDeCompra>
<Productos>
<CodProducto>
SKU10023
</CodProducto>
</Productos>
</OrdenDeCompra>
<OrdenDeCompra><Productos><CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
• c14n• Consenso común• XSLT
Estructura XML Estructura XML SignatureSignature
<Signature ID?>
<SignedInfo>
<CanonicalizationMethod/>
<SignatureMethod/>
(<Reference>
(<Transforms>)?
<DigestMethod>
<DigestValue>
</Reference>)+
</SignedInfo>
<SignatureValue>
(<KeyInfo>)?
(<Object ID?>)*
</Signature>
XML Signature: XML Signature: EnvelopedEnveloped
<OrdenDeCompra id=”ODC200504251002”>
<SKU>12345678</SKU>
<Cantidad>17</Cantidad>
<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<SignedInfo>
<Reference URI=”#ODC200504251002”/>
</SignedInfo>
<SignatureValue>…</SignatureValue>
<KeyInfo>…</KeyInfo>
</Signature>
</OrdenDeCompra>
XML Signature: XML Signature: EnvelopingEnveloping
<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<SignedInfo>
<Reference URI=”#10022334”/>
</SignedInfo>
<SignatureValue>…</SignatureValue>
<KeyInfo>…</KeyInfo>
<Object>
<SignedItem id=”10022334”>Información a ser Firmada</SignedItem>
</Object>
</Signature>
XML Signature: XML Signature: DetachedDetached
<Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”>
<SignedInfo>
<Reference URI=”http://www.jselman.com/imagen.jpg”/>
</SignedInfo>
<SignatureValue>…</SignatureValue>
<KeyInfo>…</KeyInfo>
</Signature>
Recomendaciones Recomendaciones Seguridad XML Seguridad XML SignatureSignature Solamente lo firmado es seguroSolamente lo firmado es seguro
– Especial cuidado con desechos ocurridos por Especial cuidado con desechos ocurridos por transformacionestransformaciones
Solamente lo que se ve puede ser firmadoSolamente lo que se ve puede ser firmado– Por ejemplo si un contrato fue presentado a un Por ejemplo si un contrato fue presentado a un
usuario mediante el uso de XML y una plantilla usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS)XSLT, ambos deben ser firmados (WYSIWYS)
Ver lo que es firmadoVer lo que es firmado– Especial cuidado con referencias a objetos que Especial cuidado con referencias a objetos que
“deberían” contener cierto elemento.“deberían” contener cierto elemento.
XML EncryptionXML Encryption
Posterior a XML SignaturePosterior a XML Signature La información cifrada es expresada en un formato común La información cifrada es expresada en un formato común
XMLXML Trozos de un documento XML pueden ser selectivamente Trozos de un documento XML pueden ser selectivamente
cifradoscifrados Utiliza algoritmos y técnicas de encriptación madurasUtiliza algoritmos y técnicas de encriptación maduras
– SimétricaSimétrica– AsimétricaAsimétrica– Híbrida (llave de sesión)Híbrida (llave de sesión)
Algunos AlgoritmosAlgunos Algoritmos– DESDES– 3DES3DES– AESAES– ……
ConfidencialidadConfidencialidad
Simétrica
Asimétrica
Llave de SesiónLlave de Sesión
Estructura XML Estructura XML EncryptionEncryption
<EncryptedData Id? Type? MimeType? Encoding?><EncryptionMethod/>?<ds:KeyInfo>
<EncryptedKey>?<AgreementMethod>?<ds:KeyName>?<ds:RetrievalMethod>?<ds:*>?
</ds:KeyInfo><CipherData>
<CipherValue>?<CipherReference URI?>?
</CipherData><EncryptionProperties>?
</EncryptedData>
Ejemplo XML Ejemplo XML EncryptionEncryption
<purchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <Payment> <CardId> 123654-8988889-9996874 </CardId> <CardName>visa</CardName> <ValidDate>12-10-2004</ValidDate> </Payment></purchaseOrder>
<PurchaseOrder> <Order> <Item>book</Item> <Id>123-958-74598</Id> <Quantity>12</Quantity> </Order> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element‘ xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C564587</CipherValue> </CipherData> </EncryptedData></PurchaseOrder>
XKMSXKMS
XML Key Management SpecificationXML Key Management Specification Infraestructura de llave pública (PKI)Infraestructura de llave pública (PKI)
– Repositorio de credencialesRepositorio de credenciales– Asociación a identidadesAsociación a identidades
VentajasVentajas– Complejidad reducida para los clientesComplejidad reducida para los clientes– Facilita la codificaciónFacilita la codificación– Administración de la confianza centralizadaAdministración de la confianza centralizada– ……
PKIServicios Web XKMS
Aplicaciones
SAMLSAML
Security Assertion Markup LanguageSecurity Assertion Markup Language Especificación mantenida por OASISEspecificación mantenida por OASIS Transportador de identidadesTransportador de identidades ““Confianza Portable”Confianza Portable” Requiere preestablecimiento de confianza entre los Requiere preestablecimiento de confianza entre los
dominiosdominios Potencial uso para herramientas de Potencial uso para herramientas de Single Sign-OnSingle Sign-On Aserciones en formato XMLAserciones en formato XML
– AutenticaciónAutenticación– AtributosAtributos– AutorizaciónAutorización
¡Se pueden firmar con XML Signature!¡Se pueden firmar con XML Signature!
Aserciones SAMLAserciones SAML
AutenticaciónAutenticación– El Sujeto El Sujeto SS fue identificado con el método fue identificado con el método MM a la hora a la hora TT..– Los métodos de autenticación soportadosLos métodos de autenticación soportados
ContraseñaContraseña Ticket KerberosTicket Kerberos Contraseña Remota Segura (RSP)Contraseña Remota Segura (RSP) Token de HardwareToken de Hardware Certificado de Cliente SSLCertificado de Cliente SSL Llave Pública en un contenedor X.509Llave Pública en un contenedor X.509 Llave Pública PGPLlave Pública PGP Llave Pública SPKILlave Pública SPKI Llave Pública XKMSLlave Pública XKMS Firma Digital XML SignatureFirma Digital XML Signature
AtributosAtributos– El sujeto El sujeto SS posee los siguientes atributos: posee los siguientes atributos:
Atributo 1Atributo 1: : aa Atributo 2Atributo 2: b: b …… Atributo nAtributo n: : nn
– Este tipo de información esta típicamente contenida en servidores LDAP. Este tipo de información esta típicamente contenida en servidores LDAP. AutorizaciónAutorización
– Al sujeto Al sujeto SS se puede autorizar el acceso tipo se puede autorizar el acceso tipo AA sobre el recurso sobre el recurso RR dada la dada la evidencia evidencia EE. .
Ejemplo Aserción de Ejemplo Aserción de AutenticaciónAutenticación
<saml:AssertionMajorVersion=”1” MinorVersion=”0”AssertionID=”10.254.1.101.12345”Issuer=”jselman.com”IssueInstant=”2005-05-07T22:02:00Z”><saml:Conditions NotBefore=”2005-05-07T22:02:00Z” NotAfter=”2005-05-
07T22:09:00Z” /><saml:AuthenticationStatement
AuthenticationMethod=”password”AuthenticationInstant=”2005-05-07T22:02:00Z”><saml:Subject>
<saml:NameIdentifier SecurityDomain=”jselman.com” Name=”José Miguel” />
</saml:Subject></saml:AuthenticationStatement>
</saml:Assertion>
Arquitectura SAMLArquitectura SAML
SAML
Aserción deAutenticación
Aserción deAtributos
Aserción deAutorización
Autoridad de Autenticación
Autoridad de Atributos
Punto de Decisiónde Políticas (PDP)
Recolector de Credenciales
Entidad deSistema
Punto de HacerValer Políticas (PEP)
RequerimientoAplicación
Política Política Política
WS-SecurityWS-Security
Esfuerzo conjunto de IBM, Microsoft y VeriSignEsfuerzo conjunto de IBM, Microsoft y VeriSign– En Abril de 2002 publican “Security in a Web Services En Abril de 2002 publican “Security in a Web Services
World: A Proposed Architecture and Roadmap”World: A Proposed Architecture and Roadmap” Hoy mantenida por OASISHoy mantenida por OASIS Su objetivo es Proveer seguridad a SOAPSu objetivo es Proveer seguridad a SOAP Se enfoca en la correcta y efectiva aplicación Se enfoca en la correcta y efectiva aplicación
de tecnologías comode tecnologías como– XML SignatureXML Signature– XML EncryptionXML Encryption– SAMLSAML
Provee un contenedor para artefactos de Provee un contenedor para artefactos de seguridadseguridad
El encabezado El encabezado WS-SecurityWS-Security Tokens de seguridadTokens de seguridad
– Cero, uno ó más tokens de seguridad Cero, uno ó más tokens de seguridad – Usualmente no más de unoUsualmente no más de uno
Elementos de contenido cifrado con XML Elementos de contenido cifrado con XML EncryptionEncryption– Cero, uno ó más de elementos XML EncryptionCero, uno ó más de elementos XML Encryption– Estos pueden serEstos pueden ser
<ReferenceList><ReferenceList> <EncryptedKey><EncryptedKey>
Elementos de contenido firmado digitalmente Elementos de contenido firmado digitalmente con XML Signaturecon XML Signature– Cero, uno ó más firmas XML SignatureCero, uno ó más firmas XML Signature– Usualmente, si se incluye una firma, esta firma como Usualmente, si se incluye una firma, esta firma como
mínimo alguna parte del cuerpo del mensaje.mínimo alguna parte del cuerpo del mensaje.
Ejemplo Sobre SOAP Ejemplo Sobre SOAP WS-SecurityWS-Security
<S:Envelope><S:Header>
<wsse:Security><wsse:UsernameToken>
…</wsse:UsernameToken><ds:Signature>
…</ds:Signature>…<xenc:ReferenceList>
…<xenc:DataReference
URI=”#body”/>…
</xenc:ReferenceList></wsse:Security>
</S:Header><S:Body>
<xenc:EncryptedData Id=”body” Type=”content”>…
</xenc:EncryptedData></S:Body>
</S:Envelope>
Espacios de Nombre Espacios de Nombre en WS-Securityen WS-SecurityPrefijPrefij
ooSignificadoSignificado Espacio de NombreEspacio de Nombre
dsds Digital Digital SignatureSignature
http://www.w3.org/2000/09/xmldsig#http://www.w3.org/2000/09/xmldsig#
wssewsse WS-Security WS-Security ExtensionExtension
http://www.docs.oasis-open.org/wss/2004/01/oasis-http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd200401-wss-wssecurity-secext-1.0.xsd
wsuwsu Web Services Web Services UtilityUtility
http://www.docs.oasis-open.org/wss/2004/01/oasis-http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd200401-wss-wssecurity-utility-1.0.xsd
xencxenc XML XML EncryptionEncryption
http://www.w3.org/2001/04/xmlenc#http://www.w3.org/2001/04/xmlenc#
WS-Security WS-Security TimestampsTimestamps
<S:Envelope>
<S:Header>
<wsse:Security>
…
<wsu:Timestamp>
<wsu:Created>2005-05-14T19:31:22Z</wsu:Created>
<wsu:Expires>2005-05-14 T19:46:22Z</wsu:Expires>
</wsu:Timestamp>
…
</wsse:Security>
</S:Header>
</S:Envelope>
Tokens de SeguridadTokens de Seguridad
Nombre de Usuario y ContraseñaNombre de Usuario y Contraseña Nombre de Usuario y Constraseña con Password Nombre de Usuario y Constraseña con Password
DigestDigest Certificados X509Certificados X509 KerberosKerberos XMLXML
– SAMLSAML Security Assertion Markup LanguageSecurity Assertion Markup Language
– XrMLXrML eXtensible Right Markup LanguageeXtensible Right Markup Language
– XCBFXCBF XML Common Biometric FormatXML Common Biometric Format
– …… ……
Username TokenUsername Token
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>jselman</wsse:Username>
<wsse:Password>1234</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
Username Token Username Token Password DigestPassword Digest
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>jselman</wsse:Username>
<wsse:PasswordType=”wsse:PasswordDigest”>
D2A12DFE8D90FC6…
</wsse:PasswordType>
<wsse:Nonce>EFD89F06CCB28C89</wsse:Nonce>
<wsu:Created>2005-05-08T20:21:23Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
Certificados X509 Certificados X509
<wsse:Security><wsse:BinarySecurityToken
ValueType=”wsse:X509v3”
EncodingType=”wsse:Base64Binary”>NIFEPzCCA9CrAwIBAgIQEmtJZc0…
</wsse:BinarySecurityToken></wsse:Security>
Token SAMLToken SAML<S:Envelope xmlns:S="...">
<S:Header>
<wsse:Security xmlns:wsse="...">
<saml:Assertion
MajorVersion="1"
MinorVersion="0"
AssertionID="SecurityToken-ef912422"
Issuer="jselman"
IssueInstant="2005-05-14T16:47:05.6228146-07:00"
xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">
...
</saml:Assertion>
...
</wsse:Security>
</S:Header>
<S:Body>
...
</S:Body>
</S:Envelope>
Token eXtensible Rights Token eXtensible Rights Markup LanguageMarkup Language
<S:Envelope> <S:Header> <wsse:Security> <r:license licenseId=”urn:foo:SecurityToken:ab12345”> <r:grant> <r:keyHolder> <r:info> <ds:KeyValue>…</ds:KeyValue> </r:info> </r:keyHolder> <r:possessProperty/> <sx:commonName>José Miguel Selman</sx:commonName> </r:grant> <r:issuer> <ds:Signature>…</ds:Signature> </r:issuer> </r:license> <ds:Signature> <ds:SignedInfo> … <ds:Reference URI=”#msgBody”> … </ds:Reference> … </ds:SignedInfo> … <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI=”urn:foo:SecurityToken:ab12345” ValueType=”r:license”/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </wsse:Security> </S:Header> <S:Body wsu:Id=”msgBody”> <PictureRequest xmlns=”http://www.jselman.com/pics”> <Picture format=”image/gif”> AxE1TrsRGGH… </Picture> </PictureRequest> </S:Body></S:Envelope>
Token XCBFToken XCBF
<S:Envelope xmlns:S="..."> <S:Header> <wsse:Security xmlns:wsse="..."> <wsse:XCBFSecurityToken xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" Id="XCBF-biometric-object" ValueType="wsse:XCBFv1" EncodingType="wsee:XER">
<BiometricSyntaxSets> <BiometricSyntax> <biometricObjects> <BiometricObject> <biometricHeader> <version> 0 </version> <recordType> <id> 4 </id> </recordType> <dataType> <processed/> </dataType> <purpose> <audit/> </purpose> <quality> -1 </quality> <validityPeriod> <notBefore> 1980.10.4 </notBefore> <notAfter>2003.10.3.23.59.59</notAfter> </validityPeriod> <format> <formatOwner> <oid> 2.23.42.9.10.4.2 </oid> </formatOwner> </format> </biometricHeader> <biometricData> 0A0B0C0D0E0F1A1B1C1D1E1F2A2B2C2D2E2F </biometricData> </BiometricObject> </biometricObjects> </BiometricSyntax> </BiometricSyntaxSets>
</wsse:XCBFSecurityToken> </wsse:Security> </S:Header> <S:Body> ... </S:Body></S:Envelope>
XML Signature en XML Signature en WS-SecurityWS-Security ObjetivoObjetivo
– Verificación de integridad y veracidad de Verificación de integridad y veracidad de credenciales incrustadas en los tokenscredenciales incrustadas en los tokens
– Proveer Integridad persistenteProveer Integridad persistente El mensaje puede ser manipulado El mensaje puede ser manipulado
legítimamente en cada nodo de su rutalegítimamente en cada nodo de su ruta Pueden incluirse varias firmas digitales en el Pueden incluirse varias firmas digitales en el
encabezadoencabezado No es más que la incrustación de un elemento No es más que la incrustación de un elemento
XML Signature en un encabezado WS-SecurityXML Signature en un encabezado WS-Security No establece reglas sobre qué se debe firmarNo establece reglas sobre qué se debe firmar
Ejemplo XML Signature Ejemplo XML Signature en WS-Securityen WS-Security<S:Envelope> <S:Header> <wsse:Security> <wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary” wsu:Id=”X509Token”> ... </wsse:BinarySecurityToken> </wsse:Security> <ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm=”…”/> <ds:SignatureMethod Algorithm=”…”/> <ds:Reference URI=”#body”> <ds:Transforms> <ds:Transform Algorithm=”…”/> </ds:Transforms> <ds:DigestMethod Algorithm=”…”/> <ds:DigestValue>…</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> … </ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI=”#X509Token”/> </wsse:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </S:Header> <S:Body wsu:Id=”body”> … </S:Body></S:Envelope>
XML Encryption en XML Encryption en WS-SecurityWS-Security ObjetivoObjetivo
– Esconder selectivamente información Esconder selectivamente información sensible dentro de mensajes SOAPsensible dentro de mensajes SOAP
– Proveer confidencialidad persistenteProveer confidencialidad persistente Generalmente se utiliza una llave de Generalmente se utiliza una llave de
sesión por rendimientosesión por rendimiento No es más que la incrustación de un No es más que la incrustación de un
elemento XML Encryption en un elemento XML Encryption en un encabezado WS-Securityencabezado WS-Security
No establece reglas sobre qué se debe No establece reglas sobre qué se debe cifrarcifrar
Ejemplo XML Ejemplo XML Encryption en WS-Encryption en WS-SecuritySecurity
<S:Envelope> <S:Header> <wsse:Security> <xenc:EncryptedKey> <xenc:EncryptionMethod Algorithm=”…”/> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType=”wsse:Base64Binary” ValueType=”wsse:X509v3”> F2jFla0GxSq… </wsse.KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>…</xenc:CipherValue> </xenc:CipherData> <xenc:ReferenceList> <xenc:DataReference URI=”#body”/> </xenc:ReferenceList> </xenc:EncryptedKey> </wsse:Security> </S:Header> <S:Body> <xenc:EncryptedData Id=”body”> <xenc:CipherValue>…</xenc:CipherValue> </xenc:EncryptedData> </S:Body></S:Envelope>
Opciones de Seguridad Opciones de Seguridad Capa de MensajeríaCapa de Mensajería
Servicio de Servicio de SeguridadSeguridad TecnologíasTecnologías
IntegridadIntegridad
XML SignatureXML Signature
S/MIMES/MIME
PKCS#7PKCS#7
ConfidencialidadConfidencialidad XML EncryptionXML Encryption
Autenticación del Autenticación del Emisor SOAP (Cliente)Emisor SOAP (Cliente)
XML EncryptionXML Encryption username & [password|username & [password|digest]digest]
username & [password|digest]username & [password|digest]
Certificado X.509Certificado X.509
Token de Token de SeguridadSeguridad
KerberosKerberos
SAMLSAML
RELREL
Etc.Etc.
Comparación Comparación Seguridad Según CapaSeguridad Según Capa
Seguridad de TransporteSeguridad de Transporte Seguridad de MensajeríaSeguridad de Mensajería
Punto a PuntoPunto a Punto Destino a DestinoDestino a Destino
Madura, su implementación es Madura, su implementación es relativamente directarelativamente directa
Nueva, relativamente Nueva, relativamente compleja con muchas opciones compleja con muchas opciones de seguridadde seguridad
No granular, enfoque del todo No granular, enfoque del todo o nadao nada
Muy granular, puede aplicar Muy granular, puede aplicar selectivamente a trozos de selectivamente a trozos de mensajes y solamente a los mensajes y solamente a los requerimientos o respuestasrequerimientos o respuestas
Dependiente del TransporteDependiente del Transporte La misma estrategia puede La misma estrategia puede aplicarse a distintas aplicarse a distintas tecnologías de transportetecnologías de transporte
Seguridad Capa de Seguridad Capa de MensajeríaMensajería Construida sobre modelos madurosConstruida sobre modelos maduros Gran cantidad de especificacionesGran cantidad de especificaciones
– Muchas de ellas muy inmadurasMuchas de ellas muy inmaduras Mayor FortalezaMayor Fortaleza
– FlexibilidadFlexibilidad Mayor DebilidadMayor Debilidad
– FlexibilidadFlexibilidad
Frameworks de Frameworks de DesarrolloDesarrollo .NET.NET
– WSE (Web Services Enhancements)WSE (Web Services Enhancements) http://msdn.microsoft.com/http://msdn.microsoft.com/
webservices/webservices/building/wse/webservices/webservices/building/wse/default.aspxdefault.aspx
JavaJava– WSS4J (WS-Security for Java)WSS4J (WS-Security for Java)
http://ws.apache.org/wss4j/http://ws.apache.org/wss4j/
Recomendaciones Recomendaciones InteroperabilidadInteroperabilidad
Web Services Web Services Interoperability Interoperability OrganizationOrganization– Perfil BásicoPerfil Básico– Perfil Básico de Perfil Básico de
SeguridadSeguridad
– ““Security Security Challenges, Challenges, Threats and Threats and CountermeasuresCountermeasures””
http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
El problema de El problema de administraciónadministración
Servicio 1 Política 1
Servicio 2
Servicio 3
Servicio j
Política 2
Política k
Cliente 1
Cliente 2
Cliente 3
Cliente 4
Cliente 2
Cliente i
Firewall Servicios WebFirewall Servicios Web
ClientesServidor
WebServidor
App.
ServidorApp.
ServidorApp.
AccesoDatos
Conectores aSistemas Legados
Bases deDatos
FW
Firewall para Servicios Web
Proxy ReversoProxy Reverso
Aplicación 1
Aplicación 2
Aplicación M
FirewallServicios
Web
Cliente N
Cliente 2
Cliente 1
Fuente: “Patterns for Application Firewalls”, Nelly Delessy-Gassant, Eduardo B. Fernandez, Saeed Rajput, and Maria M. Larrondo-Petrie
Múltiples AgentesMúltiples AgentesAplicación 1
Aplicación 2
Aplicación M
Agente FW
Cliente N
Cliente 2
Cliente 1
Agente FW
Agente FW
Fuente: “Patterns for Application Firewalls”, Nelly Delessy-Gassant, Eduardo B. Fernandez, Saeed Rajput, and Maria M. Larrondo-Petrie
¿Preguntas?¿Preguntas?