XML security

Z Kiwiki
Verzia z 14:27, 11. jún 2010, ktorú vytvoril Ian (diskusia | príspevky) (→‎SAML)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)
Skočit na navigaci Skočit na vyhledávání

XML Security

Ako sme už spomenuli, komunikácia webových služieb a klientskych aplikácií prebieha prostredníctvom SOAP správ. Na komunikáciu je použitý typ SOAP správ nazývaný document-style (štýl dokument). Tento typ SOAP zobrazuje dáta, ktoré sú vymenované ako dokumenty, čiže každá SOAP správa obsahuje v tele XML dokument. Z toho dôvodu môžeme využiť pri zabezpečovaní SOAP správ technológie zamerané na bezpečnosť XML.

XML Security predstavuje rozšírenie samotného XML o bezpečnostné mechanizmy. XML Security tvorí päť častí [14], [15]:

  • XML Signature (XS),
  • XML Encryption (XE),
  • Security Assertion Markup Language (SAML),
  • XML Access Control Markup Language (XACML),
  • XML Key Managment Specification (XKMS).


XML Signature

XML Signature je štandard definujúci XML schému pre uloženie výsledku operácie digitálneho podpisu aplikovaného na ľubovoľné (XML) dáta. XML podpisy sú najčastejšie využívané pri XML transakciách. Digitálne podpisovanie XML poskytuje mechanizmus na [15]:

  • autentifikáciu,
  • kontrolu integrity a dôvernosti dát,
  • na podporu neopakovateľnosti ( non repundation).

XML Signature umožňuje podpísať [17]:

  • celý XML dokument,
  • vybrané časti XML dokumentu.

Možnosť podpísať len vybranú časť XML stromu umožňuje veľkú flexibilitu. Napríklad v situácii, kde rozličné časti XML dokumentu boli vytvorené viacerými autoritami, každá autorita môže podpísať len svoju časť XML dokumentu.

Schéma XML digitálneho podpisu je v Tab. 8.1.


Tab. 8.1 XML Signature[17]
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
  <CanonicalizationMethod Algorithm=""/>
  <SignatureMethod Algorithm=""/>
  <Reference URI="">
      <Transforms>
        <Transform Algorithm=""/>
      </Transforms>
      <DigestMethod Algorithm=""/>
      <DigestValue></DigestValue> 
  </Reference>
</SignedInfo>
<</Signature>

Popis dôležitých elementov XML Signature [17]:

  • Reference - Každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou.
  • Transform - Je zoznam procesov ktoré sa aplikujú na obsah XML dokumentu pred jeho digitálnym podpísaním.
  • Digest - Tento element obsahuje hodnotu digest odkazovaného zdroja.
  • SignatureValue - Obsahuje hodnotu zašifrovaného digest elementu SignedInfo.

XML Signature môže obsahovať ešte nepovinný element KeyInfo, ktorý určuje typ kľúča potrebného k overeniu digitálneho podpisu XML dokumentu.

Technológiu XML Signature použijeme pri zabezpečovaní komunikácie vo vlastnej bezpečnostnej platforme.

XML Encryption

XML Encryption je štandard definujúci XML schému pre uloženie výsledku operácie digitálneho šifrovania aplikovaného na ľubovoľné (XML) dáta. Takisto ako XML Signature aj XML Encryption umožňuje šifrovať [18]:

  • celý XML dokument,
  • vybrané časti XML dokumentu.

XML Encryption predstavuje point-to-point zabezpečenie, odstraňuje určité nedostatky technológie SSL alebo TLS.

Tento štandard nebude použitý pri vytváraní vlastnej bezpečnostnej platformy, nakoľko sme sa rozhodli ponúknuť vlastný alternatívny spôsob ako selektívne šifrovať časti XML s použitím veľmi bezpečného Advanced Encryption Standard. Dôvod vlastného spôsobu šifrovania XML je ten, že pri XML Encryption dochádza k zašifrovaniu tagov XML a tým sa stráca určitá funkčnosť XML dokumentu, v našom prípade SOAP správy.

Schéma XML Encrypt je v Tab. 8.2.

Tab. 8.2 XML Encrypt [18]
<?xml version='1.0'?>
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
 MimeType='text/xml'>
  <CipherData>
    <CipherValue>A23B45C56</CipherValue>
  </CipherData>
<</EncryptedData>

Pre viac informácií odporúčame [18].

SAML

Štandard SAML umožňuje zdieľanie autentifikačných a autorizačných informácií v rámci určitého systému. Medzi autentifikačné a autorizačné informácie patria roly a certifikáty. Dokument SAML môže byť digitálne podpísaný pomocou XML Signature. [15]

1. Webový portál overí identitu užívateľa na základe klientskeho certifikátu. Užívateľovi pridelí určitú identitu, rolu.

2. Rola užívateľa je pripojená do SOAP správy, ktorá je digitálne podpísaná webovým portálom.

3. Webová služba overí identitu webového portálu, skontroluje digitálny podpis a následne zakáže alebo povolí klientovi prístup.

Štandard SAML sa skladá z troch častí [19]:

1. Definuje syntax a sémantiku správ obsahujúcich assertion (tvrdenia) vo forme XML.

2. Definuje protokoly pre výmenu bezpečnostných informácií.

3. Definuje pravidlá pre použitie assertion, štandardy pre transport. Napríklad SOAP tvrdenie môže byť poslané v SOAP správe cez HTTP kanál.

Security Assertion Markup Language sa dá využiť v týchto 3 nasledujúcich scenároch [19]:


  • Single sing-on (Jediné prihlásenie),
Obr. 8.2 SSO


1. Klient je autentifikovaný prostredníctvom certifikátu na webovom portáli 1.

2. Pri prístupe na webový portál 2 by musel znova predložiť certifikát.

3. Pokiaľ je použitý SAML, webový portál 2 overí identitu na webovom portáli 1 a na základe toho sa rozhodne, či dovolí alebo odmietne prístup klientovi.


  • Distribuované transakcie,
  • Autorizačná služba.

XACML

Tento štandard úzko súvisí so SAML, ktorý slúži ako mechanizmus na šírenie autentifikačných a autorizačných informácií. XACML je autentifikačná a autorizačná informácia. Predstavuje XML metajazyk, ktorého úlohou je štandardizovať popis autentifikačných a autorizačných politík. Definuje slovník pre popis práv a podmienok subjektu.

Nakoľko štandard XACML nebude v bezpečnostnej platforme použitý, nebudeme sa ním podrobnejšie zaoberať. Pre viac informácií odporúčame [30].

XMKS

XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre [21]:

  • registráciu,
  • rušenie platnosti,
  • obnovu kľúčov,
  • vydanie nového kľúča.

XMKS sa skladá z troch častí [21]:

1. XML Key Information Service Specification (X - KISS). Podporuje služby pre používanie kryptografických kľúčov.

2. XML Key Registration Service Specification (X – KRSS). Podporuje služby spojené s držiteľom kryptografických kľúčov (obnova, registrácia).

3. Bulk Key Regisration ( X- Bulk) predstavuje rozšírenie X – KRSS pre hromadnú registráciu kryptografických kľúčov. Tieto protokoly môžu byť použité spolu so SOAP