diff --git a/01-intro/intro.tex b/01-intro/intro.tex index 782f26a8f59aab986825f29b58ba8ad187f2b049..26803e07f4da47286a40f795790a1061e528e4dd 100644 --- a/01-intro/intro.tex +++ b/01-intro/intro.tex @@ -61,7 +61,7 @@ Proč je tak důležitý? klíč než algoritmus. \endlist -\note{ +\rem{ Ještě dodejme, že Alice a Bob nemusí být konkrétní osoby. Jsou to \em{role} v~protokolu. Chceme-li na zprávu odpovědět, postavy si role prohodí. Pokud chceme bezpečně zálohovat data, Bob bude Alice někdy v~budoucnosti. @@ -199,4 +199,50 @@ generovat náhodně. Teoreticky se sice může zopakovat, ale jak uvidíme v~odd malou pravděpodobností. } +\section{Alice a Bob na dražbě} + +Na závěr této kapitoly zkusíme z~kryptografických primitiv poskládat jeden trochu složitější +protokol. Budeme (trochu naivně) předpokládat, že primitiva jsou dokonalá, ale i tak se objeví +nečekaně mnoho problémů. Pohodlně se usaďte, příběh začíná\dots + +Alice se chce zúčastnit dražby, na níž se prodává originál plyšového tučňáka Tuxe. +Dražba se ovšem koná kdesi v~Antarktidě, tak se chce nechat zastupovat svým věrným přítelem Bobem. +Bude sledovat průběh dražby v~přímém televizním přenosu a když přijde správná chvíle, pošle Bobovi +zprávu typu \uv{přihoď $x$ tolarů}, případně \uv{skonči}. Tyto zprávy potřebuje šifrovat, protože +jinak by ji konkurence mohla předběhnout; zároveň si ale uvědomíme, že zprávy stačí utajit na velmi +krátkou dobu -- nejpozději po několika minutách Bob požadovanou akci provede a bude zveřejněna v~televizním +přenosu. + +Začneme triviálním protokolem, postupně budeme odhalovat jeho slabiny a opravovat je. + +\subsection{První pokus: potřebujeme padding} + +Použijeme symetrickou šifru. Než Bob odjede, domluví se s~Alicí na nějakém klíči, ideálně náhodně vygenerovaném. +Pokaždé když bude chtít Alice chtít poslat zprávu, vytvoří řetězec tvaru {\tt PRIHOD\sp 12345} +nebo {\tt KONEC}, zašifruje ho a~odešle. + +Co je na tomto protokolu špatně? Především z~něj \uv{prosakuje} spousta informací. Jelikož symetrické šifry +zachovávají délku zpráv, triviálně ze zašifrovaného textu poznáme, zde se jedná o~{\tt KONEC} -- to je jediná +pětiznaková zpráva. A~pokud se jedná o~{\tt PRIHOD}, z~počtu znaků zjistíme počet cifer částky, tedy její +desítkový logaritmus. + +Oprava je jednoduchá: všechny zprávy doplníme mezerami na nějaký pevný počet znaků. +Tomu se říká \em{padding} neboli \em{vycpávka}. Důležité je, aby padding byl \em{reverzibilní} -- +když přijmeme opadovanou zprávu, musíme být schopni padding odstranit a získat zprávu původní. +Jelikož naše zprávy jsou textové a nekončí na mezeru, stačí na jejich konec přidat mezery. +Aliciny peněžní rezervy sotva tvoří víc než $10^{13}$ tolarů,\foot{Jak jsme k~číslu přišli: +Ekonomové odhadují že peněz v~hotovosti a na snadno dostupných účtech +je cca $8\cdot 10^{12}\;{\rm USD}$. Viz \url{https://www.rankred.com/how-much-money-is-there-in-the-world/}. +} takže stačí na částku rezervovat 13 číslic a na celou zprávu 20 znaků. + +\subsection{Přehrávací útoky: přidáme nonci} + +\subsection{Porovnávání zpráv: nonce podruhé} + +\subsection{Modifikace zpráv: podepisujeme} + +\subsection{Hotový protokol} + +\subsection{Překvapení na závěr} + \endchapter