graphic with four colored squares

Seguridad en XML

Jose Emilio Labra Gayo

Noviembre 2006

Contenidos

Seguridad en XMLJose Emilio Labra GayoNoviembre 2006

Requisitos de seguridad

Claves simétricas vs asimétricas

Un sistema utiliza claves simétricas si la misma clave sirve para cifrar y para descifrar un documento

En un sistema de claves asimétricas se utiliza una clave para cifrar y otra para descifrar el documento

Canonización

Un mismo contenido puede ser representado de varias formas en XML

Doc1.xml
<img src="pp.jpg" alt="Foto de Pepe"></img>
Doc2.xml
<img src="pp.jpg" alt="Foto de Pepe" />
Doc3.xml
<img alt="Foto de Pepe" src="pp.jpg" />

Canonización

Varias propuestas de W3C:

XML Signature

XML Digital Signature (2002) permite demostrar la identidad y autenticidad del documento

Objetivo: Integridad y autenticación

Es básica la canonización para identificar documentos comunes

Estructura de XML SIgnature

Estructura de XML Signature

Estructura de XML Signature

Ejemplo de XML Digital Signature (1)

<Signature Id="MyFirstSignature" 
 xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
 <CanonicalizationMethod 
   Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
 <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
 <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126/">
 <Transforms>
  <Transform 
   Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
 </Transforms>
 <DigestMethod 
   Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
 <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue>
 </Reference>
</SignedInfo>
...

Ejemplo de XML Digital Signature (2)

...
 <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue>
 <KeyInfo>
  <KeyValue>
  <DSAKeyValue>
   <p>...</p><Q>...</Q><G>...</G><Y>...</Y>
  </DSAKeyValue>
 </KeyValue>
</KeyInfo>
</Signature>

XML Encryption

Objetivo: proteger una información que se envía del acceso no autorizado por terceras partes

Permite cifrar:

Componentes de XML Encryption

El elemento EncryptedData consta de:

Ejemplo: cifrado de una parte

<pedido><nombre>Pepe</nombre>
<formaPago><tarjeta tipo="Visa">
 <num>2323 4121 2445 8976</num>
 <titular>Jose Pablo Herrera</titular>
 <fecha>02/09</fecha>
</tarjeta></formaPago>
</pedido>
<pedido><nombre>Pepe</nombre>
<formaPago>
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
 xmlns="http://www.w3.org/2001/04/xmlenc#">
<CipherData><CipherValue>C5723A...</CipherValue></CipherData>
</EncryptedData>
</formaPago>
</pedido>

Ejemplo: cifrado de un valor

Puede cifrarse únicamente el valor de un elemento. Por ejemplo el número de tarjeta

<pedido><nombre>Pepe</nombre>
<formaPago><tarjeta tipo="Visa">
 <num><EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Content"
 xmlns="http://www.w3.org/2001/04/xmlenc#">
<CipherData><CipherValue>B6235...</CipherValue></CipherData>
</EncryptedData>
 </num>
 <titular>Jose Pablo Herrera</titular>
 <fecha>02/09</fecha>
</tarjeta>
</formaPago>
</pedido>

Ejemplo: cifrado de un valor

Puede cifrarse únicamente el valor de un elemento. Por ejemplo el número de tarjeta

<EncryptedData 
 MimeType="text/xml"
 xmlns="http://www.w3.org/2001/04/xmlenc#">
<CipherData><CipherValue>B6235...</CipherValue></CipherData>
</EncryptedData>

XKMS

Objetivo: Ocultar al usuario la complejidad subyacente en PKI

2 partes:

SAML

SAML (Security Assertion Markup Language) permite compartir información de autentificación entre aplicaciones

Se basa en autoridades que emiten aserciones

Transmite varios tipos de aserciones:

XACML

XACML (XML Access Control Markup Language) permite expresar políticas de control de acceso

Codifica en reglas XML expresiones del tipo:

XrML

XrML (eXtensible Rights Markup Language)

Permite expresar reglas sobre derechos

Codifica expresiones del tipo:

Fin de la presentación

Contenidos