Internet už dávno není informačním zdrojem pro akademickou půdu a přístup k němu se dnes dá najít prakticky kdekoli, kde je alespoň signál mobilních operátorů. Stejně jako ostatní věci, i Internet se vyvíjí a potřeby lidí před dvaceti lety se moc neshodují s potřebami lidí dnes. Právě díky potřebám uživatelů přestávají stačit léta používané protokoly a vymýšlí se nejrůznější více či méně povedené berličky. E-mailová komunikace je vynikající příklad.
Protokol SMTP, pro odesílání e-mailů, byl popsán v RFC821 v roce 1982. To je plus mínus 30 let. Zatímco tenkrát ho používalo několik desítek, maximálně stovek lidí, dnes to je technologie milionů. S tím se objevily problémy, které vzhledem k jeho návrhu není tak jednoduché řešit. Jeden z těch problémů dobře známe a říká se mu spam. O druhém se moc nemluví, protože v něm lidé nevidí nebezpečí. Mluvím o soukromí, o možnosti jednoduše zfalšovat identitu při komunikaci, o následcích podobných činů. Pokud vaše manželka ví o Internetu tak maximálně to, že jde o tu ikonku s modrým E nebo v lepším případě o ikonku s liškou, které hoří ocas, můžete být překvapení, až jí někdo vaším jménem odešle několik řádků textu, které změní váš život od základů. Je to jednoduché, běžná populace nemá tušení o tom, že se jejich identita na Internetu dá jednoduše zneužít. Napsat do jména odesílatele někoho jiného je asi tak složité, jako podrbat se za uchem.
Když už se ve vás objeví trocha toho paranoidního já, je čas to začít řešit. Sdělit okolí, že pokud nebude mít e-mail nějaký kód, tak není od vás. Poučit manželku, že teď tam ten kód musí dávat taky a hlavně si to hlídat a nepanikařit nad falešnými zprávami. Je pravda, že se třeba deset let nemusí nic stát a člověk zleniví. Jenže když si dáváte pozor, tak vám pak jedna špatná zpráva nepřinese problémy, jaké by mohla a jaké měl její autor v plánu.
Řeč je nyní o elektronickém podpisu. Nemusíte se s manželkou domlouvat na společném kódu vypočítaném třeba podle slunce a počtu znaků. Na to máme mnohem propracovanější způsoby, a to GnuPG. Ve většině linuxových emailových klientů je jeho podpora zahrnuta. Jinde stačí jen doplnit plugin. Pak už jen zaškrtnout „podepisovat odchozí poštu“ a ono to podepisuje. Stejně jednoduše se dá zpráva zašifrovat tak, že máte určitou jistotu (ne vždy 100 %, ale rozhodně víc než „možná“ jako u klasicky odeslaného e-mailu), že si ten e-mail otevře a přečte jeden jediný člověk nebo skupina vybraných lidí.
GnuPG je implementace standardu OpenPGP. Jelikož jde o standard, tak implementací najdete víc. Může se jedna třeba o komerční řešení pro firmy, kde na jeden klik nastavíte kompletní práva pro uživatele jak při přístupu na servery, tak při vstupu do místností. Nebo může jít o nějakou běžnou implementaci, která je vhodná do domácího prostředí. Takovou najdeme i v Linuxu. O tomhle všem ale někdy v příští díle. Pro zajímavost jen nakousnu, že PGP klíče lze u sebe nosit na kartě, a využívat je pro přístup, šifrování a podepisování čehokoli.
Privátní klíč, veřejný klíč, podpisy a šifrování
V obou případech podepisování a šifrování figurují dva druhy klíčů, které si vytvoříte, když začnete OpenPGP používat. Začneme tedy prvním klíčem, který se nazývá privátní nebo soukromý. Je to klíč, který nikomu nedáváme, pomocí kterého si vygenerujeme klíč veřejný a pomocí kterého také podepisujeme soubory, texty a dokumenty. Veřejný klíč slouží k ověřování podpisu soukromým klíčem. Také pomocí něj můžeme šifrovat zprávy. Rozšifrování je možné pouze soukromým klíčem. Pokud chceme vidět obsah odeslaných e-mailů v odeslané poště, musíme do něj přidat i zprávu určenou pro náš soukromý klíč. Podobně to funguje u více příjemců, kde ke každému musíme přidat zprávu zašifrovanou pro jeho soukromý klíč (veřejným klíčem).
Soukromý klíč může obsahovat několik identit (dvojice jméno a e-mailová adresa). Pak může obsahovat fotku a dobu platnosti klíče. Dobu platnosti volíme kvůli potenciální možnosti rozlousknout náš klíč a tedy napadení naší komunikace. Pokud víme, že klíč o 2048 bitů může být rozlousknut za 150 let, tak si nastavíme platnost pro třeba na 2 roky a máme určitou míru jistoty, že je naše komunikace stále bezpečná. Soukromý klíč je chráněn heslem. Fyzický přístup ke klíči tak útočníkovi neumožní okamžitě dešifrovat komunikaci.
Důležitou součástí života klíčů jsou klíčové servery. Tam si svůj veřejný klíč nahrajeme a stahujeme si tam veřejné klíče ostatních. Jednoduše tak získáme klíče ostatních. Jednotlivé klíče můžeme podepsat. Tím dáváme najevo, jak moc klíči věříme, že patří dané osobě. Pro tyto potřeby jsou k dispozici tři úrovně důvěry.
- Žádné – prostě věříme, že to tak je.
- Zběžné – ověřili jsme si identitu majitele klíče třeba po telefonu.
- Pečlivé – viděli jsme třeba občanský průkaz majitele klíče a víme jistě, že to je on.
Podle podpisů ostatních uživatelů se můžeme rozhodnout, jestli danému klíči budeme důvěřovat. Můžeme také nastavit, kterým uživatelům věříme a jejich podpisy nám automaticky označí klíč za důvěryhodné. Jestli klíči věříme nebo ne se projeví na zeleném nebo červeném rámečku informujícím nás o věrohodnosti zprávy třeba v e-mailovém klientu. Zde je nutné poznamenat, že nevěrohodné klíče nám jsou k ničemu. Když klíči nevěříme, nevíme, kdo může námi zašifrovanou zprávu rozšifrovat. Věrohodný klíč nám ale dá přesně to, co potřebujeme, a to je důvěra v příchozí zprávy a jistota, že námi napsaný text si přečte jen člověk, který má.
Vytváříme pár klíčů
Abychom měli po prvním díle něco v ruce, vytvoříme si náš první pár klíčů. To je základ pro bezpečnou komunikaci. Začneme tedy programem pro práci s PGP klíči v příkazové řádce, gpg (GnuPG). Klíče vytvoříme třeba takto:
$ gpg --gen-key
gpg (GnuPG) 1.4.9; Copyright (C) 2008 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Prosím, vyberte druh klíče, který chcete:
(1) DSA a ElGamal (implicitní)
(2) DSA (pouze pro podpis)
(5) RSA (pouze pro podpis)
Váš výběr? 1
Pár DSA klíčů DSA dlouhý 1024 bitů.
klíč ELG-E může mít délku v intervalu 1024 až 4096 bitů.
Jakou délku klíče si přejete? (2048)
Požadovaná délka klíče je 2048 bitů.
Prosím určete, jak dlouho by klíč měl platit.
0 = doba platnosti klíče není omezena
<n> = doba platnosti klíče skončí za n dní
<n>w = doba platnosti klíče skončí za n týdnů
<n>m = doba platnosti klíče skončí za n měsíců
<n>y = doba platnosti klíče skončí za n let
Klíč je platný pro? (0) 2y
Platnost klíče skončí v So 12. listopad 2011, 17:33:37 CET
Je to správně (a/N)? a
Aby bylo možné rozpoznat Váš klíč, musíte znát identifikátor uživatele;
program jej složí z Vašeho jména a příjmení, komentáře a e-mailu
v tomto tvaru:
"Magda Prochazkova (student) <magda@domena.cz>"
Jméno a příjmení: Testovací Jedinec
E-mailová adresa: muj@email.cz
Komentář:
Používáte znakovou sadu `utf-8'.
Zvolil(a) jste tento identifikátor uživatele:
"Testovací Jedinec <muj@email.cz>"
Změnit (J)méno, (K)omentář, (E)-mail, (P)okračovat dál nebo (U)končit program? P
Pro ochranu Vašeho tajného klíče musíte zadat heslo.
gpg: gpg-agent není v tomto sezení dostupný
Musíme vytvořit mnoho náhodných bajtů. Během vytváření můžete
provádět nějakou jinou práci na počítači (psát na klávesnici, pohybovat myší,
používat disky); díky tomu má generátor lepší šanci získat dostatek entropie.
...+++++++++++++++++++++++++++++++++++.+++++..++++++++++++++++++++.+++++.+++++++++++++++.++++++++++.+++++++++++++++++++++++++.+++++++++++++++>.++++++++++...............................................................................................................................................+++++
Nedostatek náhodných bajtů. Prosím, pracujte s operačním systémem, abyste
mu umožnili získat více entropie (je potřeba 280 bajtů).
Musíme vytvořit mnoho náhodných bajtů. Během vytváření můžete
provádět nějakou jinou práci na počítači (psát na klávesnici, pohybovat myší,
používat disky); díky tomu má generátor lepší šanci získat dostatek entropie.
++++++++++..++++++++++..+++++++++++++++++++++++++++++++++++.++++++++++++++++++++++++++++++..++++++++++++++++++++.++++++++++++++++++++.+++++.+++++.++++++++++>++++++++++>+++++...........+++++^^^^^^^^^^^^^^^
gpg: klíč E7B4BB0E označen jako absolutně důvěryhodný.
veřejný a tajný klíč byly vytvořeny a podepsány.
gpg: kontroluji databázi důvěry
gpg: požadováno 3 částečné důvěry a 1 úplné důvěry, model PGP
gpg: hloubka: 0 platných: 2 podepsaných: 8 důvěra: 0-, 0q, 0n, 0m, 0f, 2u
gpg: hloubka: 1 platných: 8 podepsaných: 0 důvěra: 2-, 0q, 0n, 6m, 0f, 0u
gpg: další kontrola databáze důvěry v 2011-02-16
pub 1024D/E7B4BB0E 2009-11-12 [platnost skončí: 2011-11-12]
Fingerprint klíče = BE0D 8E1C 6BCB 2F99 FAC0 3BD6 D404 8A7B E7B4 BB0E
uid Testovací Jedinec <muj@email.cz>
sub 2048g/5FDE297A 2009-11-12 [platnost skončí: 2011-11-12]
Pokud vše vyplníme správně, tak máme k dispozici soukromý klíč, který uvidí všechny aplikace, které umí s GnuPG spolupracovat.
Závěr
Za týden si ukážeme, jak s nově vytvořeným párem klíčů dále pracovat. V seriálu budeme dále probírat klikací i neklikací způsoby využití a správy, PGP klíčenky, použití v e-mailových klientech v Linuxu i ve Windows, nezapomeneme ani na komunikaci přes Jabber a třešňičkou na dortu bude propojení s SSH a jinými aplikacemi.