Vous êtes sur la page 1sur 60

<Seguridad en Web

Services>
Servicios Web y Frameworks de Desarrollo

<Jos Miguel Selman Grez>
Lunes 3 de Julio de 2006
En esta Sesin
Porque necesitamos seguridad
Motivacin
Desafos introducidos por Servicios Web
Presentacin Tecnologas seguridad para
XML
Presentacin Tecnologas seguridad para
Servicios Web
Discusin y Recomendaciones

Seguridad como un
habilitador
Integracin de Aplicaciones
EAI
CRMs
ERPs
B2C, B2B, etc.
Automatizacin de Procesos de Negocio
Portales de Agregacin de Informacin

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
Criptografa
etc.
Seguridad Permetro

Firewalls/VPNs
Criptografa
Seguridad Servidores Web
Deteccin de Intrusin
etc.
Plataformas Predominantes: J2EE y .NET
De qu debemos proteger
nuestras aplicaciones?
Violacin de Confidencialidad Violacin de Integridad
Ataque de Repeticin
Ataques Aplicaciones
Ataque del Intermediario (conocido como Man in the Middle)
Ataque tpicos
Aplicaciones Web
Manipulacin de parmetros
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
Autenticacin
Autorizacin
Confidencialidad
Integridad
No repudiacin
Alta Disponibilidad

Desafos de Seguridad
Servicios Web
Seguridad basada en el usuario final
Mantener la seguridad al pasar por
mltiples Servicios (nodos)
Abstraccin de la seguridad del
transporte subyacente
Seguridad basada en el
usuario final
Seguridad a travs de mltiples
Servicios y mltiples transportes
Physical
Data Link
Network
Transport
Session
Presentation
Application
Physical
Data Link
Network
Transport
Session
Presentation
Application
Usuario Sitio Web Servicio Web
HTTP JMS
Abstraccin de Seguridad del transporte subyacente
Seguridad Persistente
Contexto de Seguridad 1
Contexto de Seguridad 2

Arquitectura General
Servicios Web
Comunicaciones
HTTP, SMTP, FTP, JMS, IIOP,
Mensajes
Extensiones SOAP
Entrega Confiable, Correlacin, Transacciones
SOAP
Descripciones
WSDL
Procesos
Descubrimiento, Agregacin, Coreografa,
X
M
L
,

D
T
D
,

X
M
L

S
c
h
e
m
a

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 Tecnologas
Integridad
SSL/TLS
Confidencialidad
SSL/TLS
Autenticacin Proveedor
(Servidor)
SSL/TLS
Autenticacin
Consumidor (Cliente)
SSL/TLS con autenticacin 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 Mensajera
Ambas
Existencia de gran cantidad de
especificaciones y alternativas

Seguridad en la Capa de
Mensajera
Transporte
(HTTP, SMTP, FTP, MQ, etc.)
Envelope (XML)
Header Body
RPC/Encoded
Document/Literal
Informacin Rutas
Transacciones
Entrega Confiable
Seguridad

Interrelacin
Tecnologas/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
I
n
f
r
a
e
s
t
r
u
c
t
u
r
a

d
e

R
e
d

F
r
a
m
e
w
o
r
k
s

X
M
L

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 tecnologas maduras de encriptacin asimtrica y
generacin de hashes
SHA1
RSA

Requiere de una infraestructura de llaves pblicas para
proveer:
Identidad
No repudiacin


Tipos de Firmas XML
Signature
<Signature>
<Reference>
<ElementoFirmado>
Enveloping
<ElementoEnvolvente>

<Signature>
<Reference>
Enveloped
<DocumentoXML>

<Signature>
<Reference>
Detached
<ElementoDestino>
Canonicalizacin
<OrdenDeCompra>
<Productos>
<CodProducto>
SKU10023
</CodProducto>
</Productos>
</OrdenDeCompra>
<OrdenDeCompra><Productos>
<CodProducto>SKU10023</CodProducto></Productos></OrdenDeCompra>
c14n
Consenso comn
XSLT
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>Informacin 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
deberan contener cierto elemento.

XML Encryption
Posterior a XML Signature
La informacin cifrada es expresada en un formato comn
XML
Trozos de un documento XML pueden ser selectivamente
cifrados
Utiliza algoritmos y tcnicas de encriptacin maduras
Simtrica
Asimtrica
Hbrida (llave de sesin)
Algunos Algoritmos
DES
3DES
AES


Confidencialidad
Simtrica
Asimtrica
Llave de Sesin
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 pblica (PKI)
Repositorio de credenciales
Asociacin a identidades

Ventajas
Complejidad reducida para los clientes
Facilita la codificacin
Administracin de la confianza centralizada

PKI
Servicios Web
XKMS
Aplicaciones
SAML
Security Assertion Markup Language
Especificacin 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
Autenticacin
Atributos
Autorizacin
Se pueden firmar con XML Signature!

Aserciones SAML
Autenticacin
El Sujeto S fue identificado con el mtodo M a la hora T.
Los mtodos de autenticacin soportados
Contrasea
Ticket Kerberos
Contrasea Remota Segura (RSP)
Token de Hardware
Certificado de Cliente SSL
Llave Pblica en un contenedor X.509
Llave Pblica PGP
Llave Pblica SPKI
Llave Pblica 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 informacin esta tpicamente contenida en servidores LDAP.
Autorizacin
Al sujeto S se puede autorizar el acceso tipo A sobre el recurso R dada la evidencia E.
Ejemplo Asercin de
Autenticacin
<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
Asercin de
Autenticacin
Asercin de
Atributos
Asercin de
Autorizacin
Autoridad de
Autenticacin
Autoridad de
Atributos
Punto de Decisin
de Polticas (PDP)
Recolector de
Credenciales
Entidad de
Sistema
Punto de Hacer
Valer Polticas (PEP)
Requerimiento
Aplicacin
Poltica Poltica Poltica
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 aplicacin de
tecnologas como
XML Signature
XML Encryption
SAML
Provee un contenedor para artefactos de seguridad
El encabezado
WS-Security
Tokens de seguridad
Cero, uno ms tokens de seguridad
Usualmente no ms de uno
Elementos de contenido cifrado con XML Encryption
Cero, uno ms de elementos XML Encryption
Estos pueden ser
<ReferenceList>
<EncryptedKey>
Elementos de contenido firmado digitalmente con
XML Signature
Cero, uno ms firmas XML Signature
Usualmente, si se incluye una firma, esta firma como
mnimo 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 Contrasea
Nombre de Usuario y Constrasea 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="...">
<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 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="...">
<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
WS-Security
Objetivo
Verificacin de integridad y veracidad de credenciales
incrustadas en los tokens
Proveer Integridad persistente
El mensaje puede ser manipulado legtimamente en
cada nodo de su ruta
Pueden incluirse varias firmas digitales en el
encabezado
No es ms que la incrustacin 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 informacin sensible
dentro de mensajes SOAP
Proveer confidencialidad persistente
Generalmente se utiliza una llave de sesin
por rendimiento
No es ms que la incrustacin 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 Mensajera
Servicio de Seguridad Tecnologas
Integridad
XML Signature
S/MIME
PKCS#7
Confidencialidad
XML Encryption
Autenticacin del Emisor
SOAP (Cliente)
XML Encryption username & [password|digest]
username & [password|digest]
Certificado X.509
Token de Seguridad Kerberos
SAML
REL
Etc.
Comparacin Seguridad
Segn Capa
Seguridad de Transporte Seguridad de Mensajera
Punto a Punto Destino a Destino
Madura, su implementacin 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 tecnologas de
transporte
Seguridad Capa de
Mensajera
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/webs
ervices/building/wse/default.aspx
Java
WSS4J (WS-Security for Java)
http://ws.apache.org/wss4j/
Recomendaciones
Interoperabilidad
Web Services
Interoperability
Organization
Perfil Bsico
Perfil Bsico de
Seguridad

Security
Challenges,
Threats and
Countermeasures
http://www.ws-i.org/Profiles/BasicSecurityProfile-1.0.html
El problema de
administracin
Servicio 1
Poltica 1
Servicio 2
Servicio 3
Servicio j
Poltica 2
Poltica 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
Aplicacin 1
Aplicacin 2
Aplicacin 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
Mltiples Agentes
Aplicacin 1
Aplicacin 2
Aplicacin 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?

Vous aimerez peut-être aussi