XML security: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
 
(4 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
Riadok 2: Riadok 2:
 
{{Praca_uvod|8|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}
 
{{Praca_uvod|8|Návrh a implementácia bezpečnostnej technológie pre webové služby|XML a webové služby |XML ASP.NET webové služby|Zabezpečennie webových aplikácií|Integrita a dôvernosť komunikácie|Autentifikácia|Autorizácia webových služieb|Zabezpečenie webových služieb|XML security|SOAP Security Enhancement  pre ASP.NET webové služby}}
 
__TOC__
 
__TOC__
= =
+
=XML Security=
==XML Security==
 
  
Ako sme už spomenuli komunikácia webových služieb a klientskych aplikácii 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.
+
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í <nowiki>[</nowiki>14<nowiki>]</nowiki> , <nowiki>[</nowiki>15<nowiki>]</nowiki>:
+
XML Security predstavuje rozšírenie samotného XML o bezpečnostné mechanizmy. '''XML Security '''tvorí päť častí <nowiki>[</nowiki>14<nowiki>]</nowiki>, <nowiki>[</nowiki>15<nowiki>]</nowiki>:
  
 
* XML Signature (XS),
 
* XML Signature (XS),
Riadok 15: Riadok 14:
 
* XML Key Managment Specification (XKMS).
 
* XML Key Managment Specification (XKMS).
  
===XML Signature===
+
 
 +
==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 <nowiki>[</nowiki>15<nowiki>]</nowiki>:
 
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 <nowiki>[</nowiki>15<nowiki>]</nowiki>:
  
* Autentifikáciu,
+
* autentifikáciu,
 
* kontrolu integrity a dôvernosti dát,
 
* kontrolu integrity a dôvernosti dát,
 
* na podporu neopakovateľnosti ( non repundation).
 
* na podporu neopakovateľnosti ( non repundation).
Riadok 29: Riadok 29:
  
 
Schéma XML digitálneho podpisu je v Tab. 8.1.
 
Schéma XML digitálneho podpisu je v Tab. 8.1.
 +
  
  
Riadok 37: Riadok 38:
 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
 
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
 
<SignedInfo>
 
<SignedInfo>
<CanonicalizationMethod Algorithm/>  
+
  <CanonicalizationMethod Algorithm=""/>
<SignatureMethod Algorithm/>  
+
  <SignatureMethod Algorithm=""/>
<Reference URI="">
+
  <Reference URI="">
<Transforms>
+
      <Transforms>
<Transform Algorithm/>  
+
        <Transform Algorithm=""/>
</Transforms>
+
      </Transforms>
<DigestMethod Algorithm/>  
+
      <DigestMethod Algorithm=""/>
<DigestValue> DigestValue>  
+
      <DigestValue></DigestValue>  
</Reference>
+
  </Reference>
 
</SignedInfo>
 
</SignedInfo>
 +
<</Signature>
 
</source>
 
</source>
 
|}
 
|}
Riadok 52: Riadok 54:
 
Popis dôležitých elementov XML Signature <nowiki>[</nowiki>17<nowiki>]</nowiki>:
 
Popis dôležitých elementov XML Signature <nowiki>[</nowiki>17<nowiki>]</nowiki>:
  
* '''Reference''' každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou.
+
* '''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.
+
* '''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.
+
* '''Digest - '''Tento element obsahuje hodnotu digest odkazovaného zdroja.
* '''SignatureValue, '''obsahuje hodnotu zašifrovaného digest  elementu '''SignedInfo'''.
+
* '''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.
 
'''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.
Riadok 61: Riadok 63:
 
Technológiu XML Signature použijeme pri zabezpečovaní  komunikácie vo vlastnej bezpečnostnej platforme.
 
Technológiu XML Signature použijeme pri zabezpečovaní  komunikácie vo vlastnej bezpečnostnej platforme.
  
===XML Encryption===
+
==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ť <nowiki>[</nowiki>18<nowiki>]</nowiki>:
 
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ť <nowiki>[</nowiki>18<nowiki>]</nowiki>:
Riadok 69: Riadok 71:
 
XML Encryption predstavuje point-to-point zabezpečenie, odstraňuje určité nedostatky technológie SSL alebo TLS.
 
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 platforme, 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, tým sa stráca určitá funkčnosť XML dokumentu, v našom prípade SOAP správy.'''
+
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.
 
Schéma XML Encrypt  je v Tab. 8.2.
Riadok 77: Riadok 79:
 
|-
 
|-
 
|<source lang="xml">
 
|<source lang="xml">
<EncryptedData Type>
+
<?xml version='1.0'?>
</EncryptionMethod Algorithm/>  
+
<EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#'
</CipherData>
+
MimeType='text/xml'>
</CipherValue></CipherValue>  
+
  <CipherData>
</CipherData>
+
    <CipherValue>A23B45C56</CipherValue>
</EncryptedData>
+
  </CipherData>
 +
<</EncryptedData>
 
</source>
 
</source>
 
|}
 
|}
  
 +
Pre viac informácií odporúčame <nowiki>[</nowiki>18<nowiki>]</nowiki>.
  
Pre viac informácii odporúčame <nowiki>[</nowiki>18<nowiki>]</nowiki>.
+
==SAML==
 
 
===SAML===
 
 
 
Štandard SAML umožňujúci zdieľanie autentifikačných a autorizačných informácii v rámci určitého systému. Medzi autotentifikačné a autorizačné informácie patria role a certifikáty. Dokument SAML môže byť digitálne podpísaní pomocou XML Signature. <nowiki>[</nowiki>15<nowiki>]</nowiki>
 
 
 
  
 +
Š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. <nowiki>[</nowiki>15<nowiki>]</nowiki>
  
1. Webový portál overí indentitu užívateľa na základe klientskeho certifikátu. Užívateľovi pridelí určitú identitu, rolu.
+
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ísane webovým portálom.
+
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.
+
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í <nowiki>[</nowiki>19<nowiki>]</nowiki>:
 
Štandard SAML sa skladá z troch častí <nowiki>[</nowiki>19<nowiki>]</nowiki>:
Riadok 105: Riadok 105:
 
1. Definuje syntax a sémantiku správ obsahujúcich assertion (tvrdenia) vo forme XML.
 
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ácii.
+
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.
 
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ých 3 nasledujúcich scenárov <nowiki>[</nowiki>19<nowiki>]</nowiki>:
+
Security Assertion Markup Language sa dá využiť v týchto 3 nasledujúcich scenároch <nowiki>[</nowiki>19<nowiki>]</nowiki>:
 +
 
  
'''Single sing-on''' (Jediné prihlásenie),
+
* '''Single sing-on''' (Jediné prihlásenie),
  
[[Súbor:tempDp_18.png|framed|center|Obr. 8.2 SSO ]]
+
[[Súbor:dp_2010_jm_12.png|framed|center|Obr. 8.2 SSO ]]
  
  
 
1. Klient je autentifikovaný prostredníctvom certifikátu na webovom portáli 1.
 
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.
+
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.
  
3. Pokiaľ je použitý SAML, webový portál 2 overí identitu na webovom portály 1, a na základe toho sa rozhodné či dovolí alebo odmietne prístup klientovi.
 
  
 
* '''Distribuované transakcie,'''
 
* '''Distribuované transakcie,'''
 
* '''Autorizačná služba.'''
 
* '''Autorizačná služba.'''
  
===XACML===
+
==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.
  
Tento štandard úzko súvisí so SAML, ktorý slúži ako mechanizmus na šírenie autentifikačných a autorizačných informácii. 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 <nowiki>[</nowiki>30<nowiki>]</nowiki>.
  
Nakoľko štandard XACML nebude v bezpečnostnej platforme použitý, nebudeme sa ním podrobnejšie zaoberať. Pre viac informácii odporúčame <nowiki>[</nowiki>30<nowiki>]</nowiki>.
+
==XMKS==
  
===XMKS===
+
XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre <nowiki>[</nowiki>21<nowiki>]</nowiki>:
  
XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčom <nowiki>[</nowiki>21<nowiki>]</nowiki>:
+
* registráciu,
 +
* rušenie platnosti,
 +
* obnovu kľúčov,
 +
* vydanie nového kľúča.
  
* Registrácia,
+
XMKS sa skladá z troch častí <nowiki>[</nowiki>21<nowiki>]</nowiki>:
* Rušenie platnosti,
 
* Obnova kľúčov,
 
* Vydanie nového kľúča.
 
XMKS sa skladá z troch časti <nowiki>[</nowiki>21<nowiki>]</nowiki>:
 
  
 
1. '''XML Key Information Service Specification (X - KISS).''' Podporuje služby pre používanie kryptografických kľúčov.
 
1. '''XML Key Information Service Specification (X - KISS).''' Podporuje služby pre používanie kryptografických kľúčov.
Riadok 145: Riadok 148:
 
2. '''XML Key Registration Service Specification (X – KRSS). '''Podporuje služby spojené s držiteľom kryptografických kľúčov (obnova, registrácia).
 
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.
+
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

Aktuálna revízia z 14:27, 11. jún 2010

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