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.
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
.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