Vytvorenú aplikáciu na šifrovanie súborov (zadanie 2) rozšírte tak, že vykonáte kontrolu integrity, prostredníctvom MAC alebo AEAD módu. Čiže mali by ste byť schopný overiť či došlo k modifikácii vášho zašifrovaného súboru. Na šifrovanie odporúčame použiť AES GCM alebo AES CCM mód.
Zároveň vygenerovaný symetrický kľuč K zašifrujete asymetricky a pripojíte k zašifrovanému súboru v rámci hlavičky/päty súboru s metadáta-mi potrebnými k dešifrovaniu (pridáte aj informáciu na kontrolu integrity). Dbajte na to, aby ste vedeli skontrolovať aj integritu zašifrovaného súboru.
Takže aplikácia vygeneruje náhodný kľúč, ktorým plain text (alebo súbor) zašifrujete. Vygenerovaný AES kľúč zašifrujete RSA vereným kľúčom (verejný kľuč osoby kto má súbor dešifrovať) a priložíte do hlavičky zašifrovaného súboru. Do hlavičky priložíte aj ostatne údaje potrebné na dešifrovanie a kontrolu integrity.
Pri dešifrovaní osoba ktorému ste súbor poslali najskôr si prečíta informácie z hlavičky a vykoná kontrolu integrity. Ak súbor nie je poškodený, dešifruje pomocou RSA šifrovací kľuč uložený v hlavičke a pomocou dešifrovaného symetrického kľúča dešifruje súbor.
Web aplikácia pre váš systém
Riešenie pre implementáciu zadanie 2
Vytvorte web aplikáciu, ktorá bude určená na komunikáciu užívateľov s vašim vybraným systémom. Okrem vami definovanej funkcionality web aplikácia umožní používateľovi šifrovať a dešifrovať súbory symetrickým kľúčom K, náhodne vygenerovaným a uloženým niekde mimo zašifrovaného súboru (zadanie 2). Užívateľ nahrá svoj súbor na web server a web server vykoná šifrovanie súboru a poskytne ho užívateľovi na stiahnutie. Podobne si užívateľ dokáže súbor pomocou web servera aj dešifrovať (popr. Web server ponúkne rozšírenú funkcionalitu, napr. download aj šifrovacieho kľúča)
Rozšírenie riešenia o zadanie 3
Web aplikácia pred šifrovaní súboru Vás požiada o nahratie verejného kľúča (použitého pri šifrovaní symetrického kľúča) a v prípade dešifrovania Vás požiada o nahratie privátneho kľúča (potrebného pre dešifrovanie symetrického šifrovacieho kľúča). Tiež Vám ponúkne možnosť vygenerovania nového verejného a privátneho kľúča a jej uchovania na servery (a jej následné stiahnutie). Pre náročnejšieho užívateľa vytvorte aplikáciu na dešifrovanie web serverom šifrovaných súborov ktorý by bolo možné užívateľom si stiahnuť z web servera v prípade ak by užívateľ nechcel odosielať svoj privátny kľúč na web server pre dešifrovanie súborov. Ako vstup pre aplikáciu by bol zašifrovaný súbor (stiahnutý z web servera) a privátny kľúč užívateľa. Využitím asymetrickej kryptografie je takto možné zabezpečiť aby použitý symetrický kľúč nebol ukladaný na servery. Pri riešení aktualne uvažujte iba s jedným užívateľom systému.
Váš web server si vytvorte na pridelenej virtualke. Potrebné informácie IP adresa a prihlasovací kľuč nájdete v moodli viz. odkaz:
https://elearn.elf.stuba.sk/moodle/mod/resource/view.php?id=24174
Login pre virtualku je defaultne: ubuntu
Po prvom prihlásení odporúčame si vytvoriť samostatného ssh užívateľa a prístup cez ubuntu login zablokovať.
Bonus:
Na riešenie môžete použiť prístup, že si ukladanie a čítanie z-do hlavičky ošetrite sami, alebo využijete AEAD funkcionalitu. Tiež na kontrolu integrity mate možnosť použiť MAC, alebo AES GCM, AES CCM.
Pri použití AEAD a AES GCM, AES CCM je možne udeliť bonusový bod.
Pokyny:
1. Využite existujúce kryptografické funkcie / API, nie však celé hotové cudzie riešenie.
2. Vyberte si jeden zo štandardných programovacích jazykov: Java, C, Python. V prílohe zadania sú odkazy na stránky, z ktorých sa dá odraziť pri tvorbe kryptografickej časti zadania.
Pozn.: Pri výbere šifrovacích funkcií a veľkosti kľúča, treba klásť dôraz aj bezpečnostné odporúčania ohľadne šifrovania.
Dôležité: Do AIS sa v stanovenom termíne (miesto odovzdania s názvom “zadanie2-3”) odovzdáva zdrojový kód aplikácie (iba zdrojový kód), ukážkový zašifrovaný a dešifrovaný súbor s vygenerovanými kľúčovými pármi a dokumentácia v PDF formáte v jednom ZIP súbore.
Nedodržanie pokynov môže viesť k tomu, že zadanie nebude hodnotené. V prípade neodovzdania, zistení plagiátorstva, alebo neskorého odovzdania bude za zadanie pridelene 0 bodov.