Jabber: bezpečná a šifrovaná komunikace

22. 1. 2010
Doba čtení: 5 minut

Sdílet

Pokud hledáte bezpečný protokol pro rychlou komunikaci (IM) po síti, určitě zvažte XMPP neboli Jabber. Ten si u linuxové komunity našel své místo a jelikož je vymyšlen velmi modulárně, dostalo se i na šifrování zpráv, které přes tento protokol odešlete. Všechno je řešené velmi jednoduše pomoc GPG.

Nebezpečí na Jabberu

XMPP je protokol založený na XML, který se za posledních deset let velmi rozšířil jak po stránce funkčnosti, tak po stránce uživatelské komunity. Je ideálním řešením pro tento druh komunikace, tedy pro časté chatování s jednotlivými lidmi. Lidé jsou roztříštěni po různých serverech na světě. Tyto servery se sebou navzájem komunikují a společně tak vytvářejí obrovskou a hlavně proti výpadkům odolnou síť. Když vypadne jeden ze serverů, pocítí to jen skupinka uživatelů. U jiných centralizovaných protokolů podobnou vlastnost v takovém rozsahu nenajdeme.

Je tu ovšem ale i jedna nevýhoda. Jelikož jde o decentralizovanou síť, je prakticky nemožné zjistit, kudy vaše zpráva cestuje. Pokud se jedná o komunikaci v rámci jednoho serveru, a to nejlépe třeba firemního, je to docela jednoduché, ale pokud jde o nějakou mezi serverovou komunikaci, může jít zpráva opravdu kudykoli. To samozřejmě snižuje bezpečnost.

Zatímco u prvního případu stačí používat mezi serverem a klientem TLS šifrování na obou komunikujících stranách, které znemožní odposlech na cestě mezi námi a naším serverem, mezi serverem a druhou stranou, případně mezi servery může jet zpráva nešifrovaně. Třetí bezpečnostní riziko je u samotných Jabber serverů. Jabber účet si pravděpodobně vytvoříte u subjektu, kterému věříte nejvíce a nic nebrání si nahodit Jabber server vlastní. Poskytovatel serveru má vždy možnost podívat se co si jeho uživatelé píší.

Všechna tři bezpečnostní rizika velmi elegantně řeší GnuPG. S ním můžete šifrovat tzv. c2c komunikaci, tedy od vás až k cíli vaší zprávy. Nikdo včetně provozovatelů serverů nemůže zjistit, co píšete. Komu píšete, samozřejmě zjistit lze, ale není v naší moci s tím něco udělat.

Princip celého zabezpečení je podobný jako u e-mailové komunikace. V Jabber klientovi jsou dvě možnosti, jak začít šifrovanou komunikaci, pokud to klienti na obou stranách podporují. První možnost je, že máme klíč člověka, který má Jabber a ten klíč obsahuje jeho JID identitu, tedy identitu kde je jako e-mailová adresa uveden JID jeho Jabber účtu. Druhá možnost je složitější a spočívá v tom, že víme, že máme klíč nějakého člověka a že ten člověk je pravděpodobně na nějakém JID. Proto tento klíč k JID přidělíme. Každý klient se ke GnuPG chová jinak a chce to proto odpozorovat, jak to je u toho vašeho.

Klienti

My si dnes popíšeme nastavení GnuPG v klientech Psi a Gajim, které jsou na Linuxu, ale i na Windows pro čistý Jabber nejpoužívanější. S jinými klienty bohužel nemám zkušenosti, ale minimálně pro Pidgin a Kopete by měly existovat pluginy, které GnuPG v obou zpřístupní. Dá se říci, že s většinou klientů se GnuPG dá používat, ale u některých to chce trochu snahy.

Psi

Psi je horkým kandidátem pokud hledáte spolehlivého klienta čistě pro Jabber. Je stabilní, ale jeho vývoj zrovna dopředu neletí. Každopádně pro běžnou komunikaci jde o velmi dobrou volbu. GnuPG v něm funguje, ale často se mi stávalo, že když jsem zapnul šifrování, tak se vypnulo a zapnulo se, až když ho zapnula druhá strana. Klíče přitom byly na obou stranách nastaveny dobře.

GnuPG-jabber

Šlo o komunikaci s Gajim klientem. Druhý problém jsem měl u verze z Ubuntu 9.04, který je snad již vyřešený. Tam přidání balíčku libqca2-plugin-gnupg, který je nutný pro podporu GnuPG v Psi, spolehlivě celého klienta dostalo do stavu, kdy se zasekl a nereagoval. Právě kvůli této chybě jsem později na chvíli přešel na Gajim, kde je na tom GnuPG lépe. V Ubuntu 9.10 najdeme Psi 0.12, které je od tohoto bugu ušetřeno, ale trpí občasným vypínáním šifrování.

Jak již bylo řečeno, aby GnuPG v Psi fungovalo, je potřeba mít nainstalovaný balíček libqca2-plugin-gnupg. Některé distribuce ho mohou mít zahrnutý v libqca2, takže tento krok nemusí být nezbytný.

GnuPG-jabber

Druhý krok nezbytný je, protože musíme Psi říct, jaký má použít soukromý klíč. To se dělá v nastavení účtu v záložce „Details“. Pak už zbývá jen najít osobu, které už GnuPG v Jabberu funguje a vyzkoušet na ní jak je to u vás. Než tak učiníme, musíme přidělit klíč té osoby k jejímu kontaktu. To uděláme tak, že klikneme na kontakt druhým tlačítkem a vybereme „Assign OpenPGP key“. Teď se Psi pokusí najít identitu podle JID v seznamu vašich klíčů, pokud nenajde, dá možnost vybrat klíč ručně. Když kliknete na tlačítko, že chcete vybrat klíč ručně, tak se objeví tabulka se seznamem naimportovaných klíčů s možností jeden vybrat.

Když jste jedním nebo druhým způsobem klíč ke kontaktu přiřadili a Psi detekovalo podporu GnuPG na druhé straně, tedy u klienta vašeho kontaktu, může šifrovaný proces začít. Měl by začít automaticky sám, ale možná mu bude potřeba pomoci přes menu v okně chatu, konkrétně volbou „Toggle encryption“. Stejnou funkci má i ikonka zámku vedle smajlíků. Při prvním pokusu o šifrovanou komunikaci budete požádáni o heslo ke svému klíči.

GnuPG-jabber

Informace o stav u šifrování se vypisují do okna chatu podobně jako změna stavu protistrany.

Gajim

Gajim je ke GnuPG poněkud přátelštější a nikdy jsem se ním nesetkal s problémy. Nicméně jsem Gajim také používal poměrně krátkou dobu, řádově v týdnech, takže se některé problémy nemusely projevit. I když je v něm GnuPG bezproblémové, odešel jsem od něj kvůli jeho paměťové nenažranosti. Jde o klienta napsaného v Pythonu, takže i to se na jeho rychlosti a náročnosti na hardware podepsalo.

GnuPG-jabber

V Gajimu musíme opět přiřadit soukromý klíč našemu účtu. To se dělá v nastavení účtu v záložce „Osobní údaje“, tedy tam kde nastavujeme informace o naší osobě. Pak přejdeme ke kontaktu, se kterým chceme šifrovaně komunikovat, klikneme na něj druhým tlačítkem a vybereme „Spravovat kontakt“ a „Přiřadit OpenPGP klíč“. V podobném dialogu jako má Psi vybereme klíč a dáme OK. Potom otevřeme chatovací okno kontaktu a klikneme druhým tlačítkem na část okna, kde je napsaná přezdívka kontaktu, a v kontextové nabídce vybereme „Přepnout OpenPGP šifrování“. Odemykání soukromého klíče se v Gajimu provádí při spuštění aplikace.

GnuPG-jabber

Bohužel se v mé instalaci dostal mezi mě a překladatele nějaký překladatelský šotek a tato položka je v menu dvakrát. To co chceme, dělá ta první.

ict ve školství 24

GnuPG-jabber

Závěr

Jabber jako takový je tedy na GnuPG připravený. Většina klientů se s ním nějak popere, ale občas se mohou objevit nějaké problémy. Zde recenzované Psi je verze 0.12 a aktuální je 0.14, je tedy možné, že zmíněný bug s vypínáním šifrování je již vyřešený. Jde o bug, který se neprojevuje vždy a záleží na kombinaci klientů na obou stranách. Tzn. že se s ním nemusíte setkat, ale také se hůře hledá.

GnuPG je pro Jabber dnes nejspolehlivější cestou, jak zašifrovanou komunikaci mezi dvěma body, kdy šifrování probíhá na straně klienta a dešifrování na straně příjemce. Nezapomínejte na to, že TLS jistí jen cestu mezi vámi a serverem.

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.