Anar al contingut

XML Encryption

De L'Enciclopèdia, la wikipedia en valencià

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#'

Type='http://www.w3.org/2001/04/xmlenc#Content'>

       <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]


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]