Maturitní téma: Informace a jejich význam (informatika, uchovávání informací, číselné soustavy, šifrování)
Informatika Informace znamená zprávu, sdělení, údaj. Informatika je vědní obor, který se zabývá strukturou, zpracováním, šířením a využitím informací. Obory informatiky jsou : → počítačová simulace – získávání dostatečně přesných informací o chování zkoumaných (simulovaných) předmětů v určitých podmínkách. Bez této možnosti by bylo nutné zkoumat chování přímo na předmětu, což je někdy nemožné nebo dosti náročné (časově, finančně…) → umělá inteligence – modeluje intelektuální činnosti člověka - rozeznávání tvarů a předmětů, zvuků, chutí a pachů a vytváření analogií mezi logickými úsudky; teorie her, matematické hypotézy a důkazy → počítačová grafika – v oboru informatiky je to hlavně teorie k vytváření matematických křivek→ tvary písmen a jiných zobrazovaných objektů → softwarové inženýrství – dnes nejrozšířenější odvětví informatiky - hlavně tvoření programů a všeho co k tomu patří (ovládací prostředí atd.) → další obory – např. teorie kódů, logiky, automatů, počítačové sítě, knihovní technika, databáze ...
Uchování informací Nejzákladnější jednotkou je BIT. Může nabývat hodnot 0 nebo 1. 8 bitů (b) tvoří 1 bajt (byte, B). Existují i další jednotky, nejsou však tolik jednoznačné a používané jako bit a byte: → word – je řada bitů, které je schopen procesor zpracovávat najednou. Závisí na hodnotě „data bus“ procesoru, nejčastěji 32b s příchodem nových procesorů ale i 64b. 1024 bajtů je 1 kilobyte (kB) informací. Předpony kilo- (K), mega- (M), giga- (G), eventuálně také tera- (T) a peta- (P) nemají stejnou hodnotu jako v ostatních vědních oborech, kde jsou to násobky tisíce, 1024 znamená 210 vycházející z binárního kódu, v praxi tento rozdíl nemá valný význam. Informace jsou zaznamenávány ve formě znaků, které vytváří DATA. Informace se uchovávají v kódech: → kódování - převod znaků nebo různých úkonů na různé symboly (každému úkonu, znaku se přiřadí jeden symbol: úkon, znak → symbol) a zároveň je to i předpis, jak k sobě přiložit jednotlivé prvky dané skupiny (zpětné dekódování: symbol → úkon). Jednou z částí je i šifrování (viz morseovka – každému písmenu je přiřazen symbol, hashovací funkce). Nejrozšířenější kódování znaků je pomocí ASCII (American Standard Code for Information Interchange) systému, který přiřazuje každému číslu od 0 do 255 jeden speciální znak. Takto se přechovává v počítači text. Data mohou být uložena v různých číselných soustavách. Základní soustavou pro zpracování dat je soustava binární (čísla jsou vyjádřitelná dvěma prvky: 0, 1). Dále se v menší míře používá i soustava osmičková a šestnáctková (dáno hardwarem – existují 16-ti i vícebitové procesory). Každá soustava je typická pro určitý druh dat.
→ zobrazování čísel a znaků – Každá soustava se zobrazuje jinak a má jinou sadu znaků. Stejné zápisy v různých soustavách mohou znamenat jiná čísla.
Šifrování Použití kryptografie (šifrování) může vyřešit většinu problémů ve všech oblastech počítačové bezpečnosti. Stále však existují případy, ve kterých samotné šifrování žádnou bezpečnost nezajistí. Také je dobré si uvědomit, že existují různé druhy šifer, přičemž každá je vhodná pro jiné použití. Kryptografie je věda zabývající se šifrováním, tedy utajováním informací. Naproti tomu kryptoanalýza se zabývá luštěním šifer. Zastřešujícím pojmem pro oba dva obory je kryptologie. Potřeba utajovat určité informace je pravděpodobně stará jak lidstvo samo. Nicméně o kryptologii můžeme hovořit až v případě, kdy všichni zúčastnění používají stejný vyjadřovací prostředek (např. písmo). Proto řadíme rozvoj těchto znalostí do starověku. Na úvod je třeba vysvětlit několik základních pojmů, které budu dále používat: Šifrovací algoritmus je funkce sestavená na matematickém základě a provádí samotné šifrování a dešifrování dat. Šifrovací klíč říká šifrovacímu algoritmu jak má data (de)šifrovat, podobá se počítačovým heslům, avšak neporovnává se zadaná hodnota s očekávanou, nýbrž se přímo používá a vždy tedy dostaneme nějaký výsledek, jehož správnost závisí právě na zadaném klíči. Délka klíče ovlivňuje, kromě jiného, časovou náročnost při útoku hrubou silou což je kryptoanalytická metoda, kdy postupně zkoušíme všechny možné hodnoty, kterých klíč může nabývat. Síla šifry. Čím silnější šifru použijeme, tím větší je třeba vynaložit úsilí na její prolomení. Je vědeckou prací kryptologů analyzovat různé algoritmy a posuzovat jejich sílu. Na druhou stranu i použití té nejsilnější šifry se jemně míjí účinkem, pokud klíč k jejímu dešifrování máme napsán na papírku přilepeným na monitor. Proto nelze šifrování samo o sobě považovat za dostatečné, ale vždy na něj hledět jako na součást celku. Kryptografické metody lze dělit podle několika hledisek, zmíním jen ty nejdůležitější. Jako první bych uvedl rozdělení na jednosměrné a obousměrné. U obousměrné šifry jsme schopni při znalosti správného klíče dešifrovat výsledek a získat tak opět originál. Zatímco u jednosměrné tento zpětný proces provést nelze (a obvykle se ani nepoužívá žádný klíč). Ačkoli se na první pohled jednosměrné šifry mohou zdát nevyužitelné, své uplatnění mají. Nejčastěji slouží k ukládání hesel, čímž se zabrání jejich odhalení i po zpřístupnění jejich uložené verze, ale zároveň zůstává možnost ověření hesla zadaného uživatelem - zadanou hodnotu stačí zakódovat a porovnat s uloženou variantou. Obdobou jednosměrných algoritmů jsou výtahy zpráv a digitální podpisy. Obousměrné šifry používáme všude tam, kde chceme mít možnost zpřístupnit původní text - ale jen vybrané skupině lidí, znajících příslušný klíč. Jiným možným způsobem rozdělení algoritmů je na šifrování s privátním klíčem (zvaném též symetrické či se symetrickým klíčem), na šifrování s veřejným klíčem (zvaném též asymetrické či s asymetrickým klíčem) a na šifrování hybridní.
Šifrování s privátním klíčem se vyznačuje existencí jediného klíče, který používáme jak pro zašifrování zprávy, tak i pro její dešifrování. Tyto algoritmy bývají relativně rychlé, ale jejich použití je omezeno na případy, kdy účastníci znají daný klíč předem. Naproti tomu asymetrické šifrování používá klíče dva - privátní a veřejný. Cokoli zašifrováno jedním klíčem, lze dešifrovat pouze druhým klíčem a naopak. Velkou výhodou tohoto přístupu je, že jeden z klíčů (třeba ten který jsme označili jako veřejný) můžeme dát k dipozici komukoliv (tedy zveřejnit ho). Kdokoli nám pak chce napsat tajnou zprávu, použije k jejímu zašifrování tento veřejný klíč. Ani on sám, ani žádný jiný vlastník našeho veřejného klíče ji nebude schopen dešifrovat. Toho bude schopen pouze držitel druhého páru - privátního klíče, jímž bychom v ideálním případě měli být pouze my. Chceme-li poté adresátovi poslat odpověď, nemůžeme ji zašifrovat svým privátním klíčem, neboť by ji byl schopen dešifrovat kdokoli, ale musíme použít příslušný veřejný klíč. Šifrování pomocí privátního klíče se používá v případě, kdy zpráva není tajná, ale jde nám o její autentičnost - bude nepopiratelné, že pochází od nás. K tomuto účelu se ale více hodí digitální podpisy. Hybridní šifrování je kombinací obou výše zmíněných a nachází největší uplatnění v dočasné komunikaci aplikací typu klient/server. Pomalé asymetrické algoritmy se použijí k výměně náhodně vygenerovaného klíče sezení, který slouží ke kódování další komunikace pomocí symetrických šifer. Kromě právě uvedeného způsobu kódování komunikace po výměně klíče sezení, se šifrování s privátním klíčem používá jako ochrana lokálně uložených dat před nepovolaným návštěvníkem. Pokud máme uložena nechráněná data, může je získat kdokoli s fyzickým přístupem k našemu počítači. Fyzická ochrana má svá omezení a lze ji s vynaložením příslušného úsilí překonat. Jsou-li data chráněna ještě kryptologií, bezpečnost tím významně zvýšíme. Stejný bezpečnostní problém představují zálohy, které se většinou nacházejí na malém přenosném médiu ideálním pro krádež. S použitím šifrování je ovšem spojeno riziko ztráty dat, zapomeneme-li potřebný klíč. Naproti tomu šifrování s veřejným klíčem má o něco širší použití. Ačkoli bychom ho mohli využít i pro kódování lokálních dat, je to nepraktické kvůli potřebě dvou různých klíčů a náročnosti algoritmů. Oddělenost klíčů je přínosem pro komunikaci subjektů, jež se předem na tajném klíči neměli možnost dohodnout.
Výtahy zpráv (Message digest) Součástí kryptologie jsou i tzv. výtahy zpráv (message digest) označované i jako kryptografické hash kódy. Nejvýstižnějším názvem je však kryptografický kontrolní součet. Jak jsem se již zmínil, jedná se o jednosměrné algoritmy - z výsledku nejsme schopni obnovit originál. Další jejich významnou vlastností je délka výsledného kódu - je stále stejná a poměrně krátká (např. 128 bitů). Z logiky věci vyplývá, že pro minimálně jeden výtah bude existovat více původních dokumentů. Je zde patrna analogie k obyčejným kontrolním součtům (jako např. CRC). Ty však bývají výrazně kratší (často 16 bitů) a je snadné sestavit zdrojový dokument, který vyhovuje danému kontrolnímu součtu, což u kryptografických kontrolních součtů možné není. Vlastnosti dobré hashovací funkce jsou: ze vstupu proměnné délky vytváří malou hodnotu ze stejného vstupu vytváří vždy stejný výstup
každé výsledné hodnotě by mělo odpovídat více vstupních kombinací algoritmus by neměl být snadno odvoditelný či invertovatelný malá změna na vstupu má za následek velké změny ve výstupu Výtahy zpráv se zabývám ze dvou důvodů. Zaprvé jsou důležitou součástí digitálních podpisů. Zadruhé zajišťují kontrolu integrity, která je v otázce bezpečnosti velmi významná. Vytvoříme-li nějaký dokument (obecně jakýkoli soubor) a poté si uložíme i jeho výtah, můžeme později zkontrolovat zda aktuální verze našeho souboru nebyla změněna. Při použití dobré hashovací funkce by případný narušitel neměl být schopen zajistit, aby výtah upravené verze byl stejný jako neupravené. Pokud ale zná použitou funkci, je schopen vygenerovat výtah nový, proto je nutné, aby původní výtah originálního dokumentu nebyl uložen spolu s dokumentem. Digitální podpisy sice řeší tento problém o něco lépe, ale zato složitěji, proto se lze často setkat se samotnými výtahy. Jako příklad bych uvedl internetový server. Jeho správce musí počítat s možným průnikem a je pro něj tedy důležité mít nástroj pro snadnou kontrolu, zda nedošlo ke změně významných souborů. Pokud si výtahy důležitých souborů pořídí před připojením serveru do sítě a uloží na vyjímatelné medium (včetně programu pro jejich kontrolu), získá nejen možnost kontroly, ale i výhodu, že případný pachatel pravděpodobně nepozná jakou kontrolu provádíte a jak před ní utajit své nekalé aktivity.
Digitální podpisy Ačkoli i s digitálními podpisy jsou jisté starosti, řeší mnoho výše uvedených problémů a přinášejí několik dalších zlepšení. Digitální podpis je nejčastěji výtah zprávy zašifrovaný privátním klíčem autora daného dokumentu a je distribuován spolu s ním. Máme-li příslušný veřejný klíč, jsme schopni dešifrovat zakódovaný výtah zprávy a porovnat ho s výtahem, který vytvoříme z obdrženého dokumentu. Digitální podpis nám zajišťuje tři důležité funkce: integritu autentifikaci (víme kdo zprávu podepsal) nepopiratelnost (autor nemůže v budoucnu zapřít, že zprávu podepsal) Mohli bychom samozřejmě použít privátní klíč k zakódování celé zprávy, ale byla by to náročná operace, která u rozsáhlých souborů může trvat velmi dlouho. Krom toho, abychom zajistili výše uvedené vlastnosti, museli bychom stejně spočítat výtah zprávy a ten zašifrovat spolu s dokumentem. Proto je v každém případě výhodnější zašifrovat pouze příslušný výtah. Zpráva (soubor) bude čitelná (použitelný) i v případě, že nemáme příslušné nástroje pro ověření její pravosti - znamená to sice podstoupit jisté riziko, ale můžeme se sami rozhodnout. Za předpokladu, že máme potřebné programové vybavení, je poslední nutnou součástí veřejný klíč. Na první pohled nepředstavuje jejich získání velký problém, neboť jsou ze své podstaty veřejné.
Příklady šifrovacích algoritmů Mezi algoritmy používající pouze privátní klíč (symetrické šifrování) patří např. DES a jeho vylepšené verze dvojitý či trojitý DES, IDEA, Skipjack, CAST5 a další. Algoritmy používají veřejný klíč (asymetrické šifrování) jsou náročné nejen na čas, ale i na vymyšlení, a neexistuje jich proto velké množství. Nejrozšířenější je bezpochyby RSA. Dalším známým je ElGamal. Pro vytváření kryptografických kontrolních součtů se používají např: MD2, MD5 (Message Digest, otisk délky 128 bitů), SHA-1 (Secure Hash Algorithm, otisk délky 160 bitů), HAVAL, SNEFRU, RIPEMD160 a jiné. Na konec pojednání o šifrovacích algoritmech bych upozornil, že již poměrně dávno byla dokázána existence nepřekonatelné symetrické šifry, která se dokonce sestává pouze z jediné matematické operace a to XOR (exclusive or). Nevýhodou tohoto algoritmu je skutečnost, že pro zajištění zmíněné nepřekonatelnosti je třeba použít náhodný klíč o stejné délce jako původní zpráva a tento klíč nesmí být použit více než jednou.
Distribuce veřejných klíčů, Certifikační autority Vlastnictví cizích veřejných klíčů je rozhodující v mnoha situacích, z nichž bych vzpomenul kontrolu digitálních podpisů, šifrování zpráv, šifrování komunikace. Jak jsem se již několikrát zmínil, algoritmy pro šifrování s veřejným klíčem jsou časově náročné a používají se tedy většinou jen pro výměnu náhodného klíče sezení, který se použije v nějaké silné symetrické šifře. Problém s veřejnými klíči však stále zůstává. Dokonce vzniká další nezanedbatelný problém (který však jen zmíním), a tím je onen náhodný klíč - jde o to, aby byl doopravdy náhodný. Vzorová komunikace mezi dvěma subjekty A a B by mohla vypadat asi takto (subjekt může být jak fyzická osoba, tak počítač - server poskytující služby): A>B Ahoj, tady máš můj veřejný klíč B>A Nazdar, tady je můj A>B {zpráva šifrovaná veřejným klíčem B} B>A {zpráva šifrovaná veřejným klíčem A} Nejprve dojde k výměně klíčů a poté se vše šifruje klíčem adresáta. Je to významné zvýšení bezpečnosti oproti nešifrované komunikaci. Pokud se někde na cestě mezi A a B nachází cizí agent X, který pouze komunikaci pozoruje, vidí samá nesmyslná (šifrovaná) data a nebude schopen je dešifrovat ani v případě, že zachytil úvodní výměnu klíčů, neboť k dešifrování je potřeba privátního klíče. Náhodného pozorovatele by to jistě odradilo, ale odhodlaného agenta? Tento mechanismus má dvě hlavní slabiny. Agent X se může stát prostředníkem v komunikaci popř. se rovnou vydávat za jeden ze subjektů. Kromě přečtení důvěrných informací je schopen zprávu zašifrovat uloženým veřejným klíčem a poslat původnímu adresátovi. Proto si komunikující subjekty nebudou vědomi odposlouchávání, což je tedy horší výsledek než kdyby komunikovali otevřeně. Případně bude-li X tvrdit, že je např. B, neexistuje v tomto modelu způsob, jak to ověřit. Prozkoumáme-li oba dva problémy, zjistíme, že vše závisí na obdržení správného veřejného klíče subjektu, se kterým chceme doopravdy komunikovat. Nejjistější je jeho fyzické získání přímo od dané osoby (v případě serveru pak od jeho poskytovatele). To však postrádá ono kouzlo komunikačních technologií a hlavně to v mnoha případech není realizovatelné.
Pro zajištění autentičnosti byli přece vymyšleny digitální podpisy. Nemůžeme ovšem chtít, aby si vlastník sám podepsal veřejný klíč, neboť ho nemáme jak zkontrolovat. Proto ho musí podepsat někdo, jehož veřejný klíč už máme. Chceme-li ale navázat bezpečné spojení s někým neznámým, je velmi nepravděpodobné, že máme společného přítele. Za tímto účelem vznikly Certifikační autority (CA). Bude-li CA dostatečně známý subjekt, splní onu úlohu společného přítele. Možná to vypadá geniálně, ale některé problémy stále přetrvávají. Nejprve potřebujeme vůbec získat veřejný klíč dané autority. A jsme téměř tam, kde jsme byli. Zde již schopnosti veškeré počítačové techniky končí a je třeba využít jiných metod. Z jakéhokoli získaného klíče, jsme schopni spočítat jeho otisk (fingerprint), což není nic jiného než kryptografický kontrolní součet, tedy jedinečná to hodnota. A tento otisk musíme porovnat s originálem (celý klíč je příliš dlouhý na nějaké porovnávání). U známé certifikační autority se očekává, že otisky jejího klíče byly uveřejněny v nějaké knize či jinak nedigitálně uveřejněny. Další možností je podle telefonního seznamu najít číslo na vlastníka a otisk ověřit telefonicky. Pokud telefonicky (nebo podobně) ověříme veřejný klíč subjektu, se kterým chceme přímo komunikovat, další problémy nenastávají. Myslíme-li si, že CA je zodpovědná (důvěřujeme ji), pak tedy věříme, že máme veřejný klíč požadovaného subjektu. Pokud ale CA podepíše, cokoliv mu kdo podstrčí (či za úplatu) - a máme-li toto podezření, nemůžeme předloženému klíči věřit. Ještě bych doplnil, že podepsanému veřejnému klíči spolu s dalšími identifikačními údaji se říká certifikát a vydává se obvykle na dobu určitou. Certifikáty tedy hrají v bezpečné komunikaci důležitou roli, nelze však zapomínat, že jsou založeny na důvěře, kterou máme k dané autoritě, jež je vystavila. S přihlédnutím ke zmíněným vylepšením lze původní příklad vzorové komunikace vylepšit. Možností je několik, uvedu část úvodní autentifikace, která se požívá při navazování komunikace se serverem. A>B Ahoj, rád bych si popovídal s B B>A Já jsem B, tady je můj certifikát A>B Certifikát je v pořádku, ale dokaž že je tvůj B>A Hele A, já jsem doopravdy B. (Podpis). A>B Tak jo, tady máš náš tajný klíč sezení. (Zašifrováno Veřejným Klíčem B). B>A Zašifrováno Klíčem Sezení(zpráva+její výtah) Veškerá další komunikace může probíhat soukromě, šifrovaná symetrickým algoritmem za použití vyměněného klíče. Kóduje se nejen zpráva samotná, ale i její kontrolní součet, aby nemohlo dojít k podvržení náhodných dat (přestože klíč sezení nikdo nezná, stále nám může podvrhnout náhodná data, která po dekódování naším klíčem dají jiná náhodná data, u kterých však nebude souhlasit kontrolní součet a zjistíme tedy, že jsme obdrželi porušenou zprávu)
Příklady certifikačních autorit Certifikační autoritou se může stát kdokoli, jde jen o to mít důvěru ostatních. Spousta větších společností, které mají co do činění s počítači, vystupuje taktéž jako CA. Nejvíce příkladů najdeme pochopitelně v USA. Nejznámější je patrně VeriSign, Inc. . Z dalších jen namátkově uvedu GTE CyberTrust, Thawte a AT&T. Budeme-li chtít využít služeb českých autorit, nemáme mnoho na výběr. V současnosti existuje pouze jediná CA, která má státní licenci pro udělování kvalifikovaných certifikátů (kvalifikovaný certifikát je elektronická obdoba občanského průkazu, sloužící ke komunikaci se státní správou, bankami apod.). Je jí 1.CA (http://www.ica.cz) jež je provozována firmou PVT.