XML aláírás komponensei______________________________________________________5
3
Egyszerű példa az XML aláírásra ________________________________________________6
4
XML aláírás előállítása és ellenőrzése ____________________________________________8 4.1 Az aláírás _______________________________________________________________8 4.1.1 Az aláírandó forrás meghatározása________________________________________8 4.1.2 Transzformációk elvégzése______________________________________________8 4.1.3 Kivonatkészítés minden egyes transzformált forrásról_________________________8 4.1.4 SignedInfo előállítása a kivonatokból______________________________________9 4.1.5 SignedInfo kanonizálása ________________________________________________9 4.1.6 Aláírás_____________________________________________________________11 4.1.7 Kulcsinformáció hozzáadása ___________________________________________11 4.1.8 A Signature elem elkészítése ___________________________________________11 4.2 Az ellenőrzés ___________________________________________________________12 4.2.1 A kulcsinformáció meghatározása _______________________________________12 4.2.2 A SignedInfo kanonizálása _____________________________________________12 4.2.3 Kivonatkészítés a SignedInfo-ból ________________________________________12 4.2.4 A SignatureValue ellenőrzése___________________________________________12 4.2.5 Az egyes hivatkozások ellenőrzése_______________________________________12 4.2.6 Tanusítvány ellenőrzése _______________________________________________12
5
Az XML aláírás protokolljának áttekintése _______________________________________13 5.1 Signature ______________________________________________________________14 5.1.1 SignedInfo__________________________________________________________16 5.1.2 SignatureValue ______________________________________________________17 5.1.3 KeyInfo ____________________________________________________________18 5.1.4 Object _____________________________________________________________20
1 Bevezetés Az XML aláírások olyan XML alapú digitális aláírások, melyek tetszőleges formátumú dokumentumokra alkalmazhatók. Az XML aláírás biztosítja az aláírt adatról, hogy az hiteles marad, változtatása azonnal észrevehető, és az előállító által nem letagadható. Az XML aláírás a World Wide Web Consortium (W3C) és az Internet Engineering Task Force (IETF) közös erőfeszítéseinek eredménye. A munka elérte az internet szabvány szintjét, azaz mind a két szervezetnél a legmagasabb szintet (a W3C-nél „REC” (Recommendation) (http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/), az IEFT-nél „RFC” (Request for Comments) (http://www.ietf.org/rfc/rfc3275.txt). A digitális aláírásnak nagy jelentősége van, különösen, ha figyelembe vesszük, hogy XML alapú dokumentumokkal kérelmek, szerződések és más okiratok továbbíthatók, amelyeknek a hitelességét sok esetben garantálni kell. Az XML dokumentumokra definiált eljárások egy rugalmas eszközt kínálnak XML és más típusú források aláírására és ezeknek XML formában történő tárolására. Az aláírás elvégzéséhez több algoritmus egymás utáni alkalmazása szükséges. Az aláírandó adatok vagy közvetlenül az adott XML dokumentumon belül, vagy egy hivatkozás által meghatározott elérhető külső helyen találhatók. Az alkalmazható algoritmusoknak öt osztálya létezik, mégpedig: • Kanonizáló algoritmusok • Kivonat készítő algoritmusok (digest) • Aláíró algoritmusok (nyilvános kulcsú és MAC) • Titkosító algoritmusok • Transzformáló algoritmusok Az első osztálynak, a kanonizáló algoritmusoknak, az a célja, hogy az aláírandó XML dokumentumot a fizikai reprezentációjától függetlenül állítsa elő. Tehát a szemantikailag azonos XML dokumentumok, a karakterkészlettől függetlenül, ugyanazt a byte-sorozatot eredményezzék. A kivonat készítő algoritmusokkal az ellenőrzendő adatokból olyan tömör, lényegesen rövidebb kivonat készíthető, amely a forrásadatok tetszőleges kis változásával szintén változik. Az így nyert információ, az alkalmazott algoritmusok nevével és paramétereivel együtt aláírásra kerül és az eredmény a dokumentum egy adott részébe tárolásra kerül. A nyilvános kulcsú algoritmus esetén az aláírás, a szerző titkos kulcsával történik, az ellenőrzés pedig a szerző tanúsítványával, illetve az abban lévő nyilvános kulccsal végezhető. MAC (Message Authentication Code) esetében még egy, a résztvevő felek által ismert titkos kulcs is alkalmazásra kerül. A titkosító algoritmusok szimmetrikus kulcsokat használnak és csak ezzel a kulccsal rendelkezők tudják olvasni a kódolt üzenetet. A transzformáló algoritmusok általában a forrásadatokon olyan átalakításokat végeznek, amelyek az XML formában való megjelenítéshez szükséges. Például bináris adatok Base64 szerinti kódolása, vagy nagyobb mennyiségű adatok komprimálása. Microsec Számítástechnikai Fejlesztő Kft.
4
Az XML aláírás szintaxisa és felsolgozása
2 XML aláírás komponensei Az XML aláírás tetszőleges digitális tartalomra (adat objektumokra) indirekt módon alkalmazható. Az adat objektumokból először egy kivonat készül, ami (más információval együtt) egy XML elembe kerül tárolásra. Ez az elem újabb kivonatkészítés után, kriptográfiai algoritmussal aláírásra kerül. Az XML digitális aláírást a Signature elem reprezentálja, amelynek a szerkezete a következő ( a „?” nulla vagy egy előfordulást; a „+” egy vagy több előfordulást; és a „*” nulla vagy több előfordulást jelent): <Signature> <SignedInfo> (CanonicalizationMethod) (SignatureMethod) ( (Transforms)? (DigestMethod) (DigestValue) )+ (SignatureValue) (KeyInfo)? (Object)*
1. ábra
Az aláírás feltétlen tartalmaz legalább egy SignedInfo elemet, amely az aláírt adatokról és az aláírás módjáról tartalmaz információt, valamint egy SignatureValue elemet az aláírás eredményével. Opcionális elem a SignatureValue, amely az aláíró nyilvános kulcsát tartalmazza (aláírás-ellenőrző adat), valamint az Object elem, amely adatokat tartalmazhat. Az aláírások URI-kon keresztül állnak az adat objektumokkal kapcsolatban. Egy XML dokumentumon belül, az aláírások részlet-azonosítókkal hivatkoznak lokális adat objektumokra. Ilyen lokális adat Szerepelhet egy borítékoló aláíráson belül, vagy Magába foglalhat egy borítékolt aláírást, vagy Szerepelhet függetlenül az aláírástól, ugyanabban az XML dokumentumban vagy akár a hálózat tetszőleges helyén.
Microsec Számítástechnikai Fejlesztő Kft.
5
Az XML aláírás szintaxisa és felsolgozása
3 Egyszerű példa az XML aláírásra A 2. ábra egy lehetséges XML aláírás struktúrát mutat be. A példában a
http://www.eszigno.hu/shema/2002/PénzintézetiJelentés.xsd dokumentumról készült aláírás egy időpecsét elkészítésével együtt. Az aláírt adatokra való hivatkozást a Reference elemek tartalmazzák.
[s02-14] A SignedInfo az aláírandó elem. A SignedInfo alapérvényesség ellenőrzéséhez két kötelező folyamat tartozik: egyrészt a SignedInfo-ról készült aláírás, másrészt minden egyes SignedInfo-n belüli hivatkozás (Reference) kivonat ellenőrzése. Megjegyzendő, hogy az aláírás meghatározásában alkalmazott algoritmus szintén aláírásra kerül.
[s03] A CanonicalizationMethod definiálja azt az algoritmust, amelyik segítségével kanonikus formára hozzuk a SignedInfo elemet a kivonatkészítés előtt. Az URL az algoritmus egyértelmű azonosítására szolgál..
[s04] A SignatureMethod tartalmazza azt az algoritmust, amely segítségével a kanonizált SignedInfo-t SignatureValue-be konvertáljuk. Ez egy kombinált algoritmus, amelyik általában egy kivonatkészítő (digest) és egy kulcsot alkalmazó algoritmusból áll. Az algoritmusok nevei is aláírásra kerülnek. Alkalmazások együttműködését megkönnyítendő van egy kötelezően megvalósítandó algoritmus halmaz (DSAwithSHA1 és RSAwithSHA1).
[s05-13] Minden adathivatkozás (Reference) tartalmazza a kivonatkészítés módszerét és a kijelölt adatobjektumról készített kivonat az eredményét. A Reference elem tartalmazhat a kivonatkészítést megelőző transzformációkat is. Egy adatobjektum aláírása, az adatok kivonatának, majd a kivonatra vonatkozó aláírás elkészítését jelenti. [s10] Az opcionális Type attribútum információt szolgáltat az URI által kijelölt forrásról. Jelölhet például, hogy egy Object, SignatureProperty vagy Manifest elemről van-e szó. Ez csak kiegészítő információ, nem szerepel az ellenőrzésben. [s16-28] KeyInfo tartalmazza az ellenőrzéshez használandó kulcsot. Az azonosításra tanúsítvány kulcsnév vagy kulcsmegegyezési algoritmus használható. [s29] Az Object egy olyan opcionális elem, amely adatokat tartalmaz aláíráson belül vagy kívül. Az Object rendelkezhet típussal és/vagy lehet kódolt is. [s30-37] A példában az Object az aláíráshoz tartozó kiegészítő információt tartalmaz (SignatureProperties). Ez az időpecsét egy másik adatobjektummal egyszerre kerül aláírásra.
Microsec Számítástechnikai Fejlesztő Kft.
7
Az XML aláírás szintaxisa és felsolgozása
4 XML aláírás előállítása és ellenőrzése A következő rövid leírásban áttekintjük az XML aláírás készítésének és ellenőrzésének lépéseit.
4.1 Az aláírás Az aláírás elkészítéséhez szükség van bizonyos bemenet adatokra, amelyek az aláírásban ismétlésre kerülnek. A felsorolásban a zárójelben áll az aláírásbeli hivatkozásuk: • Forrásadat ( Reference) • Transzformációs algoritmusok (Transform) • Kivonatkészítő algoritmus (DigestMethod) • Kanonizáló algoritmus (CanonicalizationMethod) • Aláíró algoritmus (SignatureMethod) • Az aláíró titkos és nyilvános kulcsa („aláírás-létrehozó adat” és „aláírás-ellenőrző adat”)
4.1.1 Az aláírandó forrás meghatározása Az aláírandó adat lehet külső vagy belső adat. A példánkban szerepel mind a kettő. A Reference elem URI attribútuma hivatkozik az adatra. Ez vagy egy standard URI a hálózaton (pl. http://www.eszigno.hu/shema/2002/PénzintézetiJelentés.xsd ), vagy egy az XML dokumentumon belüli hivatkozás egy Object elemre (pl. #AmadeUpTimeStamp ).
4.1.2 Transzformációk elvégzése Alkalmazástól függően szükség lehet az adatobjektumok átalakítására. A Reference URI attribútuma által meghatározott objektum lehet pl. bináris. Ebben az esetben legalább egy base64 szerinti kódolásra van szükség. Ilyen a példánkban nem fordul elő, de ilyen esetben a Reference elem a következő sorokat tartalmazná:
4.1.3 Kivonatkészítés minden egyes transzformált forrásról A paraméterként átadott hivatkozások mindegyikéről kivonat készül a megadott algoritmus szerint, a mi esetünkben ez az SHA1 algoritmus. Ennek a lépésnek az eredményeként áll elő a DigestValue: [s05]
4.1.4 SignedInfo előállítása a kivonatokból A SignedInfo előállításához a hivatkozáslista mellet szükség van a kanonizáló és aláíró algoritmusra. [s02]
4.1.6 Aláírás A SignedInfo kanonizált alakjáról szintén kivonat készül, és a kivonat lesz kódolva az aláíró titkos kulcsával. Az eredmény képezi a SignatureValue tartalmát: [s15] <SignatureValue>WmnK5vawv2SUsoIkiVMrbVi6kGouPE5M64v2nIiG/vTuukf3pQe5Qg==
4.1.7 Kulcsinformáció hozzáadása Opcionálisan megadható az aláíró nyilvános kulcsa, ami az ellenőrzést egyszerűsíti. A példánkban szerepel a kulcsinformáció mellet az aláíró X509 szabvány szerinti tanúsítványa is: [s16] [s17] [s18] [s19] [s20]
4.1.8 A Signature elem elkészítése Az utolsó lépés az eddig előállított részletekből a teljes aláírásnak az előállítása. Borítékoló aláírások esetén ( mint a példánk) még az Object elem is beépítésre kerül. Az eredményt a 2.ábra mutatja.
Microsec Számítástechnikai Fejlesztő Kft.
11
Az XML aláírás szintaxisa és felsolgozása
4.2 Az ellenőrzés A 2. ábrán szereplő aláírás ellenőrzéséhez elegendő csak magának a dokumentumnak az ismerete. Külső forrásra csak a tanúsítvány hitelességének ellenőrzésénél lenne szükség, ahol is egy hitelesítési szolgáltatót kellene igénybe venni.
4.2.1 A kulcsinformáció meghatározása Az aláíró nyilvános kulcsának meghatározása. Ez egyszerű abban az esetben ha a dokumentumban szerepel egy KeyValue elem, különben esetleg külső forrásból kell egy azonosító alapján meghatározni. Ez kulcsinformáció a SignatureValue dekódolásánál kerül felhasználásra.
4.2.2 A SignedInfo kanonizálása A SignedInfo elem tartalmát a megadott kanonizáló algoritmus szerint normál alakra kell hozni. Ez az eredmény szolgál a kivonatkészítés bemeneteként.
4.2.3 Kivonatkészítés a SignedInfo-ból A normál alakra hozott SignedInfo-ból az előírt algoritmus szerint kivonat készül. Ez a kivonat képezi az ellenőrzés egyik adatát.
4.2.4 A SignatureValue ellenőrzése Az aláírás ellenőrzéséhez a SignatureValue-t dekódolni kell az első pontban meghatározott nyilvános kulccsal. A dekódolás eredménye az aláíráskor készített kivonat és ezt hasonlítjuk össze az előző pontban meghatározott kivonattal. Ha a két kivonat egyenlő, akkor nem történt változás a SignedInfo belsejében.
4.2.5 Az egyes hivatkozások ellenőrzése Az aláírásban szereplő adathivatkozások (Reference) ellenőrzés hasonló lépésekkel történik, mint a SignedInfo ellenőrzése.
4.2.6 Tanusítvány ellenőrzése A SignedInfo és a hivatkozások hiba nélküli ellenőrzése azt mutatja, hogy az aláíráson és a hivatkozott adatokon nem történt változtatás az aláírás óta. Az aláíró azonosítását a felhasznált tanúsítvány alapján lehet elvégezni. A tanúsítvány tartalmazza az aláíró és érvényességének adatait. A tanúsítvány hitelessége pedig egy hitelesítési szolgáltató által ellenőrizhető.
Microsec Számítástechnikai Fejlesztő Kft.
12
Az XML aláírás szintaxisa és felsolgozása
5 Az XML aláírás protokolljának áttekintése A 3. ábra egy XML aláírást szemléltet. A jelentés első sora a dokumentum nyelvezetét (XML), illetve a dokumentum egészére vonatkozó karakterkódolási (encoding) szabványt (ISO-8859-2) rögzíti. A következő pontokban a protokoll elemeinek szemléltetésére jelen dokumentum az 3. ábra látható szövegrészleteit használja, a protokoll szintaxisát definiáló sémadefiníciós diagramokkal kiegészítve. A példa kapcsán szólunk néhány szót az alkalmazott névterekről. A névtér teszi lehetővé, hogy külön előállított XML specifikációkat egy XML dokumentumban alkalmazzunk, anélkül, hogy egymást zavarnák. A névtér deklarációja az xmlns attribútummal történik. A deklarációban megadható egy prefix is ( kettőspont után) , amivel elemeket és attribútumokat rendelhetünk a névtérhez. A példánkban három névteret találunk. A prefix nélküli deklaráció az alapértelmezést adja meg (xmlns=http://www.w3.org/2000/09/xmldsig# ) . Az egyes névtereknek a jelentése a következő: xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance : a sémadefiníció névtere, xmlns:ds=http://www.w3.org/2000/09/xmldsig# : az XML digitális aláírás névtere, xmlns:ia=http://www.e-szigno.hu/2002/04/i-akta# : az intelligens akta alkalmazás névtere. A névterek azonosítására URI-kat (Uniform Resource Identifier) [URI] használunk. <Signature Id="alairas_0" xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ia="http://www.e-szigno.hu/2002/04/i-akta#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig# C:\Projects\iakta\schema\xmldsig.xsd"> <SignedInfo> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 1G5klTS0KDPNorpaCFTGtz76dkI= <SignatureValue> VbQVWRkRxXMKl2ZxqHHzu+iQ7MEiUOeBpX2877+pXNX/svYLuk/YPhOjORS2Pm9gIDBeu3bh p+Q0zOf+8u6jv+/ixv0y1Qeeh6S3giaeRvUhBmcFYBTrLivKYJeVmyuJBwytaFOFn2Ijhb0H xpK2iyfR0rJP7cEQFSCkKqxkAWI= <Modulus> 5QBzed5uTMgvwGRfjoiyBmxFdhyfRGPpr9KJgReK9RT5MLDM2Ymz/xM3Zrik71VoQg rBGsX5IGNC+Bdz+ID+uP4GxG2/iXtdGaaPzUCL360oTKX1Spr7L60hyPmAQZ7J4rL/ PnKIDIueD/WX3mSs3oTKj2/HZygOE6jXWA2spkk= <Exponent>AQAB Microsec Számítástechnikai Fejlesztő Kft.
Az 3. ábra látható XML aláírás protokollja a Signature elemből áll, amely két további kötelező és két opcionális komplex elemet foglal magába. A befoglalt elemek is további elemeket tartalmaznak. A protokoll valamennyi elemének ismertetése a következő pontokban található. Az elemleírások a sémadefinícióban található elemdiagramok feltüntetésével kezdődnek, majd az 3. ábra alkalmas szövegrészletei alapján példák szemléltetik az elemek szerkezetét.
5.1 Signature Az XML aláírás az aláírt adatokra való hivatkozásból(SignedInfo), az aláírás eredményéből (SignatureValue) és opcionálisan a nyilvános kulcs információiból (KeyInfo), valamint adatobjektumokból (Object) áll.
Microsec Számítástechnikai Fejlesztő Kft.
14
Az XML aláírás szintaxisa és felsolgozása
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignatureType children ds:SignedInfo ds:SignatureValue ds:KeyInfo ds:Object complexType ObjectType
used by attributes
annotation
Name
Type
Use
Default
Id
ID
optional
Fixed
Annotation
documentation Az XML Signature gyökéreleme
source <element name="Signature" type="ds:SignatureType"> <documentation>Az XML Signature gyökéreleme
A Signature elem a névtér, illetve a protokoll sémadefiníciós állományának megadására szolgáló attribútumokat hordozza. A protokoll alkalmazása során ezeket az attribútumokat változatlan formában kell feltüntetni. A feldolgozást megkönnyítendő, minden Signature és Object elem egy egyedi azonosítóval rendelkezik.
5.1.1 SignedInfo Az aláírandó XML dokumentum részletet a SignedInfo foglalja magába. Tartalmaznia kell az alkalmazandó algoritmusokat, hogy az ellenőrzés, az algoritmusokat fordított sorrendben alkalmazva, elvégezhető lehessen. A CanonicalizationMethod definiálja azt az algoritmust ami szerint a SignedInfo normál alakra lesz hozva. A SignatuteMethod definiálja a kivonatkészítés és az aláírás algoritmusát. Minden egyes aláírandó adatobjektumra való hivatkozás egy Reference elemben foglal helyet. diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignedInfoType children ds:CanonicalizationMethod ds:SignatureMethod ds:Reference complexType SignatureType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Az aláírás módját és adatait tartalmazó elem
Az XML aláírás szintaxisa és felsolgozása p+Q0zOf+8u6jv+/ixv0y1Qeeh6S3giaeRvUhBmcFYBTrLivKYJeVmyuJBwytaFOFn2Ijhb0H xpK2iyfR0rJP7cEQFSCkKqxkAWI=
5.1.3 KeyInfo A KeyInfo tartalmazza az aláíró nyilvános kulcsát, vagy egy hivatkozást arra. Ennek az ellenőrzésnél és aláíró azonosításánál van szerepe.
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:KeyInfoType children ds:KeyName ds:KeyValue ds:RetrievalMethod ds:X509Data ds:PGPData ds:SPKIData ds:MgmtData complexType SignatureType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Információk a nyilvános kulcsról
source <element name="KeyInfo" type="ds:KeyInfoType"> <documentation>Információk a nyilvános kulcsról
5.1.4 Object Az Object elem tartalmazza az XML dokumentumba tárolt adatokat. Az Object viszonya az aláíráshoz képest lehet: • Szülő: az aláírandó Object tartalmazza a Signature elemet, (borítékolt aláírás / enveloped) • Gyerek: az aláírandó Object az aláírás belsejében van (borítékoló aláírás / enveloping) • Testvér: az Object az aláírás mellet ugyanabban a dokumentumban van (független aláírás / detached) Különös figyelmet a borítékolt aláírás igényel, ahol is a SignatureValue meghatározásánál figyelmen kívül kell hagyni saját értékeiket. diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:ObjectType children ia:Adatlap ds:Signature ds:Object ds:SignatureProperties complexTypes ObjectType SignatureType
namespace http://www.w3.org/2000/09/xmldsig# type ds:CanonicalizationMethodType used by attributes
annotation
complexType SignedInfoType Name
Type
Use
Algorithm
anyURI
required
Default
Fixed
Annotation
documentation Az aláírást megelőző kanonizáló eljárás leírása
source <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"> <documentation>Az aláírást megelőző kanonizáló eljárás leírása
A CanonicalizationMethod elem a SignedInfo kanonizálásának az algoritmusát határozza meg. AZ XML aláírás szabványa két algoritmust javasol, az egyik kötelező a másik ajánlott. Az algoritmusoknak URI azonosítója van: 1. http://www.w3.org/TR/2001/REC-xml-c14n-20010315 : kötelező kanonikus XML a megjegyzések kihagyásával 2. http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments : ajánlott kanonikus XML megjegyzésekkel.
6.1.2 DigestMethod diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:DigestMethodType used by attributes
annotation
complexType ReferenceType Name
Type
Use
Algorithm
anyURI
required
Default
Fixed
Annotation
documentation Az aláírást megelőző kivonatképzés leírása
source <element name="DigestMethod" type="ds:DigestMethodType"> <documentation>Az aláírást megelőző kivonatképzés leírása
Microsec Számítástechnikai Fejlesztő Kft.
22
Az XML aláírás szintaxisa és felsolgozása
A DigestMethod elem tartalmazza a kivonatkészítő algoritmus nevét és típusát. Az XMLDSIG ajánlás az SHA1 (http://www.w3.org/2000/09/xmldsig#sha1) algoritmust írja elő szükségesként.
6.1.3 DigestValue diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:DigestValueType used by annotation
complexType ReferenceType documentation Az adatok kódolt kivonata
source <element name="DigestValue" type="ds:DigestValueType"> <documentation>Az adatok kódolt kivonata
A DigestValue tartalmazza a kivonatkészítő algoritmus szerint kiszámított érték base64 [MIME] szerint kódolt alakját.
6.1.4 DSAKeyValue diagram
namespace http://www.w3.org/2000/09/xmldsig#
Microsec Számítástechnikai Fejlesztő Kft.
23
Az XML aláírás szintaxisa és felsolgozása
type ds:DSAKeyValueType children P Q G Y J Seed PgenCounter complexType KeyValueType
used by
documentation DSA nyilvános kulcs értéke
annotation
source <element name="DSAKeyValue" type="ds:DSAKeyValueType"> <documentation>DSA nyilvános kulcs értéke
A DSA kulcsok és a DSA algoritmus a [DSS]-ben vannak specifikálva. A J paraméter csak hatékonysági okok miatt szerepel.
6.1.5 KeyInfo diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:KeyInfoType children ds:KeyName ds:KeyValue ds:RetrievalMethod ds:X509Data ds:PGPData ds:SPKIData ds:MgmtData complexType SignatureType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Információk a nyilvános kulcsról
Microsec Számítástechnikai Fejlesztő Kft.
24
Az XML aláírás szintaxisa és felsolgozása
source <element name="KeyInfo" type="ds:KeyInfoType"> <documentation>Információk a nyilvános kulcsról
A KeyInfo egy opcionális elem, amely hozzáférést biztosít a fogadónak a nyilvános kulcshoz az aláírás ellenőrzése céljából. Az ajánlás néhány egyszerűbb típus definiál és emellett lehetőséget nyújt az alkalmazásoknak ezek kiterjesztésére.
6.1.6 KeyName diagram
namespace http://www.w3.org/2000/09/xmldsig# type string used by annotation
complexType KeyInfoType documentation A használt kulcs azonosítója
source <element name="KeyName" type="string"> <documentation>A használt kulcs azonosítója
A KeyName egy olyan karaktersorozatot tartalmaz, amivel az aláíró közli a fogadóval a használt kulcs azonosítóját.
6.1.7 KeyValue diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:KeyValueType children ds:DSAKeyValue ds:RSAKeyValue used by annotation
complexType KeyInfoType documentation A nyilvános kulcs értéke
Az XML aláírás szintaxisa és felsolgozása <documentation>A nyilvános kulcs értéke
A KeyValue egy egyszerű nyilvános kulcsot tartalmaz.
6.1.8 Manifest diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:ManifestType children ds:Reference attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Adatokra való hivatkozásokat tartalmazó elem
source <element name="Manifest" type="ds:ManifestType"> <documentation>Adatokra való hivatkozásokat tartalmazó elem
A Manifest egy hivatkozás listát tartalmaz. Ez annyiban különbözik a SignedInfo-ban lévő hivatkozási listától, hogy ezeknek a hivatkozásoknak az ellenőrzése az alkalmazásra van bízva, tehát nincs kötelezően előírva az ellenőrzésük.
6.1.9 MgmtData diagram
namespace http://www.w3.org/2000/09/xmldsig# type string used by annotation
Az Object egy olyan opcionális elem, amely többször is előfordulhat. Tetszőleges adatot tartalmazhat. Az Encoding attribútum arról tudósíthat, hogy milyen módszerrel lett az URI által meghatározott objektum kódolva. A MimeType attribútum az Object-en belüli adatot írja le. Ez az információ tájékoztató jellegű. Normatív információk esetén a Transforms elem használandó. Az Object elemekre a SignedInfo vagy Manifest, Refernce elemei hivatkoznak.
6.1.11
PGPData
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:PGPDataType children PGPKeyID PGPKeyPacket PGPKeyPacket used by annotation
complexType KeyInfoType documentation PGP nyilvános kulcs tárolója
source <element name="PGPData" type="ds:PGPDataType"> <documentation>PGP nyilvános kulcs tárolója
Microsec Számítástechnikai Fejlesztő Kft.
28
Az XML aláírás szintaxisa és felsolgozása
A PGPData elem a nyilvános kulcs adatait tartalmazza PGP kulcs-pár használata esetén.
6.1.12
Reference
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:ReferenceType children ds:Transforms ds:DigestMethod ds:DigestValue complexTypes ManifestType SignedInfoType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
URI
anyURI
optional
Type
anyURI
optional
Default
Fixed
Annotation
documentation Hivatkozás az aláirt adatra és kivonatára
source <element name="Reference" type="ds:ReferenceType"> <documentation>Hivatkozás az aláirt adatra és kivonatára
A Reference elem egy adatobjektum azonosítására szolgál. Tartalmazza a hivatkozási címet (URI), a kivonatkészítés algoritmusát (DigestMethod), a kivonatot (DigestValue) és esetleg a kivonatkészítést megelőző transzformációkat (Transforms). Az Id attribútum lehetőséget biztosít erre az elemre való hivatkozásra. A Type attribútum a hivatkozott elem feldolgozásához nyújthat segítséget (pl. Object vagy Manifest).
6.1.13
RetrievalMethod
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:RetrievalMethodType children ds:Transforms
Microsec Számítástechnikai Fejlesztő Kft.
29
Az XML aláírás szintaxisa és felsolgozása
used by attributes
annotation
complexType KeyInfoType Name
Type
URI
anyURI
Type
anyURI
Use
Default
Fixed
Annotation
optional
documentation Hivatkozás a más helyen tárolt kulcsinformációra
source <element name="RetrievalMethod" type="ds:RetrievalMethodType"> <documentation>Hivatkozás a más helyen tárolt kulcsinformációra
A KeyInfo-n belül használatos RetrievelMethod lehetőséget nyújt egy másik KeyInfo-ra való hivatkozásra. Például, ha több aláírás ugyanazzal a tanúsítvány lánccal ellenőrizhető, elegendő ha csak egyszer szerepel a dokumentumban és az aláírások a RetrievalMethod elem segítségével utalnak rá. A felépítése és használata megegyezik a Reference elemével.
6.1.14
RSAKeyValue
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:RSAKeyValueType children Modulus Exponent used by annotation
complexType KeyValueType documentation RSA nyilvános kulcs értéke
source <element name="RSAKeyValue" type="ds:RSAKeyValueType"> <documentation>RSA nyilvános kulcs értéke
Microsec Számítástechnikai Fejlesztő Kft.
30
Az XML aláírás szintaxisa és felsolgozása
Az RSAKeyvalue az RSA nyilvános kulcs két paraméterét tartalmazza.
6.1.15
Signature
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignatureType children ds:SignedInfo ds:SignatureValue ds:KeyInfo ds:Object complexType ObjectType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Az XML Signature gyökéreleme
source <element name="Signature" type="ds:SignatureType"> <documentation>Az XML Signature gyökéreleme
A Signature elem képezi az XML aláírás gyökérelemét. Az egyértelmű azonosítására az Id attribútum használható. Kötelezően csak a SignedInfo és SignatureValue elemeket kell tartalmaznia.
6.1.16
SignatureMethod
diagram
namespace http://www.w3.org/2000/09/xmldsig#
Microsec Számítástechnikai Fejlesztő Kft.
31
Az XML aláírás szintaxisa és felsolgozása
type ds:SignatureMethodType children HMACOutputLength complexType SignedInfoType
A SignatureMethod nevezi meg az aláírás és ellenőrzés algoritmusát. Az algoritmus azonosítására használatos URI több algoritmust is azonosíthat: •
http://www.w3.org/2000/09/xmldsig#dsa-sha1 : DSA és SHA1 algoritmusok
•
http://www.w3.org/2000/09/xmldsig#rsa-sha1 : RSA és SHA1 algoritmusok.
6.1.17
SignatureProperties
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignaturePropertiesType children ds:SignatureProperty complexType ObjectType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Aláírás kiegészítő információinak tárolására szolgáló lista
source <element name="SignatureProperties" type="ds:SignaturePropertiesType"> <documentation>Aláírás kiegészítő információinak tárolására szolgáló lista
Microsec Számítástechnikai Fejlesztő Kft.
32
Az XML aláírás szintaxisa és felsolgozása
Az aláírással kapcsolatos kiegészítő információkat foglalja, SignatureProperty elemek formájában, magába.
6.1.18
SignatureProperty
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignaturePropertyType complexType SignaturePropertiesType
A SignatureProperty tetszőleges adatot tartalmazhat, lehet például az aláíráshoz kapcsolódó időpecsét.
6.1.19
SignatureValue
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignatureValueType complexType SignatureType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation A digitális aláírás értékét tartalmazó elem
source <element name="SignatureValue" type="ds:SignatureValueType"> <documentation>A digitális aláírás értékét tartalmazó elem
Microsec Számítástechnikai Fejlesztő Kft.
33
Az XML aláírás szintaxisa és felsolgozása
Az aláírás aktuális értékét tartalmazza, mindig base64 szerint kódolva.
6.1.20
SignedInfo
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:SignedInfoType children ds:CanonicalizationMethod ds:SignatureMethod ds:Reference complexType SignatureType
used by attributes
annotation
Name
Type
Use
Id
ID
optional
Default
Fixed
Annotation
documentation Az aláírás módját és adatait tartalmazó elem
source <element name="SignedInfo" type="ds:SignedInfoType"> <documentation>Az aláírás módját és adatait tartalmazó elem
A SignedInfo a statikus aláírt adatokat tartalmazza, úgy mint a kanonizálás algoritmusát, az aláírás algoritmusát és az adatazonosító Reference elemeket. Ellátható egy azonosítóval is (Id). Nem tartalmaz viszont olyan aláírási jellemzőket, mint az aláírás ideje, az aláíró eszköz sorszáma, stb. Ilyen, az alkalmazás által használatos jellemzők egy SignatureProperties elembe helyezhetők el.
6.1.21
SPKIData
diagram
Microsec Számítástechnikai Fejlesztő Kft.
34
Az XML aláírás szintaxisa és felsolgozása
namespace http://www.w3.org/2000/09/xmldsig# type ds:SPKIDataType children SPKISexp used by annotation
complexType KeyInfoType documentation SPKI nyilvános kulcs tárolója
source <element name="SPKIData" type="ds:SPKIDataType"> <documentation>SPKI nyilvános kulcs tárolója
A KeyInfo-n belüli SPKIData az SPKI nyilvános kulccsal kapcsolaton információkat tartalmazza. Az SPKIexp base64 szerint kódolt kanonikus S-kifejezés, és legalább egy példányának kell léteznie.
6.1.22
Transform
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:TransformType children XPath used by attributes
annotation
complexType TransformsType Name
Type
Use
Algorithm
anyURI
required
Default
Fixed
Annotation
documentation Az aláirandó adaton elvégzendő transzformáció
A Transform elem egy algoritmus paraméterrel és opcionális, az algoritmushoz kapcsolódó tartalmi paraméterekkel rendelkezik. Az Algorithm attribútumban megadott URI az algoritmus nevét definiálja, míg a kiegészítő információk az algoritmus vezérlő paraméterei lehetnek. Az XML aláírás által említett transzformációk: •
Base64 szerinti dekódolás [MIME]
•
Kanonizálás [XML-C14N]
•
XPATH szűrés [XPATH]
•
XSLT [XSLT]
Ezen kívül megengedett alkalmazás-specifikus transzformáció is, habár ez szűkíti az általános ellenőrizhetőséget.
6.1.23
Transforms
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:TransformsType children ds:Transform used by annotation
complexTypes ReferenceType RetrievalMethodType documentation A kivonatképzést megalőző transzformációk listája
A Transforms elem azoknak a transzformációknak a rendezett listáját tartalmazza, amelyek végrehajtásra kerülnek az adatobjektumon a kivonatkészítésig.
6.1.24
X509Data
diagram
namespace http://www.w3.org/2000/09/xmldsig# type ds:X509DataType children X509IssuerSerial X509SKI X509SubjectName X509Certificate X509CRL used by annotation
complexType KeyInfoType documentation X509 szerinti nyilvános kulcs vagy tanusítvány tárolója
source <element name="X509Data" type="ds:X509DataType"> <documentation>X509 szerinti nyilvános kulcs vagy tanusítvány tárolója
Az X509Data elem egy vagy több kulcsazonosítót vagy X509 tanúsítványt tartalmaz. Az X509IssuerSerial, X509SKI, X509SubjectName, X509Certificate, X509CRL és egy külső névtérhez tartozó elem közül legalább egynek kell szerepelnie az X509Data elemen belül, de előfordulhatnak együtt vagy többszörösen, ha ugyanazt a tanúsítványt írják le.
6.2 Egyszerű típusok 6.2.1 CryptoBinary namespace http://www.w3.org/2000/09/xmldsig# type base64Binary used by
DSAKeyValueType/G DSAKeyValueType/J elements RSAKeyValueType/Exponent DSAKeyValueType/P DSAKeyValueType/PgenCounter RSAKeyValueType/Modulus DSAKeyValueType/Q DSAKeyValueType/Seed DSAKeyValueType/Y
Microsec Számítástechnikai Fejlesztő Kft.
37
Az XML aláírás szintaxisa és felsolgozása
annotation
documentation Base64 szerint kódolt nináris szám a kriptográfiai változókhoz
source <simpleType name="CryptoBinary"> <documentation>Base64 szerint kódolt nináris szám a kriptográfiai változókhoz
A CryptoBinary tetszőleges hosszúságú egész számok XML-beli ábrázolására használatos egyszerű típus. Az egész számot először egy „big endian” bitsorozattá konvertáljuk, majd nullákkal kiegészítve 8 egész számú többszörösére base64 szerint kódoljuk, Az egész szám oktett sorozattá alakítása megfelel az IEEE 1363as ajánlatának.
6.2.2 DigestValueType namespace http://www.w3.org/2000/09/xmldsig# type base64Binary used by annotation
element DigestValue documentation A kivonat típusdefiniciója
A HMAC algoritmus [HMAC] a csonkítási bithosszat paraméterként várja. Ha a paraméter nincs megadva, akkor a hash teljes eredménye kiadásra kerül.
Microsec Számítástechnikai Fejlesztő Kft.
38
Az XML aláírás szintaxisa és felsolgozása
7 Hivatkozások DOM Document Object Model (DOM) Level 1 Specification. W3C Recommendation. V. Apparao, S. Byrne, M. Champion, S. Isaacs, I. Jacobs, A. Le Hors, G. Nicol, J. Robie, R. Sutor, C. Wilson, L. Wood. October 1998. http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/ DSS FIPS PUB 186-2 . Digital Signature Standard (DSS). U.S. Department of Commerce/National Institute of Standards and Technology. http://csrc.nist.gov/publications/fips/fips186-2/fips186-2.pdf HMAC RFC 2104. HMAC: Keyed-Hashing for Message Authentication. H. Krawczyk, M. Bellare, R. Canetti. February 1997. http://www.ietf.org/rfc/rfc2104.txt HTTP RFC 2616. Hypertext Transfer Protocol -- HTTP/1.1. J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee. June 1999. http://www.ietf.org/rfc/rfc2616.txt
LDAP-DN RFC 2253. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names. M. Wahl, S. Kille, T. Howes. December 1997. http://www.ietf.org/rfc/rfc2253.txt MD5 RFC 1321. The MD5 Message-Digest Algorithm. R. Rivest. April 1992. http://www.ietf.org/rfc/rfc1321.txt MIME RFC 2045. Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies. N. Freed & N. Borenstein. November 1996. http://www.ietf.org/rfc/rfc2045.txt
PGP
Microsec Számítástechnikai Fejlesztő Kft.
39
Az XML aláírás szintaxisa és felsolgozása
RFC 2440. OpenPGP Message Format. J. Callas, L. Donnerhacke, H. Finney, R. Thayer. November 1998. http://www.ietf.org/rfc/rfc2440.txt RANDOM RFC 1750. Randomness Recommendations for Security. D. Eastlake, S. Crocker, J. Schiller. December 1994. http://www.ietf.org/rfc/rfc1750.txt RDF Resource Description Framework (RDF) Schema Specification 1.0. W3C Candidate Recommendation. D. Brickley, R.V. Guha. March 2000. http://www.w3.org/TR/2000/CR-rdf-schema-20000327/ Resource Description Framework (RDF) Model and Syntax Specification. W3C Recommendation. O. Lassila, R. Swick. February 1999. http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/
SAX SAX: The Simple API for XML. D. Megginson, et al. May 1998. http://www.megginson.com/SAX/index.html SEC RFC 2828. Internet Security Glossary. R. Shirey. May 2000. http://www.faqs.org/rfcs/rfc2828.html SHA-1 FIPS PUB 180-1. Secure Hash Standard. U.S. Department of Commerce/National Institute of Standards and Technology. http://csrc.nist.gov/publications/fips/fips180-1/fip180-1.txt SOAP Simple Object Access Protocol (SOAP) Version 1.1. W3C Note. D. Box, D. Ehnebuske, G. Kakivaya, A. Layman, N. Mendelsohn, H. Frystyk Nielsen, S. Thatte, D. Winer. May 2001. http://www.w3.org/TR/2000/NOTE-SOAP-20000508/ SPKI Simple Public Key Infrastructure. IETF Working Group http://www.ietf.org/html.charters/spki-charter.html Unicode The Unicode Consortium. The Unicode Standard. http://www.unicode.org/unicode/standard/standard.html Microsec Számítástechnikai Fejlesztő Kft.
40
Az XML aláírás szintaxisa és felsolgozása
UTF-16 RFC 2781. UTF-16, an encoding of ISO 10646. P. Hoffman , F. Yergeau. February 2000. http://www.ietf.org/rfc/rfc2781.txt UTF-8 RFC 2279. UTF-8, a transformation format of ISO 10646. F. Yergeau. January 1998. http://www.ietf.org/rfc/rfc2279.txt URI RFC 2396. Uniform Resource Identifiers (URI): Generic Syntax. T. Berners-Lee, R. Fielding, L. Masinter. August 1998. http://www.ietf.org/rfc/rfc2396.txt URI-Literal RFC 2732. Format for Literal IPv6 Addresses in URL's. R. Hinden, B. Carpenter, L. Masinter. December 1999. http://www.ietf.org/rfc/rfc2732.txt URL RFC 1738. Uniform Resource Locators (URL). T. Berners-Lee, L. Masinter, and M. McCahill. December 1994. http://www.ietf.org/rfc/rfc1738.txt X509v3 ITU-T Recommendation X.509 version 3 (1997). "Information Technology - Open Systems Interconnection - The Directory Authentication Framework" ISO/IEC 9594-8:1997. XLink XML Linking Language. W3C Recommendation. S. DeRose, E. Maler, D. Orchard. June 2001. http://www.w3.org/TR/2001/REC-xlink-20010627/ XML Extensible Markup Language (XML) 1.0 (Second Edition). W3C Recommendation. T. Bray, E. Maler, J. Paoli, C. M. Sperberg-McQueen. October 2000. http://www.w3.org/TR/2000/REC-xml-20001006 XML-C14N Canonical XML. W3C Recommendation. J. Boyer. March 2001. Microsec Számítástechnikai Fejlesztő Kft.
41
Az XML aláírás szintaxisa és felsolgozása
http://www.w3.org/TR/2001/REC-xml-c14n-20010315 http://www.ietf.org/rfc/rfc3076.txt XML-MT RFC 2376 . XML Media Types. E. Whitehead, M. Murata. July 1998. http://www.ietf.org/rfc/rfc2376.txt XML-ns Namespaces in XML. W3C Recommendation. T. Bray, D. Hollander, A. Layman. January 1999. http://www.w3.org/TR/1999/REC-xml-names-19990114/ XML-schema XML Schema Part 1: Structures. W3C Recommendation. D. Beech, M. Maloney, N. Mendelsohn, H. Thompson. May 2001. http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/ XML Schema Part 2: Datatypes W3C Recommendation. P. Biron, A. Malhotra. May 2001. http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/ XPath XML Path Language (XPath) Version 1.0. W3C Recommendation. J. Clark, S. DeRose. October 1999. http://www.w3.org/TR/1999/REC-xpath-19991116 XPointer XML Pointer Language (XPointer). W3C Candidate Recommendation. S. DeRose, R. Daniel, E. Maler. January 2001. http://www.w3.org/TR/2001/CR-xptr-20010911/ XSL Extensible Stylesheet Language (XSL). W3C Recommendation. S. Adler, A. Berglund, J. Caruso, S. Deach, T. Graham, P. Grosso, E. Gutentag, A. Milowski, S. Parnell, J. Richman, S. Zilles. October 2001. http://www.w3.org/TR/2001/REC-xsl-20011015/ XSLT XSL Transforms (XSLT) Version 1.0. W3C Recommendation. J. Clark. November 1999. http://www.w3.org/TR/1999/REC-xslt-19991116.html