V predchádzajúcom článku Ako sa nenechať vykradnúť sme si veľmi zľahka naznačili problém, ktorým častokrát trpí komunikácia cez internet. Áno, správne – je to súkromie. Nainštalovali sme si Jabber klienta, vytvorili účet na serveri a niečo príjemné napísali kamošovi. Teraz sa ponoríme trošku hlbšie a pozrieme sa na to, ako vlastne vyzerá naša správa pri ceste sieťou ku konečnému adresátovi.
Porovnajte si nasledovný obrázok naľavo a napravo.
Obr. 1: Porovnanie komunikácie bez a s použitím Off-the-Record rozšírenia
Áno, vaša komunikácia pri chatovaní cez Facebook alebo pokec vyzerá presne tak, ako je to na ľavej strane. Možno vám tie značky čo sú okolo nič nehovoria, každopádne je jasné, čo bolo v prvom prípade obsahom správy. Aj keby ste sa na Jabber server pripojili cez SSL (samozrejme odporúčam), bude obsah správy viditeľný minimálne prevádzkovateľom jabber servera. Ten si môže tieto správy na pozadí zapisovať na disk, preposielať niekomu tretiemu a dovolím si tvrdiť, že aj cenzúrovať, prípadne modifikovať a posielať adresátovi pozmenenú správu.
Prevádzkovateľ jabber servera je ako klebetná poštárka, ktorá presne vie, odkiaľ ste si domov posielali pozdrav z dovolenky, kedy ste doma, v ktorej banke máte vedený účet alebo v ktorej poisťovni máte poistenú domácnosť. Ak sa vám chce, zapnite si v Pidgine (váš jabber klient) XMPP konzolu (Tools -> Plugins -> XMPP Console) a môžete sa na svoju komunikáciu pozrieť sami.
Obr. 2: Zapnutie XMPP konzoly v Pidgine
Vo virtuálnom svete si ale súkromie môžete chrániť pomerne jednoducho. Všimli ste si ten text v pravej časti prvého obrázka? Áno, ten čo začína značkou <body> a pokračuje ?OTR:AAMD9wj…. Pre vás je v tejto chvíli nečitateľný a nečitateľný je aj pre všetkých ostatných s výnimkou jedného adresáta. Iba ten má správny kľúč na dešifrovanie správy.
Paráda, nie?
Všetko čo sme spravili bolo to, že sme si v Pidgine zapli rozšírenie Off-the-Record a overili si navzájom s naším partnerom identitu nasledovným spốsobom:
V chatovacom okne klikneme najprv na tlačidlo Not private a vyberieme možnosť Start private conversation. Ak máte na oboch stranách klientov, ktorí podporujú OTR, tak sa za pomoci Diffie-Hellman algoritmu dohodnú šifrovacie kľúče a nadviaže bezpečná komunikácia. Funguje to dokonca aj cez nezabezpečený kanál, kde by mohol hroziť MITM útok. Nadviazanie bezpečnej komunikácia začína takouto správou.
<body>?OTRv23? zc.mi1733546524bbaj@17335465242-tse1733546524t-rto1733546524/ has requested an Off-the-Record private conversation <http://otr.cypherpunks.ca/>. However, you do not have a plugin to support that. See http://otr.cypherpunks.ca/ for more information.</body>
Ak druhá strana OTR nepodporuje, správa sa zobrazí a vložený odkaz naviguje užívateľa na stránku autorov OTR, kde získa bližšie informácie. Ak druhá strana OTR podporuje, prebehne na pozadí dohodnutie kľúčov a užívateľovi sa už iba zobrazí správa o tom, že komunikácia je od tejto chvíle zabezpečená.
Obr. 3: Detaily ohľadom výmeny kľúčov cez Diffie-Hellman algoritmus sú pred užívateľom skryté
Och áno, bezpečnostní experti si teraz pri tomto zjednodušenom vysvetlení trhajú vlasy na hlave, lebo som zamlčal fakt, že MITM útočník si mohol dohodnúť zvlášť kľúč s vami a zvláśt kľúč s vašim partnerom, takže si vy myslíte, že komunikujete dôverne, no v skutočnosti si útočník v tichosti dešifruje vašu správu svojim kľúčom, zašífruje kľúčom váško kamoša a prepošle mu ju (či už modifikovanú alebo nie). Preto je mimoriadne dôležité overiť odtlačok (fingerprint) kľúča druhej strany. Situácia pri MITM útoku totiž vyzerá zhruba takto:
Že užívateľ je informovaný iba o úspešnom nadviazaní šifrovanej komunikácie a zvyšok sa deje transparentne na pozadí je skvelé. A navyše je to bez zníženia úrovne zabezpečenia! Presne toto by mohlo pomôcť širšiemu používaniu šifrovania a zvýšeniu úrovne súkromia. Lenže ešte sa musíme vrátiť k tomu overeniu odtlačku kľúča a teda k overeniu identity druhej strany.
Tuto sa ukazuje profesionalita návrhu OTR protokolu: užívateľ nie je zaťažovaný tým, aký neuveriteľne-dlhý-nezrozumiteľný odtlačok kľúča musí potvrdiť a že prečo je tá kombinácia hexa čísel taká dôležitá. Preddefinovanou voľbou je totiž overenie identity druhej strany otázkou a odpoveďou. Jasné, geeci si môžu overenie spraviť cez porovnanie fingerprintov, ale bežnému užívateľovi ten rad čísel naozaj nič nehovorí.
Obr. 5: Overenie identity druhej strany – voľba otázky a odpovede
Prvý užívateľ vymyslí teda otázku a odpoveď, ktorú by mal poznať iba ten náš komunikačný partner. V praxi to možno zjednodušiť tak, že do oboch polí naťukáme niečo náhodné a cez nezávislý kanál (napr. si môžete zatelefonovať) druhej strane prezradíte odpoveď. A pozor: toto overenie je potrebné spraviť aj v jednom smere aj v druhom! Takéto user-friendly overenie identity sa mi páči a je viac prirodzené, ako porovnanie odtlačkov kľúčov. Veď porovnajte sami predchádzajúci a nasledujúci obrázok, ktorý sa vám páči viac
Nabudúce môžeme ísť ešte viac do hĺbky a prebrať jednotlivé vlastnosti takéhoto šifrovania trošku detailnejšie. Minimálne Deniability stojí určite za povšimnutie.