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
Tonda Maloň
Úvod do kryptografie
Commits
ef5d235f
Commit
ef5d235f
authored
1 year ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Náhodné generátory
parent
e9735b56
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
01-intro/intro.tex
+61
-1
61 additions, 1 deletion
01-intro/intro.tex
with
61 additions
and
1 deletion
01-intro/intro.tex
+
61
−
1
View file @
ef5d235f
...
@@ -137,6 +137,66 @@ slepením podepisovacího klíče se zprávou.
...
@@ -137,6 +137,66 @@ slepením podepisovacího klíče se zprávou.
\section
{
Náhodné generátory
}
\section
{
Náhodné generátory
}
TODO
Kryptografické protokoly také často potřebují generátor náhodných bitů
\em
{
(RNG -- random number
generator)
}
. Ten má být nejen statisticky rovnoměrný, ale pro vnějšího
pozorovatele kompletně nepředvídatelný -- i~pokud by pozorovatel znal celou
historii vygenerovaných bitů, nesmí mu to pomoci zjistit cokoliv o~následujícím bitu.
RNG se používá zejména pro generování klíčů, ale má i jiné zajímavé aplikace.
\examplen
{
hybridní šifra
}{
Zatímco symetrické šifry obvykle mají lineární časovou složitost, všechny známé asymetrické
šifry jsou asymptoticky pomalejší. Proto se používá konstrukce, která kombinuje oba druhy šifer.
Říká se jí
\df
{
hybridní šifra
}
a funguje následovně:
\tightlist
{
o
}
\:
Značení:
\tightlist
{
o
}
\:
Nechť
$
E
_
A
$
a
$
D
_
A
$
je šifrovací a dešifrovací funkce nějaké asymetrické šifry.
\:
$
K
_
E
$
a
$
K
_
D
$
je šifrovací a dešifrovací klíč pro tuto šifru vygenerovaný Bobem.
Klíč
$
K
_
E
$
je veřejný a zná ho i~Alice. Klíč~
$
K
_
D
$
je soukromý Bobův.
\:
$
E
_
S
$
a~
$
D
_
S
$
je šifrovací a dešifrovací funkce nějaké symetrické šifry.
\endlist
\:
Alice chce poslat nějakou zprávu~
$
x
$
Bobovi.
\:
Alice vygeneruje náhodný klíč~
$
N
$
pro symetrickou šifru.
\:
Alice zašifruje zprávu symetricky:
$
y
=
E
_
S
(
N, x
)
$
.
\:
Alice zašifruje klíč~
$
N
$
asymetricky:
$
z
=
E
_
A
(
K
_
E, y
)
$
.
\:
Alice pošle Bobovi
$
y
$
a~
$
k
$
.
\:
Bob použije asymetrickou šifru, aby získal klíč
$
N
=
D
_
A
(
K
_
D, z
)
$
.
\:
Bob použije symetrickou šifry, aby získal zprávu
$
x
=
D
_
S
(
N, y
)
$
.
\endlist
}
Všimněte si, že pomalou asymetrickou šifru používáme jen na krátký řetězec~
$
N
$
fixní délky,
zatímco celou dlouho zprávu~
$
x
$
šifrujeme symetricky.
Útočník má následující možnosti:
\tightlist
{
o
}
\:
zaútočit na symetrickou šifru
\:
zaútočit na asymetrickou sifru
\:
zaútočit na náhodný generátor: pokusit se uhodnout klíč~
$
N
$
\endlist
\examplen
{
výzva a odpověď
}{
Alice je uživatel a Bob server. Alice chce Boba přesvědčit, že zná heslo, ale nechce mu ho posílat.
Udělají to následovně: Bob vygeneruje náhodný řetězec --
\em
{
výzvu (challenge).
}
Alice výzvu podepíše
pomocí svého klíče, například zahešováním výzvy spojené s~heslem, a~pošle to jako
\em
{
odpověď (response).
}
Bob také zná heslo, takže může provést stejný výpočet a ověřit, že mu vyšlo totéž.
}
\examplen
{
přehrávací útok a nonce
}{
Zamysleme se nad vlastnostmi výzvy v~předchozím příkladu. Především se nesmí opakovat. Jinak by si totiž
útočník mohl zaznamenávat všechny Aliciny odpovědi a když by později od Boba dostal tutéž výzvu, mohl by
odpovědět zaznamenanou odpovědí. Tomu se říká
\em
{
přehrávací útok (replay attack)
}
-- útočník použil
legitimní zprávu, ale v~jiném kontextu.
To je v~kryptografii velmi typická situace: potřebujeme generovat nějaké řetězce
\uv
{
na jedno použití
}
.
Těm se říká
\em
{
nonce
}
z~anglického
\uv
{
number used once
}
. My si toto slovo počeštíme a budeme ho skloňovat
podle vzoru
\uv
{
růže
}
. Kde takovou nonci sehnat? Buďto si můžeme pořídit počítadlo a postupně ho zvyšovat;
jak uvidíme v~kapitole TODO, udržování stavu je v~praxi dost problematické. Proto bývá jednodušší nonci
generovat náhodně. Teoreticky se sice může zopakovat, ale jak uvidíme v~oddílu TODO, stane se to s~velmi
malou pravděpodobností.
}
\endchapter
\endchapter
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