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
a51b3a2a
Project 'mj/mo-submit' was moved to 'mo-p/osmo'. Please update any links and bookmarks that may still have the old path.
Commit
a51b3a2a
authored
May 12, 2024
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Intro: Hešovací funkce
parent
143dfddf
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
+35
-1
35 additions, 1 deletion
01-intro/intro.tex
with
35 additions
and
1 deletion
01-intro/intro.tex
+
35
−
1
View file @
a51b3a2a
...
@@ -88,12 +88,15 @@ a tu pak umí dešifrovat jen Bob.
...
@@ -88,12 +88,15 @@ a tu pak umí dešifrovat jen Bob.
Pozor na to, že klíče mají dva druhy vlastností:
Pozor na to, že klíče mají dva druhy vlastností:
\em
{
veřejný
}
vs.
\em
{
soukromý
}
a
\em
{
šifrovací
}
vs.
\em
{
dešifrovací
}
.
\em
{
veřejný
}
vs.
\em
{
soukromý
}
a
\em
{
šifrovací
}
vs.
\em
{
dešifrovací
}
.
V~našem protokolu je šifrovací klíč veřejný a dešifrovací soukromý.
V~našem protokolu je šifrovací klíč veřejný a dešifrovací soukromý.
Zajímavá je i~opačná kombinace:
Zajímavá je i~opačná kombinace: zveřejníme-li dešifrovací klíč a ponecháme si šifrovací,
\examplen
{
podpis
}{
Zveřejníme-li dešifrovací klíč a ponecháme si šifrovací,
získáme něco, co se chová jako
\em
{
podpis.
}
Každý si může zprávu přečíst, ale jenom majitel
získáme něco, co se chová jako
\em
{
podpis.
}
Každý si může zprávu přečíst, ale jenom majitel
příslušného soukromého klíče ji umí vytvořit. Všimněte si rozdílu: šifra zajišťuje
\em
{
utajení
}
příslušného soukromého klíče ji umí vytvořit. Všimněte si rozdílu: šifra zajišťuje
\em
{
utajení
}
obsahu zprávy (nepovolané osoby ji neumí přečíst), zatímco podpis zajišťuje
\em
{
integritu
}
obsahu zprávy (nepovolané osoby ji neumí přečíst), zatímco podpis zajišťuje
\em
{
integritu
}
(pokud nepovolaná osoba zprávu změní, přijde se na to). Často budeme chtít kombinovat obojí.
(pokud nepovolaná osoba zprávu změní, přijde se na to). Často budeme chtít kombinovat obojí.
}
Časem se ukáže, že naše triviální použití veřejných klíčů má zásadní slabinu:
Časem se ukáže, že naše triviální použití veřejných klíčů má zásadní slabinu:
Nic nebrání útočníkovi podstrčit do veřejného adresáře svůj klíč místo klíče oběti.
Nic nebrání útočníkovi podstrčit do veřejného adresáře svůj klíč místo klíče oběti.
...
@@ -101,8 +104,39 @@ Později tento problém vyřeší certifikační autority.
...
@@ -101,8 +104,39 @@ Později tento problém vyřeší certifikační autority.
\section
{
Hešovací funkce
}
\section
{
Hešovací funkce
}
Dalším důležitým primitivem je
\df
{
kryptografická hešovací funkce.
}
Ta na vstupu dostane
libovolnou zprávu a spočítá z~ní
\em
{
otisk (fingerprint)
}
fixní délky (třeba 256 bitů).
Funkci budeme považovat za
\uv
{
dostatečně náhodnou
}
a oproti hešovacím funkcím známým
z~datových struktur po ní budeme navíc chtít, aby byla:
\list
{
o
}
\:
bez inverzí -- pro zadaný otisk se neumí efektivně najít vstup, který se
zahešuje na tento otisk;
\:
bez kolizí -- ačkoliv
\em
{
kolize
}
(dvojice zpráv se stejným otiskem) evidentně
nastávají, je těžké nějakou najít.
\endlist
\examplen
{
vylepšení podpisů
}{
Podepisování zpráv pomocí asymetrických šifer není zrovna šikovné. Pokud zprávu postupně
podepíše více osob (představte si petici), je k~přečtení zprávy potřeba ji mnohokrát dešifrovat.
To je jednak pomalé, ale také to selže, pokud nám chybí některý z~veřejných klíčů.
Raději proto pošleme zprávu otevřeně a kdykoliv ji někdo bude chtít podepsat, asymetricky
zašifruje otisk zprávy. Jednotlivé podpisy budou krátké a na sobě nezávislé. Hešovací funkce
nám pak zajistí, že podpis skutečně patří k~obsahu zprávy. Všimněte si, že bezkoliznost heše
je zásadní: kdyby někdo uměl vytvořit dvě zprávy se stejným otiskem, mohl by oběti předložit
k~podepsání jednu z~nich a pak tvrdit, že podepsala tu druhou.
}
\examplen
{
symetrické podpisy
}{
Pomocí hešovacích funkcí také můžeme sestrojit symetrickou obdobu podpisů (té se říká
\em
{
message authentication code
}
), v~níž se tentýž klíč používá jak na podepisování,
tak na ověřování podpisu. To se hodí, pokud chceme zajistit integritu dat mezi dvěma
stranami, které si navzájem věří. Konstrukce je snadná: spočítáme otisk řetězce vzniklého
slepením podepisovacího klíče se zprávou.
}
\section
{
Náhodné generátory
}
\section
{
Náhodné generátory
}
TODO
\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
sign in
to comment