Skip to content
Snippets Groups Projects
Commit a51b3a2a authored by Martin Mareš's avatar Martin Mareš
Browse files

Intro: Hešovací funkce

parent 143dfddf
No related branches found
No related tags found
No related merge requests found
...@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment