Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Ú
Úvod do kryptografie
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Package registry
Model registry
Operate
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Martin Mareš
Úvod do kryptografie
Commits
1b3a15f9
Commit
1b3a15f9
authored
4 months ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Dokonalá bezpečnost: Začátek
parent
dbe6f9c2
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
02-perfect/Makefile
+3
-0
3 additions, 0 deletions
02-perfect/Makefile
02-perfect/perfect.tex
+102
-0
102 additions, 0 deletions
02-perfect/perfect.tex
Makefile
+1
-0
1 addition, 0 deletions
Makefile
with
106 additions
and
0 deletions
02-perfect/Makefile
0 → 100644
+
3
−
0
View file @
1b3a15f9
TOP
=
..
include
../Makerules
This diff is collapsed.
Click to expand it.
02-perfect/perfect.tex
0 → 100644
+
102
−
0
View file @
1b3a15f9
\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
This diff is collapsed.
Click to expand it.
Makefile
+
1
−
0
View file @
1b3a15f9
...
@@ -10,6 +10,7 @@ include Makerules
...
@@ -10,6 +10,7 @@ include Makerules
CHAPTERS
=
\
CHAPTERS
=
\
01-intro
01-intro
02-perfect
chapters
:
chapters
:
for
ch
in
$(
CHAPTERS
)
;
do
$(
MAKE
)
-C
$$
ch pics
;
done
for
ch
in
$(
CHAPTERS
)
;
do
$(
MAKE
)
-C
$$
ch pics
;
done
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment