diff --git a/01-intro/intro.tex b/01-intro/intro.tex index abf1b2346f83f0437ef04d774a4eb2da61216263..a6545fbe12d2f9060f8e49d3008007de8d62128a 100644 --- a/01-intro/intro.tex +++ b/01-intro/intro.tex @@ -330,4 +330,71 @@ zprávy, které nepatří k~aktuální instanci. Vlastně je ani nemusíme se zp -- stačí, když je započítáme do podpisu. Jakmile se pak objeví zpráva z~jiné instance, prostě jí nebude souhlasit podpis. +\section{Kryptografické útoky} + +Co znamená, že kryptografický protokol je bezpečný? Mohli bychom říci, že to znamená, +že na něj neexistuje žádný úspěšný útok. Co to ale znamená? Podívejme se na některé +obvyklé druhy útoků. Pro jednoduchost budeme útočit na symetrickou šifru. + +\defn{Standardní útoky na symetrické šifry: + +\list{o} +\:{\I known ciphertext attack (KCA)} -- známe jenom množinu zašifrovaných zpráv, cílem je zjistit +klíč (někdy také jenom dešifrovat zprávy). To na první pohled zní beznadějně, ale dešifrované +zprávy mají často nějakou známou strukturu (text v~češtině, validní XML apod.), díky níž +dovedeme poznat, že klíč dává smýsl. + +\:{\I known plaintext attack (KPA)} -- známe jak zašifrované zprávy, tak odpovídající dešifrované +a cílem je opět zjistit klíč (případně dešifrovat nějaké další zprávy). Tato situace je překvapivě +častá: nezřídka se stává, že oběť posílá šifrovaně i data, která se později stanou veřejnými. +Nebo známe aspoň nějakou standardizovanou hlavičku zprávy či podpis na jejím konci. + +\:{\I chosen plaintext attack (CPA)} -- můžeme si vybrat jakékoliv zprávy a nechat si je zašifrovat. +Kdy se to může stát? Například útočíme-li na zabezpečené spojení k~webovému mailovému klientovi, +můžeme oběti prostě poslat mail a počkat, až si ho přečte. Někdy si umíme zvolit jenom část zprávy: +říká se, že spojenci ve 2. světové válce občas bombardovali obskurní ostrůvky v~Pacifiku, protože +doufali, že se jejich názvy objeví v~šifrovaných zprávách říšského námořnictva. + +\:{\I distinguishing attack (rozlišovací útok)} -- zašifrované zprávy neumíme kompletně dešifrovat, +ale dokážeme z~nich poznat nějakou netriviální vlastnosti dešifrovaného textu. V~našem příkladu +jsme třeba dokázali rozpoznat, je-li zpráva {\tt PRIHOD} nebo {\tt KONEC}. + +\endlist +} + +Útoky jsou seřazené od nejslabšího k~nejsilnějšímu. Tím myslíme, že šifra odolná proti CPA je +odolná i proti KPA, a~tím pádem i proti KCA. Proto se budeme snažit vytvářet alespoň CPA-odolné +šifry. Formální definice bezpečnosti v~kapitole TODO bude dokonce založena na zobecnění rozlišovacích útoků. + +Zádrhel ovšem je, že striktně matematicky vzato, o~žádné šifře nemůžeme dokázat, že je byť jenom +KPA-bezpečná. Všech možných klíčů je konečně mnoho, takže vyzkoušíme-li každý, nutně na ten pravý +musíme narazit. Musíme se proto spokojit s~tím, že správný klíč nelze nalézt {\I efektivně.} +Praktičtí kryptografové to často vyjadřují následovně: + +\defn{Šifra má proti danému druhu útoku {\I úroveň bezpečnosti (security level)} $b$~bitů, +pokud provedení útoku vyžaduje alespoň $2^b$ kroků výpočtu. +} + +Touhu po rigorózní definice bezpečnosti tato definice sotva uspokojí: Jednak neuvažuje randomizované +útoky, které nemají jednoznačný počet kroků. Ale hlavně neříká, co to znamená {\I krok výpočtu.} +Někdy se tím myslí jedna strojová instrukce, jindy zase zašifrování jedné zprávy. Naštěstí to +nehraje velkou roli, protože se jedná o~logaritmickou míru. Různé definice kroku tedy ovlivní +výsledek nanejvýš o~nižší desítky. Úroveň bezpečnosti 256 bitů proto bude s~jistotou mimo možnosti +všech útočníků. + +Jelikož na šifru můžeme útočit vyzkoušením všech klíčů, úroveň bezpečnosti nemůže být +větší než počtu bitů klíče. Pokud není výrazně menší, považujeme šifru za dobrou. + +Dodejme ještě, že v~kapitole~\chapref{perfect} uvidíme několik příkladů, kdy budeme schopni +dokázat, že šifra je dokonale bezpečná nezávisle na výpočetním výkonu dostupném útočníkovi. +Za to ale zaplatíme omezeními použitelnosti šifry. + +\subsection{Narozeninové útoky} + +TODO + +\subsection{Útoky setkáním na půli cesty} + +TODO + \endchapter