Digital signatures in the Czech Republic The digital signature law in the Czech Republic is based on the act number 227/2000 (updated by 13 acts since then). The law itself uses quite general terms and tries to be technology independent. The technological details are hidden in other regulations. Let’s first look at some terms as defined by the law on digital signatures. § 2 Vymezení některých pojmů Pro účely tohoto zákona se rozumí a) elektronickým podpisem údaje v elektronické podobě, které jsou připojené k datové zprávě nebo jsou s ní logicky spojené a které slouží jako metoda k jednoznačnému ověření identity podepsané osoby ve vztahu k datové zprávě, b) zaručeným elektronickým podpisem elektronický podpis, který splňuje následující požadavky 1. je jednoznačně spojen s podepisující osobou, 2. umožňuje identifikaci podepisující osoby ve vztahu k datové zprávě, 3. byl vytvořen a připojen k datové zprávě pomocí prostředků, které podepisující osoba může udržet pod svou výhradní kontrolou, 4. je k datové zprávě, ke které se vztahuje, připojen takovým způsobem, že je možno zjistit jakoukoliv následnou změnu dat, c) elektronickou značkou údaje v elektronické podobě, které jsou připojené k datové zprávě nebo jsou s ní logicky spojené a které splňují následující požadavky 1. jsou jednoznačně spojené s označující osobou a umožňují její identifikaci prostřednictvím kvalifikovaného systémového certifikátu, 2. byly vytvořeny a připojeny k datové zprávě pomocí prostředků pro vytváření elektronických značek, které označující osoba může udržet pod svou výhradní kontrolou, 3. jsou k datové zprávě, ke které se vztahují, připojeny takovým způsobem, že je možné zjistit jakoukoli následnou změnu dat, ... i) kvalifikovaným poskytovatelem certifikačních služeb poskytovatel certifikačních služeb, který vydává kvalifikované certifikáty nebo kvalifikované systémové certifikáty nebo kvalifikovaná časová razítka nebo prostředky pro bezpečné vytváření elektronických podpisů (dále jen "kvalifikované certifikační služby") a splnil ohlašovací povinnost podle § 6, j) akreditovaným poskytovatelem certifikačních služeb poskytovatel certifikačních služeb, jemuž byla udělena akreditace podle tohoto zákona, k) certifikátem datová zpráva, která je vydána poskytovatelem certifikačních služeb, spojuje data pro ověřování elektronických podpisů s podepisující osobou a umožňuje ověřit její identitu, nebo spojuje data pro ověřování elektronických značek s označující osobou a umožňuje ověřit její identitu, l) kvalifikovaným certifikátem certifikát, který má náležitosti podle § 12 a byl vydán kvalifikovaným poskytovatelem certifikačních služeb, m) kvalifikovaným systémovým certifikátem certifikát, který má náležitosti podle § 12a a byl vydán kvalifikovaným poskytovatelem certifikačních služeb, Certifikát (certificate) – binding public key to a subject, this is what we generally know as a certificate. Kvalifikovaný certifikát (qualified certificate) – certificate having some mandatory fields (see §12) issued by qualified certificate provider. Poskytovatel certifikačních služeb (certificate provider) – anyone who issues certificates (e.g. you or me). Kvalifikovaný poskytovatel certifikačních služeb (qualified certificate provider) – certificate provider that fulfills some rules and informs the ministry about its activities. Akreditovaný poskytovatel certifikačních služeb (accredited certificate provider) – a certificate provider that fulfills some rules and obtains an accreditation from the ministry. Elektronický podpis (electronic signature) is basically anything which identifies the signer (e.g. nick name). It does not have much value. Zaručený elektronický podpis (secured electronic signature) is basically a digital signature. Elektronická značka (electronic sign/mark) – technologically the same as digital signature, but every signature does not have to be manually read and approved by the signing subject (qualified electronic sign/mark is based on system certificate (see §12a) instead of certificate (see §12)) Zaručený elektronický podpis založený na kvalifikovaném certifikátu vydaném akreditovaným poskytovatelem certifikačních služeb (secured electronic signature based on a qualified certificate issued by an accredited certificate provider) – the only signature accepted by governmental offices (veřejná moc), see §11. § 12 Náležitosti kvalifikovaného certifikátu (1) Kvalifikovaný certifikát musí obsahovat: a) označení, že je vydán jako kvalifikovaný certifikát podle tohoto zákona, b) v případě právnické osoby obchodní firmu nebo název a stát, ve kterém je kvalifikovaný poskytovatel usazen; v případě fyzické osoby jméno, popřípadě jména, příjmení, případně dodatek, a stát, ve kterém je kvalifikovaný poskytovatel usazen, c) jméno, popřípadě jména, a příjmení podepisující osoby nebo pseudonym s příslušným označením, že se jedná o pseudonym, d) zvláštní znaky podepisující osoby, vyžaduje-li to účel kvalifikovaného certifikátu, e) data pro ověřování podpisu, která odpovídají datům pro vytváření podpisu, jež jsou pod kontrolou podepisující osoby, f) elektronickou značku poskytovatele certifikačních služeb založenou na kvalifikovaném systémovém certifikátu poskytovatele, který kvalifikovaný certifikát vydává, g) číslo kvalifikovaného certifikátu unikátní u daného poskytovatele certifikačních služeb, h) počátek a konec platnosti kvalifikovaného certifikátu, i) případně údaje o tom, zda se používání kvalifikovaného certifikátu omezuje podle povahy a rozsahu jen pro určité použití, j) případně omezení hodnot transakcí, pro něž lze kvalifikovaný certifikát použít. (2) Omezení pro použití kvalifikovaného certifikátu podle odstavce 1 písm. i) a j) musí být zjevná třetím stranám. (3) Další osobní údaje smí kvalifikovaný certifikát obsahovat jen se svolením podepisující osoby. § 12a Náležitosti kvalifikovaného systémového certifikátu Kvalifikovaný systémový certifikát musí obsahovat a) označení, že je vydán jako kvalifikovaný systémový certifikát podle tohoto zákona, b) v případě právnické osoby obchodní firmu nebo název a stát, ve kterém je kvalifikovaný poskytovatel usazen; v případě fyzické osoby jméno, popřípadě jména, příjmení, případně dodatek, a stát, ve kterém je kvalifikovaný poskytovatel usazen, c) jednoznačnou identifikaci označující osoby, případně prostředku pro vytváření elektronických značek, d) data pro ověřování elektronických značek, která odpovídají datům pro vytváření elektronických značek, jež jsou pod kontrolou označující osoby, e) elektronickou značku poskytovatele certifikačních služeb založenou na kvalifikovaném systémovém certifikátu poskytovatele, který kvalifikovaný systémový certifikát vydává, f) číslo kvalifikovaného systémového certifikátu unikátní u daného kvalifikovaného poskytovatele certifikačních služeb, g) počátek a konec platnosti kvalifikovaného systémového certifikátu, h) omezení pro použití kvalifikovaného systémového certifikátu, přičemž tato omezení musí být zjevná třetím stranám. §12b Náležitosti kvalifikovaného časového razítka Kvalifikované časové razítko musí obsahovat a) číslo kvalifikovaného časového razítka unikátní u daného kvalifikovaného poskytovatele certifikačních služeb, b) označení pravidel, podle kterých kvalifikovaný poskytovatel certifikačních služeb kvalifikované časové razítko vydal, c) v případě právnické osoby obchodní firmu nebo název a stát, ve kterém je kvalifikovaný poskytovatel usazen; v případě fyzické osoby jméno, popřípadě jména, příjmení, případně dodatek, a stát, ve kterém je kvalifikovaný poskytovatel usazen, d) hodnotu času, která odpovídá koordinovanému světovému času při vytváření kvalifikovaného časového razítka, e) data v elektronické podobě, pro která bylo kvalifikované časové razítko vydáno, f) elektronickou značku kvalifikovaného poskytovatele certifikačních služeb, který kvalifikované časové razítko vydal. More technical details were specified in “Vyhláška ÚOOÚ č. 366/2001”. The annexes 1 and 2 quote which asymmetric algorithms can be used and their parameters: The last 2 algorithms cannot be used for CA keys (for a clear reason). For the annex number 2 special explanation was published by the ministry. This specification changed in 2006 (“Vyhláška č. 378/2006 Sb”) and now only a reference to ETSI documents (standards) is made: “Tyto kryptografické algoritmy a jejich parametry musí odpovídat požadavkům uvedeným v ETSI SR 002 176 - Electronic Signatures and Infrastructures (ESI); Algorithms and Parameters for Secure Electronic Signatures (ALGO paper) nebo TS 102 176-1 – ESI; Algorithms and Parameters for Secure Electronic Signatures; Part 1: Hash functions and asymmetric algorithms (ALGO paper) a TS 102 176-2 – ESI; Algoritms and Parameters for Secure Electronic Signatures; Part 2: Secure channel protocols and algorithms for signature creation device (ALGO paper).” „Kvalifikovaní poskytovatelé certifikačních služeb ukončí vydávání kvalifikovaných certifikátů s algoritmem SHA-1 do 31. 12. 2009. Od 1. 1. 2010 budou tito poskytovatelé vydávat kvalifikované certifikáty podporující některý z algoritmů SHA-2.“ Basically for the signed message PKCS#7 format is used, for email delivery S/MIME encapsulation is used (PGP and other formats are not supported). Technicalities Technically the digital signature has a form of the CMS (cryptographic message syntax) SignedData structure. The CMS as a successor of PKCS#7 is defined in RFC 2630. The ASN.1 syntax of SignedDate is: EncapsulatedContentInfo ::= SEQUENCE { eContentType ContentType, eContent [0] EXPLICIT OCTET STRING OPTIONAL } ContentType ::= OBJECT IDENTIFIER id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } SignedData ::= SEQUENCE { version CMSVersion, digestAlgorithms DigestAlgorithmIdentifiers, encapContentInfo EncapsulatedContentInfo, certificates [0] IMPLICIT CertificateSet OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos } DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier SignerInfos ::= SET OF SignerInfo SignerInfo ::= SEQUENCE { version CMSVersion, sid SignerIdentifier, digestAlgorithm DigestAlgorithmIdentifier, signedAttrs [0] IMPLICIT SignedAttributes OPTIONAL, signatureAlgorithm SignatureAlgorithmIdentifier, signature SignatureValue, unsignedAttrs [1] IMPLICIT UnsignedAttributes OPTIONAL } SignerIdentifier ::= CHOICE { issuerAndSerialNumber IssuerAndSerialNumber, subjectKeyIdentifier [0] SubjectKeyIdentifier } SignedAttributes ::= SET SIZE (1..MAX) OF Attribute UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute Attribute ::= SEQUENCE { attrType OBJECT IDENTIFIER, attrValues SET OF AttributeValue } AttributeValue ::= ANY SignatureValue ::= OCTET STRING Assignments: a. Create a program that will prepare a digitally signed email in an opaque type of signature. The message can be just a single line of text. The output should be .eml file that can be opened in MS Outlook Express (or mutt). {10}