Podpis XML - XML Signature
Podpis XML (také zvaný XMLDSig, XML-DSig, XML-Sig) definuje an XML syntaxe pro digitální podpisy a je definován v Doporučení W3C Syntaxe a zpracování podpisu XML. Funkčně má mnoho společného s PKCS # 7, ale je rozšiřitelnější a zaměřený na podepisování dokumentů XML. Používají ho různé Web technologie jako MÝDLO, SAML, a další.
Podpisy XML lze použít k podepisování dat – a zdroj– Jakéhokoli typ, obvykle dokumenty XML, ale vše, co je přístupné prostřednictvím URL lze podepsat. Podpis XML používaný k podepsání prostředku mimo jeho obsahující dokument XML se nazývá a samostatný podpis; pokud se používá k podepisování části dokumentu, který jej obsahuje, nazývá se obaleno podpis; pokud obsahuje podepsaná data v sobě, nazývá se obklopující podpis.
Struktura
Podpis XML se skládá z Podpis
prvek v http://www.w3.org/2000/09/xmldsig#
jmenný prostor. Základní struktura je následující:
<Signature> <SignedInfo> /> /> <Reference> /> /> /> </Reference> /> atd. </SignedInfo> /> /> /></Signature>
- The
SignedInfo
prvek obsahuje nebo odkazuje na podepsaná data a určuje, jaké algoritmy se používají.- The
Metoda podpisu
aMetoda kanonizace
prvky jsou používányPodpisová hodnota
prvek a jsou zahrnuty vSignedInfo
chránit je před manipulací. - Jeden nebo více
Odkaz
prvky určují zdroj, který je podepsán odkazem na URI, a jakékoli transformace, které mají být použity na prostředek před podpisem.Transformace
obsahuje transformace aplikované na prostředek před podepsáním. Transformací může být výraz XPath, který vybere definovanou podmnožinu stromu dokumentu.[1]Metoda přehledu
specifikuje hash algoritmus před použitím hash.DigestValue
obsahuje Base64 zakódovaný výsledek aplikace hash algoritmu na transformované zdroje definované vOdkaz
atributy prvků.
- The
- The
Podpisová hodnota
prvek obsahuje Base64 výsledek kódovaného podpisu - podpis vygenerovaný pomocí parametrů uvedených v souboruMetoda podpisu
prvek -SignedInfo
prvek po použití algoritmu určenéhoMetoda kanonizace
. KeyInfo
element volitelně umožňuje podpisujícímu poskytnout příjemcům klíč, který ověřuje podpis, obvykle ve formě jednoho nebo více X.509 digitální certifikáty. Spoléhající se strana musí identifikovat klíč z kontextu, pokudKeyInfo
není přítomen.- The
Objekt
element (volitelně) obsahuje podepsaná data, pokud se jedná o obálkový podpis.
Ověření a bezpečnostní aspekty
Při ověřování podpisu XML byla volána procedura Ověření jádra je následován.
- Ověření reference: Každý
Odkaz
Výtah je ověřen načtením odpovídajícího zdroje a použitím jakýchkoli transformací a poté na něj zadanou metodou výtah. Výsledek se porovná se zaznamenanýmDigestValue
; pokud se neshodují, ověření selže. - Ověření podpisu: The
SignedInfo
element je serializován pomocí metody kanonizace uvedené vMetoda kanonizace
, klíčová data se načítají pomocíKeyInfo
nebo jinými prostředky a podpis je ověřen pomocí metody uvedené vMetoda podpisu
.
Tento postup stanoví, zda zdroje byly skutečně podepsány údajnou stranou. Kvůli rozšiřitelnosti metod kanonizace a transformace se však ověřující strana musí také ujistit, že to, co bylo ve skutečnosti podepsáno nebo stráveno, je to, co bylo skutečně přítomno v původních datech, jinými slovy, že tam použité algoritmy mohou být důvěryhodné ne změnit význam podepsaných dat.
Protože se strukturou podepsaného dokumentu lze manipulovat, což vede k útokům „zabalení podpisu“, měl by proces ověřování zahrnovat také strukturu dokumentu XML. Podepsaný prvek a podpisový prvek by měly být vybrány pomocí absolutního XPath výraz, ne getElementByName
metody.[2]
XML kanonizace
Vytváření podpisů XML je podstatně složitější než vytváření běžného digitálního podpisu, protože daný dokument XML („Infoset ", běžně používaný mezi vývojáři XML) může mít více než jedno legální serializované zastoupení. Například mezery uvnitř XML elementu nejsou syntakticky významné, takže <Elem >
je syntakticky identický s <Elem>
.
Protože digitální podpis zajišťuje integritu dat, jednobajtový rozdíl by způsobil změnu podpisu. Navíc, pokud je dokument XML přenesen z počítače do počítače, terminátor linky může být změněn z CR na LF na CR LF atd. Program, který natráví a ověří dokument XML, může dokument XML později vykreslit jiným způsobem, např. přidání přebytečného prostoru mezi definice atributů pomocí definice prvku nebo použití relativních (vs. absolutních) adres URL nebo změnou pořadí definic oboru názvů. Kanonický XML je obzvláště důležitý, když podpis XML odkazuje na vzdálený dokument, který může chybně vzdálený server vykreslit časově proměnnými způsoby.
Abyste se vyhnuli těmto problémům a zaručili, že logicky identické dokumenty XML poskytují shodné digitální podpisy, XML kanonizace transformace (často zkrácená C14n) se používá při podepisování XML dokumentů (pro podpis SignedInfo
, kanonizace je povinná). Tyto algoritmy zaručují, že sémanticky identické dokumenty vytvářejí přesně identické serializované reprezentace.
Další komplikace vzniká kvůli způsobu, jakým výchozí algoritmus kanonizace zpracovává deklarace oboru názvů; podepsaný dokument XML musí být často vložen do jiného dokumentu; v tomto případě původní algoritmus kanonizace nepřinese stejný výsledek, jako kdyby byl dokument zpracován samostatně. Z tohoto důvodu tzv Exkluzivní kanonizace, který serializuje Obor názvů XML deklarace nezávisle na okolním XML.
Výhody
Podpis XML je flexibilnější než jiné formy digitálních podpisů, jako je Docela dobré soukromí a Syntaxe kryptografických zpráv, protože nefunguje binární data, ale na Infoset XML, umožňující pracovat na podmnožinách dat (to je také možné u binárních dat nestandardními způsoby, například kódování bloků binárních dat v base64 ASCII), které mají různé způsoby, jak svázat podpis a podepsané informace a provádět transformace. Dalším základním konceptem je kanonizace, to znamená podepsat pouze „podstatu“, eliminovat nesmyslné rozdíly, jako jsou mezery a konce řádků.
Problémy
Kritika směřuje k architektuře zabezpečení XML obecně,[3] a na vhodnosti kanonikalizace XML, zejména jako klientského rozhraní pro podepisování a šifrování dat XML, kvůli jeho složitosti, inherentním požadavkům na zpracování a špatným charakteristikám výkonu.[4][5][6] Argumentem je, že provádění kanonizace XML vyžaduje příliš velkou latenci, která je příliš velká na to, aby ji bylo možné překonat pro transakční, výkonově citlivé SOA aplikace.
Těmito otázkami se zabývá Pracovní skupina pro zabezpečení XML.[7][8]
Bez řádné politiky a implementace[2] použití XML Dsig v SOAP a WS-Security může vést k zranitelnostem,[9] například zalomení podpisu XML.[10]
Aplikace
Příklad aplikací podpisů XML:
- Digitální podepisování XBRL výroční zprávy podle auditoři v Holandsko. A PKIoverheid Certifikát X.509, schválený Royal National Institute of Chartered Accountantsnl , je požadováno. Elektronický podpis je právně závazný. The Pojištění SBR Standard[11] je součástí Nizozemců Standardní obchodní výkaznictví program.
Viz také
- Kanonický XML
- Šifrování XML
- XAdES, rozšíření XML-DSig pro použití s pokročilým elektronickým podpisem
- Syntaxe kryptografických zpráv
Reference
- ^ http://www.w3.org/TR/xmldsig-filter2/ Filtr XML-podpis XPath 2.0
- ^ A b Pawel Krawczyk (2013). „Zabezpečené ověření SAML, aby se zabránilo útokům na zalomení podpisu XML“.
- ^ Proč je zabezpečení XML nefunkční
- ^ Výkon zabezpečení webových služeb
- ^ Porovnání výkonu bezpečnostních mechanismů pro Grid Services
- ^ Zhang, Jimmy (9. ledna 2007). „Zrychlete aplikace WSS pomocí VTD-XML“. JavaWorld. Citováno 2020-07-24.
- ^ Workshop W3C o dalších krocích pro podpis XML a šifrování XML, 2007
- ^ Požadavky XML Security 2.0 a aspekty návrhu
- ^ http://domino.research.ibm.com/library/cyberdig.nsf/papers/73053F26BFE5D1D385257067004CFD80/$File/rc23691.pdf
- ^ Juraj Somorovský; Andreas Mayer; Jorg Schwenk; Marco Kampmann; Meiko Jensen (2012). „On Breaking SAML: Be Whoever You Want to Be“ (PDF).
- ^ https://www.sbr-nl.nl/english/what-is-sbr/assurance/ SBR Assurance, nizozemská vláda, 2018
externí odkazy
- Syntaxe a zpracování podpisu XML
- Kanonický XML
- Další identifikátory zabezpečení XML Uniform Resource (URI)
- Exkluzivní kanonizace XML
- XMLSignatures Java vazba pro XMLBeans a JAXB.
- Podrobný příklad toho, jak je podpis vytvořen.