6II0020 - Kryptografia a bezpečnosť

Zadania v minulom akademickom roku 2015/2016

Úloha č. 1

Dešifrujte text zašifrovaný Vigenerovskou šifrou a určte použité heslo. Šifrujú sa len písmená veľkej telegrafnej abecedy (mod 26), všetky ostatné (väčšinou formátovacie) znaky ignorujte. Heslo je náhodne vygenerované, primerane dlhé (od 20 do 30 znakov vrátane). Zašifrované texty si môžete stiahnuť tu.

Každý pri predvádzaní riešenia úlohy bude dešifrovať text s číslom X = 1 + (OSC mod 50), kde OSC je vaše osobné číslo.

Úloha č. 2

Ospravedlňujem sa za chybu v súbore sifra64 pre 64-bitový Linux. Omylom som v ňom použil iný kľúč, chyba je už odstránená.

Pokúste sa aspoň čiastočne dešifrovať text zašifrovaný algoritmom DES ak viete, že bol zašifrovaný slovenský text, ktorý obsahoval len veľké písmená A až Z, číslice 0 až 9 a znaky medzera, bodka a čiarka. K dispozícii máte spustiteľný súbor šifrátora sifra32 (linux ELF-32), sifra64 (linux ELF-64) resp. sifra.exe (Win32 EXE), t.j. môžete čokoľvek zašifrovať.

Program načítava 64-bitové bloky zo vstupného súboru a zašifrované bloky zapisuje do výstupného súboru. Názvy súborov sú 1. a 2. argument pri spustení: "./sifra vstup.txt vystup.enc".

Zašifrované texty si môžete stiahnuť tu.

Zdrojové kódy šifrátora (so zmeneným kľúčom):
config.h, des.h, des.c, sifra.c.

Každý pracujte na súbore s číslom X = 1 + (OSC mod 10), kde OSC je vaše osobné číslo.

Pozn. Je veľmi dôležité mať dobrú databázu pravdepodobných osmíc. Aby ste ju mali čo najlepšiu spolupracujte medzi sebou, t.j. zozbierané slovenské texty si vzájomne vymieňajte! Zbierajte hlavne súčasnú prózu.

Úloha č. 3

Pokúste sa určiť heslá niekoľkých používateľov systému, z ktorého sa podarilo skopírovať tabuľku s prihlasovacími údajmi. Tabuľka v textovej podobe obsahuje prihlasovacie meno, soľ a odtlačok hesla (so soľou). Odtlačok sa počíta algoritmom MD5, ktorého výsledok je konvertovaný na String pomocou Base64Encoding.

Vzorová implementácia funkcie na výpočet odtlačku v jazyku C# je v súbore Program.cs a v jazyku Python v súbore crypt.py.

Súbor s prihlasovacími údajmi si môžete stiahnuť tu. Na oddelenie jednotlivých položiek bol použitý znak ":", každý riadok je teda v tvare "login:soľ:odtlačok".

Každý pracujte na súbore s číslom X = 1 + (OSC mod 8), kde OSC je vaše osobné číslo.

Pozn. Ako slabé heslá mohli byť použité slová s malým počtom písmen, krstné mená, slová zo slovníkov slabých hesiel dostupných na internete.

Úloha č. 4

Vypočítajte privátny kľúč RSA algoritmu a dešifrujte správu, ak poznáte prislúchajúci verejný kľúč. Kľúče som generoval 80-bitové, t.j. prvočísla p a q sú 40-bitové čísla v rozsahu 549755813888 až 1099511627775. V skutočnosti sa používajú prvočísla oveľa väčšie. Pridaním jedného bitu sa čas pri primitívnom algoritme zdvojnásobí, ako dlho by trval pre 1024-bitové prvočísla (2048 bitový modulus)?

Už aj 80-bitový modulus je príliš veľký na to, aby ste prvočísla našli hrubou silou, treba si pomôcť sofistikovanejším algoritmom alebo použiť napríklad Wolfram Alpha.

Každý pracujte na verejnom kľúči s poradovým číslom X = 1 + (OSC mod 50), kde OSC je vaše osobné číslo.

P.č.Modulus (n)Verejný exponent (e)Zašifr. správa (y)
1.35987572930137978695527965537322097756080336107469611
2.56094726633209023768371765537407935174165765348794717
3.81816282172971229479265765537539461013929451826713642
4.83780542138707876404730165537576953794011840466960870
5.44609424106670799690928165537319703617077419072533608
6.8755627827298056599599796553752174478230227135245756
7.7194944156745560057404096553710086111064361024760200
8.37393030893573947945257965537348567307251078706860798
9.73756389401951720605031965537563248839589050181484988
10.45805936862597467414601365537109594460698127757894469
11.34875322088404376712247965537175738610586669373127987
12.9144604994312005012191896553733912717804135338949940
13.47658141651126124386499365537274971486092359022430314
14.70966674689811213780467365537215032704245254796759700
15.58648448181640396391243965537286021596541396503432993
16.65685155572949214063238965537484474223309217866552056
17.65098758097316702955481165537346122999635708714917837
18.81300304103909296238164765537638870763649286096425799
19.1064700500201097120438193655371049138681514393248431939
20.100794219931120815249343165537376735517098429052682591
21.45583151126826384377882965537214880456233350119848645
22.50476809432378319282941765537326828339872899881465916
23.8782238503909314090682876553776954552766219792388878
24.43691940360283964374666965537374761490203673800921097
25.48625278353012744099046165537263737398786822060577546
26.7585206396849361598676536553786751744275352824562761
27.90357193807630694470394365537105513883614532883473904
28.86595523039109426131622965537191283862482717101653340
29.5201375102116479296271776553731357651741283414241506
30.90281219835409023270450165537609275678945010263832088
31.40755575018231766185792965537283760737344723569169114
32.104150136324261120902278165537640366821692849461709912
33.76447639221338829902629765537328226641084111580081597
34.67050975316876650477328965537592454458778348570845315
35.95193611960486216709911965537321650222400567723273099
36.54849613097991643117322365537386339956367180145675031
37.5247963647387279576642416553749653623486260891466394
38.94368685270899286553753965537921084694161865369713355
39.6936065514072247360245536553713627685994180734346592
40.63062312042208384557774965537251842817366699988020455
41.84725258913011414011888365537396401360188953696799817
42.78149063914716600205361365537774995172825105041650836
43.70831055578496129187900165537206563938061498579003716
44.88120287944611514434057165537426685658237222771435138
45.4248973710535086950356076553757900347345257022036716
46.110719005504028281557011965537874244929756402385200007
47.35747321481045364127355165537335102372661280480284618
48.106533204963573735887394765537142948990883518124237333
49.90434433985391583531127965537357154132343758551732682
50.54997087122787079067731365537250991541855057135078994

Úloha č. 5

Vytvorte si dvojicu verejného a privátneho kľúča a pošlite mi digitálne podpísaný e-mail na adresu tomas.majer@fri.uniza.sk. Na vytvorenie platného certifikátu môžete použiť systém OpenPGP alebo certifikačnú autoritu. V prípade použitia OpenPGP si verejné kľuče vzájomne podpíšte a podpísané zaveste na kľúčový server alebo pošlite v samostatnom e-maile.