UPB – Zadanie 2

Zadanie 2 – Implementácia aplikácie na šifrovanie súborov

Vytvorte aplikáciu, ktorá umožní používateľovi šifrovať a dešifrovať súbory symetrickým kľučom K, náhodne vygenerovaným a uloženým niekde mimo zašifrovaného súboru (popr. správy). Použite symetrickú kryptografiu. Na riešenie zadania využite hotove kryptograficke API, (nepoužívať vlastné  implementácie kryptografických funkcií).

 

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/C++, Python. V prílohe zadania sú odkazy na stránky, z ktorých sa dá odraziť pri tvorbe kryptografickej časti zadania.
3. Napíšte k aplikácii stručnú používateľskú dokumentáciu, ktorá obsahuje informácie:
A. čo ste použili (jazyk, knižnica, zdroje),
B. schematicky, aký je formát zašifrovaného súboru
C. aké je to rýchle: koľko trvá programu šifrovanie 1GB súboru
D. ako sa aplikácia kompiluje/inštaluje,
E. ako sa aplikácia používa,
F. bezpečnostné odporúčania pre používateľa/komentáre.

  1. stručný popis vášho postupu šifrovania a dôvody výberu danej šifrovacej funkcie a veľkosti kľúča z hľadiska rýchlosti a bezpečnosti. Z hľadiska hodnotenia zadania je dôležité, aby vaša implementácia splňala sučasne požiadavky  a odporúčania na bezpečné šifrovanie (šifrovci mod, veľkosť klúča adt.). S uloženým klúčom K možete ukladať aj dalšie potrebné údaje pre šifrovanie a dešifrovanie.

 

Pozn.: Pri výbere šifrovacích funkcií a veľkosti kľúča, treba klasť dôraz aj bezpečnostné odporúčania ohľadne šifrovania. V moodle najdete krátky návod Návod a subory k zadaniu 2 [2022] (webApp) Súbor

 

Subory odovzdate do AIS miesto odovzdania  najneskôr do terminu uzatvorenia miesta odovzdania. V prípade neodovzdania, alebo neskoreho odovzdania bude za zadanie pridelene 0 bodov.

Odkazy:

Java:

http://docs.oracle.com/javase/7/docs/technotes/guides/security/crypto/CryptoSpec.html

– kompletny popis, Cipher class aj Mac class, s prikladmi

http://www.codejava.net/coding/file-encryption-and-decryption-simple-example

– priklad jadra aplikacie v Jave

https://www.bouncycastle.org/         zbierka API funkcií pre oblasť kryptografie

Recommendation for Block Cipher Modes of Operation: The XTS-AES Mode for Confidentiality on Storage Devices

https://www.govinfo.gov/content/pkg/GOVPUB-C13-6ace86b2bc130e51ddfd3c50bf5d94a7/pdf/GOVPUB-C13-6ace86b2bc130e51ddfd3c50bf5d94a7.pdf

 

.NET/C#:

https://msdn.microsoft.com/en-us/library/0ss79b2x(v=vs.110).aspx

– uvod + vid dalsie stranky

https://msdn.microsoft.com/en-us/library/bb397867(v=vs.110).aspx

– priklad / jadro aplikacie

http://www.codeproject.com/Articles/26085/File-Encryption-and-Decryption-in-C

– kratky priklad

 

Python:

https://www.dlitz.net/software/pycrypto/

– je vela kniznic, ale tato je asi najviac odporucana

http://eli.thegreenplace.net/2010/06/25/aes-encryption-of-files-in-python-with-pycrypto

– jadro aplikacie

https://www.bouncycastle.org/         zbierka API funkcií pre oblasť kryptografie