230 likes | 379 Views
Ukázky aplikací matematiky. Jaro 2014, 1 . přednáška. Historie šifrování je několik tisíc let stará. Počátky šifrování v Evropě. Cílem šifrování je skrýt obsah komunikace před nepovolanou osobou.
E N D
Ukázky aplikací matematiky Jaro 2014, 1. přednáška
Historie šifrování je několik tisíc let stará. Počátky šifrování v Evropě Cílem šifrování je skrýt obsah komunikace před nepovolanou osobou. Šifrování neskrývá samotnou zprávu (jako například neviditelný inkoust), pouze se snaží zprávu učinit nesrozumitelnou pro toho, komu není určena. První historicky doloženou šifrou v evropské civilizaci je Ceasarova šifra. Ceasarova šifra nahrazovala každé písmeno otevřeného textu písmenem, které je v abecedě o tři místa dále: KOSTKY JSOU VRZENY NRVWNB MVRX YUCHQB
Posuvná šifra • Oprávněný příjemce musel vědět, že pro porozumění textu musí jenom každé písmeno šifrového textu nahradit písmenem, které je v abecedě o tři místa dříve. • Nevýhoda spočívá v tom, že jakmile se nepřítel dozví, že je používána Ceasarova šifra, snadno si šifrový text dešifruje sám. • Ceasarova šifra je speciální případem posuvné šifry. • V případě posuvné šifry se odesílatel i adresát musí předem domluvit na nějakém čísle k, odesílatel pak každé písmeno otevřeného textunahradí písmenem, které je v abecedě o k písmen dále. • Číslo k je smluveným tajným klíčem, který umožňuje, aby adresát šifrový text správně dešifroval. • Nevýhodou posuvné šifry je příliš malý prostor klíčů. • Nepřítel, který se dostane k šifrovému textu šifrovanému posuvnou šifrou, může snadno vyzkoušet všechny klíče a zjistit, který vede ke srozumitelnému textu. • Zkoušení všech klíčů se také nazývá útok hrubou silou.
Útok hrubou silou OXGB OBWB OBVB PYHC PCXC PCWC QZID QDYD QDXD RAJE REZE REYE SBKF TGBG TGAG TCLG TGBG TGAG UDMH UHCH UHBH VENI VIDI VICI • Vidíme, že k dešifrování musíme posunout každé písmeno o 7 míst dopředu. • Při šifrování tak bylo každé písmeno nahrazeno písmenem, které je v abecedě o 19 míst dále.
Jednoduchá záměna • Ceasarova šifra nahrazuje každé písmeno v otevřeném textu písmenem, které je pod ním v následující tabulce ABCDEFGHIJKLMNOPQRSTUVWXYZ DEFGHIJKLMNOPQRSTUVWXYZABC • Podobně posuvná šifra s klíčem 9 nahrazuje písmena otevřeného textu pomocí tabulky ABCDEFGHIJKLMNOPQRSTUVWXYZ JKLMNOPQRSTUVWXYZABCDEFGHI • Pokud nahradíme druhý řádek tabulky libovolnou permutací 26 písmen abecedy, dostaneme šifru, která se nazývá jednoduchá záměna, nebo také jednoduchá substituce.
Klíč pro jednoduchou záměnu • Klíčem může být například následující tabulka ABCDEFGHIJKLMNOPQRSTUVWXYZ YMIHBAWCXVDNOJKUQPRTFELGZS • Použijeme-li tento klíč (tabulku) k zašifrování zprávy PRIJD VECER K ZELENEMU STROMU • Dostaneme šifrový text UPXVH EBIBP D SBNBJBOF RTPKOF • Základní slabinou jednoduché záměny je skutečnost, že zachovává rozložení frekvencí písmen v přirozeném jazyce.
Nevýhody jednoduché záměny • Uvedený příklad má nevýhodu, že ukazuje délky jednotlivých slov. • Vynechání mezer by vedlo k následujícímu otevřenému textu a jeho šifrové podobě. PRIJDVECERKZELENEMUSTROMU UPXVHEBIBPDSBNBJBOFRTPKOF • Taková úprava ale může vést k dvojznačnosti otevřeného textu, jak lze vidět z příkladu OKOLO TOC a O KOLOTOC. • Proto se někdy nahrazuje mezera nějakým málo používaným písmenem, např. X a v otevřeném textu se písmeno X nahradí pomocí IKS. • Potom dostaneme PRIJDXVECERXKXZELENEMUXSTROMU UPXVHGEBIBPGDGSBNBJBOFGRTPKOF
Prolomení jednoduché záměny • Uvedená úprava ale příliš nepomůže. • Jakmile kryptoanalytik zjistí, že písmeno G v šifrovém textu nahrazuje mezeru, zná ihned délky všech slov. • Hrubá síla při řešení jednoduché záměny nepomůže – klíčů je příliš mnoho. • Přesněji 26! > 4 x 1026. • Ty nelze všechny vyzkoušet, je jich příliš mnoho. • Nicméně mezeru lze snadno odhalit. • Průměrná délka slov v češtině je kolem 5 znaků. Mezera tak tvoří zdaleka nejčastější znak v českém textu, tvoří zhruba 20% celého textu. • Druhý nejčastější znak v češtině je E a jeho frekvence v češtině je něco málo před 10%. • Frekvenční analýza je základní metoda luštění jednoduché záměny. • Jsou k tomu vypracovány tabulky frekvencí znaků, dvojic znaků, skupin souhlásek, atd.
Identifikace šifry • Pokud kryptoanalytik ví, že byla použita jednoduchá záměna, řešení je už obvykle jednoduché, pokud je šifrový text dostatečně dlouhý. • Text o 200 znacích zašifrovaný jednoduchou záměnouje už snadno řešitelný. • K identifikaci šifer byla v průběhu historie vyvinuta řada statistických testů. • Jednoduchou záměnu poznáme bezpečně podle toho, že frekvence znaků v šifrovém textu má obdobné rozdělení jako frekvence znaků v otevřeném textu. • Jiným typem šifry je transpoziční šifra. Ta spočívá v tom, že pořadí písmen v otevřeném textu je přeházené, samotná písmena se ale nemění. • Transpoziční šifru poznáme podle toho, že frekvence jednotlivých znaků jsou stejné jako frekvence těch samých znaků v přirozeném jazyce. • V historii se kryptologove snažili navrhnout šifru, u které by byly frekvence jednotlivých znaků v šifrovém textu přibližně stejné.
Vigenérova šifra („nerozluštitelná šifra“) Používá periodicky několik různých posunutí abecedy. Klíčem bývalo obvykle nějaké slovo, které udávalo délku posunutí podle následující tabulky. a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Tak například klíč slizoun určoval posunutí 18 11 8 5 14 20 13. Otevřený text kocka leze dirou se zašifroval následovně: slizo unsl izoun kocka leze dirou c z jo frrp lhfih k
Tuto šifru popsal již v roce 1586 Blaise de Vigenére. Slabina: periodické heslo Šifru rozluštil až Charles Babbage (1791-1875), profesor matematiky na Cambridge University Řešení lze algoritmizovat pomocí indexu koincidence, který vymyslel William F. Friedman kolem roku 1920. Index koincidence je jeden z nejvýznamnějších statistických testů používaných v kryptologii.
Polyalfabetická šifra Podobná Vigenérově šifře, místo různých posunutí ale používá různé obecné jednoduché substituce. Každé písmeno otevřeného textu šifruje pomocí jiné permutace. Ideální je, pokud se žádná permutace nepoužívá dvakrát. abcdefghijklmnopqrstuvwxyz 1:gkqwhrjvoisnazcubdxplfytme 2:cintzuhsymjabvoelxwpkfqgrd 3:ekrwxpavqbslcfitudgjmhnyzo 4:dqcuimhvrelnwgofjkztysabpx koza Šifrujeme: s o o d
Šifrovací stroje Nevýhodou polyalfabetické šifry je složitost klíčů a jejich předávání. Proto byly v první polovině 20. století hojně používané šifrovací stroje. Nejznámější byly Enigma, Hagelin.
Jiný šifrový text YEVQK GQAUN PTIOL UIGFR ODBYB LTUSD OEBFV THOLS KHLSO JNVRF CBTXW CZSEM KIOUV PGVYK YOTNP QCEFU LQYKE EEUYS GCWGO ZZNBY MGQOJ IOAQE DHXPF JXSWV REFVK TWWVR EEFMB XMKDL FSASN ZTOCY GRHII UHWJJ UHXOW LFSTH GJGTV DIBRX ARJFR ISLNI OEHBS DPTII WDVLF DHPQP QIEIO FJXZK YNFZT RIDWX UEIUD PDWST VNKJZ XDDCJ MXREX DJUCS BUVLY OEFLX SEZSY XVLWT OPPUN VRRMS QHBXZ NTSHL SKHZM EQICR FUFTT EEWVO MMECP RPSBY JTTAE UHCCD ALNVZ YKNBO EJRLM KTEAF IZLIO LUIGF ROBTY UNHMS EHXDV SEZLZ XEXIO ZNWEB ZLLSB FZJSS FDUMF QUHNH FUHRC WHWFR HXARP MKEVH HREKD XCEAO QEDBK JFTHR DYDWD VSMJJ PUNCE AGIEV RUIJK NHSDE SLRTR UWTKY PZNDF ZZEYO EEGND LGXUJ KHIE Počet znaků: 524 Četnosti znaků: 39, 27, 25, 25, 25, 24, 24, 23, 23, 23, 22, 20, 20, 20, 19, 19,18, 17, 17, 16, 15, 14, 14, 13, 12, 10 Kasiského test: Poloha opakovaných bigramů, trigramů, atd. Jde nejspíš o nějakou šifru s periodickým klíčem
Řešení Vigenérovy šifry Nezávisle Friedrich W. Kasiski a Charles Babbage v druhé polovině 19. stol. Jejich řešení je založené na následujícím pozorování (Kasiského test): Vyskytuje-li se nějaký bigram xy v otevřeném textu dvakrát a vzdálenost mezi oběma výskyty je násobkem délky klíče, pak je v obou případech zašifrován stejným bigramem cd. V obou případech jsou totiž posunutí definována stejným bigramem kl klíče. klíč otevřený text šifrový text kl . . . . kl xy . . . . xy pq . . . . pq Nejdříve tedy odhadneme délku klíče tak, že v šifrovém textu najdeme všechny bigramy, které se vyskytují aspoň dvakrát a spočteme jejich vzdálenosti. Poté najdeme číslo, které je nejčastěji dělitelem těchto vzdáleností. To je pravděpodobnou délkou klíče. Opakovaný bigram v šifrovém textu může vzniknout i náhodně, ne všechny vzdálenosti opakovaných bigramů musí být násobkem délky klíče.
Odhad velikosti posunutí Máme-li odhad délky klíče, můžeme pak odhadnout velikost jednotlivých posunutí následovně. Šifrový text pak napíšeme do tolika sloupců, kolik je odhadovaná délka klíče, a spočítáme frekvenci jednotlivých znaků v každém sloupci zvlášť. Poté pro každý sloupec najdeme takové posunutí abecedy, které nejlépe odpovídá frekvenci jednotlivých písmen v (přirozeném) jazyce otevřeného textu. Pak už zbývá pouze dešifrovat text pomocí odhadnutých velikostí posunutí. Řešení Vigenérovy šifry lze jednoduše algoritmizovat pomocí pojmu index koincidence.
Index koincidence Zavedl William F. Friedman v roce 1925. Neformálně je index koincidence dvou textů S a T nad stejnou abecedou A definovaný jako pravděpodobnost, že se v obou textech vyskytne stejný znak na stejném místě. Definice. Jsou-li S = s1s2…sn a T = t1t2…tn dva texty téže délky nad stejnou abecedou A, pak definujeme index koincidence těchto dvou textů jako Kappa(S,T) = Σiδ(si,ti) / n, sčítáme pro i = 1,2,…,n,δ(si,ti) je Kroneckerův symbol rovný 1 pokud si=ti a rovný 0 v opačném případě. Očekávaná hodnotaKappa(S,T). Jsou-li pravděpodobnosti výskytů jednotlivých znaků abecedy A v textu S rovné p0p1…pk a pravděpodobnosti výskytů těchto znaků v textu T jsou rovné q0q1…qk, pak očekávaná hodnota indexu koincidence Kappa(S,T) = Σj pjqj , sčítáme pro j = 1,2,…,n.
Očekávaná hodnota indexu koincidence jazyka Jsou-li frekvence jednotlivých písmen abecedy v nějakém jazyce L rovné p0,p1,…p25 pak očekávaná hodnota indexu koincidence dvou textů v tomto jazyce se rovná Kappa(S,T) = Σjpj2 , sčítáme pro j = 0,2,…,25. Toto číslo nezávisí na textech S a T, ale pouze na pravděpodobnostech pj, nazývá se proto očekávaný index koincidence jazyka L. Zde jsou hodnoty očekávaného indexu koincidence nejčastějších jazyků podle Kullbacka, 1976: Tyto hodnoty samozřejmě závisí na použitých tabulkách frekvencí jednotlivých písmen a u různých autorů se mohou lišit. angličtina 6,61% němčina 7,62% francouzština 7,78% španělština 7,75% ruština 5,29% (32 znaků v abecedě) náhodný text 1/26 = 3,85% .
Invariance indexu koincidence Tvrzení. Jsou-li dva texty S a T zašifrované polyalfabetickou šifrou za použití stejného klíče K, a označíme-li takto obdržené šifrové texty C a D, pak platí Kappa (C,D) = Kappa (S,T) . Důkaz. Označme si symbol na i-tém místě textu S, a ti symbol na i-tém místě textu T. Protože je při šifrování použit stejný klíč pro oba texty, jsou symboly si a ti zašifrovány za použití stejné permutace πi. Na i-tém místě šifrového textu C je tedy symbol ci = πi(si) a na i-tém místě šifrového textu D je symbol di = πi(ti). Protože πi je permutace, platí si = ti právě když ci = di pro každý index i. Odtud a z definice indexu koincidence pak vyplývá rovnost Kappa (C,D) = Kappa (S,T).
Průměrné indexy koincidence Pro text T délky n a r přirozené číslo označme T r text, který dostaneme z T cyklickým posunutím o r míst doprava. Definice. Průměrný index koincidencedvou textůS a T téže délky n nad stejnou abecedou A definujeme jako číslo Chi(S,T) = Σr Kappa(S,T r) / n, sčítáme přes r = 0,1,…, n – 1. Definice. Průměrný index koincidence jednoho textuT délky n definujeme jako Phi(T) = Σr Kappa(T,T r) / (n-1), sčítáme přes r = 1,…, n – 1.
Použití pro nalezení délky klíče Máme-li daný šifrový text C délky n zašifrovaný nějakou polyalfabetickou šifrou, a chceme najít pravděpodobnou délku klíče, postupně pro každé d = 2,3,…,n-1 napíšeme šifrový text do d sloupců, texty ve sloupcích označíme C1, C2,…,Cd , spočítáme průměrné indexy koincidence Phi(Cj) pro j = 1,2,…,d, a pak jejich průměr ΣjPhi(Cj) / d . To d, pro které se tato průměrná hodnota nejvíce blíží očekávanému indexu koincidence jazyka, ve kterém byl napsán otevřený text, je nejpravděpodobnější délka klíče. Obvykle to vychází tak, že tato průměrná hodnota se blíží očekávanému indexu koincidence jazyka otevřeného textu pro násobky délky klíče, zatímco pro ostatní hodnoty d se blíží hodnotě indexu koincidence náhodného jazyka, který je mnohem menší.
Vernamova šifra Dne 13.9.1918 Gilbert Vernam požádal o americký patent na údajně zcela bezpečnou šifru. Vernamova šifra je vlastně Vigenerovo šifrou, u které je klíč stejně dlouhý jako otevřený text, a je navíc náhodně generovaný. Jinak řečeno, velikosti posunutí jednotlivých písmen jsou náhodné a navzájem nezávislé. Formálně můžeme Vernamovu šifru definovat následovně: Je-li p1p2…..pnotevřený text(kódovaný čísly 0,1,…,25 ),ak1k2…..kn náhodně generovaný klíč (tvořený čísly 0,1,…,25), pak šifrový text c1c2…..cn je definován jako ci= pi+ki mod 26 pro i=1,2,…,n. Praktická využitelnost Vernamovy šifry je značně omezená nutností mít k dispozici bezpečný kanál pro výměnu klíče téže délky jako je otevřený text.
Bezpečnost Vernamovy šifry Intuitivně můžeme bezpečnost Vernamovy šifry nahlédnout následovně. Odposlechneme-li znak ci šifrového textu, pak vzhledem ke skutečnosti, že každá z 26 možností pro ki je stejně pravděpodobná a nezávislá na předchozích hodnotách klíček1…ki-1, jsou všechny možnosti pro pi=ci - ki mod 26 stejně pravděpodobné. Stručně řečeno, ze znalosti šifrového textu nemůžeme usoudit vůbec nic o otevřeném textu. Claude Shannon dokázal, že Vernamova šifra je absolutně bezpečná, tj. že při použití Vernamovy šifry je pravděpodobnost P(p), že byl vyslán otevřený text p, rovná podmíněné pravděpodobnosti P(p|c), že byl vyslán otevřený text p za podmínky, že jeho šifrová podoba je c. Dále dokázal, že jde o jedinou absolutně bezpečnou šifru. Shannonova klec, do které byla kryptologie uzavřena.