Praktická kryptológia 22
Steganografia

Gustavus J. Simmons v roku 1983 definoval tzv. väzenský problém (The prisoner’s problem), ktorého hlavnými aktérmi sú väzni Alica a Bob. Tí chcú zosnovať plán úteku k čomu nevyhnutne potrebujú vzájomne komunikovať a vymeniť si príslušné detaily. Sleduje ich však dozorkyňa Eva, ktorá väzňom síce umožní komunikovať, avšak akonáhle zistí, že komunikácia prebieha šifrovane, zastaví ju. Alica a Bob teda môžu komunikovať, no správy nesmú šifrovať. Väzenský problém je klasickým príkladom aplikácie steganografie (gr. steganós-skrytý, gráphein-písať), ktorej prioritnou úlohou nie je údaje šifrovať, ale skryť.

obr1

Praktická kryptológia 21
CAST prakticky

Túto časť seriálu venujeme praktickej ukážke využitia algoritmu CAST k šifrovaniu údajov. Urobíme tak v rámci nástroja implementujúceho tzv. steganografiu, ktorú sme si spomínali v úvode tohto seriálu. O samotnej staganografii si povieme viac v nasledujúcich článkoch. Dnes sa zameriame na opis jedného z mnohých steganografických nástrojov s názvom Steghide (steghide.sourceforge.net). Ten okrem iných podporuje aj algoritmus CAST a to obe jeho varianty.

obr2obr1

Praktická kryptológia 20
CAST6

V tomto článku seriálu si predstavíme odvodený variant algoritmu CAST označovaný ako CAST-256, resp. CAST6. Tento Kanadský algoritmus bol jedným z adeptov prihlásených do súťaže o výber nového šifrovacieho štandardu AES. Rovnako ako v prípade CAST5 ide o štandardnú symetricko-substitučno-permutačnú blokovú šifru založenú na Feistelovej sieti. CAST6 je priamym rozšírením pôvodnej šifry CAST5 tzn. má s ňou mnoho spoločných čŕt. Hlavným rozdielom je použitie tzv. štvor-iterácií (quad-rounds) a oktáv (octave), ktoré sa aplikujú v 12-tich iteráciách (rundách). CAST6 pracuje so 128-bitovými blokmi spracovávaných údajov a podporuje variabilnú dĺžku kľúčov z množiny (128, 160, 192, 224, 256) bitov. Algoritmus spĺňa všetky požadované kryptografické vlastnosti vrátane SAC, BIC, absencie slabých šifrovacích kľúčov a podobne.

obr1

Praktická kryptológia 19
CAST

V tejto časti seriálu si začneme predstavovať ďalší zo symetrických šifrovacích algoritmov s názvom CAST. Skratka CAST vznikla spojením počiatočných písmen mien autorov algoritmu, ktorými sú Kanaďania Carlisle Adams a Stafford Tavares. Algoritmus vyvinuli v roku 1996 a podrobne popísali v RFC 2144 (máj 1997). Má dva varianty a to CAST-128 označovaný ako CAST5 a odvodený (derived) CAST-256 označovaný ako CAST6 (RFC 2612 z júna 1999). V oboch prípadoch ide o štandardné symetrické substitučno permutačné blokové šifry založené na Feistelovej sieti.

obr2obr1

Praktická kryptológia 18
Kontajnery a súbory s kľúčmi

Touto časťou seriálu ukončíme tému, v rámci ktorej sme sa venovali praktickej aplikácii šifrovania pevných diskov a diskových oblastí. Popíšeme si jeden z viacerých spôsobov šifrovania kontajnerov a takisto si ukážeme ako používať súbory s kľúčmi. Kontajnerom je v tomto konkrétnom prípade súbor určenej veľkosti, ktorý bude obsahovať zašifrované údaje. Jednou z výhod použitia kontajnerov je ich možný presun napr. na USB kľúč, prenos a sprístupnenie na inom počítači. Pri dodržaní špecifických podmienok možno dokonca kontajnery spracovávať aj na iných platformách. V závere článku si predstavíme tzv. súbory s kľúčmi (keyfiles), ktoré sú inou formou autentifikácie. Ich presunom na USB kľúč, čipovú kartu, resp. iné úložné médium vytvárame tzv. tokeny. Tie umožňujú pracovať so zašifrovanými údajmi bez nutnosti ručného zadávania hesla.

obr2obr1

Praktická kryptológia 17
Šifrovanie diskových oblastí

Tento článok bude voľným pokračovaním predošlej časti seriálu, v ktorej sme sa venovali šifrovaniu pevných diskov. Zameriame sa na niektoré významné detaily a uvedieme si význam nástrojov a procedúr, ktoré sme použili pri šifrovaní. Okrem detailnejšieho popisu šifrovacieho procesu uvedieme nevýhody, ktoré sú spojené so šifrovaním úložných médií.

obr2obr1

Praktická kryptológia 16
XTS FDE

V tejto časti seriálu si ukážeme postup manuálnej aktivácie šifrovania diskových oblastí, resp. celých pevných diskov (Full Disk Encryption). Ako obvykle nebudeme zachádzať do detailov, ktoré by ďaleko presiahli rozsah tohto článku. Šifrovacím algoritmom bude Serpent, avšak jeho prípadná zmena nijako neovplyvní výsledný produkt. Šifrovací mód bude XTS s príslušnými parametrami. V našom prípade nebudeme šifrovať úplne celý disk, tzn. nevyužijeme vlastnosti UEFI ale budeme pracovať s dnes už zastaralým BIOSom. Na inštaláciu použijeme distribúciu Xubuntu 16.04, konkrétne jej obraz xubuntu-16.04.4-desktop-amd64.iso.

obr2obr1

Praktická kryptológia 15
Šifrovacie módy

Bezpečnosť, no takisto aj výkonnosť a efektivita moderných kryptografických algoritmov závisí nielen na samotnom šifrovacom algoritme, ale aj na šifrovacom móde (procese), pomocou ktorého je otvorený text transformovaný na šifrovaný text. V uvedenom procese má nezanedbateľnú úlohu najmä paralelné spracovanie, ktoré možno s výhodou aplikovať najmä v prípade moderných paralelných procesorov (CPU), resp. grafických procesorov (GPU). Tie ťažia zo svojej natívnej paralelnej architektúry čím dokážu veľmi efektívne nahradiť prácu hlavného procesora. Je známe, že NIST prijal ako AES štandard algoritmus Rijndael. Pri popise šifrovacích módov a konkrétnejšie módu XTS však nemusíme hovoriť iba o algoritme AES Rijndael, ale aj o nami prezentovanom algoritme Serpent a takisto o ďalších algoritmoch, ktoré okrem štandardných módov akými sú CBC či ECB, dokážu pracovať aj v móde XTS.

obr2obr1

Praktická kryptológia 14
Serpent

V tejto časti seriálu sa vrátime k teórii a popíšeme si algoritmus Serpent. Ten bol jedným z piatich úspešných finalistov súťaže o nový šifrovací štandard (AES), ktorý mal nahradiť dovtedy používaný DES (3DES). Jeho autormi sú Angličan Ross Anderson, Izraelčan Eli Biham a Nór Lars Knudsen. Tí sa pri vývoji šifry zamerali na paralelné hardvérové spracovanie a vysokú bezpečnosť a to na úkor rýchlosti. Práve pomalšia rýchlosť v porovnaní s algoritmom Rijndael bola dôvodom prečo sa šifra Serpent v súťaži AES umiestnila na druhom mieste. Autori však jasne konštatovali, že Serpent bola prinajmenšom rovnako rýchla, resp. rýchlejšia šifra ako DES a zároveň bola omnoho bezpečnejšia ako 3DES a takisto bezpečnejšia ako šifra Rijndael. Autori určite vedeli o čom hovorili pretože boli zároveň autormi viacerých úspešných kryptoanalytických metód. Algoritmus uvoľnili pod GPL licenciou, tzn. ktokoľvek ho môže implementovať či už na hardvérovej, resp. softvérovej úrovni.

obr1

Praktická kryptológia 13
Twofish prakticky

V tejto časti seriálu sa na chvíľu prestaneme venovať teórii a predstavíme si dve veľmi podobné aplikácie, ktoré okrem iných implementujú aj algoritmus Twofish, o ktorom sme písali v predošlých častiach seriálu. Nami vybrané aplikácie nie sú prioritne určené na spracovávanie jednotlivých súborov aj keď to principiálne umožňujú. Zameriavajú sa však najmä na prácu s tzv. kontajnermi, ktoré sú určené na uloženie viacerých súborov či zložiek. Okrem správy kontajnerov umožňujú spracovávať oblasti pevných diskov (volumes), resp. celé pevné disky.

obr2obr1

Praktická kryptológia 12
Funkcie algoritmu Twofish

Tento článok bude pokračovaním témy, v rámci ktorej sa venujeme algoritmu Twofish. Tentoraz sa zameriame na funkcie, resp. základné stavebné bloky algoritmu, pomocou ktorých dochádza k transformácii otvoreného textu na šifrovaný a späť. Zopakujme, že algoritmus je založený na Feistelovej sieti. Na šifrovanie aj dešifrovanie sú použité tie isté operácie pričom jednotlivé sub-kľúče sú aplikované v inverznom poradí a bitové posuvy sú v schéme umiestnené na odlišných pozíciách. Tie isté operácie sú aplikované 16 krát v tzv. iteráciách (rundách), ktoré spolu vytvárajú doposiaľ neprelomenú šifru.

obr1

Praktická kryptológia 11
Twofish

V tomto článku sa začneme venovať ďalšiemu zo symetrických šifrovacích algoritmov, ktoré navrhol Bruce Schneier spolu s jeho spolupracovníkmi. Ide o nelicencovaný algoritmus Twofish, ktorý bol podobne ako Blowfish uvoľnený v nepatentovanej forme s voľne šíriteľným zdrojovým kódom. Twofish sa spolu s ďalšími šifrovacími algoritmami zúčastnil programu AES (1997) inštitútu NIST, ktorý ako vieme v závere uprednostnil algoritmus Rijndael. Napriek skutočnosti, že algoritmus Twofish nebol víťazom súťaže, je rovnako dobre použiteľný a doposiaľ nebol prelomený. Šifra bola jednou z 5-tich finálnych šifier pričom splnila všetky podmienky stanovené inštitútom.

obr1

Praktická kryptológia 10
Blowfish

Týmto článkom sa vrátime k teórii a budeme sa venovať ďalšiemu zo symetrických šifrovacích algoritmov s názvom Blowfish. Tento algoritmus je tzv. Feistelového typu, pri ktorom sa šifrovanie a dešifrovanie údajov uskutočňuje pomocou symetrickej štruktúry nazývanej Feistelová sieť. Jej výhodou je to, že šifrovanie aj dešifrovanie možno vykonať veľmi podobným, resp. úplne identickým postupom, ktorého jediným rozdielom je reverzia kľúčového plánu (key schedule). Ďalšou charakteristikou algoritmov vychádzajúcich z Feistelovej siete je viacnásobná iterácia šifrovacej funkcie, ktorú nazývame aj tzv. rundová funkcia.

obr2obr1

Praktická kryptológia 9
AES prakticky

V tejto časti seriálu si predstavíme niekoľko viac či menej známych Linuxových nástrojov určených na praktickú realizáciu šifrovania/dešifrovania údajov s využitím algoritmu AES. V úvode si popíšeme tzv. CLI (Command Line Interface) nástroje spúšťané a konfigurované z príkazového riadku (shell) Linuxu. Následne si predstavíme jeden z mála tzv. GUI frontendov, ktorý okrem iného implementuje aj šifrovací algoritmus AES.

obr2obr1

Praktická kryptológia 8
AES operácie

V tejto časti seriálu si popíšeme operácie vykonávané v procese šifrovania otvoreného textu pomocou šifry Rijndael. Konkrétne ide o operácie SubBytes, ShiftRows, MixColumn a AddRoundKey, ktoré sa aplikujú v Nr-1 iteráciách. V poslednej iterácii Nr absentuje jedna operácia a to MixColumns. Počet iterácií Nr je závislý na dĺžke použitého kľúča Nk, pričom v každej iterácii sa spracováva príslušný stav (state) s využitím samostatného, tzv. rundového kľúča (RoundKey) patriaceho k danej iterácii. Základnou vlastnosťou algoritmu Rijndael je paralelizmus vykonania operácií príslušných k danej iterácii. V rovnakom okamihu je možné spracovávať viaceré byty, riadky a stĺpce konkrétneho stavu. Takisto je možné paralelizovať expanziu kľúča so súčasným behom daného iteračného kroku. Samotná expanzia kľúča má sekvenčný charakter, avšak všetky kľúče možno vypočítať vopred a uložiť do predpripraveného zoznamu, resp. poľa (array) kľúčov.

obr4obr3obr2obr1

Praktická kryptológia 7
AES

Týmto článkom sa vrátime k teórii a to konkrétne k popisu algoritmu (šifry) Rijndael, ktorý sa stal víťazom súťaže vyhlásenej organizáciou NIST. Algoritmus bol prijatý v roku 2001 vo forme nového štandardu AES (Advanced Encryption Standard), ktorý je podrobne popísaný v publikácii FIPS PUB 197. Tá obsahuje úplný popis šifry – použité matematické operácie, dôvody výberu jednotlivých parametrov a takisto možné spôsoby optimalizácie na 8 a 32-bitových platformách. V našich článkoch si postupne predstavíme tzv. Galoisove teleso, základné matematické operácie, ktoré sú v ňom definované a samotnú štruktúru iteračnej blokovej šifry Rijndael vrátane jej operácií. Teóriu následne aplikujeme v praxi vo forme praktickej ukážky šifrovania/dešifrovania údajov pomocou AES.

obr2obr1

Praktická kryptológia 6
GnuPG

V tomto článku odbočíme od teoretickej línie seriálu a v krátkosti si popíšeme nástroj na šifrovanie a dešifrovanie údajov, ktorý okrem iného implementuje aj algoritmus DES. Ako už vieme, ide o algoritmus, ktorý bol prelomený a jeho základný variant sa neodporúča používať. Viaceré nástroje ho síce majú vo svojom portfóliu kryptovacích algoritmov, avšak už iba z dôvodu spätnej kompatibility. Základný DES v každom prípade dopĺňajú o jeho variant TDEA nazývaný ako 3DES, ktorý je stále použiteľný.

obr2obr1

Praktická kryptológia 5
DES, TDEA

V tejto a takisto aj v nasledujúcej časti seriálu si predstavíme prvý kryptografický algoritmus modernej počítačovej doby. Je ním algoritmus DES, ktorý bol prijatý ako štandard v júli 1977. DES je detailne popísaný v publikácii FIPS PUB 46 (Federal Information Processing Standards Publication) vydanej organizáciou U.S. Department of Commerce NIST (National Institute of Standards and Technology). Uvedená publikácia okrem štandardu DES zahŕňa aj jeho variant TDEA (Triple Data Encryption Algorithm), ktorého módy použitia sú popísané v ANSI X9.52. Detailné informácie týkajúce sa inštitútu NIST možno získať z jeho domovskej stránky csrc.nist.gov.

obr3obr2obr1

Praktická kryptológia 4
História – druhá svetová vojna a povojnové obdobie

Touto časťou seriálu sa priblížime k finále témy, v rámci ktorej sa venujeme histórii kryptológie. V úvode si povieme pár slov o medzivojnovom období. Následne sa zameriame na najvýznamnejšiu etapu formovania kryptografických konštrukcií a to obdobie 2. svetovej vojny a obdobie po skončení oboch svetových vojen až po súčasnosť.

obr2obr1

Praktická kryptológia 3
História – novovek a prvá svetová vojna

V tejto časti seriálu budeme pokračovať v interpretácii prehľadu histórie kryptológie. Zameriame sa na obdobie novoveku a 1. sv. vojny, z ktorých vyberáme udalosti vedúce k uplatneniu ďalších významných pojmov súvisiacich s kryptografickými konštrukciami.

Voynichov_rukopisFleissnerova_mriezka

Praktická kryptológia 2
História – predvojnové obdobie

Túto a takisto aj nasledujúce dve časti seriálu sme sa rozhodli venovať stručnému prehľadu histórie kryptológie. Robíme tak preto, lebo práve história dala základ modernému chápaniu tejto vedy. Stav, v ktorom sa v súčasnosti nachádza vývoj kryptografických konštrukcií, priamo súvisí s historickou potrebou utajovania správ, ktorá tu bola od nepamäti. V našich článkoch sa pokúsime uviesť najvýraznejšie míľniky vývoja kryptológie. Formovanie tejto vedy rozdelíme do dvoch časových období: prvým je obdobie predchádzajúce svetovým vojnám a druhým vývoj vo vojnovom a povojnovom období. Je samozrejmé, že v prvopočiatkoch bolo tempo pomalé, no obe svetové vojny a najmä rapídny rozvoj informačných technológií, ktorý sme zaznamenali v poslednom desaťročí, viedol k exponenciálnemu rozmachu bezpečnostných konštrukcií a systémov.

Albertiho_disk_a_Vigenerov_stvorecSkytale_a_Polybiov_stvorec

Praktická kryptológia 1
Úvod

Na začiatku nového roku Vám prinášame nový seriál, v ktorom sa budeme venovať kryptológii a jej praktickému využitiu. Cieľom seriálu je predstaviť najvýznamnejšie fakty týkajúce sa kryptológie, jej histórie, no najmä jej masívneho vplyvu na súčasný IT svet. Teóriu a matematickú stránku prezentujeme iba v nevyhnutnom rozsahu. Seriál orientujeme najmä na využitie teoretických poznatkov v rámci aplikačného prostredia. Postupne si predstavíme rôzne nástroje, ktoré svojim spôsobom implementujú kryptografické konštrukcie (algoritmy, protokoly, schémy). Dôležité aspekty kryptológie sa pokúsime zostručniť a sumarizovať tak aby sme naplnili stanovený cieľ v rozsahu článkov, ktorý máme k dispozícii. Nebudeme sa venovať programovaniu ale prezentujeme už existujúce aplikácie a nástroje. V článkoch budeme používať pojmy správa = text = údaj, pričom všetky tieto pojmy predstavujú tú istú jednotku spracovávanej informácie. Správa teda môže byť reprezentovaná rôznymi formami, buď ako čitateľný text, ale aj ako obrázok, binárne údaje či rôzne multimédiá (zvuky, videá...). Ľubovolnú z uvedených foriem správy je možné zašifrovať a v zašifrovanej podobe prenášať.

obr1