From 1b3a15f9a1142e8fbe4da7dc2c76a81f2f716c90 Mon Sep 17 00:00:00 2001 From: Martin Mares <mj@ucw.cz> Date: Fri, 21 Feb 2025 21:37:29 +0100 Subject: [PATCH] =?UTF-8?q?Dokonal=C3=A1=20bezpe=C4=8Dnost:=20Za=C4=8D?= =?UTF-8?q?=C3=A1tek?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02-perfect/Makefile | 3 ++ 02-perfect/perfect.tex | 102 +++++++++++++++++++++++++++++++++++++++++ Makefile | 1 + 3 files changed, 106 insertions(+) create mode 100644 02-perfect/Makefile create mode 100644 02-perfect/perfect.tex diff --git a/02-perfect/Makefile b/02-perfect/Makefile new file mode 100644 index 0000000..ba6c63e --- /dev/null +++ b/02-perfect/Makefile @@ -0,0 +1,3 @@ +TOP=.. + +include ../Makerules diff --git a/02-perfect/perfect.tex b/02-perfect/perfect.tex new file mode 100644 index 0000000..d513003 --- /dev/null +++ b/02-perfect/perfect.tex @@ -0,0 +1,102 @@ +\ifx\chapter\undefined +\input adsmac.tex +\singlechapter{2} +\fi + +\chapter[perfect]{Dokonalá bezpečnost} + +V~ideálním světě bychom o~každém kryptografickém primitivu uměli dokázat, +že je bezpečné. To je mnohem těžší, než se zdá, ale přeci jen existují +konstrukce, pro které takový důkaz známe. V~této kapitole si několik těchto +výjimečných případů předvedeme. Ukáže se ale, že mají dost omezené využití. + +\section{Jednorázové klíče} + +Uvažujme následující symetrickou šifru. Jejím vstupem bude zpráva ${\bf x} +\in \{0,1\}^n$ a stejně dlouhý klíč ${\bf k} \in \{0,1\}^n$. Zašifrovanou +zprávu ${\bf y}\in \{0,1\}^n$ spočítáme jako {\csc xor} původní zprávy s~klíčem, +tedy $y_i = x_i \oplus k_i$ pro všechna~$i$. +Dešifrovat můžeme druhým vyxorováním s~klíčem: +$y_i \oplus k_i = (x_i \oplus k_i) \oplus k_i = x_i \oplus (k_i + k_i) += x_i \oplus 0 = x_i$. + +\theorem{ +Pakliže klíč zvolíme jako rovnoměrně náhodnou posloupnost bitů, +je zašifrovaná zpráva také rovnoměrně náhodná posloupnost bitů. +} + +\proof +Jelikož různé bity zprávy spolu neinteragují, stačí větu dokázat pro jediný bit: + +\list{o} +\:Pokud $x_i=0$, pak s~pravděpodobností $1/2$ nastane $k_i=0$, a~tedy $y_i = 0 \oplus 0 = 0$, nebo $k_i=1$, a~tedy $y_i = 0 \oplus 1 = 1$. + +\:Pokud $x_i=1$, pak s~pravděpodobností $1/2$ nastane $k_i=0$, a~tedy $y_i = 1 \oplus 0 = 1$, nebo $k_i=1$, a~tedy $y_i = 1 \oplus 1 = 0$. +\endlist + +V~obou případech tedy $y_i$ nabývá hodnot 0 a~1 se stejnou pravděpodobností. +\qed + +Z~toho plyne, že zašifrovaný text nenese vůbec žádnou informaci o~původním textu +kromě jeho délky. Takové šifře se říká {\I dokonale bezpečná.} +Ovšem pozor -- takhle silnou záruku bezpečnosti dostáváme pouze tehdy, když jeden +klíč použijeme pro jedinou zprávu. Takovým klíčům se říká {\I jednorázové klíče +(one-time pad).} + +Podívejme se, co se stane, pokud stejný klíč~${\bf k}$ použijeme pro dvě zprávy +${\bf x}$ a~${\bf x'}$. Víme, že $y_i = x_i \oplus k_i$ a $y'_i = x'_i \oplus k_i$. +Pokud zašifrované zprávy vyxorujeme, dostaneme +$y_i \oplus y'_i = (x_i \oplus k_i) \oplus (x'_i \oplus k_i) += (x_i \oplus x'_i) \oplus (k_i \oplus k_i) += (x_i \oplus x'_i) \oplus 0 += x_i \oplus x'_i$. +Zašifrované zprávy se tedy liší přesně tam, kde se liší původní zprávy. +Vzhledem k~tomu, jak velkou redundanci mají přirozené jazyky, tato informace +obvykle postačí k~rekonstrukci většiny obsahu zpráv. Jen nerozlišíme jejich pořadí. + +Vypadá to tedy, že jsme si nepomohli -- místo bezpečného přenosu zprávy teď potřebujeme +bezpečně přenést stejné dlouhý klíč. To přesto může být praktické. Pokud vysíláme +do ciziny tajného agenta, můžeme ho vybavit knížkou s~jednorázovými klíči. +Každou stránku použije na jednu zprávu a pak ji zničí. + +Také časem sestrojíme zajímavé šifry tak, že dokonale náhodnou posloupnost +nahradíme výstupem pseudonáhodného generátoru. To už ovšem nebude dokonale +bezpečné. + +Kromě toho si všimněme, že změna jednoho bitu zašifrované zprávy způsobí +změnu příslušného bitu dešifrované zprávy. Zbytek dešifrované zprávy zůstane +nezměněn. Tato vlastnost nám komplikovala život už v~první kapitole a zde vidíme, +že se může projevit i u~dokonale bezpečných šifer. Proto zopakujeme: šifra +zaručuje utajení, nikoliv integritu. + +Dodejme ještě, že šifru s~jednorázovým klíčem poprvé popsal Frank Miller v~roce 1882, +znovu ji objevil Gilbert Vernam v~roce 1917 (proto se této šifře často říká Vernamova) +a dokonalou bezpečnost dokázal Claude Shannon v~roce 1945 (proto místo dokonale +bezpečné někdy říkáme shannonovsky bezpečné). + +\subsection{Zobecnění} + +Stejný princip můžeme použít v~libovolné grupě. Kdykoliv máme nějakou +komutativní grupu $(G,+,{\bf 0},-)$, můžeme zprávu $x\in G$ +zašifrovat náhodným klíčem $k\in G$ jako $y = E(x,k) = x+k$, a~tedy dešifrovat jako +$D(y, k) = y-k = (x+k)-k = x$. +Předchozí \uv{xorovací} verzi dostaneme volbou $G = \Z_2^n$. + +Opět nahlédneme, že sečtením libovolného prvku grupy s~rovnoměrně náhodným +prvkem dostaneme rovnoměrně náhodný prvek. (Pro každé $a\in G$ je $x \mapsto a+x$ +permutace na~$G$.) Proto je i~tato šifra dokonale bezpečná. + +Dokonalou bezpečnost můžeme interpretovat i takto: +Nechť Alice vybere zprávu $X\in G$ z~nějakého neznámého pravděpodobnostního rozdělení~$\cal D$ +a rovnoměrně rozdělený klíč $K\in G$. +My jsme zpozorovali nějakou konkrétní hodnotu~$y$ náhodné veličiny $Y=E(X,K)=X+K$ +a ptáme se, jaká je za této podmínky pravděpodobnost, že $X$ je rovno nějaké konkrétní +zprávě~$x$. +Zajímá nás tedy $\Pr[X=x \mid Y=y] += \Pr[X=x \mid X+K=y] += \Pr[X=x \mid K=y-X]$. +Ovšem $K$ je zvoleno nezávisle na~$X$, takže jevy $X=x$ a $K=y-x$ +jsou nezávislé, a~tudíž je podmíněná pravděpodobnost rovna nepodmíněné $\Pr[X=x]$. +Pozorování $Y=y$ tedy nepřináší vůbec žádnou informaci o~hodnotě~$X$. + +\endchapter diff --git a/Makefile b/Makefile index b0d2125..3ae0073 100644 --- a/Makefile +++ b/Makefile @@ -10,6 +10,7 @@ include Makerules CHAPTERS= \ 01-intro + 02-perfect chapters: for ch in $(CHAPTERS) ; do $(MAKE) -C $$ch pics ; done -- GitLab