XML Encryption
A mida que la tecnologia XML s'estén, cada volta més informació es distribuïx en este format. Pero XML va nàixer com a format de documents i en sí mateixa no conté elements relacionats en la seguritat. Açò fa necessari realisar un esforç concret en esta matèria, en una busca per a trobar un método per a protegir eixa informació compartida.
XML Encryption és una Recomanació del Consorci Web (W3C) que especifica un procés per a sifrar senyes (no únicament documents XML) i representar eixa informació sifrada a la seua volta en XML per a que viage pels mijos de transmissió. Este artícul pretén descriure i ejemplificar someramente el seu funcionament, per a informació detallada acodir a l'Especificació del Consorci Web.
S'han publicat les greus deficiències de seguritat d'esta especificació.[1]
Aspectes generals
[editar | editar còdic]XML Encryption establix que per a sifrar un element (o un contingut textual d'un element), est va a ser substituït per un atre element establit per l'especificació que contindrà la senya sifrada i l'informació necessària per al processament, com pot ser l'identificació de l'algoritme utilisat o senyes sobre la clau empleada. Este element és <EncryptedData>, de tal modo que podria aparéixer com a raïl del nou document generat despuix del procés, o com a fill d'atres elements ya existents prèviament.
Per un atre costat, l'especificació establix XML Schema com a esquema de model de senyes. Dit Schema pot ser consultat en l'especificació de XML Encryption i és necessari per a conéixer la sintaxis a amprar.
La versió actual de XML Encryption utilisa el següent espai de noms:
xmlns:xenc='http://www.w3.org/2001/04/xmlenc#'
Granularidad del sifrat de documents XML
[editar | editar còdic]XML Encryption establix que és possible sifrar senyes a distints nivells de granularidad, des d'elements simples fins a documents sancers. Pot vore's fàcilment en un eixemple prou intuïtiu, obtingut directament del Consorci Web (W3C). Supongam que disponem del següent document XML:
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<CreditCard Limit='5,000' Currency='USD'>
<Number>4019 2445 0277 5567</Number>
<Issuer>Example Bank</Issuer>
<Expiration>04/02</Expiration>
</CreditCard>
</PaymentInfo>
Es tracta d'una informació de pagament que conté senyes sobre una targeta de crèdit: un client cridat John Smith dispon d'una targeta de crèdit, el número del qual és 4019 2445 0277 5567, en un llímit de 5000 USD i en data d'expiració. Esta informació és delicada i deuria ser protegida.
Vejam uns eixemples de diferents nivells de sifrat per a eixe document…
Sifrant un element
[editar | editar còdic]Podem sifrar únicament l'element <CreditCard> i deixar el nom del client intacte, obtenint lo següent:
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element'
xmlns='http://www.w3.org/2001/04/xmlenc#'>
<CipherData>
<CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
</PaymentInfo>
En sifrar totalment l'element <CreditCard>, incloent les seues etiquetes, l'identitat de l'element permaneix amagada. Açò oferix una interessant possibilitat per a la seguritat ya que en principi no se sabrà quin és el mig de pagament fins que no es dessifre la senya.
Sifrant elements fills
[editar | editar còdic]Podem optar per no sifrar tot l'element <CreditCard> sino algunes senyes en concret: el número, el banc i la data d'expiració.
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<CreditCard Limit='5,000' Currency='USD'>
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
<CipherData>
<CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
</CreditCard>
</PaymentInfo>
Ara veem que l'element <CreditCard> permaneix visible pero no les senyes que volíem ocultar.
Sifrant contingut textual
[editar | editar còdic]Si volem protegir únicament el número de targeta de crèdit (és dir, el contingut textual de l'element <number>) obtindríem lo següent:
<?xml version='1.0'?>
<PaymentInfo xmlns='http://example.org/paymentv2'>
<Name>John Smith</Name>
<CreditCard Limit='5,000' Currency='USD'>
<Number>
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
Type='http://www.w3.org/2001/04/xmlenc#Content'>
<CipherData>
<CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
</Number>
<Issuer>Example Bank</Issuer>
<Expiration>04/02</Expiration>
</CreditCard>
</PaymentInfo>
Veem que tota l'informació permaneix intacta llevat el contingut textual de l'element <number> que contenia la senya a protegir.
Sifrant documents sancers
[editar | editar còdic]Si es necessita que tota l'informació siga protegida és possible sifrar tot un document XML. Si ho fem en el document del nostre eixemple s'obté lo següent:
<?xml version='1.0'?>
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
MimeType='text/xml'>
<CipherData>
<CipherValue>A23B45C56</CipherValue>
</CipherData>
</EncryptedData>
Ara, tota l'informació ha segut sifrada.
Super-sifrat (sifrant senyes prèviament sifrades)
[editar | editar còdic]Ya que és possible sifrar qualsevol tipo d'informació, res nos impedix sifrar senyes que ya estaven sifrats. Açò es coneix com Super-sifrat i pot ser utilisat sempre que es respecte la següent llimitació: es deu sifrar l'element <EncryptedData> al complet.
Sifrar el contingut textual o elements fills del mateix tindria com resultat un document XML inválido front al Schema que definix XML Encryption, ya que segons este esquema un element <EncryptedData> no pot ser pare o fill d'un atre element <EncryptedData>. Serà necessari puix tindre en conte eixa llimitació a l'hora d'utilisar esta possibilitat de doble sifrat.
Referències
[editar | editar còdic]- An Introduction to XML Encryption and XML Signatura, Murdoch Mactaggart
- 1.0, W3C
- XML Encryption, W3C
- XML Key Management, W3C
- XML Schema, W3C
- XML Signature, W3C
Este artícul incorpora material de http://www.planetasilius.tk, que per mig d'una Wikipedia:Autorisacions/ autorisació va permetre agregar contingut publicar-los baix llicència GFDL.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «XML Encryption» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.