XML security: Rozdiel medzi revíziami
(→SAML) |
|||
(3 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= | |
− | |||
− | Ako sme už spomenuli komunikácia webových služieb a klientskych | + | 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 16: | Riadok 15: | ||
− | + | ==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, |
* 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 31: | 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 39: | 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 54: | 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''' | + | * '''Reference - '''Každý zdroj, ktorý má byť digitálne podpísaný má svoj vlastný Reference element, reprezentovaný URI adresou. |
− | * '''Transform''' | + | * '''Transform''' - Je zoznam procesov ktoré sa aplikujú na obsah XML dokumentu pred jeho digitálnym podpísaním. |
− | * '''Digest | + | * '''Digest - '''Tento element obsahuje hodnotu digest odkazovaného zdroja. |
− | * '''SignatureValue | + | * '''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 63: | 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 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 73: | 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 | + | 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 81: | Riadok 79: | ||
|- | |- | ||
|<source lang="xml"> | |<source lang="xml"> | ||
− | < | + | <?xml version='1.0'?> |
− | </ | + | <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' |
− | < | + | MimeType='text/xml'> |
− | < | + | <CipherData> |
− | </CipherData> | + | <CipherValue>A23B45C56</CipherValue> |
− | </EncryptedData> | + | </CipherData> |
+ | <</EncryptedData> | ||
</source> | </source> | ||
|} | |} | ||
+ | Pre viac informácií odporúčame <nowiki>[</nowiki>18<nowiki>]</nowiki>. | ||
− | + | ==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. <nowiki>[</nowiki>15<nowiki>]</nowiki> | ||
− | 1. Webový portál overí | + | 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 | + | 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 | + | 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 111: | 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 | + | 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 | + | 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), | |
− | [[Súbor: | + | [[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 | + | 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,''' | * '''Distribuované transakcie,''' | ||
* '''Autorizačná služba.''' | * '''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 <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 | ||
− | |||
+ | ==XMKS== | ||
− | + | XMKS špecifikuje protokol pre hospodárenie s verejnými kryptografickými kľúčmi konkrétne pre <nowiki>[</nowiki>21<nowiki>]</nowiki>: | |
− | + | * registráciu, | |
+ | * rušenie platnosti, | ||
+ | * obnovu kľúčov, | ||
+ | * vydanie nového kľúča. | ||
− | + | XMKS sa skladá z troch častí <nowiki>[</nowiki>21<nowiki>]</nowiki>: | |
− | |||
− | |||
− | |||
− | XMKS sa skladá z troch | ||
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 155: | 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.
<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),
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