Κρυπτογράφηση δημόσιου κλειδιού: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Χωρίς σύνοψη επεξεργασίας
μ WPCleaner v1.33b - Fixed using Βικιπαίδεια:WikiProject Check Wikipedia (Επικεφαλίδα που ξεκινάει με ένα "=")
Γραμμή 8:
Η κρυπτογράφηση δημοσίου κλειδιού λύνει ένα σημαντικότατο πρόβλημα που υπήρχε στους κρυπτογραφικούς αλγόριθμους συμμετρικού κλειδιού. Συγκεκριμένα, οι κρυπτογραφικοί αλγόριθμοι συμμετρικού κλειδιού χρησιμοποιούν ένα κοινό μυστικό κλειδί, το οποίο το γνωρίζουν τόσο ο αποστολέας του κρυπτογραφημένου μηνύματος όσο και ο παραλήπτης. Αυτό το κοινό μυστικό κλειδί χρησιμοποιείται κατά τη διαδικασία κρυπτογράφησης και αποκρυπτογράφησης του μηνύματος. Προκύπτει όμως το εξής πρόβλημα: Εάν υποθέσουμε ότι το κανάλι επικοινωνίας δεν είναι ασφαλές, τότε πως γίνεται ο αποστολέας να στείλει το κλειδί κρυπτογράφησης στον παραλήπτη για να μπορέσει αυτός με τη σειρά του να αποκρυπτογραφήσει το μήνυμα; Αυτό το πρόβλημα είναι ιδιαίτερα έντονο στις σύγχρονες ψηφιακές επικοινωνίες όπου σε πολλές περιπτώσεις ο αποστολέας δεν γνωρίζει καν τον παραλήπτη και απέχει από αυτόν αρκετές χιλιάδες χιλιόμετρα. Οι κρυπτογραφικοί αλγόριθμοι δημοσίου κλειδιού λύνουν αυτό το πρόβλημα και ανοίγουν νέους δρόμους για εφαρμογές της κρυπτογράφησης (ηλεκτρονικά μηνύματα, διαδικτυακές αγορές κοκ).
 
== Τρόπος Λειτουργίας ==
=== Δημιουργία κλειδιών ===
[[Εικόνα:Γεννήτρια Κλειδιών.png|right|thumb|400px|Τρόπος λειτουργίας της γεννήτριας κλειδιών.]]
Η δημιουργία του δημόσιου και του ιδιωτικού κλειδιού γίνεται από ειδικές συναρτήσεις οι οποίες δέχονται ως είσοδο έναν μεγάλο τυχαίο αριθμό και στην έξοδο παράγουν το ζεύγος των κλειδιών. Είναι προφανές ότι όσο πιο τυχαίος είναι ο αριθμός που παρέχεται ως είσοδος στη γεννήτρια κλειδιών τόσο πιο ασφαλή είναι τα κλειδιά που παράγονται. Σε σύγχρονα προγράμματα κρυπτογράφησης ο τυχαίος αριθμός παράγεται ως εξής: Κατά τη διαδικασία κατασκευής των κλειδιών, το πρόγραμμα σταματάει για 5 λεπτά και καλεί τον χρήστη να συνεχίσει να εργάζεται με τον υπολογιστή. Στη συνέχεια για να παράξει τον τυχαίο αριθμό συλλέγει στα 5 αυτά λεπτά τυχαία δεδομένα που εξαρτώνται από τη συμπεριφορά του χρήστη (κινήσεις [[ποντίκι (υπολογιστές)|ποντικιού]], πλήκτρα του [[πληκτρολόγιο|πληκτρολογίου]] που πατήθηκαν, κύκλοι μηχανής που καταναλώθηκαν κοκ). Με βάση αυτά τα πραγματικά τυχαία δεδομένα υπολογίζεται ο τυχαίος αριθμός και εισάγεται στη γεννήτρια κλειδιών για να κατασκευαστεί το δημόσιο και το ιδιωτικό κλειδί του χρήστη.
 
=== Εμπιστευτικότητα ===
Οι κρυπτογραφικοί αλγόριθμοι δημοσίου κλειδιού μπορούν να εγγυηθούν εμπιστευτικότητα (confidentiality), δηλαδή ότι το κρυπτογραφημενο μήνυμα που θα στείλει ο αποστολέας μέσω του διαδικτύου στον παραλήπτη θα είναι αναγνώσιμο από αυτόν και μόνο. Για να επιτευχθεί η εμπιστευτικότητα, ο αποστολέας θα πρέπει να χρησιμοποιήσει το δημόσιο κλειδί του παραλήπτη για να κρυπτογραφήσει το μήνυμα. Στη συνέχεια στέλνει το κρυπτογραφημένο μήνυμα στον παραλήπτη και ο τελευταίος μπορεί να το αποκρυπτογραφήσει με το ιδιωτικό κλειδί του. Δεδομένου ότι το ιδιωτικό κλειδί του παραλήπτη είναι γνωστό μονάχα στον ίδιο και σε κανέναν άλλον, μονάχα ο παραλήπτης μπορεί να αποκρυπτογραφήσει το μήνυμα και να το διαβάσει. Άρα λοιπόν με αυτόν τον τρόπο ο αποστολέας γνωρίζει ότι το κρυπτογραφημένο μήνυμα μπορεί να αποκρυπτογραφηθεί μονάχα από τον παραλήπτη και έτσι διασφαλίζεται η εμπιστευτικότητα του μηνύματος.
[[Εικόνα:Κρυπτογράφηση Δημόσιου Κλειδιού - Εμπιστευτικότητα.png|center|thumb|800px|Επίτευξη εμπιστευτικότητας αλλά όχι πιστοποίησης χρησιμοποιώντας κρυπτογραφικούς αλγόριθμους δημοσίου κλειδιού.]]
Γραμμή 19:
Η παραπάνω μέθοδος μπορεί να εξασφαλίσει την εμπιστευτικότητα αλλά όχι την πιστοποίηση του αποστολέα. Αυτό με λίγα λόγια σημαίνει πως η παραπάνω μέθοδος δεν μπορεί να εγγυηθεί την ταυτότητα του αποστολέα. Πράγματι, ο αποστολέας μπορεί να δηλώσει ψευδή ταυτότητα και ο παραλήπτης να νομίσει ότι το συγκεκριμένο μήνυμα προήλθε από άλλο πρόσωπο.
 
=== Πιστοποίηση ===
Χρησιμοποιώντας κατάλληλα τους κρυπτογραφικούς αλγορίθμους δημοσίου κλειδιού μπορεί να επιτευχθεί πιστοποίηση (authentication), δηλαδή ο παραλήπτης να γνωρίζει με ασφάλεια την ταυτότητα του αποστολέα. Για να επιτευχθεί αυτό θα πρέπει ο αποστολέας να χρησιμοποιήσει το ιδιωτικό του κλειδί για την κρυπτογράφηση του μηνύματος. Στη συνέχεια στέλνει το μήνυμα στον παραλήπτη και ο τελευταίος χρησιμοποιεί το δημόσιο κλειδί του αποστολέα για την αποκρυπτογράφησή του. Δεδομένου ότι το ιδιωτικό κλειδί του αποστολέα είναι γνωστό μονάχα στον ίδιο, ο παραλήπτης μπορεί να είναι σίγουρος για την ταυτότητα του αποστολέα.
[[Εικόνα:Κρυπτογράφηση Δημόσιου Κλειδιού - Αυθεντικοποίηση.png|center|thumb|800px|Επίτευξη αυθεντικοποίησης αλλά όχι εμπιστευτικότητας χρησιμοποιώντας κρυπτογραφικούς αλγόριθμους δημοσίου κλειδιού.]]
Παρόλο που η παραπάνω μέθοδος εγγυάται την ταυτοποίηση του αποστολέα, δεν δύναται να εγγυηθεί την εμπιστευτικότητα του μηνύματος. Πράγματι, το μήνυμα μπορεί να το αποκρυπτογραφήσει οποιοσδήποτε διαθέτει το δημόσιο κλειδί του αποστολέα. Όπως έχει ήδη ειπωθεί, το δημόσιο κλειδί είναι γνωστό σε όλη τη διαδικτυακή κοινότητα, άρα πρακτικά ο οποιοσδήποτε μπορεί να διαβάσει το περιεχόμενο του μηνύματος.
 
=== Εμπιστευτικότητα και Πιστοποίηση ===
Συνδυάζοντας τις δύο τεχνικές που παρουσιάστηκαν παραπάνω είναι εφικτό να επιτύχουμε εμπιστευτικότητα του μηνύματος και πιστοποίηση του αποστολέα. Δηλαδή αφενός το μήνυμα παραμένει γνωστό μονάχα στον αποστολέα και τον παραλήπτη και αφετέρου ο παραλήπτης γνωρίζει με ασφάλεια ποιος του έστειλε το μήνυμα. Για να επιτευχθεί αυτό ο αποστολέας μπορεί να κρυπτογραφήσει το μήνυμα πρώτα με το δικό του ιδιωτικό κλειδί και στη συνέχεια με το δημόσιο κλειδί του παραλήπτη. Όταν ο παραλήπτης λάβει το μήνυμα θα πρέπει να χρησιμοποιήσει το ιδιωτικό του κλειδί για να το αποκρυπτογραφήσει (εμπιστευτικότητα) και στη συνέχεια να αποκρυπτογραφήσει το αποτέλεσμα χρησιμοποιώντας το δημόσιο κλειδί του αποστολέα (πιστοποίηση).
 
=== Παράδειγμα από καθημερινή ζωή ===
 
Θα παρουσιάσουμε ένα αναλογικό παράδειγμα από την καθημερινή ζωή το οποίο περιγράφει την κρυπτογράφηση δημόσιου κλειδιού ή ασυμμετρική κρυπτογράφηση. Έστω η [[Alice και Bob|Alice]] και ο [[Alice και Bob|Bob]], θέλουν να επικοινωνήσουν με ασφάλεια χρησιμοποιώντας το δημόσιο ταχυδρομείο. Η Alice θέλει να στείλει ένα καμουφλαρισμένο-κρυφό μήνυμα στον Bob και περιμένει μια καμουφλαρισμένη-κρυφή απάντηση από αυτόν.
Γραμμή 39:
Η κρίσιμη διαφορά στο κλειδί ασυμμετρικής κρυπτογράφησης είναι ότι η Alice και ο Bob ποτέ δεν χρειάζεται να στείλουν αντίγραφο του κλειδιού ο ένας στον άλλον. Σε αυτό την περίπτωση αποφεύγουμε την περίπτωση της διεφθαρμένης υπάλληλου στο ταχυδρομείο, την Mallory η οποία ενδέχεται να υποκλέψει το κλειδί κατά τη μεταφορά. Σε αυτή την περίπτωση η Alice και ο Bob δεν χρειάζεται να εμπιστευτούν το δημόσιο ταχυδρομείο. Επιπρόσθετα ο Bob επιτρέπει σε όποιον επιθυμεί να αντιγράψει το κλειδί του και τα μηνύματα της Alice προς τον Bob θα είναι εκτεθειμένα σε κίνδυνο υποκλοπής. Όμως όλα τα μηνύματα της Alice προς άλλους θα είναι μυστικά, αφού οι υπόλοιποι θα παρέχουν διαφορετικά λουκέτα για να κλειδώσει η Alice το μήνυμα στο κουτί πριν το στείλει σε αυτούς.
 
=== Ψηφιακές Υπογραφές ===
{{Κύριο|Ψηφιακή υπογραφή}}
[[Image:Digital Signature diagram el.svg|thumb|500px|right|Διάγραμμα χρήσης ψηφιακής υπογραφής.]]
Η κρυπτογράφηση δημόσιου κλειδιού μαζί με την [[Κρυπτογραφική Συνάρτηση Κατατεμαχισμού|συνάρτηση κατατεμαχισμού (hash function)]] βρίσκει εφαρμογή στις [[Ψηφιακή υπογραφή|ψηφιακές υπογραφές]]. Υπολογίζεται με την [[Κρυπτογραφική Συνάρτηση Κατατεμαχισμού|συνάρτηση κατατεμαχισμού, η σύνοψη (digest)]] του μηνύματος/εγγράφου. Στη συνέχεια η σύνοψη κρυπτογραφείται με το ιδιωτικό κλειδί του αποστολέα (ο οποίος με αυτήν την ενέργεια υπογράφει ψηφιακά το μήνυμα έγγραφο). Η κρυπτογραφημένη σύνοψη είναι η [[ψηφιακή υπογραφή]] η οποία επισυνάπτεται στο μήνυμα/έγγραφο. Μαζί με την ψηφιακή υπογραφή μπορεί να επισυναφθεί και ένα πιστοποιητικό του δημόσιου κλειδιού (το οποίο έχει εκδοθεί από κάποιο αξιόπιστο πάροχο/οργανισμό υπηρεσιών πιστοποίησης: το πιστοποιητικό ταυτοποιεί ένα δημόσιο κλειδί με τον δικαιούχο του). Στη διαδικασία ελέγχου της ψηφιακής υπογραφής, ξεχωρίζεται η ψηφιακή υπογραφή από το μήνυμα/έγγραφο. Η ψηφιακή υπογραφή αποκρυπτογραφείται με το δημόσιο κλειδί του αποστολέα και εξάγεται η σύνοψη. Παράλληλα υπολογίζεται η σύνοψη του ληφθέντος μηνύματος/εγγράφου. Αν οι δύο συνόψεις είναι ίδιες σημαίνει ότι το μήνυμα/έγγραφο έχει την υπογραφή του αποστολέα (που ανήκει το δημόσιο κλειδί) και ότι το μήνυμα/έγγραφο δεν έχει παραποιηθεί κατά τη μεταφορά.
 
== Δείτε Επίσης ==
* [[Κρυπτογραφία]].
* [[Κρυπτογράφηση Συμμετρικού Κλειδιού]].
* [[Ψηφιακή υπογραφή|Ψηφιακές υπογραφές]].
 
=== Σύνδεσμοι ===
* [http://www.ellak.gr/wikis/%CF%87%CF%8E%CF%81%CE%BF%CF%82-%CF%83%CF%85%CE%BD%CE%B5%CF%81%CE%B3%CE%B1%CF%83%CE%AF%CE%B1%CF%82/%CE%B5%CE%B9%CF%83%CE%B1%CE%B3%CF%89%CE%B3%CE%AE-%CF%83%CF%84%CE%BF-openpgp-%CE%BA%CE%B1%CE%B9-%CF%84%CE%BF-key-signing-party/ Εισαγωγή στο OpenPGP και το Key Signing Party]