Κρυπτογραφία


Κωδικός 3.4.3327.9
Εξάμηνο 9o
Ροή Λ - Λογισμικό Η/Υ
Κατηγορία Κατ' επιλογήν υποχρεωτικό
Ώρες Διδασκαλίας - Ώρες Εργαστηρίου 3 - 1
Διδάσκοντες Αριστείδης Παγουρτζής, Πέτρος Ποτίκας (Ε.ΔΙ.Π.)
Σύνδεσμοι Helios, Ιστοσελίδα Μαθήματος
Πλατφόρμα Διδασκαλίας Τμήμα 1: Webex

Περιγραφή

Κλασική κρυπτογραφία: κρυπτοσυστήματα αντικατάστασης, Καίσαρα, Vigenere,
μέθοδοι κρυπτανάλυσης. Τέλεια μυστικότητα (Shannon), one-time
pad. Σημασιολογική ασφάλεια, CPA, CCA, παίγνια ασφάλειας και κρυπτογραφικές
αναγωγές. Συμμετρική κρυπτογραφία. Ψευδοτυχαιότητα, κρυπτοσυστήματα ροής,
γεννήτρια Blum-Blum-Shub, γεννήτρια RC4, καταχωρητές γραμμικής ανάδρασης
(LFSR). Κρυπτοσυστήματα τμήματος: δίκτυα Feistel, DES, AES. Τρόποι
λειτουργίας. Συναρτήσεις σύνοψης ή κατακερματισμού (hash functions):
οικογένεια SHA, μέθοδος επέκτασης Merkle-Damgard, δένδρα Merkle,
χρονοσήμανση, salt. Κώδικες πιστοποίησης γνησιότητας (MACs). Στοιχεία
θεωρίας αριθμών: διαιρετότητα, αριθμητική υπολοίπων, τετραγωνικά υπόλοιπα,
Κινέζικο Θεώρημα Υπολοίπων. Στοιχεία θεωρίας ομάδων, θεώρημα Lagrange,
συνάρτηση φ του Euler. Έλεγχος πρώτων αριθμών. Κρυπτογραφία δημοσίου
κλειδιού. Ανταλλαγή κλειδιού Diffie – Hellman. Κρυπτοσυστήματα RSA και
Rabin, επιθέσεις. Το πρόβλημα της παραγοντοποίησης, αλγόριθμοι rho και
Dixon. Το πρόβλημα του διακριτού λογαρίθμου, αλγόριθμος Shanks, ελλειπτικές
καμπύλες. Το κρυπτοσύστημα El Gamal. Ψηφιακές Υπογραφές: RSA, DSS, τυφλές
υπογραφές, αδιαμφισβήτητες υπογραφές. Κρυπτογραφικά πρωτόκολλα: διαμοιρασμός
μυστικού, σχήματα δέσμευσης, σχήματα αναγνώρισης. Αποδείξεις μηδενικής
γνώσης: Σ-πρωτόκολλα, μη διαλογικές αποδείξεις, witness indistinguishable
και witness hiding protocols. Στοιχεία θεωρίας πολυπλοκότητας, μονόδρομες
συναρτήσεις, η κλάση UP. Εφαρμογές και προχωρημένα θέματα: ζεύξεις
(pairings), ηλεκτρονικές ψηφοφορίες, ψηφιακό χρήμα, Bitcoin, blockchain,
consensus.\\
Το μάθημα συμπληρώνεται με γραπτές και εργαστηριακές ασκήσεις και εργασία
(υπό μορφή project) με παρουσίαση και συγγραφή αναφοράς. \\
Εργαστήριο: ασκήσεις σχεδιασμού και υλοποίησης κρυπτογραφικών αλγορίθμων και
πρωτοκόλλων σε C++ ή άλλη κατάλληλη γλώσσα προγραμματισμού.