|
||||||||||||||||||||
Κεφάλαιο 9 Πρόλογος Τo secure shell (SSH) είναι ένα πρωτόκολλο ασφαλούς απομακρυσμένης πρόσβασης κι άλλων ασφαλών υπηρεσιών που εφαρμόζεται πάνω από σε δίκτυα που απαιτούν ασφάλεια. Σε αυτό το tutorial θα περιγράψουμε τεχνικές κρυπτογράφησης και επιπλέον πως το πρωτόκολλο SSH επιτυγχάνει ασφαλή επικοινωνία. Το SSH παρέχει επαρκή κρυπτογράφηση, πιστοποίηση του διακομιστή (server) και ακεραιότητα δεδομένων. Συνεπώς, οι μέθοδοι ανταλλαγής κλειδιών (key exchange), αλγόριθμου δημόσιου κλειδιού (public key algorithm), συμμετρικής κρυπτογράφησης (symmetric encryption), πιστοποίησης μνήματος (message authentication algorithm) και συνάρτησης κατακερματισμού είναι απαραίτητες και θα τις εξηγήσουμε παρακάτω. Τι είναι η κρυπτογράφηση και τι η αποκρυπτογράφηση ![]() Διαδικασία κρυπτογράφησης/αποκρυπτογράφησης
Κρυπτογράφηση Η ραγδαία ανάπτυξη της ψηφιακής επικοινωνίας όπως για παράδειγμα το διαδίκτυο ή ένα δίκτυο υπολογιστών κλπ μας οδήγησαν στην ανάγκη για περαιτέρω ασφάλεια των συστημάτων μας από μη έμπιστα πρόσωπα. Οι πέντε βασικές υπηρεσίες ασφαλείας που μπορούν να υποστηριχθούν σε ανοικτά συστήματα είναι:
Συμμετρική κρυπτογράφηση Στην συμμετρική κρυπτογραφία, ο αποστολέας και ο παραλήπτης ενός μηνύματος γνωρίζουν και χρησιμοποιούν ένα κοινό κλειδί για κρυπτογράφηση / αποκρυπτογράφηση το οποίο λέγεται μυστικό κλειδί. Ο αποστολέας λοιπόν χρησιμοποιεί αυτό το μυστικό κλειδί για να κρυπτογραφήσει το μήνυμα και ο παραλήπτης χρησιμοποιεί το ίδιο μυστικό κλειδί για να αποκρυπτογραφήσει το μήνυμα. Η ασφαλής επικοινωνία μεταξύ δύο χρηστών με τη χρήση ενός συμμετρικού αλγορίθμου κρυπτογράφησης απαιτεί την ύπαρξη των ακόλουθων προϋποθέσεων:
![]() Παράδειγμα συμμετρικής κρυπτογράφησης Έστω οι χρήστες Α και Β θέλουν να επικοινωνήσουν με ασφάλεια. Συμφωνούν στην χρησιμοποίηση ίδιου αλγόριθμου κρυπτογράφησης καθώς και χρήση ίδιου και κοινού κλειδιού. Ο απλός συμμετρικός αλγόριθμος κρυπτογράφησης Caesar Cipher αλλάζει θέση στα γράμματα (ολίσθηση αλφάβητου) και το κλειδί είναι ο αριθμός θέσεων ολίσθησης.
Πλεονεκτήματα και μειονεκτήματα συμμετρικών αλγορίθμων Ασύμμετρη κρυπτογράφηση Οι ασύμμετροι αλγόριθμοι ή αλγόριθμοι δημόσιου κλειδιού είναι σχεδιασμένοι έτσι ώστε το κλειδί που χρησιμοποιείται για την κρυπτογράφηση να είναι διαφορετικό από το κλειδί που χρησιμοποιείται για την αποκρυπτογράφηση. Πέρα από αυτό, το κλειδί αποκρυπτογράφησης δεν μπορεί να υπολογιστεί από το κλειδί κρυπτογράφησης. Οι αλγόριθμοι αυτοί καλούνται και "δημόσιου κλειδιού" γιατί το κλειδί κρυπτογράφησης μπορεί να δημοσιοποιηθεί. Ο καθένας μπορεί να κρυπτογραφήσει ένα μήνυμα με το δημόσιο κλειδί αλλά μόνο αυτός που διαθέτει το αντίστοιχο ιδιωτικό κλειδί μπορεί να το αποκρυπτογραφήσει. Παραδείγματα ασύμμετρων αλγορίθμων είναι οι RSA, ElGamal και DSA. Οι συμμετρικοί αλγόριθμοι είναι πολύ πιο γρήγοροι, εφαρμοσμένοι είτε σε υλικό είτε σε λογισμικό. από τους ασύμμετρους αλγόριθμους. Ως εκ τούτου οι συμμετρικοί αλγόριθμοι χρησιμοποιούνται για την κρυπτογράφηση του κυρίου μέρους των δεδομένων, ενώ οι αλγόριθμοι δημόσιου κλειδιού βρίσκουν κατάλληλη εφαρμογή σε πρωτόκολλα ανταλλαγής κλειδιών και ψηφιακών υπογραφών. ![]() Παράδειγμα ασύμμετρης κρυπτογράφησης Στην παραπάνω εικόνα έχουμε την Alice η οποία επιθυμεί να στείλει δεδομένα προς τον Bob. Για να το κάνει λοιπόν αυτό χρησιμοποιεί το δημόσιο κλειδί του Bob για να κρυπτογραφήσει το αρχικό μήνυμα. Στην συνέχεια στέλνει τα κρυπτογραφημένα αυτά δεδομένα προς τον Bob. Στην συνέχεια αφού ο Bob λάβει τα κρυπτογραφημένα δεδομένα προκειμένου να διαβάσει το αρχικό μήνυμα της Alice θα αποκρυπτογραφήσει το μήνυμα με το δικό του ιδιωτικό κλειδί. Τα κρυπτογραφημένα δεδομένα (κρυπτογραφημένα με τον δημόσιο κλειδί του Bob) δεν μπορεί κανείς άλλος να τα αποκρυπτογραφήσει (ακόμη και να έχει το δημόσιο κλειδί, χρειάζεται το ιδιωτικό κλειδί του Bob που το έχει μόνο ο Bob). Εδώ τίθεται ένα ερώτημα: Πως ο Bob γνωρίζει ότι τα δεδομένα που έλαβε κρυπτογραφημένα με το δημόσιο κλειδί του είναι από την Alice και όχι κάποιον τρίτο που την προσποιείται και απλά κατέχει το κλειδί του ;
Η Alice κρυπτογραφεί τα δεδομένα με το ιδιωτικό κλειδί της. Ο Bob τα αποκρυπτογραφεί χρησιμοποιώντας το δημόσιο κλειδί της Alice και αν η αποκρυπτογράφηση είναι επιτυχής τότε ο Bob είναι σε θέση να γνωρίζει ότι τα δεδομένα τα έστειλε η Alice.
Η διαχείριση του κλειδιού είναι η διαδικασία παραγωγής, διανομής, επαλήθευσης, χρησιμοποίησης, ενημέρωσης, αποθήκευσης και καταστροφής κλειδιών σε ένα σύστημα κρυπτογράφησης. Η ασφαλής μέθοδος διαχείρισης των κλειδιών είναι πάρα πολύ σημαντική. Στην πράξη οι περισσότερες επιθέσεις σε συστήματα ασφαλείας έχουν ως στόχο τις διαδικασίες διαχείρισης των κλειδιών και όχι τους ίδιους τους αλγόριθμους. Οι αλγόριθμοι δημόσιου κλειδιού καθιστούν την διαχείριση πολύ πιο εύκολη. Το ιδιωτικό κλειδί δεν χρειάζεται να μεταδοθεί ποτέ. Βέβαια παρουσιάζεται ένα πρόβλημα ο κάθε χρήστης πρέπει να διαθέτει ένα δικό τους ζεύγος κλειδιών. Στα συστήματα που χρησιμοποιούν ασύμμετρη κρυπτογραφία χρειάζονται μέθοδοι διανομής και επαλήθευσης κλειδιών.
Σύγκριση συμμετρικής και ασύμμετρης κρυπτογραφίας Διανομή κλειδιού Οι συμμετρικοί αλγόριθμοι κρυπτογράφησης όπως είδαμε και στις προηγούμενες διαφάνειες απαιτούν τα δυο μέρη να μοιράζονται ένα κοινό μυστικό κλειδί. Το ερώτημα είναι πως το κλειδί αυτό θα διανεμηθεί με ασφάλεια καθότι υπάρχουν κίνδυνοι από τρίτα άτομα που προφανώς επιθυμούν να υποκλέψουν αυτό το κλειδί. Μια καλή λύση είναι η συχνή αλλαγή του μυστικού κλειδιού. Βέβαια η αποτυχία ενός ασφαλούς συστήματος οφείλεται αν καταφέρει να αποκτήσει πρόσβαση στο σύστημα διανομής κλειδιών. Τα δύο μέρη Α και Β έχουν τις εξής επιλογές για την διανομή μυστικού κλειδιού:
Ιεραρχία Κλειδιών Έχουμε τα εξής κλειδιά:
Κέντρο Διανομής Κλειδιών (Key Distribution Center - KDC)
Στον τομέα της κρυπτογραφίας το κέντρο διανομής κλειδιών είναι ένα σύστημα το οποίο είναι υπεύθυνο για να παρέχει κλειδιά στους χρήστες ενός ασφαλούς δικτύου. Κάθε φορά που εγκαθιδρύεται μια σύνδεση μεταξύ δύο υπολογιστών που ανήκουν σε αυτό το δίκτυο στέλνουν μια αίτηση προς το Κέντρο Διανομής Κλειδιών για να τους παράγει κλειδιά προκειμένου να επιβεβαιώσουν και οι δύο την ταυτότητα τους μεταξύ τους.
![]() KDC: Διαδικασία διανομής κλειδιών Συναρτήσεις κατακερματισμού (hash functions)
Οι μονόδρομες συναρτήσεις κατακερματισμού (one-way hash functions) αποτελούν θεμελιώδη στοιχεία για την ανάπτυξη των περισσότερων πρωτοκόλλων κρυπτογράφησης. Οι συναρτήσεις κατακερματισμού είναι συναρτήσεις οι οποίες δέχονται σαν είσοδο μια ακολουθία χαρακτήρων μεταβλητού μήκους και παράγουν ένα μήνυμα σταθερού μεγέθους (γενικά μικρότερο) που ονομάζεται τιμή σύνοψης (hash value). Οι μονόδρομες συναρτήσεις κατακερματισμού είναι συναρτήσεις οι οποίες δουλεύουν μόνο προς την μία κατεύθυνση: είναι εύκολο να υπολογιστεί μια τιμή σύνοψης για κάποιο δεδομένο μήνυμα αλλά είναι αδύνατο να υπολογιστεί το μήνυμα στο οποίο αντιστοιχεί μια συγκεκριμένη τιμή σύνοψης. Μία καλά σχεδιασμένη μονόδρομη συνάρτηση κατακερματισμού είναι επίσης ελεύθερη από συγκρούσεις (collision-free) δηλαδή είναι δύσκολο να βρεθούν δύο μηνύματα που δίνουν την ίδια τιμή σύνοψης. Οι μονόδρομες συναρτήσεις κατακερματισμού χρησιμοποιούνται κυρίως για εφαρμογές επαλήθευσης. Η τιμή σύνοψης αντιστοιχεί πλήρως, και αντιπροσωπεύει το αρχικό μήνυμα. Η αλλαγή έστω και ενός bit στο αρχικό μήνυμα αλλάζει κατά μέσο όρο τα μισά bits της τιμής σύνοψης.
![]() Παράδειγμα μονόδρομων συναρτήσεων κατακερματισμού Τελευταία Ενημέρωση: 10/10/2016 |
||||||||||||||||||||
|
☰ | |