Kryptológia

[thumbnail|[Nemecko|Nemecký Lorenzov šifrovací prístroj, používaný v 2.svetovej vojne pre zašifrovanie správ na vysokej úrovni určené generálnemu štábu]]
**Kryptológia** (z gréckeho *kryptos*= ukrytý + *logos* = slovo, náuka) je veda o utajení obsahov správ. V súčasnosti sa kryptológia považuje za časť matematiky a počítačových vied, pričom je veľmi pridružená k informatike, počítačovej bezpečnosti a počítačovému inžinierstvu. 
Kryptológia je používaná v technologicky vyspelých aplikáciách; napríklad v zabezpečení peňažných bankomatov, počítačových hesiel a v elektronickom obchode. Vo všetkých týchto faktoroch zohráva veľkú úlohu práve kryptológia.
Kryptológia sa rozdeľuje na kryptografiu, kryptoanalýzu a steganografiu.

## Terminológia
Až do novoveku kryptológia označovala takmer výlučne šifrovanie, proces zmeny otvoreného obsahu textu do nezrozumiteľnej podoby (zašifrového textu). Dešifrovanie je opačný proces k šifrovaniu, je to zmena zašifrovaného textu na otvorený text. Šifra je dvojica algoritmov (predpisov na spracovanie), ktorými sa vykonáva šifrovanie a dešifrovanie. Šifrovanie je riadené algoritmom a kľúčom. Kľúč je tajný parameter (v zásade je známy iba príjemcovi a odosielateľovi). Kľúče sú dôležité a šifry bez variabilných kľúčov sú ľahko prelomiteľné a preto menej používané. V minulosti sa vykonávalo šifrovanie a dešifrovanie šifry rovnakým predpisom a bez dodatočných overovacích procesov ako autentifikácia alebo integrácia (ochrana pred neoprávnenou modifikáciou).

V hovorovej reči sa termín **kód** často používa ako metóda šifrovania alebo zatajenia správy. V kryptografii má však kód špecifický význam; Kódovanie znamená zámenu jednotky otvoreného textu (napr. významového slova alebo frázy) s kódovacou jednotkou (napríklad slovo otvoreného textu prst sa zamieňa za slovo poď dole). Medzi najznámejšie príklady kódu sa zaraďuje ASCII a Morseova abeceda. Ak by sa napríklad odosielateľ dohodol s príjemcom na zmene poradia o jeden symbol v Morseovej abecede, v tom prípade by už išlo o šifru a kľúčom by bolo samotné posunutie. Cieľom kódu nie je obsah textu zatajiť, ale modifikovať tak, aby ho bolo možné spracovávať príslušným technickým zariadením.

**[[Kryptografia]]** je oblasť kryptológie, ktorej cieľom je skúmanie a navrhovanie šifrovacích systémov, ktoré budú spĺňať určité podmienky ako autenticitu, dôvernosť, dostupnosť, integritu a pôvod dát. Ich úlohou je teda urobiť určitý obsah správy nečitateľným v prípade jeho zachytenia treťou osobou. Kryptografiou sa zaoberajú **kryptografi**.

**[[Kryptoanalýza]]** je oblasť kryptológie, ktorej cieľom je skúmanie metód lúštenia šifrovacích systémov, čiže je to rozbor (analýza) zašifrovaných správ a ich metód šifrovania, ktorými sa hľadá spôsob preniknutia do šifrovacieho systému.

**[[Steganografia]]** je oblasť kryptológie, ktorej cieľom je zatajiť existenciu správy. Steganografické metódy obsahujú napríklad používanie neviditeľných atramentov a pod.

## História kryptografie a kryptoanalýzy
[thumb|199px|right|[Skytála používaná v antickom Grécku bola možno prvým zariadením, na ktorom sa realizovalo šifrovanie správ.]]
V minulosti kryptológia slúžila výhradne k zatajeniu obsahu správ – zmenu obsahu textu správy z otvoreného textu do zašifrovaného textu a opačne v prípade zachytenia správy nepovolanou osobou alebo špiónom. V posledných desaťročiach, sa oblasť kryptológie rozšírila okrem cieľa utajenia obsahu správy k technikám pre zachovanie integrity správ, autentifikácie, digitálnych podpisov, dôvernosti, dostupnosti a mnohých ďalších.

Najskoršie formy zatajovania obsahov správ vyžadovali trocha viac ako špeciálne pero a model papiera, keď pre väčšinu ľudí boli nečitateľné. Väčšia gramotnosť alebo gramotnosť protivníkov vyžadovala účinnú kryptografiu. Hlavné klasické typy šifier sú transpozičné šifry ktoré spočívajú v zamiešaní poradia písmen otvoreného textu (napr. slovo "pomôž mi" sa zmodifikovalo na "opômž im") a substitučné šifry, ktoré spočívajú v systematickom nahradzovaní jednotlivých symbolov obsahu textu za určené ďalšie symboly alebo skupinu symbolov (napr. substitučná šifra slova "wikipedia" mohla vyzerať ako "xjljrfejb" pričom v tomto spôsobe sa symboly šifrovanej abecedy posunuli o jeden symbol oproti abecede otvoreného textu). Jednoduché verzie oboch šifier však poskytovali v prípade zachytenia správy nepovolanou osobou len malú ochranu a boli ľahko dešifrovateľné. Medzi najstaršie substitučné šifry patrila Cézarova šifra, ktorá spočívala v tom, že každé písmeno *n* otvoreného textu bolo nahradené písmenom určitej hodnoty *n+k*. Táto šifra je pomenovaná po Caesarovi, ktorý ju používal s posunutím *k* o 3 miesta v abecede pri komunikácií s jeho generálmi počas vojenských operácií, a táto šifra je podobná kódu EXCESS-3 v booleanskej algebre.

Kryptografia nepatrí medzi mladé disciplíny, práve naopak. Potreba šifrovať siaha hlboko do minulosti, až do čias faraónov. Prvá zmienka o šifrovaní pochádza z Egypta približne 4000 rokov dozadu.

Medzi ďalšie staršie kryptografické systémy patrí skytála. Skytála bola dômyselný a pritom jednoduchý kryptografický nástroj. Princíp spočíval v použití drevenej paličky istého priemeru, okolo ktorého sa navinul pásik papiera, na ktorý sa napísala krátka správa. Keď sa papier rozvinul, na voľné miesta sa doplnili písmená nesúvisiace so správou. Osoba, ktorej bola takto zašifrovaná správa určená, musela mať paličku rovnakého priemeru, inak bola správa nečitateľná. Tento nástroj sa používal hlavne v Sparte v 5. stor. pred Kr.

Ďalší významný rozvoj v kryptografii nastal začiatkom 20. storočia, keď došlo k vynájdeniu a zavedeniu telegrafu. V roku 1917 bol vynájdený prvý bezpečný kryptosystém Vernam, ktorý bol postavený na prúdovej šifre. Obdobie do konca 50-tych rokov je charakteristické hlavne používaním zložitých mechanických a elektromechanických šifrovacích strojov. Veľký pokrok v kryptografii nastal hlavne počas I. a II. svetovej vojny, keď sa šifrovanie stalo veľmi dôležitou disciplínou. Medzi najvýznamnejšie šifrovacie prístroje tej doby patrila Enigma, ktorá bola používaná Nemcami počas druhej svetovej vojny a dlhý čas predstavovala skutočne „tvrdý oriešok“. Nemci verili, že táto šifra je bez kľúča neprelomiteľná. Šifru však prelomili poľskí matematici Marian Rejewski, Henrik Zygalski a britský matematik Alan Turing. Kód bol prelomený predovšetkým vďaka práci poľských matematikov Mariana Rejewskiho a Henrika Zygalskiho. V roku 1932 Rejewski rozkódoval jeden z jednoduchších typov Enigmy. Bez jeho práce, by aj Alanovi Turingovi, trvalo rozkodovanie enigmy „priveľmi“ dlho a stalo by to mnoho spojeneckých životov. Novší typ Enigmy (tzv. ponorková Enigma) bola rozkódovaná aj vďaka šťastnej náhode, keď bola zajatá nemecká ponorka, ktorá mala na svojej palube jeden prístroj Enigma. Skôr, ako ju Nemci stihli zničiť sa dostala do rúk Angličanom a tí konečne rozlúštili „záhadu neprelomiteľného kódu“ šifrovacieho stroja Enigma.

## Delenie šifier
Postupným vývojom kryptografie dochádalo k deleniu jednotlivých typov kryptografických algoritmov do niekoľkých základných skupín. Najzákladnejšie delenie je na:
* symetrické šifry,
* asymetrické šifry

Delenie možno podrobnejšie rozšíriť na nasledujúce skupiny: 
* tradičné šifry,
* klasické techniky,
* substitučné šifrovacie systémy,
* transpozičné šifrovacie systémy,
* moderné techniky,
* symetrické šifrovacie systémy,
* šifry s verejným kľúčom,
* asymetrické šifrovacie systémy.

### Substitučné šifrovacie systémy
Substitučná šifra nahrádza každý znak otvoreného textu iným znakom šifrovaného textu. 
Aby príjemca získal otvorený text, musí na zašifrovaný text použiť inverznú substitúciu. 
V klasickej kryptografii existujú štyri typy substitučných šifier:

# Jednoduchá substitučná šifra (monoalfabetická šifra) je taká šifra, v ktorej sa každý znak otvoreného textu nahrádza príslušným znakom šifrovaného textu.
# Homofónna substitučná šifra sa podobá jednoduchému substitučnému systému. Jeden znak otvoreného textu môže byť nahradený jedným znakom z niekoľko možných znakov šifrovaného textu. Znak “A” by mohol byť nahradený napr. 5, 13, 25 alebo 56, “B” napr. 7, 19, 31 alebo 42 atď.
# Polygramová substitučná šifra je taká, v ktorej šifrovanie prebieha medzi skupinami znakov. Napríklad skupina “ABA” môže byť nahradená skupinou “RTQ”, “ABB” skupinou “SLL” atď.
# Polyalfabetická substitučná šifra sa skladá z niekoľkých jednoduchých šifier. Napríklad túto šifru môže tvoriť päť rôznych, jednoduchých substitučných šifier; jednotlivé šifry sú postupne aplikované na jednotlivé po sebe idúce znaky otvoreného textu. Medzi substitučné šifry patrí napríklad Caesarova šifra alebo Vernamova šifra.

### Transpozičné šifrovacie systémy
Pri transpozičných šifrách sa znaky otvoreného textu nemenia, mení sa iba ich usporiadanie. Pri jednoduchej stĺpcovej transpozičnej šifre sa otvorený text zapisuje horizontálne na štvorčekovaný papier a zašifrovaný text sa získava jeho vertikálnym čítaním. Pri dešifrovaní sa šifrovaný text zapíše vertikálne opäť na štvorčekovaný list papiera rovnakej šírky a číta sa horizontálne.

Otvorený text: jednoduchastlpcovatranspozicnasifra; Šifrovaný text: jloepzdcinocovndaautscrihafanrssatp

Pretože znaky šifrovaného aj otvoreného textu sú rovnaké, bude sa frekvenčný výskyt jednotlivých znakov šifrovaného textu približne rovnať frekvenčnému výskytu znakov v príslušnom národnom jazyku. Navyše je tento systém náročný na pamäť a niekedy aj obmedzuje dĺžku správ. Sem patria napríklad: Cardanova mriežka, Richelieuova šifra.

### Symetrické šifrovacie systémy
V základnom delení bolo spomínané, že medzi tradičné šifrovacie systémy patria symetrické šifry. Využívajú vhodne zvolené kombinácie substitučných a transpozičných algoritmov. Tento šifrovací systém sa nazýva symetrický preto, lebo šifrovací kľúč je možné odvodiť z dešifrovacieho a naopak. Väčšina symetrických algoritmov má rovnaký šifrovací aj dešifrovací kľúč. Tieto algoritmy označované ako algoritmy tajného kľúča vyžadujú, aby sa príjemca aj odosielateľ vopred dohodli na kľúči, ktorý budú používať. Bezpečnosť je založená na utajení kľúča. Ak sa používa dlhšiu dobu, vzniká nebezpečenstvo, že kľúč padne do nepovolaných rúk a obsah utajovaných informácií sa prezradí. Preto sa kľúče často obmieňajú – nazývame ich aj “kľúče pre sedenie” (session – relácia).

Symetrické algoritmy sa môžu deliť na dve kategórie a to na:
* prúdové,
* blokové.

V dnešných algoritmoch je typická dĺžka 64 bitov. V minulosti sa otvorený text šifroval po jednom znaku. Najbežnejšie používané symetrické algoritmy sú Rivest Cipher 5 (RC5), Data Encryption Standard (DES), International Data Encryption Algorithm (IDEA), Blowfish Skipjack a AES.

### Asymetrické šifrovacie systémy
Využívajú dva kľúče – verejný na šifrovanie, ktorý môže byť šírený verejne, a súkromný, ktorý slúži na dešifrovanie a je tajný. Zrejme najznámejším a najpoužívanejším z asymetrických šifrovacích systémov je RSA.

### Typológia lúštenia
* Ciphertext-only attack-COA lúštenie so znalosťou zašifrovaného textu
* Known-plaintext attack-KPA lúštenie so znalosťou otvoreného textu
* Chosen-plaintext attack-CPA lúštenie s možnosťou voľby otvoreného textu
* Adaptive-Chosen-plaintext attack-ACPA adaptívne lúštenie s možnosťou voľby otvoreného textu
* Chosen-ciphertext attack-CCA lúštenie s možnosťou voľby zašifrovaného textu
* Chosen-key attack-CKA lúštenie s možnosťou voľby kľúča
* Brute force attack-BFA útok hrubou silou
* Rubber-hose attack-RHA útok fyzickou silou (obuškom)
* Purchase-key attack-hose attack-PKA korupčná kryptoanalýza
* Side channel attack-hose attack-SCA útok s postrannými kanálmi

## Externé odkazy
* http://www.krypto.szm.sk/kryptologia.htm
* http://friedo.szm.sk/index.html
* https://web.archive.org/web/20230409124547/http://vrabciehniezdo.wz.cz/