Úvod do klasických a moderních metod šifrování Jaro 2009, 1. přednáška
Oskar (Eva) - protivník Šifrování Cílem je skrýt obsah komunikace před protivníkem, který může komunikaci odposlouchávat. Oskar (Eva) - protivník y x Šifrovací algoritmus Dešifrovací algoritmus x Alice Bob K Bezpečný kanál Zdroj klíčů x – otevřený text y – šifrový text K - klíč
Šifrováním se snažíme skrýt obsah komunikace, neskrýváme komunikaci samotnou. Kryptologie – nauka o tom, jak skrývat obsah komunikace Steganografie – nauka o tom, jak skrývat komunikaci
kryptologie kryptografie kryptoanalýza zabývá se odhalováním slabin v šifrovacích systémech zabývá se návrhem šifrovacích systémů
Příklad šifrového textu LREXJ CKDJA ZXPAK UPXJA TRGER GROKA APNKW PDQKL RMLRG JERGW ELJEP DZNGH QKLAJ QCPMN GUSRA RXPGA JCKWE PVHNK WGRER QRMAR JCARD DLPMH URLKY RAWQR NKGJT JRPLU QPUER NXKNK DNGHQ KLAJQ PLXUP GPAKK LWRMU RUJAO KXMPT AJCKK DDRGR AJTGK LRTRN KEKML PMAJT ARAJP VZQRM ARCAR DNXJW RGPAK ERDLA KTJPA KPEWJ LRUMR PHEKE PQCKA RMCRX SKEPD KWEUP CKDJA HVZGN KDNGH QKLAJ QLXUP GAPMJ WERVZ GKEKP UVHCL JQDRL RLJGK LRTEL XEJNX JLJEP GCKWE PXWJP CXKUA RHWEP XPAZN PALTJ LJGHE KYRWE YRAKM LQKWJ GJPQP GCKER TCNKD NGHQK LAJQH MARWR WEPGP WPQXP MRAEW QPLRT Základní statistické údaje o textu Počet znaků: 440
Frekvence znaků v textu v češtině R … 47 … 10,56% A … 10,52% K … 42 … 9,43% O … 9,77% P … 40 … 8,98% E … 9,66% A … 35 … 7,86% N … 6,88% J … 33 … 7,41% I … 6,07% . . Z … 6 … 1,34% J … 1,79% V … 5 … 1,12% Y … 1,44% Y … 3 … 0,67% B … 1,1% O … 2 … 0,45% F … 0,17% S … 2 … 0,45% G … 0,17% B … 0 Q … 0 F … 0 W … 0 I … 0 X … 0 Tyto a další statistické údaje slouží v první fázi k identifikaci šifry.
Identifikace šifry Jaká šifra byla použita? Nedošlo pouze k nahrazení písmen otevřeného textu písmeny šifrového textu podle nějakého pravidla? Například podle tabulky R K P A J L E G Q W N X D M C U H T Z V Y O S F B I A O E N I L T V D S K M P R C U Z H J Y B F G Q W X Nebo přehledněji 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 R Y C Q P O S T J Z N L X A K D B M W E U G F I V H Takové šifře se říká jednoduchá substituce . Zkusme tedy šifrový text podle této tabulky dešifrovat .
(Ne tak) naivní pokus LREXJ CKDJA ZXPAK UPXJA TRGER GROKA APNKW PDQKL RMLRG JERGW LATMI COPIN JMENO UEMIN HAVTA VAFON NEKOS EPDOL ARLAV ITAVS ELJEP DZNGH QKLAJ QCPMN GUSRA RXPGA JCKWE PVHNK WGRER QRMAR TLITE PJKVZ DOLNI DCERK VUGAN AMEVN ICOST EYZKO SVATA DARNA JCARD DLPMH URLKY RAWQR NKGJT JRPLU QPUER NXKNK DNGHQ KLAJQ ICNAP PLERZ UALOB ANSDA KOVIH IAELU DEUTA KMOKO PKVZD OLNID PLXUP GPAKK LWRMU RUJAO KXMPT AJCKK DDRGR AJTGK LRTRN KEKML ELMUE VENOO LSARU AUINF OMREH NICOO PPAVA NIHVO LAHAK OTORL PMAJT ARAJP VZQRM ARCAR DNXJW RGPAK ERDLA KTJPA KPEWJ LRUMR ERNIH NANIE YJDAR NACNA PKMIS AVENO TAPLN OHIEN OETSI LAURA PHEKE PQCKA RMCRX SKEPD KWEUP CKDJA HVZGN KDNGH QKLAJ QLXUP EZTOT EDCON ARCAM GOTEP OSTUE COPIN ZYJVK OPKVZ DOLNI DLMUE GAPMJ WERVZ GKEKP UVHCL JQDRL RLJGK LRTEL XEJNX JLJEP GCKWE VNERI STAYJ VOTOE UYZCL IDPAL ALIVO LAHTL MTIKM ILITE VCOST PXWJP CXKUA RHWEP XPAZN PALTJ LJGHE KYRWE YRAKM LQKWJ GJPQP EMSIE CMOUN AZSTE MENJK ENLHI LIVZT OBAST BANOR LDOSI VIEDE GCKER TCNKD NGHQK LAJQH MARWR WEPGP WPQXP MRAEW QPLRT VCOTA HCKOP KVZDO LNIDZ RNASA STEVE SEDME RANTS DELAH Něco málo vyjde. Pak následuje velmi pracný postup, jak rozšiřovat správně rozluštěné části.
Vliv tabulky frekvencí znaků v textu v češtině jiný zdroj R … 47 … 10,56% A … 10,52% E … 10,58% K … 42 … 9,43% O … 9,77% A … 9,91% P … 40 … 8,98% E … 9,66% O … 7,76% A … 35 … 7,86% N … 6,88% I … 7,53% J … 33 … 7,41% I … 6,07% N … 6,26% L … 28 … 6,29% L … 5,72% S … 5,67% . . Z … 6 … 1,34% J … 1,79% J … 2,49% V … 5 … 1,12% Y … 1,44% H … 2,48% Y … 3 … 0,67% B … 1,1% B … 1,64% O … 2 … 0,45% F … 0,17% G … 0,17% S … 2 … 0,45% G … 0,17% F … 0,16% B … 0 Q … 0 X … 0,03% F … 0 W … 0 W … 0,01% I … 0 X … 0 Q … 0
Jiné naivní řešení Použijeme-li druhou tabulku frekvencí znaků v češtině, dostaneme jinou permutaci 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 K Y U N R S O V A Z X Q C J P H I G L E D W F B T M Původně jsme použili R Y C Q P O S T J Z N L X A K D B M W E U G F I V H Při pokusu dešifrovat šifrový text pomocí nové permutace dostaneme SETKN MAUNI JKOIA COKNI YERTE REGAI IODAV OULAS EZSER NTERV TSNTO UJDRP LASIN LMOZD RCFEI EKORI NMAVT OHPDA VRETE LEZIE NMIEU USOZP CESAB EIVLE DARNY NEOSC LOCTE DKADA UDRPL ASINL Podle jiné frekvenční tabulky vyšlo LATMI COPIN JMENO UEMIN HAVTA VAFON NEKOS EPDOL ARLAV ITAVS TLITE PJKVZ DOLNI DCERK VUGAN AMEVN ICOST EYZKO SVATA DARNA ICNAP PLERZ UALOB ANSDA KOVIH IAELU DEUTA KMOKO PKVZD OLNID
Struktura přirozeného jazyka Pro řešení jednoduché záměny byla pro každý jazyk a typů textů zpracována řada statistických údajů – frekvence znaků, frekvence dvojic po sobě jdoucích znaků (bigramů), frekvence trigramů. Další charakteristiky: průměrná délka slova nejčastější znaky (bigramy) na začátku slov nejčastější znaky (bigramy) na konci slov porovnání frekvence dvojic bigramů XY a YX . Např. OU, UO, nebo ST, TS .... Řešení ze znalosti části otevřeného textu Máme-li důvod myslet si, že se v otevřeném textu vyskytuje nějaké slovo, hledáme v šifrovém textu příslušný vzor. Tak například, slovo PENICILIN bude zašifrováno jako ABXZCZDZX . Nebo slovo DIVIZIJA je zašifrováno jako AZBZCZDE .
Jakobsenův algoritmus Strojové řešení šifer je značně rozpracované. Uvedeme si Jakobsenův algoritmus. Ten využívá pouze frekvence bigramů. Používá dvě matice řádu 26, řádky a sloupce jsou označené písmeny abecedy. V matici P = (pXY) hodnota pXY udává frekvenci bigramu XY v přirozeném jazyce. To je referenční matice. Tu máme vytvořenou předem. V matici T = (tXY) hodnota tXY udává frekvenci bigramu XY v textu, který posuzujeme. Zvolíme nějakou počáteční permutaci – první přiblížení klíče – například tu, kterou získáme z frekvencí jednotlivých znaků. Pomocí této permutace dešifrujeme šifrový text, dostaneme nový text, a pro něj vytvoříme matici T = (tXY) .
Ohodnocovací funkce Vzdálenost dvou matic spočítáme jako sumu absolutních hodnot rozdílů čísel na stejných místech matice, tj. jako sumu čísel | pXY - tXY | přes všechny bigramy XY . Tuto ohodnocovací funkci se snažíme minimalizovat přes všechny možné klíče – permutace na písmenech abecedy. Výstupem algoritmu je permutace, jejíž ohodnocovací funkci se již nepodařilo zmenšit.
Výsledek algoritmu VE TRI HODINY RANO ZARINCEL TELEFON NA POSADKOVEM VELITELSTVI TADY PLUKOVNIK HAMPL Z GENERALNIHO STABU POSLETE KE MNE IHNED DVA MUZE VOJENSKE POLICIE A VZKAZTE PRO PODPLUKOVNIKA VRZALA NO OVŠEM ZE Z INFORMACNIHO ODDELENI CLOVECE POTOM VAM NIC NENÍ ABY KE MNE HNED PRISEL ANO TED V NOCI ANO AT SI VEZME AUTO TAK HONEM HERGOT A DOST ZA HODINU BYL PODPLUKOVNIK VRZAL NA MISTE BYLO TO AZ BUHVIKDE VE VILOVE CTVRTI PRIVITAL HO STARSI A HROZNE USTARANY PAN V CIVILU TJ. JENOM V KOSILI A KALHOTECH PODPLUKOVNIKU MNE SE STALA SAKRAMENTSKA VEC VETRI HODIN YRANO ZARIN CELTE LEFON NAPOS ADKOV EMVEL ITELS LATMI COPIN JMENO UEMIN HAVTA VAFON NEKOS EPDOL ARLAV ITAVS TVITA DYPLU KOVNI KHAMP LZGEN ERALN IHOST ABUPO SLETE KEMNE TLITE PJKVZ DOLNI DCERK VUGAN AMEVN ICOST EYZKO SVATA DARNA IHNED DVAMU ZEVOJ ENSKE POLIC IEAVZ KAZTE PROPO DPLUK OVNIK ICNAP PLERZ UALOB ANSDA KOVIH IAELU DEUTA KMOKO PKVZD OLNID AVRZA LANOO VSEMZ EZINF ORMAC NIHOO DDELE NICLO VECEP OTOMV ELMUE VENOO LSARU AUINF OMREH NICOO PPAVA NIHVO LAHAK OTORL
Definice Šifrovací systém je uspořádaná pětice (P ,C ,K ,E ,D), kde a) P je konečná množina otevřených textů, b) C je konečná množina šifrových textů, c) K je konečná množina klíčů, d) E = {eK : K prvkem K}, kde eK : P → C je šifrovací funkce (algoritmus) pro každý prvek K množiny klíčů K , e) D = {dK : K prvkem K}, kde dK : C → P je dešifrovací funkce (algoritmus) pro každý prvek K množiny K , pro které platí dK(eK(x)) = x pro každý otevřený text x z množiny P a každý klíč K z množiny K .
Kryptografická pravidla (maxims) shrnují zkušenosti několika tisíciletí Při posuzování bezpečnosti kryptografického systému je nutné předpokládat, že protivník zná šifrovací systém (algoritmus), Auguste Kerckhoffs. Bezpečnost šifrovacího systému může, pokud vůbec někdo, posoudit pouze kryptoanalytik, Auguste Kerckhoffs. Šifrovací algoritmus by měl být „průhledný“, aby umožnil posouzení bezpečnosti. Umělé komplikace systému nemusí zvyšovat bezpečnost, naopak mohou poskytovat kryptografovi iluzorní pocit větší bezpečnosti, Marcel Givierge. Nikdy nepodceňujte protivníka, nikdy nepřeceňujte své schopnosti. Při posuzování bezpečnosti šifrovacího systému je nutné brát v úvahu možná porušení pravidel ze strany uživatelů systému, Hans Rohrbach.
Možná porušení pravidel Odvysílání otevřeného i odpovídajícího šifrového textu, odvysílání dvou šifrových textů vzniklých šifrováním stejného otevřeného textu pomocí dvou různých klíčů, odvysílání dvou šifrových textů vzniklých šifrováním dvou různých otevřených textů pomocí stejného klíče, používání stereotypních začátků zpráv nebo běžných slov či frází, např. ANX, divizija, používání krátkých klíčů nebo klíčů, které lze snadno uhádnout, zanedbání přípravy otevřeného textu před šifrováním, nedostatečná kontrola šifrantů. Chyba kryptografa je často jedinou nadějí kryptoanalytika.
Nástup počítačů Zlomem v historii kryptologie byla druhá světová válka. Klasická kryptologie končí s koncem této války. V praktické oblasti to byla rozluštění německého vojenského šifrovacího systému Enigma polskými matematiky počátkem roku 1933 a později stavba prvního počítače v britském kryptonalytickém centru v Bletchley Park během války. V teoretické oblasti to byly práce amerického matematika Clauda Shannona: Communication theory of Secrecy systems, Sept. 1, 1946 A mathematical theory of communication, The Bell System Technical Journal, Vol. 27, pp. 379-423, 623-656, July, October, 1948.
Příklady klasických šifer Návrhy vycházely ze dvou základních konstrukčních principů: - konfůze (confussion) – mění význam písmen, substituční šifry Příklady: Ceasarova šifra, jednoduchá záměna, Vigenérova šifra, polyalfabetická šifra. difůze (diffusion) – mění polohu písmen, transpoziční šifry Příklady: jednoduchá transpozice, dvojitá transpozice.
Substituční šifry Ceasarova šifra – nahrazuje každé písmeno otevřeného textu písmenem, které je v abecedě o tři písmena dále Příklad: veni vidi vici yhql ylgl ylfl Slabina: kdo zná šifru, umí rozluštit šifrový text, neboť šifra nezávisí na tajném klíči. Tabulka pro šifrování a dešifrování: 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 d e f g h i j k l m n o p q r s t u v w x y z a b c
Posuvná šifra: zaměňuje každé písmeno otevřeného textu písmenem, které je v abecedě o k míst dále. Číslo k, které může nabývat hodnot 0,1,2,….,25, je klíč. Substituční tabulka pro klíč k = 7: 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 h i j k l m n o p q r s t u v w x y z a b c d e f g Nevýhoda: příliš málo (malý prostor) klíčů, lze je všechny vyzkoušet. cvidw vgvio zkjmo vn dwjex whwjp alknp wo exkfy xixkq bmloq xp fylgz yjylr cnmpr yq gzmha zkzms donqs zr hanib alant eport as Řešení hrubou silou (exhaustive search)
Jednoduchá substituce Nahrazuje každé písmeno otevřeného textu nějakým jiným písmenem abecedy Klíčem je substituční tabulka, ve které je pod každým písmenem abecedy ve spodním řádku písmeno, které jej v šifrovém textu nahrazuje: 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 e l q d x b p k y r w v a m o i u s z c f h n t j g Spodní řádek tabulky je vlastně nějakou permutací písmen abecedy Prostor klíčů je dostatečně velký – 26! – nelze řešit hrubou silou. Slabina: zachovává statistické vlastnosti otevřeného textu.
Metoda řešení je popsána již v arabském textu z 9. století. Obětí používání této šifry se stala např. Marie Stuartovna o mnoho století později. Jednoduchou záměnu používala také Rudá armáda při invazi do Polska v roce 1918. V depeších se často objevoval polygram axbxcxd, který odpovídal slovu divizija. V ruštině se ja píše jedním písmenem. Základní pomůckou pro řešení jednoduché záměny jsou frekvenční tabulky písmen (monogramů), sousedních dvojic písmen (bigramů), trojic písmen (trigramů), častých slov (polygramů) v příslušném jazyku.
Vigenérova š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 k jo frrp lhfih
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.
Transpoziční šifry Spočívají v přeházení pořadí (permutaci) písmen v otevřeném textu. Permutace bývala definována pomocí nějakého slova – klíče. Například pomocí klíče nezny se šifrovalo následovně: 21534 nezny tanco valab ychja azset rasu aacza tvyar cajeu obatn lhss Jednoduchá transpozice
Dvojitá transpozice. Používaná německou armádou v průběhu první světové války a po ní až do roku 1928. Také ji používala československá vláda v exilu v Londýně během druhé světové války ke komunikaci s domácím odbojem. Proto měl domácí odboj takové ztráty. Jak dvojitou transpozici rozluštit bylo popsáno ve francouzských novinách již na počátku první světové války v roce 1914. Řešení je velmi usnadněné, jsou-li šifrovány zprávy stejné délky.
Šifrování dvojitou transpozicí vyžaduje dvě hesla. Například nezny octopus Jednoduchá transpozice se použije dvakrát, napřed s prvním heslem, a takto získaný šifrový text se ještě jednou šifruje jednoduchou transpozicí určenou druhým heslem. Přání tancovala bych ja az se trasu tak chobotnice svému milému zašifruje za použití hesla nezny jako aacza tvyar cajeu obatn lhss a pokračuje dále 2163475 octopus aaczatv yarcaje uobatnl hss Dostane tak aaosa yuhzc aaatv elcrb stjn