Copyright © 1997 RNDr. Libor Dostalek
 
 

Adresářová struktura

Aby nedošlo k nedorozumění, musím v úvodu zdůraznit, že slovo adresář zde není míněno jako adresář souborů, ale v původním významu. Potřebujete-li nějakou představu, pak si představte jako adresář bílé stánky telefonního seznamu.

Píšeme o certifikátech podle doporučení X.509. Avšak doporučení X.509 je jedním z řady doporučení X.500 až teoreticky X.599. Tato řada doporučení se zabývá konstrukcí obecné adresářové struktury. Pro ilustraci tuto strukturu můžeme přirovnat k pokusu o vydání bílých stránek všech telefoních seznamů Vesmíru v jedné publikaci.

V této adresářové struktuře může být popsán každý, tj. může být specifikována certifikační autorita i dokonce každý uživatel, který žádá o vydání certifikátu. Certifikační autorita i uživatel budou popsáni pomocí této struktury skládající se z adresářových záznamů.

Každý záznam adresářové struktury je složen z atributů, které jsou určitého typu a mají jednu nebo více hodnot.

Každý objekt v adresářové struktuře je určen tzv. rozlišitelným jménem (Distinguished Name). Právě rozlišitelná jména jsou i obsahem identifikátorů issuer a subject v certifikátu.

Rozlišitelné jméno je posloupnost (od kořene adresářového stromu) tzv. relativních rozlišitelných jmen (Relative Distinguished Name):


 

Rozlišitelné jméno

Nyní jsme se konečně dostali k typu Name z certifikátu. Typ Name popisuje rozlišitelné jméno. Rozlišitelné jméno je posloupnost relativních rozlišitelných jmen (RelativeDistinguishedName). Relativní rozlišitelné jméno je množina (nejčastěji jednoprvková) zkládající se z dvojic (tzv. AttributeValueAssertion). Prvním prvkem dvojice je identifikátor objektu a druhým hodnota.

Name ::= SEQUENCE OF RelativeDistinguishedName

RelativeDistinguishedName ::= SET OF AttributeValueAssertion

AttributeValueAssertion ::= SEQUENCE {AttributeType, AttributreValue}

AttributeType ::= OBJECT IDENTIFIER
AttributeType ::= ANY

Tolik k definici. Nyní se pokusím znovu vysvětlit co to je rozlišitelné jméno na příkladu.  Odmyslíme-li si na moment jazyk ASN.1, pak příklady relativních rozlišitelných jmen mohou být:

Country=CZ
Organization=PVT,a.s.
CommonName=Libor Dostálek

Běžně se v textovém zápisu názvy identifikátorů objektů zkracují (Country na C, Organization na O, CommonName na CN atd.). Takže naše přiklady  relativních rozlišitelných jmen bychom mohli napsat:

C=CZ
O=PVT,a.s.
CN=Libor Dostálek

Toto je však pouze textový zápis vhodný pro komunikaci mezi lidmi. Při komunikaci mezi počítači musíme tento zápis převést do kódování BER. Nejprve musíme uvést jakých hodnot nabývají identifikátory objektů používaných v rozlišitelných jménech.

Jelikož se pohybujeme v oblasti doporučení řady X, tak relativní rozlišitelná jména specifikuje doporučení X.520. Problém ovšem je, že tato doporučení nejsou šita pro Internet, takže např. s mailovou adresou jsou potíže. Doporučení řady X.400 specifikující elektronickou poštu se sice elektronickou poštou zabývají, ale adresa elektronické pošty podle doporučení X.400 je zcela odlišná od adresy elektronické pošty používané v Internetu (RFC822).

První norma, které chyběla specifikace internetovské poštovní adresy (tj. adresy prodle RFC822) byla norma PKCS#7 (PKCS jsou normy od RSA). Takže norma PKCS#7 si zavedla pro internetovskou e-mailovou adresu svůj identifikátor, který se používá dodnes.

Příklady nejčastěji používaných rozlišitelných jmen:
 
 
Identifikátor Zkr. Význam Název Hodnota Norma, 
která jej zavádí
Příklad ASN.1 & BER
(AttributeValueAssertion)
Country C Stát podle ISO 3166, tj. podle stejné normy jaká se používá pro top level domény DNS (CZ=Česká republika, SK=Slovensko, FJ=Fidži...) countryName {joint-iso-ccitt(2) ds(5) attributeType(4) 6} X.520 SEQUENCE
30 09
 OBJECT:countryName
 06 03 55 04 06
 PRINTABLESTRING:CZ
 13 02 43 5a
State or Province SP Nižší organizační jednotka státu. Např. spolková zěmě. stateOrProvinceName {2 5 4 8} X.520 SEQUENCE 
30 0d
 OBJECT:stateOrProvinceName
 06 03 55 04 08
 PRINTABLESTRING:Morava
 13 06 4d 6f 72 61 76 61
Locality L Místo (např. město) localityName {2 5 4 7} X.520 SEQUENCE
30 17
 OBJECT:localityName
 06 03 55 04 07
 PRINTABLESTRING:CeskeBudejovice
 13 10 43 65 73 6b 65 20 42 75 64 65 6a 6f 76 69 63 65
Common Name CN Název objektu pod kterým je místně znám. Např. u osob to může být jméno a příjmení. U serverů pak jejich DNS-jméno. commonName {2 5 4 3} X.520 SEQUENCE
30 15
 OBJECT:commonName
 06 03 55 04 03
 PRINTABLESTRING:LiborDostalek
 13 0e 4c 69 62 6f 72 20 44 6f 73 74 61 6c 65 6b 0
Organization O Název firmy organizationName {2 5 4 10} X.520 SEQUENCE
30 0f
 OBJECT:organizationName
 06 03 55 04 0a
 PRINTABLESTRING:PVT,a.s.
 13 08 50 56 54 2c 61 2e 73 2e
Organization Unit OU Název části firmy organizationUnitName {2 5 4 11} X.520
Street Address Ulice a číslo domu streetAddressName {2 5 4 9} X.520
Email Address Email Internetová adresa elektronické pošty. emailAddress {iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) pkcs-9(9) 1} PKCS#9 SEQUENCE
30 1d
 OBJECT:emailAddress
 06 09 2a 86 48 86 f7 0d 01 09 01
 IA5STRING:dostalek@pvt.net
 16 10 64 6f 73 74 61 6c 65 6b 40 70 76 74 2e 6e 65 74

Rozlišitelné jméno je pak sekvence relativních rozlišitelných jmen (ve směru od kořene). V textovém tvaru tedy např.:
C=CZ, O=PVT,a.s., OU=Vzdělávací centrum, CN=Libor Dostálek

Relativní rozlišitelná jména jsou uzly grafu, (absolutní) rozlišitelná jména (Name) jsou cestami v grafu:

Konkrétní případ celého Name v kódování BER je (upozorňuji, že relativní rozlišitelné jméno je byť jednoprvková množina dvojic objekt-hodnota):

   SEQUENCE
      30 5c
    SET
       31 0b
     SEQUENCE
        30 09
      OBJECT            :countryName
         06 03 55 04 06
      PRINTABLESTRING   :CZ
         13 02 43 5a
    SET
       31 11
     SEQUENCE
        30 0f
      OBJECT            :organizationName
         06 03 55 04 0a
      PRINTABLESTRING   :PVT a.s.
         13 08 50 56 54 20 61 2e 73 2e
    SET
       31 10
     SEQUENCE
        30 0e
      OBJECT            :commonName
         06 03 55 04 03
      PRINTABLESTRING   :CA-PVT1
         13 07 43 41 2d 50 56 54 31
    SET
       31 28
     SEQUENCE
        30 26
      OBJECT            :emailAddress
         06 09 2a 86 48 86 f7 0d 01 09 01
      IA5STRING         :ca-oper@p70x03.brn.pvt.cz
         16 19 63 61 2d 6f 70 65 72 40 70 37 30 78 30 33 2e 62 72 6e
         2e 70 76 74 2e 63 7a

Cvičení: Nakreslete si graficky stromovou strukturu z relativních rozlišitelných jmen uveseného rozlišitelného jména.

Poznámka: U certifikátů podle doporučení X.509 verze 1 certifikační autorita garantuje, aby položka subject, tj. rozlišitelné jméno uživatele, byla jednoznačná. Jinými slovy, aby CA nevydala dva certifikáty se stejným polem subject. (pochopitelně, že sériové číslo vydaného certifikátu  musí být také jednoznačné). Avšak vzhledem k omezené době platnosti certifikátu je nutné aby si uživatel nechával periodicky vystavovat certifikáty, tedy každý nově vydaný certifikát musí mít pozměněné pole subject.

Je třeba si také uvědomit, že i prošlé certifikáty jsou stále funkční, protože se používají pro ověřování platnosti dokumentů vydaných v době platnosti (nyní již prošlých) certifikátů.


Rozšířené certifikáty