Νομίσματα σε SHA256. Τι είναι ο αλγόριθμος κρυπτογράφησης Bitcoin; Αδυναμίες και δυνατά σημεία του αλγόριθμου κατακερματισμού Bitcoin

Η συνάρτηση κατακερματισμού SHA 256 αποτέλεσε τη βάση του πρώτου κρυπτονομίσματος στον κόσμο - το Bitcoin και πολλά altcoins. Γνωρίζατε ότι δημιουργήθηκε πολύ πριν από την εμφάνιση των κρυπτονομισμάτων και προοριζόταν για εντελώς διαφορετικούς σκοπούς; Σήμερα θα εξετάσουμε το ιστορικό του αλγορίθμου, την αρχή της λειτουργίας του, τα τρέχοντα προβλήματα και ποια κρυπτονομίσματα χρησιμοποιούν το SHA256.

Ιστορία

Το όνομα του αλγορίθμου SHA 256 είναι αρκτικόλεξο του αλγόριθμου ασφαλούς κατακερματισμού. Έτσι το ονόμασε ο προγραμματιστής - Υπηρεσία Εθνικής Ασφάλειας των ΗΠΑ. Ο αλγόριθμος είναι μια συνάρτηση κατακερματισμού. Αυτό σημαίνει ότι η είσοδος του είναι ένας όγκος δεδομένων αυθαίρετου μήκους και η έξοδος είναι ένα σύνολο χαρακτήρων σταθερού μήκους, που ονομάζεται κατακερματισμός.

Ένα από τα βασικά χαρακτηριστικά των συναρτήσεων κατακερματισμού κατακερματισμού είναι η μη αναστρεψιμότητα. Μπορούμε να λάβουμε τον κατακερματισμό περνώντας τα αρχικά δεδομένα μέσω της συνάρτησης, αλλά γνωρίζοντας τον κατακερματισμό, δεν θα μπορέσουμε να λάβουμε τα αρχικά δεδομένα. Χάρη σε αυτήν την ιδιότητα, η λειτουργία έχει γίνει ευρέως διαδεδομένη σε διάφορες υπηρεσίες και εφαρμογές όπου απαιτείται προστασία δεδομένων. Καθημερινά χρησιμοποιούμε τον αλγόριθμο SHA 256 όταν επισκεπτόμαστε τοποθεσίες στο Διαδίκτυο. Περιλαμβάνει πιστοποιητικό ασφαλείας SSL, το οποίο απαιτείται για τη δημιουργία ασφαλούς σύνδεσης με τον ιστότοπο.


Ο αλγόριθμος είναι μέρος της οικογένειας SHA-2, που αναπτύχθηκε με βάση το SHA-1, το οποίο εμφανίστηκε το 1995. Από την έναρξή του, το sha256 έχει δοκιμαστεί εκτενώς για τη δύναμή του χρησιμοποιώντας κρυπτανάλυση. Η κρυπτανάλυση ελέγχει την αντίσταση των συναρτήσεων κατακερματισμού σε δύο κύριους τύπους επιθέσεων:
  • Εύρεση συγκρούσεων - ανίχνευση πανομοιότυπων κατακερματισμών με διαφορετικές παραμέτρους εισόδου. Το ποσοστό επιτυχίας αυτής της επίθεσης θέτει σε κίνδυνο την ασφάλεια της ψηφιακής υπογραφής χρησιμοποιώντας τον τρέχοντα αλγόριθμο.
  • Η εύρεση μιας προεικόνας είναι η δυνατότητα αποκρυπτογράφησης του αρχικού μηνύματος χρησιμοποιώντας τον κατακερματισμό του. Αυτή η επίθεση θέτει σε κίνδυνο την ασφάλεια της αποθήκευσης των κατακερματισμών κωδικού πρόσβασης ελέγχου ταυτότητας.

Η ανάλυση δοκιμάστηκε για πρώτη φορά το 2003, αλλά τότε δεν βρέθηκαν τρωτά σημεία. Με το πέρασμα του χρόνου, η υπολογιστική ισχύς αναπτύχθηκε. Το 2008, βρέθηκαν συγκρούσεις για τις επαναλήψεις SHA-512 και SHA-256. Τον Σεπτέμβριο του ίδιου έτους, αναπτύχθηκε μια μέθοδος δημιουργίας συγκρούσεων για 31 επαναλήψεις του SHA256 και 27 επαναλήψεις του SHA-512.

Προφανώς, έχει έρθει η ώρα να αναπτυχθεί μια νέα λειτουργία ανθεκτική στα κρυπτογράφηση. Το 2012, η ​​NSA εφηύρε το SHA-3. Σταδιακά, ο ενημερωμένος αλγόριθμος θα εκτοπίσει τους λιγότερο ανθεκτικούς στην κρυπτογράφηση προκατόχους του.

Εξόρυξη στο SHA 256

Η νομοθεσία των ΗΠΑ επιτρέπει τη χρήση του SHA και παρόμοιων συναρτήσεων κατακερματισμού ως μέρος άλλων πρωτοκόλλων και αλγορίθμων σε ορισμένες ομοσπονδιακές μη Μυστικές εφαρμογές ασφάλειας πληροφοριών. Το SHA-2 μπορεί να χρησιμοποιηθεί από ιδιωτικούς και εμπορικούς οργανισμούς.

Δεν αποτελεί έκπληξη το γεγονός ότι χρησιμοποιήθηκε σε κρυπτονομίσματα. Οι εξορύκτες συγκεντρώνουν όλες τις συναλλαγές σε ένα μπλοκ και στη συνέχεια αρχίζουν να το κατακερματίζουν. Όταν βρεθεί μια τιμή κατακερματισμού που ταιριάζει με τους κανόνες του συστήματος, το μπλοκ θεωρείται έτοιμο να συνδεθεί στο τέλος της αλυσίδας μπλοκ. Το νέο μπλοκ θα βρεθεί από κάποιον που μπορεί να υπολογίσει τις τιμές κατακερματισμού πολύ γρήγορα. Η ταχύτητα των υπολογισμών εξαρτάται από την ισχύ του εξοπλισμού. Τρεις τύποι εξοπλισμού μπορούν να χρησιμοποιηθούν για την εξόρυξη Bitcoin:

  • CPU (κεντρική μονάδα επεξεργασίας);
  • GPU (κάρτες βίντεο);
  • ASIC (συσκευή ειδικής εφαρμογής).

Το δίκτυο Bitcoin είναι σχεδιασμένο με τέτοιο τρόπο ώστε κάθε νέο μπλοκ πρέπει να βρίσκεται μία φορά κάθε 10 λεπτά. Ο αριθμός των συμμετεχόντων στο δίκτυο αλλάζει συνεχώς, αλλά ο χρόνος πρέπει να παραμένει σταθερός. Για να διασφαλίσει ίσους χρόνους παραμονής, το σύστημα προσαρμόζει την υπολογιστική δυσκολία ανάλογα με τον αριθμό των ανθρακωρύχων. Τα κρυπτονομίσματα έχουν αποκτήσει δημοτικότητα πρόσφατα και ο αριθμός των miners έχει αυξηθεί δραματικά. Για να αποφευχθεί η πολύ γρήγορη εύρεση των μπλοκ, αυξήθηκε επίσης η πολυπλοκότητα των υπολογισμών.


Το Bitcoin άρχισε να εξορύσσεται σε επεξεργαστές. Στη συνέχεια, όταν η ισχύς τους έγινε ανεπαρκής, άλλαξαν σε κάρτες βίντεο. Σύντομα οι κάρτες βίντεο δεν μπορούσαν πλέον να αντεπεξέλθουν. Στη συνέχεια εφευρέθηκαν τα ASIC - ειδικές συσκευές σχεδιασμένες για υπολογισμούς χρησιμοποιώντας τον αλγόριθμο sha 256. Ένα ASIC είναι πολύ πιο ισχυρό και ενεργειακά αποδοτικό από πολλές κάρτες βίντεο.

Οι επιχειρηματίες ανθρακωρύχοι δημιουργούν τεράστιες φάρμες από ASIC. Εκτός από το υψηλό κόστος του ίδιου του εξοπλισμού, μια τέτοια φάρμα λαμβάνει λογαριασμούς ρεύματος πολλών δεκάδων χιλιάδων δολαρίων κάθε μήνα. Τώρα η εξόρυξη Bitcoin έχει νόημα μόνο σε τέτοιες βιομηχανικές φάρμες· ένας οικιακός υπολογιστής ή ακόμα και ένα αγρόκτημα με πολλές κάρτες βίντεο δεν θα είναι σε θέση να τις ανταγωνιστεί, ακόμη και να ανακτήσει την ηλεκτρική ενέργεια.

Ωστόσο, αυτό είναι εύκολο να υπολογιστεί. Υπάρχουν αριθμομηχανές για τον υπολογισμό της κερδοφορίας της εξόρυξης στο sha256. Για παράδειγμα, https://www.coinwarz.com/miningprofitability/sha-256. Εισαγάγετε το hashrate του εξοπλισμού σας (υπολογιστική ισχύς), την κατανάλωση ενέργειας και το κόστος του στη φόρμα, η υπηρεσία θα υπολογίσει το κέρδος σας.

Altcoins SHA-256

Ας δούμε τη λίστα και τη λίστα των κρυπτονομισμάτων που λειτουργούν στο sha 256.

Bitcoin Cash (BCH)

Χωρίστηκε από αυτήν την 1η Αυγούστου 2017. Το μέγεθος του μπλοκ στο κλασικό Bitcoin είναι 1 MB. Το δίκτυο έχει αναπτυχθεί τόσο πολύ που όλες οι συναλλαγές δεν μπορούν πλέον να χωρέσουν σε ένα μπλοκ. Αυτό οδήγησε στο σχηματισμό ουρών συναλλαγών και αύξηση των τελών για την πραγματοποίηση πληρωμών. Η κοινότητα αποφάσισε να εισαγάγει ένα νέο πρωτόκολλο, σύμφωνα με το οποίο το μπλοκ αυξήθηκε στα 2 MB, ορισμένες πληροφορίες άρχισαν να αποθηκεύονται εκτός του blockchain και το χρονικό πλαίσιο για τον επανυπολογισμό της πολυπλοκότητας μειώθηκε από δύο εβδομάδες σε μία ημέρα.

Namecoin (NMC)

Είναι ένα σύστημα αποθήκευσης και μετάδοσης συνδυασμών ονόματος-τιμής που βασίζεται στην τεχνολογία Bitcoin. Η πιο διάσημη εφαρμογή του είναι το σύστημα διανομής ονομάτων τομέα, το οποίο είναι ανεξάρτητο από το ICANN και ως εκ τούτου καθιστά αδύνατη την ανάκτηση τομέα. Το Namecoin κυκλοφόρησε το 2011, τρέχει σε λογισμικό εξόρυξης Bitcoin που προωθείται στον διακομιστή όπου εκτελείται το Namecoin.

DigiByte (DGB)

Ένα κρυπτονόμισμα που κυκλοφόρησε το 2013 με στόχο τη βελτίωση της απόδοσης του Bitcoin και του Litecoin. Διαφορές DigiByte:

  • Χαμηλή μεταβλητότητα επιτυγχάνεται λόγω του τεράστιου αριθμού εκδοθέντων νομισμάτων (έως 21 δισεκατομμύρια), γεγονός που εξασφαλίζει το χαμηλό κόστος και την ευκολία χρήσης τους στους υπολογισμούς.
  • Ταχύτερες συναλλαγές διπλασιάζοντας το μέγεθος του μπλοκ κάθε δύο χρόνια.
  • Χαμηλές προμήθειες ή καθόλου προμήθειες.
  • Η διαδικασία εξόρυξης χωρίζεται σε πέντε αλγόριθμους που σας επιτρέπουν να εξορύξετε νομίσματα ανεξάρτητα ο ένας από τον άλλο. Μπορείτε να χρησιμοποιήσετε ASIC για SHA-256 και Scrypt, κάρτες βίντεο για Groestl και Skein και επεξεργαστή για Qubit.

Ο αλγόριθμος SHA 256 είναι ο πιο κοινός μεταξύ των κρυπτονομισμάτων. Αυτό προκλήθηκε από τη δημοτικότητα και την επιτυχία του Bitcoin και την επιθυμία των προγραμματιστών altcoin να δημιουργήσουν παρόμοια νομίσματα. Η αύξηση της υπολογιστικής πολυπλοκότητας ώθησε τους εξορύκτες να αναζητήσουν τρόπους πιο αποτελεσματικής εξόρυξης, κάτι που είχε ως αποτέλεσμα την εμφάνιση των ASIC.


Η κρυπτογράφηση Bitcoin βασίζεται στον SHA-256, έναν ειδικό αλγόριθμο που αποτελεί μέρος του κώδικα του προγράμματος. Το καθήκον του είναι να μετατρέψει τα δεδομένα εισόδου σε ένα συγκεκριμένο σύνολο χαρακτήρων (σε αλφαβητική και αριθμητική αναπαράσταση) και να προστατεύσει τις πληροφορίες. Τέτοιες ενέργειες ονομάζονται κατακερματισμός. Ποιες είναι οι λεπτότητες αυτού του αλγορίθμου; Γιατί χρειάζεται και πώς λειτουργεί; Ποια είναι τα πλεονεκτήματα και τα μειονεκτήματα; Θα εξετάσουμε αυτά και ορισμένα άλλα σημεία λεπτομερώς.

Τι αλγόριθμο κρυπτογράφησης διαθέτει το Bitcoin και πού χρησιμοποιείται;

Όταν συζητάμε για το κρυπτονόμισμα, τα χαρακτηριστικά της λειτουργίας και της εξόρυξής του, οι συμμετέχοντες στο δίκτυο κρυπτογράφησης αναπόφευκτα συναντούν έναν τόσο διαδεδομένο ορισμό όπως ο αλγόριθμος κρυπτογράφησης Bitcoin. Από την ημέρα που αναπτύχθηκε το BTC μέχρι σήμερα (13 Αυγούστου 2018), έχει χρησιμοποιηθεί το SHA-256, το οποίο είναι απαραίτητο για την επίλυση των παρακάτω προβλημάτων στο δίκτυο Bitcoin:

  1. Σχηματισμός διευθύνσεων BTC (χρησιμοποιείται για συναλλαγές).
  2. Εξόρυξη (απόδειξη εργασίας).
  3. Επίτευξη του απαιτούμενου βαθμού ασφάλειας και ανωνυμίας.
  4. Για την ψηφιακή υπογραφή και την αναγνώρισή της.
Ο αλγόριθμος SHA-256 είναι σχετικός όχι μόνο για το Bitcoin, αλλά και για άλλα νομίσματα, δηλαδή το Bitcoin Cash, το Mazacoin, το Peercoin, το Namecoin και άλλα κρυπτονομίσματα. Επιπλέον, το SHA-2 (η βάση του SHA-256) χρησιμοποιείται για τη δημιουργία πολλών πρωτοκόλλων που έχουν σχεδιαστεί για την προστασία δεδομένων στο Διαδίκτυο, συγκεκριμένα SSL, TSL και άλλα.

Ο αλγόριθμος κατακερματισμού Bitcoin είναι απαραίτητος για τον έλεγχο των πληροφοριών μέσω της ανάλυσής του και του έγκαιρου εντοπισμού των ανακριβειών. Μόλις τα δεδομένα υποβληθούν σε επεξεργασία και μετατραπούν σε κατακερματισμό, είναι αδύνατο να ανακτηθούν οι πληροφορίες. Εάν πάρετε ένα ήδη κρυπτογραφημένο αρχείο BTC, κάντε ξανά τους υπολογισμούς και βεβαιωθείτε ότι οι παράμετροι κατακερματισμού είναι ίδιες, μπορείτε να είστε σίγουροι ότι δεν υπάρχουν αλλαγές στις αρχικές πληροφορίες. Εάν τα δεδομένα διαφέρουν, αυτό υποδηλώνει παραβίαση συστήματος.

Αλγόριθμος κρυπτογράφησης Bitcoin - πώς λειτουργεί με απλά λόγια


Το SHA-2 βασίζεται στο πλαίσιο που δημιούργησαν οι Merkle και Damgaard. Η ιδιαιτερότητα της συνάρτησης κατακερματισμού που χρησιμοποιείται στην κρυπτογραφία είναι η μη τυπική προσέγγιση στο σχηματισμό της. Τα εισερχόμενα δεδομένα χωρίζονται σε μπλοκ ίδιου μεγέθους, μετά τα οποία τα δημιουργημένα στοιχεία μετατρέπονται σε δεκαεξαδικούς αριθμούς. Με αυτούς γίνονται στη συνέχεια οι υπολογισμοί. Μια συνάρτηση κατακερματισμού εφαρμόζεται στην τιμή που προκύπτει και το αποτέλεσμα της επεξεργασίας είναι το άθροισμα κατακερματισμού που εμφανίζεται στην έξοδο. Είναι ένα σύνολο χαρακτήρων που παρουσιάζονται σε αλφαβητική και αριθμητική απεικόνιση. Ουσιαστικά, αυτό είναι χασίς.

Το επόμενο μπλοκ κατασκευάζεται σύμφωνα με την αρχή που περιγράφεται παραπάνω. Σε αυτήν την περίπτωση, μια νέα διαδικασία ξεκινά μετά τη δημιουργία του προηγούμενου στοιχείου. Εάν γίνουν αλλαγές στα αρχικά δεδομένα, αλλάζει ο κατακερματισμός. Στην περίπτωση που οι ίδιες παράμετροι συνάρτησης κατακερματισμού εμφανίζονται ξαφνικά σε διαφορετικά μπλοκ, εμφανίζεται μια κατάσταση σύγκρουσης στη λειτουργία του αλγορίθμου. Όταν συμβαίνει μια τέτοια ασυμφωνία, ολόκληρη η αλυσίδα blockchain τίθεται υπό αμφισβήτηση.

Έτσι, μια συνάρτηση κατακερματισμού χρησιμοποιείται για τη δημιουργία μιας ψηφιακής υπογραφής. Εάν συμβεί η κατάσταση που συζητήθηκε παραπάνω, υπάρχει μεγάλη πιθανότητα πλαστογραφίας υπογραφής. Για τον υπολογισμό τέτοιων αστοχιών (συγκρούσεις), χρησιμοποιείται μια ειδική τεχνική που περιλαμβάνει την απαρίθμηση των δεδομένων, η οποία αυξάνει την ισχύ της συνάρτησης κατακερματισμού.

Η ορθότητα της κρυπτογράφησης Bitcoin ελέγχεται από τέσσερις απαιτήσεις:

  1. Όταν κάνετε αλλαγές στα εισερχόμενα δεδομένα, το ποσό κατακερματισμού παραμένει το ίδιο.
  2. Κατά τη διάρκεια του κατακερματισμού, προκύπτει ένα μεμονωμένο άθροισμα κατακερματισμού (το σύνολο χαρακτήρων πρέπει να είναι μοναδικό).
  3. Η δημιουργία κλειδιού με χρήση κατακερματισμού είναι εξαιρετικά περίπλοκη.
  4. Τα hashes είναι μη αναστρέψιμα. Αυτό σημαίνει ότι επιτρέπεται η εργασία με δεδομένα εισόδου χωρίς τη δυνατότητα εκτέλεσης αντίστροφης ενέργειας.

Πώς ισχύει αυτό στο Bitcoin;

Το καθήκον των κόμβων του δικτύου κρυπτονομισμάτων είναι να βρουν έναν σε πολλές συναλλαγές που του ταιριάζει από όλες τις απόψεις. Κατά την αξιολόγηση των επιλογών, η αρχική προσοχή δίνεται στο μέγεθος της προμήθειας (παρεμπιπτόντως, για το λόγο αυτό, οι συναλλαγές με μεγαλύτερη προμήθεια ολοκληρώνονται πιο γρήγορα). Στη συνέχεια, ελέγχεται η λειτουργία, μελετώνται τα δεδομένα εισόδου και εξόδου και διευκρινίζεται η πρωτοτυπία της ψηφιακής υπογραφής.

Μόλις ολοκληρωθεί η εξεταζόμενη εργασία, δημιουργείται το επόμενο στοιχείο της αλυσίδας Bitcoin (μπλοκ) με ένα συγκεκριμένο μέγεθος (για το εν λόγω κρυπτονόμισμα - 1 megabyte). Οι κόμβοι που προκύπτουν αποτελούνται από την έκδοση, τον χρόνο σχηματισμού, δύο κατακερματισμούς (προηγούμενο μπλοκ και εισερχόμενες συναλλαγές), καθώς και πρόσθετες παραμέτρους που εξασφαλίζουν μοναδικότητα (bits και nonce). Στο σύμπλεγμα, το δημιουργημένο μπλοκ κατακερματίζεται πολλές φορές, με αποτέλεσμα να σχηματίζεται ένα head hash, το οποίο λειτουργεί ως έξοδος για το «παλιό» στοιχείο της αλυσίδας και ως είσοδος για το νέο.

Ας πούμε ότι το σύνολο κατακερματισμού περιέχει έναν συγκεκριμένο αριθμό "0" (για παράδειγμα, το nonce είναι 17). Είναι εξαιρετικά δύσκολο να επιλέξετε μια τέτοια τιμή χρησιμοποιώντας μόνο απαρίθμηση τιμών. Αυτή η πτυχή είναι που διασφαλίζει την αξιοπιστία των πληροφοριών στο δίκτυο blockchain και την προστασία του από το hacking. Για τη δημιουργία ενός κατακερματισμού, απαιτείται τεράστια ισχύς, χωρίς την οποία είναι αδύνατο να βρεθεί το απαιτούμενο σύνολο χαρακτήρων. Μόλις ολοκληρωθεί αυτή η εργασία και βρεθεί η παράμετρος, αποστέλλεται στα στοιχεία του δικτύου κρυπτογράφησης με το μπλοκ που δημιουργήθηκε πρόσφατα και τον κατακερματισμό που βρέθηκε με 17 «0». Στη συνέχεια, όλοι οι συμμετέχοντες στο δίκτυο Bitcoin ελέγχουν τον κατακερματισμό, συνδυάζοντας το σύνολο των χαρακτήρων με πληροφορίες από το μπλοκ. Εάν δεν υπάρχει σύγκρουση, εμφανίζεται ένα νέο στοιχείο στην αλυσίδα μπλοκ.

Πότε εμφανίστηκε ο αλγόριθμος κρυπτογράφησης Bitcoin - ένα σύντομο ιστορικό


Ο όρος "SHA" είναι συντομογραφία τριών λέξεων: "Secure Hashing Algorithm". Το Bitcoin χρησιμοποιεί SHA-256 και η «βάση» της αναφερόμενης συνάρτησης κατακερματισμού είναι το SHA-2, το οποίο περιλαμβάνει πολλούς αλγόριθμους κρυπτογράφησης (συμπεριλαμβανομένων 256).

Οι δημιουργοί του SHA-2 είναι η NSA των Ηνωμένων Πολιτειών, μια ειδική υπηρεσία που ασχολείται με θέματα εθνικής ασφάλειας της χώρας. Μετά την ανάπτυξη και τη δοκιμή του αλγόριθμου, κυκλοφόρησε στο κοινό το 2002. Το νέο SHA-2 περιελάμβανε επίσης την πρώτη συνάρτηση κατακερματισμού SHA-1 (δημιουργήθηκε 7 χρόνια νωρίτερα - το 1995). Από την εισαγωγή του SHA-2, έχουν κυκλοφορήσει πολλές παραλλαγές του αλγορίθμου, μία από τις οποίες χρησιμοποιήθηκε από τον Satoshi Nakamoto κατά τη δημιουργία του Bitcoin το 2009.

Ο στόχος των προγραμματιστών ήταν να απελευθερώσουν έναν αλγόριθμο που θα εξασφάλιζε τον σχηματισμό μιας συγκεκριμένης τιμής συγκεκριμένου μήκους από ένα τυχαίο σύνολο χαρακτήρων. Τα κατάφεραν. Στο μέλλον, η παράμετρος που προκύπτει θα χρησιμοποιείται για την αναγνώριση (έλεγχο) πληροφοριών. Ο αρχικός σκοπός του SHA-2 είναι η προστασία δεδομένων για διάφορες υπηρεσίες και σήμερα (το 2018) ο SHA-256 είναι γνωστός κυρίως ως αλγόριθμος που χρησιμοποιείται στην εξόρυξη νομισμάτων.

Το 2012, το σύστημα βελτιώθηκε και εμφανίστηκε μια ενημερωμένη έκδοση της συνάρτησης κατακερματισμού - SHA-3. Πιστεύεται ότι με την πάροδο του χρόνου, η νέα εξέλιξη θα εκτοπίσει τους προηγούμενους αλγόριθμους, γεγονός που θα βελτιώσει τον ήδη υψηλό βαθμό ασφάλειας.

Χαρακτηριστικά του αλγόριθμου κρυπτογράφησης Bitcoin


Η ουσία του SHA-256 είναι απλή. Το αρχικό μήνυμα μετά την προσθήκη χωρίζεται σε μπλοκ, και το καθένα από αυτά είναι 16 λέξεις. Τα στοιχεία που προκύπτουν περνούν από ειδικούς κύκλους που περιλαμβάνουν 64 ή 80 στάδια. Σε καθένα από αυτά, δύο λέξεις μετατρέπονται και η επιλογή μετασχηματισμού σχηματίζεται από τις υπόλοιπες λέξεις. Οι παράμετροι που προκύπτουν αθροίζονται για να σχηματίσουν έναν κατακερματισμό.

Κατά τη λειτουργία του αλγορίθμου χρησιμοποιούνται 6 εντολές:

  • "xor" - αφαιρεί το "OR".
  • "shr" - μετατοπίζει την ένδειξη κατά τον απαιτούμενο αριθμό bit προς τα δεξιά με μια συγκεκριμένη συχνότητα.
  • "rots" - μετατοπίζει την ένδειξη κατά τον απαιτούμενο αριθμό bit προς τα δεξιά (χωρίς τη χρήση συγκεκριμένου κύκλου).
  • "II" - μια σύνδεση στοιχείων που είναι γραμμικά στη φύση.
  • "και" - "Και".
  • "+" - παρακολούθηση.
Χαρακτηριστικά πρωτοκόλλου:
  1. Το ανώτατο όριο για τη διάρκεια του μηνύματος είναι 33 B.
  2. Η παράμετρος μέγιστης ταχύτητας είναι 139 MiB/s.
  3. Μέγεθος λέξης - 4 B.
  4. Ο αριθμός των επαναλήψεων σε έναν κύκλο είναι 64.
  5. Το μέγεθος του στοιχείου μπλοκ είναι 64 B.
  6. Ο συνολικός κωδικός κατακερματισμού είναι 32 B.

Αλγόριθμος κρυπτογράφησης Bitcoin στην εξόρυξη


Κατά την εκτέλεση υπολογισμών εντός της εξόρυξης, η ορθότητα του κωδικού κατακερματισμού που προκύπτει καθορίζεται από τον αριθμό των μηδενικών στην αρχή της γραμμής. Για παράδειγμα, εάν αυτή η παράμετρος είναι 17, η πιθανότητα να βρεθεί ένας τέτοιος αριθμός είναι εξαιρετικά χαμηλή και είναι κάπου γύρω στο 1:1,4*10 στην 20η δύναμη. Δεν αποτελεί έκπληξη το γεγονός ότι η εξόρυξη Bitcoin απαιτεί τη χρήση ισχυρού εξοπλισμού και υψηλό κόστος ενέργειας. Ταυτόχρονα, η βελτιστοποίηση της αναζήτησης για τον απαιτούμενο κατακερματισμό είναι αδύνατη, επειδή μετά τη λήψη ενός μπλοκ πληροφοριών, εμφανίζεται ένας τυχαίος αριθμός στην έξοδο.

Η δυσκολία εξόρυξης ενός εικονικού νομίσματος είναι να βρεις τον απαραίτητο κατακερματισμό και να σχηματίσεις το επόμενο μπλοκ. Για την επίτευξη αυτού του στόχου, χρησιμοποιείται τυπική απαρίθμηση τιμών, η οποία απαιτεί εξοπλισμό υψηλής απόδοσης. Όπως αναφέρθηκε, η αναζήτηση δεν γίνεται για έναν απλό κατακερματισμό, αλλά για μια τιμή με μεγάλο αριθμό "0" μπροστά της.

Η εξόρυξη κρυπτονομισμάτων με χρήση SHA-256 είναι ένα σύνολο μέτρων που στοχεύουν στην επίλυση ενός συγκεκριμένου προβλήματος κρυπτογράφησης. Στην περίπτωση του Bitcoin, ο ακόλουθος εξοπλισμός χρησιμοποιείται για εξόρυξη:

  1. Από την εμφάνιση του BTC το 2009, καθώς και μέχρι τα μέσα του 2010, η χρήση μιας κεντρικής μονάδας επεξεργασίας (CPU) ήταν σχετική.
  2. Μέχρι τα μέσα του 2011, οι εξορύκτες χρησιμοποιούσαν υπολογιστές με κάρτες γραφικών (GPU).
  3. Μέχρι τις αρχές του 2013, τα FGPA ήταν δημοφιλή, όπως και τα αγροκτήματα GPU.
  4. Το 2014 εμφανίστηκαν τα ASIC. Επισκίασαν τον υπάρχοντα εξοπλισμό σε απόδοση. Παρόλα αυτά, μέχρι τις αρχές του 2017, οι ανθρακωρύχοι χρησιμοποιούσαν εκμεταλλεύσεις GPU και εργάζονταν σε πισίνες, αλλά μέχρι το τέλος του 2017 και μέχρι σήμερα, μόνο οι εξορύκτες είναι σχετικοί. Η χρήση άλλου εξοπλισμού είναι ασύμφορη.
Οι αναφερόμενες συσκευές χρησιμοποιούνται για την επιλογή της συνάρτησης κατακερματισμού που σας ενδιαφέρει και τη δημιουργία μιας νέας. Όσο υψηλότερο είναι το hashrate (υπολογιστική ισχύς) της συσκευής, τόσο πιο γρήγορα γίνεται η ταξινόμηση των δεδομένων και τόσο λιγότερος χρόνος χρειάζεται για να βρεθεί μια λύση.

Με τον αυξανόμενο ανταγωνισμό και την απελευθέρωση πιο παραγωγικών ανθρακωρύχων και αυξήσεις, η παράμετρος των οποίων αλλάζει κάθε 2 εβδομάδες.

Αδυναμίες και δυνατά σημεία του αλγόριθμου κατακερματισμού Bitcoin


Παραπάνω εξετάσαμε τι είναι ο αλγόριθμος κατακερματισμού Bitcoin και ποια είναι τα χαρακτηριστικά του. Αυτός είναι ο SHA-256, ο οποίος θεωρείται ο πιο κοινός αλγόριθμος με υψηλό επίπεδο αξιοπιστίας και σχετικά απλή αρχή λειτουργίας. Είναι πολύ ανθεκτικό στο hacking και σας επιτρέπει να εξορύξετε νομίσματα σε οποιονδήποτε εξοπλισμό (ανάλογα με τις παραμέτρους δυσκολίας).

Παρά μια σειρά θετικών ιδιοτήτων, ο αλγόριθμος κατακερματισμού Bitcoin έχει μια σειρά από αδυναμίες:

  1. Έλεγχος από συμμετέχοντες εξόρυξης BTC. Εδώ λειτουργεί η ίδια αρχή όπως και στις μετοχικές εταιρείες (JSC), όταν οι συμμετέχοντες στην εταιρεία έχουν ορισμένο αριθμό μετοχών. Όσο περισσότερη ισχύς συγκεντρώνεται στα χέρια των εξορύξεων δικτύων κρυπτογράφησης, τόσο ισχυρότερος είναι ο αντίκτυπός τους στο συνολικό σύστημα. Επιπλέον, λόγω της αυξανόμενης πολυπλοκότητας της εξόρυξης το 2018, υπάρχει μια αξιοσημείωτη τάση η εξόρυξη να περάσει από τα χέρια ιδιωτικών ανθρακωρύχων στον έλεγχο μεγάλων οργανισμών που εμπλέκονται στη δημιουργία εξοπλισμού για την εξόρυξη εικονικών νομισμάτων. Για να λάβει Bitcoins, ένας ιδιωτικός ανθρακωρύχος πρέπει να ξοδέψει μεγάλα ποσά για την αγορά ASIC, να συνδεθεί σε μία από τις δεξαμενές και να πληρώσει για την ηλεκτρική ενέργεια. Εάν τσιγκουνευτείτε τον εξοπλισμό, η παραγωγή χάνει την κερδοφορία.
  2. Συνέπεια της κατάστασης που συζητήθηκε παραπάνω είναι το γεγονός ότι η μερίδα του «λέοντος» των Bitcoins συγκεντρώνεται στα χέρια των ιδιοκτητών μεγάλων εταιρειών εξόρυξης. Αν λάβουμε υπόψη ότι δεν βγαίνουν προς πώληση όλα τα Bitcoin που λαμβάνονται, τέτοιοι οργανισμοί μετατρέπονται σε επενδυτές και θεματοφύλακες νομισμάτων. Ως αποτέλεσμα, ο αριθμός των κερμάτων σε κυκλοφορία μειώνεται. Επιπλέον, η συσσώρευση κρυπτονομισμάτων σάς επιτρέπει να επηρεάσετε την αποκέντρωση, καθώς και τη συναλλαγματική ισοτιμία του BTC κατά τη διαδικασία συναλλαγών.
  3. Λόγω των υφιστάμενων ελλείψεων, ο αλγόριθμος SHA-256 γίνεται σταδιακά παρελθόν και τη θέση του παίρνουν πιο προηγμένα έργα. Για παράδειγμα, τα Scrypt, Ethash, Blake-256, Equihash και άλλα κερδίζουν δημοτικότητα. Οι νέοι αλγόριθμοι έχουν καλύτερα επίπεδα προστασίας και ασφάλειας, γεγονός που ανάγκασε τους δημιουργούς πολλών κρυπτονομισμάτων να εγκαταλείψουν το ξεπερασμένο SHA-256 υπέρ πιο προηγμένων τεχνολογιών.
  4. Παρά τη διόρθωση των κύριων σφαλμάτων που εντοπίστηκαν από τους προγραμματιστές, ορισμένα τρωτά σημεία δεν ήταν δυνατό να αφαιρεθούν (το 2008, βρέθηκαν συγκρούσεις για 22 επαναλήψεις). Αυτός είναι ο λόγος για τον οποίο η ανάπτυξη του SHA συνεχίστηκε και η δεύτερη έκδοση αντικαταστάθηκε από το SHA-3.
Το 2009, αναγκάστηκα να χρησιμοποιήσω το SHA-256, επειδή την εποχή της δημιουργίας του κρυπτονομίσματος, οι κυβερνήσεις των πολιτειών υιοθέτησαν αυτό το πρωτόκολλο. Εκείνη την εποχή, χρησιμοποιήθηκε ενεργά για την προστασία δεδομένων σε ορισμένα κυβερνητικά προγράμματα και χρησιμοποιήθηκε επίσης στον εμπορικό τομέα. Αποδείχθηκε ότι το πρωτόκολλο δημιουργήθηκε για να λύσει ορισμένα προβλήματα, αλλά στην πραγματικότητα είναι σε ζήτηση με εντελώς διαφορετικό τρόπο.

Για λόγους σαφήνειας, ας συνθέσουμε τα θετικά και αρνητικά χαρακτηριστικά του αλγόριθμου κρυπτογράφησης Bitcoin.

ΠλεονεκτήματαΕλαττώματα
Ευρέως διαδεδομένο (συμπεριλαμβανομένου του τομέα των κρυπτονομισμάτων). Το πρωτόκολλο SHA χρησιμοποιείται ενεργά στην καθημερινή ζωή για την προστασία των πληροφοριών.Απώλεια αποκέντρωσης. Η ισχύς συγκεντρώνεται στα χέρια των εταιρειών εξόρυξης.
Αξιόπιστη προστασία από διαρρήξεις.Η επανάληψη SHA έχει μια απλή δομή, η οποία οδήγησε σε αύξηση της πολυπλοκότητας εξόρυξης με την πάροδο του χρόνου. Από τον Αύγουστο του 2018, μόνο ASIC με υψηλή απόδοση μπορούν να χρησιμοποιηθούν για την εξόρυξη Bitcoin.
Ευκολία όσον αφορά την εξόρυξη νομισμάτων, ευελιξία στην επιλογή εξοπλισμού εξόρυξης.Εμφανίζονται νέοι αλγόριθμοι που έχουν πιο προηγμένη δομή.
Στη δεύτερη έκδοση (SHA-2), οι δημιουργοί κατάφεραν να εξαλείψουν μια σειρά από ελλείψεις που επηρέασαν αρνητικά την αξιοπιστία του συστήματος.Παρά την ενεργό εργασία για σφάλματα, πολλές ελλείψεις δεν αφαιρέθηκαν. Δεν αποτελεί έκπληξη το γεγονός ότι οι προγραμματιστές δημιούργησαν μια νέα έκδοση του SHA-3.
Το πρωτόκολλο έχει εγκριθεί σε νομοθετικό επίπεδο στις Ηνωμένες Πολιτείες.

Σήμερα σχεδόν δεν χρησιμοποιείται στην ανάπτυξη νέων κρυπτονομισμάτων. Το πιο εντυπωσιακό παράδειγμα νομίσματος που εξακολουθεί να χρησιμοποιεί το SHA-256 είναι το Bitcoin Cash, ένα πιρούνι Bitcoin που εμφανίστηκε τον Αύγουστο του 2017. Αλλά στην κατάσταση με αυτό το νόμισμα, η χρήση του SHA είναι περισσότερο αναγκαιότητα παρά επιλογή των δημιουργών. Όσο για το ίδιο το Bitcoin, η χρήση αυτού του πρωτοκόλλου σειράς οφείλεται στην έλλειψη εναλλακτικών λύσεων από τον Satoshi Nakamoto.

Σήμερα, το 2018, γίνεται πολύς λόγος για τη βελτίωση αυτού του αλγόριθμου και την πραγματοποίηση αλλαγών στο δίκτυο κρυπτονομισμάτων, αλλά μέχρι στιγμής τέτοιες προθέσεις δεν έχουν βρει φυσική εφαρμογή και παραμένουν μόνο με τη μορφή προτάσεων.

Βίντεο σχετικά με κρυπτογραφικές λειτουργίες και αλγόριθμους:

Το παρελθόν 2017 ήταν μια χρονιά εκρηκτικής δημοτικότητας των κρυπτονομισμάτων και της ίδιας ταχείας αύξησης του ποσοστού του «κύριου» κρυπτονομίσματος Bitcoin. Αυτές οι συνθήκες τροφοδότησαν το ενδιαφέρον όχι μόνο για την κερδοσκοπία και την εξόρυξη, αλλά και για την ίδια την ουσία του φαινομένου. Όλο και περισσότεροι άνθρωποι θέλουν να καταλάβουν πώς λειτουργούν όλα;

Ανοίγουμε μια σειρά υλικών στα οποία θα προσπαθήσουμε να εξηγήσουμε με την πιο προσιτή μορφή τι κρύβεται πίσω από αυτά τα μυστηριώδη ακρωνύμια όπως Scrypt, SHA-256, X11 και άλλα. Ας ξεκινήσουμε με τον πιο σημαντικό (αλλά όχι τον καλύτερο) αλγόριθμο για τον κόσμο των κρυπτονομισμάτων - SHA-256. Αυτή είναι η βάση για την ανάπτυξη του Bitcoin. Αλλά πριν από αυτό, ας ορίσουμε τη βασική ορολογία - ορίστε την έννοια των όρων «εξόρυξη» και «κατακερματισμός».

Τι είναι η εξόρυξη;

Σε αντίθεση με τη δημοφιλή πεποίθηση, η εξόρυξη δεν είναι μόνο και όχι τόσο η εξαγωγή κρυπτογραφικών τραπεζογραμματίων, αλλά μάλλον μέτρα για την προστασία αυτού του κρυπτονομίσματος από δόλιες δραστηριότητες. Δεν πρόκειται μόνο για την παραχάραξη - ακόμη πιο σημαντική είναι η προστασία, για παράδειγμα, από την επανειλημμένη χρήση των ίδιων νομισμάτων από το ίδιο άτομο. Τα κέρδη των νέων κρυπτονομισμάτων σχετίζονται στενά με την εκπομπή τους και προκύπτουν από την ανταμοιβή για την εύρεση ενός νέου μπλοκ που πληροί τις προϋποθέσεις του αλγόριθμου εξόρυξης.

Δηλαδή, για να «εμφανιστεί» το επόμενο κρυπτονόμισμα, πρέπει να εκτελέσετε ένα ολόκληρο σύμπλεγμα πολύπλοκων υπολογισμών και να βρείτε αυτό το πολύ πολυπόθητο «σωστό» μπλοκ. Αυτό κάνουν οι ενθουσιώδεις με τον εξοπλισμό τους. Το σχέδιο υποστηρίζεται από μόνο του - για να αυξηθεί η ασφάλεια του κρυπτονομίσματος και να εκδοθούν νέες μονάδες, είναι απαραίτητη η εξόρυξη και για να έχει νόημα να το κάνει, οι ανθρακωρύχοι λαμβάνουν ανταμοιβή.

Εν ολίγοις, ομάδες λογισμικού εξόρυξης εκτελούσαν προηγουμένως υπολογιστικές λειτουργίες σε ένα ενιαίο μπλοκ, το οποίο στη συνέχεια μετασχηματίζεται απίστευτες φορές για να ανακαλύψει ένα ειδικό είδος κωδικού κατακερματισμού. Η εύρεση ενός κωδικού κατακερματισμού που θα πληρούσε τις απαιτήσεις του αλγορίθμου γίνεται πιο δύσκολη όσο περισσότεροι συμμετέχοντες συμμετέχουν στη διαδικασία. Ο «σωστός» κατακερματισμός είναι εξαιρετικά σπάνιος και η εύρεση ενός ισοδυναμεί με τη νίκη στο λαχείο.

Τι είναι το hash;

Ο όρος "hash", που δεν είναι ξεκάθαρος σε όλους, αναφέρθηκε παραπάνω. Αυτή είναι μια από τις θεμελιώδεις έννοιες στην κρυπτογράφηση γενικά και στον αλγόριθμο SHA-256 ειδικότερα. Ας εξηγήσουμε τι σημαίνει αυτό και ας εξετάσουμε τα πιο σημαντικά σχετικά σημεία.

Έτσι, ο κατακερματισμός είναι η διαδικασία μετατροπής ενός εισερχόμενου συνόλου δεδομένων αυθαίρετου μεγέθους σε μια εξερχόμενη ψηφιακή συμβολοσειρά. Αυτός ο μετασχηματισμός πραγματοποιείται σύμφωνα με έναν προ-ανεπτυγμένο αλγόριθμο και η εξερχόμενη συμβολοσειρά είναι εντελώς μοναδική και χρησιμεύει ως ένα είδος «δακτυλικού αποτυπώματος» του εισερχόμενου πίνακα. Είναι αυτή η συμβολοσειρά που ονομάζεται άθροισμα κατακερματισμού, κωδικός κατακερματισμού ή απλά κατακερματισμός. Και ο αλγόριθμος μετασχηματισμού είναι μια συνάρτηση κατακερματισμού.

Ας δώσουμε ένα παράδειγμα. Μπορούμε να "τροφοδοτήσουμε" συναρτήσεις κατακερματισμού, ας πούμε, το κείμενο του μυθιστορήματος σε στίχους του A. S. Pushkin "Eugene Onegin", και η έξοδος θα είναι ένας δεκαεξαδικός κώδικας περίπου όπως αυτό:. Φυσικά, είναι αδύνατο να «ξεδιπλωθεί» αυτός ο κώδικας πίσω και να τον μετατρέψουμε σε «Ευγένιος Ονέγκιν». Αλλά μόλις αλλάξετε έναν μεμονωμένο χαρακτήρα στο ποίημα, ακόμη και απλώς προσθέσετε ένα κενό διάστημα, ο κατακερματισμός που θα προκύψει θα μετατραπεί πέρα ​​από την αναγνώριση. Ο τόμος επίσης δεν επηρεάζει το μήκος του κωδικού κατακερματισμού. Έτσι, μπορείτε να εισαγάγετε ένα σύμβολο "a" στη συνάρτηση και η έξοδος θα είναι ακριβώς το ίδιο σύνολο ψευδοτυχαίων συμβόλων ακριβώς του ίδιου μήκους.

Τώρα ας ρίξουμε μια πιο προσεκτική ματιά στο γιατί αυτό είναι απαραίτητο και ποιες δυσκολίες προκύπτουν στην πορεία. Όποιος ενδιαφέρεται για το θέμα γνωρίζει ότι η εξόρυξη κρυπτονομισμάτων χρησιμοποιώντας το πρωτόκολλο SHA-256 μπορεί να πραγματοποιηθεί χρησιμοποιώντας την ισχύ ενός κεντρικού επεξεργαστή, μιας κάρτας γραφικών ή μιας εξειδικευμένης συσκευής ASIC. Στην πραγματικότητα, στο πλαίσιο του Bitcoin, η πρώτη μέθοδος δεν είναι πλέον καθόλου σχετική και η εξόρυξη με κάρτες βίντεο ζει τις τελευταίες της μέρες. Η πολυπλοκότητα των υπολογισμών έχει αυξηθεί πολύ σημαντικά και τα ημίμετρα δεν είναι πλέον κατάλληλα.

Στη διεπαφή λογισμικού εξόρυξης, οι διαδικασίες μετατροπής μπλοκ σε ποσότητες κατακερματισμού εμφανίζονται ως μια λακωνική γραμμή όπως "Αποδεκτό 0aef59a3b". Ένα μπλοκ μπορεί να αποτελείται από χιλιάδες ή και εκατοντάδες χιλιάδες παρόμοιες γραμμές, αλλά μόνο μία μπορεί να χρησιμεύσει ως η «υπογραφή» του μπλοκ, η αναζήτηση του οποίου είναι η ουσία της εξόρυξης.

Η αναζήτηση για το σωστό κατακερματισμό πραγματοποιείται με απλή αναζήτηση στα αποτελέσματα επίλυσης ενός τεράστιου αριθμού προβλημάτων. Στον αλγόριθμο SHA-256, η "ορθότητα" ενός κατακερματισμού καθορίζεται από τον αριθμό των μηδενικών στην αρχή του αθροίσματος κατακερματισμού. Η πιθανότητα να βρεθεί ένας τέτοιος κωδικός κατακερματισμού μέσω υπολογισμών που καθορίζονται από τον αλγόριθμο είναι αμελητέα - μία ευκαιρία σε εκατομμύρια λύσεις. Η ακριβής πιθανότητα καθορίζεται από το τρέχον επίπεδο δυσκολίας στο αποκεντρωμένο σύστημα ενός συγκεκριμένου κρυπτονομίσματος.

Ένα αξιοσημείωτο γεγονός. Καθένας από εμάς έχει ασχοληθεί επανειλημμένα με τον αλγόριθμο SHA-256, χωρίς καν να το γνωρίζει, ακόμη και χωρίς να λαμβάνει υπόψη την εξόρυξη κρυπτονομισμάτων. Μιλάμε για το πιστοποιητικό ασφαλείας SSL, το οποίο προστατεύει πολλούς ιστότοπους. Όταν επισκέπτεστε έναν τέτοιο ιστότοπο, αλληλεπιδράτε αυτόματα με το SHA-256, πάνω στο οποίο βασίζεται το SSL.

Χαρακτηριστικά του πρωτοκόλλου SHA-256

Πρώτον, μια μικρή ιστορία. Αρχικά, ο αλγόριθμος κρυπτογράφησης SHA-256, ή μάλλον το πρωτότυπό του, εφευρέθηκε μέσα στα τείχη της «απαισιόδοξης» NSA (Υπηρεσία Εθνικής Ασφάλειας των ΗΠΑ) το μακρινό πλέον 2002. Μέσα σε λίγους μήνες τροποποιήθηκε και παρουσιάστηκε επίσημα από το Εθνικό Μετρολογικό Πανεπιστήμιο σε ομοσπονδιακό επίπεδο. Δύο χρόνια αργότερα, κυκλοφόρησε η δεύτερη, βελτιωμένη έκδοσή του.

Τα επόμενα τρία χρόνια, ο Οργανισμός εργάστηκε για να βελτιώσει τον αλγόριθμο και τελικά εξέδωσε δίπλωμα ευρεσιτεχνίας για τη δεύτερη έκδοσή του. Αυτό έγινε με άδεια χωρίς δικαιώματα, η οποία κατέστησε δυνατή τη χρήση της τελευταίας τεχνολογίας για «ειρηνικούς» σκοπούς.

Τελικά, το SHA-256 αποτέλεσε τη βάση για τη δημιουργία του πρώτου κρυπτονομίσματος στον κόσμο - του Bitcoin. Σε αυτήν την περίπτωση, το πρωτόκολλο χρησιμοποιείται δύο φορές για να αυξηθεί η ασφάλεια.

Όταν εκτελείτε υπολογισμούς ως μέρος της εξόρυξης στο σύστημα Bitcoin, ένα σημάδι της καταλληλότητας του κωδικού κατακερματισμού που προκύπτει είναι ο αριθμός των μηδενικών στην αρχή της γραμμής. Από το τέλος της 17ης, αρχές της 18ης, ο αριθμός των απαιτούμενων μηδενικών στην αρχή είναι 17 (+/-). Η πιθανότητα ανίχνευσης ενός τέτοιου κωδικού είναι περίπου 1 προς 1,4*10 20 . Αυτός είναι ένας τερατώδες μικρός αριθμός που αψηφά την κατανόηση και είναι συγκρίσιμος με την πιθανότητα να βρεθεί ένας κόκκος άμμου συγκεκριμένου σχήματος σε όλες τις αμμώδεις παραλίες του πλανήτη μας. Αυτός είναι ο λόγος για τον οποίο η εξόρυξη Bitcoin απαιτεί τόση υπολογιστική ισχύ και τόση ηλεκτρική ενέργεια.

Δεν υπάρχει τρόπος να βελτιστοποιήσετε την αναζήτηση για το "σωστό" κατακερματισμό. Στο πρωτόκολλο SHA-256, η συνάρτηση κατακερματισμού, λαμβάνοντας ένα μπλοκ δεδομένων, παράγει μια εντελώς απρόβλεπτη τιμή εξόδου. Επομένως, χρειάζεται επανάληψη (επανάληψη) μετά την επανάληψη μέχρι να βρεθεί κατάλληλος κωδικός, τονίζουμε για άλλη μια φορά - εντελώς τυχαία.

Τώρα είμαστε αναγκασμένοι να «φορτώνουμε» λίγο τον αναγνώστη με πολύπλοκες τεχνικές πληροφορίες, διαφορετικά η ιστορία μας για το SHA-256 θα είναι ελλιπής. Εάν τίποτα δεν είναι καθόλου ξεκάθαρο, απλώς προχωρήστε στην επόμενη ενότητα του άρθρου.

Το πρωτόκολλο περιλαμβάνει τη διάσπαση των πληροφοριών σε τμήματα των 512 bit το καθένα (ή 64 byte, που είναι το ίδιο, αφού 1 byte = 8 bit). Στη συνέχεια, η κρυπτογραφική "μίξη" λαμβάνει χώρα σύμφωνα με το σχήμα που είναι εγγενές στον αλγόριθμο και η έξοδος είναι ένας κατακερματισμένος κώδικας μεγέθους 256 bit. Η λειτουργία κατακερματισμού εκτελείται σε 64 επαναλήψεις, η οποία είναι σχετικά μικρή, ειδικά σε σύγκριση με τους νέους κρυπτογραφικούς αλγόριθμους που έχουν προκύψει.

Οι κύριες τεχνικές παράμετροι του SHA-256 είναι οι εξής:

  • Μέγεθος μπλοκ: 64 byte;
  • Μέγιστο μήκος μηνύματος: 33 byte.
  • Μέγεθος του κωδικού κατακερματισμού που προκύπτει: 32 byte.
  • Αριθμός επαναλήψεων σε έναν γύρο: 64;
  • Μέγιστη ταχύτητα: περίπου 140 MiB/s (mebibyte ανά δευτερόλεπτο).

Στην εργασία του, ο αλγόριθμος χρησιμοποιεί τη γνωστή τεχνική Merkle-Damgard, η οποία περιλαμβάνει τη διαίρεση του αρχικού δείκτη σε μπλοκ αμέσως μετά την πραγματοποίηση αλλαγών. Τα μπλοκ, με τη σειρά τους, χωρίζονται σε 16 λέξεις το καθένα.

Το σύνολο δεδομένων εκτελείται σε έναν κύκλο 64 επαναλήψεων. Κάθε ένα από αυτά ξεκινά τη διαδικασία κατακερματισμού των λέξεων που αποτελούν το μπλοκ. Τα ζεύγη λέξεων επεξεργάζονται από τη συνάρτηση, μετά την οποία αθροίζονται τα αποτελέσματα και προκύπτει ο σωστός κωδικός κατακερματισμού. Κάθε επόμενο μπλοκ υπολογίζεται με βάση την τιμή του προηγούμενου. Αυτή είναι μια απρόσκοπτη διαδικασία - είναι αδύνατο να υπολογιστούν τα μπλοκ χωριστά το ένα από το άλλο.

Εξέλιξη του SHA-256

Για να κατανοήσουμε την κρυπτογραφική αξία αυτού του αλγορίθμου, ας ανατρέξουμε στην ιστορία. Άρχισαν να δοκιμάζουν σοβαρά τη δύναμή του σχεδόν αμέσως μετά τη δημιουργία του - το 2003. Το θέμα αντιμετωπίστηκε από επαγγελματίες, αλλά δεν βρέθηκαν ευπάθειες ή σφάλματα.

Πέρασαν πέντε ολόκληρα χρόνια όταν, το 2008, Ινδοί εμπειρογνώμονες ήταν ακόμη σε θέση να εντοπίσουν συγκρούσεις για έως και 22 επαναλήψεις. Μετά από αρκετούς μήνες σκληρής δουλειάς, προτάθηκε μια επιτυχημένη λύση στο πρόβλημα.

Κατά τη διάρκεια της ανάλυσης της λειτουργίας του λειτουργικού τμήματος του αλγορίθμου, δοκιμάστηκε η αντίστασή του σε δύο τύπους πιθανών μεθόδων αποτυχίας ασφάλειας:

  • μέσω preimage: αυτό σημαίνει αντίστροφη αποκρυπτογράφηση του αρχικού μηνύματος με βάση μόνο τη συμβολοσειρά κατακερματισμού.
  • μέσω ανίχνευσης σύγκρουσης: αυτό συνεπάγεται τη σύμπτωση των εξερχόμενων δεδομένων, υπό την προϋπόθεση ότι τα εισερχόμενα μηνύματα είναι διαφορετικά. Δηλαδή, τα εισερχόμενα μπλοκ είναι διαφορετικά, αλλά το εξερχόμενο κατακερματισμό είναι το ίδιο - αυτό δεν πρέπει να συμβαίνει.

Αφού η πρώτη έκδοση του SHA-256 απέτυχε στις δοκιμές στο δεύτερο κριτήριο, οι προγραμματιστές αποφάσισαν να δημιουργήσουν έναν νέο μηχανισμό κρυπτογράφησης που θα βασίζεται σε ριζικά διαφορετικές αρχές. Αυτό έγινε - το 2012, εισήχθη ένα πρωτόκολλο νέας γενιάς, εντελώς απαλλαγμένο από τις προαναφερόμενες ελλείψεις.

Μειονεκτήματα του αλγορίθμου

Το γεγονός ότι οι προγραμματιστές κατάφεραν να διορθώσουν τα δικά τους λάθη δεν σημαίνει ότι κατάφεραν να φέρουν το SHA-256 στην τελειότητα. Το πρωτόκολλο απαλλάχθηκε από προφανείς ευπάθειες, αλλά οι «εγγενείς» ελλείψεις του παρέμειναν.

Η χρήση του SHA-256 ως βάσης του Bitcoin κατέστη δυνατή, κυρίως λόγω του γεγονότος ότι η ίδια η νομοθεσία των ΗΠΑ ήταν πιστή σε αυτό το πρωτόκολλο. Επιτρεπόταν να χρησιμοποιηθεί για την προστασία δεδομένων σε ορισμένα κυβερνητικά προγράμματα, και επετράπη επίσης να χρησιμοποιηθεί στην εμπορική σφαίρα.

Από εδώ προέρχεται η ειρωνεία της μοίρας - το πρωτόκολλο δημιουργήθηκε για έναν σκοπό, αλλά βρήκε την ευρύτερη εφαρμογή του σε εντελώς διαφορετικούς. Και για αυτούς τους πρώτους σκοπούς ήταν κάτι παραπάνω από αποτελεσματικό και κατάλληλο. Αλλά για τα κρυπτονομίσματα αποδείχθηκε πολύ απλό. Δεν είναι αστείο όταν στην Κίνα, για παράδειγμα, δεν υπάρχουν καν φάρμες, αλλά ολόκληρα «εργοστάσια» γεμάτα με ανθρακωρύχους ASIC.

Κάθε επανάληψη του αλγορίθμου φαίνεται αρκετά πρωτόγονη - μια βασική δυαδική λειτουργία συν μια προσθήκη 32 bit. Αυτός είναι ο λόγος για τον οποίο τα ASIC που βασίζονται στο SHA-256 εμφανίστηκαν τόσο γρήγορα, πολλαπλασιάζοντας με το μηδέν όλες τις ελπίδες των "οικιακών" ανθρακωρύχων με μόνο έναν επεξεργαστή και μερικές κάρτες βίντεο.

Οι καιροί και οι συνθήκες αλλάζουν πολύ και το πρωτόκολλο SHA-256 ακολουθεί με σιγουριά τις υπόλοιπες, πιο προηγμένες λύσεις. Το ίδιο Scrypt, στη διαδικασία των υπολογισμών, καταγράφει πρώτα 1024 διαφορετικές συμβολοσειρές κατακερματισμού και μόνο μετά από αυτό εκτελεί την πρόσθεση και λαμβάνει το τελικό αποτέλεσμα. Αυτό είναι ένα ασύγκριτα πιο περίπλοκο σχέδιο με τα υψηλότερα επίπεδα προστασίας και ασφάλειας κρυπτονομισμάτων.

Περίληψη

Ο αλγόριθμος κρυπτογράφησης SHA-256 θεωρήθηκε αρκετά αποτελεσματικός και αξιόπιστος μέχρι να ξεκινήσει η έκρηξη των κρυπτονομισμάτων. Σήμερα γίνεται σαφές ότι στο πλαίσιο των νέων λύσεων φαίνεται ήδη μάλλον αδύναμο. Τόσο πολύ που αυτό κατέστησε δυνατή τη δημιουργία ειδικών συσκευών «ακονισμένων» αυστηρά για να το παρακάμψουν. Αυτοί είναι οι ίδιοι εξορύκτες ASIC που έχουν ουσιαστικά καταστρέψει την εξόρυξη σε κεντρικούς επεξεργαστές και ήδη ολοκληρώνουν την εξόρυξη σε κάρτες βίντεο.

Φαίνεται ότι δεν υπάρχει τίποτα κακό σε αυτό - υγιής ανταγωνισμός, τελικά. Αλλά στην πραγματικότητα, η χρήση των ASIC συγκεντρώνει σημαντικά το κρυπτονόμισμα, εξουδετερώνοντας έτσι την ίδια την ιδέα του. Αυτό το γεγονός δεν θα μπορούσε παρά να ωθήσει ταλαντούχους λάτρεις να δημιουργήσουν νέους, πιο προηγμένους αλγόριθμους κατακερματισμού. Και δεν άργησαν να έρθουν.

Το πρωτόκολλο SHA-256 καταλαμβάνει επί του παρόντος τη μερίδα του λέοντος στην αγορά κρυπτονομισμάτων, αλλά οι νέες εναλλακτικές ήδη το παραμερίζουν με σιγουριά. Για παράδειγμα, η δεύτερη πιο δημοφιλής και «ακριβή» κρύπτη, το Ethereum, χρησιμοποιεί το πρωτόκολλο Ethash, το οποίο προηγουμένως ονομαζόταν Dagger. Το πρωτόκολλο είναι τόσο καλό που το Ethereum εξακολουθεί να διατηρεί τη μέγιστη αποκέντρωση μέχρι σήμερα και οι εξορύκτες ASIC για την εξόρυξή του εξακολουθούν να μην υπάρχουν στη φύση. Ίσως το Ethash να αντικαταστήσει το ξεκάθαρα απαρχαιωμένο SHA-256.

Ένας από τους πρώτους εναλλακτικούς αλγόριθμους ήταν ο Scrypt, στον οποίο βασίζεται ένα από τα πιο δημοφιλή altcoin, το Litecoin. Αυτή είναι μια πολύ πιο προηγμένη λύση, η οποία δεν δίνει πλέον στην ASIC τέτοια αναμφισβήτητα πλεονεκτήματα. Ωστόσο, τα υπερκέρδη από την εξόρυξη ανάγκασαν τους Κινέζους ειδικούς να επενδύσουν πολλή προσπάθεια στην ανάπτυξη τεχνολογικών λύσεων για το Scrypt, και όντως εμφανίστηκαν ASIC που βασίζονταν σε αυτό το πρωτόκολλο.

Εάν εξετάσουμε την εξόρυξη από την οπτική γωνία ενός απλού ανθρώπου που δεν έχει εμπειρία σε τεχνικές αποχρώσεις, τότε δεν θα αισθανθεί καμία διαφορά μεταξύ των αλγορίθμων Scrypt και SHA-256. Τα ASIC και στα δύο πρωτόκολλα φαίνονται σχεδόν ίδια, καταναλώνουν περίπου την ίδια ποσότητα ηλεκτρικής ενέργειας και έχουν ακριβώς τον ίδιο θόρυβο ανεμιστήρα. Ένα άλλο πράγμα είναι οι τιμές κρυπτονομισμάτων που εξορύσσουν αυτά τα ίδια ASIC, αλλά αυτό είναι μια εντελώς διαφορετική ιστορία.

Στο πλαίσιο αυτού του θέματος θα αφιερώσουμε το ακόλουθο υλικό στο αναφερόμενο εναλλακτικό πρωτόκολλο κρυπτογράφησης Scrypt.

Το SHA 256 είναι ένα κρυπτογραφικό σύνολο οδηγιών για την εξόρυξη κρυπτονομισμάτων. Με άλλα λόγια, προστατεύει αξιόπιστα όλες τις συναλλαγές στο δίκτυο και περιπλέκει την εξαγωγή ηλεκτρονικών νομισμάτων. Αυτή η συντομογραφία σημαίνει Secure Hashing Algorithm, που σημαίνει μια εξαιρετικά δημοφιλής και αποτελεσματική μέθοδος κατακερματισμού.

Η ουσία του SHA 256 είναι να μετατρέπει τις πληροφορίες σε τιμές, αριθμούς. Αυτή η αλυσίδα έχει σταθερό μήκος. Αυτό σημαίνει ότι κάθε πληροφορία που μεταδίδετε εντός του δικτύου θα κρυπτογραφείται με ειδικές τιμές - αναγνωριστικά (IDs).

Κατά την πραγματοποίηση συναλλαγών, ο αλγόριθμος SHA 256 συγκρίνει το αναγνωριστικό με τα αρχικά δεδομένα, τα οποία δεν μπορούν να ανακτηθούν και στη συνέχεια παρέχει πρόσβαση στη συναλλαγή. Αυτό το πρωτόκολλο χρησιμοποιείται πλέον στην εξόρυξη κρυπτονομισμάτων όπως το BTC και το BCH.

Ιστορία εμφάνισης

Πώς συνέβη που το Bitcoin άρχισε να χρησιμοποιεί το SHA 256; Όλα ξεκίνησαν όταν ο αλγόριθμος έγινε μέλος της οικογένειας SHA-2, η οποία έχει μέγεθος αλυσίδας κατακερματισμού 224-512 bit.

Αυτοί, με τη σειρά τους, δημιουργήθηκαν με βάση τον προπάππου τους - SHA-1, του οποίου ο κατακερματισμός είχε μήκος 160 bit. Η τεχνολογία εμφανίστηκε το 1995 και προοριζόταν για χρήση για μη στρατιωτικούς σκοπούς - δηλαδή κρυπτογράφηση συνηθισμένων, μη κρατικών σημαντικών πληροφοριών.

Η οικογένεια SHA-2, στην οποία ανήκει το SHA 256, αναπτύχθηκε από την Υπηρεσία Εθνικής Ασφάλειας πριν από 16 χρόνια - την άνοιξη του 2002. Με βάση αυτό, μπορούμε να πούμε ότι ο αλγόριθμος είναι ηθικά ξεπερασμένος. Ωστόσο, εξακολουθεί να είναι ένας από τους ισχυρότερους αλγόριθμους για την κρυπτογράφηση συναλλαγών στο δίκτυο.

Τεχνικές παράμετροι του SHA 256

Ο αλγόριθμος έχει σχεδιαστεί για δεδομένα χωρισμένα σε ίσα μέρη των 64 byte. Το SHA 256 διασφαλίζει ότι συλλέγονται και συνδυάζονται σε μια ενιαία αλυσίδα 256 bit. Η κύρια μέθοδος για αυτή τη μέθοδο είναι η λειτουργία κρυπτογράφησης, η οποία εκτελείται σε βρόχο 64 φορές.

Σύντομα χαρακτηριστικά των αλγοριθμικών οδηγιών SHA 256:

  • Μπλοκ 64 bit - λειτουργεί πιο γρήγορα με μπλοκ 32 bit.
  • το μέγιστο μήκος της κρυπτογραφημένης αλυσίδας πληροφοριών είναι 33 byte.
  • μέγεθος σύνοψης μηνύματος - 32 byte.
  • το τυποποιημένο μέγεθος μιας λέξης είναι 4 byte.
  • ο κύκλος κρυπτογράφησης σε έναν κύκλο λειτουργίας είναι 64 byte.
  • η ταχύτητα με την οποία λειτουργεί ο αλγόριθμος είναι 140 Mbit/s.

Αξίζει να σημειωθεί ότι αυτό το μέλος της οικογένειας SHA-2 βασίζεται στο πλαίσιο που περιγράφει η Merkle-Damgaard. Αυτό σημαίνει ότι πριν από τη διαίρεση των πληροφοριών σε λέξεις, τα δεδομένα χωρίζονται σε μπλοκ. Η διαδικασία ενισχύει την κρυπτογράφηση ανακατεύοντας τα δεδομένα.

Η ίδια η συλλογή πληροφοριών πραγματοποιείται στην περιοχή από 64 έως 80 επαναλήψεις. Κάθε επόμενος βρόχος μετατρέπει τα δημιουργημένα μπλοκ σε λέξεις. Το τελικό αποτέλεσμα, δηλαδή ο κατακερματισμός, δημιουργείται αθροίζοντας όλες τις αρχικές τιμές.

Κρυπτονομίσματα με αλγόριθμο SHA 256

Όπως αναφέρθηκε προηγουμένως, όχι μόνο το Bitcoin έχει ένα τέτοιο σύνολο οδηγιών, αλλά και:

  • peercoin, η ιδιαιτερότητα του οποίου είναι ότι ο κώδικας δημιουργείται με βάση το cue ball, αλλά το PoS χρησιμοποιείται για την προστασία ολόκληρου του δικτύου και το PoW είναι υπεύθυνο για τη διανομή των νομισμάτων.
  • Το namecoin είναι ένα ψηφιακό νόμισμα που λειτουργεί ως μέσο προστασίας, εμπιστευτικότητας και αποκέντρωσης. unobtanium - έχει εξαιρετικά χαμηλό πληθωρισμό· θα χρειαστούν τουλάχιστον 300 χρόνια για την εξόρυξη όλων των νομισμάτων.
  • Το deutsche eMark είναι ένα γερμανικό μικροδίκτυο που χρησιμοποιείται για την ανταλλαγή περιουσιακών στοιχείων και χρημάτων. Η ίδια η διαδικασία λαμβάνει χώρα χωρίς μεσάζοντες. betaCoin - λειτουργεί με την ίδια αρχή με το παγκοσμίως διάσημο BitCoin.
  • jouleCoin - βασίζεται επίσης στο παππού Bitcoin, αλλά παρέχει ταχύτερη επιβεβαίωση των συναλλαγών.
  • Το steemit δεν είναι καν μια ξεχωριστή κρύπτη, αλλά μια ολόκληρη πλατφόρμα στο blockchain. Το κύριο καθήκον του είναι να επιβραβεύει ενδιαφέρουσες δημοσιεύσεις.

Το Litecoin χρησιμοποιεί επίσης τον αλγόριθμο SHA 256, αλλά όχι σε ολόκληρο το σύστημα, αλλά σε μια υπορουτίνα. Για την εξόρυξη Litecoin, χρησιμοποιείται το πρωτόκολλο ασφαλείας Scrypt, το οποίο αυξάνει την πολυπλοκότητα της εξόρυξης και μειώνει την απόσβεση των ASIC.

Εξόρυξη κρυπτονομισμάτων με βάση τον αλγόριθμο SHA 256

Για την εξόρυξη ηλεκτρονικών νομισμάτων που βασίζονται στην οικογένεια SHA-2, δεν είναι απαραίτητο να χρησιμοποιήσετε εξειδικευμένα εργαλεία - ASIC. Και οι δύο φάρμες που βασίζονται σε CPU και GPU έχουν καλή απόδοση στην εξόρυξη. Το δεύτερο είναι σαφώς ανώτερο σε ταχύτητα από το πρώτο.

Και όμως το ASIC είναι η καλύτερη λύση για την εξόρυξη κρυπτονομισμάτων. Τα πλεονεκτήματά του αντισταθμίζονται σε κάποιο βαθμό από τη σημαντική τιμή του - περίπου 100 χιλιάδες ρούβλια, τα πιο ισχυρά μοντέλα υπερβαίνουν ακόμη και τα 500.000. Καθώς αυξάνεται η πολυπλοκότητα, η απόσβεση μειώνεται. Επομένως, ο εξοπλισμός δεν δικαιολογείται πάντα, αν και παρέχει πολύ υψηλότερη ταχύτητα εξόρυξης από τα αγροκτήματα σε κάρτες βίντεο και, ειδικά, σε μια CPU.

Η εξόρυξη GPU θεωρείται περισσότερο ή λιγότερο επικερδής. Σε γενικές γραμμές, ολόκληρο το αγρόκτημα θα κοστίσει περίπου 1000-2000 $, συν επιπλέον εξοπλισμό - ειδικότερα, συστήματα ψύξης για κάρτες βίντεο. Αξίζει επίσης να ληφθεί υπόψη η ενοικίαση χώρων, οι πληρωμές ηλεκτρικής ενέργειας και οι μισθοί για το προσωπικό εξυπηρέτησης.

Μεταξύ των καρτών βίντεο, η GTX 1080 Ti από την Nvidia έχει καλή απόδοση. Παράγει ταχύτητα 1400 επιτυχημένων λειτουργιών ανά δευτερόλεπτο. Η AMD είναι ελαφρώς πίσω με τις κάρτες της σειράς Vega - 1200 MH/s. Υπάρχουν και φθηνότερες επιλογές όπως το Radeon 7970, αλλά η ταχύτητά του δεν ξεπερνά τα 800 MH/s.

Ο αλγόριθμος SHA 256, αν και παλιός, εξακολουθεί να χρησιμοποιείται στο Bitcoin, το Νο. 1 κρυπτονόμισμα στον κόσμο. Το πρωτόκολλο χρησιμοποιείται επίσης σε πολλά άλλα πολλά υποσχόμενα altcoins. Το SHA256 αντικαθίσταται σταδιακά από το Scrypt, αλλά το Bitcoin δεν σκοπεύει να μεταβεί σε αυτό. Όσον αφορά την εξόρυξη, όλα είναι απλά - αν έχετε χρήματα, πάρτε ASIC με υψηλό ποσοστό κατακερματισμού. Θέλετε μια πιο οικονομική λύση; Στη συνέχεια, δημιουργήστε ένα αγρόκτημα από κάρτες γραφικών AMD ή Nvidia.

  • Μετάφραση

Κάποια στιγμή ήθελα να καταλάβω πόσο γρήγορα ήταν δυνατή η χειροκίνητη εξόρυξη Bitcoin. Αποδείχθηκε ότι ο κατακερματισμός SHA-256 χρησιμοποιείται για εξόρυξη και είναι αρκετά απλός και μπορεί να υπολογιστεί ακόμη και χωρίς υπολογιστή. Φυσικά, η διαδικασία είναι πολύ αργή και εντελώς ανέφικτη. Αλλά αφού περάσετε όλα τα βήματα σε χαρτί, μπορείτε να κατανοήσετε καλά τις λεπτομέρειες του τρόπου λειτουργίας του αλγόριθμου.

Ένας γύρος κρυπτογράφησης

Εξόρυξη

Ένα βασικό μέρος ολόκληρου του συστήματος ασφαλείας Bitcoin είναι η εξόρυξη. Η βασική ιδέα είναι ότι οι εξορύκτες ομαδοποιούν τις συναλλαγές Bitcoin σε ένα μπλοκ, το οποίο στη συνέχεια κατακερματίζουν έναν ανυπολόγιστο αριθμό για να βρουν μια πολύ σπάνια τιμή κατακερματισμού που εμπίπτει σε ειδικές συνθήκες. Όταν βρεθεί μια τέτοια τιμή, το μπλοκ θεωρείται εξορυσσόμενο και εισέρχεται στην αλυσίδα μπλοκ. Ο ίδιος ο κατακερματισμός δεν εξυπηρετεί κανέναν χρήσιμο σκοπό εκτός από την αύξηση της δυσκολίας εύρεσης του σωστού μπλοκ. Έτσι, αυτή είναι μια από τις εγγυήσεις ότι κανένας μόνος με οποιοδήποτε υπάρχον σύνολο πόρων δεν θα μπορέσει να αναλάβει τον έλεγχο ολόκληρου του συστήματος. Μπορείτε να διαβάσετε περισσότερα για την εξόρυξη στο τελευταίο μου άρθρο.

Η κρυπτογραφική συνάρτηση κατακερματισμού λαμβάνει ένα μπλοκ δεδομένων ως είσοδο και παράγει μια μικρή αλλά απρόβλεπτη έξοδο. Είναι σχεδιασμένο έτσι ώστε να μην υπάρχει γρήγορος τρόπος για να λάβετε το αποτέλεσμα που θέλετε και πρέπει να συνεχίσετε την αναζήτηση μέχρι να βρείτε τη σωστή τιμή. Το Bitcoin χρησιμοποιεί το SHA-256 ως τέτοια λειτουργία. Επιπλέον, για την ενίσχυση της αντίστασης, το SHA-256 εφαρμόζεται στο μπλοκ δύο φορές και ονομάζεται διπλό SHA-256.

Στο Bitcoin, το κριτήριο για να είναι έγκυρο ένας κατακερματισμός είναι να υπάρχει επαρκής αριθμός αρχικών μηδενικών. Η εύρεση ενός τέτοιου κατακερματισμού είναι τόσο δύσκολη όσο, για παράδειγμα, η εύρεση ενός αριθμού αυτοκινήτου ή τηλεφώνου που τελειώνει σε πολλά μηδενικά. Αλλά φυσικά για ένα hash είναι εκθετικά πιο δύσκολο. Επί του παρόντος, ένας έγκυρος κατακερματισμός πρέπει να περιέχει περίπου 17 αρχικά μηδενικά, τα οποία ικανοποιούνται μόνο με 1 προς 1,4x10 20 . Εάν σχεδιάσουμε μια αναλογία, τότε η εύρεση μιας τέτοιας τιμής είναι πιο δύσκολη από την εύρεση ενός συγκεκριμένου σωματιδίου ανάμεσα σε όλη την άμμο στη Γη.

Το μπλε αποκλείει τα μη γραμμικά ανακατωτά bits για να κάνει πιο δύσκολη την κρυπτογραφική ανάλυση. Επιπλέον, για ακόμη μεγαλύτερη αξιοπιστία, χρησιμοποιούνται διαφορετικές συναρτήσεις μίξης (αν μπορείτε να βρείτε ένα μαθηματικό κενό για να δημιουργήσετε γρήγορα έγκυρα hashes, θα αναλάβετε τον έλεγχο ολόκληρης της διαδικασίας εξόρυξης Bitcoin).

Η συνάρτηση πλειοψηφίας (μπλοκ Ma) λειτουργεί κατά bit στις λέξεις A, B και C. Για κάθε θέση bit, επιστρέφει 0 εάν η πλειονότητα των bit εισόδου σε αυτή τη θέση είναι μηδέν, διαφορετικά επιστρέφει 1.

Το μπλοκ Σ0 περιστρέφει το A κατά 2 bit, στη συνέχεια η αρχική λέξη A περιστρέφεται κατά 13 bit και ομοίως κατά 22 bit. Οι προκύπτουσες τρεις μετατοπισμένες εκδόσεις του A προστίθενται κατά bit modulo 2 ( κανονικό xor, (A ror 2) xor (A ror 13) xor (A ror 22)).

Το Ch υλοποιεί τη συνάρτηση επιλογής. Σε κάθε θέση bit ελέγχεται ένα bit από το E, εάν είναι ίσο με ένα, τότε εξάγεται το bit από το F από αυτή τη θέση, διαφορετικά ένα bit από το G. Έτσι, τα bit από το F και G αναμειγνύονται με βάση την τιμή του Ε.

Το Σ1 είναι παρόμοια στη δομή με το Σ0, αλλά λειτουργεί με τη λέξη E και οι αντίστοιχες σταθερές μετατόπισης είναι 6, 11 και 25.

Τα κόκκινα μπλοκ εκτελούν μια προσθήκη 32 bit, δημιουργώντας νέες τιμές για τις λέξεις εξόδου A και E. Η τιμή W t δημιουργείται με βάση τα δεδομένα εισόδου (αυτό συμβαίνει στο τμήμα του αλγορίθμου που λαμβάνει και επεξεργάζεται τα κατακερματισμένα δεδομένα Είναι πέρα ​​από το πεδίο εφαρμογής μας). Το K t είναι η δική του σταθερά για κάθε γύρο.

Στο παραπάνω διάγραμμα, παρατηρείται ότι μόνο το Α και το Ε αλλάζουν σε έναν κρυπτογραφικό γύρο. Οι υπόλοιπες λέξεις δεν αλλάζουν, αλλά μετατοπίζονται στην έξοδο - το παλιό Α μετατρέπεται σε έξοδο Β, το παλιό Β σε νέο Γ και ούτω καθεξής. Αν και ένας μόνο γύρος του αλγορίθμου δεν αλλάζει πολύ τα δεδομένα, μετά από 64 γύρους, οι πληροφορίες εισόδου θα είναι πλήρως κρυπτογραφημένες.

Εξορύσσουμε χειροκίνητα

Στο βίντεο δείχνω πώς μπορείτε να περάσετε όλα τα βήματα που περιγράφονται με στυλό και χαρτί. Έκανα τον πρώτο γύρο κατακερματισμού για να εξορύξω το μπλοκ. Μου πήρε 16 λεπτά, 45 δευτερόλεπτα.


Επιτρέψτε μου να εξηγήσω λίγο τι συμβαίνει: Έγραψα τις λέξεις από το Α έως το Η σε δεκαεξαδική μορφή και κάτω από κάθε μία έκανα μια μετάφραση σε δυαδική μορφή. Το αποτέλεσμα του μπλοκ Ma είναι κάτω από τη λέξη C και οι τιμές του A μετά τις μετατοπίσεις και η ίδια η έξοδος Σ0 εμφανίζονται πάνω από τη γραμμή με το A. Η συνάρτηση επιλογής εμφανίζεται κάτω από το G και τέλος οι αντίστοιχες μετατοπισμένες εκδόσεις του E και του Η τιμή μετά το μπλοκ Σ1 πηγαίνει πάνω από τη γραμμή με το Ε. Στην κάτω δεξιά γωνία εκτελείται μια προσθήκη, το αποτέλεσμα της οποίας εμπλέκεται στον υπολογισμό τόσο του νέου Α όσο και του νέου Ε (τα τρία πρώτα κόκκινα μπλοκ άθροισης). Επάνω δεξιά υπολόγισα τη νέα τιμή του Α και στη μέση είναι ο υπολογισμός της νέας τιμής του Ε. Όλα αυτά τα βήματα συζητήθηκαν παραπάνω και μπορούν εύκολα να παρακολουθηθούν στο διάγραμμα.

Εκτός από τον γύρο που εμφανίζεται στο βίντεο, διεξήγαγα έναν ακόμη - τον τελευταίο 64ο γύρο κατακερματισμού για ένα συγκεκριμένο μπλοκ Bitcoin. Στη φωτογραφία, η τιμή κατακερματισμού επισημαίνεται με κίτρινο χρώμα. Ο αριθμός των μηδενικών επιβεβαιώνει ότι πρόκειται για έγκυρο κατακερματισμό Bitcoin. Σημειώστε ότι τα μηδενικά βρίσκονται στο τέλος του κατακερματισμού και όχι στην αρχή, όπως έγραψα νωρίτερα. Ο λόγος είναι ότι το Bitcoin απλώς αναστρέφει τα byte που λαμβάνει το SHA-256.


Ο τελευταίος γύρος του SHA-256, ως αποτέλεσμα του οποίου είναι ορατό ένα μπλοκ Bitcoin που εξορύχθηκε με επιτυχία

Τι σημαίνουν όλα αυτά για το σχεδιασμό των hardware miners;

Κάθε βήμα στο SHA-256 φαίνεται πολύ απλό στην ψηφιακή λογική - απλές λειτουργίες bit και αθροίσματα 32 bit (αν έχετε μελετήσει ποτέ τη σχεδίαση κυκλώματος, πιθανότατα έχετε ήδη φανταστεί πώς μπορεί να μοιάζει στο υλικό). Επομένως, τα ASIC εφαρμόζουν το SHA-256 πολύ αποτελεσματικά, τοποθετώντας παράλληλα εκατοντάδες μονάδες στρογγυλής εκτέλεσης SHA-256. Η παρακάτω φωτογραφία δείχνει ένα τσιπ εξόρυξης που μπορεί να υπολογίσει 2-3 δισεκατομμύρια hashes ανά δευτερόλεπτο. Μπορείτε να δείτε περισσότερες φωτογραφίες στο Zeptobars.


Ένα πλάνο πυριτίου του τσιπ Bitfury ASIC, το οποίο μπορεί να εξορύξει Bitcoin με 2-3 gigahash ανά δευτερόλεπτο. Φωτογραφία από το Zeptobars. (CC BY 3.0)

Σε αντίθεση με το Bitcoin, το Litecoin, το Dogecoin και άλλα παρόμοια συστήματα εναλλακτικών νομισμάτων χρησιμοποιούν τον αλγόριθμο κατακερματισμού κρυπτογράφησης, ο οποίος είναι εγγενώς δύσκολο να εφαρμοστεί σε υλικό. Αυτός ο αλγόριθμος αποθηκεύει 1024 διαφορετικές τιμές κατακερματισμού στη μνήμη κατά την εκτέλεση και τις συνδυάζει στην έξοδο για να αποκτήσει το τελικό αποτέλεσμα. Επομένως, απαιτείται πολύ περισσότερη μνήμη και κυκλώματα για τον υπολογισμό των κατακερματισμών κρυπτογράφησης σε σύγκριση με τους κατακερματισμούς SHA-256. Ο αντίκτυπος της αλλαγής του αλγορίθμου κατακερματισμού είναι σαφώς ορατός όταν συγκρίνετε το αντίστοιχο υλικό εξόρυξης - οι εκδόσεις για το scrypt (Litecoin και άλλα) είναι χιλιάδες φορές πιο αργές από τις εκδόσεις για το SHA-256 (Bitcoin).

συμπέρασμα

Το SHA-256 ήταν ξαφνικά τόσο απλό που μπορούσε να υπολογιστεί ακόμη και με το χέρι (ο αλγόριθμος ελλειπτικής καμπύλης που χρησιμοποιείται για την υπογραφή μιας συναλλαγής Bitcoin θα ήταν πολύ πιο επώδυνος, καθώς περιλαμβάνει ένα σωρό πολλαπλασιασμούς αριθμών 32 byte). Ο υπολογισμός ενός γύρου SHA-256 μου πήρε 16 λεπτά και 45 δευτερόλεπτα. Με αυτήν την απόδοση, ο κατακερματισμός ενός ολόκληρου μπλοκ Bitcoin (128 γύροι) θα διαρκέσει 1,49 ημέρες, δηλαδή, θα έχουμε ρυθμό κατακερματισμού 0,67 hash ανά ημέρα (στην πραγματικότητα, φυσικά, η διαδικασία θα επιταχυνόταν με εξάσκηση). Συγκριτικά, η τρέχουσα γενιά εξορυκτών Bitcoin παράγει αρκετά terahashe ανά δευτερόλεπτο, που είναι περίπου ένα εκατομμύριο φορές πιο γρήγορα από εμένα. Νομίζω ότι είναι ξεκάθαρο ότι η χειροκίνητη εξόρυξη Bitcoin δεν είναι πολύ πρακτική.

Ένας αναγνώστης από το reddit ρώτησε για την ενεργειακή μου δαπάνη. Εφόσον δεν καταβάλλω καμία σοβαρή σωματική προσπάθεια, μπορούμε να υποθέσουμε ότι ο μεταβολικός ρυθμός θα είναι 1500 kilocalories την ημέρα, τότε διαπιστώνουμε ότι ο χειροκίνητος κατακερματισμός απαιτεί σχεδόν 10 megajoules ανά κατακερματισμό. Τυπική κατανάλωση ενέργειας για έναν ανθρακωρύχο είναι 1000 magehash ανά τζάουλ. Επομένως, είμαι λιγότερο ενεργειακά αποδοτικός από ένα εξειδικευμένο κομμάτι σιδήρου κατά 10^16 φορές (10 τετρ.). Ένα άλλο θέμα είναι το κόστος της ενέργειας. Μια φθηνή πηγή ενέργειας είναι τα ντόνατς στα 23 σεντς ανά 200 χιλιοθερμίδες. Έχω κόστος ηλεκτρικού ρεύματος 15 σεντς ανά κιλοβατώρα, που είναι 6,7 φορές φθηνότερο από τα ντόνατς. Ως αποτέλεσμα, το κόστος ενέργειας από άποψη κατακερματισμού για μένα, ως ανθρακωρύχος, είναι 67 τετρασεκατομμύρια φορές υψηλότερο. Ναι, είναι ξεκάθαρο ότι δεν θα το πάρω. Καλή τύχη με τη χειροκίνητη εξόρυξη Bitcoin, και αυτό δεν λαμβάνει καν υπόψη το κόστος χαρτιού και στυλό!