Kryptografie
dříve byla zajištěna bezpečnost pomocí bezpečnostních modelů (přístupová práva) šifrování se rozšířilo díky rozšiřování bezpečnosti (první větší rozmach za 2. světové války, např.: německý šifrovací stroj Enigma)
symetrická kryptografie » stejný šifrovací / dešifrovací klíč při šifrovacím / dešifrovacím algoritmu použitém na plantext (původní data); používá se pouze jeden klíč v kryptografii se používají substituce a transpozice další možnosti substituce (liché a sudé šifrovat podle jiných abeced) transpozice (účelnější než substituce)
v současnosti se používají pouze známé algoritmy (lepší pro prodej, nikdo nechce neznámé, mohou být snadněji prolomitelné, u těch známých se veřejně sleduje, jak rychle se prolomí) algoritmus musí být takový, aby bez znalosti klíče nešel za „ přijatelně dlouhou dobu “ prolomit
- kryptoanalýza (použití: vojsko, zločin); algoritmus DES - 32bit » 2 32 = 4,3 x 10 9, to znamená jeho prolomení při rychlosti výpočetního zařízení 1ms za 36 minut; proto tento algoritmus od února 2001 přestal být standardem, vznikly novější algoritmy DES - 56bit, 128bit, 168bit - proudové šifrování (bit po bitu); blokové (šifruje se celý blok) - základ šifer H. Feistel (IBM, 1973)
princip šifrování: plantext o délky 2w (původní text, většinou 64bit) se rozdělí na poloviny o délce w (levá a pravá oblast) algoritmus klíče vygeneruje podklíče pravá oblast se zpracuje určitou F funkcí pomocí podklíče a přesune se na levou stranu levá oblast se zpracuje funkcí xor (Å) s výsledkem zpracování pravé oblasti principem je použití různých podklíčů a funkce Å typický počet těchto cyklů (obměn) je 16 » round při použití většího bloku než 64bit dojde ke zvýšení bezpečnosti a snížení rychlosti čím větší je klíč, tím je šifrování bezpečnější a pomalejší
od roku 1977 byl šifrovacím standardem DES (data encryption standard) v klíči se používal levý Shift; v algoritmu nebyla nalezena matematická slabina, ale nevýhodou byl krátký klíč; v roce 1998 byl vyvinut stroj DES Cracker (hardware prolamovač) F funkce - jako funkce se použijí permutace, potom XOR a pak se provádí substituce (S- box), opět permutace a opět se vše ukončí funkcí XOR
IDEA (1991, jiný způsob generování klíčů a jiná F funkce » lineární sčítání a násobení 16bit čísel) BLOWFISH, RC5 (rok 1993)
možnosti předání klíčů: přímo (jedna strana generuje klíč a předá ho druhé) nepřímo (třetí strana generuje klíč a předává ho dvěma dalším stranám) změna starého klíče novým (způsobem, na kterém se obě strany předem dohodnou) asymetrickou kryptografií vytvořeným šifrovaným kanálem (tím se prohodí symetrický klíč, většinou one-session key (pouze pro jedno spojení; pernament key je trvalý)
asymetrické šifrování (public key) je založeno na velmi obtížných matematických funkcích, má delší klíče než symetrické šifrování; umožňuje autentizaci; vyvíjí se asi tak 25 let (od 1976 kdy to dovolila úroveň poznání); funkce jsou výpočetně složité a zdlouhavé; asymetrická kryptografie užívá 2 klíče (private a public key); kvalita šifry je dána délkou klíče a dobou prolomitelnosti využití asymetrického šifer: šifrování, autentizaci plantext se pomocí public key zašifruje např.: algoritmem RSA a pošle adresátovi, který ho pomocí svého soukromého klíče dešifruje
- klíče vznikají současně, musí jít o výpočetně snadnou operaci a šifrování musí být také poměrně snadné; dešifrování musí být při znalosti klíče výpočetně snadné; musí být velmi obtížné vypočítat si z veřejného klíče soukromý klíč a musí být také obtížné při znalosti šifrovaného textu a veřejného klíče dešifrovat původní text (plantext)
generování RSA (Rivest Shamir Adleman) prvočísla p a q » n = p . q » f (n) = (p - 1) . (q - 1) » d = e -1 mod f(n) » de = 1 mod f(n) podmínka - f(n), e musí být nesoudělné; public key {e, n}; private key {d, n} šifrování C = M (původní text) e (mod n) a dešifrování M = C d (mod n) privátním klíčem se podepisuje (autentizuje) veřejným klíčem toho komu zprávu posíláme se šifruje
funkce Hash 1) libovolná délka vstupu; 2) výstup přesně dané délky; 3) H(x) je relativně snadno spočitatelná (hardware i software způsobem); 4) nesnadné spočítat x z H; 5) x, y » H(x) = H(y); 6) (x,y); nejpoužívanější Hash funkce jsou MD5, SHA-1, RIPEMD-160 Hash funkce spočte zkrácenou charakteristiku zprávy (RSA používá funkce MD5, DSS f-ce SHS)
Kategorizace útoků Útok na HW, SW, DATA Útok na: důvěrnost – analýza dopadu, vyzařování, odposlech komunikací, analýza toku zpráv, kopírování paměti, agregace, dedukce. Integritu – modifikace SW na škodlivý SW (viry, trojské koně, zadní vrátka, logická bomba), použití neodsouhlaseného HW (obcházení bezpečnostních opatření), narušení transakcí, modifikace dat, replikace dat. Autenticitu – vkládání falešných zpráv, replikace. Dostupnost – odmítnutí služby, zahlcení, výpadek energie. Účtovatelnost, nepopiratelnost, spolehlivost Útok na: fyzickou bezpečnost, personální, komunikační, na bezpečnost dat, provozní bezpečnost.
Monoalfabetické šifry Monoalfabetická šifra je dvojice prostých zobrazení φ: A × K → A a ψ: A × K → A taková, že platí ψ(φ(x, k), k) = x, pro každé x ∈ A a každé k ∈ K. Narozdíl od obecné definice symetrické šifry zde tedy zobrazujeme jednotlivé znaky, nikoli celé posloupnosti. Při použití abecedy o N znacích odpovídá klíč k jedné permutaci množiny o N prvcích.
Pro anglickou abecedu o 26 znacích tedy existuje 26! ≈ 4 1026 klíčů. Množství jistě dostatečně velké na to, aby alespoň bez použití výpočetní techniky nebylo reálné všechny varianty klíče vyzkoušet. Přesto je již od středověku monoalfabetická šifra považována za nedostatečně bezpečnou.
Metodou pro určení klíče k pouze na základě znalosti zašifrovaného textu y je statistika výskytu jednotlivých znaků v zašifrovaném textu. Každý přirozený jazyk totiž obsahuje různá písmena s různou frekvencí.
Například v češtině (při zanedbání háčků a čárek) je nejčastějším písmenem e, těsně následované písmenem a. Další písmena, ostatní samohlásky a nejčastější souhlásky, mají frekvenci výskytu více než o polovinu menší. Pokud tedy dostaneme text napsaný v češtině a zašifrovaný monoalfabetickou šifrou, stačí obvykle najít dva nejčastěji se vyskytující znaky. V tom případě se s velkou pravděpodobností se bude jednat o obrazy písmen e a a.
Podobným způsobem pak lze pokračovat dál až do úplného určení šifrovacího klíče. Trochu zajímavější je otázka, jak určit pouze na základě znalosti zašifrovaného textu, zda byl text zašifrován monoalfabetickou šifrou, či šifrou jinou. Popřípadě též, v jakém jazyce byl původní text napsán. I zde může pomoci statistika výskytu písmen. Jak již bylo řečeno, v češtině existují dva znaky {e, a} s frekvencí výrazně vyšší než znaky ostatní.
Pokud zjistíme podobnou vlastnost i u zašifrovaného textu, můžeme předpokládat, že se jedná o monoalfabetickou šifru, a že její jazyk je čeština. V případě angličtiny má písmeno e výsadní postavení, ostatní znaky včetně a se vyskytují mnohem méně. Anglický text zašifrovaný monoalfabetickou šifrou bude tedy také obsahovat jeden znak s podstatně větší frekvencí výskytu než znaky ostatní.
Pro číselné vyjádření uvedených skutečností mohou posloužit různé statistické veličiny odvozené z frekvence výskytu písmen abecedy. Jednou z nejšikovnějších je index koincidence. Pro daný text y spočítáme relativní frekvenci výskytů všech znaků, tedy hodnoty pc(y) rovné podílu počtu znaků c v textu y a délky textu y. Indexem koincidence textu y pak nazveme hodnotu I(c) = .
Při znalosti dostatečně dlouhého textu zašifrovaného monoalfabetickou šifrou lze pomocí indexu koincidence určit původní jazyk textu bez nutnosti text rozšifrovat. Pokud byl text zašifrován jinou šifrou než monoalfabetickou, lze to též pomocí indexu koincidence odhalit. V takovém případě bude index koincidence podstatně menší a bude se blížit indexu koincidence náhodně generovaného textu, tedy 0,03846.
Poznamenejme ještě, že uvedené úvahy mohou být ovlivněny nejen jazykem textu, ale i jeho charakterem. Zcela jistě bude jinak vypadat statistika počtu výskytů písmen, a tím pádem i index koincidence u českého textu z krásné literatury a u odborného textu třeba v této knize. V této knize se totiž vyskytuje řada odborných výrazů převzatých z angličtiny či latiny a jejich uvedení statistiku výskytu písmen naruší, a tím změní i index koincidence textu.
Polyalfabetické šifry Polyalfabetická šifra je dvojice prostých zobrazení φ: An × K → An a ψ: An × K → An, taková, že platí ψ(φ(x, k), k) = x, pro každé x ∈ An a každé k ∈ K. Zde tedy nezobrazujeme jednotlivá písmena, ale jednotlivé posloupnosti písmen délky n. Číslo n se nazývá délka klíče. Z teoretického hlediska je každá symetrická šifra šifrou polyalfabetickou, za délku klíče lze totiž zvolit délku původního textu a definice symetrické šifry a polyalfabetické šifry splývají.
Pro praktické použití ale mají význam polyalfabetické šifry, kde délka klíče je podstatně menší než délka původního textu. V minulých stoletích byla velmi oblíbená tzv. Vigenérovská šifra. Jejím klíč se odvodí z jistého slova či hesla. Délka klíče pro polyalfabetickou šifru pak bude délkou tohoto slova.
Šifrovací zobrazení φ se pak rozpadne na n monoalfabetických zobrazení φ1, φ2, ... , φn, kde každé z těchto zobrazení je monoalfabetickou šifrou danou posunem písmene v abecedě o tolik znaků, kolik je pozice příslušného písmene hesla v abecedě. Vigenérovskou šifru bylo snadné realizovat jen pomocí tužky a papíru a přitom se dlouhou dobu zdálo, že bez znalosti hesla ji nelze prolomit.
Až práce Fridricha Kasiského na konci 19 Až práce Fridricha Kasiského na konci 19. století ukázala slabinu Vigenérovy šifry pomocí metody, která připomíná použití indexu koincidence pro monoalfabetickou šifru.
Při použití šifrovacích strojů, ať již mechanických, či elektronických počítačů, vzrůstají možnosti výpočtu, a tím poněkud klesá na významu požadavek na snadnou vyčíslitelnost funkcí φ a ψ. Proto mohou být používány polyalfabetické šifry se stále větší délkou klíče a se stále složitějším šifrovacím zobrazením.
Prvním všeobecně známým šifrovacím strojem na světě byl šifrovací stroj Enigma používaný Němci za druhé světové války. Pomocí tří kotoučů s 26 polohami stroj realizoval polyalfabetickou šifru s délkou klíče 263 = 17256. Počet možných klíčů byl pak ještě zvětšen předřazením monoalfabetické šifry před tuto zmíněnou šifru polyalfabetickou.
Díky velkému vojenskému významu tohoto stroje byly na jeho dešifrování nasazeny velké prostředky, především v Polsku a ve Velké Británii. Poznatky získané při prolamování šifry stroje Enigma pak výrazně napomohly i konstrukci moderních polyalfabetických symetrických šifer. Moderní polyalfabetické šifry pracují obvykle s dvouprvkovou abecedou 0 a 1.
Pro realizaci šifrovacího zobrazení φ se používá vhodně stanovená posloupnost bitových operací, jako je sčítání a cyklický posun bytů v určitém bloku. Konkrétní šifrovací algoritmy jsou chráněny různými patenty a možnosti jejich použití se řídí i politickými dohodami. To je případ i dnes nejpoužívanější symetrické šifry DES (Data Encryption Standard). Jde o polyalfabetickou šifru s délkou klíče 56, či 64 bitů.
Konkrétní šifrovací algoritmus je velmi komplikovaný Konkrétní šifrovací algoritmus je velmi komplikovaný. Neznáme jiný způsob prolomení šifry DES než vyzkoušení všech možných hodnot klíčů. Těch je již v případě 56-bitové šifry 256 = 72 057 584 037 927 900, v případě 64-bitové 264=18 446 744 073 709 600 000. Zdá se, že alespoň při možnostech současných počítačů je 64-bitový klíč šifry DES bezpečný, u 56bitového klíče již taková jistota nepanuje.
Ani šifra DES, ani jakákoliv jiná symetrická šifra ovšem nedokáže eliminovat možnost narušení pomocí zachycení klíče k. Tento klíč si ovšem musí šifrující a dešifrující strana předem předat a v tom spočívá hlavní úskalí použití jakékoliv symetrické šifry.
Asymetrické šifry Zásadním průlomem v teorii šifrování bylo objevení asymetrických šifrovacích metod, čili tzv. šifrování s veřejným klíčem. Základní myšlenkou je nepoužívat klíč jeden, ale klíče dva. Veřejný šifrovací klíč s, bude všeobecně znám a kdokoli může zprávu, kterou mi chce poslat, tímto klíčem zašifrovat. Tajný, soukromý dešifrovací klíč t, zná pouze pověřená osoba.
Pouze ona tedy může zprávu dešifrovat. Nikdo jiný ne, ani odesílatel zprávy nemůže jím zašifrovanou zprávu zpětně dešifrovat. Samotné šifrování lze opět popsat vzorcem y = φ(x, s), dešifrování vzorcem x = ψ(y, t) a pro každou zprávu x a každou dvojici veřejný a tajný klíč s a t musí být splněna rovnost ψ(φ(x, s), t) = x.
Při volbě klíče se nejprve zvolí klíč tajný Při volbě klíče se nejprve zvolí klíč tajný. Klíč veřejný se z něj pak odvodí jednoduše vyčíslitelným algoritmem. Opačný postup, odvodit z veřejného klíče klíč tajný, je pak vyčíslitelný obtížně. Funkce, která z tajného klíče odvozuje klíč veřejný, patří do skupiny tak zvaných jednocestných funkcí. Tyto funkce lze jednoduše vyčíslit, ale jejich inverzní funkce snadno vyčíslitelné nejsou. Při použití asymetrické šifry odpadá nutnost výměny klíčů předcházející samotnému šifrování, což byla hlavní slabina šifer symetrických.
Princip asymetrického šifrování v této obecné poloze byl znám již od 50. let 20. století. Až o dvacet let později se však podařilo nalézt první jednocestné funkce použitelné pro praktickou realizaci asymetrických šifer. První z nich byla patrně McEllisova šifra založená na jednocestné funkci násobení matic. Jejím autorem je anglický kryptograf James Ellis. Šifra má zajímavou fyzikální motivaci.
Odesílatel a příjemce zprávy jsou spojeni analogovým přenosovým kanálem. Příjemce zprávy do něj pošle v přesně stanoveném okamžiku šum, jehož přesná povaha je známa jen jemu. Zároveň odesílatel posílá zprávu, která má být utajena. Zpráva je v přenosovém kanále spojena se šumem a nikdo ji nedokáže přečíst. Pouze příjemce, který přesnou povahu šumu zná, může šum zpětně odfiltrovat, a tím zprávu dešifrovat. Na základě této myšlenky sestavil Ellis maticový algoritmus, který uvedený postup modeluje. Šifra se však nedočkala většího rozšíření, především proto, že výzkum Jamese Ellise byl anglickou vládou prohlášen za tajný.
Většího rozšíření dosáhly šifry odvozené na základě jednocestných funkcí z teorie čísel, především pak na vlastnostech součinů prvočísel. Mezi nimi je nejpoužívanější šifra RSA pojmenovaná podle jmen jejich objevitelů (Ronald Rivest, Adi Shamir a Leonard Adlemann). Při použití RSA šifry nejprve šifrující strana zvolí dvě, pokud možno hodně velká prvočísla p a q. V praxi se v dnešní době používají prvočísla řádu kolem 10300, tedy čísla, jejichž dekadické vyjádření má asi 300 číslic. Na základě prvočísel p a q se spočítá jejich součin N = p ⋅ q, nazývaný šifrovací modul a dále číslo Φ(N) = (p − 1) ⋅ (q − 1).
Znak Φ zde nemá nic společného s označením šifrovací funkce φ Znak Φ zde nemá nic společného s označením šifrovací funkce φ. Je jím je označována tzv. Eulerova funkce, udávající počet přirozených čísel menších nebo rovných N a nesoudělných s N. Jelikož je N součinem dvou prvočísel, je takových čísel právě (p − 1) ⋅ (q − 1). Konečně zvolí šifrující strana dešifrovací exponent t jako libovolné číslo nesoudělné s Φ (N) = (p − 1) ⋅ (q − 1). Jelikož je t nesoudělné s Φ (N), má kongurence (rovnice pro prvky z okruhu zbytkových tříd při dělení číslem Φ (N)) t ⋅ s = 1 mod Φ (N) jediné řešení s. Toto řešení se dá snadno najít pomocí Eulerova algoritmu. Blíže je popsáno například v (Grošek, Porubský, 1992), či v libovolné učebnici elementární teorie čísel.
Veřejným klíčem nyní bude modul N a šifrovací exponent s Veřejným klíčem nyní bude modul N a šifrovací exponent s. Tajný klíč tvoří původní prvočísla p a q spolu s dešifrovacím exponentem t. Jak odvodit z tajného klíče veřejný, bylo popsáno výše. Opačný postup není jednoduše možný, neboť pro případné odvození t z s jako řešení kongurence t ⋅ s = 1 mod Φ (N) je třeba znát hodnotu Φ(N) = (p − 1) ⋅ (q − 1), a tu nelze zjistit bez znalosti hodnot p a q, tedy bez rozkladu čísla N na součin prvočinitelů.
Samotné šifrování pak funguje podle vzorce y = xs mod N, kde x je původní zpráva, y zašifrovaná zpráva, s veřejný šifrovací exponent a N šifrovací modul. Dešifrování probíhá obdobně podle vzorce x’ = yt mod N. Korektnost šifry zaručuje následující vztah: x’= y t mod N = x s·t mod N = x k·Φ(N)+1 mod N = 1 ⋅ x mod N = x. V předposledním kroku byl použit poznatek z teorie čísel nazývaný Malá Fermatova věta, podle které je xΦ (N) = 1 mod N pro každá dvě nesoudělná čísla x a N.
Šifra RSA není zdaleka jediná, která je založena na jednocestných funkcích. Lze užít a užívají se i systémy založené na jiných jednocestných funkcích. Některé možnosti pouze naznačíme: zprávu lze kódovat třeba tak, že ji rozdělíme do bloků. Klíč bude utajovaný vektor w přirozených čísel. Obrazem každého bloku bude přirozené číslo získané jako skalární součin kódovaného bloku s tímto vektorem
Hybridní kryptosystémy Asymetrické šifrovací algoritmy sice odstraňují nutnost výměny klíčů předcházející samotnému šifrování, jsou však obvykle dosti náročné na prováděné výpočty. Zvláště v případě, že by šifrovaný text byl velmi dlouhý, mohlo by jeho zobrazení asymetrickou šifrou trvat dlouho. V praxi používaným kompromisem mezirychlou a nepříliš zabezpečenou symetrickou šifrou a pomalejší, ale bezpečnější asymetrickou šifrou, jsou hybridní šifrovací systémy.
V současnosti nejvíce rozšířený hybridní systém PGP kombinuje symetrickou šifru DES, či její varianty a asymetrickou šifru RSA. Nejprve je náhodně vygenerován klíč pro symetrickou šifru DES. Tímto klíčem je celá, libovolně dlouhá zpráva zašifrována. Samotný klíč je pak relativně krátký řetězec znaků, je zašifrován asymetrickou šifrou RSA a přidán jako dodatek ke zprávě. Díky tomu, že klíč pro symetrickou šifru je použit jen jednorázově, není myslitelné jej odhalit na základě statistických metod. Klíč pro symetrickou šifru pak není nikam posílán v otevřené podobě, proto jej nelze nikde zachytit.
Hybridní systémy typu PGP obvykle umožňují i další činnost založenou na využití asymetrického šifrovacího algoritmu (například RSA), a to autorizaci dokumentů, někdy též nazývanou elektronický podpis. Pro autorizaci dokumentů lze použít pouze takovou asymetrickou šifru, u které nezáleží na pořadí použití šifrovacího a dešifrovacího zobrazení. Kromě toho, že ψ(φ(x, s), t) = x, což musí platit pro každou asymetrickou šifru, musí pro použití autorizace platit i φ(ψ(y, t), s) = y. Pokud tedy zprávu nejprve „dešifruji“ tajným klíčem a potom teprve „zašifruji“ veřejným klíčem, dostanu opět stejný výsledek. Uvedená vlastnost není obecně u asymetrických šifer pravidlem, jak se však snadno nahlédne, u šifry RSA splněna je.
Kromě zobrazení φ a ψ se většinou užívá ještě jednocestná hešovací funkce h, která zprávě x přiřadí její podstatně kratší otisk h(x). Přitom odvození otisku ze zprávy je jednoduché, zpětná rekonstrukce zprávy na základě jejího otisku je nemožná. Jelikož je otisk podstatně kratší než zpráva, může se stát, že dvě různé zprávy mají stejný otisk. Uvedená situace ovšem není příliš žádoucí, dobré hešovací funkce by měly podobné situace omezit.
Nyní mohu zprávu autorizovat následujícím způsobem Nyní mohu zprávu autorizovat následujícím způsobem. Spočítám její otisk a zobrazím jej dešifrovacím zobrazením za pomocí tajného klíče t. Výsledek, tedy ψ(h(x), t), připojím na konec zprávy jako podpis. Hešovací funkce je obecně známa, příjemce tedy může spočítat na základě přijaté zprávy její otisk h(x).
Dále je obecně znám šifrovací klíč s, a proto příjemce snadno spočítá hodnotu φ(ψ(h(x), t), s) a porovná ji s hodnotou h(x). Pouze ten, kdo zná hodnotu tajného klíče t, je schopen otisk h(x) zobrazit tak, aby po dalším zobrazení pomocí veřejného klíče s, vznikla opět hodnota h(x). Takto zašifrovaná zpráva je tedy zajištěna před pokusy o podvrh jak ze strany případných „narušitelů“, kteří by se chtěli za někoho jiného vydávat nebo zprávu během jejího přenosu změnit, tak i ze strany „nečestných příjemců“, kteří by chtěli případně předstírat, že obdrželi něco jiného. Komunikace tak získává povahu písemného styku, v kterém je dokumentvlastnoručně podepsán.
U písemných dokumentů je třeba, aby existovala nějaká věrohodná autorita, která by zaručovala identifikaci toho, kdo důležitý dokument vlastnoručně podepsal. Takovou autoritou bývá státem pověřený notář či přímo orgán státní či veřejné správy. Podobná situace je i u elektronických podpisů, s tím rozdílem, že u takové autority jsou jiné požadavky na její profesní a technické vybavení. Samotnou informaci, že daný uživatel používá daný veřejný klíč, je nutné nějakým způsobem autorizovat a identitu uživatele garantovat. K tomu slouží certifikační autority, které opět na základě asymetrických šifrovacích algoritmů a pomocí veřejného a tajného klíče mohou „podepsat“ fakt, že daný veřejný klíč skutečně náleží danému uživateli. Uvedený způsob certifikace je pak možné hierarchicky řadit až k nejvyšší autoritě, ke které má uživatel hybridního šifrovacího systému důvěru.