Ψηφιακή υπογραφή
Το λήμμα παραθέτει τις πηγές του αόριστα, χωρίς παραπομπές. |
Η Ψηφιακή υπογραφή είναι ένα μαθηματικό σύστημα που χρησιμοποιείται για την απόδειξη της γνησιότητας ενός ψηφιακού μηνύματος ή εγγράφου. Μια έγκυρη ψηφιακή υπογραφή δίνει στον παραλήπτη την πιστοποίηση ότι το μήνυμα που δημιουργήθηκε ανήκει στον αποστολέα που το υπέγραψε ψηφιακά και ότι δεν αλλοιώθηκε-παραποιήθηκε κατά την μεταφορά. Οι ψηφιακές υπογραφές χρησιμοποιούν συνδυασμό μιας κρυπτογραφικής συνάρτησης κατατεμαχισμού (hash function) για δημιουργία της σύνοψης (hash) σε συνδυασμό με ασύμμετρη κρυπτογραφία για κρυπτογράφηση/αποκρυπτογράφηση σύνοψης (ο συνδυασμός σύνοψης και κρυπτογράφησης με ασύμμετρη κρυπτογραφία αποδεικνύει την ακεραιότητας του εγγράφου αλλά και την απόδειξη ταυτότητας του αποστολέα).
Σε μερικές χώρες όπως τις ΗΠΑ και κάποιες χώρες της Ευρωπαϊκής ένωσης, οι ψηφιακές υπογραφές έχουν και νομική υπόσταση. Οι ψηφιακές υπογραφές σε ψηφιακά έγγραφα είναι παρόμοιες με τις αντίστοιχες χειρόγραφες υπογραφές σε έντυπα έγγραφα. Όταν οι ψηφιακές υπογραφές υλοποιούνται - εφαρμόζονται σωστά (με χρήση ασφαλών κρυπτογραφικών αλγορίθμων), είναι πολύ δυσκολότερο να πλαστογραφηθούν σε σχέση με τις αντίστοιχες χειρόγραφες. Επίσης το φυσικό πρόσωπο που ψηφιακά υπογράφει το ψηφιακό έγγραφο δεν μπορεί να ισχυριστεί ότι δεν το υπόγραψε (όσο το ιδιωτικό κλειδί που χρησιμοποίησε δεν υποκλάπηκε). Κάποιες υλοποιήσεις των ψηφιακών υπογραφών προσθέτουν και την ημερομηνία υπογραφής του εγγράφου, ώστε και το ιδιωτικό κλειδί να υποκλαπεί, η ψηφιακή υπογραφή να είναι έγκυρη. Η ψηφιακή υπογραφή μπορεί να προστεθεί σε οποιαδήποτε σειρά από bits (δηλαδή δεδομένα): παραδείγματα χρήσης είναι τα μηνύματα ηλεκτρονικού ταχυδρομείου,έγγραφα, μηνύματα που στέλνονται στο Διαδίκτυο κλπ. Πολλοί οργανισμοί υιοθετούν την χρήση των ψηφιακών υπογραφών ώστε να αποφεύγεται η αποστολή τυπωμένων εγγράφων (επικυρωμένα με χρήση σφραγίδων και υπογραφών).
Ορισμός
[Επεξεργασία | επεξεργασία κώδικα]Η ψηφιακή υπογραφή αποτελείται από τρεις αλγόριθμους:
- Ο αλγόριθμος δημιουργίας δημόσιου και ιδιωτικού κλειδιού: Ο αλγόριθμος αυτός χρησιμοποιεί μια γεννήτρια τυχαίων αριθμών και με βάση αυτόν τον τυχαίο αριθμό δημιουργεί το δημόσιο και ιδιωτικό κλειδί (με το ιδιωτικό κλειδί δημιουργείται η ψηφιακή υπογραφή και με το δημόσιο κλειδί ελέγχεται η ψηφιακή υπογραφή).
- Ο αλγόριθμος προσθήκης ψηφιακής υπογραφής σε μηνύματα ή έγγραφα: Χρησιμοποιώντας το μήνυμα/έγγραφο και το ιδιωτικό κλειδί (το οποίο ανήκει μόνο σε αυτόν που υπογράφει το έγγραφο), δημιουργεί την ψηφιακή υπογραφή.
- Ο αλγόριθμος ελέγχου ψηφιακής υπογραφής μηνύματος ή εγγράφου: Χρησιμοποιώντας το μήνυμα/έγγραφο και το δημόσιο κλειδί (το δημόσιο κλειδί είναι διαθέσιμο σε όλους, και συσχετίζεται με το ιδιωτικό κλειδί και ανήκει σε αυτόν που υπέγραψε ψηφιακά το μήνυμα/έγγραφο), ελέγχει την αυθεντικότητα (ποιος το υπέγραψε) αλλά και ακεραιότητα (ότι το μήνυμα δεν παραποιήθηκε) του μηνύματος/εγγράφου.
Σύμφωνα με την ασυμμετρική κρυπτογράφηση κάποιος που γνωρίζει το δημόσιο κλειδί δεν μπορεί να δημιουργήσει (είναι υπολογιστικά ανέφικτο) το αντίστοιχο ιδιωτικό κλειδί. Επίσης κάποιος ο οποίος έχει το δημόσιο κλειδί μπορεί να ελέγξει την αυθεντικότητα και ακεραιότητα ενός μηνύματος/εγγράφου το οποίο είναι ψηφιακά υπογεγραμμένο.
Ένα πρόβλημα με τις ψηφιακές υπογραφές είναι ότι δεν γνωρίζουμε αν το δημόσιο κλειδί (κατά την διάρκεια ελέγχου της υπογραφής) που έχουμε ανήκει σε αυτόν που ισχυρίζεται ότι είναι. Για αυτό ακριβώς τον λόγο υπάρχει ο Πάροχος Υπηρεσιών Πιστοποίησης ο οποίος είναι ένας οργανισμός-οντότητα ο οποίος πιστοποιεί την σχέση ενός ανθρώπου με το δημόσιο κλειδί του. Ο Πάροχος Υπηρεσιών Πιστοποίησης θα πρέπει να εμπνέει εμπιστοσύνη γιατί είναι η αρχή η οποία εκδίδει ψηφιακά πιστοποιητικά. Τα ψηφιακά πιστοποιητικά ταυτοποιούν ένα δημόσιο κλειδί με τον δικαιούχο του. Πολλές φορές αυτός που υπογράφει ψηφιακά ένα ηλεκτρονικό έγγραφο, ενδέχεται να επισυνάψει στο έγγραφο μαζί με την ψηφιακή υπογραφή και το ψηφιακό πιστοποιητικό του δημόσιου κλειδιού.
Παράδειγμα
[Επεξεργασία | επεξεργασία κώδικα]Έστω ότι η Alice και ο Bob θέλουν να επικοινωνήσουν μεταξύ τους και συγκεκριμένα η Alice θέλει να στείλει στον Bob ένα υπογεγραμμένο μήνυμα.
- Αρχικά η Alice και ο Bob θα πρέπει να συμφωνήσουν ποιον αλγόριθμο δημόσιου κλειδιού (ασυμμετρικής κρυπτογράφησης: π.χ. PGP, Digital Signature Standard) και ποιον αλγόριθμο κατατεμαχισμού (π.χ. MD5) θα χρησιμοποιήσουν.
- Και η Alice και ο Bob έχουν ζευγάρια δημοσίων και ιδιωτικών κλειδιών σύμφωνα με τον αλγόριθμο που επέλεξαν στο προηγούμενο βήμα. Θα πρέπει να ανταλλάξουν μεταξύ τους τα δημόσια κλειδιά τους.
- Η Alice θέλει να στείλει ένα υπογεγραμμένο μήνυμα στον Bob. Αρχικά θα περάσει το μήνυμα από τον αλγόριθμο κατατεμαχισμού που επέλεξαν στον πρώτο βήμα και θα παράγει την σύνοψη (digest) του μηνύματος.
- Η Alice θα κρυπτογραφήσει την σύνοψη με το ιδιωτικό κλειδί της και θα προσθέσει την κρυπτογραφημένη εκδοχή της στο τέλος του εγγράφου. Αν θέλει, μπορεί επίσης να προσθέσει και ένα πιστοποιητικό που πιστοποιεί ότι το δημόσιο κλειδί που θα χρησιμοποιηθεί από τον Bob αργότερα για την αποκρυπτογράφηση της υπογραφής ανήκει στην Alice (το πιστοποιητικό θα πρέπει να έχει εκδοθεί από ένα έμπιστο πάροχο υπηρεσιών πιστοποίησης). Θα αποστείλει στον Bob το τελικό έγγραφο (έγγραφο το οποίο έχει ψηφιακά υπογραφεί από την Alice - και ίσως περιέχει και ένα ψηφιακό πιστοποιητικό δημόσιου κλειδιού).
- Ο Bob θα ξεχωρίσει την κρυπτογραφημένη σύνοψη από το τέλος του εγγράφου και θα το αποκρυπτογραφήσει χρησιμοποιώντας το δημόσιο κλειδί της Alice (το έχει λάβει στον δεύτερο βήμα). Εφόσον η αποκρυπτογράφηση γίνει με επιτυχία γνωρίζει ότι η σύνοψη δεν έχει αλλοιωθεί και ότι ανήκει στην Alice. Κατόπιν θα πάρει το μήνυμα και θα το περάσει από τον αλγόριθμο κατατεμαχισμού που έχει συμφωνήσει στο πρώτο βήμα και θα συγκρίνει την σύνοψη που υπολόγισε ο ίδιος με την σύνοψη που αποκρυπτογράφησε από την ψηφιακή υπογραφή. Αν οι συνόψεις είναι ίδιες, ο Bob γνωρίζει ότι το αρχικό μήνυμα δεν έχει αλλοιωθεί. Αν θέλει να βεβαιωθεί ότι το δημόσιο κλειδί που χρησιμοποίησε ανήκει πραγματικά στην Alice θα διαβάσει το ψηφιακό πιστοποιητικό της Alice.
Ιστορικά στοιχεία
[Επεξεργασία | επεξεργασία κώδικα]Το 1976 ο Whitfield Diffie και ο Martin Hellman για πρώτη φορά παρουσίασαν την ιδέα των ψηφιακών υπογραφών, αν και η κεντρική ιδέα των τέτοιων συστημάτων προϋπήρχε. Λίγο αργότερα ο Ronald Rivest, ο Adi Shamir και ο Len Adleman παρουσίασαν τον αλγόριθμο RSA ο οποίος χρησιμοποιήθηκε στις πρώτες ψηφιακές υπογραφές. Οι πρώτες ψηφιακές υπογραφές με τον αλγόριθμο RSA αποδείχθηκαν ότι δεν ήταν ασφαλείς. Το πρώτο, ευρέως γνωστό στην αγορά, λογισμικό που χρησιμοποίησε τέτοιες ψηφιακές υπογραφές ήταν τον Lotus Notes 1.0, το οποίο κυκλοφόρησε το 1989.
Η χρήση της συνάρτησης κατατεμαχισμού στις ψηφιακές προστέθηκε αργότερα για λόγους ασφάλειας. Η ιδέα είναι ότι υπολογίζεται η σύνοψη (hash) του μηνύματος/εγγράφου και η ψηφιακή υπογραφή υπολογίζεται πάνω στην σύνοψη (hash) και όχι στο μήνυμα/έγγραφο. Άλλοι αλγόριθμοι που αναπτύχθηκαν μετά το RSA ήταν οι ψηφιακές υπογραφές Lamport, οι ψηφιακές υπογραφές Merkle (γνωστές ως δένδρα Merkle ή απλούστερα "δένδρα συνόψεων/hash") και οι ψηφιακές υπογραφές Rabin.
Το 1988 ο Shafi Goldwasser, ο Silvio Micali και ο Ronald Rivest ήταν οι πρώτοι που δημοσίευσαν ολοκληρωμένη μελέτη για τις απαιτήσεις ασφάλειας των ψηφιακών υπογραφών. Παρουσίασαν με ποιους τρόπους κάποιος μπορεί να παραβιάσει τις υπάρχουσες υλοποιήσεις ψηφιακών υπογραφών και παρουσίασαν το μοντέλο ψηφιακών υπογραφών GMR.
Οι πρόσφατες υλοποιήσεις ψηφιακών υπογραφών είναι παρόμοιας τεχνικής: χρησιμοποιούν μια συνάρτηση της οποίας η έξοδος δεν είναι προβλέψιμη από την είσοδο (trapdoor function), όπως η συνάρτηση RSA. Η κύρια τεχνική είναι ότι η ψηφιακή υπογραφή είναι η σύνοψη (hash) του μηνύματος κρυπτογραφημένη με το ιδιωτικό κλειδί (χρησιμοποιώντας ασυμμετρική κρυπτογραφία). Υπάρχουν διάφοροι λόγοι που ουσιαστικά εφαρμόζεται η ψηφιακή υπογραφή στην σύνοψη του μηνύματος (hash) και όχι σε ολόκληρο το μήνυμα/έγγραφο:
- Αποτελεσματικότητα (efficiency): Η ψηφιακή υπογραφή είναι πολύ μικρότερη σε μέγεθος και χρειάζεται λιγότερο χρόνος για να εφαρμοστεί η ψηφιακή υπογραφή (η σύνοψη (hash)) έχει πολύ μικρότερο μέγεθος από ότι ολόκληρο το μήνυμα/έγγραφο).
- Συμβατότητα (compartibility): Τα μηνύματα/έγγραφα είναι ουσιαστικά μεταβλητές δέσμες bits. Ο αλγόριθμος κατατεμαχισμού μπορεί να μετατρέψει μεταβλητού μεγέθους δέσμες bits σε συγκεκριμένο αριθμό bits (σύνοψη - hash).
- Ακεραιότητα (integrity): Αν δεν εφαρμοστεί η συνάρτηση κατατεμαχισμού το αρχικό μήνυμα/έγγραφο θα πρέπει να διαιρεθεί σε μικρότερα μεγέθη bits (πακέτα bits) ώστε ο αλγόριθμος ψηφιακών υπογραφών να εφαρμοστεί σε αυτά. Ο αποδέκτης των πακέτων bits δεν είναι σε θέση να αναγνωρίσει αν όλα τα πακέτα έχουν έρθει και αν βρίσκονται στη σωστή σειρά.