===== Zadání ======
Kryptografie: Použití základních symetrických algoritmů (AES), módy činnosti blokových šifer. Použití základních asymetrických algoritmů (RSA, DSA). Základní kryptografické protokoly. Správa veřejných klíčů, certifikační autority a infrastruktury veřejných klíčů.
====== Vypracování ======
===== Použití základních symetrických algoritmů (AES) =====
Při symetrických algoritmech se používá ten samý šifrovací klíč na šifrování i dešifrování správy, klíč je tedy zdílený producentem i konzumentem.
Příkladem může být:
* Ceasar (Shift cipher)
* POLYBIOUS
* Playfair (použit ve WWI Britskou armádou)
* Vernamova šifra (zdroj XOR klíč = kryptotext, kryptotext XOR klíč = zdroj) - je perferktní kryptosystém, protože kryptotext neposkytuje žádne informace o zdrojovém textu.
* AES
AES (Advanced Encryption Standard) je bloková šifra, která představuje standard pro zabezpeční symetrickou kryptografií. Jako AES byla zvolená šifra Rijndael.
AES podporuje klíče velikosti 128, 192 a 256 bitů a využívá 128 bitový blok.
===== Módy činnosti blokových šifer =====
Bloková šifra používá stejný klíč na zašifrování zdrojového textu libovolné délky po blocích pevné délky. Proudová (stream) šifra používá jiný klíč na každý blok.
Mód činnosti blokové šifry představuje proces šifrování bloků.
==== Inicializační vektor ====
Inicializační vektor je bitový blok používaný mnohými módy pro randomizaci šifrování, čím je možné vytvořit různé krytotexty stejného zdrojového textu. Inicializační vektor nemusí být utajený.
==== Padding ====
Padding je zarovnání délky bloku šifrovaných dat. Používá se, pokud délka (zbývajících) zdrojových dat je menší, než délka bloku. Nejjednodušší způsob je doplnění nulových bajtů.
==== ECB (Electronic CodeBook) ====
Správa je rozdělená na bloky a každý blok je šifrován samostatně a nezávisle na ostatních blocích stejným způsobem (např. zdroj + klíč mod velikost_bloku).
==== CBC (Cipher Block Chaining) ====
V tomto módu je každý blok zdrojového textu XORován s kryptotextem předešlého bloku před samotným šifrováním. Hodnota kryptotextu bloku tak závisí na všech předešlých blocích. Pro zajištění unikátnosti šifrované zprávy je nutné použít pro první blok textu inicializační vektor.
==== PCBC (Propagated Cipher Block Chaining) ====
Cílem PCBC je propagace i malých změn v kryptotextu do nekonečna, jednak u šiforvání i dešifrování. V PCBC se XORuje plaintext a kryptotext předchádzejícího bloku a výsledek se pak XORuje s plaintextem dalšího bloku před šifrováním (porovnej s CBC). Pokud se ve zprávě šifrované pomocí PCBC prohodí dva bloky kryptotextu, není ovlyvněno dešifrování nasledovných bloků.
==== CFB (Cipher FeedBack) ====
CFB je v podstatě CBC "naruby". Při šifrování se nejdřív zašifruje inicializační vektor a výsledek se XORuje s plaintextem pro vytvoření kryptotextu. Kryptotext je pak použit jako inicializační vektor pro další blok.
Při dešifrování se dešifruje inicializační vektor a výsledek se XORuje s kryptotextem pro získání plaintextu. Kryptotext je pak inicializačním vektorem dešifrování dalšího bloku.
==== OFB (Output FeedBack) ====
OFB šifruje opakovaně inicializační vektor čímž vytváří nové klíče, které jsou XORovány s bloky plaintextu.
==== CTR (Counter) ====
CTR pracuje jako OFB, ovšem místo inicializačního vektoru se používa generátor sekvence, která se nesmí co nejdelší dobu opakovat, například pseudo-náhodný generátor, nebo inkrementální čítač. Inicializační vektor představuje semínko pro tento generátor sekvence.
===== Použití základních asymetrických algoritmů (RSA, DSA) =====
U asymetrické kryptografie se používá pár klíčů: veřejný a privátní. Veřejný klíč je možné použít na zašifrování zprávy tak, aby si ji mohl přečíst jen příjemce - dešifrovat ji privátním klíčem. Privátní klíč je možné použít na digitální podepsání dokumentu (obvykle se podepisuje hash dokumentu). Takový podpis je možné ověřit pomocí veřejného klíče.
Základní myšlenka je faktorizace celých čísel: Pro je výpočetně nemožné najít a . Je možné ověřit, jestli je prvočíslo v polynomiálním čase.
==== RSA ====
Postup pro vytvoření:
* zvol libovolná -bitová prvočísla , , přičemž je (například) z intervalu
*
* zvol dostatečně veliké takové, že
* mod
Veřejný klíč: (modulus), \\
Privátní klíč: , ,
Nechť je správa pro zašifrování. Kryptotext získáme jako mod . Správu je možné z kryptotextu získat vztahem mod .
Pozn.: Plaintext je nejdříve zakódován do abecedy , pak je rozdělen na bloky velikosti , přičemž . Každý blok je pak spracován jako celé číslo v modulo .
==== DSA ====
DSA (Digital Signature Algorithm) je standardizovaným algoritmem pro generování digitálních podpisů. Algoritmus je podobný ElGamal podpisovému algoritmu.
=== Generování klíče ===
* zvol kryptografickou hashovací funkci , například SHA-1 nebo SHA-2
* zvol délku klíče a , například 2048 nebo 3072. Doporučené hodnoty pro jsou (1024, 160), (2048, 224), (2048, 256) a (3072, 256). musí být menší nebo rovno délce výstupu hashovací funkce.
* zvol -bitové prvočíslo .
* zvol -bitové prvočíslo (modulus) takové, že je násobek
* zvol číslo , jehož stupeň modulo je , například mod pro volitené (). Je nutno zvolit jiné pokud je výsledek .
* zvol náhodné ,
* mod
Veřejný klíč je . Privátní klíč je .
=== Podepisování ===
* zvol (pro zprávu) náhodné ,
* mod mod
* pokud je , zvol jiné
* mod
* pokud je , zvol jiné
* podpis je
=== Ověření ===
* odmítni podpis pokud není splněno nebo
* mod
* mod
* mod
* mod mod
* podpis je platný pokud
===== Základní kryptografické protokoly =====
Kryptografické protokoly jsou komunikační protokoly, které zajišťují důvěrnost a integritu zpráv.
Příkladem kryptografických protokolů jsou:
* SSH
* HTTPS
* IPsec
* TLS-PSK
===== Správa veřejných klíčů =====
Veřejné klíče je možné spravovat dvěma hlavními způsoby:
* adresář typu zlaté stránky: Diffie-Hellman, elektronické formuláře, pokusy jako Global Trust Register
* modely důvěry PGP vs X.509: web of trust vs certifikační autorita (CA), PGP upraveno aby mohlo přijímat X.509 certifikáty, použitý model závisí na prostředí, nikoliv softwaru
===== Certifikační autority a infrastruktury veřejných klíčů =====
Nejběžnější infrastruktury veřejných klíčů jsou web of trust (PGP) a X.509.
V případě certifikační autority:
* pomocí CA je možno ověřit platnost certifikátu, který CA vydala (a nerevokovala)
* nikdo kromě CA nemůže vytvořit nebol upravit certifikát vydaný danou CA
X.509 definuje formát pro certifikáty veřejných klíčů, které obsahují daný veřejný klíč a jsou podepsány danou CA. Používá se s S/MIME, IP security, SSL/TLS, SET.
CA může certifikát revokovat pokud se stane neplatným.
====== Předměty ======
[[https://is.muni.cz/auth/predmety/predmet.pl?id=519427|FI:PA018]] Advanced Topics in Information Technology Security (jaro 2010), prof. RNDr. Václav Matyáš, M.Sc., Ph.D.
[[https://is.muni.cz/auth/predmety/predmet.pl?id=454980|FI:IV054g]] Kódování, kryptografie a kryptografické protokoly (podzim 2008), prof. RNDr. Jozef Gruska, DrSc.
====== Použitá literatura ======
Wikipedia
====== Vypracoval ======
DevelX - Martin Jurča
stav - 100 %