Linux E X P R E S

Facebook

Bezpečnost v Linuxu: Aplikace a metody pro šifrování dat

klice_1.png

Ač by se toto téma mohlo někomu zdát příliš sofistikované na to, aby se jím nějak blíže zabýval, šifrování je v dnešní době naprosto nevyhnutelnou a samozřejmou součástí práce s daty. Velmi často se každý z nás setkává s nejrůznějšími technikami ochrany dat před nepovolanými osobami, netušíme ale, co a jakým způsobem je šifrováno. 


Co je to šifra a kde se používá

Enigma, kód Navajo a dokonce i Šifra mistra Leonarda mají jedno společné. Byly to způsoby, jak předat informaci určenou jen konkrétním lidem, u nichž existuje předpoklad, že budou schopni danou informaci rozluštit, aniž by došlo k jejich vyzrazení. Stejně rychle, jako se dnes vyvíjí oblast informačních technologií, se zvyšují také požadavky na bezpečnost dat, která jsou zpracovávána. A nenechte se mýlit. Bezpečnost dat není doménou jen tajných služeb či velkých obchodních společností. Týká se každého z nás.

Pravděpodobně asi nejlepším příkladem tohoto tvrzení jsou nejrůznější webové služby, jako je Facebook, Twitter či Seznam. Stačí jen zadat příslušnou adresu do webového prohlížeče a můžete žasnout nad tím, co všechno je při návštěvě dané stránky během jediné sekundy šifrováno. Je to zejména datový přenos od vašeho poskytovatele internetového připojení, obvykle pomocí 128bitového klíče, jednotlivé přenosy mezi DNS servery od vás až k cíli, v případě načtení stránky zabezpečeným protokolem (HTTPS) pak další šifrované přenosy na základě vydaných certifikátů, kdy se klient dotazuje vydavatele na pravost předloženého certifikátu cílové stránky, atd. Jsou to i soubory cookies (tzv. koláčky nebo sušenky), jež obsahují informace o nastaveních dané stránky, v neposlední řadě pak i přihlášení na těchto stránkách. Vše je šifrováno.

Zjednodušeně lze říci, že šifra je obyčejný textový řetězec (např. 123456789), který je za pomoci nějakého algoritmu, definovaného nějakým heslem (např. ABC), převeden do „nečitelné podoby“, a takto někam uložen pro pozdější použití. Pro představu: textový řetězec „123456789“ bude šifrován pomocí 256bitového klíče (AES-256), s použitím hesla „ABC“. Výsledek bude vypadat nějak takto: „RjBCbEEzd1NUYnNzeGgkaw==AvB/Tb2dQmotWK2mB0yk7A==“.

Dvě základní metody

Přesně takto se tento textový řetězec uloží někam na server, pravděpodobně někam do databáze. Běžný uživatel o tom při „brouzdání po internetu“ nemá obvykle ani páru. A ti dnešní náctiletí administrátoři herních stránek by se při pohledu na tento proces pravděpodobně zmohli jen na na výrazy typu LOL či ROFL v nějakém chatu. Faktem ale je, že ani ti zkušenější často nevědí, jakým způsobem jsou tato data předávána a šifrována. Ti, kdo se zabývají tvorbou webových stránek, dobře vědí, že metody v podstatě existují dvě, a to buď GET, nebo POST.

Metoda GET je problematická v tom, že data jsou předávána prostřednictvím adresy URL. Jsou tudíž viditelná pro uživatele, a nejen pro ně. Lze tedy říci, že předání hesla pomocí metody GET v podobě „http://www.mujinternetovyobchod.cz/pristupkespravebankovnichuctu.php?heslo=123“ asi nebude to pravé ořechové. Praxe je obvykle taková, že se pro tento případ metoda GET vůbec nepoužívá. A pokud ano, jsou v takovém případě data předávána v zašifrované podobě. Jedná se o takové ty šíleně dlouhé URL adresy, které zaberou i několik odstavců.

Metoda POST se od GET liší tím, že data (např. z formulářů) jsou odesílána skrytě, tudíž se v poli adresy nezobrazují.

Využití šifrovaných dat

Tato data lze pak použít jen dvěma způsoby. První způsob je ten, kdy se data zašifrují „navěky“, a nelze je již dešifrovat. Takovým příkladem může být funkce crypt, jež dokáže data zašifrovat náhodně generovaným klíčem, který je pro danou chvíli unikátní. Právě proto již nelze takto zašifrovaný textový řetězec znovu dešifrovat, neboť klíč, který byl k jeho zašifrování použit, se již neopakuje. Nyní se asi ptáte, k čemu je pak taková šifra, když ji nelze dešifrovat? Odpověď je snadná. Jsou to obvykle ty tzv. koláčky, které se ukládají jak na server, tak i u klienta. Je to princip, kdy se vytvoří hned dvě identické kopie stejného souboru, se stejným textovým řetězcem, který je pak následně při dalším použitím (další návštěva dané stránky) porovnáván. Pokud porovnání obou zašifrovaných řetězců, obsažených v těchto koláčcích uložených na serveru i u klienta, souhlasí, server provede akci, tímto podmíněnou. Pokud nesouhlasí, server provede akci jinou, např. odmítne spojení.

Stejným způsobem funguje i šifrování samotných hesel. Ta se ovšem šifrují za pomoci jiné funkce (md5), kdy se nevyužívá unikátního klíče, a tak jsou data šifrována stále stejným způsobem. Důvod je prostý, neboť při porovnávání zašifrovaných řetězců je nutné, aby uživatel zadal jím definované heslo, které bylo stejné v době, kdy se u webové stránky registroval. V takovémto případě, během přihlašování, uživatel zadá klasické heslo prostřednictvím formuláře pro přihlášení, přičemž webová stránka toto heslo 123 následně zašifruje pomocí md5, a porovná jej s uloženým heslem v databázi. To je taktéž zašifrováno pomocí funkce md5. Pokud hesla souhlasí, autentizace uživatele je dokončena.

Druhý způsob je pak ten, kdy lze data zpětně dešifrovat, tedy převést zpět do čitelné podoby. To je ovšem podmíněno tím, že daný uživatel zná heslo, které bylo použito k zašifrování. Tento způsob se častěji vyskytuje na lokálních počítačích a využívá jej řada programů.

Proč šifrovat

Těch důvodů pro šifrování může být celá řada. V době, kdy jsem byl vojákem základní služby, se kantýně říkalo Krakonoš. Nikdy jsem nevěděl proč. Později mi došlo, že je to proto, aby se v daném vojenském objektu vyznali pouze vojáci. Nepovolaná osoba by byla v množství takových názvů zcela dezorientována. A to je ten důvod, proč se podobné věci používají už po staletí. Princip je stále stejný, důvody taktéž. Zamezit těmi nejrafinovanějšími způsoby tomu, aby nepovolaní nemohli daných informací zneužít.

Co šifrovat

Na dotaz „co šifrovat“, by vám řada expertů jistě odpověděla: „Pokud možno vše!“ Je to samozřejmě složitější, neboť ne vše si zaslouží takovou pozornost. V neposlední řadě je pak také nutné mít na paměti, že někdy se šifrování dat může obrátit proti nám samotným. Stačí si vzpomenout na situaci, kdy si vzpomenout nemůžete. Třeba u přihlašovacího hesla k oblíbené webové stránce. A je tu problém.

To ale není to nejhorší, co se může stát. Řada webových stránek má totiž jinou funkci, která jistí tu první, a je tedy možné v takovém případě požádat o obnovu hesla. V případě šifrování celého disku a následné ztrátě přístupu k uloženým souborům pak ale nepomůže ani mlácení hlavou o stůl. Je tedy nutné, aby si každý z nás uvědomil, co má smysl šifrovat, a co ne. Faktem je, že řada takových citlivých údajů je šifrována ze své podstaty, a tudíž my samotní nemáme na takové rozhodnutí žádný vliv. Jediné, co můžeme v takových případech ovlivnit, je síla hesla. A co si budeme vykládat, čas od času jsou to docela perličky (například „heslo“).

Hackeři

Hacking, respektive computer hacking, je výraz, který hýbe dnešním světem. Často jsou v této souvislosti zmiňováni kupříkladu hackeři z hnutí Anonymous či organizovaný zločin z Ruska a Číny. Pravděpodobně asi největší podíl na nelegálních aktivitách v souvislosti s pojmem computer hacking mají – světe div se – jednotlivci. Osobně se domnívám, že právě ti jsou nejvíce nebezpeční, neboť o jejich záměrech nám nemusí být nic známo, a často to může být i někdo z našeho nejbližšího okolí. Typickým příkladem může být např. tzv. krádež identity na sociálních sítích, které se nezřídka může dopustit kamarád ze školy, bývalá přítelkyně, a dokonce i někdo z vlastní rodiny. Paradoxně tak platí, že čím blíže nám daný hacker je, tím větší má šanci na úspěch.

Kdy se vyplatí data šifrovat

Je nanejvýš logické, že v závislosti na citlivosti dat jsou voleny i nástroje a prostředky k jejich šifrování. Je to tzv. úroveň bezpečnosti, která se liší podle toho, zda jde o heslo k profilu na službě Facebook, nebo data k nákresům jaderné laboratoře v USA. Každý z nás si musí uvědomit, co a jak chce šifrovat. O webových službách jsme si řekli, že šifrování probíhá na straně serveru, často i na straně prohlížeče, potažmo celého systému. A tak běžnému uživateli postačí jen vědět, že má volit jen silná hesla, používat ověřený software a celkově se chovat tak, aby nikomu nezavdal příčinu k vykrádání dat (vyhýbat se pochybným webovým stránkám, apod.).

Může však nastat situace, kdy máme určitá data, která mají důvěrný charakter, a je tudíž nezbytně nutné chránit je před zneužitím. Pro představu uvedu několik příkladů:

  1. Jako obchodník s cennými papíry se budu účastnit obchodní schůzky, jejíž závěry budou zaznamenány pomocí digitálního záznamového zařízení ve formátu mp3.

  2. Jako student vysoké školy budu pracovat na diplomové práci.

  3. Jako učitel na střední škole budu připravovat otázky k maturitním zkouškám.

  4. Se svojí milenkou si vyrazím k moři a společně s ní, si zde pořídím několik lechtivých obrázků digitálním fotoaparátem či kamerou.

Všechny tyto příklady spadají do kategorie „Důvěrné“. Ve všech těchto příkladech máme pořízena nějaká data o naší činnosti, která chceme nebo musíme nějakým způsobem uložit. Ve všech těchto případech však může dojít ke zneužití těchto dat. A jediným způsobem, jak se tomu bránit, je příslušná data zašifrovat.

Kdo nešifruje, není moderní

Šifrovat se v dnešní době dá cokoliv, od jednoduchého textu, přes obrázky a videa, archivy, až po celé pevné disky. Šifrovat se dají telefonní hovory. Šifrovat se dá televizní vysílání. Zkrátka, šifrovat lze v dnešní době naprosto vše. Šifrují se dokonce i peníze. Prostředků, kterými lze šifrovat, je na trhu mnoho, některé z nich jsou komerční, některé zdarma. Prakticky všechny (až na pár výjimek) se řídí stejnými kritérii a pracují na podobných principech. Některé standardy pro šifrování jsou veřejné, jiné podléhají přísnému utajení. Řadu z nich využívají vlády mnoha zemích, tajné služby, armády i policejní složky.

Často dochází i k tomu, že stejné standardy pro šifrování používají jak bezpečnostní složky států, tak i dělníci v továrnách. Jednou věcí je však způsob, jak data šifrovat, věcí druhou pak samotný nástroj. Jak jsem již zmínil, těchto nástrojů je opravdu celá řada, a to napříč operačními systémy (MS Windows, Unix/Linux, atd.). Dané nástroje musí být ověřeny z hlediska použitelnosti a hlavně z hlediska bezpečnosti. Zneužít se dá prakticky cokoliv a cracknutý software na šifrování může napáchat více škody než užitku. Nás budou zajímat nástroje určené pro použití na operačním systému Linux, zejména tedy na Ubuntu.

Ccrypt

Je to svobodný software, který je dostupný téměř v každé linuxové distribuci. Ve výchozí instalaci však nemá grafické rozhraní (GUI). Pracuje s příkazovou řádkou (ccrypt [mode] [options] [file...]). S jeho pomocí můžete zašifrovat text, soubory, i celý disk. Při troše snahy lze „vygooglit“ i nějaké to grafické rozhraní, respektive jeho integraci do pracovního prostředí Gnome, KDE, apod. Ccrypt je standardní součástí repozitářů Ubuntu.

SwiftCrypt

SwiftCrypt je proprietární nástroj pro šifrování textu s vlastním grafickým rozhraním, využívající standard AES-256 (256bitové klíče), jejž využívá mimo jiné i Národní bezpečností agentura Spojených států amerických (NSA). Přesně ta slavná agentura, jež si tak ráda přisvojuje roli vývojáře řady operačních systémů. Vzpomeňme si například na snahu této organizace obohatit jádro Linux o vlastní kódy či její podíl na vývoji Windows 7. SwiftCrypt se standardně vyskytuje v repozitářích Ubuntu, a to za částku 2,99 USD (pro instalaci je nutné registrovat se na Ubuntu.com). Použít jej lze velmi snadno, a to tak, že za pomoci klíčového slova (hesla), lze přes grafický formulář zašifrovat libovolné množství textu, nebo jej naopak dešifrovat.

Ubuntu

Ano, je to tak! Už samotné Ubuntu je nástrojem pro šifrování. Obsahuje několik nástrojů pro ochranu vašich dat. Kupříkladu už během instalace můžete zvolit možnost zašifrování disku, avšak pozor! Vždy může nastat nějaká situace, kdy bude nutné systém přeinstalovat, a v důsledku zašifrovaného pevného disku můžete navždy ztratit přístup k vašim cenným datům. V tomto směru je mnohem efektivnější vyčlenit pouze jeden oddíl na disku, který může být takto zašifrován, a zde pak citlivá data ukládat. Ubuntu rovněž obsahuje celou řadu softwaru pro bezpečnou komunikaci v síti a další nástroje.

Encmidara

Podobně jako SwiftCrypt, i Encmidara je proprietární nástroj (za 2,99 USD), který však pracuje na trochu odlišném principu. Zde nedochází k šifrování textu jako takového, ale šifrují se rovnou celé dokumenty a soubory. Tímto se tedy podobá více ccrypt, avšak disponuje jednoduchým grafickým rozhraním. Dostupné v repozitářích Ubuntu. Dokáže dokumenty zašifrovat i dešifrovat.

Gcipher

Gcipher, podobně jako SwiftCrypt, je nástroj sloužící k šifrování obyčejného textu, avšak k dispozici je zcela zdarma. Instalace obsahuje jednoduché grafické prostředí, a dokáže pracovat v několika módech. Je obsažen v repozitářích Ubuntu.

Master PDF Editor

Master PDF Editor není nástroj určený přímo k šifrování dat, za zmínku však stojí možnost šifrovat PDF dokumenty 128bitovým klíčem. Je dostupný v repozitářích Ubuntu, v současné době za 0 USD. Jedná se tedy o proprietární software, i když momentálně zdarma.

PHP, C, C++

Jste-li vývojářem webových či jiných aplikací, jistě máte povědomí o tom, že řada programovacích jazyků, zejména pak oblíbené PHP, obsahuje taktéž funkce pro šifrování dat. Jedná se zejména o již zmíněné funkce MD5 a crypt. Jejich příklady použití naleznete na www.php.net

Vyšší dívčí aneb šifrujeme přenosy

Šifrovat se pochopitelně dají i datové přenosy. Příklady z praxe mohou být protokoly HTTPS, SSH, VNC, SSL, apod. Obvykle se k tomu používají přenosy za pomoci jasně vymezených pravidel stanovených organizací Arpa. Ta stanoví, jakým způsobem, na jakých portech a síťových rozhraních může být daný protokol použit. Většina těchto protokolů se používá za předpokladu existence potřebných certifikátů, a to jak na straně serveru, tak i na straně klienta (pracovní stanice). Existují však i jiné cesty než výše zmíněné protokoly.

Proxy

Za zmínku stojí například služba proxy, jež v podstatě umožňuje skrýt přístup na danou službu v síti internet z pohledu serveru. I zde se používají šifrované přenosy a netýká se to pouze a jen webových stránek. Proxy lze použít i u řady dalších síťových aktivit. Tuto službu zprostředkovávají specializované servery v síti internet, jejich seznam naleznete na adrese www.proxy.org. Několik z nich sídlí i v České republice (http://www.mojeip.cz/anonymizer/). Řada aplikací, jako jsou webové prohlížeče, umí s těmito sítěmi pracovat přímo.

BitTorrent

Další službou, která je během posledních měsíců v souvislosti s tímto tématem hodně diskutována, je síť BitTorrent, konkrétně pak „Nový Megaupload“, tzv. Mega. Je to totiž (alespoň dle dostupných informací) první síť tohoto druhu, která šifruje nejen samotný přenos dat, ale i data ukládaná na servery. Otázkou je, zda se v tomto případě nejedná spíše o snahu zříci se odpovědnosti provozovatele za nelegální sdílení autorsky chráněných dat. Tak či onak, je to jedna z cest, jak data šifrovat. Mnoho sítí typu BitTorrent rovněž šifruje přenosy mezi klienty a servery. Pro BitTorrent existuje mnoho klientských aplikací, dostupných v repozitářích Ubuntu.

Tor

Asi nejvíce nechvalně proslulou aplikací v tomto směru je Tor, kterou prý hojně využívají i hackeři k nelegálním aktivitám. Avšak cílem této aplikace rozhodně asi nebylo krýt nelegální aktivity v síti, nýbrž poskytnout jejímu uživateli určitou míru anonymity. O to se snaží podobně jako proxy servery, avšak mnohem rafinovaněji. K anonymizaci nedochází prostřednictvím pouze jednoho či dvou serverů, ale celé sítě serverů na různých místech planety. Tor je nástroj, který se skládá z klientské aplikace (rovněž dostupné v repozitářích Ubuntu), a služeb v síti.

Vlastní šifra

Zkusíme si udělat šifru vlastní, abychom si ukázali, jak snadné to je. Používat budeme jen dva znaky, tedy 1 a 0, vstup a výstup. Rozdělíme si abecedu na skupiny:

000

001

100

000

A

B

C

001

D

E

F

100

G

H

I

010

J

K

L

111

M

N

O

101

P

Q

R

110

S

T

U

10

V

W

X

11

Y

Z

-

Chceme zašifrovat text „LinuxEXPRES je nejlepší“, a tak zastoupíme jednotlivá písmena čísly z jednotlivých skupin písmen, tedy skupin podle odstavců, což jsou 000, 001, a 100. Každé písmeno pak zastoupíme řádky 000, 001, 100, 010, 111, 101, 110, 10 a 11. Každému písmenu bude předcházet nejprve skupina a pak jednotlivé písmeno. Mezeru vyjádříme poslední položkou v tabulce:

LinuxEXPRES je nejlepší! = 10001010010000111110011010010001001100100001011001010010010001101001100001000100110011001111001001000010100010001001000101000110100100!

Samozřejmě tabulku si můžeme libovolně upravit, například tak, že abecedu budeme psát odzadu a změníme číselné údaje. Díky zastoupení znaky 1 a 0 lze přenášet šifru pomocí tónů jako morseovku. Každý bude očekávat Morseovu abecedu ale bude to šifra, kterou můžeme rovněž vysílat odzadu, aby to bylo ještě těžší...

Pamatuji si výpověď jednoho člena obsluhy odposlechové věže Dyleň u Chebu, který říkal, že povel k dopálení jaderných raket USA na tehdejší SSSR (Sovětský svaz socialistických republik) se vešel do jediného pípnutí. Tak trénujte :) Podotýkám, že Ubuntu obsahuje i software pro rádiové vysílání. Myslím, že by bylo mnohem těžší napsat článek o tom, co Ubuntu neobsahuje...

Diskuze (44) Nahoru