V kryptografii je X.509 standard pro systémy založené na veřejném klíči (PKI, anglicky public key infrastructure) pro jednoduché podepisování. X.509 specifikuje mezi jiným formát certifikátů, seznamy zneplatněných certifikátů (CRL, anglicky certificate revocation list), parametry certifikátů a metody kontroly platností certifikátů.

Historie a využití

editovat

První verze standardu X.509 byla publikována 3. července 1988. Zpočátku byl X.509 vyvíjen pro adresářové služby X.500, které však nebyly nikdy plně implementovány. Dnes se zkratka X.509 obvykle používá pro X.509 verze 3 popsaný v RFC 3280.

X.509 původně předpokládal přísně hierarchický systém certifikačních autorit (CA) pro vydávání certifikátů. Jiným přístupem je model založený na vzájemné důvěře (takzvaná síť důvěry) používaný OpenPGP, ve kterém si pravost klíčů potvrzují navzájem uživatelé. Verze 3 standardu X.509 sice obsahuje i podporu jiných topologií než je hierarchie certifikačních autorit (RFC 4158), ale jejich používání není časté.

Certifikáty

editovat

Certifikáty, které potvrzují, že daný veřejný klíč patří uvedenému vlastníkovi, jsou v systému X.509 vydávány certifikačními autoritami. Vlastník může být zadán přesným jménem nebo alternativním označením, jako například e-mailová adresa nebo DNS záznam. Organizace mohou vydat své vlastní důvěryhodné kořenové certifikáty, které platí v rámci podniku. Řada webových prohlížečů má předinstalované kořenové certifikáty známých poskytovatelů certifikátů (SSL certifikáty).

V ideálním případě by si uživatel operačního systému nebo webového prohlížeče měl nainstalovat certifikáty pouze těch certifikačních autorit, kterým skutečně důvěřuje. V praxi jsou ale operační systémy a prohlížeče dodávány s předinstalovanými certifikáty, takže jejich dodavatelé vlastně určují, které certifikační autority jsou důvěryhodné pro většinu populace. Ačkoli tyto kořenové certifikáty si mohou uživatelé odinstalovat nebo vypnout, prakticky nikdo to nedělá. Kořenové certifikáty, které jsou součásti systému Windows, se navíc znovu nainstalují při instalaci aktualizací (konkrétně „Aktualizace kořenových certifikátů“).

X.509 obsahuje také standard pro tvorbu seznamů zneplatněných certifikátů (CRL, anglicky certificate revocation list), což je mnohdy opomíjený aspekt kryptografických systémů. Způsob kontroly platnosti certifikátu schválená IETF je Online Certificate Status Protocol (OCSP).

Struktura certifikátu

editovat

Struktura certifikátu podle standardu X.509 v3 je následující:

  • Version: verze certifikátu
  • Serial Number: sériové číslo certifikátu
  • Signature Algorithm: označení algoritmu (ID)
  • Issuer: vydavatel
  • Validity: platnost
    • Not Before: nepoužívat před datem
    • Not After: nepoužívat po datu
  • Subject: vlastník veřejného klíče
  • Subject Public Key Info: informace o veřejném klíči vlastníka
    • Public Key Algorithm: algoritmus pro veřejný klíč
    • veřejný klíč (data)
  • Issuer Unique Identifier: unikátní identifikátor vydavatele (volitelný)
  • Subject Unique Identifier: unikátní identifikátor vlastníka (volitelný)
  • X509v3 extensions: rozšíření (volitelné)
    • atd.
  • Signature Algorithm: algoritmus pro certifikát (elektronický podpis)
  • certifikát (elektronický podpis)

Unikátní identifikátory vydavatele a vlastníka se staly součásti standardu X.509 od verze 2.

Rozšíření jsou součásti standardu X.509 od verze 3.

Přípony souborů s certifikáty

editovat

Běžně se používají následující přípony pro certifikáty X.509:

  • .DERDER zakódovaný certifikát
  • .PEM – (anglicky Privacy Enhanced Mail) DER certifikát zakódovaný pomocí base64, uzavřený mezi řádky -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----
  • .P7B – viz p7c
  • .P7CPKCS #7 struktura SignedData (podepsaná data) bez dat, jen certifikát(y) nebo CRL
  • .PFX – viz p12
  • .P12PKCS #12, může obsahovat certifikát(y), veřejné i soukromé klíče (chráněno heslem)

PKCS #7 je standard pro podepsaná nebo šifrovaná data (což je oficiálně nazýváno „enveloping“). Protože k ověření podepsaných dat je potřeba certifikát, je možné obojí vložit do struktury zvané SignedData. Soubor .P7C je zredukovaná struktura SignedData bez dat k podpisu.

PKCS #12 se vyvinul ze standardu PFX (anglicky Personal inFormation eXchange = výměna osobních informací) a je používán k výměně veřejných i soukromých dat v jednom souboru.

Soubor s příponou PEM může obsahovat certifikáty i soukromé klíče, uzavřené mezi odpovídající řádka BEGIN a END (CERTIFICATE nebo RSA PRIVATE KEY).

Příklady certifikátů

editovat

Toto je příklad dekódovaného certifikátu pro www.freesoft.org, který byl vytvořen pomocí OpenSSL. Byl vydán Thawte (dnes součást firmy VeriSign) jak je uvedeno v poli vydavatel (Issuer). Informace o vlastníkovi obsahuje řadu detailů, nejdůležitější z nich je CN (common name, jméno, pod kterým je daný subjekt znám), musí odpovídat názvu serveru, který certifikát používá. Certifikát obsahuje veřejný RSA klíč (pole modulus a public exponent), následuje podpis (hašovací funkce MD5, šifrování soukromým RSA klíčem Thawte).

Certificate:

   Data:
       Version: 1 (0x0)
       Serial Number: 7829 (0x1e95)
       Signature Algorithm: md5WithRSAEncryption
       Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
               OU=Certification Services Division,
               CN=Thawte Server CA/emailAddress=server-certs@thawte.com
       Validity
           Not Before: Jul  9 16:04:02 1998 GMT
           Not After : Jul  9 16:04:02 1999 GMT
       Subject: C=US, ST=Maryland, L=Pasadena, O=Brent Baccala,
                OU=FreeSoft, CN=www.freesoft.org/emailAddress=baccala@freesoft.org
       Subject Public Key Info:
           Public Key Algorithm: rsaEncryption
           RSA Public Key: (1024 bit)
               Modulus (1024 bit):
                   00:b4:31:98:0a:c4:bc:62:c1:88:aa:dc:b0:c8:bb:
                   33:35:19:d5:0c:64:b9:3d:41:b2:96:fc:f3:31:e1:
                   66:36:d0:8e:56:12:44:ba:75:eb:e8:1c:9c:5b:66:
                   70:33:52:14:c9:ec:4f:91:51:70:39:de:53:85:17:
                   16:94:6e:ee:f4:d5:6f:d5:ca:b3:47:5e:1b:0c:7b:
                   c5:cc:2b:6b:c1:90:c3:16:31:0d:bf:7a:c7:47:77:
                   8f:a0:21:c7:4c:d0:16:65:00:c1:0f:d7:b8:80:e3:
                   d2:75:6b:c1:ea:9e:5c:5c:ea:7d:c1:a1:10:bc:b8:
                   e8:35:1c:9e:27:52:7e:41:8f
               Exponent: 65537 (0x10001)
   Signature Algorithm: md5WithRSAEncryption
       93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:
       92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:
       ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:
       d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:
       0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:
       5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:
       8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:
       68:9f

Pro kontrolu certifikátu vlastníka (první certifikát) potřebujete certifikát vydavatele (Thawte Server CA). Nejdříve zkontrolujeme, že certifikát vydavatele (druhý certifikát) je certifikát certifikační autority. To je uvedeno v sekci pro rozšíření (X509v3 extensions), hodnota CA musí být nastavena na true. Pak použijeme veřejný RSA klíč z certifikátu vydavatele pro kontrolu podpisu v certifikátu vlastníka (první certifikát). Příklad certifikátu vydavatele:

Certificate:

   Data:
       Version: 3 (0x2)
       Serial Number: 1 (0x1)
       Signature Algorithm: md5WithRSAEncryption
       Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
               OU=Certification Services Division,
               CN=Thawte Server CA/emailAddress=server-certs@thawte.com
       Validity
           Not Before: Aug  1 00:00:00 1996 GMT
           Not After : Dec 31 23:59:59 2020 GMT
       Subject: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
                OU=Certification Services Division,
                CN=Thawte Server CA/emailAddress=server-certs@thawte.com
       Subject Public Key Info:
           Public Key Algorithm: rsaEncryption
           RSA Public Key: (1024 bit)
               Modulus (1024 bit):
                   00:d3:a4:50:6e:c8:ff:56:6b:e6:cf:5d:b6:ea:0c:
                   68:75:47:a2:aa:c2:da:84:25:fc:a8:f4:47:51:da:
                   85:b5:20:74:94:86:1e:0f:75:c9:e9:08:61:f5:06:
                   6d:30:6e:15:19:02:e9:52:c0:62:db:4d:99:9e:e2:
                   6a:0c:44:38:cd:fe:be:e3:64:09:70:c5:fe:b1:6b:
                   29:b6:2f:49:c8:3b:d4:27:04:25:10:97:2f:e7:90:
                   6d:c0:28:42:99:d7:4c:43:de:c3:f5:21:6d:54:9f:
                   5d:c3:58:e1:c0:e4:d9:5b:b0:b8:dc:b4:7b:df:36:
                   3a:c2:b5:66:22:12:d6:87:0d
               Exponent: 65537 (0x10001)
       X509v3 extensions:
           X509v3 Basic Constraints: critical
               CA:TRUE
   Signature Algorithm: md5WithRSAEncryption
       07:fa:4c:69:5c:fb:95:cc:46:ee:85:83:4d:21:30:8e:ca:d9:
       a8:6f:49:1a:e6:da:51:e3:60:70:6c:84:61:11:a1:1a:c8:48:
       3e:59:43:7d:4f:95:3d:a1:8b:b7:0b:62:98:7a:75:8a:dd:88:
       4e:4e:9e:40:db:a8:cc:32:74:b9:6f:0d:c6:e3:b3:44:0b:d9:
       8a:6f:9a:29:9b:99:18:28:3b:d1:e3:40:28:9a:5a:3c:d5:b5:
       e7:20:1b:8b:ca:a4:ab:8d:e9:51:d9:e2:4c:2c:59:a9:da:b9:
       b2:75:1b:f6:42:f2:ef:c7:f2:18:f9:89:bc:a3:ff:8a:23:2e:
       70:47

V tomto příkladu je vydavatel a vlastník certifikátu totožný. Jedná se o příklad certifikátu podepsaného sám sebou (self-signed). Platnost certifikátu tedy nemůžete ověřit. Místo toho musí být certifikát ručně nahrán na počítač (případně musí být přímo součásti webového prohlížeče nebo operačního systému). Thawte je příkladem kořenového certifikátu, který je už přímo součásti řady www prohlížečů, takže bude automaticky uznán platným. Soukromé klíče globálních důvěryhodných certifikačních autorit musí být chráněny opravdu pečlivě.

Bezpečnost

editovat

V roce 2005 Arjen Lenstra a Benne de Weger předvedli „jak použít kolize v hašování k vytvoření dvou X.509 certifikátů, které obsahují stejné podpisy a které se liší jen ve veřejných klíčích“ s využitím kolizí v hašovací metodě MD5. [1]

PKI Standardy pro X.509

editovat
  • PKCS #7 (Cryptographic Message Syntax Standard) – formát podepsaných a/nebo šifrovaných zpráv pomocí PKI
  • Secure Sockets Layer (SSL) – kryptografický protokol pro bezpečnou internetovou komunikaci
  • Online Certificate Status Protocol (OCSP) / Certificate Revocation List (CRL) – kontrola, zda certifikát nebyl zneplatněn
  • PKCS #12 (Personal Information Exchange Syntax Standard) – standard pro výměnu osobních informací, použit pro ukládání soukromých a veřejných klíčů s příslušnými certifikáty

Certifikační autorita

editovat

Certifikační autorita (CA) je entita, která vydává digitální certifikáty pro použití v jiných oblastech. Je to příklad důvěryhodné třetí strany. Použití CA je charakteristické pro řadu systémů založených na veřejném klíči (public key infrastructure, PKI).

Existuje řada komerčních CA, které poskytují placené služby. Firmy a úřady mohou pro své použití využívat své vlastní CA (bez poplatků).

Pracovní skupina PKIX

editovat

Pracovní skupina zvaná PKIX je pracovní skupinou organizace Internet Engineering Task Force (IETF) určenou pro vytváření dokumentů RFC a dalších standardizujících dokumentů, která se zabývá systémy založenými na veřejných klíčích (PKI, anglicky Public-Key Infrastructure) využívajících certifikátů X.509. PKIX byla založena na podzim roku 1995.

Protokoly a standardy využívající certifikáty X.509

editovat