- Cíle jednotky
- Pozadí
- Definice
- Časové osy
- Druhy šifer
- Kryptografie s tajným klíčem
- Caesarova šifra
- Monoalfabetická substituce
- Homofonní substituce
- Jednoduchá Vigenèrova šifra
- Vigenèrův automatický klíč
- Moderní šifry s automatickým klíčem
- Playfair
- Čtyřčtverec
- Jednoduchá bloková transpozice
- Sloupcová transpozice
- Železniční plot
- Kombinace substituce a transpozice
- Bifid
- Trifid
- Enigma
- Moderní kryptografické metody
- DES
- IDEA
- RC4
- RC6
- Blowfish
- Twofish
- AES
- Výměna klíčů
- Kryptografie s veřejným klíčem
- Kryptosystém RSA
- Kryptografické hašování
- Ověřovací kódy zpráv
- Digitální podpisy
- RSA pro digitální podpisy
- DSA
- Kryptanalýza
- Příklady programování
- Příklady v jazyce JavaScript
- Příklady pro Python
- Příklady pro Javu
Cíle jednotky
Pozadí
Alice a Bob mohou být lidé, ale také klienti a servery, rovnocenné počítače, úložiště dat, síťové směrovače atd. Mallory může podvrhnout jednoho z účastníků, přidat, upravit nebo odstranit aktuální zprávy, unést spojení, provést odepření služby, injektovat malware atd.
Cíle:
- Důvěrnost: Obnovení $m$ by mělo Evu stát více, než kolik stojí $m$.
- Autentizace: Bob by měl být schopen ověřit, že to byla Alice, kdo poslal $m$.
- Integrita: Bob by měl být schopen ověřit, že s $m$ nebylo manipulováno.
- Neodmítnutí:
Nejlepší kryptosystémy předpokládají, že Eva a Mallory znají $E$, $D$, $c$, a pokud $k_e \neq k_d$, pak i $k_e$. Většina kryptosystémů nespoléhá na utajení svých algoritmů, protože:
- Pokud je váš tajný algoritmus prozrazen (někdo by mohl opustit vaši skupinu), musíte ho změnit, a to je mnohem těžší než pouhá změna klíče!
- Veřejné algoritmy mohou být podrobeny zkoumání tisíců odborníků, kteří hledají chyby, takže máte určitou míru důvěry v ty, které odolávají zkoumání.
Další čtení: Security Through Obscurity, Kerchoffův princip a tato diskuse.
Studium kryptologie zahrnuje návrh různých šifer, metody kryptoanalýzy (útoky), výměnu klíčů, ověřování klíčů, kryptografické hašování, digitální podepisování a společenské otázky (právní, politické atd.). Podívejte se na stránku Wikipedie s tématy z oblasti kryptografie.
NEDĚLEJTE TYTO VĚCI SAMI V REÁLNÝCH APLIKACÍCH
Jistě, doma si můžete hrát, ale NIKDY se nepokoušejte vytvářet vlastní kryptografii pro cokoli reálného. Nechte to na profesionálech. Pokud se sami stanete profesionálem, pak, mmmmm, v pořádku.
Toto bylo důležité oznámení pro veřejnost.
Definice
Slova, která je třeba znát:
Kryptografie Umění a věda o vytváření šifer. Kryptoanalýza Umění a věda o prolamování šifer, tj. získání $m$ za předpokladu $c$, $E$, $D$ a případně $k_e$. Kryptologie Studium kryptografie a kryptoanalýzy
Kryptosystém Určitý soubor algoritmů a protokolů pro šifrování, dešifrování a generování klíčů. Příklady: Příklady: Cramer-Shoupův kryptosystém, Rabinův kryptosystém, Benalohův kryptosystém, RSA kryptosystém. Kryptografický systém Jakýkoli systém, který používá kryptografii. Šifra Algoritmus používaný v kryptosystému.
Zmatek Vlastnost, že vztah mezi otevřeným textem, šifrou a klíčem je tak komplikovaný, že je pro kryptoanalytika nepoužitelný. Difuze Vlastnost, že statistické vzory v otevřeném textu jsou široce rozšířeny v šifrovém textu.
Časové osy
Pokud máte rádi historii….
- Článek Historie kryptografie na Wikipedii
- Časová osa na Wikipedii
- Časová osa Carla Ellisona
Druhy šifer
Zde jsou uvedeny některé užitečné kategorie šifer. Všimněte si, že určitá šifra může patřit do více než jedné z těchto kategorií.
- Klasické: Šifra, která je dostatečně jednoduchá na to, aby ji bylo možné provést ručně, obvykle založená na znacích. Nazývá se také ruční.
- Moderní: V podstatě jakákoli šifra, která není klasická.
- Substituční: Každý znak otevřeného textu je nahrazen jedním nebo více znaky, aby vznikl šifrový text.
- Transpozice:
- Monoalfabetická:
- Polyalfabetická: Substituční šifra, ve které je znak otevřeného textu vždy nahrazen stejným znakem:
- Homofonní: Substituční šifra, která v podstatě používá více monoalfabetických substitučních mapování:
- Polygrafická:
- Periodická: Polyalfabetická šifra, v níž se schéma nahrazování opakuje.
- Neperiodická: Je to jasné, pokud rozumíte periodické.
- Bloková: Šifrování neprobíhá po jednotlivých znacích, ale po blocích znaků.
- Proudová:
- Tajný klíč: Šifra pracující s datovým tokem neznámé délky, obvykle obsahující zpětnou vazbu: Šifra, ve které jsou $k_e$ a $k_d$ stejné nebo triviálně odvozené jeden od druhého; vyžaduje, aby se strany tajně setkaly a vyměnily si klíče, které budou používat. Nazývá se také symetrická.
- Veřejný klíč: Schéma, ve kterém je šifrovací klíč každého veřejně znám, ale jeho dešifrovací klíč je utajen. Nazývá se také asymetrické.
Kryptografie s tajným klíčem
Šifry s tajným klíčem (alias symetrickým klíčem) jsou mnohem rychlejší než šifry s veřejným klíčem, ale správa klíčů může představovat velký problém.
- Potřebuje-li $n$ lidí ve skupině komunikovat, potřebují $\frac{n(n-1)}{2}$ klíčů.
- Klíče musí být distribuovány bezpečně (tajně).
- Klíče musí být v bezpečí.
- Klíče by se měly často měnit, což se zpětně promítá do distribuční bolesti hlavy.
POZNÁMKA
V následujících příkladech založených na znacích budeme předpokládat (bez ztráty obecnosti) abecedu o 26 znacích (
A..Z
).
Caesarova šifra
Na dnešní poměry zcela ubohá a nezabezpečená šifra. Šifrovací klíč $k_e$ je malé celé číslo a $k_d = k_e$. Pro zašifrování přičtěte $k_e$ ke každému znaku otevřeného textu, pro dešifrování odečtěte.
ATTACKATDAWN
stane FYYFHPFYIFBS
Triviální prolomení: stačí odhadnout $k_e$.
Monoalfabetická substituce
Místo prostého přidání pevného posunu ke každému znaku můžete předem vypočítat substituční tabulku vygenerováním náhodné permutace abecedy. Například:
ABCDEFGHIJKLMNOPQRSTUVWXYZ MQHPSVJYCURFTBILAKWNGZDOEX
Nyní ATTACKATDAWN
je nyní MNNMHRMNPMDB
.
Tuto šifru neprolomíte uhodnutím klíče (existuje $n!$ možných klíčů), ale frekvenční analýza dokáže prolomit jakoukoli monoalfabetickou substituční šifru, pokud je zpráva dostatečně dlouhá.
U technik, jejichž klíčem je permutace, je jedním ze způsobů, jak si klíč snáze zapamatovat, vybrat frázi, rozvrhnout její jedinečná písmena a pak v pořadí doplnit chybějící písmena. Například PREMATURE OPTIMIZATION IS THE ROOT OF ALL EVIL
dává toto mapování substituce:
PREMATUOIZNSHFLVBCDGJKQWXY
Homofonní substituce
Každé písmeno otevřeného textu se mapuje na jeden nebo více symbolů v šifrovém textu. Počet cílů by měl být úměrný jejich četnosti (aby se zabránilo frekvenční analýze). Příklad:
A 12 15 36 50 56 70 81 95 B 51 84 C 16 44 65 D 04 06 48 82 E 01 17 19 34 47 49 58 60 67 77 85 90 F 13 27 G 09 28 H 26 42 53 59 68 71 I 35 73 76 86 91 96 J 18 K 07 L 29 40 54 87 M 25 30 N 21 61 62 69 74 94 O 02 03 08 10 57 75 93 P 41 98 Q 97 R 32 38 43 45 80 83 S 14 22 39 79 89 99 T 00 20 23 33 46 52 72 78 88 U 11 64 66 V 37 W 63 92 X 31 Y 24 55 Z 05
Pro šifrování vybírejte náhodně z možností. Příklad, jedno z možných zašifrování ATTACKATDAWN
je
56 78 20 95 65 07 12 72 06 50 92 61
Jednoduchá Vigenèrova šifra
Šifru známou jako jednoduchá posunovací Vigenèrova šifra Vigenère vůbec nevymyslel… zdá se, že ji poprvé popsal Giovan Battista Bellaso. Klíčem je řetězec, který přidáte k otevřenému textu modulárním sčítáním, jako v tomto příkladu (A=0, B=1, C=2, …, Z=25):
Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUARKQUAR Ciphertext: JUKVKSIPPYVSOLBFILZMONOEYHGANSBWOOYDNHVDXCRUPBIOI
K ručnímu generování šifrového textu můžete použít kódové kolo nebo tabula recta.
Toto schéma není bezpečné, protože klíč se opakuje. Pokud lze určit délku klíče, může kryptoanalytik provést několik frekvenčních analýz (jednu pro každou hodnotu posunu v klíči). Metody pro určení délky klíče jsou Kaisiskiho metoda a Friedmanův test.
Pro binární data (tj. posloupnost bitů) je modulární sčítání báze 2 jen jednoduchým xor. Příklad:
Plaintext: 0110000101010000111101001010101010010000001111101 Key: 0000011100000111000001110000011100000111000001110 Ciphertext: 0110011001010111111100111010110110010111001110011
Vigenèrův automatický klíč
Vigenère skutečně vytvořil automatickou šifru, která je silnější, protože klíč se nikdy neopakuje. Místo toho se „klíč“ skládá z klíčové fráze následované otevřeným textem, například takto:
Plaintext: TAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRDFLOOR Key: QUARKTAKEACOPYOFYOURPOLICYTONORMAWILCOXONTHETHIRD Ciphertext: JUKVKVOZCOHMDSFUMZCTNHZVQPFOJWCOOTWYVVBHUBYHYSWFU
Ten použil otevřený text jako součást klíče. Můžete také použít šifrový text. Vidíte jak?“
Moderní šifry s automatickým klíčem
Vigenèrovy šifry s automatickým klíčem můžete stále luštit pomocí lingvistické analýzy, protože klíč obsahuje text, a je tedy pravděpodobné, že obsahuje písmena s vysokou frekvencí. Moderní šifry s automatickým klíčem generují hodnoty posunu pomocí generátoru náhodných čísel. Klíč je semenem generátoru.
- stejně dlouhý nebo delší než šifrovaná zpráva
- je skutečně náhodně generován
- je použit jednou a pouze jednou
Pak máte prokazatelně bezpečnou šifru zvanou one time pad. Váš skutečný algoritmus může používat polyalfabetickou substituci nebo dokonce prosté xorování zprávy s klíčem, pokud splňujete tři výše uvedená kritéria.
Jednorázovou podložku nelze nikdy prolomit. Z matematického hlediska je to každopádně dokonalé šifrovací schéma.
Playfair
Jedná se o příklad polygrafické substituční šifry. Klíčem je permutace {A..I,K..Z},například:
Z C B M L G D A Q E T U O K H F S X V N P I Y R W
Chcete-li zašifrovat, vypište otevřený text (bez mezer a interpunkce), přičemž mezi zdvojená písmena a v případě potřeby na konec vložte křížek, aby měl text sudou délku.Pak pro každou dvojici písmen:
- Nechť $(a,b)$ je řádek a sloupec prvního znaku a $(c,d)$ je řádek a sloupec druhého.
- Pokud $a \neq c$ a $b \neq d$, pak vraťte $(a,d)(b,c)$.
- Pokud $a = c$, pak vrátíme $(a,(b+1) \bmod 5)(c,(d+1) \bmod 5)$.
- Pokud $b = d$, pak vrátíme $((a+1) \bmod 5,b)((c+1) \bmod 5,d)$.
THEN ATTACK FROM THE EAST
⇒ TH EN AT XT AC KF RO MT HE XE AS TX
⇒ UT HW GO FO DB TV YK ZK NH NA DX OF
⇒ UTHWGOFODBTVYKZKNHNADXOF
Dekódování probíhá podle opačných pravidel. Playfairova šifra je dost nezabezpečená.
Čtyřčtverec
Šifruje digrafy jako Playfair, ale o něco silnější, protože umožňuje zdvojená písmena a nevydává obrácené digrafy šifrového textu pro obrácené digrafy jednoduchého textu. Příklad
a b c d e G I V E M f g h i k L B R T Y l m n o p O D A H C q r s t u F K N P Q v w x y z S U W X Z P R E M A a b c d e T U O I Z f g h i k N S H F L l m n o p V B C D G q r s t u K Q W X Y v w x y z
THEN ATTACK FROM THE EAST
⇒ TH EN AT TA CK FR OM TH EE AS TX
⇒ NI VL EV FM MO BV DF NI MA VV NX
Okay, takže o něco silnější než Playfair, ale co? Počítače to rozlousknou za pár vteřin nebo možná minut (při dostatečném množství šifrového textu).
Jednoduchá bloková transpozice
Nejjednodušší transpoziční šifra rozdělí zprávu do bloků o velikosti n a pak každý blok zakóduje podle permutace $(1..n)$.
GETTHATHEALTHINSPECTOR
stane TGATEHATTEHLSHENIPRCOT
.Sloupcová transpozice
Zprávu vypíšeme po řádcích do mřížky a pak ji přečteme po sloupcích. Naprosto nezabezpečené. Klíčem je právě počet řádků. Uhádněte to.
Železniční plot
Železniční plot není o nic lepší než ten předchozí, jen funkčnější. Klíčem je počet kolejnic, na které zapisujete otevřený text způsobem nahoru a dolů, přičemž šifrový text generujete čtením po jedné kolejnici.
Příklad: Pro zakódování "fill out and file a WS2475 form"
na 4 kolejnicích:
f t l 4 m i u a i e 2 7 r l o n f a s 5 o l d w f
poté přečtete šifrový text "ftl4miuaie27rlonfas5oldwf"
. To je triviální k prolomení. Stačí odhadnout $k$.
Kombinace substituce a transpozice
Samotná transpozice je velmi slabá; substituce je slabá; jejich kombinace je lepší. Můžete kombinovat spoustu klasických substitučních šifer s různými transpozicemi nebo použít některé speciální kombinační šifry, například bifid. Také většina slavných rotorových strojů a moderních šifer používá tuto kombinaci; ve skutečnosti tyto transformace používají mnohokrát.
Bifid
Tato nahrazuje písmena jejich souřadnicemi v mřížce a na souřadnicích provádí sloupcovou transpozici. Příklad:
Z C B M L G D A Q E T U O K H F S X V N P I Y R W
Napište souřadnice (řádek, sloupec) pod každé písmeno otevřeného textu (např, „A“ je v řádku 1, sloupci 2; „T“ je v řádku 2, sloupci 0 atd.):
ATTACKATDAWN 122102121143 200213201244
Poté odečtěte v řádcích, seskupte po dvou a vyhledejte písmena šifrového textu:
122102121143200213201244 A U B A D R T B Q T A W
Trifid
Podobně jako Bifid, ale na kostce. Příklad:
Z C B M L F V N P G D A Q E X I R W T U O K H S Y . J
Chcete-li šifrovat, napište nejprve souřadnice:
ATTACKATDAWN 000001000022 122102121110 200210201221
000001000022122102121110200210201221 Z C Z O S F H Q V I N .
Enigma
Enigma byl slavný německý rotorový stroj z druhé světové války (ve skutečnosti rodina strojů). většina verzí implementovala polyalfabetickou substituční šifru s periodou 16900 plus zásuvnou desku pro skramblování (transpozici). Klíč se skládal z pořadí rotorů, počáteční pozice každého rotoru, nastavení kroužků a nastavení plugboardu (asi 1,6 × 1020 možností). Každý den byl v kódových knihách (víceméně) předem zveřejněn nový klíč.
Spojenci jej dokázali rozlousknout díky některým slabinám v jeho konstrukci…
- Žádné písmeno se nezašifrovalo samo do sebe
- Samoreciprocita znamenala, že bylo méně možností nastavení šifrátoru
…ale hlavně mnoho slabin ve způsobu jeho použití…
- Bylo opravdu snadné najít šifry. Většina zpráv začínala zprávou o počasí.
- Brzy se objevily klíče zpráv dvakrát po sobě.
…a získáním kódových knih ze zajatých plavidel.
O tom, jak byla Enigma prolomena, se můžete dočíst zNSA,a zWikipedie.
Moderní kryptografické metody
Teď, když máme Shannonovu teorii informace, velmi výkonné počítače a staletí teorie a praxe za sebou, je většina moderních technik:
- pracují s bitovými řetězci, nikoliv s řetězci znaků
- pečlivě maskují vzory a redundance v otevřeném textu
- používají náhodné klíče (které lze použít i opakovaně)
- zajišťují, že velmi malé změny v otevřeném textu ovlivní velkou část šifrového textu (a naopak). Tomu se říká lavinový efekt.
Dále je dobré, když je šifra:
- účinná
- odolná proti chybám
Většina šifer jsou buď blokové, nebo proudové šifry. Blokové šifry vyžadují vyplňování a mohou pracovat v různých režimech (viz Schnierova kniha nebo článek na Wikipedii.)
- ECB – Elektronická kódová kniha
- CBC – Cipher Block Chaining
- CFB – Cipher Feedback
- OFB – Výstupní zpětná vazba
- CTR – Counter
- BC – Block Chaining
- PCBC – Propagating Cipher Block Chaining
- CBCC – Cipher Block Chaining s kontrolním součtem
.
DES
Na Wikipedii
IDEA
Na Wikipedii
RC4
Na Wikipedii
RC6
Na Wikipedii
Blowfish
At Wikipedia
Twofish
At Wikipedia
AES
At Wikipedia
AES je nový standard, který nahradil DES. Stal se vítězem soutěže (v roce 2001), kde byl předložen pod názvem Rijndael, a porazilRC6, Serpent, MARS a Twofish.
Výměna klíčů
Diffie a Hellman (vítězové Turingovy ceny za rok 2015) a jejich přítelMerkle v roce 1976 ukázali, že je možné, aby si dva lidé vyměnili tajný klíč, aniž by se museli skutečně tajně setkat:
- Alice vybere prvočíslo $n$ a pošle ho nepokrytě Bobovi
- Alice vybere prvočíslo mod $n$ (jak najít), zvané $g$, a pošle ho nepokrytě Bobovi
- Alice vybere tajné celé číslo $a$, a pošle čistě $g^a \bmod n$ Bobovi
- Bob vybere tajné celé číslo $b$ a pošle čistě $g^b \bmod n$ Alici
- Alice vypočítá ($g^b \bmod n)^a \bmod n$ a Bob vypočítá ($g^a \bmod n)^b \bmod n$. To je klíč! (Je to $g^{ab} \bmod n$)
Toto je pravděpodobně bezpečné za předpokladu, že $n$ je velmi velké a $\frac{n-1}{2}$ je také prvočíslo, protože i když Eva zná $g$, $n$, $g^a \bmod n$ a $g^b \bmod n$, není znám žádný účinný způsob, jak z nich získat $a$ nebo $b$.To je problém diskrétního logaritmu, pamatujete?
Příklad s malým $n$:
- Alice vybere $n=208799$ a $g=13$ a pošle je Bobovi
- Alice vybere $a=152335$ a Bob vybere $b=98113$
- Alice pošle Bobovi $13^{152335}. \bmod 208799 = 73033$
- Bob pošle Alici $13^{98133}. \bmod 208799 = 147540$
- Alice vypočítá $147540^{152335} \bmod 208799 = 8435$
- Bob vypočítá $73033^{98133}. \bmod 208799 = 8435$
- Tajný klíč je $8435$.
S malými hodnotami $n$ to skutečně nedělejte.
Všeobecně platí, že pokud nezískáte nějakou certifikaci,nepokoušejte se sami zabezpečit žádné systémy reálného světa. Ale samozřejmě se do toho pusťte a naučte sealgoritmy a zatím si procvičte kódování.
Kryptografie s veřejným klíčem
Šifry s veřejným klíčem řeší noční můru správy klíčů u šifer s tajným klíčem, ovšem na úkor rychlosti. Ve skupině $n$ lidí stačí $n$ veřejných klíčů a $n$ soukromých klíčů.
Kryptosystém RSA
Diffie-Hellman nešifruje, pouze vyměňuje klíč, RSA umí šifrovat i dešifrovat. Tady je návod, jak na to. Každá osoba
- Vygeneruje dvě velká prvočísla, $p$ a $q$.
- Vybere si hodnotu $e$ relativně prvočíselnou k $(p-1)(q-1)$.
- Zveřejní svůj veřejný klíč $(N,e)$, kde $N = pq$.
- Vypočítá $d$ = modulární inverzní hodnotu $e$ vzhledem k $(p-1)(q-1)$ a uchová ji v tajnosti.
- Zničí $p$ a $q$.
Teď se podívejte na toto:
- Ali chce Alice poslat zprávu $m$ Bobovi, pošle $c = m^e \bmod N$.
- Bob to snadno dekóduje, protože $m = c^d \bmod N$.
Triviální příklad:
POZOR!
Tento příklad je pouze ilustrační. Nikdy neimplementujte vlastní šifrovací algoritmus. Také se ujistěte, že chápete, jak hrozná je kryptografie s veřejným klíčem s tak malými klíči. Skutečné klíče by měly mít tisíce bitů.
Použijeme 16bitový klíč (NEDĚLEJTE TO IHNED). Vygenerujte dvě náhodná 8bitová prvočísla:
$p = 163\\q = 173$
Vygenerujte 16bitové prvočíslo pro kódovací exponent:
$e = 64013$
Nyní:
$n = pq = 28199 \\d = \mathsf{modInverse}(e, (p-1)(q-1)) = 6797$
Zakódujme řetězec ¿Dónde está ud.?
. Zde je v UTF-8:
c2 bf 44 c3 b3 6e 64 65 20 65 73 74 c3 a1 20 75 64 2e 3f
V desítkové soustavě:
194 191 68 195 179 110 100 101 32 101 115 116 195 161 32 117 100 46 63
Nyní na každý aplikujme kódovací funkci::
$194^{64013} \bmod 28199 = 15626$
$191^{64013} \bmod 28199 = 19945$
$68^{64013} \bmod 28199 = 27982$
$\vdots$
$63^{64013} \bmod 28199 = 18384$
Šifrový text je:
15626 19445 27982 22746 2679 7739 16824 23107 9054 23107 8378 16412 22746 5566 9054 881 16824 17864 18384
K dekódování:
$15626^{6797} \bmod 28199 = 194$
$19445^{6797} \bmod 28199 = 191$
$27982^{6797} \bmod 28199 = 68$
$\vdots$
$16824^{6797} \bmod 28199 = 63$
Původní zprávu dostaneme zpět!
Mimochodem
Protože symetrické šifrování je mnohem rychlejší, můžete nejprve vygenerovat tajný klíč a přenášet ho po lince zabezpečené kryptografií s veřejným klíčem. Nyní může veškerá budoucí komunikace používat tento tajný klíč.
Kryptografické hašování
Haš, neboli otisk prstu, kontrolní součet, digest zprávy je bitový vzor (obvykle kolem 160 bitů), který je generován ze zprávy kryptografickou hašovací funkcí. Aby byl hash bezpečný neboli kryptografický, musí být výpočetně nemožné
- najít zprávu, která se hashuje na danou hodnotu (jednosměrnost)
- najít dvě zprávy, které se hashují na stejnou hodnotu (odolnost proti kolizi)
Matematicky řečeno, kryptografická hashovací funkce $H$ vytváří hash ze zprávy, $H(m) = c$, takovou, že $m$ nelze efektivně určit z $c$ a nelze efektivně najít $m_1 \neq m_2$ takovou, že $H(m_1) = H(m_2)$,
Obvykle změna pouhého jediného bitu ve zprávě způsobí, že digest bude vypadat zcela a úplně jinak.
$ cat willThis is my will.I leave 1000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum willc18feb890752c9e680c99d1e909fd761 will$ sed "s/1/9/g" will > Will$ cat WillThis is my will.I leave 9000 dollars to Aliceand everything else to Bob.Signed, Eve.$ md5sum Will85570bc2d0458b1f98f484261dee7d4d Will
Zabezpečený hash poskytuje způsob, jak zjistit, zda se zprávou nebylo manipulováno.
Viz Steve Friedl’s Illustrated Guide to Cryptpgraphic Hashes.
Ověřovací kódy zpráv
Ty jsou podobné kryptografickým hashům s tím rozdílem, že používají tajný klíč, zatímco hashe používají pouze samotnou zprávu.
$MAC(m, k) = c$
Další informace:
- Kódy MAC vs. Hashe na StackOverflow
- Digitální podpisy na Wikpedii
- MAC na Wikipedii
Digitální podpisy
Jak si může být Bob jistý, že zpráva pochází od Alice a ne od někoho jiného? tím, že ji Alice podepíše; tak. V praxi se obvykle podepisuje hash, nikoli celá zpráva.
RSA pro digitální podpisy
Pokud Alice pošle zprávu Bobovi,
- Alice zašifruje m svým soukromým klíčem
- Alice zašifruje Bobovým veřejným klíčem
- Bob dešifruje svým soukromým klíčem
- Bob dešifruje pomocí Aliciným veřejným klíčem
$m = A(B'(B(A'(m)))$
DSA
Na Wikipedii
Kryptanalýza
Jedná se o rozsáhlé téma, kterému se zde nebudeme věnovat. Místo toho je zde uveden seznam technik.
- Frekvenční analýza
- Útok na známý otevřený text
- Útok na známý šifrový text
- Útok na vybraný otevřený text
- Útok na vybraný text. klíčový útok
- Lineární kryptoanalýza
- Diferenciální kryptoanalýza
- Krádež
- Podplácení
- Vydírání
Příklady programování
He, nebudeme si ukazovat, jak si nacvičit vlastní kryptoanalýzu. Podíváme se na některé skutečné exsitující knihovny.
Přenášíte data přes IP síť?
Použijte TLS.
Přečtěte si ale, jestli chcete používat nějaké zábavné kryptografické knihovny.
Příklady v jazyce JavaScript
Reference: Node crypto
.
Příklady pro Python
Reference:Kryptografické knihovny Python -Python hashlib
-Python secrets
Příklady pro Javu
.