Αυτό που μας προσφέρει το Bitcoin είναι μια σκληρή υπόσχεση: το πρόγραμμα θα εκτελεστεί ακριβώς όπως έχει οριστεί.
Ανδρέας Μ. Αντωνόπουλος
Κρυπτογραφία Δημόσιου/Ιδιωτικού Κλειδιού
Κρυπτογραφία είναι η πρακτική του να μετατρέπεις πληροφορίες σε ένα μυστικό που μόνο οι σωστοί άνθρωποι μπορούν να διαβάσουν.
- Κρυπτογράφηση είναι η διαδικασία μετατροπής πληροφοριών σε κωδικοποιημένη μορφή ώστε μόνο κάποιος με το σωστό κλειδί να μπορεί να τις διαβάσει.
- Αποκρυπτογράφηση είναι η διαδικασία μετατροπής αυτών των κωδικοποιημένων πληροφοριών πίσω σε κάτι αναγνώσιμο.
Στην παραδοσιακή κρυπτογραφία, δύο άνθρωποι που θέλουν να επικοινωνήσουν ιδιωτικά πρέπει πρώτα να μοιραστούν το ίδιο μυστικό κλειδί, παρόμοιο με έναν κοινόχρηστο κωδικό πρόσβασης. Ο ένας χρησιμοποιεί αυτό το κλειδί για να κρυπτογραφήσει το μήνυμα πριν το στείλει, και ο άλλος χρησιμοποιεί το ίδιο κλειδί για να το αποκρυπτογραφήσει και να το διαβάσει.
Το πρόβλημα με αυτό το σύστημα είναι ότι και οι δύο πρέπει ήδη να μοιράζονται το μυστικό κλειδί. Αν κάποιος άλλος αποκτήσει πρόσβαση σε αυτό το κλειδί, μπορεί να διαβάσει οποιοδήποτε μήνυμα υποκλαπεί.
Το Bitcoin λύνει αυτό το πρόβλημα χρησιμοποιώντας μια διαφορετική προσέγγιση που ονομάζεται κρυπτογραφία δημόσιου κλειδιού, όπου οι χρήστες δεν χρειάζεται να μοιραστούν μυστικά κλειδιά εκ των προτέρων.
Η κρυπτογραφία δημόσιου/ιδιωτικού κλειδιού λύνει το πρόβλημα της ανταλλαγής μυστικών. Αντί να μοιράζεται ένας κωδικός πρόσβασης, κάθε άτομο έχει δύο κλειδιά: ένα δημόσιο κλειδί και ένα ιδιωτικό κλειδί.
- Το δημόσιο κλειδί μπορεί να κοινοποιηθεί σε οποιονδήποτε.
- Το ιδιωτικό κλειδί πρέπει πάντα να παραμένει μυστικό.
Αν ο Γιάννης θέλει να στείλει κάτι στην Άννα, μπορεί να χρησιμοποιήσει το δημόσιο κλειδί της Άννας. Μόνο η Άννα μπορεί να το ξεκλειδώσει χρησιμοποιώντας το ιδιωτικό της κλειδί. Ακόμα κι αν κάποιος υποκλέψει το μήνυμα, δεν μπορεί να το διαβάσει ή να το χρησιμοποιήσει χωρίς το ιδιωτικό κλειδί.
Στο Bitcoin, αυτό το σύστημα χρησιμοποιείται για τη δημιουργία ψηφιακών υπογραφών. Μια ψηφιακή υπογραφή αποδεικνύει ότι ο κάτοχος ενός ιδιωτικού κλειδιού ενέκρινε μια συναλλαγή, παρόμοια με το να υπογράφεις το όνομά σου σε ένα έγγραφο. Αυτό είναι που επιτρέπει οι συναλλαγές Bitcoin να είναι ασφαλείς και επαληθεύσιμες χωρίς να χρειάζεται να εμπιστευτούμε κάποιον τρίτο.
Οι συναλλαγές Bitcoin περιλαμβάνουν τη μεταφορά κυριότητας bitcoin από μία διεύθυνση σε μια άλλη.
Η κρυπτογράφηση χρησιμοποιείται για να διασφαλίσει ότι μόνο ο πραγματικός κάτοχος του bitcoin έχει την εξουσία να στείλει τα χρήματά του σε κάποιον άλλον. Εξασφαλίζει ότι η περιουσία τους προστατεύεται από κακόβουλους παράγοντες.
Ως επιπλέον μέτρο προστασίας, κάθε συναλλαγή Bitcoin αποκτά αυτόματα μια ΜΟΝΑΔΙΚΗ ψηφιακή υπογραφή. Αυτή η μοναδική ψηφιακή υπογραφή υποστηρίζεται από τεχνολογία που δεν μπορεί να παραβιαστεί και βοηθά το δίκτυο να επαληθεύσει ότι ο πραγματικός κάτοχος του bitcoin, και όχι κάποιος άλλος, τα έχει στείλει.
Κάθε χρήστης έχει δύο κλειδιά: ένα ιδιωτικό κλειδί, το οποίο κρατείται μυστικό, και ένα δημόσιο κλειδί που μπορεί να μοιραστεί με άλλους. Το ιδιωτικό κλειδί λειτουργεί ως μορφή ταυτοποίησης και απόδειξης κυριότητας, επιβεβαιώνοντας: «Αυτή η διεύθυνση ανήκει σε εμένα και έχω τον έλεγχο της.»
Πώς λειτουργεί μια συναλλαγή Bitcoin
- Δημιουργία της Συναλλαγής: Ένας χρήστης ξεκινά μια συναλλαγή Bitcoin καθορίζοντας λεπτομέρειες όπως η διεύθυνση του παραλήπτη και το ποσό bitcoin που θα σταλεί.
- Δημιουργία Ψηφιακής Υπογραφής: Ο αποστολέας δημιουργεί μια μοναδική ψηφιακή υπογραφή χρησιμοποιώντας το ιδιωτικό του κλειδί. Αυτή η υπογραφή είναι ένας μοναδικός κωδικός που επαληθεύει τη γνησιότητα της συναλλαγής.
- Μετάδοση της Συναλλαγής: Η υπογεγραμμένη συναλλαγή μεταδίδεται στο δίκτυο Bitcoin, δηλώνοντας την πρόθεση μεταφοράς κυριότητας bitcoin από τον αποστολέα στον παραλήπτη.
- Επαλήθευση στο Δίκτυο: Οι κόμβοι του δικτύου Bitcoin λαμβάνουν τη συναλλαγή και χρησιμοποιούν το δημόσιο κλειδί για να επαληθεύσουν τη γνησιότητα της υπογραφής της συναλλαγής. Ταυτόχρονα, χρησιμοποιούν το δημόσιο κλειδί για να επαληθεύσουν τη ψηφιακή υπογραφή.
- Επιβεβαίωση στο δίκτυο του Bitcoin: Αν η επαλήθευση είναι επιτυχής, η συναλλαγή θα προστεθεί στο καθολικό, το οποίο λειτουργεί ως ένα ασφαλές, διαφανές αρχείο όλων των συναλλαγών. Μόλις επιβεβαιωθεί, η κυριότητα του bitcoin μεταβιβάζεται επίσημα από τον αποστολέα στον παραλήπτη.
Η ψηφιακή υπογραφή, που δημιουργήθηκε με το ιδιωτικό κλειδί του αποστολέα, αποδεικνύει ότι η συναλλαγή εγκρίθηκε από τον κάτοχο του bitcoin. Το δίκτυο του Bitcoin μπορεί στη συνέχεια να επαληθεύσει αυτή την απόδειξη και να καταγράψει τη συναλλαγή.
Επεξήγηση Hashing
Παρακαλούμε μην τρομάζετε από τους τεχνικούς όρους και τα μαθηματικά που ακολουθούν. Καταλαβαίνουμε ότι δεν αγαπούν όλοι τα μαθηματικά, αλλά ίσως εκπλαγείτε και δείτε ότι ακόμα και οι πιο σύνθετες ιδέες μπορούν να κατανοηθούν με λίγη προσπάθεια.
Μια συνάρτηση είναι σαν μια μηχανή που παίρνει κάποιες πληροφορίες και τις μετατρέπει σε κάτι καινούργιο. Οι πληροφορίες που δίνεις στη συνάρτηση είναι το εισόδου. Οι νέες πληροφορίες που δημιουργεί η συνάρτηση είναι το αποτέλεσμα. Οι συναρτήσεις βοηθούν τους υπολογιστές να εκτελούν εργασίες και να λύνουν προβλήματα.
Τι είναι συνάρτηση;
Μια συνάρτηση είναι ένα σύνολο οδηγιών που παίρνει μια είσοδο και παράγει ένα αποτέλεσμα. Μπορείς να τη φανταστείς σαν μια συνταγή: ακολουθείς τα βήματα με συγκεκριμένα υλικά και πάντα καταλήγεις σε ένα προβλέψιμο αποτέλεσμα.
Στο Bitcoin, οι συναρτήσεις χρησιμοποιούνται για την επεξεργασία και επαλήθευση συναλλαγών. Όταν κάποιος στέλνει bitcoin, οι κρυπτογραφικές συναρτήσεις βοηθούν να ελεγχθεί ότι η συναλλαγή είναι έγκυρη, να επιβεβαιωθεί ότι ο αποστολέας έχει αρκετά χρήματα και να ενημερωθούν τα υπόλοιπα στο καθολικό του Bitcoin. Μόλις επαληθευτεί και προστεθεί σε ένα μπλοκ, η συναλλαγή γίνεται μέρος του μόνιμου αρχείου στο blockchain.
Τι είναι μια μονόδρομη συνάρτηση;
Μια μονόδρομη συνάρτηση είναι ένας ειδικός τύπος συνάρτησης που είναι εύκολο να υπολογιστεί προς μία κατεύθυνση αλλά εξαιρετικά δύσκολο να αντιστραφεί. Για παράδειγμα, το να ανακατέψεις υλικά σε ένα smoothie είναι εύκολο, αλλά δεν μπορείς να τα διαχωρίσεις ξανά στα αρχικά συστατικά.
Η ασφάλεια του Bitcoin βασίζεται σε μονόδρομες συναρτήσεις. Χρησιμοποιούνται στην κρυπτογραφία δημόσιου και ιδιωτικού κλειδιού, επιτρέποντας στους ανθρώπους να μοιράζονται ένα δημόσιο κλειδί ενώ κρατούν το ιδιωτικό κλειδί μυστικό. Ακόμα κι αν το δημόσιο κλειδί είναι ορατό, είναι αδύνατο να εξαχθεί το ιδιωτικό κλειδί από αυτό. Αυτό είναι που κάνει τις συναλλαγές Bitcoin ασφαλείς.
Τι είναι μια συνάρτηση κατακερματισμού (hash function);
Μια συνάρτηση κατακερματισμού είναι σαν μια μηχανή μυστικού κώδικα. Παίρνει ένα μήνυμα και το μετατρέπει σε έναν κώδικα.
Πώς λειτουργεί το Hashing στις συναλλαγές Bitcoin
Στο Bitcoin, κάθε συναλλαγή μετατρέπεται σε hash πριν προστεθεί στο blockchain. Ένα hash είναι ένα μοναδικό ψηφιακό αποτύπωμα της συναλλαγής. Αν κάποιος προσπαθήσει να αλλάξει ακόμα και ένα μικρό μέρος της συναλλαγής, το hash θα αλλάξει εντελώς. Αυτό κάνει εύκολο για το δίκτυο να εντοπίσει παραποίηση.
Ο ρόλος του Hashing στην ασφάλεια του Bitcoin
Το Hashing βοηθά στην προστασία του δικτύου Bitcoin κάνοντας τις συναλλαγές εύκολες στην επαλήθευση και αδύνατο να τροποποιηθούν αθόρυβα. Επειδή κάθε συναλλαγή έχει το δικό της μοναδικό hash, το δίκτυο μπορεί γρήγορα να εντοπίσει αν κάτι έχει αλλοιωθεί.
Μια συνάρτηση κατακερματισμού παίρνει δεδομένα και τα μετατρέπει σε μια σταθερού μήκους ακολουθία αριθμών και γραμμάτων που ονομάζεται hash. Η ίδια είσοδος θα παράγει πάντα το ίδιο hash, αλλά ακόμα και μια μικρή αλλαγή στην είσοδο θα δημιουργήσει ένα εντελώς διαφορετικό αποτέλεσμα. Αυτή η ιδιότητα επιτρέπει στους υπολογιστές να ελέγχουν ότι τα δεδομένα δεν έχουν αλλάξει.
Το Hashing είναι σαν να δημιουργείς ένα αποτύπωμα για ψηφιακά δεδομένα. Είναι η διαδικασία κατά την οποία ένα ψηφιακό μήνυμα μετατρέπεται σε έναν κώδικα σταθερού μήκους, που λειτουργεί ως μοναδικός αναγνωριστικός. Όπως ένα αποτύπωμα μπορεί να ταυτοποιήσει ένα άτομο, έτσι και ένα hash μπορεί να ταυτοποιήσει ένα ψηφιακό μήνυμα.
Το αποτέλεσμα, ή hash, έχει πάντα το ίδιο μήκος, ανεξάρτητα από το πόσο μεγάλες ήταν οι αρχικές πληροφορίες. Το Bitcoin χρησιμοποιεί μερικούς συγκεκριμένους τύπους συνάρτησης κατακερματισμού που ονομάζονται SHA-256 και RIPEMD160.
Μερικά παραδείγματα ακολουθούν:
- Το SHA256 hash της συμβολοσειράς γειά σου κόσμε
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
- SHA256 hash της συμβολοσειράς γειά σου κόσμε.
7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87- Παρατήρησε ότι μια μικρή αλλαγή στην είσοδο αλλάζει εντελώς την έξοδο σε σύγκριση με την πρώτη
- SHA256 hash του αρχείου iso που μπορείς να κατεβάσεις Ubuntu 18.10
7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765- Αυτή η είσοδος είναι ένα τεράστιο αρχείο, αλλά η έξοδος παραμένει το ίδιο σταθερό μήκος
Μπορείς επίσης να σκεφτείς το hashing σαν μια παρτιτούρα που αποτυπώνει την ουσία ενός μουσικού κομματιού. Όπως μια παρτιτούρα είναι μια μοναδική αναπαράσταση μιας μελωδίας, έτσι και μια τιμή hash είναι μια μοναδική αναπαράσταση δεδομένων.
Συγκρίνοντας την παρτιτούρα ενός μουσικού κομματιού με την πραγματική εκτέλεση, ένας μουσικός μπορεί να διαπιστώσει αν η εκτέλεση είναι ακριβής. Παρομοίως, συγκρίνοντας την τιμή hash των ληφθέντων δεδομένων με την αρχική τιμή hash, μπορεί κανείς να διαπιστώσει αν τα δεδομένα έχουν αλλοιωθεί κατά τη μεταφορά.
Όπως μια μικρή απόκλιση σε μια μουσική εκτέλεση μπορεί να την κάνει να ακούγεται διαφορετική, έτσι και η παραμικρή αλλαγή στα αρχικά δεδομένα θα οδηγήσει σε διαφορετική τιμή hash. Αυτό κάνει το hashing ένα ισχυρό εργαλείο για τη διασφάλιση της ακεραιότητας και της αυθεντικότητας μιας συναλλαγής Bitcoin.
Η διαδικασία κωδικοποίησης του δημόσιου κλειδιού μέσω hashing χρησιμοποιείται για τη βελτίωση της ασφάλειας των πληροφοριών μετατρέποντάς τις σε μια σταθερού μήκους, μη αναγνώσιμη μορφή. Το Bitcoin χρησιμοποιεί τους αλγορίθμους SHA-256 και RIPEMD160 για να παράγει δημόσιες διευθύνσεις. Το αποτέλεσμα λειτουργεί ως μοναδικός αναγνωριστικός αριθμός για το δημόσιο κλειδί και βοηθά στη διασφάλιση της ακεραιότητας και της ασφάλειας των συναλλαγών που αποθηκεύονται στο καθολικό. Κρυπτογραφώντας τις πληροφορίες με αυτόν τον τρόπο, γίνεται πιο δύσκολο για μη εξουσιοδοτημένα άτομα να έχουν πρόσβαση και να τροποποιήσουν τα δεδομένα.
Ιδιότητες μιας συνάρτησης κατακερματισμού
- Ντετερμινιστική: Τα ίδια συστατικά πάντα παράγουν το ίδιο smoothie. Με τον ίδιο τρόπο, τα ίδια δεδομένα θα παράγουν πάντα το ίδιο hash.
- Αντίσταση στην προεικόνα: Αν έχεις μόνο το smoothie, δεν μπορείς να βρεις ακριβώς τα φρούτα που χρησιμοποιήθηκαν. Παρομοίως, αν έχεις μόνο ένα hash, δεν μπορείς να προσδιορίσεις τα αρχικά δεδομένα.
- Φαινόμενο χιονοστιβάδας: Αλλάζοντας ακόμη και ένα μικρό μέρος των συστατικών δημιουργείται ένα εντελώς διαφορετικό smoothie. Στο hashing, μια πολύ μικρή αλλαγή στα δεδομένα παράγει ένα εντελώς διαφορετικό hash.
- Αντίσταση σε συγκρούσεις: Είναι εξαιρετικά δύσκολο να βρεις δύο διαφορετικά σύνολα συστατικών που να παράγουν ακριβώς το ίδιο smoothie. Με τον ίδιο τρόπο, είναι εξαιρετικά απίθανο δύο διαφορετικά δεδομένα να παράγουν το ίδιο hash.
- Γρήγορη επαλήθευση: Η παρασκευή του smoothie είναι γρήγορη και είναι εύκολο να ελέγξεις ότι το αποτέλεσμα είναι smoothie. Οι συναρτήσεις hash υπολογίζονται γρήγορα και είναι εύκολο για οποιονδήποτε να τις επαληθεύσει.
Δραστηριότητα: Δημιούργησε SHA 256 Hash
Είσαι περίεργος για το πώς λειτουργεί το hashing; Σκάναρε τον QR κωδικό για να δημιουργήσεις άμεσα ένα SHA256 hash από οποιαδήποτε λέξη, πρόταση ή είσοδο επιλέξεις. Οι συναρτήσεις hash είναι σαν ψηφιακά δακτυλικά αποτυπώματα: είναι μονόδρομες, που σημαίνει ότι μόλις κάτι γίνει hash, δεν μπορεί να αντιστραφεί. Δοκίμασέ το και δες το μόνος σου!