ORSÁG, D. Kryptografie a moderní kryptografické algoritmy [online]. Brno: Vysoké učení technické v Brně. Fakulta strojního inženýrství. 2023.
Tato studie představuje koncizní a srozumitelný úvod do fascinujícího světa kryptografie, odlišující se propracovaným zpracováním historického vývoje šifer až po nejmodernější kryptografické algoritmy. Autor se zvláště podrobně věnuje popisu současných šifrovacích algoritmů, které jsou nezbytné pro zabezpečení naší každodenní komunikace, a nedává stranou ani rychle se vyvíjející pole kvantové kryptografie. V práci je také uvedena vlastní implementace moderní šifry RSA, což svědčí o hloubkovém porozumění tématu ze strany studenta. Nicméně, některé aspekty kryptografie by mohly být vysvětleny více do hloubky. Konkrétně to je frekvenční analýza a základní principy dešifrování šifer. Dále popis matematických principů na kterých stojí uvedené kvantově odolné šifry. Jejich zahrnutí do práce by ještě více posílilo celkový výklad. V rámci bakalářské práce, student prokázal vysokou míru samostatnosti, a většinu práce dokončil bez potřeby mého přímého zásahu či podpory. Avšak je nutné zdůraznit, že tato samostatnost vedla k určitému rozporu mezi konečným výsledkem a původní vizí, kterou jsem jako vedoucí měl. Tento nesoulad se dá přičíst hlavně studentově neochotě efektivně komunikovat během procesu, což ztížilo koordinaci a sjednocení naší vize. Přestože oceňuji jeho samostatnost a iniciativu, doporučuji pro budoucí projekty posílit komunikační dovednosti a otevřenost k zpětné vazbě, aby byla zajištěna lepší shoda mezi očekáváním a výsledkem. Z těchto důvodů hodnotím práci známkou C
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Splnění požadavků a cílů zadání | C | ||
Postup a rozsah řešení, adekvátnost použitých metod | C | ||
Vlastní přínos a originalita | C | ||
Schopnost interpretovat dosažené výsledky a vyvozovat z nich závěry | C | ||
Využitelnost výsledků v praxi nebo teorii | C | ||
Logické uspořádání práce a formální náležitosti | B | ||
Grafická, stylistická úprava a pravopis | B | ||
Práce s literaturou včetně citací | C | ||
Samostatnost studenta při zpracování tématu | A |
Předložená práce je vhodným úvodem do problematiky kryptografie. Zachycuje základy metod a implementuje poměrně moderní, stále používanou šifru RSA jako ukázku. Historie kryptografie je od starověku po moderní objevy poměrně obsáhle popsána. Bohužel přestože Britové v čele s Winstonem Churchillem byli zmíněni jako pokořitelé Enigmy, jméno Alana Turinga zůstalo opomenuto. Část 5 o kvantové kryptografii je pouze jednostranná a spojuje poměrně zmateně tři příbuzná témata: prolamování klasické kryptografie pomocí kvantových počítačů, algoritmy klasické kryptografie odolné vůči prolamování pomocí kvantových počítačů a pak využití vlastností kvant mikrosvěta pro detekci MITM útoku. Část 6 chybí, práce pokračuje částí 7. Tvrzení "Random je standardní knihovna Pythonu" je nesprávné, "random" je modul standardní knihovny jazyka Python. Další tvrzení o dynamické kontrole typů je zavádějící, částečně však reflektuje popis datového modelu z dokumentace, v praxi však v iterpretu nedochází k implicitní kontrole typu objektu, např. při volání metody, ale každý objekt může mít chování pozměněno individuálně. Tvrzení, že proměnná přejímá typ hodnoty je také zavádějící; proměnná jako jméno v programu je referencí na vytvořený objekt, který má datový typ. Dokumentace Pythonu se výrazu proměnná (variable) poměrně úspěšně vyhýbá. K těmto tvrzením o jazyku Python se nevztahuje žádná reference a jde tedy o osobní názor autora na záležitosti, které mají jasně uváděné definice. Doporučuji autorovi dostuovat dokumentaci The Python Language Reference, část 4.2. Naming and binding. A také The Python Standard Library - Numeric and Mathematical Modules - random. Práce obsahuje drobné nedostatky v rozdílu popisu fungování implementace a jejímu skutečnému fungování. V části 7.2.2 Šifrování: kód funkce getBlockFromText z výpisu 2 neodpovídá popisovanému chování funkce; nerozděluje text na bloky po 2 bajtech (blockSize=2 to nezaručuje) a také je neukládá jako 16 bitová čísla. V části 7.2.3 Dešifrování: autor tvrdí, že ciphertext je seznam. Ovšem v kódu ve výpisu 4 je volána metoda split objektu ciphertext a seznam (list) v Pythonu takovou metodu nemá. Zákaz uživateli měnit velikost bloku odůvodněné zajištěním přehlednosti považuji za nešťastné, právě to by názorně mohlo ukazovat uživateli jaký má vliv změny velikosti bloku na výsledek. Pro přehlednost by naopak mohla mít aplikace základní režim s možností přepnutí do pokročilého. Výpis kódu by byl vhodnější neproporcionálním písmem. Většinu obrázků by bylo lépe exportovat ve vyšším rozlišení nebo jako vektory. V příloze považuji za zbytečné přikládat 8MB binární exe soubor pro systém Windows u jednoduché aplikace, která používá pouze standardní knihovnu jazyka Python.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Splnění požadavků a cílů zadání | B | ||
Postup a rozsah řešení, adekvátnost použitých metod | D | ||
Vlastní přínos a originalita | D | ||
Schopnost interpretovat dosaž. výsledky a vyvozovat z nich závěry | D | ||
Využitelnost výsledků v praxi nebo teorii | E | ||
Logické uspořádání práce a formální náležitosti | C | ||
Grafická, stylistická úprava a pravopis | C | ||
Práce s literaturou včetně citací | C |
eVSKP id 149545