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
b2d3cb13
Commit
b2d3cb13
authored
4 months ago
by
Martin Mareš
Browse files
Options
Downloads
Patches
Plain Diff
Základní přehled útoků, security level
parent
c40d6af7
Branches
Branches containing commit
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
+67
-0
67 additions, 0 deletions
01-intro/intro.tex
with
67 additions
and
0 deletions
01-intro/intro.tex
+
67
−
0
View file @
b2d3cb13
...
@@ -330,4 +330,71 @@ zprávy, které nepatří k~aktuální instanci. Vlastně je ani nemusíme se zp
...
@@ -330,4 +330,71 @@ zprávy, které nepatří k~aktuální instanci. Vlastně je ani nemusíme se zp
-- stačí, když je započítáme do podpisu. Jakmile se pak objeví zpráva z~jiné instance,
-- stačí, když je započítáme do podpisu. Jakmile se pak objeví zpráva z~jiné instance,
prostě jí nebude souhlasit podpis.
prostě jí nebude souhlasit podpis.
\section
{
Kryptografické útoky
}
Co znamená, že kryptografický protokol je bezpečný? Mohli bychom říci, že to znamená,
že na něj neexistuje žádný úspěšný útok. Co to ale znamená? Podívejme se na některé
obvyklé druhy útoků. Pro jednoduchost budeme útočit na symetrickou šifru.
\defn
{
Standardní útoky na symetrické šifry:
\list
{
o
}
\:
{
\I
known ciphertext attack (KCA)
}
-- známe jenom množinu zašifrovaných zpráv, cílem je zjistit
klíč (někdy také jenom dešifrovat zprávy). To na první pohled zní beznadějně, ale dešifrované
zprávy mají často nějakou známou strukturu (text v~češtině, validní XML apod.), díky níž
dovedeme poznat, že klíč dává smýsl.
\:
{
\I
known plaintext attack (KPA)
}
-- známe jak zašifrované zprávy, tak odpovídající dešifrované
a cílem je opět zjistit klíč (případně dešifrovat nějaké další zprávy). Tato situace je překvapivě
častá: nezřídka se stává, že oběť posílá šifrovaně i data, která se později stanou veřejnými.
Nebo známe aspoň nějakou standardizovanou hlavičku zprávy či podpis na jejím konci.
\:
{
\I
chosen plaintext attack (CPA)
}
-- můžeme si vybrat jakékoliv zprávy a nechat si je zašifrovat.
Kdy se to může stát? Například útočíme-li na zabezpečené spojení k~webovému mailovému klientovi,
můžeme oběti prostě poslat mail a počkat, až si ho přečte. Někdy si umíme zvolit jenom část zprávy:
říká se, že spojenci ve 2. světové válce občas bombardovali obskurní ostrůvky v~Pacifiku, protože
doufali, že se jejich názvy objeví v~šifrovaných zprávách říšského námořnictva.
\:
{
\I
distinguishing attack (rozlišovací útok)
}
-- zašifrované zprávy neumíme kompletně dešifrovat,
ale dokážeme z~nich poznat nějakou netriviální vlastnosti dešifrovaného textu. V~našem příkladu
jsme třeba dokázali rozpoznat, je-li zpráva
{
\tt
PRIHOD
}
nebo
{
\tt
KONEC
}
.
\endlist
}
Útoky jsou seřazené od nejslabšího k~nejsilnějšímu. Tím myslíme, že šifra odolná proti CPA je
odolná i proti KPA, a~tím pádem i proti KCA. Proto se budeme snažit vytvářet alespoň CPA-odolné
šifry. Formální definice bezpečnosti v~kapitole TODO bude dokonce založena na zobecnění rozlišovacích útoků.
Zádrhel ovšem je, že striktně matematicky vzato, o~žádné šifře nemůžeme dokázat, že je byť jenom
KPA-bezpečná. Všech možných klíčů je konečně mnoho, takže vyzkoušíme-li každý, nutně na ten pravý
musíme narazit. Musíme se proto spokojit s~tím, že správný klíč nelze nalézt
{
\I
efektivně.
}
Praktičtí kryptografové to často vyjadřují následovně:
\defn
{
Šifra má proti danému druhu útoku
{
\I
úroveň bezpečnosti (security level)
}
$
b
$
~bitů,
pokud provedení útoku vyžaduje alespoň
$
2
^
b
$
kroků výpočtu.
}
Touhu po rigorózní definice bezpečnosti tato definice sotva uspokojí: Jednak neuvažuje randomizované
útoky, které nemají jednoznačný počet kroků. Ale hlavně neříká, co to znamená
{
\I
krok výpočtu.
}
Někdy se tím myslí jedna strojová instrukce, jindy zase zašifrování jedné zprávy. Naštěstí to
nehraje velkou roli, protože se jedná o~logaritmickou míru. Různé definice kroku tedy ovlivní
výsledek nanejvýš o~nižší desítky. Úroveň bezpečnosti 256 bitů proto bude s~jistotou mimo možnosti
všech útočníků.
Jelikož na šifru můžeme útočit vyzkoušením všech klíčů, úroveň bezpečnosti nemůže být
větší než počtu bitů klíče. Pokud není výrazně menší, považujeme šifru za dobrou.
Dodejme ještě, že v~kapitole~
\chapref
{
perfect
}
uvidíme několik příkladů, kdy budeme schopni
dokázat, že šifra je dokonale bezpečná nezávisle na výpočetním výkonu dostupném útočníkovi.
Za to ale zaplatíme omezeními použitelnosti šifry.
\subsection
{
Narozeninové útoky
}
TODO
\subsection
{
Útoky setkáním na půli cesty
}
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
register
or
sign in
to comment