<Seguridad en Web Services> Servicios Web y Frameworks de Desarrollo <José Miguel Selman Grez> Lunes 3 de Julio de 2006
En esta  Sesión … Porque necesitamos seguridad Motivación Desafíos introducidos por Servicios Web Presentación Tecnologías seguridad para XML Presentación Tecnologías seguridad para Servicios Web Discusión y Recomendaciones
Seguridad como un habilitador Integración de Aplicaciones EAI CRMs ERPs B2C, B2B, etc. Automatización de Procesos de Negocio Portales de Agregación de Información …
Arquitectura General Aplicaciones Empresariales Clientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legados Bases de Datos 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 proteger nuestras aplicaciones? Violación de Confidencialidad Violación de Integridad Ataque de Repetición
Ataques Aplicaciones Ataque del Intermediario  (conocido como “Man in the Middle”)
Ataque típicos Aplicaciones Web Manipulación de parámetros http://www.sitio.com/listadoProductos.do?maxResults=100 ¿maxResults=999999999? Ataques SQL (SQL  Injection ) http://www.sitio.com/listTabla.aspx?orderBy=columna1 SELECT * FROM tabla ORDER BY columna1 Recursos no publicados http://www.sitio.com/documentos/documento1.html ¿http://www.sitio.com/documentos/? ¿http://www.sitio.com/test/? ¿http://www.sitio.com/prueba/? Ataques a los servidores Buffer Overflow Etc. Etc.
Requerimientos de Seguridad Autenticación Autorización Confidencialidad Integridad No repudiación Alta Disponibilidad
Desafíos de Seguridad Servicios Web Seguridad basada en el usuario final Mantener la seguridad al pasar por múltiples Servicios (“nodos”) Abstracción de la seguridad del transporte subyacente
Seguridad basada en el usuario final
Seguridad a través de múltiples Servicios y múltiples transportes Abstracción de Seguridad del transporte subyacente Seguridad Persistente 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 …
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
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
Seguridad para Servicios Web Los servicios de seguridad pueden ser provistos por: Capa de Transporte Capa de Mensajería Ambas Existencia de gran cantidad de especificaciones y alternativas
Seguridad en la Capa de Mensajería RPC/Encoded Document/Literal Transporte (HTTP, SMTP, FTP, MQ, etc.) Envelope  (XML) Header Body Información Rutas Transacciones Entrega Confiable Seguridad
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
XML Signature Esfuerzo conjunto IETF/W3C Su objetivo es firmar digitalmente: Documentos XML Partes de Documentos XML Objetos Externos Utiliza tecnologías maduras de encriptación asimétrica y generación de  hashes SHA1 RSA … Requiere de una infraestructura de llaves públicas para proveer: Identidad No repudiación
Tipos de Firmas XML Signature <Signature> <Reference> <ElementoFirmado> Enveloping <ElementoEnvolvente> <Signature> <Reference> Enveloped <DocumentoXML> <Signature> <Reference> Detached <ElementoDestino>
Canonicalización c14n Consenso común XSLT <OrdenDeCompra> <Productos>  <CodProducto>  SKU10023  </CodProducto>  </Productos> </OrdenDeCompra> <OrdenDeCompra><Productos> <CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
Estructura XML Signature <Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference> (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)* </Signature>
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>
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>
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>
Recomendaciones Seguridad XML Signature Solamente lo firmado es seguro Especial cuidado con desechos ocurridos por transformaciones Solamente lo que se ve puede ser firmado Por ejemplo si un contrato fue presentado a un usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS) Ver lo que es firmado Especial cuidado con referencias a objetos que “deberían” contener cierto elemento.
XML Encryption Posterior a XML Signature La información cifrada es expresada en un formato común XML Trozos de un documento XML pueden ser selectivamente cifrados Utiliza algoritmos y técnicas de encriptación maduras Simétrica Asimétrica Híbrida (llave de sesión) Algunos Algoritmos DES 3DES AES …
Confidencialidad Simétrica Asimétrica
Llave de Sesión
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>
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>
XKMS XML Key Management Specification Infraestructura de llave pública (PKI) Repositorio de credenciales Asociación a identidades Ventajas Complejidad reducida para los clientes Facilita la codificación Administración de la confianza centralizada … PKI Servicios Web  XKMS Aplicaciones
SAML Security Assertion Markup Language Especificación mantenida por OASIS Transportador de identidades “ Confianza Portable” Requiere preestablecimiento de confianza entre los dominios Potencial uso para herramientas de  Single Sign-On Aserciones en formato XML Autenticación Atributos Autorización ¡Se pueden firmar con XML Signature!
Aserciones SAML Autenticación El Sujeto  S  fue identificado con el método  M  a la hora  T . Los métodos de autenticación soportados Contraseña Ticket Kerberos Contraseña Remota Segura (RSP) Token de Hardware Certificado de Cliente SSL Llave Pública en un contenedor X.509 Llave Pública PGP Llave Pública SPKI Llave Pública XKMS Firma Digital XML Signature Atributos El sujeto  S  posee los siguientes atributos: Atributo 1 :  a Atributo 2 : b … Atributo n :  n Este tipo de información esta típicamente contenida en servidores LDAP.  Autorización Al sujeto  S  se puede autorizar el acceso tipo  A  sobre el recurso  R  dada la evidencia  E .
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>
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
WS-Security Esfuerzo conjunto de IBM, Microsoft y VeriSign En Abril de 2002 publican “Security in a Web Services World: A Proposed Architecture and Roadmap” Hoy mantenida por OASIS Su objetivo es Proveer seguridad a SOAP Se enfoca en la correcta y efectiva aplicación de tecnologías como XML Signature XML Encryption SAML Provee un contenedor para artefactos de seguridad
El encabezado  WS-Security Tokens de seguridad Cero, uno ó más tokens de seguridad  Usualmente no más de uno Elementos de contenido cifrado con XML Encryption Cero, uno ó más de elementos XML Encryption Estos pueden ser <ReferenceList> <EncryptedKey> Elementos de contenido firmado digitalmente con XML Signature Cero, uno ó más firmas XML Signature Usualmente, si se incluye una firma, esta firma como mínimo alguna parte del cuerpo del mensaje.
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>
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#
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>
Tokens de Seguridad Nombre de Usuario y Contraseña Nombre de Usuario y Constraseña con Password Digest Certificados X509 Kerberos XML SAML Security Assertion Markup Language XrML eXtensible Right Markup Language XCBF XML Common Biometric Format … …
Username Token <wsse:Security> <wsse:UsernameToken> <wsse:Username>jselman</wsse:Username> <wsse:Password>1234</wsse:Password> </wsse:UsernameToken> </wsse:Security>
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>
Certificados X509  <wsse:Security> <wsse:BinarySecurityToken  ValueType=”wsse:X509v3”  EncodingType=”wsse:Base64Binary”> NIFEPzCCA9CrAwIBAgIQEmtJZc0… </wsse:BinarySecurityToken> </wsse:Security>
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>
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>
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>
XML Signature en  WS-Security Objetivo Verificación de integridad y veracidad de credenciales incrustadas en los tokens Proveer Integridad persistente El mensaje puede ser manipulado legítimamente en cada nodo de su ruta Pueden incluirse varias firmas digitales en el encabezado No es más que la incrustación de un elemento XML Signature en un encabezado WS-Security No establece reglas sobre qué se debe firmar
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>
XML Encryption en  WS-Security Objetivo Esconder selectivamente información sensible dentro de mensajes SOAP Proveer confidencialidad persistente Generalmente se utiliza una llave de sesión por rendimiento No es más que la incrustación de un elemento XML Encryption en un encabezado WS-Security No establece reglas sobre qué se debe cifrar
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>
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.
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
Seguridad Capa de Mensajería Construida sobre modelos maduros Gran cantidad de especificaciones Muchas de ellas muy inmaduras Mayor Fortaleza Flexibilidad Mayor Debilidad Flexibilidad
Frameworks de Desarrollo .NET WSE (Web Services Enhancements) http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx Java WSS4J (WS-Security for Java) http://ws.apache.org/wss4j/
Recomendaciones Interoperabilidad Web Services Interoperability Organization Perfil Básico Perfil Básico de Seguridad “ Security Challenges, Threats and Countermeasures ” http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
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
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
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
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
¿Preguntas?

Seguridad Para Servicios Web

  • 1.
    <Seguridad en WebServices> Servicios Web y Frameworks de Desarrollo <José Miguel Selman Grez> Lunes 3 de Julio de 2006
  • 2.
    En esta Sesión … Porque necesitamos seguridad Motivación Desafíos introducidos por Servicios Web Presentación Tecnologías seguridad para XML Presentación Tecnologías seguridad para Servicios Web Discusión y Recomendaciones
  • 3.
    Seguridad como unhabilitador Integración de Aplicaciones EAI CRMs ERPs B2C, B2B, etc. Automatización de Procesos de Negocio Portales de Agregación de Información …
  • 4.
    Arquitectura General AplicacionesEmpresariales Clientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legados Bases de Datos 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
  • 5.
    ¿De qué debemosproteger nuestras aplicaciones? Violación de Confidencialidad Violación de Integridad Ataque de Repetición
  • 6.
    Ataques Aplicaciones Ataquedel Intermediario (conocido como “Man in the Middle”)
  • 7.
    Ataque típicos AplicacionesWeb Manipulación de parámetros http://www.sitio.com/listadoProductos.do?maxResults=100 ¿maxResults=999999999? Ataques SQL (SQL Injection ) http://www.sitio.com/listTabla.aspx?orderBy=columna1 SELECT * FROM tabla ORDER BY columna1 Recursos no publicados http://www.sitio.com/documentos/documento1.html ¿http://www.sitio.com/documentos/? ¿http://www.sitio.com/test/? ¿http://www.sitio.com/prueba/? Ataques a los servidores Buffer Overflow Etc. Etc.
  • 8.
    Requerimientos de SeguridadAutenticación Autorización Confidencialidad Integridad No repudiación Alta Disponibilidad
  • 9.
    Desafíos de SeguridadServicios Web Seguridad basada en el usuario final Mantener la seguridad al pasar por múltiples Servicios (“nodos”) Abstracción de la seguridad del transporte subyacente
  • 10.
    Seguridad basada enel usuario final
  • 11.
    Seguridad a travésde múltiples Servicios y múltiples transportes Abstracción de Seguridad del transporte subyacente Seguridad Persistente 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.
    Arquitectura General ServiciosWeb 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.
    Opciones de SeguridadCapa 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.
    Seguridad para ServiciosWeb Los servicios de seguridad pueden ser provistos por: Capa de Transporte Capa de Mensajería Ambas Existencia de gran cantidad de especificaciones y alternativas
  • 15.
    Seguridad en laCapa de Mensajería RPC/Encoded Document/Literal Transporte (HTTP, SMTP, FTP, MQ, etc.) Envelope (XML) Header Body Información Rutas Transacciones Entrega Confiable Seguridad
  • 16.
    Interrelación Tecnologías/Especificaciones deSeguridad 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.
    XML Signature Esfuerzoconjunto IETF/W3C Su objetivo es firmar digitalmente: Documentos XML Partes de Documentos XML Objetos Externos Utiliza tecnologías maduras de encriptación asimétrica y generación de hashes SHA1 RSA … Requiere de una infraestructura de llaves públicas para proveer: Identidad No repudiación
  • 18.
    Tipos de FirmasXML Signature <Signature> <Reference> <ElementoFirmado> Enveloping <ElementoEnvolvente> <Signature> <Reference> Enveloped <DocumentoXML> <Signature> <Reference> Detached <ElementoDestino>
  • 19.
    Canonicalización c14n Consensocomún XSLT <OrdenDeCompra> <Productos> <CodProducto> SKU10023 </CodProducto> </Productos> </OrdenDeCompra> <OrdenDeCompra><Productos> <CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
  • 20.
    Estructura XML Signature<Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/> (<Reference> (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (<Object ID?>)* </Signature>
  • 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.
    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.
    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.
    Recomendaciones Seguridad XMLSignature Solamente lo firmado es seguro Especial cuidado con desechos ocurridos por transformaciones Solamente lo que se ve puede ser firmado Por ejemplo si un contrato fue presentado a un usuario mediante el uso de XML y una plantilla XSLT, ambos deben ser firmados (WYSIWYS) Ver lo que es firmado Especial cuidado con referencias a objetos que “deberían” contener cierto elemento.
  • 25.
    XML Encryption Posteriora XML Signature La información cifrada es expresada en un formato común XML Trozos de un documento XML pueden ser selectivamente cifrados Utiliza algoritmos y técnicas de encriptación maduras Simétrica Asimétrica Híbrida (llave de sesión) Algunos Algoritmos DES 3DES AES …
  • 26.
  • 27.
  • 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.
    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.
    XKMS XML KeyManagement Specification Infraestructura de llave pública (PKI) Repositorio de credenciales Asociación a identidades Ventajas Complejidad reducida para los clientes Facilita la codificación Administración de la confianza centralizada … PKI Servicios Web XKMS Aplicaciones
  • 31.
    SAML Security AssertionMarkup Language Especificación mantenida por OASIS Transportador de identidades “ Confianza Portable” Requiere preestablecimiento de confianza entre los dominios Potencial uso para herramientas de Single Sign-On Aserciones en formato XML Autenticación Atributos Autorización ¡Se pueden firmar con XML Signature!
  • 32.
    Aserciones SAML AutenticaciónEl Sujeto S fue identificado con el método M a la hora T . Los métodos de autenticación soportados Contraseña Ticket Kerberos Contraseña Remota Segura (RSP) Token de Hardware Certificado de Cliente SSL Llave Pública en un contenedor X.509 Llave Pública PGP Llave Pública SPKI Llave Pública XKMS Firma Digital XML Signature Atributos El sujeto S posee los siguientes atributos: Atributo 1 : a Atributo 2 : b … Atributo n : n Este tipo de información esta típicamente contenida en servidores LDAP. Autorización Al sujeto S se puede autorizar el acceso tipo A sobre el recurso R dada la evidencia E .
  • 33.
    Ejemplo Aserción deAutenticació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.
    Arquitectura SAML SAMLAserció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.
    WS-Security Esfuerzo conjuntode IBM, Microsoft y VeriSign En Abril de 2002 publican “Security in a Web Services World: A Proposed Architecture and Roadmap” Hoy mantenida por OASIS Su objetivo es Proveer seguridad a SOAP Se enfoca en la correcta y efectiva aplicación de tecnologías como XML Signature XML Encryption SAML Provee un contenedor para artefactos de seguridad
  • 36.
    El encabezado WS-Security Tokens de seguridad Cero, uno ó más tokens de seguridad Usualmente no más de uno Elementos de contenido cifrado con XML Encryption Cero, uno ó más de elementos XML Encryption Estos pueden ser <ReferenceList> <EncryptedKey> Elementos de contenido firmado digitalmente con XML Signature Cero, uno ó más firmas XML Signature Usualmente, si se incluye una firma, esta firma como mínimo alguna parte del cuerpo del mensaje.
  • 37.
    Ejemplo Sobre SOAPWS-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.
    Espacios de Nombreen 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.
    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.
    Tokens de SeguridadNombre de Usuario y Contraseña Nombre de Usuario y Constraseña con Password Digest Certificados X509 Kerberos XML SAML Security Assertion Markup Language XrML eXtensible Right Markup Language XCBF XML Common Biometric Format … …
  • 41.
    Username Token <wsse:Security><wsse:UsernameToken> <wsse:Username>jselman</wsse:Username> <wsse:Password>1234</wsse:Password> </wsse:UsernameToken> </wsse:Security>
  • 42.
    Username Token PasswordDigest <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.
    Certificados X509 <wsse:Security> <wsse:BinarySecurityToken ValueType=”wsse:X509v3” EncodingType=”wsse:Base64Binary”> NIFEPzCCA9CrAwIBAgIQEmtJZc0… </wsse:BinarySecurityToken> </wsse:Security>
  • 44.
    Token SAML <S:Envelopexmlns: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.
    Token eXtensible RightsMarkup 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.
    Token XCBF <S:Envelopexmlns: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.
    XML Signature en WS-Security Objetivo Verificación de integridad y veracidad de credenciales incrustadas en los tokens Proveer Integridad persistente El mensaje puede ser manipulado legítimamente en cada nodo de su ruta Pueden incluirse varias firmas digitales en el encabezado No es más que la incrustación de un elemento XML Signature en un encabezado WS-Security No establece reglas sobre qué se debe firmar
  • 48.
    Ejemplo XML Signatureen 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.
    XML Encryption en WS-Security Objetivo Esconder selectivamente información sensible dentro de mensajes SOAP Proveer confidencialidad persistente Generalmente se utiliza una llave de sesión por rendimiento No es más que la incrustación de un elemento XML Encryption en un encabezado WS-Security No establece reglas sobre qué se debe cifrar
  • 50.
    Ejemplo XML Encryptionen 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.
    Opciones de SeguridadCapa 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.
    Comparación Seguridad SegúnCapa 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.
    Seguridad Capa deMensajería Construida sobre modelos maduros Gran cantidad de especificaciones Muchas de ellas muy inmaduras Mayor Fortaleza Flexibilidad Mayor Debilidad Flexibilidad
  • 54.
    Frameworks de Desarrollo.NET WSE (Web Services Enhancements) http://msdn.microsoft.com/webservices/webservices/building/wse/default.aspx Java WSS4J (WS-Security for Java) http://ws.apache.org/wss4j/
  • 55.
    Recomendaciones Interoperabilidad WebServices Interoperability Organization Perfil Básico Perfil Básico de Seguridad “ Security Challenges, Threats and Countermeasures ” http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
  • 56.
    El problema deadministració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.
    Firewall Servicios WebClientes Servidor Web Servidor App. Servidor App. Servidor App. Acceso Datos Conectores a Sistemas Legados Bases de Datos FW Firewall para Servicios Web
  • 58.
    Proxy Reverso Aplicación1 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.
    Múltiples Agentes Aplicación1 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.