Seguridad Para Servicios Web

14,906 views
14,684 views

Published on

1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
14,906
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
465
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Seguridad Para Servicios Web

  1. 1. <Seguridad en Web Services> Servicios Web y Frameworks de Desarrollo <José Miguel Selman Grez> Lunes 3 de Julio de 2006
  2. 2. En esta Sesión … <ul><li>Porque necesitamos seguridad </li></ul><ul><ul><li>Motivación </li></ul></ul><ul><li>Desafíos introducidos por Servicios Web </li></ul><ul><li>Presentación Tecnologías seguridad para XML </li></ul><ul><li>Presentación Tecnologías seguridad para Servicios Web </li></ul><ul><li>Discusión y Recomendaciones </li></ul>
  3. 3. Seguridad como un habilitador <ul><li>Integración de Aplicaciones </li></ul><ul><li>EAI </li></ul><ul><ul><li>CRMs </li></ul></ul><ul><ul><li>ERPs </li></ul></ul><ul><li>B2C, B2B, etc. </li></ul><ul><li>Automatización de Procesos de Negocio </li></ul><ul><li>Portales de Agregación de Información </li></ul><ul><li>… </li></ul>
  4. 4. Arquitectura General Aplicaciones Empresariales Clientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legados Bases de Datos <ul><li>Seguridad Back-Office </li></ul><ul><li>Seguridad Mainframe </li></ul><ul><li>Seguridad RDBMS </li></ul><ul><li>etc. </li></ul><ul><li>Seguridad Middleware </li></ul><ul><li>Roles </li></ul><ul><li>Seguridad Componentes </li></ul><ul><li>Criptografía </li></ul><ul><li>etc. </li></ul><ul><li>Seguridad Perímetro </li></ul><ul><li>Firewalls/VPNs </li></ul><ul><li>Criptografía </li></ul><ul><li>Seguridad Servidores Web </li></ul><ul><li>Detección de Intrusión </li></ul><ul><li>etc. </li></ul>Plataformas Predominantes: J2EE y .NET
  5. 5. ¿De qué debemos proteger nuestras aplicaciones? Violación de Confidencialidad Violación de Integridad Ataque de Repetición
  6. 6. Ataques Aplicaciones Ataque del Intermediario (conocido como “Man in the Middle”)
  7. 7. Ataque típicos Aplicaciones Web <ul><li>Manipulación de parámetros </li></ul><ul><ul><li>http://www.sitio.com/listadoProductos.do?maxResults=100 </li></ul></ul><ul><ul><ul><li>¿maxResults=999999999? </li></ul></ul></ul><ul><ul><li>Ataques SQL (SQL Injection ) </li></ul></ul><ul><ul><ul><li>http://www.sitio.com/listTabla.aspx?orderBy=columna1 </li></ul></ul></ul><ul><ul><ul><ul><li>SELECT * FROM tabla ORDER BY columna1 </li></ul></ul></ul></ul><ul><li>Recursos no publicados </li></ul><ul><ul><li>http://www.sitio.com/documentos/documento1.html </li></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/documentos/? </li></ul></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/test/? </li></ul></ul></ul><ul><ul><ul><li>¿http://www.sitio.com/prueba/? </li></ul></ul></ul><ul><li>Ataques a los servidores </li></ul><ul><ul><li>Buffer Overflow </li></ul></ul><ul><ul><li>Etc. </li></ul></ul><ul><li>Etc. </li></ul>
  8. 8. Requerimientos de Seguridad <ul><li>Autenticación </li></ul><ul><li>Autorización </li></ul><ul><li>Confidencialidad </li></ul><ul><li>Integridad </li></ul><ul><li>No repudiación </li></ul><ul><li>Alta Disponibilidad </li></ul>
  9. 9. Desafíos de Seguridad Servicios Web <ul><li>Seguridad basada en el usuario final </li></ul><ul><li>Mantener la seguridad al pasar por múltiples Servicios (“nodos”) </li></ul><ul><li>Abstracción de la seguridad del transporte subyacente </li></ul>
  10. 10. Seguridad basada en el usuario final
  11. 11. Seguridad a través de múltiples Servicios y múltiples transportes <ul><li>Abstracción de Seguridad del transporte subyacente </li></ul><ul><li>Seguridad Persistente </li></ul>Usuario Sitio Web Servicio Web HTTP JMS Physical Data Link Network Transport Session Presentation Application Physical Data Link Network Transport Session Presentation Application Contexto de Seguridad 1 Contexto de Seguridad 2 …
  12. 12. Arquitectura General Servicios Web Comunicaciones HTTP, SMTP, FTP, JMS, IIOP, … Mensajes Extensiones SOAP Entrega Confiable, Correlación, Transacciones… SOAP Descripciones WSDL Procesos Descubrimiento, Agregación, Coreografía, … XML, DTD, XML Schema S E G U R I D A D A D M I N I S T R A C I Ó N
  13. 13. Opciones de Seguridad Capa de Transporte Servicio de Seguridad Tecnologías Integridad SSL/TLS Confidencialidad SSL/TLS Autenticación Proveedor (Servidor) SSL/TLS Autenticación Consumidor (Cliente) SSL/TLS con autenticación de cliente HTTP Basic HTTP Digest HTTP Attributes SSL/TLS HTTP Basic HTTP Digest
  14. 14. Seguridad para Servicios Web <ul><li>Los servicios de seguridad pueden ser provistos por: </li></ul><ul><ul><li>Capa de Transporte </li></ul></ul><ul><ul><li>Capa de Mensajería </li></ul></ul><ul><ul><li>Ambas </li></ul></ul><ul><li>Existencia de gran cantidad de especificaciones y alternativas </li></ul>
  15. 15. Seguridad en la Capa de Mensajería <ul><li>RPC/Encoded </li></ul><ul><li>Document/Literal </li></ul>Transporte (HTTP, SMTP, FTP, MQ, etc.) Envelope (XML) Header Body <ul><li>Información Rutas </li></ul><ul><li>Transacciones </li></ul><ul><li>Entrega Confiable </li></ul><ul><li>Seguridad </li></ul>
  16. 16. Interrelación Tecnologías/Especificaciones de Seguridad 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 Infraestructura de Red Frameworks XML Fuente: “Securing Web Services With WS-Security. Demystifying WS-Security, WS-Policy, SAML, XML Signature, and XML Encryption”, Jothy Rosenberg and David Remy
  17. 17. XML Signature <ul><li>Esfuerzo conjunto IETF/W3C </li></ul><ul><li>Su objetivo es firmar digitalmente: </li></ul><ul><ul><li>Documentos XML </li></ul></ul><ul><ul><li>Partes de Documentos XML </li></ul></ul><ul><ul><li>Objetos Externos </li></ul></ul><ul><li>Utiliza tecnologías maduras de encriptación asimétrica y generación de hashes </li></ul><ul><ul><li>SHA1 </li></ul></ul><ul><ul><li>RSA </li></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>Requiere de una infraestructura de llaves públicas para proveer: </li></ul><ul><ul><li>Identidad </li></ul></ul><ul><ul><li>No repudiación </li></ul></ul>
  18. 18. Tipos de Firmas XML Signature <Signature> <Reference> <ElementoFirmado> Enveloping <ElementoEnvolvente> <Signature> <Reference> Enveloped <DocumentoXML> <Signature> <Reference> Detached <ElementoDestino>
  19. 19. Canonicalización <ul><li>c14n </li></ul><ul><li>Consenso común </li></ul><ul><li>XSLT </li></ul><OrdenDeCompra> <Productos> <CodProducto> SKU10023 </CodProducto> </Productos> </OrdenDeCompra> <OrdenDeCompra><Productos> <CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
  20. 20. Estructura XML Signature <Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference> (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)* </Signature>
  21. 21. XML Signature: Enveloped <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>
  22. 22. XML Signature: Enveloping <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>
  23. 23. XML Signature: Detached <Signature xmlns=”http://www.w3.org/2000/09/xmldsig#”> <SignedInfo> <Reference URI=” http://www.jselman.com/imagen.jpg ”/> </SignedInfo> <SignatureValue>…</SignatureValue> <KeyInfo>…</KeyInfo> </Signature>
  24. 24. Recomendaciones Seguridad XML Signature <ul><li>Solamente lo firmado es seguro </li></ul><ul><ul><li>Especial cuidado con desechos ocurridos por transformaciones </li></ul></ul><ul><li>Solamente lo que se ve puede ser firmado </li></ul><ul><ul><li>Por ejemplo si un contrato fue presentado a un usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS) </li></ul></ul><ul><li>Ver lo que es firmado </li></ul><ul><ul><li>Especial cuidado con referencias a objetos que “deberían” contener cierto elemento. </li></ul></ul>
  25. 25. XML Encryption <ul><li>Posterior a XML Signature </li></ul><ul><li>La información cifrada es expresada en un formato común XML </li></ul><ul><li>Trozos de un documento XML pueden ser selectivamente cifrados </li></ul><ul><li>Utiliza algoritmos y técnicas de encriptación maduras </li></ul><ul><ul><li>Simétrica </li></ul></ul><ul><ul><li>Asimétrica </li></ul></ul><ul><ul><li>Híbrida (llave de sesión) </li></ul></ul><ul><li>Algunos Algoritmos </li></ul><ul><ul><li>DES </li></ul></ul><ul><ul><li>3DES </li></ul></ul><ul><ul><li>AES </li></ul></ul><ul><ul><li>… </li></ul></ul>
  26. 26. Confidencialidad Simétrica Asimétrica
  27. 27. Llave de Sesión
  28. 28. Estructura XML Encryption <EncryptedData Id? Type? MimeType? Encoding?> <EncryptionMethod/>? <ds:KeyInfo> <EncryptedKey>? <AgreementMethod>? <ds:KeyName>? <ds:RetrievalMethod>? <ds:*>? </ds:KeyInfo> <CipherData> <CipherValue>? <CipherReference URI?>? </CipherData> <EncryptionProperties>? </EncryptedData>
  29. 29. Ejemplo XML Encryption <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>
  30. 30. XKMS <ul><li>XML Key Management Specification </li></ul><ul><li>Infraestructura de llave pública (PKI) </li></ul><ul><ul><li>Repositorio de credenciales </li></ul></ul><ul><ul><li>Asociación a identidades </li></ul></ul><ul><li>Ventajas </li></ul><ul><ul><li>Complejidad reducida para los clientes </li></ul></ul><ul><ul><li>Facilita la codificación </li></ul></ul><ul><ul><li>Administración de la confianza centralizada </li></ul></ul><ul><ul><li>… </li></ul></ul>PKI Servicios Web XKMS Aplicaciones
  31. 31. SAML <ul><li>Security Assertion Markup Language </li></ul><ul><li>Especificación mantenida por OASIS </li></ul><ul><li>Transportador de identidades </li></ul><ul><li>“ Confianza Portable” </li></ul><ul><li>Requiere preestablecimiento de confianza entre los dominios </li></ul><ul><li>Potencial uso para herramientas de Single Sign-On </li></ul><ul><li>Aserciones en formato XML </li></ul><ul><ul><li>Autenticación </li></ul></ul><ul><ul><li>Atributos </li></ul></ul><ul><ul><li>Autorización </li></ul></ul><ul><li>¡Se pueden firmar con XML Signature! </li></ul>
  32. 32. Aserciones SAML <ul><li>Autenticación </li></ul><ul><ul><li>El Sujeto S fue identificado con el método M a la hora T . </li></ul></ul><ul><ul><li>Los métodos de autenticación soportados </li></ul></ul><ul><ul><ul><li>Contraseña </li></ul></ul></ul><ul><ul><ul><li>Ticket Kerberos </li></ul></ul></ul><ul><ul><ul><li>Contraseña Remota Segura (RSP) </li></ul></ul></ul><ul><ul><ul><li>Token de Hardware </li></ul></ul></ul><ul><ul><ul><li>Certificado de Cliente SSL </li></ul></ul></ul><ul><ul><ul><li>Llave Pública en un contenedor X.509 </li></ul></ul></ul><ul><ul><ul><li>Llave Pública PGP </li></ul></ul></ul><ul><ul><ul><li>Llave Pública SPKI </li></ul></ul></ul><ul><ul><ul><li>Llave Pública XKMS </li></ul></ul></ul><ul><ul><ul><li>Firma Digital XML Signature </li></ul></ul></ul><ul><li>Atributos </li></ul><ul><ul><li>El sujeto S posee los siguientes atributos: </li></ul></ul><ul><ul><ul><li>Atributo 1 : a </li></ul></ul></ul><ul><ul><ul><li>Atributo 2 : b </li></ul></ul></ul><ul><ul><ul><li>… </li></ul></ul></ul><ul><ul><ul><li>Atributo n : n </li></ul></ul></ul><ul><ul><li>Este tipo de información esta típicamente contenida en servidores LDAP. </li></ul></ul><ul><li>Autorización </li></ul><ul><ul><li>Al sujeto S se puede autorizar el acceso tipo A sobre el recurso R dada la evidencia E . </li></ul></ul>
  33. 33. Ejemplo Aserción de Autenticación <saml:Assertion MajorVersion=”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>
  34. 34. Arquitectura SAML SAML Aserción de Autenticación Aserción de Atributos Aserción de Autorización Autoridad de Autenticación Autoridad de Atributos Punto de Decisión de Políticas (PDP) Recolector de Credenciales Entidad de Sistema Punto de Hacer Valer Políticas (PEP) Requerimiento Aplicación Política Política Política
  35. 35. WS-Security <ul><li>Esfuerzo conjunto de IBM, Microsoft y VeriSign </li></ul><ul><ul><li>En Abril de 2002 publican “Security in a Web Services World: A Proposed Architecture and Roadmap” </li></ul></ul><ul><li>Hoy mantenida por OASIS </li></ul><ul><li>Su objetivo es Proveer seguridad a SOAP </li></ul><ul><li>Se enfoca en la correcta y efectiva aplicación de tecnologías como </li></ul><ul><ul><li>XML Signature </li></ul></ul><ul><ul><li>XML Encryption </li></ul></ul><ul><ul><li>SAML </li></ul></ul><ul><li>Provee un contenedor para artefactos de seguridad </li></ul>
  36. 36. El encabezado WS-Security <ul><li>Tokens de seguridad </li></ul><ul><ul><li>Cero, uno ó más tokens de seguridad </li></ul></ul><ul><ul><li>Usualmente no más de uno </li></ul></ul><ul><li>Elementos de contenido cifrado con XML Encryption </li></ul><ul><ul><li>Cero, uno ó más de elementos XML Encryption </li></ul></ul><ul><ul><li>Estos pueden ser </li></ul></ul><ul><ul><ul><li><ReferenceList> </li></ul></ul></ul><ul><ul><ul><li><EncryptedKey> </li></ul></ul></ul><ul><li>Elementos de contenido firmado digitalmente con XML Signature </li></ul><ul><ul><li>Cero, uno ó más firmas XML Signature </li></ul></ul><ul><ul><li>Usualmente, si se incluye una firma, esta firma como mínimo alguna parte del cuerpo del mensaje. </li></ul></ul>
  37. 37. Ejemplo Sobre SOAP WS-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>
  38. 38. Espacios de Nombre en WS-Security Prefijo Significado Espacio de Nombre ds Digital Signature http://www.w3.org/2000/09/xmldsig# wsse WS-Security Extension http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd wsu Web Services Utility http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd xenc XML Encryption http://www.w3.org/2001/04/xmlenc#
  39. 39. WS-Security Timestamps <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>
  40. 40. Tokens de Seguridad <ul><li>Nombre de Usuario y Contraseña </li></ul><ul><li>Nombre de Usuario y Constraseña con Password Digest </li></ul><ul><li>Certificados X509 </li></ul><ul><li>Kerberos </li></ul><ul><li>XML </li></ul><ul><ul><li>SAML </li></ul></ul><ul><ul><ul><li>Security Assertion Markup Language </li></ul></ul></ul><ul><ul><li>XrML </li></ul></ul><ul><ul><ul><li>eXtensible Right Markup Language </li></ul></ul></ul><ul><ul><li>XCBF </li></ul></ul><ul><ul><ul><li>XML Common Biometric Format </li></ul></ul></ul><ul><ul><li>… </li></ul></ul><ul><li>… </li></ul>
  41. 41. Username Token <wsse:Security> <wsse:UsernameToken> <wsse:Username>jselman</wsse:Username> <wsse:Password>1234</wsse:Password> </wsse:UsernameToken> </wsse:Security>
  42. 42. Username Token Password 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>
  43. 43. Certificados X509 <wsse:Security> <wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary”> NIFEPzCCA9CrAwIBAgIQEmtJZc0… </wsse:BinarySecurityToken> </wsse:Security>
  44. 44. Token SAML <S:Envelope xmlns:S=&quot;...&quot;> <S:Header> <wsse:Security xmlns:wsse=&quot;...&quot;> <saml:Assertion MajorVersion=&quot;1&quot; MinorVersion=&quot;0&quot; AssertionID=&quot;SecurityToken-ef912422&quot; Issuer=&quot;jselman&quot; IssueInstant=&quot;2005-05-14T16:47:05.6228146-07:00&quot; xmlns:saml=&quot;urn:oasis:names:tc:SAML:1.0:assertion&quot;> ... </saml:Assertion> ... </wsse:Security> </S:Header> <S:Body> ... </S:Body> </S:Envelope>
  45. 45. Token eXtensible Rights Markup 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>
  46. 46. Token XCBF <S:Envelope xmlns:S=&quot;...&quot;> <S:Header> <wsse:Security xmlns:wsse=&quot;...&quot;> <wsse:XCBFSecurityToken xmlns:wsse=&quot;http://schemas.xmlsoap.org/ws/2002/04/secext&quot; Id=&quot;XCBF-biometric-object&quot; ValueType=&quot;wsse:XCBFv1&quot; EncodingType=&quot;wsee:XER&quot;> <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>
  47. 47. XML Signature en WS-Security <ul><li>Objetivo </li></ul><ul><ul><li>Verificación de integridad y veracidad de credenciales incrustadas en los tokens </li></ul></ul><ul><ul><li>Proveer Integridad persistente </li></ul></ul><ul><li>El mensaje puede ser manipulado legítimamente en cada nodo de su ruta </li></ul><ul><li>Pueden incluirse varias firmas digitales en el encabezado </li></ul><ul><li>No es más que la incrustación de un elemento XML Signature en un encabezado WS-Security </li></ul><ul><li>No establece reglas sobre qué se debe firmar </li></ul>
  48. 48. Ejemplo XML Signature en 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>
  49. 49. XML Encryption en WS-Security <ul><li>Objetivo </li></ul><ul><ul><li>Esconder selectivamente información sensible dentro de mensajes SOAP </li></ul></ul><ul><ul><li>Proveer confidencialidad persistente </li></ul></ul><ul><li>Generalmente se utiliza una llave de sesión por rendimiento </li></ul><ul><li>No es más que la incrustación de un elemento XML Encryption en un encabezado WS-Security </li></ul><ul><li>No establece reglas sobre qué se debe cifrar </li></ul>
  50. 50. Ejemplo XML Encryption en WS-Security <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>
  51. 51. Opciones de Seguridad Capa de Mensajería Servicio de Seguridad Tecnologías Integridad XML Signature S/MIME PKCS#7 Confidencialidad XML Encryption Autenticación del Emisor SOAP (Cliente) XML Encryption username & [password|digest] username & [password|digest] Certificado X.509 Token de Seguridad Kerberos SAML REL Etc.
  52. 52. Comparación Seguridad Según Capa Seguridad de Transporte Seguridad de Mensajería Punto a Punto Destino a Destino Madura, su implementación es relativamente directa Nueva, relativamente compleja con muchas opciones de seguridad No granular, enfoque del todo o nada Muy granular, puede aplicar selectivamente a trozos de mensajes y solamente a los requerimientos o respuestas Dependiente del Transporte La misma estrategia puede aplicarse a distintas tecnologías de transporte
  53. 53. Seguridad Capa de Mensajería <ul><li>Construida sobre modelos maduros </li></ul><ul><li>Gran cantidad de especificaciones </li></ul><ul><ul><li>Muchas de ellas muy inmaduras </li></ul></ul><ul><li>Mayor Fortaleza </li></ul><ul><ul><li>Flexibilidad </li></ul></ul><ul><li>Mayor Debilidad </li></ul><ul><ul><li>Flexibilidad </li></ul></ul>
  54. 54. Frameworks de Desarrollo <ul><li>.NET </li></ul><ul><ul><li>WSE (Web Services Enhancements) </li></ul></ul><ul><ul><ul><li>http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx </li></ul></ul></ul><ul><li>Java </li></ul><ul><ul><li>WSS4J (WS-Security for Java) </li></ul></ul><ul><ul><ul><li>http://ws.apache.org/wss4j/ </li></ul></ul></ul>
  55. 55. Recomendaciones Interoperabilidad <ul><li>Web Services Interoperability Organization </li></ul><ul><ul><li>Perfil Básico </li></ul></ul><ul><ul><li>Perfil Básico de Seguridad </li></ul></ul><ul><ul><li>“ Security Challenges, Threats and Countermeasures ” </li></ul></ul>http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
  56. 56. El problema de administració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
  57. 57. Firewall Servicios Web Clientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legados Bases de Datos FW Firewall para Servicios Web
  58. 58. Proxy Reverso Aplicación 1 Aplicación 2 Aplicación M Firewall Servicios 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
  59. 59. Múltiples Agentes Aplicació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
  60. 60. ¿Preguntas?

×