Σε έναν κόσμο χωρίς κρυπτογράφηση δεδομένων, θα ήταν αδύνατον να έχουμε ένα προσωπικό email, έναν προσωπικό λογαριασμό στο facebook, ή να χρησιμοποιήσουμε μια πιστωτική κάρτα για αγορές στο Internet. Η κρυπτογράφηση δεδομένων χρησιμοποιείται παντού, και είναι η "κλειδαριά" που κρατάει την ψηφιακή μας ζωή ασφαλή. Ας δούμε πώς λειτουργεί.
Για να βλέπεις ΟΠΟΙΑ ταινία και σειρά θέλεις ΟΤΑΝ θέλεις, σε Ελλάδα ή εξωτερικό, και να μπλοκάρεις ενοχλητικές διαφημίσεις παντού στο ίντερνετ, βάλε Cyberghost μόνο με €2 το μήνα και με bonus +3 μήνες δωρεάν στη διετή συνδρομή:
Ανανεώσαμε αυτόν τον οδηγό επ' ευκαιρία της πρόσφατης ανακάλυψης του μεγαλύτερου πρώτου αριθμού μέχρι στιγμής, με μήκος 22 εκατομμυρίων ψηφίων, καθώς οι πρώτοι αριθμοί είναι ζωτικής σημασίας για την κρυπτογράφηση δεδομένων.
Δείτε τις ενότητες του οδηγού:
- Η θεωρία και η πράξη
- Τι είναι η κρυπτογράφηση δεδομένων
- Κρυπτογράφηση δεδομένων: Μια "πρόσφατη" επινόηση
- Η κρυπτογράφηση δεδομένων στους υπολογιστές
- Πως υλοποιείται η κρυπτογράφηση δεδομένων στο Internet
- Η σημασία των μαθηματικών στην κρυπτογράφηση δεδομένων
- Η σημασία των τυχαίων αριθμών στην κρυπτογράφηση δεδομένων
- Γιατί υπάρχουν ακόμα hacker?
- Έχετε απορίες σχετικά με την κρυπτογράφηση δεδομένων?
Το νεότερο βίντεο του PCsteps
Η θεωρία και η πράξη
Ο οδηγός αυτός αναφέρεται στη θεωρία της κρυπτογράφησης και πως εφαρμόζεται στο Internet.
Αν ενδιαφέρεστε για κρυπτογράφηση δεδομένων στον υπολογιστή σας, δείτε τον οδηγό μας:
Κρυπτογράφηση Αρχείων Με το VeraCrypt.
Τι είναι η κρυπτογράφηση δεδομένων
Η φράση "κρυπτογράφηση δεδομένων" ακούγεται μυστηριώδης και εξωτική.
Και μόνο στην αναφορά της φανταζόμαστε ιδιοφυείς χάκερ να χειρίζονται υπερυπολογιστές σε εργαστήρια κρυμμένα στα έγκατα της γης, σε συνθήκες απόλυτης μυστικότητας, με στρατιωτική φρουρά.
Στην πραγματικότητα, όμως, η βασική λογική πίσω από την κρυπτογράφηση δεδομένων είναι εξαιρετικά απλή.
Αφορά το πώς να "μεταμφιέσουμε" μια πληροφορία (ένα κείμενο, έναν αριθμό, ένα αρχείο), έτσι ώστε να μην βγάζει κανένα απολύτως νόημα στα μάτια τρίτων.
Μόνο όποιος έχει το "κλειδί" της κρυπτογράφησης θα μπορεί να διαβάσει την αρχική πληροφορία.
Ας δούμε για παράδειγμα τη φράση:
Αυτή τη στιγμή διαβάζετε PCsteps
Μια απλοϊκή μέθοδος για κρυπτογράφηση δεδομένων είναι να πάρουμε κάθε γράμμα της φράσης και το αντικαταστήσουμε με το γράμμα που βρίσκεται δεξιά του στο πληκτρολόγιο.
Η φράση που προκύπτει είναι:
σθυξ υξ δυοη,ξ φοσνσχρυρ [vdyr[d
Ο κανόνας για τη "μεταμφίεση" των δεδομένων ονομάζεται αλγόριθμος κρυπτογράφησης.
Η διαδικασία εφαρμογής του αλγόριθμου στα αρχικά δεδομένα ονομάζεται κρυπτογράφηση.
Η γνώση του πώς εφαρμόζεται αυτός ο κανόνας είναι το κλειδί της κρυπτογράφησης.
Η αντίστροφη διαδικασία εφαρμογής του αλγόριθμου στα κρυπτογραφημένα δεδομένα, ώστε να πάρουμε ξανά τα αρχικά δεδομένα, ονομάζεται αποκρυπτογράφηση.
Κρυπτογράφηση δεδομένων: Μια "πρόσφατη" επινόηση
Σύμφωνα με τον ιστορικό Πλούταρχο, οι Σπαρτιάτες στρατηγοί που ήθελαν να στείλουν μυστικά κάποιο μήνυμα ο ένας στον άλλο, τύλιγαν μια μακριά και λεπτή λωρίδα παπύρου σε ένα κυλινδρικό κομμάτι ξύλου, τη "σκυτάλη", και έγραφαν εκεί το μήνυμά τους.
Ξετυλίγοντας τον πάπυρο, το κείμενο δεν έβγαζε κανένα νόημα, και μπορούσε να μεταφερθεί με ασφάλεια.
Στον προορισμό του, ο παραλήπτης θα τύλιγε το μήνυμα σε μια σκυτάλη του ίδιου μεγέθους για να το διαβάσει.
Στην προκειμένη περίπτωση:
- Ο αλγόριθμος κρυπτογράφησης είναι η χρήση του παπύρου και της σκυτάλης.
- Το ξετύλιγμα του παπύρου είναι η κρυπτογράφηση δεδομένων.
- Το κλειδί της κρυπτογράφησης είναι το ακριβές μέγεθος που πρέπει να έχει η σκυτάλη για να λειτουργήσει η αποκρυπτογράφηση - δηλαδή το τύλιγμα του γραμμένου παπύρου.
Ένα άλλο γνωστό είδος αλγορίθμου του αρχαίου κόσμου είναι το Caesar cipher ή Caesar shift.
Σε αυτόν, η κρυπτογράφηση δεδομένων γίνεται με λογική μετακίνηση του αλφάβητου ώστε κάθε γράμμα να αντιστοιχείται με το αντίστοιχο γράμμα τρεις θέσεις μπροστά ή πίσω.
Το όνομα του αλγορίθμου προέρχεται από τον Ιούλιο Καίσαρα, που χρησιμοποιούσε αυτή τη μέθοδο σύμφωνα με τον ιστορικό Σουητώνιο.
Το πόσες θέσεις είναι η μετακίνηση (2, 3 ή περισσότερες) είναι το κλειδί της κρυπτογράφησης στο συγκεκριμένο αλγόριθμο.
Κατασκευές και συσκευές για κρυπτογράφηση δεδομένων
Στην πορεία τις ιστορίας επινοήθηκαν πολλοί ακόμα αλγόριθμοι για την κρυπτογράφηση δεδομένων, κυρίως από κράτη και κυβερνήσεις σε καιρό πολέμου.
Συχνά, για πιο περίπλοκους αλγορίθμους, που παρείχαν μεγαλύτερη ασφάλεια, χρησιμοποιούσαν ειδικές κατασκευές.
Οι κατασκευές αυτές αργότερα έδωσαν τη θέση τους σε ειδικές ηλεκτρομηχανικές συσκευές.
Μία από τις πλέον γνωστές συσκευές του είδους είναι η Enigma machine, την οποία χρησιμοποιούσε η Ναζιστική Γερμανία για την κρυπτογράφηση δεδομένων κατά τη διάρκεια του Β' Παγκοσμίου Πολέμου.
Η συσκευή χρησιμοποιήθηκε εκτεταμένα από την Γερμανική υπηρεσία πληροφοριών Abwehr, για την κρυπτογράφηση των πληροφοριών σχετικά με αεροπορικούς βομβαρδισμούς, την κίνηση στρατιωτικών μονάδων, και την τοποθεσία και το φορτίο στρατιωτικών πλοίων.
Μία άλλη σημαντική χρήση της Enigma ήταν η κρυπτογράφηση δεδομένων σχετικά με τη θέση των γερμανικών υποβρυχίων στον Ατλαντικό, τις εντολές που λάμβαναν, ίσως και το αν έγερναν.
Τα υποβρύχια αυτά είχαν αποκλείσει από θαλάσσης τη Βρετανία, θέτοντάς την πρακτικά σε κατάσταση πολιορκίας.
Το γεγονός πως ο Βρετανός μαθηματικός και επιστήμονας των υπολογιστών Alan Turing κατάφερε να ανακαλύψει το κλειδί κρυπτογράφησης του Enigma (να "σπάσει" την κρυπτογράφηση) υπήρξε καθοριστικής σημασίας για την έκβαση του πολέμου.
(ασχέτως αν το 1952 καταδίκασαν τον Alan Turing καθώς ήταν ομοφυλόφιλος - που ήταν παράνομο τότε - και τον οδήγησαν στην αυτοκτονία... Τουλάχιστον η Βρετανική κυβέρνηση ζήτησε επισήμως συγνώμη... το 2009)
Η κρυπτογράφηση δεδομένων στους υπολογιστές
Σήμερα, κάθε κρυπτογράφηση δεδομένων βασίζεται σε υπολογιστές.
Πολύ απλά, όποιον αλγόριθμο κι αν επινοήσει ο άνθρωπος, όσο περίπλοκος κι αν είναι, είναι υπερβολικά εύκολο να τον σπάσει ένας κατάλληλα προγραμματισμένος υπολογιστής.
Η κρυπτογράφηση δεδομένων μέσω υπολογιστή γενικά ανήκει σε δύο κατηγορίες:
- Symmetric key encryption
- Public key ή Asymmetric key encryption
Symmetric key encryption
Στην κρυπτογράφηση symmetric key, όπως και οι Σπαρτιάτες στρατηγοί, και οι δύο υπολογιστές που επικοινωνούν χρειάζεται να έχουν το ίδιο κλειδί κρυπτογράφησης.
Στην περίπτωση των υπολογιστών το κλειδί είναι ένας αριθμητικός κωδικός, το μέγεθος του οποίου ορίζεται από το πόσα bits τον αποτελούν.
(Για την εξήγηση των bits δείτε τον οδηγό μας: Πώς Λειτουργεί ο Υπολογιστής, Απλά και Κατανοητά)
Ο πρώτος σημαντικός αλγόριθμος για κρυπτογράφηση δεδομένων μέσω υπολογιστή ήταν ο Data Encryption Stantard (DES) που αναπτύχθηκε από την IBM στις ΗΠΑ και εγκρίθηκε για χρήση το 1970.
Ο DES χρησιμοποιεί κλειδί μήκους 56-bit, που διαθέτει πάνω από 72 τετράκις εκατομμύρια πιθανούς συνδυασμούς (72.057.594.037.927.936, για την ακρίβεια).
Μπορεί να ακούγονται ατέλειωτοι, όμως το 1998 δημιουργήθηκε η συσκευή EFF DES cracker ("Deep Crack"), με ειδικά κατασκευασμένα τσιπάκια, που επέτρεπαν σε έναν υπολογιστή να δοκιμάσει 90 δισεκατομμύρια κλειδιά το δευτερόλεπτο.
Θεωρητικά, θα χρειάζονταν 9 ημέρες για να δοκιμάσει κάθε πιθανό συνδυασμό.
Στην πράξη, ο Deep Crack κατάφερε να σπάσει τον DES σε δύο ξεχωριστά τεστ, στο πρώτο σε 56 ώρες και στο δεύτερο σε 22 ώρες, αποδεικνύοντας πως ο συγκεκριμένος αλγόριθμος είναι ανεπαρκής για την κρυπτογράφηση δεδομένων σε πραγματικές συνθήκες.
Πλέον, ο DES έχει αντικατασταθεί από τον αλγόριθμο Advanced Encryption Standard (AES), που χρησιμοποιεί κλειδιά 128, 192 ή 256-bit.
Με την αύξηση των bit, οι πιθανοί συνδυασμοί ανεβαίνουν εκθετικά. Ένα κλειδί 128-bit μπορεί να έχει πάνω από 300.000.000.000.000.000.000.000.000.000.000.000 πιθανούς συνδυασμούς.
Ο μεγαλύτερος υπερυπολογιστής αυτή τη στιγμή στον κόσμο, που μπορεί να εκτελέσει 33,86 petaflop/s (τετράκις εκατομμύρια υπολογισμούς το δευτερόλεπτο) και θα μπορούσε θεωρητικά να σπάσει τον DES σε 2 δευτερόλεπτα, θα χρειαζόταν περίπου 250 δισεκατομμύρια χρόνια για να ελέγξει όλους τους συνδυασμούς του AES-128.
Γνωστοί Αλγόριθμοι Symmetric key encryption
Εκτός από τον AES που προαναφέραμε, άλλοι γνωστοί αλγόριθμοι Symmetric key που χρησιμοποιούνται ευρέως για την κρυπτογράφηση δεδομένων είναι οι RC4, 3DES, IDEA, CAST5, Twofish, Serpent, Blowfish.
Public/asymmetric key encryption
Υπάρχει ένα σημαντικό πρόβλημα με την κρυπτογράφηση δεδομένων μέσω της μεθόδου symmetric key, ανεξαρτήτως αλγόριθμου, ειδικά όσον αφορά τη χρήση της στο Internet.
Το πρόβλημα είναι πως αν κάποιος θέλει να μας στείλει κάτι κρυπτογραφημένο με αυτή τη μέθοδο, για να το ανοίξουμε πρέπει με κάποιο τρόπο να μας στείλει και ένα αντίγραφο του κλειδιού.
Αν όμως μας στείλει το κλειδί μέσω του Internet, που είναι ένα δημόσιο δίκτυο, θα μπορούσε οποιοσδήποτε να το υποκλέψει κατά την αποστολή, και να έχει πρόσβαση στα κρυπτογραφημένα δεδομένα.
Αυτό το πρόβλημα λύνει η μέθοδος Public/asymmetric key encryption.
Ουσιαστικά, σε αυτή τη μέθοδο κρυπτογράφησης υπάρχουν δύο κλειδιά:
- Το Public key, είναι δημόσιο και μπορεί να το χρησιμοποιήσει οποιοσδήποτε για την κρυπτογράφηση δεδομένων.
- Το Private Key που είναι μυστικό. Συνδέεται μαθηματικά με το Public key και είναι απαραίτητο για την αποκρυπτογράφηση.
Για να γίνει κατανοητός ο τρόπος λειτουργίας αυτής της μεθόδου, θα χρησιμοποιήσουμε ένα παράδειγμα με δύο χρήστες, την Alice και τον Bob.
Tα ονόματα Alice και Bob, παρεμπιπτόντως, είναι τα στάνταρ ονόματα που χρησιμοποιούν οι κρυπτογράφοι για παραδείγματα και να δείξουν πώς λειτουργούν οι αλγόριθμοι.
Το πρόβλημα με την κρυπτογράφηση δεδομένων με symmetric key
Έστω λοιπόν πως η Alice θέλει να στείλει ένα μυστικό μήνυμα στον Bob μέσω του δημόσιου ταχυδρομείου, και περιμένει μια επίσης μυστική απάντηση από τον Bob.
Στην κρυπτογράφηση δεδομένων με symmetric key, ουσιαστικά η Alice κλειδώνει το μήνυμα σε ένα κουτί, με ένα λουκέτο (αλγόριθμος κρυπτογράφησης) για το οποίο έχει μόνο εκείνη το κλειδί (κλειδί κρυπτογράφησης).
Ύστερα, στέλνει το κλειδωμένο κουτί με το ταχυδρομείο στον Bob. Και, αναγκαστικά, του στέλνει σε ένα ξεχωριστό φάκελο, μέσω ταχυδρομείου, ένα αντίγραφο του μοναδικού κλειδιού.
Κάποιος κακόβουλος, όμως, με πρόσβαση στο ταχυδρομείο, θα μπορούσε να αντιγράψει το κλειδί και να έχει μετά απεριόριστη πρόσβαση στην επικοινωνία της Alice και του Bob.
Η λύση της κρυπτογράφησης public/asymmetric key
Στην κρυπτογράφηση δεδομένων με Public/Asymmetric key, η Alice και ο Bob έχουν ξεχωριστά λουκέτα και ξεχωριστά κλειδιά.
Ο Bob στέλνει το λουκέτο του ανοιχτό (Public key) με το ταχυδρομείο στην Alice, αλλά κρατάει εκείνος το κλειδί (Private key).
Η Alice χρησιμοποιεί αυτό το λουκέτο για να κλειδώσει το κουτί με το μήνυμα, και στέλνει το κλειδωμένο κουτί στον Bob, που το ανοίγει με το κλειδί του.
Αντίστοιχα, αν θέλει ο Bob να στείλει μήνυμα, θα πρέπει να του στείλει η Alice το δικό της λουκέτο πρώτα.
Αυτή η μέθοδος έχει το τεράστιο πλεονέκτημα πως δεν χρειάζεται να ανταλλάξουν κλειδιά ο Bob και η Alice, ώστε να μην υπάρχει η πιθανότητα να γίνει υποκλοπή κατά την ανταλλαγή.
Όμως, στην κρυπτογράφηση symmetric key, χρειάζεται μία μόνο φορά να σταλεί το κλειδί κρυπτογράφησης.
Στην κρυπτογράφηση δεδομένων με public/asymmetric key, χρειάζεται συνεχής ανταλλαγή δεδομένων σχετικών με την κρυπτογράφηση, εις βάρος της ταχύτητας μεταφοράς των πραγματικών δεδομένων. Συν ότι οι αλγόριθμοι αυτού του τύπου χρειάζονται περισσότερους υπολογισμούς.
Για να συνδυαστεί η ασφάλεια με την ταχύτητα, υλοποιείται μια υβριδική λύση για την κρυπτογράφηση δεδομένων, η οποία ουσιαστικά χρησιμοποιεί ταυτόχρονα και ένα αλγόριθμο symmetric key και έναν αλγόριθμο public/assymetric key.
Η υβριδική λύση που συνδυάζει ταχύτητα και ασφάλεια
Αυτή είναι η μέθοδος που χρησιμοποιείται ευρέως για την κρυπτογράφηση δεδομένων στο Internet.
Στην υβριδική αυτή λύση, για να στείλει η Alice μήνυμα στον Bob, ακολουθούνται τα εξής βήματα:
- Ο Bob στέλνει στην Alice το ανοιχτό του λουκέτο (Public Key), ενώ κρατάει το δικό του κλειδί (Private Key).
- H Alice αγοράζει ένα νέο λουκέτο με νέο, μοναδικό κλειδί (δημιουργία Symmetric key). Κλειδώνει με αυτό το κουτί με τα δεδομένα (data encapsulation).
- Σε ένα δεύτερο, ξεχωριστό κουτί, πολύ μικρότερου μεγέθους, βάζει ένα αντίγραφο του μοναδικού κλειδιού, και το κλειδώνει με το λουκέτο του Bob (key encapsulation).
- Στέλνει και τα δύο κουτιά στον Bob με το ταχυδρομείο.
Ο Bob, με τη σειρά του, μόλις λάβει και τα δύο κουτιά, ξεκλειδώνει με το κλειδί του το μικρό κουτί για να πάρει το μοναδικό κλειδί, και με το μοναδικό κλειδί ξεκλειδώνει το κουτί με τα δεδομένα.
Πλέον, εφόσον και ο Bob και η Alice έχουν ένα αντίγραφο του μοναδικού κλειδιού, που μεταφέρθηκε με ασφάλεια, όλη η υπόλοιπη επικοινωνία τους μπορεί να γίνει χωρίς την αποστολή κανενός κλειδιού.
Αυτή είναι μια σχετικά απλή έκδοση όσον αφορά την κρυπτογράφηση δεδομένων με Public/Asymmetric key.
Στην πράξη, στους πιο γνωστούς αλγόριθμους η Alice και ο Bob έχουν ο καθένας δύο κλειδιά, ένα για την κρυπτογράφηση δεδομένων και ένα για την αποκρυπτογράφηση.
Σε αυτή την αναλογία, η Alice μπορεί να εκδώσει οδηγίες για το πώς να φτιάξει κάποιος ένα λουκέτο (public key), όμως το συγκεκριμένο λουκέτο είναι σχεδιασμένο έτσι ώστε να είναι αδύνατον να εξαχθεί από αυτό συμπέρασμα για τη δημιουργία κλειδιού (private key).
Σε άλλα συστήματα με κρυπτογράφηση δεδομένων Public/Asymmetric key, η Alice και ο Bob επιλέγουν ένα τυχαίο κλειδί, και μετά επικοινωνούν για να συγκρίνουν τα χαρακτηριστικά των κλειδιών τους. Γνωρίζοντας τις διαφορές, δημιουργούν ένα κουτί με ειδική κλειδαριά, που ανοίγει μόνο με τα δικά τους κλειδιά.
Γνωστοί Αλγόριθμοι Public/Asymmetric key encryption
Ο ποιο γνωστός αλγόριθμος Public/Asymmetric key όσον αφορά το Internet είναι ο RSA, την ακριβή λειτουργία του οποίου θα αναλύσουμε παρακάτω..
Από εκεί και πέρα, γνωστές και διαδεδομένες τεχνικές public/asymmetric key για διάφορες εφαρμογές είναι το πρωτόκολλο ανταλλαγής κλειδιών Diffie-Hellman, το Digital Signature Standard που περιλαμβάνει τον Digital Signature Algorithm, η κρυπτογράφηση ElGamal, το σύστημα Paillier, το σύστημα Cramer-Shoup και το πρωτόκολλο YAK.
Πως υλοποιείται η κρυπτογράφηση δεδομένων στο Internet
Το κύριο πρωτόκολλο κρυπτογράφησης του Internet είναι το Transport Layer Security (TLS), που είναι ο διάδοχος του Secure Socket Layer (SSL). Είναι το πρωτόκολλο που ακολουθείται όποτε μπαίνουμε σε μια σελίδα που ξεκινάει με https:// και με λουκέτο.
Να σημειωθεί πως το TLS δεν είναι το ίδιο ένας αλγόριθμος κρυπτογράφησης. Είναι το πρωτόκολλο που υπαγορεύει τα βήματα που πρέπει να ακολουθηθούν για να πραγματοποιηθεί μια ασφαλής σύνδεση.
Τα βήματα αυτά συμπεριλαμβάνουν, μεταξύ άλλων:
- ποια στοιχεία χρειάζεται να ανταλλάξουν ο υπολογιστής μας και ο server πριν δημιουργηθεί η ασφαλής σύνδεση
- ποιος αλγόριθμος Public/Asymmetric key θα χρησιμοποιηθεί και για την κρυπτογράφηση ποιών δεδομένων.
- ποιος αλγόριθμος θα χρησιμοποιηθεί για το Symmetric key
- Πόσο διάστημα θα διαρκέσει η σύνδεση (session) πριν χρειαστεί να ανανεωθεί
Επίσης, ο TSL ορίζει και ένα επιπλέον μέτρο ασφαλείας, που ονομάζεται Digital Certificate.
Digital Certificate
Υπάρχουν κάποιες εταιρείες που ονομάζονται Certificate Authorities, όπως πχ η VeriSign, η DigiCert, το Comodo Group, και άλλες.
Οι εταιρείες αυτές εκδίδουν ένα ψηφιακό πιστοποιητικό (Digital Certificate). Ουσιαστικά πρόκειται για ένα μοναδικό κομμάτι κώδικα που επιβεβαιώνει πως ένα συγκεκριμένο Public key ανήκει σε μια συγκεκριμένη ιστοσελίδα και μια συγκεκριμένη επιχείρηση.
Έτσι, είναι αδύνατον κάποιος να πλαστογραφήσει πχ το Public key του Facebook. Εφόσον υπάρχει το https:// και το λουκέτο, βρισκόμαστε στο πραγματικό facebook...
...και όχι κάποια ψεύτικη σελίδα που παριστάνει πως είναι το Facebook για να κλέψει τον κωδικό μας.
Αν μπούμε σε κάποια ιστοσελίδα με https:// αλλά χωρίς Digital Certificate από κάποια Certificate Authority, ο browser θα μας προειδοποιήσει.
Η κρυπτογράφηση δεδομένων στο Internet, στην πράξη
Για να δούμε απλοποιημένα πως λειτουργεί το πρωτόκολλο TLS, μόλις μπαίνουμε σε μια σελίδα https://, γίνονται τα εξής:
- Ο browser στέλνει τα στοιχεία του στο server: ποιες εκδόσεις SSL και TLS υποστηρίζει, ποιους αλγόριθμους για την κρυπτογράφηση δεδομένων, στοιχεία που αφορούν το session (πχ ημερομηνία και ώρα έναρξης) και γενικά όσα στοιχεία χρειάζεται για να γίνει η σύνδεση.
- Ο web server της σελίδας στέλνει τα αντίστοιχα στοιχεία του όσον αφορά το SSL/TLS, τους αλγόριθμους, το session κλπ. Επίσης στέλνει το digital certificate.
- Ο browser ελέγχει τρία πράγματα:
- Αν το digital certificate προέρχεται από μια πιστοποιημένη Certificate Authority,
- Αν ισχύει ακόμα
- Αν συνδέεται με το site που έχουμε μπει.
- Εφόσον όλα είναι καλά, o server στέλνει το public key στον browser. Ο browser χρησιμοποιεί το public key για να δημιουργήσει ένα τυχαίο symmetric key.
- Το symmetric key αποστέλλεται στο server, και χρησιμοποιείται για όλη τη διάρκεια της σύνδεσης (session) σε κρυπτογράφηση δεδομένων τύπου symmetric key.
Μόλις αποσυνδεθούμε (πχ κάνουμε log-out από το email ή από το facebook ή λήξει το session, πχ στο paypal ή το ebanking), ο υπολογιστής μας και ο web server καταστρέφουν το symmetric key.
Στην επόμενη σύνδεση, θα δημιουργηθεί ένα εντελώς νέο symmetric key.
Ο πιο συνηθισμένος αλγόριθμος κρυπτογράφησης Public/asymmetric key που χρησιμοποιείται με το TLS είναι ο RSA.
Για να μάθουμε περισσότερα για το ποιοι αλγόριθμοι χρησιμοποιούνται για τη σύνδεση σε μια συγκεκριμένη σελίδα, αρκεί να κάνουμε κλικ στο λουκέτο στη μπάρα διευθύνσεων.
Στη συνέχεια, στον Chrome επιλέγουμε τη "Σύνδεση"...
Στον Firefox πηγαίνουμε στο "Περισσότερα για αυτή την ιστοσελίδα"
και βλέπουμε αναλυτικά όλες τις πληροφορίες.
Η σημασία των μαθηματικών στην κρυπτογράφηση δεδομένων
(σημείωση: αν δεν αντέχετε τα μαθηματικά, προσπεράστε ολόκληρη αυτή την ενότητα)
(επίσης, αν οτιδήποτε από τα παρακάτω δεν σας είναι απόλυτα σαφές, γράψτε μας στα σχόλια και θα το διευκρινήσουμε περισσότερο)
Για να ασχοληθεί κάποιος με την επιστήμη της κρυπτογράφησης δεδομένων, η γνώση ανώτερων μαθηματικών είναι πολύ σημαντικότερη από τη γνώση που αφορά τους υπολογιστές και τα δίκτυα.
Αυτό συμβαίνει γιατί συγκεκριμένες μαθηματικές δομές και ιδιότητες των αριθμών, βασισμένες σε θεωρήματα μαθηματικών όπως ο Ευκλείδης, ο Fermat, και ο Euler, είναι που κάνουν τους αλγόριθμους κρυπτογράφησης τόσο δύσκολο να σπάσουν.
Για παράδειγμα, ένας από τους ισχυρότερους και πλέον διαδεδομένους αλγόριθμους για την κρυπτογράφηση δεδομένων στο Internet είναι ο RSA, ένα κρυπτογραφικό σύστημα Public/Asymmetric key με κλειδιά μήκους από 1024 έως 4096 bit.
Η μέθοδος με την οποία ο RSA δημιουργεί το Public και το Private key στηρίζεται στις παρακάτω μαθηματικές έννοιες:
- Τους πρώτους και τους σύνθετους αριθμούς
- Τους ημιπρώτους αριθμούς
- Τον μέγιστο κοινό διαιρέτη
- Τους σχετικά πρώτους αριθμούς
- Την συνάρτηση Euler φ(n)
- Την παραγοντοποίηση πρώτων αριθμών
- Το υπόλοιπο της διαίρεσης και οι ισοϋπόλοιποι αριθμοί
- Τους αντίστροφους αριθμούς και το θεώρημα Euler.
Πριν λοιπόν δούμε πως ακριβώς λειτουργεί ο RSA, ας κάνουμε ένα μικρό φρεσκάρισμα στα μαθηματικά μας.
Οι βασικές μαθηματικές έννοιες
Όπως πιθανώς θυμάστε από το σχολείο:
Πρώτοι και σύνθετοι αριθμοί
Πρώτοι είναι οι αριθμοί που διαιρούνται ακριβώς μόνο με τον εαυτό τους και με τη μονάδα. Οι παρακάτω είναι όλοι οι πρώτοι αριθμοί μέχρι το 100.
Ο μεγαλύτερος πρώτος αριθμός που έχει ανακαλυφθεί μέχρι στιγμής είναι ο 274,207,281-1, που επιβεβαιώθηκε στις 7 Ιανουαρίου 2016 και ονομάζεται M74207281.
Ο αριθμός αυτός αποτελείται από 22 εκατομμύρια ψηφία, που σημαίνει πως για να τον διαβάσουμε φωναχτά, αν λέμε δύο ψηφία το δευτερόλεπτο, θα μας πάρει πάνω από τέσσερις μήνες για να τον πούμε ολόκληρο.
Οι υπόλοιποι αριθμοί που δεν είναι πρώτοι, ονομάζονται "σύνθετοι αριθμοί".
Ημιπρώτοι αριθμοί
Ημιπρώτοι ονομάζονται οι αριθμοί που παράγονται από τον πολλαπλασιασμό δύο πρώτων.
15=3*5
8633 = 89*97
Μέγιστος κοινός διαιρέτης
Ο μέγιστος κοινός διαιρέτης δύο αριθμών α και β είναι ο μεγαλύτερος ακέραιος αριθμός που διαιρεί ακριβώς και τους δύο. Συμβολίζεται με ΜΚΔ(a,b)
ΜΚΔ(120,350)=10
ΜΚΔ(150,350)=50
Για να βρούμε το μέγιστο κοινό διαιρέτη μπορούμε να εφαρμόσουμε παραγοντοποίηση (για την οποία θα μιλήσουμε παρακάτω) ή τον Αλγόριθμο του Ευκλείδη.
Εξ' ορισμού, ο μέγιστος κοινός διαιρέτης οποιωνδήποτε διαφορετικών πρώτων αριθμών είναι η μονάδα.
ΜΚΔ(89,97)=1
Σχετικά πρώτοι αριθμοί
Οι σχετικά πρώτοι αριθμοί για έναν συγκεκριμένο αριθμό είναι αυτοί που έχουν μέγιστο κοινό διαιρέτη τη μονάδα με τον συγκεκριμένο αριθμό.
Προφανώς όλοι οι πρώτοι αριθμοί είναι και σχετικά πρώτοι μεταξύ τους. Επίσης, σε έναν πρώτο αριθμό x, όλοι ακέραιοι οι αριθμοί από το μηδέν ως το x-1 είναι σχετικά πρώτοι μαζί του.
Μπορούν όμως και αριθμοί που δεν είναι πρώτοι να είναι σχετικά πρώτοι μεταξύ τους. Για παράδειγμα, ο ΜΚΔ(21,22)=1, άρα το 21 και το 22 είναι σχετικά πρώτοι μεταξύ τους.
Η συνάρτηση Euler φ(n)
Ο Leonhard Euler είναι μία από τις μεγαλύτερες μαθηματικές ιδιοφυΐες στην ιστορία...

...και φαίνεται!
Η συνάρτηση Euler για ένα συγκεκριμένο θετικό ακέραιο αριθμό μετράει πόσοι σχετικά πρώτοι αριθμοί υπάρχουν ανάμεσα στο μηδέν και τον συγκεκριμένο αριθμό.
Για παράδειγμα, το 9 έχει μέγιστο κοινό διαιρέτη τη μονάδα με έξι αριθμούς από το 0 ως το 9, τους 1, 2, 4, 5, 7 και 8.
Άρα το φ(9)=6
Εξ ορισμού, το φ(n) για οποιονδήποτε πρώτο αριθμό p είναι φ(n)=(p-1)
Αυτό συμβαίνει γιατί, όπως προαναφέραμε, όλοι οι αριθμοί ανάμεσα στο μηδέν και έναν πρώτο αριθμό είναι σχετικά πρώτοι μαζί του, εκτός από τον ίδιο τον πρώτο αριθμό.
Παραγοντοποίηση Πρώτων
Σύμφωνα με την θεωρία των αριθμών, η παραγοντοποίηση ακεραίων ή παραγοντοποίηση πρώτων αριθμών είναι η ανάλυση ενός σύνθετου αριθμού σε μικρότερους πρώτους αριθμούς, που ονομάζονται παράγοντες.
Πολλαπλασιάζοντας μεταξύ τους αυτούς τους παράγοντες, παίρνουμε τον αρχικό αριθμό.
Επίσης, σύμφωνα με τη θεμελιώδη θεωρία αριθμών, κάθε ακέραιος θετικός έχει ένα μοναδικό αποτέλεσμα όσον αφορά την παραγοντοποίηση πρώτων.
Αυτή η ιδιότητα της παραγοντοποίησης είναι πιθανώς ο ισχυρότερος παράγοντας για την ασφάλεια στην κρυπτογράφηση δεδομένων.
Το υπόλοιπο της διαίρεσης και οι ισοϋπόλοιποι αριθμοί
Πριν μάθουμε για δεκαδικούς και κλάσματα, όταν πρωτομαθαίναμε τη διαίρεση πχ 24/10, λέγαμε πως "το 10 χωράει 2 φορές στο 24 και περισσεύουν 4".
Όσο απίστευτο κι αν φαίνεται, αυτή η λογική είναι ζωτικής σημασίας για την κρυπτογράφηση δεδομένων με τον RSA.
Μαθηματικά, η παραπάνω φράση που αφορά το υπόλοιπο μπορεί να γραφτεί ως:
24 mod 10 = 4
Τώρα, αν δύο αριθμοί έχουν το ίδιο υπόλοιπο στη διαίρεση με τον ίδιο αριθμό, αυτοί οι δύο αριθμοί έχουν μια σχέση συζυγίας (congruence relation) μεταξύ τους.
Η σχέση συζυγίας συμβολίζεται με το ≡, και οι αριθμοί ονομάζονται ισοϋπόλοιποι.
Δηλαδή εφόσον 24 mod 10 = 4 (γιατί περισσεύει 4 στη διαίρεση)
και 54 mod 10 = 4 (καθώς επίσης περισσεύει 4) τότε ισχύει πως
54≡24 mod 10
Η παραπάνω σχέση διαβάζεται "54 ισότιμος του 24 modulo 10",
ή, εναλλακτικά, "54 ισότιμος του 24 κατά μέτρο 10".
Αντίστροφοι αριθμοί
Αντίστροφοι είναι δύο αριθμοί που αν τους πολλαπλασιάσουμε μεταξύ τους, μας δίνουν τη μονάδα.
Πχ το x και το x^(-1) (ή αλλιώς το x και το 1/x)
Αυτό που είναι ενδιαφέρον είναι πως αν και μόνο αν δύο αριθμοί α και m είναι σχετικά πρώτοι μεταξύ τους (δηλαδή ΜΚΔ(a,m)=1), τότε ο μικρότερος από τους δύο αριθμούς έχει έναν αριθμό x που είναι αντίστροφος κατά μέτρο του μεγαλύτερου.
Για παράδειγμα, οι αριθμοί 4 και 9 είναι σχετικά πρώτοι μεταξύ τους, γιατί ΜΚΔ(4,9)=1
Αυτό σημαίνει πως υπάρχει ένας ακέραιος αριθμός x<9, για τον οποίο ισχύει
4*X≡1 mod 9
Για να βρεθεί αυτός ο αριθμός, μπορεί να χρησιμοποιηθεί ο διευρυμένος αλγόριθμος του Ευκλείδη.
Στην προκειμένη περίπτωση, ο αριθμός είναι το 7.
4*7=28≡1 mod 9
Πώς χρησιμοποιούνται όλα τα παραπάνω στην κρυπτογράφηση δεδομένων με τον RSA?
Στην πράξη, όταν ο RSA ενεργοποιείται από το TLS, η διαδικασία που ακολουθεί είναι η εξής:
- Παραγωγή δύο πρώτων αριθμών μεγάλου μήκους
Έστω p και q οι αριθμοί αυτοί.
Το ελάχιστο μήκος που μπορεί να έχουν είναι 512 ψηφία. Για να θεωρηθεί ασφαλής η κρυπτογράφηση, θα πρέπει να έχουν μήκος τουλάχιστον 1024 ψηφία.
- Πολλαπλασιασμός των δύο αυτών αριθμών
Με τον πολλαπλασιασμό παράγεται ο ημιπρώτος n
n=p*q
- Εφαρμογή της συνάρτησης Euler στον n
φ(n) = φ(p*q) = φ(p)*φ(q)
Εφόσον ο p και ο q είναι πρώτοι, ισχύει φ(p)=(p-1) και φ(q)=(q-1)
Άρα φ(n)=(p-1)*(q-1), που είναι απείρως πιο εύκολο να υπολογιστεί.
- Παραγωγή του Public key (e)
Το Public Key παράγεται ώστε να είναι ένας πρώτος αριθμός μεταξύ του 3 και του φ(n)
Συμβολίζεται με e και έχει συνήθως την τιμή 65537 (2^16+1).
Αν τύχει το φ(n) να είναι πολλαπλάσιο του 65537, δίνεται άλλη τιμή στο e. Αυτό είναι σχετικά απίθανο να τύχει, αλλά γίνεται έλεγχος.
Eξ' ορισμού ο ΜΚΔ(e, φ(n) )=1
Δεν μας πειράζει το ότι το Public key e είναι γνωστό και δεν είναι τυχαίος αριθμός. Έτσι κι αλλιώς είναι διαθέσιμο σε όλους. Το σημαντικό είναι να μην μπορεί να προκύψει το Private key από το Public key
- Παραγωγή Private key
Από τη στιγμή που το Public key έχει μέγιστο κοινό διαιρέτη τη μονάδα με το φ(n), με τον εκτεταμένο αλγόριθμο του Ευκλείδη μπορούμε να βρούμε γρήγορα τον αντίστροφό του κατά μέτρο φ(n).
Δηλαδή έναν αριθμό d έτσι ώστε
e*d≡1 mod φ(n)
Αυτός ο αριθμός d είναι το private key.
- Κρυπτογράφηση δεδομένων και αποκρυπτογράφηση
Πλέον, με τα κλειδιά έτοιμα, ο RSA είναι έτοιμος να κρυπτογραφήσει τα δεδομένα.
Ουσιαστικά, όλο το κείμενο προς κρυπτογράφηση, μέσα από μια διαδικασία που δεν θα περιγράψουμε αυτή τη στιγμή, παίρνει μία αριθμητική τιμή, έστω m.
Ο RSA μετασχηματίζει αυτή την τιμή m μέσα από την παρακάτω συνάρτηση με βάση το κλειδί k, με n το γινόμενο των πρώτων αριθμών:
F(m,k)=m^k mod n
Για τη συνάρτηση αυτή, υπάρχουν δύο περιπτώσεις:
Κατά την κρυπτογράφηση δεδομένων, ο RSA εφαρμόζει τη συνάρτηση ως εξής:
F(m,e)=m^e mod n = c, όπου m είναι το μήνυμα, e είναι το public key και c είναι το κρυπτογραφημένο μήνυμα.
Στην αποκρυπτογράφηση δεδομένων, η συνάρτηση είναι
F(c,d)=c^d mod n = m, όπου c είναι τα κρυπτογραφημένα δεδομένα, d είναι το private key και m είναι το αποκρυπτογραφημένο κείμενο.
Επίσης, ο RSA λειτουργεί και αντιστρόφως, μπορεί να κάνει κρυπτογράφηση δεδομένων με το private key και να τα αποκρυπτογραφήσει με το Public, με τις ίδιες εξισώσεις.
Έτσι λοιπόν λειτουργεί ο RSA.
Αριθμητικό παράδειγμα για το πώς λειτουργεί ο RSA
Για όσους δεν είμαστε μαθηματικοί, ένα πρακτικό παράδειγμα δείχνει πιο καθαρά πως λειτουργεί ο RSA κατά την κρυπτογράφηση δεδομένων.
- Παραγωγή δύο πρώτων αριθμών
Επειδή θα μας πάρει περίπου 2 χρόνια να κάνουμε πράξεις με αριθμούς των 1024 ψηφίων με το χέρι, έστω πως οι πρώτοι αριθμοί που παράγουμε στον χειροκίνητο RSA μας είναι p=11 και q=13.
- Πολλαπλασιασμός των δύο αυτών αριθμών
n=11*13=143
- Εφαρμογή της συνάρτησης Euler στον n
Άρα φ(n)=(p-1)*(q-1)=10*12=120
- Παραγωγή του Public key (e)
Χρειαζόμαστε έναν πρώτο αριθμό από το 3 ως το φ(n)120, που να έχει μέγιστο κοινό διαιρέτη 1 με το 120.
Ας επιλέξουμε το e=7.
ΜΚΔ(7, 120)=1
- Παραγωγή Private key (d)
Θέλουμε έναν αριθμό d έτσι ώστε
e*d≡1 mod φ(n) δηλαδή 7*d≡1 mod 120.
Με τον εκτεταμένο αλγόριθμο του Ευκλείδη βρίσκουμε τον αριθμό d=103.
Για επαλήθευση έχουμε e*d≡1 mod φ(n), δηλαδή 7*103=721≡1 mod 120, που ισχύει.
- Κρυπτογράφηση δεδομένων και αποκρυπτογράφηση
Ας πούμε πως τα δεδομένα μας είχαν την τιμή m=9.
Για την κρυπτογράφηση δεδομένων έχουμε m^e mod n= 9^7 mod 143 = 48
Άρα, το αρχικό κείμενο m=9 με την κρυπτογράφηση έγινε c=48.
Για την αποκρυπτογράφηση έχουμε: c^d mod n = 48^103 mod 143 = 9
Και έχουμε ξανά το m=9.
Παρατηρήστε πως τέτοιες πράξεις, όπως το 48^103 (που θα ήταν ασύγκριτα μεγαλύτερες με πραγματικά νούμερα) είναι που κάνουν τον RSA τόσο απαιτητικό σε υπολογισμούς, και χρησιμοποιείται η υβριδική μέθοδος με το symmetric key.
Αλλιώς, ένας server που έχει να εξυπηρετήσει εκατομμύρια επισκέπτες την ημέρα, θα ήταν αδύνατον να ανταπεξέλθει στην απαιτούμενη επεξεργαστική ισχύ.
Γιατί η κρυπτογράφηση δεδομένων με τον RSA είναι απόλυτα ασφαλής
Ας πούμε πως θέλαμε να σπάσουμε τον κώδικα του παραδείγματος του RSA που φτιάξαμε παραπάνω.
Σαν εξωτερικοί παρατηρητές, οι μόνες τιμές που βλέπουμε είναι το Public key, που είναι 7, το n που είναι 143 και το κρυπτογραφημένο κείμενο c=48.
Δεν βλέπουμε όμως πουθενά τους πρώτους αριθμούς που χρησιμοποιήθηκαν για να φτιάξουν το n, με τους οποίους θα μπορούσαμε να υπολογίσουμε εύκολα το φ(n). Και χωρίς το φ(n) είναι αδύνατον να υπολογίσουμε το private key d.
Από τη στιγμή που ο n είναι 143 στο παράδειγμα, θα μπορούσαμε να τον παραγοντοποιήσουμε και με το χέρι, και πρακτικά να σπάσουμε τον κωδικό.
Αν όμως ο n είναι ένας αριθμός με 309 ψηφία, όπως ισχύει στον RSA-1024, δεν έχει υπάρξει υπολογιστής που να μπορέσει να εφαρμόσει επιτυχώς παραγοντοποίηση πρώτων σε αυτόν.
Ο μεγαλύτερος ημιπρώτος αριθμός που έχουμε καταφέρει να παραγοντοποιήσουμε είναι ο RSA-768, ένας αριθμός 232 ψηφίων:
RSA-768 = 1230186684530117755130494958384962720772853569595334792197322452151726400507263657518745202199786469389956474942774063845925192557326303453731548268507917026122142913461670429214311602221240479274737794080665351419597459856902143413
Η παραγοντοποίησή του ήταν:
RSA-768 = 33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489 × 36746043666799590428244633799627952632279158164343087642676032283815739666511279233373417143396810270092798736308917
Για να βρεθεί το παραπάνω αποτέλεσμα, χρειάστηκαν πολλαπλοί ερευνητές και εκατοντάδες υπολογιστές να εργάζονται για 2 χρόνια.
Αν ένας μονοπύρηνος AMD Opteron 2,2GHz επιχειρούσε να κάνει όλες αυτές τις πράξεις, θα χρειαζόταν κυριολεκτικά 2.000 χρόνια.
Το διαβόητο ransomware cryptolocker χρησιμοποιεί κρυπτογράφηση δεδομένων RSA-2048 - γι' αυτό και όποιος το κόλλησε, η μόνη λύση ήταν να πληρώσει, αν ήθελε πίσω τα δεδομένα του.
Χρειάστηκαν οι εντατικές προσπάθειες από τρεις διαφορετικές εταιρείες ασφαλείας για να εντοπίσουν το ιδιωτικό κλειδί που τελικά επέτρεψε την αποκρυπτογράφηση δωρεάν.
Η σημασία των τυχαίων αριθμών στην κρυπτογράφηση δεδομένων
Στην κρυπτογράφηση δεδομένων RSA είναι εξαιρετικά σημαντικό οι πρώτοι αριθμοί που θα παραχθούν να είναι πραγματικά τυχαίοι.
Το ίδιο ισχύει και για τα κλειδιά σε αλγόριθμους symmetric key, όπως ο AES-128, και σε όλους πρακτικά τους αλγορίθμους κρυπτογράφησης.
Γιατί όμως είναι τόσο μεγάλο ζήτημα η τυχαιότητα?
Υπολογιστές, ντετερμινισμός, και η δυσκολία του τυχαίου
Ο υπολογιστής είναι ένα ντετερμινιστικό σύστημα. Αυτό σημαίνει πως αν του κάνουμε την ίδια ερώτηση, όσες φορές κι αν του την κάνουμε, θα έχει πάντοτε την ίδια απάντηση.
Αυτό είναι πρακτικό για την καθημερινή χρήση του υπολογιστή - κανείς δεν θα ήθελε να έκανε διπλό κλικ στο word και να άνοιγε στη θέση του ένα τυχαίο, άσχετο πρόγραμμα.
Οι υπολογιστές είναι προγραμματισμένοι έτσι ώστε να μην είναι τίποτα τυχαίο, ώστε να ακολουθούν πάντα τις οδηγίες, τους αλγόριθμους των προγραμμάτων.
Όσον αφορά την κρυπτογραφία, όμως, αυτή η μέθοδος λειτουργίας είναι καταστροφική.
Το πρόβλημα είναι πως ο υπολογιστής δεν μπορεί να παράγει τίποτα από το μηδέν.
Μπορεί να πάρει έναν αριθμό και να τον μετασχηματίσει. Να τον περάσει από έναν μακρύ και περίπλοκο αλγόριθμο, έτσι ώστε στο τέλος να είναι ένας εντελώς διαφορετικός αριθμός.
Το θέμα όμως είναι πως ο ίδιος αρχικός αριθμός θα δίνει πάντοτε το ίδιο τελικό αποτέλεσμα. Ο αλγόριθμος είναι ένας, δεν αλλάζει, όσο περίπλοκος κι αν είναι. Οι αριθμοί που παράγονται, λοιπόν, δεν είναι πραγματικά τυχαίοι. Είναι ψευδοτυχαίοι (pseudo-random).
Ο μόνος τρόπος να επιτευχθεί πραγματική τυχαιότητα είναι ο αρχικός αριθμός που θα δοθεί στον υπολογιστή για να μετασχηματίσει, να είναι εκείνος πραγματικά τυχαίος.
Κάποια προγράμματα, όπως το Truecrypt χρησιμοποιούν δεδομένα από την κίνηση του ποντικιού από τον χρήστη.
Το HotBits, τμήμα του Ελβετικού site Fournilab, χρησιμοποιεί τη ραδιενεργό διάσπαση ενός ραδιενεργού υλικού, που είναι απρόβλεπτο το πότε θα συμβεί.
Στο Random.org - το οποίο χρησιμοποιούμε και στο PCsteps για να βρούμε τους τυχαίους νικητές του εκάστοτε διαγωνισμού - μετρούν τον ατμοσφαιρικό θόρυβο, χρησιμοποιώντας τα παράσιτα ενός ραδιοφώνου.
Στο Lavarand, όσο λειτουργούσε, χρησιμοποιούσαν lava lamps.
Γενικά, πάντως, η παραγωγή τυχαίων αριθμών στους υπολογιστές είναι κάτι που χρειάζεται σοβαρή μελέτη από τον σχεδιαστή ενός συστήματος.
Γιατί είναι τόσο απαραίτητη η τυχαιότητα στην κρυπτογραφία
Αναφέραμε πως ο αλγόριθμος AES παράγει ένα τυχαίο κλειδί 128 bit, που μπορεί να έχει πάνω από 300.000.000.000.000.000.000.000.000.000.000.000 πιθανούς συνδυασμούς.
Αν όμως τα δεδομένα τα οποία επεξεργάζεται ο αλγόριθμος για να δημιουργήσει το κάθε κλειδί δεν είναι πραγματικά τυχαία, τότε ούτε και τα τελικά κλειδιά θα είναι τυχαία. Οι πιθανοί συνδυασμοί μπορεί να είναι σημαντικά λιγότεροι, μειώνοντας την ασφάλεια ολόκληρου του συστήματος.
Ακόμα χειρότερα, αν τα δεδομένα δεν είναι πραγματικά τυχαία, μπορεί κάποιος να αναλύσει έναν αλγόριθμο στο βαθμό που να καταλάβει τη λειτουργία του, και έτσι να μπορεί να προβλέψει ποιο θα είναι το επόμενο αποτέλεσμα που θα δώσει.
Γιατί υπάρχουν ακόμα hacker?
Θεμελιώσαμε πως τα σύγχρονα πρωτόκολλα για την κρυπτογράφηση δεδομένων είναι αδύνατον να σπάσουν.
Άρα, λοιπόν, γιατί δεν είναι όλα τα συστήματα απαραβίαστα? Γιατί ακόμα και δίκτυα όπως του Πενταγώνου, της Apple, του Twitter, και των New York Times πέφτουν θύματα hacker?
Δείτε το άρθρο μας σχετικά με το Spear Phishing, την πιο επικίνδυνη επίθεση που μπορεί να παραβιάσει ακόμα και το πιο ασφαλές σύστημα στον κόσμο, γιατί χτυπάει στον πιο αδύναμο κρίκο: τον άνθρωπο.
Δείτε και το σχετικό comic strip του XKCD.
Γενικά, υπάρχουν ασύγκριτα πιο εύκολοι τρόποι για τους hacker ώστε να αποκτήσουν τις πληροφορίες που θέλουν από το να προσπαθήσουν να σπάσουν την κρυπτογράφηση δεδομένων.
Είναι λοιπόν ζωτικής σημασίας να ακολουθούμε τις αρχές της ηλεκτρονικής ασφάλειας. Γιατί οι καλύτεροι αλγόριθμοι κρυπτογράφησης στον κόσμο δεν θα μας βοηθήσουν σε τίποτα αν κολλήσουμε έναν keylogger που διαβάζει όλα όσα γράφουμε στο πληκτρολόγιο.
Έχετε απορίες σχετικά με την κρυπτογράφηση δεδομένων?
Η κρυπτογράφηση δεδομένων είναι ένα θέμα που οι ειδικοί σπουδάζουν χρόνια για να κατανοήσουν, και μια απλή δημοσίευση 4.900 λέξεων δεν κάνει ειδικούς ούτε εμάς, ούτε και εσάς.
Ελπίζουμε πάντως να ανοίξαμε ένα έστω μικρό παράθυρο στο πως λειτουργούν τα συστήματα που κρατούν ασφαλείς τις πληροφορίες μας, και μας επιτρέπουν να επικοινωνήσουμε ιδιωτικά, να κάνουμε αγορές μέσω Internet, και ασφαλείς συναλλαγές στο ebanking.
Αν έχετε περισσότερες απορίες για την κρυπτογράφηση δεδομένων, γράψτε μας στα σχόλια.
Το κανάλι του PCsteps στο YouTube






Υποστηρίξτε τη λειτουργία του PCsteps
Θέλετε να υποστηρίξετε το PCsteps στη λειτουργία του, για να δημοσιεύουμε καθημερινά υψηλής ποιότητας οδηγούς και βίντεο σχετικά με την τεχνολογία?
Μπορείτε να κάνετε ένα like στη σελίδα μας στο Facebook, να μοιραστείτε τον οδηγό με τους φίλους σας, και να επιλέξετε τις φιλικές μας επιχειρήσεις για τις ηλεκτρονικές σας αγορές, από τους παρακάτω συνδέσμους:
- Pigogo.gr Επιστροφή χρημάτων σε κάθε σου online αγορά από 450+ επώνυμα ηλεκτρονικά καταστήματα σε όλη την Ελλάδα, με μία δωρεάν εγγραφή!
- E-shop.gr
- E-Lenovo
- Media Markt
- Public
Με κάθε σας αγορά, και χωρίς να χρεώνεστε τίποτα επιπλέον, το site μας θα παίρνει μια πολύ μικρή προμήθεια, η οποία είναι σημαντική βοήθεια για την κάλυψη των λειτουργικών εξόδων και τις αμοιβές των συνεργατών.
Αν προτιμάτε αγορές από την Κίνα, για να πετύχετε καλύτερες τιμές, συνεργαζόμαστε με τα μεγαλύτερα κινέζικα e-shop:
Δείτε τι να προσέχετε στις αγορές από Κίνα για να αποφύγετε το τελωνείο.
Για την πλήρη προστασία όλων σας των συσκευών με Windows, Android, iOS, και MacOS, το PCsteps εμπιστεύεται, χρησιμοποιεί, και προτείνει τα προϊόντα ασφαλείας της Bitdefender.
Μάλιστα, μπορείτε σε αποκλειστικότητα να δοκιμάσετε το Bitdefender Internet Security δωρεάν για 90 ημέρες.
Καταπληκτικο κειμενο.Θελει λιγο χρονο να συνελθω με τοσες πληροφοριες που ρουφηξε ο εγκεφαλος μου....!!Συνεχισε την καταπληκτικη δουλεια Αγγελε...!!
Και να θυμάσαι πως είμαι απόφοιτος Λυκείου, δεν έχω σπουδάσει. Τα μισά μαθηματικά στο άρθρο έκατσα να τα μάθω καθώς το έγραφα 😉
Κι εγω σπουδαζω και μαλιστα σε καλη σχολη ομως πραγματικα δεν ξερω τι με τραβαει.εκτος απο το να ειμαι σε εναν υπολογιστη δεν βρισκω κατι αλλο που να μου αρεσει.Η σχολη καμια σχεση με υπολογιστες.Οργανωση επιχειρησεων.Κατι ατομα σαν κι εσενα δινουν ελπιδα σε εμας τους καινουργιους.Και μαλιστα η δουλεια σου ειναι καταπληκτικη.Απο τις 10 ωρες ας πουμε που θα καθομαι στον υπολογιστη τις 4-5 θα βλεπω το site σου.Και τωρα που το θυμηθηκα εχεις καποιο λινκ που να ειναι μαζεμενα ολα??εννοω τα παντα περιεκτικα. πολλες φορες ενω αυτο που ψαχνω υπαρχει στο site δεν μπορω να το βρω....!!
Πρέπει να βρω χρόνο να προγραμματίσω ένα Index. Το έχω στο πρόγραμμα, αλλά οι δημοσιεύσεις προέχουν. Ελπίζω πως θα το προλάβω μέχρι το τέλος της χρονιάς.
Καταπληκτική δουλειά. Από μαθηματικά δεν τα πάω καθόλου καλά. Προβλέπω να μην μου χρειαστούν και τόσο, γιατί αλλιώς ας ξεχάσω να γίνω τεχνικός υπολογιστών. Αν και στην Ελλάδα δεν χρειάζονται να ξέρεις και πολλά για μια δουλειά 😉 (αν και για το τελευταίο δεν έπρεπε να χαιρόμαστε).
Η αλήθεια είναι πως ένας απλός τεχνικός υπολογιστών δεν χρειάζεται καθόλου μαθηματικά. Εφόσον δεν σκοπεύεις να γίνεις προγραμματιστής, είσαι μια χαρά.
Ευχαριστώ για την απάντηση. Συνέχισε την καταπληκτική δουλειά σου!
Άγγελε πρώτα απο όλα συγχαρητήρια για την δουλεια που εχεις κανει με το site..κυριολεκτικά έχω κολλήσει..επειδή μετακινούμαι συχνα και δεν γίνεται να εχω παντού internet αντιγραφω στο office 2013 οποια αρθα με ενδιαφερουν ωστε να μπορώ να τα διαβαζω..όμως έχω ενα προβληματάκι..καποια αρθα,οπως το παραπανω,οταν τα κανω επικολληση στο word δεν μου εμφανιζει τις εικονες..τι μπορει να φταιει..σε ευχαριστώ για το χρονο σου...
Δεν έχουν καμία διαφορά τα άρθρα μεταξύ τους, Γιώργο. Ίσως σε πιο μεγάλα άρθρα με περισσότερες φωτογραφίες χρειάζεται απλά να περιμένεις περισσότερη ώρα για να αντιγραφούν.
Ευχαριστώ για την απάντηση.Μάλλον θα τα κατεβάζω με το Bullzip σε pdf..συνέχισε να κάνεις αυτό που αγαπάς..το κάνεις άψογα..και πάλι μπράβο..!!!
Είναι μαθητής Γυμνασίου. ΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ ΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ ΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ ΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ
2 πράγματα δεν κατάλαβα:
1. Πώς βρίσκω το φ(n)
2. Ποια είναι η τιμή του m
http://i.imgur.com/nXbhqgA.png
http://i.imgur.com/C8wZ3a5.png
Πόσο χρόνο θα πάρει για να σπάσει τον aes128 αυτό: http://gr.pcmag.com/exascale-supercomputer/17994/feature/exascale-supercomputer-o-protos-pou-tha-xeperasei / https://en.wikipedia.org/wiki/Exascale_computing
Το άρθρο είναι από τα καλύτερά σας, πραγματικά ΕΞΑΙΡΕΤΙΚΟ. Όμως δεν κατάλαβα, εκτός από την μέθοδο του (spear) phising, δεν υπάρχει κανένας άλλος τρόπος να μολυνθεί ένας υπολογιστής, ιστοσελίδα κτλ. που χρησιμοποιεί κρυπτογράφηση; Πώς γίνεται αυτό;
Με μερικές χιλιάδες τρόπους μπορεί να μολυνθεί ένας υπολογιστής, που ακριβώς διάβασες ότι υπάρχει μόνο αυτός ο τρόπος;
Βασικά στο άρθρο δεν είπατε ότι είναι αδύνατο να παραβιαστούν τα σύγχρονα πρωτόκολλα κρυπτογράφησης; Και ότι τελικά ο άνθρωπος είναι ο πιο αδύναμος κρίκος;
Τα πρωτόκολλα κρυπτογράφησης είναι προς το παρόν αδύνατον να παραβιαστούν, όμως σε ένα ολόκληρο σύστημα υπάρχουν συχνά κενά ασφαλείας ανεξάρτητα της κρυπτογράφησης.
Σε κάθε περίπτωση όμως ο άνθρωπος είναι όντως ο πιο αδύναμος κρίκος.
Τέλειο άρθρο, μου δημιουργήθηκε όμως μία απορία. Γιατί κάποια site ενώ έχουν https: δεν χρησιμοποιούν digital certificate από κάποια digital authority;
https μπορεί να έχουν και sites με untrusted ssl certificates. Με άλλα λόγια δημιουργούν στον server τους ένα certificate.
Α, μάλιστα, κατάλαβα. Δηλαδή η κρυπτογράφηση δεν καλύπτει τα πάντα.
Και 10 χρόνια να διαβάζω μαθηματικά , άσε που δεν είμαι σε θέση να το κάνω , ούτε στο ελάχιστο δεν θα μπορέσω να γράψω ή να διδάξω τα μαθηματικά αυτά . Απλά μένω άφωνος .
Φίλε είσαι αυθεντία !
Οι ψευδοτυχαίοι αριθμοί πώς ακριβώς παράγονται από διάφορα προγράμματα (excel, γλώσσες προγραμματισμού) που δεν έχουν πρόσβαση σε πραγματικά τυχαία δεδομένα;
Γι' αυτό είναι ψευδοτυχαίοι. Τρέχουν απλά έναν αλγόριθμο που παράγει τυχαίους αριθμούς, αλλά δεν είναι 100% τυχαίοι. Σε εφαρμογές εκτός της κρυπτογραφίας συνήθως η τυχαιότητα δεν είναι τόσο ζωτικής σημασίας.
Πάντως και σε προγράμματα του υπολογιστή (χωρίς πρόσβαση σε πραγματικά τυχαία δεδομένα) υπάρχει δυνατότητα να παραχθούν αρκετά τυχαίοι αριθμοί, όπως με τα χιλιοστά του δευτερολέπτου του ρολογιού, με την κίνηση του ποντικιού (αυτό μάλλον το χρησιμοποιεί και το reCAPTCHA της Google: http://www.google.com/recaptcha), την χρήση της μνήμης και άλλα.
Γιατι οι 2 τυχαιοι αριθμοι που θα παραχθουν πρεπει να ειναι οπωσδηποτε πρωτοι?? Επισης, οι ιστοσελιδες στο internet δεν χρησιμοποιουν τις εντολες της javascript για να παραγουν τυχαιους αριθμους??
Έχετε κάνει ένα τυπογραφικό λάθος. Γράφετε: ΜΚΔ(120,350)=10
ΜΚΔ(130,350)=50. Μήπως εννοείτε τον αριθμό 150;
Το 150 δεν διαιρείται ακριβώς ούτε με το 120 ούτε με το 130. Ο Μέγιστος Κοινός Διαιρέτης πρέπει να είναι κοινός και στους δύο αριθμούς, και φυσικά είναι αδύνατον να είναι μεγαλύτερος από έναν από τους δύο αριθμούς.
Όταν όμως η ανάγκη για ασφάλεια είναι αρκετά μεγάλη, αυτοί οι "αρκετά τυχαίοι" αριθμοί δεν είναι αρκετοί, γι' αυτό καταφεύγουν σε τόσο περίπλοκες λύσεις προκειμένου να εξασφαλίσουν την όσο το δυνατόν πλήρη τυχαιότητα.
Αντί για 130 -ΜΚΔ(->130<-,350)=5- 150. Το 130 δεν διαιρείτε ακριβώς με το 50
Όσοι συμμετείχαν στη "μάχη" εναντίον του Crypto Locker. Δεν μπορούσαν να πολεμήσουν τους χακερς σαν χακερς για να γλυτώσουν χρόνο;
Ναι, σωστά, νόμιζα πως έλεγες για το αποτέλεσμα.
Το "να πολεμήσουν τους χακερς σαν χακερς" δεν σημαίνει τίποτα, δεν είμαι σίγουρος τι εννοείς.
Λογικά έκαναν το καλύτερο που μπορούσαν σαν επαγγελματίες, με τα μέσα, τη γνώση, και τις πληροφορίες που είχαν στη διάθεσή τους.
Αν δεν είναι πρώτοι, η εφαρμογή της συνάρτησης Euler στο n=p*q θα παρέμενε φ(n) = φ(p)*φ(q), δεν θα ίσχυε το φ(n)=(p-1)*(q-1) που είναι μία και μοναδική τιμή.
Ανάμεσα σε δύο μη-πρώτους αριθμούς x και y είναι εύκολο να ισχύει φ(x)=φ(y). Άρα θα υπήρχαν πολλά ζεύγη αριθμών που θα έδιναν το ίδιο φ(n).
Από τη στιγμή που το φ(n) χρησιμοποιείται για την παραγωγή του private key από το public key, αν μπορεί να παραχθεί από πολλούς διαφορετικούς συνδυασμούς αριθμών, όλη η ασφάλεια θα έφευγε από το παράθυρο.
Είναι ζωτικής σημασίας το φ(n) να είναι ένας μοναδικός αριθμός, και με αρκετά μεγάλους πρώτους αριθμούς είναι αδύνατον να βρεθεί από κάποιον τρίτο.
Εδώ θα βρεις ένα ολόκληρο επιστημονικό paper που εξηγεί γιατί το math.random της JavaScript δεν είναι ασφαλές: http://landing2.trusteer.com/sites/default/files/Temporary_User_Tracking_in_Major_Browsers.pdf
Παρ' όλη τη ζαλάδα που μου προκάλεσες με το άρθρο σου (το οποίο έχασα κάμποσες φορές ενώ μερικές γύρισα επίτηδες προς τα πίσω), πιστεύω ότι ήταν πολύ καλό στο να πάρουμε μία γεύση τι παίζει με όλα αυτά τα συστήματα !!!!
Για άλλη μία φορά τιωδυπφθν (κωδικοποίηση του Ευχαριστώ (+2 πλήκτρα δεξιά) )
''Σήμερα, κάθε κρυπτογράφηση δεδομένων βασίζεται σε υπολογιστές.
Πολύ απλά, όποιον αλγόριθμο κι αν επινοήσει ο άνθρωπος, όσο περίπλοκος κι αν είναι, είναι υπερβολικά εύκολο να τον σπάσει ένας κατάλληλα προγραμματισμένος υπολογιστής.''.....αυτο το αποσμασμα ξεχωρισα αγαπητε συντακτη του αρθρου σας να σας παρουσιασω έναν απο πολλους αλγοριθμους που εχω επινοησει,να σας δειξω οτι δεν ειναι υπερβολικα ευκολο να σπασει,ειναι υπερβολικα αδυνατον.σας τον παρουσιαζω και μην σβησετε παρακαλω το σχολιο αυτο όπως εκαναν αλλοι...ευχαριστω....ο Μπομπ εστειλε στην αλις το παρακατω μηνυμα,ομως το κλεψαν επιδεξεια απο την αλις.ο Μπομπ καθυσηχασε την αλις να μην ανησυχει διοτι οποιος και να το εκλεψε δεν θα το ΄΄διαβασει'' ο,τι κι αν κανει.αυτο ειναι
27222120353718 2532 1661 501-1033-301-7160 55-101 1944 402-6958353788 653624 1829129995-201
Το ότι ισχυρίζεσαι πως είναι αδύνατον, δεν σημαίνει απολύτως τίποτα. Ο καθένας μπορεί να ισχυρίζεται ό,τι θέλει.
Φέρε κάποιον ειδικό στην κρυπτογραφία που να επιβεβαιώνει αυτό που ισχυρίζεσαι, και μόνο έτσι θα επιβεβαιωθούν τα λεγόμενά σου.
Ειδάλλως, είναι λόγια του αέρα, και δεν έχουν την παραμικρή αξία.
αγαπητε φιλε γνωριζοντας οτι δεν εισαι ειδικος να αξιολογησεις τον αλγοριθμο που δημοσιευσα, απλα σε επιπεδο σχολιασμου απαντησα και απαντω και για στερνη φορα σημερα.1)το αρθρο σου το διαβασα και ειναι τελειο και σωστα πληροφορημενο.2)εχεις δικιο σημερα στο διαδυκτιο θα βρουμε πολλους να ισχυριζονται διαφορα,κι αν απλοικα δεις την δημσιευση μου η πρωτη εντυπωση αυτη ειναι που μπορει να σχηματησει καποιος.ξεχασες οτι υπαρχουν και εξαιρεσεις στην ζωη ομως.θα μπορουσα να αποδειξω αυτο που ισχυριζομαι ενωπιον οποιου ειδικου παρουσιαζοντας το κλειδι του αλγοριθμου μου.ο ειδικος ομως θα μπορεσει να αποδειξει οτι κανω λαθος εγω;;;3)εχω καταλαβει πως λειτουργει η κρυπτογραφια....δεν με ενδιαφερει αν ανατρεπω τις αρχες της συγχρονης κρυπτογραφιας,με ενδιαφερει οτι εχω ανακαλυψει μετα απο 35 και πλεον χρονια βαθειας ερευνας,τροπους που ο ''μπομ και η αλις''μπορουν να επικοινωνουν χωρις να φοβουνται κανενεναν και τιποτα!!!!!!!!!!!!!ακομα κι αν υποκλαπει το μηνυμα αξιοτιμε φιλε.και αυτοι που σβηνουν τις δημσιευσεις μου,ειναι γιατι με ελαφρια καρδια τις θεωρουν''ουτοπικα λειψανα''.4)θεωρεις ο,τι ηταν να ακαλυφτει στην κρυπτογραφια εγεινε και τερμα;;;δεν μπορουν να υπαρξουν αλλες ανακαλυψεις;;;αν θεωρεις οτι η κρυπτογραφια ειναι παντοδυναμη σημερα,γιατι υπαρχουν τουλαχιστον 10 κωδικες που παραμενουν ασπαστοι;;;ανθρωποι τους εφτιαξαν το ξερεις!!!μηπως αυτοι ανακαλυψαν κατι,μια τεχνικη ως τωρα αγνωστη;;;5)φιλε η''γνωση''που μπορει ναχει ενας υπολογιστης-ειναι αυτη που του ''βαζει''ο ανθρωπος.αυτη η''γνωση''ειναι αντιστοιχη της οποιας γνωσης κατεχει ο ανθρωπος που την ''εβαλε''!!!γιαυτο παντα θα υπαρχει καποιος που μπορει να ξερει κατι παραπανω,και οσο ταχυτατος κι αν γινει ο υπολογιστης... η ''γνωση''που ειναι μεσα του ειναι ζωτικης σημασιας....τελος...και επειδη ακομα δεν εχω τα''κονε''να βρω ειδικους ασε αν θες τις απαντησεις μου να ζησουν,και ας χλευαστω απο το συνολο....ας κρινει το μελλον.......αν ειμαι ελεφαντας η οχι.............καλη συνεχεια στον υπεροχο ιστοχωρο σου.φανατικος αναγνωστης σου.....ειρηνη μεταξυ μας!!!!!!!!!!!!!
Ωραίο το άρθρο αν και απευθύνεται σε σχετικά advanced γνώστες. Κάνεις πολύ καλή εξήγηση πάντως και για κάποιον που είναι αρχάριος. Μια μικρή συμβουλή: καλό θα είναι να μπει στο άρθρο ότι χρησιμοποιούνται μόνο πρώτοι αριθμοί και όχι σύνθετοι είναι για να αποφύγουμε το λεγόμενο collision (παραγωγή του ίδιου ciphertext με το διαφορετικό κλειδί ή παραγωγή ίδιου κλειδιού με διαφορετικούς αριθμούς). Εύγε πάντως!
Μπράβο Άγγελε. Ως φοιτητής Πληροφορικής θα σου πω πως τα εξηγείς πάρα πολύ ωραία.