Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
Software
Certifikáty
15. srpna 2006, 00.00 | Dnes si konečně vysvětlíme, co to jsou (digitální) certifikáty a k čemu slouží. Vysvětlíme si také několik souvisejících pojmů, jako je "kořenový certifikát" či "certifikační autorita".
V minulém dílu našeho seriálku, věnovaného bezpečnosti systému Mac OS X, jsme se seznámili s typickým útokem na šifrování s veřejným kódem – s útokem "třetího", nejčastěji označovaným anglickým termínem "middleman" (také často "man-in-the-middle"). Řekli jsme si také, jak se proti tomuto útoku lze bránit – potřebujeme někoho, komu důvěřujeme, a kdo nám potvrdí, že ten, s kým komunikujeme, je skutečně ten, za koho jej považujeme (rozumíte této větě? To je dobře, já skorem nikoli :))
Právě k tomu obecně slouží certifikáty; řekněme si tedy o nich trochu více.
Co je to certifikát?
Certifikát (či lépe digitální certifikát, ale v kontextu našich článků je to zřejmé) je datový soubor, obsahující údaje, jež umožňují rozpoznat a ověřit identitu jeho majitele (samozřejmě v rámci možností a s omezeními, danými matematickými principy, jež jsme rozebírali minule). Různé certifikáty mohou obsahovat různé skupiny údajů; typicky však certifikát obsahuje
- jméno majitele (a další podobné údaje – název jeho firmy apod.);
- veřejný klíč majitele certifikátu – jak jsme si ukázali minule, ten právě slouží k ověření digitálních podpisů majitele (a jak víme od předminula, také jeho prostřednictvím můžeme majiteli posílat šifrované zprávy);
- dobu platnosti certifikátu;
- seznam omezení a konkrétních práv, upřesňujících, v jakých situacích a za jakých podmínek lze certifikát použít;
- identifikaci toho, kdo certifikát vystavil;
- signaturu (digitální podpis) toho, kdo certifikát vystavil, a kdo jím ověřuje, že certifikát obsahuje korektní a nezměněné údaje;
- další technické údaje – ty zahrnují např. sériové číslo certifikátu, jeho versi, identifikaci algoritmů, jejichž prostřednictvím lze signaturu ověřit, a podobně.
Stojí za to si hned uvědomit, že certifikát "se týká" nejméně dvou identit: jednou z nich je jeho vlastník; jemu certifikát umožňuje užívat digitální podpis a přijímat zašifrované zprávy. Druhou z nich je ten, kdo certifikát vystavil – jemu certifikát nijak neslouží; on sám však ručí za správnost certifikátu. Tomuto "výstavci" (fuj, existuje vůbec takové slovo?) říkáme certifikační autorita.
To je přesně to, o čem jsme psali v úvodu (a minule): "někdo, kdo nám potvrdí, že ten, s kým komunikujeme, je skutečně ten, za koho jej považujeme": certifikační autorita je právě tím "někým".
Použití certifikátů
Ačkoli je to vzhledem k výše popsanému obsahu certifikátu celkem zřejmé, pojďme se jen v rychlosti podívat na to, kterak certifikátů můžeme použít pro šifrování i ověření podpisu:
Šifrování je jednodušší: certifikát přímo obsahuje veřejný klíč svého majitele. Chceme-li tedy pro někoho sestavit šifrovanou zprávu, prostě si najdeme jeho certifikát, a veřejný klíč z něj použijeme pro šifrování. (Malý kvíz pro pozorné čtenáře – jakpak asi vyřešíme problém s šifrováním téže zprávy více různým příjemcům? Vše potřebné jsme si již v našem seriálu řekli; těm, kdo na to nepřijdou, odpovíme příště.)
Ověření platnosti podepsaného dokumentu je jen malinko složitější – v podstatě jsme si jeho postup popsali minule:
- vezmeme certifikát toho, kdo nám dokument poslal;
- pomocí patřičného algoritmu, na nějž je v certifikátu odkaz (nejspíše to bude jeden ze standardních algoritmů MD5 či SHA) spočteme "signaturu" (také se někdy užívá pojem "hash") dokumentu – údaj, jehož obsah je víceméně jednoznačný pro konkrétní dokument, a který v podstatě nemůže být pro různé dokumenty týž;
- pomocí veřejného klíče z certifikátu rozšifrujeme digitální podpis dokumentu – a srovnáme jej s "hashem", jenž jsme spočetli sami.
Je zřejmé, že jsou-li obě hodnoty stejné, pochází dokument od majitele certifikátu a od nikoho jiného (s takovou jistotou, jakou dávají matematické základy celého systému šifer a signatur – a ta je značná).
(Jen pro úplnost – psali jsme, že hash je "víceméně" jednoznačný a "v podstatě" nemůže být týž pro různé dokumenty: samozřejmě, je evidentní, že je-li hash mnohem kratší než dokument, prostě musejí existovat dva – či přesněji, mnoho – různých dokumentů s týmž hashem. Promyšlené algoritmy jako MD5 či SHA však prakticky znemožňují, abychom takový dokument – jenž by měl jiný obsah, ale totožný hash – skutečně dokázali nalézt.)
Řetězení certifikátů a jejich platnost; kořenový certifikát
Vraťme se nyní k certifikátům samotným: ačkoli jsme to explicitně neuvedli, je celkem zřejmé, jak ověříme platnost daného certifikátu – přesně stejně, jako u kteréhokoli jiného dokumentu, opatřeného digitálním podpisem. Potřebujeme tedy pouze mít k dispozici druhý certifikát – jeho vlastníkem bude certifikační autorita; jeho prostřednictvím můžeme ověřit, že obsah našeho certifikátu je správný (to jest takový, jaký mu certifikační autorita dala).
Nejsme-li si jisti, zda nám nějaký "middleman" nehraje roli samotné certifikační autority, můžeme týmž způsobem ověřit její certifikát – a tak dále. Certifikáty se nám tak řetězí: nejprve ten, který používáme k šifrování (či k ověření podpisu); pak jeho certifikační autorita; pak její certifikační autorita...
Je ovšem zřejmé, že takto nemůžeme pokračovat donekonečna: dříve nebo později musíme skončit s certifikátem, jemuž věříme implicitně, bez další kontroly. Takový certifikát nazýváme kořenovým (a jeho vlastníka někdy kořenovou certifikační autoritou). Samozřejmě; abychom mohli kořenovému certifikátu věřit, musíme jej získat speciálním způsobem, který vyloučí útok "man-in-the-middle" – Mac OS X kupříkladu obsahuje standardně množství kořenových certifikátů, jimž věří firma Apple; nám tedy zbývá jen se rozhodnout, zda věříme firmě Apple :)
Mimochodem, samozřejmě, že kořenový certifikát sám je také podepsaný, aby se vyloučila možnost manipulovat jeho obsahem; na rozdíl od běžných certifikátů však je podepsán přímo svým vlastníkem. Jinými slovy, u kořenového certifikátu je táž identita vlastníkem i certifikační autoritou. To ilustruje následující obrázek:
Kořenové certifikáty v Mac OS X
Mac OS X považuje certifikát za kořenový – tedy implicitně správný – pro vyšší bezpečnost pouze pod podmínkou, že je uložen ve speciální "klíčence" "X509Anchors" ve složce "/System/Library/Keychains"; jakýkoli jiný certifikát z jakéhokoli jiného zdroje Mac OS X za implicitně správný považovat nebude, ať již jsou v něm uloženy údaje jakékoli. O tomhle si ale řekneme více zanedlouho, až se budeme zabývat klíčenkami a aplikací Keychain Access.
Obsah seriálu (více o seriálu):
- Je to bezpečné?
- Základy zabezpečení Mac OS X
- Identifikace a autorizace
- Jak je to s administrátory
- Šifrování
- Co jsou to ty šifry?
- Černý vzadu, podpisy, a vůbec...
- Certifikáty
- Kde vzít certifikát?
- Certifikát Thawte
- Keychain
- Keychain Access
- Kolik keychainů máš, tolikrát jsi paranoikem
- Lepší konfigurace keychainů
- Jeden na neděli, jeden na všední den...
- WEP or weep
- AirPort a nastavení bezdrátové sítě
- WEP and weep...
- Externí router
- Slušný člověk nešifruje!
- Je ve vězení bezpečno
Tématické zařazení:
» Rubriky » Tipy a Triky