Az XML aláírás szintaxisa és feldolgozása (2002. április)

Hasonló dokumentumok
Objektum-orientált tervezés

Egységes MELASZ formátum elektronikus aláírásokra

(ver. 2.0) május. Igazságügyi Minisztérium OCCR Projekt

Web-szolgáltatás szabványok

Az Informatikai és Hírközlési Minisztérium ajánlása a közigazgatásban alkalmazható. elektronikus aláírás formátumok műszaki specifikációjára

Azt írom alá, amit a képernyőn látok?

Titkosítás NetWare környezetben

IT BIZTONSÁGTECHNIKA. Tanúsítványok. Nagy-Löki Balázs MCP, MCSA, MCSE, MCTS, MCITP. Készítette:

Az XML pénzintézeti jelentések szintaxisa és feldolgozása (XmlPj)

A házifeladatban alkalmazandó XML struktúra

Az XML pénzintézeti jelentések szintaxisa és feldolgozása (XmlPj)

KRA SOAP felhasználói kézikönyv

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

KRA SOAP felhasználói kézikönyv

TANÚSÍTVÁNY. tanúsítja, hogy a. Pénzügyi Szervezetek Állami Felügyelete. által kifejlesztetett. IngridSigno Feldolgozó Modul aláíró alkalmazás

TANÚSÍTVÁNY. tanúsítja, hogy a. MÁV INFORMATIKA Kft. által kifejlesztett és forgalmazott. DSign UI 1.6. aláíró alkalmazás

Egységes MELASZ formátum elektronikus aláírásokra

TANÚSÍTVÁNY. tanúsítja, hogy a E-Group Magyarország Rt. által kifejlesztett és forgalmazott. Signed Document expert (SDX) Professional 1.

DIGITÁLIS ALÁÍRÁS: EGYÜTTMŰKÖDÉSRE KÉPES ÉS BIZTONSÁGOS ALKALMAZÁSOK

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Ingrid Signo Felhasználói kézikönyv. Pénztári használatra

Digitális aláírás: együttműködésre képes és biztonságos alkalmazások

Metadata specifikáció

IP alapú távközlés. Virtuális magánhálózatok (VPN)

TANÚSÍTVÁNY. tanúsítja, hogy az. InfoScope Kft. által kifejlesztett. Attribútum tanúsítványok érvényességét ellenőrző SDK InfoSigno AC SDK v1.0.0.

Elektronikus rendszerek a közigazgatásban

Elektronikus rendszerek a közigazgatásban elektronikus aláírás és archiválás elméletben

SSL elemei. Az SSL illeszkedése az internet protokoll-architektúrájába

KRA SOAP Interfész specifikáció

XmlGessünk 13. rész - Az XML Schema II.

WEBSZOLGÁLTATÁSOK BIZTONSÁGA (MODELLEZÉS SWSML-BEN)

Az adatfeldolgozás és adatátvitel biztonsága. Az adatfeldolgozás biztonsága. Adatbiztonság. Automatikus adatazonosítás, adattovábbítás, adatbiztonság

Szolgáltatás technológiák (WS, WS-*) Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

TANÚSÍTVÁNY. tanúsítja, hogy a. Pénzügyi Szervezetek Állami Felügyelete. által kifejlesztetett. Pénztár v aláíró alkalmazás

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

Aláírási jogosultság igazolása elektronikusan

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

EBT KKK2 kriptográfiai interfész specifikáció

XML sémanyelvek Jeszenszky, Péter

TANÚSÍTVÁNY. tanúsítja, hogy a. Giesecke & Devrient GmbH, Germany által előállított és forgalmazott

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

VBD , VBD

Data Security: Protocols Integrity

Az XML alapnyelv. dr. Paller Gábor. XML technológiák

e-szignó Hitelesítés Szolgáltató Microsec e-szignó Tanúsítvány telepítése Mac OS X Snow Leopard operációs rendszeren

Az Informatikai és Hírközlési Minisztérium ajánlása a közigazgatásban a hitelesítésszolgáltatók

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Elektronikus aláírás. Gaidosch Tamás. Állami Számvevőszék

TANÚSÍTVÁNY. tanúsítja, hogy a Utimaco Safeware AG által kifejlesztett és forgalmazott

Az XML szabvány. Az XML rövid története. Az XML szabvány

Az XML dokumentumok adatmodellje

Hosszú távú hiteles archiválás elektronikus aláírás segítségével. Krasznay Csaba BME Informatikai Központ

Nyilvános kulcsú rendszerek a gyakorlatban

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

MIRE JÓ AZ ARCHÍV ALÁÍRÁS?

Elektronikus archiválórendszer fejlesztése PKI alapokon

TANÚSÍTVÁNY. Időbélyegzés szolgáltatás keretén belül: Időbélyegző aláíró kulcsok generálására, tárolására, időbélyegző aláírására;

JNDI - alapok. Java Naming and Directory Interface

TANÚSÍTVÁNY HUNGUARD tanúsítja, SafeNet Inc. ProtectServer Gold

Web-fejlesztés NGM_IN002_1

XML és XSLT (a színfalak mögül)

KRA Elektronikus aláírási szabályzat

Bevezetés: az SQL-be

URN használata hálózati dokumentumok azonosításában Országos Széchényi Könyvtár Könyvtár-informatikai M hely Budapest, június 12.

DTD Dokumentumtípus definició

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Digitális aláírás és kriptográfiai hash függvények. 1. az aláírás generálása (az X üzenetet küldő A fél végzi): A B: X, D A (X)

XML / CSV specifikáció

Dr. Bakonyi Péter c.docens

Elektronikus levelek. Az informatikai biztonság alapjai II.

Webalkalmazás-biztonság. Kriptográfiai alapok

tanúsítja, hogy a Kopint-Datorg Részvénytársaság által kifejlesztett és forgalmazott MultiSigno Standard aláíró alkalmazás komponens 1.

FELÜLVIZSGÁLATI JEGYZŐKÖNYV (E-DS10F1_TANF-SW) MELLÉKLETE

Osztott alkalmazások fejlesztési technológiái Áttekintés

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Tanúsítási jelentés. Hung-TJ a MultiSigno Developer Professional. aláíró alkalmazás fejlesztő készletről. /Kopint-Datorg Rt.

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

Elektronikus aláírás. Miért van szükség elektronikus aláírásra? A nyiltkulcsú titkosítás. Az elektronikus aláírás m ködése. Hitelesít szervezetek.

HUNG-MJ számú MEGFELELÉS ÉRTÉKELÉSI JELENTÉS. a XadesMagic v2.0.0 (build 24) megfelelése az

Aláírási jogosultság igazolása elektronikusan

Elektronikus rendszerek a közigazgatásban elektronikus aláírás és archiválás elméletben

TANÚSÍTVÁNY. tanúsítja, hogy a. Noreg Információvédelmi Kft. által kifejlesztett

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

HUNG-MJ számú MEGFELELÉS ÉRTÉKELÉSI JELENTÉS. az InfoSigno PKI SDK v3.0.1 (build 9) megfelelése az

ELEKTRONIKUS ADATCSERE SZEREPE A GLOBÁLIS LOGISZTIKÁBAN

Az XML alapjai BME VIK BSc. Intelligens Rendszerek ágazat, Kooperatív rendszerek labor

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

Minősített tanúsítvány, visszavonási lista és időbélyeg profildefiníciók

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Minősített tanúsítvány, visszavonási lista és időbélyeg profildefiníciók

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

A Z E L E K T R O N I K U S A L Á Í R Á S J O G I S Z A B Á L Y O Z Á S A.

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

JAVA webes alkalmazások


Pénzintézetek jelentése a pénzforgalmi jelzőszám változásáról

TANÚSÍTVÁNY. tanúsítja, hogy a Kopint-Datorg Részvénytársaság által kifejlesztett és forgalmazott

HUNG-MJ számú MEGFELELÉS ÉRTÉKELÉSI JELENTÉS. az Nlcapi3 v3.3.3 (build 2) /benne az NLxades modul (v2.1.

Átírás:

Az XML aláírás szintaxisa és feldolgozása (2002. április) Microsec Számítástechnikai Fejlesztő Kft. 1022 Budapest, Marcibányi tér 9.

Tartalomjegyzék 1 Bevezetés 4 2 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 6 XML aláírás sémadefiníciója 21 6.1 Elemek 21 6.1.1 CanonicalizationMethod 22 6.1.2 DigestMethod 22 6.1.3 DigestValue 23 6.1.4 DSAKeyValue 23 6.1.5 KeyInfo 24 6.1.6 KeyName 25 6.1.7 KeyValue 25 6.1.8 Manifest 26 6.1.9 MgmtData 26 6.1.10 Object 27 6.1.11 PGPData 28 6.1.12 Reference 29 6.1.13 RetrievalMethod 29 6.1.14 RSAKeyValue 30 6.1.15 Signature 31 Microsec Számítástechnikai Fejlesztő Kft. 2

6.1.16 SignatureMethod 31 6.1.17 SignatureProperties 32 6.1.18 SignatureProperty 33 6.1.19 SignatureValue 33 6.1.20 SignedInfo 34 6.1.21 SPKIData 34 6.1.22 Transform 35 6.1.23 Transforms 36 6.1.24 X509Data 37 6.2 Egyszerű típusok 37 6.2.1 CryptoBinary 37 6.2.2 DigestValueType 38 6.2.3 HMACOutputLengthType 38 7 Hivatkozások 39 Microsec Számítástechnikai Fejlesztő Kft. 3

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

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) (<Reference (URI=)? > (Transforms)? (DigestMethod) (DigestValue) </Reference>)+ </SignedInfo> (SignatureValue) (KeyInfo)? (Object)* </Signature> 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

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. [s01] <Signature Id="MyFirstSignature" xmlns=http://www.w3.org/2000/09/xmldsig# > [s02] <SignedInfo> [s03] <CanonicalizationMethod Algorithm=http://www.w3.org/TR/2000/CR-xml-c14n-20001026 > [s04] <SignatureMethod Algorithm=http://www.w3.org/2000/09/xmldsig#dsa-sha1 > [s05] <Reference URI="http://www.e-szigno.hu/shema/2002/PénzintézetiJelentés.xsd" /> [s06] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s07] <DigestValue>k6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> [s08] </Reference> [s09] <Reference URI="#AMadeUpTimeStamp" [s10] Type=http://www.w3.org/2000/09/xmldsig#SignatureProperties > [s11] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s12] <DigestValue>k3453rvEPO0vKtMup4NbeVu8nk=</DigestValue> [s13] </Reference> [s14] </SignedInfo> [s15] <SignatureValue>WmnK5vawv2SUsoIkiVMrbVi6kGouPE5M64v2nIiG/vTuukf3pQe5Qg==</SignatureValue> [s16] <KeyInfo> [s17] <KeyValue> [s18] <DSAKeyValue> [s19] <P>...</P><Q>...</Q><G>...</G><Y>...</Y> [s20] </DSAKeyValue> [s21] </KeyValue> [s22] <X509Data> [s23] <X509SubjectName>CN=E-szigno, OU=Program, O=Microsec, L=Budapest, C=HU</X509SubjectName> [s24] <X509Certificate> [s25]... [s26] </X509Certificate> [s27] </X509Data> [s28] </KeyInfo> [s29] <Object> [s30] <SignatureProperties> [s31] <SignatureProperty Id="AMadeUpTimeStamp" Target="#MySecondSignature"> [s32] <timestamp xmlns=http://www.microsec.hu/timestamp.txt > Microsec Számítástechnikai Fejlesztő Kft. 6

[s33] <date>19990908</date> [s34] <time>14:34:34:34</time> [s35] </timestamp> [s36] </SignatureProperty> [s37] </SignatureProperties> [s38] </Object> [s39] </Signature> 2. ábra [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

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á: <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> </Transforms> 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] <Reference URI="http://www.e-szigno.hu/shema/2002/PénzintézetiJelentés.xsd" /> [s06] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s07] [s08] [s09] <DigestValue>k6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> <Reference URI="#AMadeUpTimeStamp" Microsec Számítástechnikai Fejlesztő Kft. 8

[s10] Type=http://www.w3.org/2000/09/xmldsig#SignatureProperties > [s11] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s12] [s13] <DigestValue>k3453rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> 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] <SignedInfo> [s03] <CanonicalizationMethod Algorithm=http://www.w3.org/TR/2000/CR-xml-c14n-20001026 > [s04] <SignatureMethod Algorithm=http://www.w3.org/2000/09/xmldsig#dsa-sha1 > [s05] <Reference URI="http://www.e-szigno.hu/shema/2002/PénzintézetiJelentés.xsd" /> [s06] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s07] <DigestValue>k6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> [s08] </Reference> [s09] <Reference URI="#AMadeUpTimeStamp" [s10] Type=http://www.w3.org/2000/09/xmldsig#SignatureProperties > [s11] <DigestMethod Algorithm=http://www.w3.org/2000/09/xmldsig#sha1 /> [s12] <DigestValue>k3453rvEPO0vKtMup4NbeVu8nk=</DigestValue> [s13] </Reference> [s14] </SignedInfo> 4.1.5 SignedInfo kanonizálása A SignedInfo a megadott kanonizáló algoritmus (http://www.w3.org/tr/2000/cr-xml-c14n- 20001026) szerint transzformálásra kerül. Ez a transzformált alak képezi az aláírás bemeneti adatát. A leglényegesebb transzformációk a következők: Utasítások formázása, megjegyzések törlése/meghagyása, a dokumentum elemen kívüli részek elhagyása (Példa NL), A helyközök megtartása (Példa SPACE) A kezdő- és végcímkék normalizálása (Példa TAGS) Karakterhivatkozások feloldása (Példa CHAR) Entitáshivatkozások (Példa ENT) Betűkészlet UTF-8-ra alakítása (Példa ENCO) Microsec Számítástechnikai Fejlesztő Kft. 9

Példa Bemeneti dokumentum NL <?xml version="1.0"?> <?xml-stylesheet href="doc.xsl" type="text/xsl"?> Kanonizált forma (megjegyzés nélkül) <?xml-stylesheet href="doc.xsl" type="text/xsl"?> <doc>hello, world!</doc> <?pi-without-data?> <!DOCTYPE doc SYSTEM "doc.dtd"> <doc>hello, world!<!-- Comment 1 --></doc> <?pi-without-data?> <!-- Comment 2 --> SPACE <doc> <clean> </clean> <dirty> A B </dirty> <mixed> A <clean> </clean> B <dirty> A B </dirty> C </mixed> </doc> TAGS <!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]> <doc> <e1 /> <e2 ></e2> <e3 name = "elem3" id="elem3" /> <e4 name="elem4" id="elem4" ></e4> <e5 a:attr="out" b:attr="sorted" attr2="all" attr="i'm" xmlns:b="http://www.ietf.org" xmlns:a="http://www.w3.org" xmlns="http://www.uvic.ca"/> <e6 xmlns="" xmlns:a="http://www.w3.org"> <e7 xmlns="http://www.ietf.org"> <e8 xmlns="" xmlns:a="http://www.w3.org"> <e9 xmlns="" xmlns:a="http://www.ietf.org"/> </e8> </e7> </e6> </doc> CHAR <!DOCTYPE doc [ <!ATTLIST normid id ID #IMPLIED> <!ATTLIST normnames attr NMTOKENS #IMPLIED> ]> <doc> <text>first line Second line</text> <value>2</value> <compute><![cdata[value>"0" && value<"10"?"valid":"error"]]></compute> <compute expr='value>"0" && value<"10"?"valid":"error"'>valid</compute> <norm attr=' &apos; &apos; '/> <normnames attr=' A B '/> <normid id=' &apos; &apos; '/> </doc> <doc> <clean> </clean> <dirty> A B </dirty> <mixed> A <clean> </clean> B <dirty> A B </dirty> C </mixed> </doc> doc> <e1></e1> <e2></e2> <e3 id="elem3" name="elem3"></e3> <e4 id="elem4" name="elem4"></e4> <e5 xmlns=http://www.uvic.ca xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="i'm" attr2="all" b:attr="sorted" a:attr="out"></e5> <e6 xmlns:a="http://www.w3.org"> <e7 xmlns="http://www.ietf.org"> <e8 xmlns=""> <e9 xmlns:a="http://www.ietf.org" attr="default"></e9> </e8> </e7> </e6> </doc> <doc> <text>first line Second line</text> <value>2</value> <compute>value>"0" && value<"10"?"valid":"error"</compute> <compute expr="value>"0" && value<"10"?"valid":"error"">valid</comp ute> <norm attr=" ' ' "></norm> <normnames attr="a B"></normNames> <normid id="' '"></normid> </doc> REF <!DOCTYPE doc [ <!ATTLIST doc attrextent ENTITY #IMPLIED> <!ENTITY ent1 "Hello"> <!ENTITY ent2 SYSTEM "world.txt"> <!ENTITY entext SYSTEM "earth.gif" NDATA <doc attrextent="entext"> Hello, world! </doc> Microsec Számítástechnikai Fejlesztő Kft. 10

gif> <!NOTATION gif SYSTEM "viewgif.exe"> ]> <doc attrextent="entext"> &ent1;, &ent2;! </doc> ENCO <?xml version="1.0" encoding="iso-8859-1"?> <doc> </doc> <doc>#xc2#xa9</doc> 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==</SignatureValue> 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] <KeyInfo> [s17] <KeyValue> [s18] <DSAKeyValue> [s19] <P>...</P><Q>...</Q><G>...</G><Y>...</Y> [s20] </DSAKeyValue> [s21] </KeyValue> [s22] <X509Data> [s23] <X509SubjectName>CN=E-szigno, OU=Program, O=Microsec, L=Budapest, C=HU</X509SubjectName> [s24] <X509Certificate> [s25]... [s26] </X509Certificate> [s27] </X509Data> [s28] </KeyInfo> 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

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

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 okkal 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. <?xml version="1.0" encoding="iso-8859-2"?> <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> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2000/WD-xml-c14n- 20000119"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#object_0"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>1G5klTS0KDPNorpaCFTGtz76dkI=</DigestValue> </Reference> </SignedInfo> <SignatureValue> VbQVWRkRxXMKl2ZxqHHzu+iQ7MEiUOeBpX2877+pXNX/svYLuk/YPhOjORS2Pm9gIDBeu3bh p+q0zof+8u6jv+/ixv0y1qeeh6s3giaervuhbmcfybtrlivkyjevmyujbwytafofn2ijhb0h xpk2iyfr0rjp7ceqfsckkqxkawi= </SignatureValue> <KeyInfo> <KeyValue> <RSAKeyValue> <Modulus> 5QBzed5uTMgvwGRfjoiyBmxFdhyfRGPpr9KJgReK9RT5MLDM2Ymz/xM3Zrik71VoQg rbgsx5ignc+bdz+id+up4gxg2/ixtdgaapzucl360otkx1spr7l60hypmaqz7j4rl/ PnKIDIueD/WX3mSs3oTKj2/HZygOE6jXWA2spkk= </Modulus> <Exponent>AQAB</Exponent> Microsec Számítástechnikai Fejlesztő Kft. 13

</RSAKeyValue> </KeyValue> <X509Data> <X509SubjectName>O=Minositett 3. osztaly, OU=Pecset, OU=Reg.sz. - 0109078353, OU=Szervezet - Microsec Kft, CN=E-szigno beadvanyszerkeszto 1</X509SubjectName> <X509Certificate> MIIDfjCCAmagAwIBAgIQbSUzQ2syiPCfT93/H8R2KjANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UE BhMCSFUxSDBGBgNVBAoTP0lnYXpzYWd1Z3lpIE1pbmlzenRlcml1bSwgaHR0cHM6Ly93d3cuZS1z emlnbm8uahuvywrhdg9rl0htwlnaidfcmeaga1uecxm5zs1zemlnbm8gsgl0zwxlc2l0zxmtu3pv bgdhbhrhdg8sigh0dhbzoi8vd3d3lmutc3ppz25vlmh1mb4xdtaxmdkxotawmdawmfoxdtaymdkx OTIzNTk1OVowgZsxHjAcBgNVBAoUFU1pbm9zaXRldHQgMy4gb3N6dGFseTEPMA0GA1UECxQGUGVj c2v0mr0wgwydvqqlfbrszwcuc3ouic0gmdewota3odm1mzehmb8ga1uecxqyu3plcnzlemv0ic0g TWljcm9zZWMgS2Z0MSYwJAYDVQQDEx1FLXN6aWdubyBiZWFkdmFueXN6ZXJrZXN6dG8gMTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5QBzed5uTMgvwGRfjoiyBmxFdhyfRGPpr9KJgReK9RT5 MLDM2Ymz/xM3Zrik71VoQgrBGsX5IGNC+Bdz+ID+uP4GxG2/iXtdGaaPzUCL360oTKX1Spr7L60h ypmaqz7j4rl/pnkidiued/wx3mss3otkj2/hzygoe6jxwa2spkkcaweaaanamd4wcqydvr0tbaiw ADALBgNVHQ8EBAMCBaAwEQYJYIZIAYb4QgEBBAQDAgeAMBEGCmCGSAGG+EUBBgkEAwEB/zANBgkq hkig9w0baqqfaaocaqeamsgpy3uoyihjaewlx0qnvzwyy9aclaa9f2jsse1lyjqnynqrudldfjhw gl5nmt6cnrc+kiado+8265fwbgktt+hdeqtzfdmzcrshfb8je4yovxzmpxjoofjrntwxfrmgwxqm vja7/gxlr9ncfvp2wrg+bu+jesjob6jyiihp4odsssetgb6ftpytdn+gif0kdmzuszdfnvg/qzev r/euo+y0x6y3fwz6ha0di3c15bo5mkfkvlhipnrw03hyxtz0c9rkemag04oiqhtd93ewgs6aslvb YnHuwRSw+H9hKUp1Mee9woZJzjrZDcJeRC7wqe3XZzkCanfnRErlhQHTFg== </X509Certificate> </X509Data> </KeyInfo> <Object Id="object_0" Encoding="ISO-8859-2" MimeType="text/xml"> </Object> </Signature> 3. ábra 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ó elemok 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

type ds:signaturetype children ds:signedinfo ds:signaturevalue ds:keyinfo ds:object complextype ObjectType attributes Name Type Use Default Fixed Annotation Id ID optional documentation Az XML Signature gyökéreleme source <element name="signature" type="ds:signaturetype"> <documentation>az XML Signature gyökéreleme</documentation> 1. <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\i-akta\schema\xmldsig.xsd"> <SignedInfo> </SignedInfo> <SignatureValue> </SignatureValue> <KeyInfo> Microsec Számítástechnikai Fejlesztő Kft. 15

</KeyInfo> <Object Id="object_0" Encoding="ISO-8859-2" MimeType="text/xml"> </Object> </Signature> 1. példa 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. type ds:signedinfotype children ds:canonicalizationmethod ds:signaturemethod ds:reference complextype SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional documentation Az aláírás módját és adatait tartalmazó elem source <element name="signedinfo" type="ds:signedinfotype"> Microsec Számítástechnikai Fejlesztő Kft. 16

<documentation>az aláírás módját és adatait tartalmazó elem</documentation> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2000/WD-xml-c14n-20000119"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI="#object_0"> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#envelopedsignature"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>1G5klTS0KDPNorpaCFTGtz76dkI=</DigestValue> </Reference> </SignedInfo> 5.1.2 SignatureValue A SignatureValue tartalmazza a digitális aláírás aktuális értékét, ami mindig base64 szerint van kódolva. type ds:signaturevaluetype complextype SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional 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</documentation> <SignatureValue> VbQVWRkRxXMKl2ZxqHHzu+iQ7MEiUOeBpX2877+pXNX/svYLuk/YPhOjORS2Pm9gIDBeu3bh Microsec Számítástechnikai Fejlesztő Kft. 17

p+q0zof+8u6jv+/ixv0y1qeeh6s3giaervuhbmcfybtrlivkyjevmyujbwytafofn2ijhb0h xpk2iyfr0rjp7ceqfsckkqxkawi= </SignatureValue> 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. type ds:keyinfotype children ds:keyname ds:keyvalue ds:retrievalmethod ds:x509data ds:pgpdata ds:spkidata ds:mgmtdata complextype SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional 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</documentation> Microsec Számítástechnikai Fejlesztő Kft. 18

<KeyInfo> <KeyValue> <RSAKeyValue> <Modulus> 5QBzed5uTMgvwGRfjoiyBmxFdhyfRGPpr9KJgReK9RT5MLDM2Ymz/xM3Zrik71VoQg rbgsx5ignc+bdz+id+up4gxg2/ixtdgaapzucl360otkx1spr7l60hypmaqz7j4rl/ PnKIDIueD/WX3mSs3oTKj2/HZygOE6jXWA2spkk= </Modulus> <Exponent>AQAB</Exponent> </RSAKeyValue> </KeyValue> <X509Data> <X509SubjectName>O=Minositett 3. osztaly, OU=Pecset, OU=Reg.sz. - 0109078353, OU=Szervezet - Microsec Kft, CN=E-szigno beadvanyszerkeszto 1</X509SubjectName> <X509Certificate> MIIDfjCCAmagAwIBAgIQbSUzQ2syiPCfT93/H8R2KjANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UE BhMCSFUxSDBGBgNVBAoTP0lnYXpzYWd1Z3lpIE1pbmlzenRlcml1bSwgaHR0cHM6Ly93d3cuZS1z emlnbm8uahuvywrhdg9rl0htwlnaidfcmeaga1uecxm5zs1zemlnbm8gsgl0zwxlc2l0zxmtu3pv bgdhbhrhdg8sigh0dhbzoi8vd3d3lmutc3ppz25vlmh1mb4xdtaxmdkxotawmdawmfoxdtaymdkx OTIzNTk1OVowgZsxHjAcBgNVBAoUFU1pbm9zaXRldHQgMy4gb3N6dGFseTEPMA0GA1UECxQGUGVj c2v0mr0wgwydvqqlfbrszwcuc3ouic0gmdewota3odm1mzehmb8ga1uecxqyu3plcnzlemv0ic0g TWljcm9zZWMgS2Z0MSYwJAYDVQQDEx1FLXN6aWdubyBiZWFkdmFueXN6ZXJrZXN6dG8gMTCBnzAN BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5QBzed5uTMgvwGRfjoiyBmxFdhyfRGPpr9KJgReK9RT5 MLDM2Ymz/xM3Zrik71VoQgrBGsX5IGNC+Bdz+ID+uP4GxG2/iXtdGaaPzUCL360oTKX1Spr7L60h ypmaqz7j4rl/pnkidiued/wx3mss3otkj2/hzygoe6jxwa2spkkcaweaaanamd4wcqydvr0tbaiw ADALBgNVHQ8EBAMCBaAwEQYJYIZIAYb4QgEBBAQDAgeAMBEGCmCGSAGG+EUBBgkEAwEB/zANBg kq hkig9w0baqqfaaocaqeamsgpy3uoyihjaewlx0qnvzwyy9aclaa9f2jsse1lyjqnynqrudldfjhw gl5nmt6cnrc+kiado+8265fwbgktt+hdeqtzfdmzcrshfb8je4yovxzmpxjoofjrntwxfrmgwxqm vja7/gxlr9ncfvp2wrg+bu+jesjob6jyiihp4odsssetgb6ftpytdn+gif0kdmzuszdfnvg/qzev r/euo+y0x6y3fwz6ha0di3c15bo5mkfkvlhipnrw03hyxtz0c9rkemag04oiqhtd93ewgs6aslvb YnHuwRSw+H9hKUp1Mee9woZJzjrZDcJeRC7wqe3XZzkCanfnRErlhQHTFg== </X509Certificate> </X509Data> </KeyInfo> Microsec Számítástechnikai Fejlesztő Kft. 19

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. type ds:objecttype children ia:adatlap ds:signature ds:object ds:signatureproperties complextypes ObjectType SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional MimeType string optional Encoding anyuri optional documentation Adatottároló elem source <element name="object" type="ds:objecttype"> <documentation>adatottároló elem</documentation> <Object Id="object_1" Encoding="base64" MimeType="application/zip"> </Object> Microsec Számítástechnikai Fejlesztő Kft. 20

6 XML aláírás sémadefiníciója Elements Complex types Simple types CanonicalizationMethod CanonicalizationMethodType CryptoBinary DigestMethod DigestMethodType DigestValueType DigestValue DSAKeyValueType HMACOutputLengthTyp e DSAKeyValue KeyInfo KeyName KeyValue Manifest MgmtData Object PGPData Reference RetrievalMethod RSAKeyValue Signature SignatureMethod SignatureProperties SignatureProperty SignatureValue SignedInfo SPKIData Transform KeyInfoType KeyValueType ManifestType ObjectType PGPDataType ReferenceType RetrievalMethodType RSAKeyValueType SignatureMethodType SignaturePropertiesType SignaturePropertyType SignatureType SignatureValueType SignedInfoType SPKIDataType TransformsType TransformType X509DataType X509IssuerSerialType Transforms X509Data 6.1 Elemek Microsec Számítástechnikai Fejlesztő Kft. 21

6.1.1 CanonicalizationMethod type ds:canonicalizationmethodtype complextype SignedInfoType attributes Name Type Use Default Fixed Annotation Algorithm anyuri required 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</documentation> 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 type ds:digestmethodtype attributes complextype ReferenceType Name Type Use Default Fixed Annotation Algorithm anyuri required 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</documentation> Microsec Számítástechnikai Fejlesztő Kft. 22

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 type ds:digestvaluetype complextype ReferenceType documentation Az adatok kódolt kivonata source <element name="digestvalue" type="ds:digestvaluetype"> <documentation>az adatok kódolt kivonata</documentation> 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 Microsec Számítástechnikai Fejlesztő Kft. 23

type ds:dsakeyvaluetype children P Q G Y J Seed PgenCounter complextype KeyValueType documentation DSA nyilvános kulcs értéke source <element name="dsakeyvalue" type="ds:dsakeyvaluetype"> <documentation>dsa nyilvános kulcs értéke</documentation> 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 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 attributes Name Id Type ID Use optiona l Default Fixed Annotation documentation Információk a nyilvános kulcsról Microsec Számítástechnikai Fejlesztő Kft. 24

source <element name="ke yinfo" type="ds:key InfoType"> < > <documentation>információk a nyilvános kulcsról</documentation> 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 namespace type http://www.w3.org/2000/09/xmldsig# string complextype KeyInfoType documentation A használt kulcs azonosítója source <e lement name="keyname" type="string"> <documentation>a használt kulcs azonosítója</documentation> 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 namespace type http://www.w3.org/2000/09/xmldsig# ds:keyvaluetype children ds:dsakeyvalue ds:rsakeyvalue complextype KeyInfoType documentation A nyilvános kulcs értéke source <e lement name="keyvalue" type="ds:keyvaluetype"> Microsec Számítástechnikai Fejlesztő Kft. 25

<documentation>a nyilvános kulcs értéke< /documentation> A KeyValue egy egyszerű nyilvános kulcsot tartalmaz. 6.1.8 Manifest namespace type children http://www.w3.org/2000/09/xmldsig# ds:manifesttype ds:reference attributes Name Type Use Default Fixed Annotation Id ID optional documentation Adatokra való hivatkozásokat tartalmazó elem source <element name="manifest" type="ds:manifesttype"> <documentation>adatokra való hivatkozásokat tartalmazó elem </documentation> </ > 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 type string complextype KeyInfoType documentation Kiegészítő kulcsinformáció (nem ajánlott) source <element name="mgmtdata" type="string"> < > <documentation>kiegészítő kulcsinformáció (nem ajánlott)</documentation> </ > Microsec Számítástechnikai Fejlesztő Kft. 26

Kulcs adminisztrációs információk tárolására használható. Használata nem ajánlott. 6.1.10 Object namespace http://www.w3.org/2000/09/xmldsig# type ds:objecttype children ia:adatlap ds:signature ds:object ds:signatureproperties complextypes ObjectType SignatureType attributes Name Id Type ID Use optiona l Default Fixed Annotation MimeType string optional Encoding anyuri optional documentation Adatottároló elem source <element name="object" type="ds:objecttype"> <documentation>adatottároló elem</documentation> Microsec Számítástechnikai Fejlesztő Kft. 27

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 type ds:pgpdatatype children PGPKeyID PGPKeyPacket PGPKeyPacket 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</documentation> Microsec Számítástechnikai Fejlesztő Kft. 28

A PGPData elem a nyilvános kulcs adatait tartalmazza PGP kulcs-pár használata esetén. 6.1.12 Reference type ds:referencetype children ds:transforms ds:digestmethod ds:digestvalue complextypes ManifestType SignedInfoType attributes Name Type Use Default Fixed Annotation Id ID optional URI anyuri optional Type anyuri optional 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</documentation> 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 type ds:retrievalmethodtype children ds:transforms Microsec Számítástechnikai Fejlesztő Kft. 29

complextype KeyInfoType attributes Name Type Use Default Fixed Annotation URI anyuri Type anyuri 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</documentation> 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 type ds:rsakeyvaluetype children Modulus Exponent complextype KeyValueType documentation RSA nyilvános kulcs értéke source <element name="rsakeyvalue" type="ds:rsakeyvaluetype"> <documentation>rsa nyilvános kulcs értéke</documentation> Microsec Számítástechnikai Fejlesztő Kft. 30

Az RSAKeyvalue az RSA nyilvános kulcs két paraméterét tartalmazza. 6.1.15 Signature type ds:signaturetype children ds:signedinfo ds:signaturevalue ds:keyinfo ds:object complextype ObjectType attributes Name Type Use Default Fixed Annotation Id ID optional documentation Az XML Signature gyökéreleme source <element name="signature" type="ds:signaturetype"> <documentation>az XML Signature gyökéreleme</documentation> 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 Microsec Számítástechnikai Fejlesztő Kft. 31

type ds:signaturemethodtype children HMACOutputLength complextype SignedInfoType attributes Name Algorithm Type anyuri Use require d Default Fixed Annotation documentation Az aláíró a lgoritmus definiálása source <element name="signaturemethod" type="ds:signaturemethodtype"> <documentation>az aláíró algoritmus definiálása</documentation> 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 namespace http://www.w3.org/2000/09/xmldsig# type ds:signaturepropertiestype children ds:signatureproperty complextype ObjectType attributes Name Type Use Default Fixed Annotation Id ID optional source documentation Aláírás kiegészítő információinak tárolására szolgáló lista < element name="signatureproperties" type="ds:signaturepropertiestype"> <documentation>aláírás kiegészítő információinak tárolására szolgáló lista</documentation> Microsec Számítástechnikai Fejlesztő Kft. 32

Az aláírással kapcsolatos kiegészítő információkat foglalja, SignatureProperty elemek formájában, magába. 6.1.18 SignatureProperty type ds:signaturepropertytype complextype SignaturePropertiesType attributes Name Type Use Default Fixed Annotation Target anyuri required Id ID optional documentation Kiegészítő aláírásjellemző source <element name="signatureproperty" type="ds:signaturepropertytype"> <documentation>kiegészítő aláírásjellemző</documentation> A SignatureProperty tetszőleges adatot tartalmazhat, lehet például az aláíráshoz kapcsolódó időpecsét. 6.1.19 SignatureValue type ds:signaturevaluetype complextype SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional 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</documentation> Microsec Számítástechnikai Fejlesztő Kft. 33

Az aláírás aktuális értékét tartalmazza, mindig base64 szerint kódolva. 6.1.20 SignedInfo type ds:signedinfotype children ds:canonicalizationmethod ds:signaturemethod ds:reference complextype SignatureType attributes Name Type Use Default Fixed Annotation Id ID optional 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</documentation> 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 Microsec Számítástechnikai Fejlesztő Kft. 34

type ds:spkidatatype children SPKISexp 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</documentation> 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 type ds:transformtype children XPath complextype TransformsType attributes Name Type Use Default Fixed Annotation Algorithm anyuri required documentation Az aláirandó adaton elvégzendő transzformáció source <element name="transform" type="ds:transformtype"> <documentation>az aláirandó adaton elvégzendő transzformáció</documentation> Microsec Számítástechnikai Fejlesztő Kft. 35

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 type ds:transformstype children ds:transform complextypes ReferenceType RetrievalMethodType documentation A kivonatképzést megalőző transzformációk listája source <element name="transforms" type="ds:transformstype"> <documentation>a kivonatképzést megalőző transzformációk listája</documentation> Microsec Számítástechnikai Fejlesztő Kft. 36

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 type ds:x509datatype children X509IssuerSerial X509SKI X509SubjectName X509Certificate X509CRL 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</documentation> 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 type base64binary elements RSAKeyValueType/Exponent DSAKeyValueType/G DSAKeyValueType/J RSAKeyValueType/Modulus DSAKeyValueType/P DSAKeyValueType/PgenCounter DSAKeyValueType/Q DSAKeyValueType/Seed DSAKeyValueType/Y Microsec Számítástechnikai Fejlesztő Kft. 37

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</documentation> <restriction base="base64binary"/> </simpletype> 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 1363- as ajánlatának. 6.2.2 DigestValueType type base64binary element DigestValue documentation A kivonat típusdefiniciója source <simpletype name="digestvaluetype"> <documentation>a kivonat típusdefiniciója</documentation> <restriction base="base64binary"/> </simpletype> A kivonatkészítés base64 szerint kódolt alakja. 6.2.3 HMACOutputLengthType type integer element SignatureMethodType/HMACOutputLength documentation HAC algoritmus paramétere source <simpletype name="hmacoutputlengthtype"> <documentation>hac algoritmus paramétere</documentation> <restriction base="integer"/> </simpletype> 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

7 Hivatkozások DOM DSS 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/ 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

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 SEC SAX: The Simple API for XML. D. Megginson, et al. May 1998. http://www.megginson.com/sax/index.html 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