Zhotovil: Radek Častorál Datum vzniku: 24.11.2014 Jméno souboru: ECR brána - rozhraní ECR obálka 2.0 Počet stran: 19
Verze dokumentu Změny 1.0 Úvodní verze určená pro implementátory. 1.1 Popis ECR obálky v kapitole 2.3 v sekci Chyba opraven do souladu s XML schématem. V dokumentu nebyl popis chyby zanořen do elementu PopisChyby a nebyly popsány některé volitelné XML uzly. V souladu s tím doplněn text kapitoly 2.3.6. 1.2 V kapitole 3.2 změněny XML příklady algoritmus podpisu SHA-1 zaměněn za SHA-256. V kapitole 4 přidány české popisy chyb. 1.3 Upraveny kapitoly 3.2.2 a 3.2.3 přidáno omezení těchto typů podpisu jen na XML s elementem BinarniZprava. Upravena kapitola 4 přidán chybový kód 74. Strana 2 z 19
Obsah 1. Úvod... 4 2. Komunikační zpráva ECR obálka 2.0... 5 2.1. Změny proti verzi 1.5...5 2.2. Systém kontrol...5 2.3. ECR obálka 2.0...6 2.3.1. Element Hlavicka...9 2.3.2. Element Zprava...9 2.3.3. Element RozsireneInformace...9 2.3.4. Element Ucastnici...9 2.3.5. Datový přenášený obsah... 10 2.3.5.1. Element SmimeZprava... 10 2.3.5.2. Element XmlZprava... 10 2.3.5.3. Element BinarniZprava... 10 2.3.6. Element Chyba... 10 3. Formáty zabezpečení dat ECR obálky... 11 3.1. Šifrování... 11 3.2. Zaručený elektronický podpis... 12 3.2.1. Typ Enveloping... 12 3.2.2. Typ Enveloped, mimo zprávu, SignatureContext = envelope... 13 3.2.3. Typ Enveloped, mimo zprávu, SignatureContext = datacontent... 14 3.2.4. Typ Enveloped, uvnitř zprávy, SignatureContext = envelope... 14 3.2.5. Typ Enveloped, uvnitř zprávy, SignatureContext = datacontent... 15 3.3. Kombinace zaručeného elektronického podpisu a šifrování... 15 4. Příloha A číselník chyb odesílaných ECR bránou... 17 Strana 3 z 19
1. Úvod ECR brána je systém, který od roku 2002 slouží ke komunikaci celní správy s externími subjekty, převážně s deklaranty. Systém byl průběžně rozšiřován a modernizován, aby pružně reagoval na potřeby celní správy. K jeho zásadní modernizaci došlo v průběhu roku 2008 s cílem použít novou integrační platformu a aplikovat dlouholeté zkušenosti s provozem do samotného jádra ECR brány. Součástí rozšíření byly i dvě podstatné úpravy, které rozšiřují možnosti funkce směrem k deklarantům. Jednou z nich je použití moderních a standardizovaných zabezpečovacích standardů XML signature a XML encryption a druhou úprava ECR obálky tak, aby snáze splňovala různorodé potřeby zastřešovaných celních agend. Těmto dvěma změnám je věnován tento dokument. Současně ale zůstávají v platnosti všechny předchozí dokumenty vztahující se k rozhraní ECR obálky 1.5 a k zabezpečení formou SMIME podepisování a šifrování. K existujícím agendám ECR brána plně podporuje pro zpětnou kompatibilitu rozhraní 1.5, ale u nově vznikajících agend už bude vyžadováno rozhraní 2.0. Stejná pravidla platí pro využívání mechanizmů zabezpečení datových výměn. Strana 4 z 19
2. Komunikační zpráva ECR obálka 2.0 ECR obálka je hlavní komunikační zpráva na ECR bráně 2.0 a slouží k zapouzdřování informací o přenášené zprávě, které jsou důležité pro její správné nasměrování na serverovou aplikaci, ověření zabezpečení a pro sledování jejího toku systémem. Veškerá data určená pro průchod ECR bránou musí být do této obálky zapouzdřena. Pro všechny elementy ECR obálky 2.0 je přiřazený jmenný prostor http://www.cs.mfcr.cz/schemas/ecrobalka/v_2.0 2.1. ZMĚNY PROTI VERZI 1.5 Hlavní zpráva používaná ECR bránou byla původně navržena pro použití ve dvou vybraných režimech. Obsahuje proto některé režimově specifické údaje a na druhou stranu neumožňuje případné rozšíření o elementy využitelné v agendách nově zaváděných. V rámci změn ECR brány se ukázalo jako maximálně účelné rozvinout definici rozhraní na novou obecnější verzi. Původní ECR brána informovala o chybových stavech pomocí dvou zpráv ChybaVAN a CZ907A. Důvody pro toto dvojí informování se postupně stíraly a v nové verzi je použit již jednotný způsob vracení chyby formou oddílu v ECR obálce. Pro zpětnou kompatibilitu je zajištěno generování původních zpráv. Hlavní změny ECR obálky proti verzi 1.5 jsou následující: - Odstraněny režimově vynucené atributy (např. JmenoSouboru pro ECRFTP) a nahrazeny volnější strukturou atributů zprávy. <Zprava><Atributy><Atribut Nazev="JmenoSouboru" Hodnota="soubor"/> - Uvolněna sekce Ucastnici tak, aby mohl být počet účastníků větší než doposud podporovaní 3. <Ucastnici><Ucastnik Role="deklarant" Identifikator="05CZ444444.." GuidScenare="" DatumCas="" AplikaceID="dd" AplikaceVerze="1.0/> - Umožněno používání XML signature. - Umožněno používání XML encryption. - Lze přidat i atributy, které nejsou v době nynějšího návrhu známy. - Přidána část pro podporu hlášení o chybě. - Původní element <Zprava> rozdělen do dvou <Hlavicka> a <Zprava> podle toho, zda se informace týkají obálky nebo přenášené zprávy. 2.2. SYSTÉM KONTROL Na příchozí ECR obálku jsou aplikovány kontroly specifické dle komunikační domény. Patří mezi ně zejména: - Kontrola proti XML schématu ECR obálky pro konkrétní doménu. - Logická kontrola vyplňování ECR obálky proti přenášeným datům. - Logická kontrola vyplněných údajů proti registrům komunikačních subjektů. - Rozšifrování a ověření zaručeného elektronického podpisu. Dále popsaný způsob vyplňování je obecně platný, nicméně pro jednotlivé komunikační domény může být zúžen a zpřísněn. Strana 5 z 19
2.3. ECR OBÁLKA 2.0 Základní přehled o možných elementech ECR obálky dává následující tabulka. Název elementu XML typ Datový typ Povinnost vyplňování směrem do ECR brány Povinnost vyplňování směrem z ECR brány Hlavicka Element Povinný [1] Povinný [1] GuidObalky Atribut UUID Povinný Povinný VerzeObalky Atribut string[10] Povinný Povinný Domena Atribut string[20] Povinný Povinný Zprava Element Povinný [1] Povinný [1] Typ Atribut string[30] Povinný Povinný HlavniID Atribut string[40] Volitelný Volitelný VedlejsiID Atribut string[40] Volitelný Volitelný Atributy Element Volitelný [1] Volitelný [1] Popis Element s informacemi o obálce. Unikátní identifikátor jednoznačně určující právě jednu instanci ECR obálky. Označení verze ECR obálky. Jméno komunikační domény (agendy), pro kterou je určena datová výměna. Element s informacemi o přenášené zprávě. Jméno přenášené zprávy, typicky je jím kořenový element obalovaného XML. Hlavní identifikátor přenášené zprávy. Vedlejší identifikátor přenášené zprávy. Seznam doplňkových atributů. Atribut Element Volitelný [1- n] Volitelný [1- n] Doplňkový atribut. Nazev Atribut string[20] Povinný Povinný Hodnota Atribut string[256] Povinný Povinný RozsireneInformace Element Volitelný [1] Volitelný [1] Název doplňkového atributu. Hodnota doplňkového atributu. Místo, kam lze uložit další dodatečné informace. Atribut Element Volitelný [1- n] Volitelný [1- n] Doplňkový atribut. Nazev Atribut string[20] Povinný Povinný Hodnota Atribut string[256] Povinný Povinný Název doplňkového atributu. Hodnota doplňkového atributu. Strana 6 z 19
Ucastnici Element Povinný [1] Povinný [1] Ucastnik Element Povinný [1-n] Povinný [1-n] Role Atribut string[20] Povinný Povinný Identifikator Atribut string[40] Volitelný Volitelný GuidScenare Atribut UUID Volitelný Volitelný DatumCas Atribut datetime Volitelný Volitelný AplikaceID Atribut string[50] Volitelný Volitelný AplikaceVerze Atribut string[20] Volitelný Volitelný SMIMEZprava Element string Volitelný [1] Volitelný [1] XMLZprava Element Volitelný [1] Volitelný [1] SignatureContext Atribut string[15] Volitelný [1] Volitelný [1] Data Element Volitelný [1] Volitelný [1] Seznam stran, které se účastní datové výměny (např. deklarant, VAN operátor, GŘC atd.). Komunikační strana. Role komunikační strany (deklarant, VAN, zástupce, PVS, VVAN, GRC) v předem definovaných řetězcích. Jednoznačný identifikátor komunikující strany. Označení scénáře v rámci agendy komunikující strany. Datum a čas průchodu obálky agendou komunikující strany. Označení aplikace, která se o průchod komunikující stranou stará. Označení verze aplikace, která se o průchod komunikující stranou stará. Element pro umístění přenášené zprávy v SMIME formátu. Element pro umístění přenášené zprávy v XML formátu. Výčtový typ určující rozsah prováděného zaručeného elektronického podpisu. Může nabývat hodnot "envelope" (výchozí hodnota) a "datacontent". Element obsahuje XML data v otevřeném tvaru. Strana 7 z 19
EncryptedData Element Volitelný [1] Volitelný [1] Signature Element Volitelný [1] Volitelný [1] BinarníZprava Element Volitelný [1] Volitelný [1] SignatureContext Atribut string[15] Volitelný [1] Volitelný [1] Data Element string Volitelný [1] Volitelný [1] EncryptedData Element Volitelný [1] Volitelný [1] Signature Element Volitelný [1] Volitelný [1] Chyba Element Nesmí být Volitelný [1] PopisChyby Element obsahuje XML data v šifrovaném tvaru dle doporučení W3C - XML encryption. Umístění informací o elektronickém podpisu dle doporučení W3C - XML signature. Element pro umístění přenášené binární zprávy kódované jako base64 Výčtový typ určující rozsah prováděného zaručeného elektronického podpisu. Může nabývat hodnot "envelope" (výchozí hodnota) a "datacontent". Element obsahuje binární data v kódování base64. Element obsahuje binární data v šifrovaném tvaru dle doporučení W3C - XML encryption. Umístění informací o elektronickém podpisu dle doporučení W3C - XML signature. Pokud při zpracování došlo k chybě, budou zde umístěny příslušné informace. Kod Atribut int Nesmí být Povinný Číselný kód chyby. GuidPuvodniObalky Atribut UUID Nesmí být Volitelný TypChyby Atribut string[20] Nesmí být Povinný Obsahuje GUID původní obálky, ke které se chyba vztahuje, pokud jí je možné načíst. Označení typu chyby, resp. zdroje chyby. Popis Atribut string[256] Nesmí být Volitelný Popis chyby. Data Element string Nesmí být Volitelný [1] Pokud je to k popisu chyby nutné, jsou zde uvedena data chyby. Strana 8 z 19
Signature Element Nesmí být Volitelný [1] Umístění informací o elektronickém podpisu dle doporučení W3C - XML signature pro element hlášené chyby 2.3.1. Element Hlavicka Tento element je povinný a obsahuje hlavní informace o agendě a datové výměně. Každá instance ECR obálky musí mít vygenerovaný unikátní GUID (UUID) identifikátor v atributu GuidObalky, uvedenou komunikační doménu v atributu Domena a uvedenou identifikaci verze obálky, což je v současné době konstanta 2.0 v atributu VerzeObalky 2.3.2. Element Zprava Tento povinný element zapouzdřuje informace o konkrétní přenášené zprávě nebo datové výměně. Udává se Typ datové výměny, což je u XML komunikací zpravidla jméno kořenového elementu přenášené zprávy. Dále se uvádí volitelně až dva identifikátory z přenášené zprávy, které mohou mít význam pro směrování zprávy. Způsob vyplňování elementů HlavniID a VedlesiID je určen doménou a typem výměny, nicméně ve většině domén se požaduje uvedený alespoň jeden z těchto identifikátorů. V některých případech je nutné uvádět v obálce ještě další atributy a pro ně je určena volitelná struktura Atributy/Atribut. 2.3.3. Element RozsireneInformace Tento nepovinný element je v současné době nepoužíván a rezervován pro případná rozšíření ECR obálky v budoucích doménách. 2.3.4. Element Ucastnici Povinný element obsahuje informace o všech zúčastněných komunikačních partnerech. Každý zúčastněný komunikační partner musí pro průchodu zprávy jeho systémem přidat jeden podelement Ucastník a uvést svoji roli do atributu Role, svoji identifikaci do atributu Identifikator, datum a čas průchodu zprávy jeho systémem do atributu DatumCas a informace o programovém modulu, který obálku zpracovával, do atributů AplikaceID a AplikaceVerze. Tři nejčastější současné role jsou deklarant (vyplní deklarant, resp. jeho SW), operator (vyplní např. VAN operátor) a grc (vyplní ECR brána). Dále se dle komunikačních mechanizmů mohou vyskytnout i role vvan a pvs. Všechny role kromě grc musí povinně vyplnit všech 5 atributů kromě volitelného GuidScenare, což je GUID, u něhož ECR brána zaručuje, že ho v nezměněné podobě vrátí v odpovědi ve stejné sekci. ECR brána vyplňuje pouze roli a datum a čas a volitelně dle domény identifikaci scénáře. V odpovědi ECR brány se všechny sekce vracejí, neuvádí se však u nich zpravidla již informace o programovém modulu. Strana 9 z 19
2.3.5. Datový přenášený obsah Příchozí ECR obálka musí obsahovat právě jeden z elementů SmimeZprava, XmlZprava nebo BinarniZprava. V těchto elementech je samotný přenášený datový obsah. 2.3.5.1. ELEMENT SMIMEZPRAVA Je udržován pro zpětnou kompatibilitu a obsahuje stejný obsah jako v případě starší ECR obálky 1.5. Pro nové domény již není tento způsob komunikace podporován. 2.3.5.2. ELEMENT XMLZPRAVA Element se uvede, mají-li přenášená data formát XML. Ta jsou pak přímo vložena jako podelement elementu Data. Zde je důležité je oddělit jiným jmenným prostorem nebo uvedením prázdného, aby nebyla interpretována v kontextu jmenného prostoru ECR obálky. Mají-li být data šifrována, umístí se do struktury XML encryption do elementu EncryptedData. Do elementu Signature je možné uvést zaručený elektronický podpis. Obsah elementů EncryptedData a Signature je určen doporučeními W3C a popsán v kapitole 3. 2.3.5.3. ELEMENT BINARNIZPRAVA Element se uvede, mají-li přenášená data binární nebo jinou než XML povahu. Ta jsou pak přímo zakódovaná v base64 jako textová hodnota elementu Data. Mají-li být data šifrována, umístí se do struktury XML encryption do elementu EncryptedData. Do elementu Signature je možné uvést zaručený elektronický podpis. Obsah elementů EncryptedData a Signature je určen doporučeními W3C a popsán v kapitole 3. 2.3.6. Element Chyba Tento element nesmí být uveden v příchozí zprávě. Je vždy generován ECR bránou a informuje o některém z problémů, ke kterým může při příjmu, ověřování a kontrole zprávy dojít. Odpovídá-li ECR brána zprávou ECR obálka 2.0 s uvedeným elementem Chyba, není uveden žádný z datových elementů z kapitoly 2.3.5. Element má vždy na svém podelementu PopisChyby uveden číselný Kod chyby a její zdroj TypChyby. Volitelně může být přítomen atribut GuidPuvodniObalky, jenž odkazuje na identifikaci ECR obálky, k níž je chyba hlášena. Rovněž volitelně je obsažen Popis chyby a u některých chyb i další doprovodná informace v podobě chybných dat v textovém elementu Data. U agend, které vyžadují opatření chybových zpráv zaručenou elektronickou značkou (chyba je právně závaznou zprávou), je tato značka přítomna v elementu Signature a strukturou odpovídá kapitole 3.2.2. Seznam chyb, které může ECR brána aktuálně vracet, je uveden v kapitole 4. Strana 10 z 19
3. Formáty zabezpečení dat ECR obálky 3.1. ŠIFROVÁNÍ Šifrování v ECR obálce se plně řídí doporučením W3C XML Encryption (http://www.w3.org/tr/xmlenccore/). Je-li datový obsah šifrován, použije se jako vstup pro XML encryption element Data. Ten je následně nahrazen elementem EncryptedData už ve jmenném prostoru příslušného W3C doporučení. Příklad použitého šifrování je na následujícím zkráceném XML fragmentu: <XmlZprava> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <X509Data> <X509IssuerSerial> <X509IssuerName>CN=VM-BTS CA, OU=Technologie, O=Aquasoft s.r.o., L=Prague, S=Czech Republic, C=CZ</X509IssuerName> <X509SerialNumber>290779403689187849797704</X509SerialNumber> </X509IssuerSerial> </X509Data> </KeyInfo> <CipherData> <CipherValue>RkSilm7TlI2Nzc+Y+OVm+2KT0WoQtB7wky+aAtfowWxecq+9jV/huXTQ80DdMhT9OOvuE h1uja1oa1norrzsta==</ciphervalue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>Yg82r6P+QvWTYhujTR0NWm4AoRvbXEi6Oc6pTw+4zFM3c0MeAhZ+. AD7GHNDIgMPVS6fqfwkUifoEgJgmJFrVEcc27I3fQvYj7p5Z99iOV7GaYVVJes+GrO/UbaIQ==</Cipher Value> </CipherData> </EncryptedData> </XmlZprava> Strana 11 z 19
3.2. ZARUČENÝ ELEKTRONICKÝ PODPIS Zaručený elektronický podpis se v ECR obálce plně řídí doporučením W3C XML Signature (http://www.w3.org/tr/2002/rec-xmldsig-core-20020212/). Použití zaručeného elektronického podpisu nad otevřeným XML přináší jako výhodu fakt, že - pokud nejsou šifrována jsou data čitelná. To usnadňuje případné dohledávání problémů. Při používání XML signature je nutné mít na paměti zejména následující fakta: 1) Je vždy nutné provést kánonizaci XML a uvést ji ve struktuře podpisu. 2) Předmětem podpisu je vždy element SignatureInfo, který obsahuje miniaturu (SHA2 hash) podepisovaného dokumentu. 3) Znaky typu mezera, tabulátor a formátování konce řádku jsou pro XML signature významnými znaky, kanonizace je neodstraňuje a jejich změna vede na porušení podpisu. Mezi procesem podepsání zprávy a ověření podpisu tedy nesmí dojít například k přeformátování XML. 4) Pojmenování jmenných prostorů a jejich hodnoty jsou pro XML signature významnými znaky, kánonizace s nimi nijak nepracuje a nesmí být měněny. Je také nutné vést v patrnosti, že přidání pojmenovaného jmenného prostoru se promítne v DOM reprezentaci do všech podřízených, které tento jmenný prostor zdědí, a to může narušit podpis, přestože nadřazený element nebyl předmětem podpisu. V ECR bráně je vždy předlohou pro výpočet miniatury samotná přenášená zpráva uvnitř elementu Data, nikoliv element Data samotný. Součástí zaručeného elektronického podpisu musí být i veřejná část certifikátu použitelná pro ověření. Z pohledu doporučení W3C podporuje ECR brána následující typy XML signature: 3.2.1. Typ Enveloping Tento typ znamená, že přenášená zpráva není umístěna jako potomek elementu Data (ten zůstává prázdný), ale je obsažena přímo jako definovaný objekt uvnitř struktury Signature, která je potomkem elementu XmlZprava nebo BinarniZprava. Při tomto použití nemusí být předepsána žádná transformace, ale výsledek nelze šifrovat, protože došlo v přemístění dat. Příklad uvádí následující fragment: <XmlZprava> <Data /> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> <Reference URI="#dataID"> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <DigestValue>CChHPUGq/0VpQvZ4oTQTJQkv3a/mLuXGiQ6ieAcsS8Y=</DigestValue> </Reference> Strana 12 z 19
</SignedInfo> <SignatureValue>SUxkLyHkuiYi/im23PgdVt1NipupFHOvntkGr6ohjeW7AHCShPBA+8FJNPNC8mOHO8f FAdatQyntj59XBF7WEU6gYbcomhhTDpeXz3ZZU2jEC1v5Ji5wslHt9pUnb5BpYxXn8fUxlnbGU8H27PW nx/g6zo0ouy7w/fkldapwf81p/iwq4es31awyewuqgyc34fcbcvsuidfl2hd0rvg56czloqg4nkclefl ATNzU4KAujiquj0U4/DKUk40Fmidu/Mai8XYyGGToLpa0v3gfeL59p++h1kliIOEfzf1BwDZBgGkfGVySjG OOhA95kBDUgciiaj2Yxm3TYphokri+jg==</SignatureValue> <KeyInfo> <X509Data> <X509Certificate>MIIEPTCCA..+m2BYA21</X509Certificate> </X509Data> </KeyInfo> <Object Id="dataID"> <CZ384A xmlns=""> <AOSD> <AOSD01>08CZ1761003JZUV4J2D17</AOSD01> </AOSD> </CZ384A> </Object> </Signature> </XmlZprava> 3.2.2. Typ Enveloped, mimo zprávu, SignatureContext = envelope Tento typ znamená, že je podpis vytvořen v kontextu celé ECR obálky (v době podpisu již byla sestavena) a element Signature je umístěn jako potomek elementu XmlZprava nebo BinarniZprava. Vždy musí být uvedena transformace enveloped-signature a xpath, která určuje cestu k podepisovaným datům. Vzhledem k tomu, že použití xpath transformace je pro XML zprávy se složitější strukturou velmi výpočetně náročné, je tento typ podpisu striktně omezen jen na typ ECR obálky s elementem BinarniZprava. <BinarniZprava> <Data> </Data> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"> Strana 13 z 19
<XPath xmlns:transns="http://www.cs.mfcr.cz/schemas/ecrobalka/v_2.0">ancestor-orself::transns:data[/transns:ecrobalka/transns:binarnizprava/transns:data =.] </XPath> </Transform> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue>uES8qbp0Fejuq9JbOpyl1ik7xDQ23NNIWhR0McWUlyU=</DigestValue> </Reference> </SignedInfo> <SignatureValue> </SignatureValue> <KeyInfo> <X509Data> <X509Certificate> <X509Certificate> </X509Data> </KeyInfo> </Signature> </BinarniZprava> 3.2.3. Typ Enveloped, mimo zprávu, SignatureContext = datacontent Princip tohoto podpisu je stejný jako v případě 3.2.2 s tím rozdílem, že při podpis vznikl nad přenášenou zprávou, která nebyla ještě vložena do ECR obálky. Stejný postup se pak musí aplikovat při ověřování podpisu. Protože toto není výchozí nastavení atributu SignatureContent, musí být na elementu XmlZpráva uveden. <XmlZprava SignatureContext="datacontent"> </XmlZprava> Stejně jako u 3.2.2 platí restrikce pouze na použití s elementem BinarniZprava. 3.2.4. Typ Enveloped, uvnitř zprávy, SignatureContext = envelope Tento typ znamená, že je podpis vytvořen v kontextu celé ECR obálky (v době podpisu již byla sestavena) a element Signature je umístěn jako potomek kořenového elementu podepisované zprávy. Vždy musí být uvedena transformace enveloped-signature. <XmlZprava> <Data> <CZ384A xmlns=""> <AOSD> <AOSD01>08CZ1761003JZUV4J2D17</AOSD01> </AOSD> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> Strana 14 z 19
<Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <DigestValue>l8Xr8bXjaWCzqLY/nr8pRmlVxISa1T92onqlArTfm1A=</DigestValue> </Reference> </SignedInfo> <KeyInfo> <SignatureValue>UoaZzySMllvx3O9EY4GS/7XmyNHQSh4mQoWIOFmu7cOz6z7tdslpqHTckRp1qzTByH x8tkawx4qtqfdk3a9whviy614bxejnzu96npjy9wi6xygreo2lzqslqffrftndeqfxz9hkgawaau5tf8v CnsWyHamPDKBXhphU3PDcZmcJfmeItWh9d8z7RAlH3yXVSJ51BLyQ36qEQatPuyyTDarzCL1qBKMC/2 uuzwgfcgb5qgufdjtpcumgx7wgx2jsfkgkwbytgf9z8b0n4zgiexr4uustlqod7nysqv/zm407einq1b jizmne3lw6l2zcarprdqskxhzckdicxavmxw==</signaturevalue> <X509Data> <X509Certificate>MIIEPTCCAA..+m2BYA21</X509Certificate> </X509Data> </KeyInfo> </Signature> </CZ384A> </Data> </XmlZprava> 3.2.5. Typ Enveloped, uvnitř zprávy, SignatureContext = datacontent Princip tohoto podpisu je stejný jako v případě 3.2.4 s tím rozdílem, že při podpis vznikl nad přenášenou zprávou, která nebyla ještě vložena do ECR obálky. Stejný postup se pak musí aplikovat při ověřování podpisu. Protože toto není výchozí nastavení atributu SignatureContent, musí být na elementu XmlZpráva uveden. <XmlZprava SignatureContext="datacontent"> </XmlZprava> 3.3. KOMBINACE ZARUČENÉHO ELEKTRONICKÉHO PODPISU A ŠIFROVÁNÍ Při kombinaci obou zabezpečení se nejprve provede vytvoření zaručeného elektronického podpisu a následně se provede šifrování elementu Data. V tomto případě nelze použít typ XML Signature popsaný v kapitole 3.2.1, protože by data uvnitř elementu Signature ve výsledku nebyla zašifrována. Při zpracování příchozí zprávy se postupuje obráceně, nejprve se dešifruje a u výsledku ověří podpis. Strana 15 z 19
Strana 16 z 19
4. Příloha A číselník chyb odesílaných ECR bránou Kód 0 1 2 3 4 5 6 7 11 12 13 14 15 16 Text chyby (anglicky) Popis chyby Invalid incoming XML Neplatné příchozí XML (zpráva není XML nebo neodpovídá schématu ECR obálka 2.0). Internal server error Vnitřní (blíže neurčená) chyba serveru. Invalid incoming XML message type Neznámý typ zprávy v příchozím XML. Message domain is not valid Doména uvedená v ECR obálce není známa. ID for declarant is unknown ID deklaranta není známo. Nejčastější příčinou tohoto stavu je, že deklarant nemá správně nastavené komunikační parametry v systému ZJP (např. ZJP obsahuje neplatný certifikát). VAN operator $ is not allowed for domain $ VAN operátor nemá povoleno posílat zprávy do této domény. At least primary or secondary identifier have to be filled in V ECR obálce je nutno uvést alespoň jeden identifikátor (primární nebo sekundární). Message $ is not allowed to pass through in the domain $ Zprávu daného typu nelze poslat do této domény. Load from MIME failed in the $ phase. Chyba při dekódování zprávy z formátu MIME zpráva nemá korektní MIME formát. Decrypt SMIME/XML failed with: $ Chyba při dešifrování zprávy ve formátu SMIME nebo XML Encryption. Verify sign SMIME/XML failed due to an incorrect sign format with: $ Chyba při ověření zprávy ve formátu SMIME nebo XML Signature. Verify sign SMIME/XML failed due to message changes Chyba při ověření zprávy ve formátu SMIME nebo XML Signature: zpráva byla po podpisu modifikována. Verify sign SMIME/XML failed due to the incorrect certificate chain or certificate revocation. Certificate number: $ Chyba při ověření podpisu zprávy. Certifikát použitý pro podpis je neplatný (nedůvěryhodný certifikát; certifikát, jemuž ještě nezačala/skončila platnost; certifikát je uveden v seznamu odvolaných certifikátů; ). Verify sign SMIME/XML failed due to the unauthorized certificate. Certificate number: $ Chyba při ověření podpisu zprávy. Certifikát použitý pro podpis není uveden v systému ZJP. Strana 17 z 19
17 18 19 20 21 40 53 54 55 56 57 58 Decoding base64 in MIME failed in the $ phase Chyba při dekódování base64 formátu SMIME zprávy - zpráva neobsahuje platný řetězec ve formátu base64. Incorrect data security found: $ Neplatné zabezpečení dat. Tato chyba vzniká například pokud je zaslaná zpráva pouze digitálně podepsána, ale pro tento druh komunikace je vyžadováno i šifrování zprávy. Více viz podrobnosti chyby. Incorrect data security found: MPSV identifier expected in sign certificate Neplatné zabezpečení dat. Certifikát použitý pro podepsání zprávy neobsahuje MPSV identifikátor, ačkoliv je pro danou doménu vyžadován. Strong RSA key (2048bit) and SHA2 digest required Je vyžadován podpis zprávy algoritmem rodiny SHA2 za použití certifikátu s minimální délkou klíče 2048 bitů. Invalid certificate asymmetric algorithm: $ Certifikát, jímž byla zpráva podepsána, používá nepovolený asymetrický algoritmus. Povolené algoritmy jsou RSA a DSA. Invalid certificate signature algorithm: $ Certifikát, jímž byla zpráva podepsána, byl certifikační autoritou podepsán nepovoleným algoritmem. Povolené algoritmy jsou SHA-256, SHA-384 a SHA-512. Cannot write binary data from SMIME to envelope Obsah binární zprávy zaslané pomocí SMIME formátu nelze po dešifrování/ověření podpisu zapsat do elementu BinarníZprava ECR obálky. Cannot write XML data from SMIME to envelope Obsah zprávy zaslaný ve formátu SMIME nelze po dešifrování/ověření podpisu transformovat do elementu Data ECR obálky. Nejčastější příčinou je neplatný formát XML obsaženého v SMIME zprávě nebo toto XML obsahuje znak neplatný pro kódování uvedené v XML deklaraci přenášené zprávy. Envelope is neither binary or xml ECR obálka neobsahuje ani element BinarniZprava ani element XmlZprava. XML schema general validation error Zaslané XML neodpovídá schématu EcrObalka 2.0. Invalid child element Element zaslané ECR obálky obsahuje nedovolený podelement. Incomplete content Element zaslané ECR obálky neobsahuje povinný podelement nebo atribut. Value too short Hodnota daného atributu v zaslané ECR obálce je příliš krátká. Value too long Hodnota daného atributu v zaslané ECR obálce je příliš dlouhá. Invalid datatype Hodnota daného atributu v zaslané ECR obálce je nesprávného typu. Strana 18 z 19
59 60 70 71 72 73 74 Pattern constraint failed Hodnota daného atributu v zaslané ECR obálce neodpovídá vzoru definovanému pro tento atribut. Attribute missing V zaslané ECR obálce chybí povinný atribut. Primary identifier is not equal to inner message Primární identifikátor v ECR obálce (HlavniID) neobsahuje stejnou hodnotu jako primární identifikátor v zaslané zprávě. Secondary identifier is not equal to inner message Sekundární identifikátor uvedený v ECR obálce (VedlejsiID) neobsahuje stejnou hodnotu jako sekundární identifikátor v zaslané zprávě. Message type is not equal to inner message Typ zprávy uvedený v ECR obálce není roven názvu kořenového elementu přenášené zprávy. Unable to perform inner XML controls in order to incomplete inner message Nelze provést kontrolu na shodu primárních nebo sekundárních identifikátorů v ECR obálce a v přenášené zprávě z důvodu nekompletní přenášené zprávy. Invalid use of XPath transformation XPath transformace není v tomto případě povolena (její použití je povoleno jen s elementem BinarniZprava) Strana 19 z 19