X.509

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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

Historie a využití[editovat | editovat zdroj]

Předchůdcem X.509 byl standard X.500, který však nebyl nikdy plně implementován. X.509 byl poprvé vydán roku 1988. Termínem X.509 je dnes běžně označován standard X.509 verze 3, jak je popsán 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ů. Naproti tomu OpenPGP využívá takzvané sítě důvěry (model založený na vzájemné důvěře), ve kterém si uživatelé potvrzují pravost svých klíčů navzájem. Verze 3 standardu X.509 sice už obsahuje podporu dalších topologií certifikačních autorit (RFC 4158), ale používání alternativní topologie (jiné než hierarchie certifikačních autorit) není časté.

Certifikáty[editovat | editovat zdroj]

V systému X.509 certifikační autority vydávají certifikáty, které potvrzují, že daný veřejný klíč patří uvedenému vlastníkovi. Vlastník může být zadán přesným jménem nebo alternativním označením, jako například e-mail 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). Ve výsledku vlastníci prohlížečů 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 v rámci instalace aktualizací (konkrétně "Aktualizace kořenových certifikátů") znovu nainstalují.

X.509 obsahuje také standard pro tvorbu seznamů odvolaných certifikátů (CRL, 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 | editovat zdroj]

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 | editovat zdroj]

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

  • .DERDER zakódovaný certifikát
  • .PEM – (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á (oficiálně zvané "enveloping") data. Protože certifikát je potřeba k ověření podepsaných dat, je možné je vložit do struktury zvané SignedData. Soubor .P7C je zredukována struktura SignedData, bez dat k podpisu.

PKCS #12 se vyvinul ze standardu PFX (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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

  • 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 odvolá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 | editovat zdroj]

Viz: Certifikační autorita 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 | editovat zdroj]

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, 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 | editovat zdroj]