Τι είναι ένα Nonce στα Κρυπτονομίσματα; Εξόρυξη Bitcoin, Ethereum, Κρυπτογραφία

Τι είναι ένα Nonce στα Κρυπτονομίσματα; Εξόρυξη Bitcoin, Ethereum, Κρυπτογραφία

Τον Δεκέμβριο του 2010, σε μια σκηνή στο Chaos Communication Congress στο Βερολίνο, μια μικρή ομάδα που ονομαζόταν fail0verflow ανακοίνωσε ότι είχε εξαγάγει το κύριο κλειδί υπογραφής της Sony για το PlayStation 3. Το exploit δεν έσπασε μια ελλειπτική καμπύλη 256-bit. Δεν έσπασε το AES. Εκμεταλλεύτηκε το γεγονός ότι το σύστημα υπογραφής κώδικα της Sony επαναχρησιμοποιούσε τον ίδιο αριθμό για κάθε υπογραφή που παρήγαγε. Αυτός ο αριθμός ήταν ανοησία.

Η ίδια λέξη, «nonce», εμφανίζεται σε τρεις γωνιές του κόσμου των κρυπτονομισμάτων που δεν έχουν σχεδόν τίποτα άλλο κοινό. Είναι η μεταβλητή που ένας εξορύκτης Bitcoin κάνει κύκλους τρισεκατομμυρίων φορές το δευτερόλεπτο αναζητώντας ένα έγκυρο hash μπλοκ. Είναι ο μετρητής που χρησιμοποιεί το πορτοφόλι Ethereum σας για την αλληλουχία των εξερχόμενων συναλλαγών και ο λόγος που μια κολλημένη συναλλαγή μπλοκάρει κάθε επόμενη που υπογράφετε. Είναι η μοναδική αξία που χρειάζεται ένας κρυπτογράφος AES-GCM για να αποτρέψει τη διαρροή του περιεχομένου δύο κρυπτογραφημένων μηνυμάτων. Μία λέξη, τρεις εργασίες, καμία από αυτές δεν είναι εναλλάξιμη. Το να μπερδεύεις τη μία με την άλλη είναι ο τρόπος με τον οποίο οι νεοφερμένοι ερμηνεύουν λανθασμένα τα σφάλματα «nonce too low», πώς οι εξορύκτες σχεδιάζουν αδύνατες ρυθμίσεις και πώς συστήματα όπως το PS3 χάνουν τη ρίζα εμπιστοσύνης τους.

Μια nonce 32-bit που ονομάζεται "αριθμός που χρησιμοποιείται μία φορά": προέλευση

Το παρακρούσμα υπάρχει παντού. «Nonce σημαίνει αριθμός που χρησιμοποιείται μία φορά». Σχεδόν αληθές, ιστορικά λανθασμένο. Η αγγλική λέξη προηγείται της κρυπτογραφίας κατά περίπου 750 χρόνια. Η λέξη «For the nonce» εμφανίζεται σε χειρόγραφα της Μέσης Αγγλίας γύρω στο 1200. Σήμαινε «για αυτή τη συγκεκριμένη περίσταση».

Η κρυπτογραφία δανείζεται τη λέξη το 1978, με το πρωτόκολλο ελέγχου ταυτότητας Needham-Schroeder. Εκεί, η καθοριστική ιδιότητα δεν είναι η τυχαιότητα. Είναι η μοναδικότητα, μέσα σε ένα καθορισμένο πεδίο εφαρμογής. Η Wikipedia, ανατρέχοντας στην πραγματική πρακτική, αποκαλεί μια nonce «έναν αυθαίρετο αριθμό που μπορεί να χρησιμοποιηθεί μόνο μία φορά σε μια κρυπτογραφική επικοινωνία». Ένας μετρητής πληροί τις προϋποθέσεις. Το ίδιο ισχύει και για μια χρονική σήμανση. Το ίδιο ισχύει και για μια τυχαία τιμή ή οποιοδήποτε μείγμα των τριών. Αυτό που έχει σημασία είναι ότι, μέσα στο σύστημα, η ίδια nonce δεν επανεμφανίζεται ποτέ με το ίδιο κλειδί ή στο ίδιο πλαίσιο.

Μία λέξη κάνει τη δουλειά και η δουλειά χωρίζεται σε τρεις κατευθύνσεις. Το nonce εξόρυξης του Bitcoin ποικίλλει μέχρι το hash του μπλοκ να πέσει κάτω από τον στόχο δυσκολίας. Το nonce λογαριασμού του Ethereum είναι ένας μετρητής που το δίκτυο αρνείται να αφήσει να επαναληφθεί. Ένα κρυπτογραφικό nonce στη συμμετρική κρυπτογράφηση είναι μια τιμή που συνδυάζεται με ένα κλειδί και η επαναχρησιμοποίησή του μόλις ανοίξει η κρυπτογράφηση.

Η λέξη είναι χαλαρή. Τα συμφραζόμενα όχι.

Nonce σε Κρυπτογράφηση

Πώς λειτουργεί το nonce στην εξόρυξη Bitcoin

Στο Bitcoin, η τιμή nonce καταλαμβάνει ένα πεδίο 32-bit μέσα στην κεφαλίδα μπλοκ των 80 byte. Τέσσερα byte. Οι τιμές κυμαίνονται από το μηδέν έως τα 4.294.967.295. Λίγο κάτω από 4,3 δισεκατομμύρια πιθανούς αριθμούς, οι οποίοι ακουγόντουσαν τεράστιοι όταν ο Satoshi έγραψε το πρωτόκολλο και τώρα εξαντλούνται από ένα ASIC μεγέθους γραφείου σε μικροδευτερόλεπτα.

Η εξόρυξη είναι ένας αγώνας δρόμου για να βρεθεί μια τιμή σε αυτό το πεδίο που παράγει ένα έγκυρο hash μπλοκ. Πάρτε την κεφαλίδα των 80 byte. Περάστε την δύο φορές από το SHA-256, τη κρυπτογραφική συνάρτηση hash στην οποία εκτελείται το blockchain του bitcoin. Βγαίνει ένας αριθμός 256 bit. Συγκρίνετε αυτόν τον αριθμό με το hash-στόχο που ορίζεται από τον στόχο δυσκολίας του δικτύου, τον μηχανισμό συναίνεσης που οδηγεί στην απόδειξη εργασίας. Κάτω από τον στόχο; Έγκυρο μπλοκ, κερδίζει ο εξορύκτης. Πάνω από τον στόχο; Αυξήστε το nonce κατά ένα και επαναλάβετε. Οι εξορύκτες Bitcoin επαναλαμβάνουν αυτό μέχρι κάποιος να βρει ένα έγκυρο nonce και το νέο μπλοκ να προστεθεί στο blockchain.

Γιατί ένα τόσο μικρό πεδίο για μια τόσο μεγάλη εργασία; Δομικοί λόγοι. Το nonce είναι το φθηνότερο κομμάτι της κεφαλίδας που μπορεί να μεταλλαχθεί ένας miner. Κάθε άλλο πεδίο έχει εξαρτήσεις. Η ρίζα merkle συνοψίζει τις συναλλαγές του μπλοκ, επομένως η αλλαγή της αναγκάζει ολόκληρο το δέντρο συναλλαγών να υπολογίσει ξανά πριν δοκιμαστεί ένα νέο hash. Το nonce τα παρακάμπτει όλα αυτά. Κάθε προσπάθεια κατακερματισμού είναι ανεξάρτητη. Η αύξηση του nonce δεν δίνει μεγαλύτερη πρόοδο από ό,τι θα έκανε η επιλογή μιας τυχαίας τιμής. Ωμή βία, ντυμένη με γλώσσα συναίνεσης.

Ο σχεδιασμός άντεξε για περίπου ένα χρόνο. Έπειτα, τα ASIC το χάλασαν. Οι σύγχρονοι εξορύκτες εξαντλούν ολόκληρο τον χώρο των 4,3 δισεκατομμυρίων nonce σε μικροδευτερόλεπτα, όχι σε δευτερόλεπτα. Ένα Bitmain Antminer S21 Pro τρέχει με 234 terahashes ανά δευτερόλεπτο. Το πλήρες πεδίο nonce εξαντλείται σε αυτό το υλικό σε περίπου 18 μικροδευτερόλεπτα . Από τον Μάιο του 2026, το συνολικό hashrate του δικτύου bitcoin βρίσκεται κοντά στα 996 EH/s, με δυσκολία στα 132,47 τρισεκατομμύρια. Ένα μόνο S21 Pro επεξεργάζεται κάθε πιθανή τιμή nonce δεκάδες χιλιάδες φορές ανά δευτερόλεπτο από μόνο του.

Έτσι, το πρωτόκολλο του Satoshi αφήνει στον εξορύκτη δύο καθαρές εξόδους μόλις εξαντληθεί ο χώρος των 32 bit. Η πρώτη είναι η "επιπλέον nonce", ένα πεδίο που βρίσκεται μέσα στο scriptSig της συναλλαγής coinbase. Το BIP34 το κωδικοποιεί. Δύο έως εκατό byte, ελεγχόμενο από τον εξορύκτη. Μεταλλάξτε την επιπλέον nonce και το coinbase TXID αλλάζει, η ρίζα merkle πρέπει να υπολογιστεί ξανά, η κεφαλίδα του μπλοκ αλλάζει και ανοίγει μια νέα αναζήτηση nonce 32 bit. Η δεύτερη έξοδος είναι η αύξηση της χρονικής σήμανσης ή η περιστροφή των bit έκδοσης εντός του επιτρεπόμενου εύρους του πρωτοκόλλου. Οι ομάδες εξόρυξης σήμερα τα κυκλώνουν όλα ως μέρος της κανονικής λειτουργίας. Η προσαρμογή της nonce είναι η φθηνότερη μετάλλαξη. Η προσαρμογή της επιπλέον nonce είναι η δεύτερη φθηνότερη. Οι περιστροφές merkle και χρονικής σήμανσης βρίσκονται πιο μακριά, κατά σειρά κόστους επαναϋπολογισμού για την καθεμία.

Όταν κάποιος προσγειώσει ένα hash κάτω από τον στόχο — οι miners το αποκαλούν «χρυσό nonce» — το νέο μπλοκ πετάει μέσω του δικτύου peer-to-peer και κάθε ανταγωνιστής εγκαταλείπει την τρέχουσα αναζήτησή του για να ξεκινήσει από την αρχή στον επόμενο γύρο.

Μοντέλο ASIC Hashrate Ώρα να εξαντληθεί η nonce των 32-bit Αποδοτικότητα
Antminer S21 200 TH/s ~21 µs 17,5 J/TH
Antminer S21 Pro 234 TH/s ~18 µs 15 J/TH
Antminer S21 XP 270 TH/s ~16 µs 13,5 J/TH

Ένα πραγματικό, πρόσφατο παράδειγμα αγκυροβολεί την αφαίρεση. Το μπλοκ 948.000, που εξορύχθηκε στις αρχές του 2026, έχει τον κατακερματισμό μπλοκ `00000000000000000001b01841afc366a4f999b291c8563ee0d0db956fc2db44` και μια νικηφόρα τιμή nonce 2.582.463.598 . Αυτός ο μοναδικός ακέραιος, σε συνδυασμό με την υπόλοιπη κεφαλίδα του μπλοκ, παρήγαγε έναν κατακερματισμό αρκετά χαμηλό ώστε να προστεθεί στο blockchain. Κάθε άλλη nonce που δοκίμασε ο εξορύκτης του σε αυτόν τον γύρο παρήγαγε κάτι πολύ μεγάλο.

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

Hash nonce vs account nonce: ίδια λέξη, διαφορετική δουλειά

Η λέξη «nonce» επαναχρησιμοποιείται για κάτι ακόμα στα κρυπτονομίσματα και η επικάλυψη αυτή αποτελεί τη μεγαλύτερη πηγή σύγχυσης μεταξύ των νεοεισερχόμενων. Η λέξη nonce εξόρυξης του Bitcoin είναι μια μεταβλητή αναζήτησης. Η λέξη nonce λογαριασμού του Ethereum είναι ένας μετρητής. Μοιράζονται ένα όνομα και σχεδόν τίποτα άλλο.

Hash nonce (Bitcoin) Λογαριασμός χωρίς χρέωση (Ethereum)
Δουλειά Αναζήτηση για έγκυρο hash κάτω από τον στόχο Ακολουθία εξερχόμενων συναλλαγών ανά λογαριασμό
Πού ζει Κεφαλίδα μπλοκ (32 bit) Κατάσταση λογαριασμού (πλήρης ακέραιος, ξεκινά από το 0)
Ποιος το μεταλλάσσει Ο εξορύκτης, σε υλικό, δισεκατομμύρια ανά δευτερόλεπτο Το πορτοφόλι, αυτόματα, ένα ανά αποστολή
Τι σημαίνει «λάθος» Το λαχείο αποτυγχάνει, δοκιμάστε την επόμενη μηδενική τιμή Η συναλλαγή απορρίφθηκε ή κολλήσει
Δεσμευμένος/η με τη συναίνεση; Ναι, αυτή είναι απόδειξη εργασίας Όχι, αυτή είναι προστασία επανάληψης

Ένα hash nonce είναι ένας προσωρινός αριθμός που πετάει ένας miner. Ένα nonce λογαριασμού είναι μια μόνιμη κατάσταση που είναι χαραγμένη στην προβολή της διεύθυνσής σας από το δίκτυο. Το να μπερδεύεις το ένα με το άλλο — αντιμετωπίζοντας το nonce blockchain ενός μπλοκ Bitcoin σαν να ήταν μετρητής ακολουθίας — είναι ο τρόπος με τον οποίο οι άνθρωποι διαβάζουν ένα σφάλμα "nonce πολύ χαμηλό" του Ethereum και υποθέτουν ότι η ρύθμιση εξόρυξης είναι προβληματική. Διαφορετικά blockchains, διαφορετικές εργασίες, η ίδια λέξη. Ακόμα και μέσα σε ένα μόνο οικοσύστημα, ο ρόλος ενός nonce στις λειτουργίες blockchain εξαρτάται εξ ολοκλήρου από το αν παρακολουθείτε το επίπεδο συναίνεσης ή το επίπεδο λογαριασμού.

Μηδενικός λογαριασμός Ethereum και το πρόβλημα της κολλημένης συναλλαγής

Κάθε εξωτερικός λογαριασμός στο Ethereum φέρει τη δική του μηδενική τιμή (nonce). Ο μετρητής ξεκινά από το μηδέν, την πρώτη φορά που η διεύθυνση στέλνει ποτέ μια συναλλαγή. Από εκεί και πέρα, ανεβαίνει κατά ένα για κάθε συναλλαγή που καταλήγει σε ένα μπλοκ. Όταν στέλνετε κάτι, το πορτοφόλι σας ζητά από το δίκτυο την τρέχουσα τιμή, επισυνάπτει τον επόμενο αριθμό στη σειρά και υπογράφει. Το δίκτυο δέχεται την εξερχόμενη ουρά μόνο με αυστηρή σειρά. Μηδενική τιμή (nonce) 0, μετά 1, μετά 2. Δεν επιτρέπονται κενά.

Αυτή η αυστηρή σειρά είναι που δίνει στο Ethereum την προστασία επανάληψης. Μια υπογεγραμμένη συναλλαγή συνδέεται με ένα συγκεκριμένο nonce, και από το EIP-155, επίσης με ένα συγκεκριμένο chainID. Ένας εισβολέας δεν μπορεί να αναμεταδώσει μια παλιά εκτελεσμένη συναλλαγή σαν να ήταν καινούργια. Μέχρι τη στιγμή που φτάνει η αναμετάδοση, το nonce του λογαριασμού έχει ήδη προχωρήσει πέρα από αυτό. Το chainID τερματίζει τις επαναλήψεις cross-chain στην ίδια κίνηση. Μέσα σε μια αλυσίδα, μια επιβεβαιωμένη συναλλαγή βρίσκεται σε ένα σημείο σε έναν μετρητή που έχει ήδη μετακινηθεί.

Η ίδια άκαμπτη σειρά δημιουργεί το σημείο πόνου στο οποίο συνεχίζουν να αντιμετωπίζουν τα νέα πορτοφόλια Ethereum. Μια συναλλαγή ολοκληρώνεται με πολύ χαμηλό φιλοδώρημα. Οι επικυρωτές την παρακάμπτουν. Το mempool την αφαιρεί από την ουρά προτεραιότητας. Η συναλλαγή τώρα βρίσκεται σε εκκρεμότητα — δεν επιβεβαιώνεται, δεν αποτυγχάνει, απλώς έχει κολλήσει. Το χειρότερο είναι ότι κάθε μεταγενέστερη συναλλαγή με την ίδια διεύθυνση υπογράφει ένα υψηλότερο nonce. Το δίκτυο αρνείται να αγγίξει κανένα από αυτά μέχρι η κολλημένη συναλλαγή είτε να επιβεβαιωθεί είτε να αντικατασταθεί. Μία αργή συναλλαγή σταματάει ολόκληρη την ουρά.

Η λύση βρίσκεται σε έναν μηχανισμό που ονομάζεται αντικατάσταση με χρέωση. Το πορτοφόλι σας αναμεταδίδει μια νέα συναλλαγή στην ίδια nonce με την κολλημένη, αλλά με περισσότερο αέριο. Το EIP-1559, το μοντέλο τιμολόγησης φυσικού αερίου που τρέχει το Ethereum από την αναβάθμιση του Λονδίνου τον Αύγουστο του 2021, θέτει τον κανόνα: η νέα συναλλαγή πρέπει να αυξήσει τόσο το `maxFeePerGas` όσο και το `maxPriorityFeePerGas` κατά τουλάχιστον δέκα τοις εκατό σε σχέση με την αρχική. Θέλετε να τερματίσετε την κολλημένη συναλλαγή εντελώς αντί να την αντικαταστήσετε; Στείλτε μια αυτομεταφορά μηδενικού ETH στην κολλημένη nonce, με υψηλότερο φιλοδώρημα. Η υποδοχή καταναλώνει τον εαυτό της και κάθε μεταγενέστερη συναλλαγή στην ουρά ξεμπλοκάρεται.

Τα στοιχεία του Μαΐου 2026, για λόγους συμφραζομένων. Η μέση προτεραιότητα κυμαίνεται κοντά στα 1,875 Gwei. Μια τυπική ακύρωση βενζίνης 21.000 δολαρίων φτάνει περίπου τα 0,05 δολάρια σε μια ήρεμη μέρα και ανεβαίνει στα χαμηλά δολάρια κατά τη διάρκεια της συμφόρησης. Υπάρχει ένα μάθημα που όλοι τελικά μαθαίνουν με τον δύσκολο τρόπο: πάντα να αντικαθιστάτε πρώτα το χαμηλότερο εκκρεμές μηδενικό ποσό. Η αύξηση του τέλους σε μια μεταγενέστερη συναλλαγή ενώ ο προκάτοχός του εξακολουθεί να έχει κολλήσει δεν επιτυγχάνει απολύτως τίποτα.

Η αφαίρεση λογαριασμών αναδιαμορφώνει λίγο αυτήν την ιστορία. Οι έξυπνοι λογαριασμοί ERC-4337 χρησιμοποιούν μια δισδιάστατη nonce τιμή (2D nonce), διαιρώντας τον ακέραιο σε ένα "κλειδί" 192-bit και μια ακολουθία 64-bit. Διαφορετικά κλειδιά σχηματίζουν παράλληλες ροές συναλλαγών. Μια σταματημένη δέσμη σε ένα κλειδί δεν μπλοκάρει την εργασία σε ένα άλλο. Η nonce τιμή του λογαριασμού έχει επιτέλους ξεπεράσει το να είναι ένας μόνο γραμμικός μετρητής.

Ένας τελευταίος μύθος που αξίζει να καταρριφθεί. Η μετάβαση του Ethereum σε proof of stake κατά τη συγχώνευση, τον Σεπτέμβριο του 2022, δεν αφαίρεσε το nonce του λογαριασμού. Αυτό που εξαφανίστηκε ήταν το nonce εξόρυξης μέσα στην κεφαλίδα του μπλοκ, επειδή οι επικυρωτές επιλέγονται πλέον από την υποδοχή και όχι από ένα παζλ κατακερματισμού. Το nonce του λογαριασμού παρέμεινε ακριβώς εκεί που βρισκόταν πάντα, στην κατάσταση trie του λογαριασμού.

Κρυπτογραφική μηδενική τιμή στην κρυπτογράφηση: η καταστροφική εκδοχή

Βγείτε έξω από το blockchain και το κρυπτογραφικό nonce θα κάνει πιο καθαρή δουλειά. Αν το κάνετε λάθος, θα σας πέσει το πάτωμα από κάτω.

Κάθε σύγχρονος κρυπτογραφημένος κώδικας με έλεγχο ταυτότητας (nonce) αντιστοιχίζει ένα μυστικό κλειδί με μια nonce ανά μήνυμα. Το AES-GCM, το βασικό εργαλείο στο TLS 1.3, χρησιμοποιεί 96 bit. Το NIST SP 800-38D έγραψε την προδιαγραφή. Το ChaCha20-Poly1305, η εναλλακτική λύση που κωδικοποιήθηκε στο RFC 8439 (Ιούνιος 2018), αντιγράφει το ίδιο μήκος nonce 96 bit και το αντιστοιχίζει με ένα κλειδί 256 bit. Ο κανόνας και στα δύο, σε απλά ελληνικά: κάθε ζεύγος (κλειδί, nonce) εκτελείται ακριβώς μία φορά. Η επαναχρησιμοποίηση δεν είναι μια ήπια υποβάθμιση. Είναι ένας γκρεμός.

Πώς μοιάζει το cliff; Επαναχρησιμοποιήστε ένα nonce σε AES-GCM με ένα κλειδί. Προσποιηθείτε ότι ένας εισβολέας έχει καταγράψει και τα δύο κρυπτογραφημένα κείμενα. Κάνουν XOR και στα δύο μαζί. Αφαιρούν το XOR των δύο υποκείμενων απλών κειμένων. Η εμπιστευτικότητα, εξαφανίζεται σε ένα βήμα. Ακολουθούν τα χειρότερα. Η λειτουργία ελέγχου ταυτότητας του GCM διαρρέει το εσωτερικό δευτερεύον κλειδί ελέγχου ταυτότητας - την τιμή που υπογράφει κάθε κρυπτογράφημα με αυτό το κλειδί. Με το δευτερεύον κλειδί στο χέρι, ο εισβολέας γράφει νέα αυθεντικοποιημένα κρυπτογραφημένα κείμενα και ο νόμιμος παραλήπτης τα αποδέχεται ως πραγματικά. Ένα κρυπτογράφημα τελευταίας τεχνολογίας, με ένα λανθασμένο nonce, γλιστράει κάτω από μια μετατόπιση του Καίσαρα.

Τίποτα από αυτά δεν είναι υποθετικό. Μια δημοσίευση του USENIX WOOT του 2016, με τίτλο "Nonce-Disrespecting Adversaries", σάρωσε τα τελικά σημεία HTTPS παραγωγής και αποκάλυψε 184 διακομιστές που επαναχρησιμοποιούσαν nonces GCM. Οι bugs builds περιελάμβαναν συγκεκριμένες εικόνες Cisco IOS XE και υλικολογισμικό Radware ADC. Το CVE-2016-0270 και πολλά παρακείμενα CVE τα παρακολουθούν.

Η διάλυση του PS3 της Sony τον Δεκέμβριο του 2010 ήταν η ίδια ασθένεια σε διαφορετικό κρυπτογράφημα: ECDSA. Κάθε υπογραφή ECDSA χρειάζεται μια τιμή ανά υπογραφή, γραμμένη ως k , η οποία είναι μοναδική και μυστική. Ο κώδικας υπογραφής της Sony παρέλειψε το μοναδικό μέρος. Κωδίκευσε σκληρά μια σταθερά k και την επαναχρησιμοποίησε σε κάθε υπογραφή. Δώστε σε έναν εισβολέα δύο υπογραφές ECDSA σε διαφορετικά μηνύματα με το ίδιο k , και θα έχουν δύο γραμμικές εξισώσεις σε δύο αγνώστους. Λύστε. Βγαίνει το ιδιωτικό κλειδί υπογραφής, σε κλειστή μορφή. Ο fail0verflow το παρουσίασε στη σκηνή του 27ου Συνεδρίου Επικοινωνίας του Χάους στο Βερολίνο. Το κύριο κλειδί υπογραφής της Sony κυκλοφόρησε στο ανοιχτό Διαδίκτυο μέσα σε λίγες ώρες. Κάθε PS3 που κατασκευάστηκε ποτέ έχασε την αλυσίδα εμπιστοσύνης του αμέσως.

Η ντετερμινιστική επιδιόρθωση, που κωδικοποιήθηκε ως RFC 6979 το 2013, αφαιρεί τη γεννήτρια τυχαίων αριθμών από τη διαδικασία. Παράγωγα k από ένα HMAC του μηνύματος και του ιδιωτικού κλειδιού. Ίδιο μήνυμα, ίδιο κλειδί, ίδιο k — χωρίς RNG για αλλοίωση. Οι σύγχρονες βιβλιοθήκες Bitcoin παρέχουν ντετερμινιστικό ECDSA ως προεπιλογή.

Δύο συμπεράσματα προκύπτουν από αυτές τις ιστορίες, οι οποίες συχνά μπερδεύουν τους προγραμματιστές. Με τους κρυπτογράφους AEAD (AES-GCM, ChaCha20-Poly1305), μια προβλέψιμη nonce είναι μια χαρά. Ένας μετρητής λειτουργεί. Η μοναδικότητα είναι η απόλυτη απαίτηση. Με τις υπογραφές ECDSA και Schnorr, ο κανόνας ανατρέπεται. Ένα προβλέψιμο k είναι καταστροφικό. Η nonce υπογραφής εκεί πρέπει να είναι μοναδική, απρόβλεπτη και μυστική ταυτόχρονα. Η ανάμειξη των δύο στρατοπέδων είναι ακριβώς ο τρόπος με τον οποίο τα σφάλματα επαναχρησιμοποίησης nonce συνεχίζουν να εμφανίζονται στον κώδικα προσαρμοσμένου πορτοφολιού. Ο έλεγχος του 2024 του έργου δημιουργίας αντιγράφων ασφαλείας Kopia κατέγραψε έναν τυχαίο κίνδυνο σύγκρουσης GCM-nonce σε κλειδιά μακράς εκτέλεσης και οι αναφορές διείσδυσης σε νεότερα SDK καταγράφουν παρόμοια ευρήματα μήνα με το μήνα.

Nonce vs salt vs IV: αποφεύγοντας την τριμερή σύγχυση

Οι άνθρωποι χρησιμοποιούν τρεις λέξεις σε άρθρα ασφαλείας σαν να εννοούν το ίδιο πράγμα. Αλάτι. Τίποτα. IV. Δεν είναι συνώνυμα.

Το Salt ανήκει στον κατακερματισμό κωδικών πρόσβασης. Παίρνετε μια τυχαία τιμή ανά χρήστη, την αναμειγνύετε με το hash και τώρα οι προ-υπολογισμένοι πίνακες ουράνιου τόξου για το "password123" σταματούν να λειτουργούν στη βάση δεδομένων σας. Ένα salt βρίσκεται σε απλό κείμενο δίπλα στο hash. Κανείς δεν το κρύβει. Το να μοιράζονται δύο χρήστες ένα salt είναι αμήχανο. επιτρέπει σε έναν εισβολέα που σπάει τον έναν να σπάσει και τον δικό του δίδυμο. Δεν είναι το τέλος του κόσμου.

Η μηδενική τιμή ανήκει στην ανταλλαγή μηνυμάτων και στις υπογραφές. Ανά μήνυμα σε συμμετρική κρυπτογράφηση. Ανά υπογραφή στο ECDSA. Οι κρυπτογράφοι AEAD όπως το AES-GCM εκθέτουν την μηδενική τιμή καθαρά, με τον τρόπο που ένα αλάτι βρίσκεται δίπλα σε ένα hash. Το ECDSA την κρύβει, την αντιμετωπίζει ως μυστικό και απαιτεί νέα τυχαιότητα κάθε φορά. Σε κάθε περίπτωση, οι συγκρούσεις δεν είναι αδέξιες. Είναι μοιραίες. Όλη η εγγύηση, εξαφανίστηκε.

Το IV — συντομογραφία του initialization vector — είναι το παλαιότερο όνομα για αυτό που οι νεότερες προδιαγραφές ονομάζουν nonce. Οι λειτουργίες CBC και CTR χρησιμοποιούσαν τη λέξη για χρόνια. Η σύγχρονη τεκμηρίωση AEAD άλλαξε, κυρίως επειδή η λέξη «vector» ακουγόταν σαν εργασία στα μαθηματικά και οι άνθρωποι συνέχιζαν να την επαναχρησιμοποιούν. Η λέξη «nonce» βασίζεται περισσότερο στον κανόνα.

Χρειάζεστε έναν κανόνα που να ταιριάζει σε ένα αυτοκόλλητο σημείωμα; Ένα αλάτι προστατεύει ένα μυστικό που αποθηκεύετε. Ένα nonce προστατεύει ένα μυστικό που στέλνετε.

Nonce στα Κρυπτονομίσματα

Γιατί η μηδενική σημασία έχει πέρα από τις ερωτήσεις για την εξόρυξη bitcoin

Ένα nonce είναι ένα μικρό αντικείμενο. Τριάντα δύο bits στο Bitcoin. Ένας μετρητής στο Ethereum. Δώδεκα bytes στο AES-GCM. Φέρει ένα δυσανάλογο βάρος για το μέγεθός του. Για τους απλούς χρήστες, κάθε συναλλαγή Ethereum που έχει κολλήσει, κάθε χειραψία TLS σε έναν τραπεζικό ιστότοπο, κάθε υπογραφή που παράγει ένα πορτοφόλι υλικού εξαρτάται από τον σωστό χειρισμό ενός nonce. Για τους προγραμματιστές, ο κακός χειρισμός nonce είναι το πιο συνηθισμένο σημείο εισόδου για καταστροφικά σφάλματα στον προσαρμοσμένο κρυπτογραφικό κώδικα. Το περιστατικό του PS3 ήταν μια ακραία περίπτωση, αλλά η ίδια λειτουργία αποτυχίας συνεχίζει να εμφανίζεται σε νεότερα SDK πορτοφολιών και εργαλεία δημιουργίας αντιγράφων ασφαλείας. Για τα οικονομικά του Bitcoin, το nonce 32-bit σε συνδυασμό με τον μηχανισμό extra-nonce είναι αυτό που έκανε την εξόρυξη ASIC μια δίκαιη λαχειοφόρο αγορά εξαρχής. Μία από τις πιο σημαντικές επιλογές σχεδιασμού του Satoshi, κρυμμένη σε κοινή θέα μέσα σε ένα ασήμαντο πεδίο κεφαλίδας.

Ένα nonce είναι αυτό που λέει ότι αυτό συνέβη μία φορά, με αυτή τη σειρά, ακριβώς με αυτόν τον τρόπο . Αφαιρέστε το και κάθε σύστημα που εξαρτάται από τη μοναδικότητα καταρρέει σε κάτι που ένας εισβολέας μπορεί να ξαναχτίσει φτηνά. Η συναίνεση σπάει. Η προστασία επανάληψης εξαφανίζεται. Διαρροές κρυπτογράφησης. Οι υπογραφές πλαστογραφούνται.

Καμιά ερώτηση?

Ναι και για τα δύο, με διαφορετικούς τρόπους. Ο Solana διατηρεί τα nonce σε επίπεδο λογαριασμού και προσθέτει ανθεκτικούς λογαριασμούς nonce για υπογραφή εκτός σύνδεσης. Το Ethereum απόδειξης συμμετοχής διατήρησε το nonce λογαριασμού μετά τη συγχώνευση του Σεπτεμβρίου 2022, αλλά αφαίρεσε το nonce εξόρυξης από τις κεφαλίδες μπλοκ, επειδή οι επικυρωτές επιλέγονται πλέον από την υποδοχή και όχι από το παζλ κατακερματισμού.

Στο Ethereum, ο μόνος τρόπος είναι η αντικατάσταση με χρέωση, η οποία ανταλλάσσει σκόπιμα μια μη επιβεβαιωμένη συναλλαγή με μια άλλη στην ίδια τιμή nonce, πληρώνοντας υψηλότερο κόστος. Μετά την επιβεβαίωση, δύο συναλλαγές δεν μπορούν ποτέ να μοιραστούν μια τιμή nonce στον ίδιο λογαριασμό. Στο AES-GCM με ένα κλειδί, η κοινή χρήση μιας τιμής nonce απαγορεύεται εντελώς. Η επαναχρησιμοποίηση παραβιάζει την εμπιστευτικότητα και την αυθεντικοποίηση στο ίδιο βήμα.

Εκτελέστε την εντολή replace-by-fee. Υποβάλετε μια νέα συναλλαγή στο ίδιο nonce με το κολλημένο, με τα `maxFeePerGas` και `maxPriorityFeePerGas` αυξημένα κατά δέκα τοις εκατό ή περισσότερο. Για να ακυρώσετε αντί να το αντικαταστήσετε, στείλτε μια μεταφορά μηδενικής αξίας στη δική σας διεύθυνση σε αυτό το κολλημένο nonce, με υψηλότερο φιλοδώρημα. Πάντα να αντικαθιστάτε πρώτα το χαμηλότερο εκκρεμές nonce.

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

Η φράση συνήθως υποδεικνύει μια τιμή nonce σε επίπεδο λογαριασμού ή ελέγχου ταυτότητας. Φανταστείτε μια τιμή μίας χρήσης που συνδέεται με μια συνεδρία, μια συναλλαγή ή ένα αίτημα API, επομένως το αίτημα δεν μπορεί να αναπαραχθεί. Το "token" εδώ δεν έχει την έννοια του ERC-20. Το OAuth και το OpenID Connect βασίζονται και τα δύο σε tokens nonce κατά τη διάρκεια των ροών ελέγχου ταυτότητας.

Η λέξη "nonce" σημαίνει έναν αριθμό που χρησιμοποιείται μία φορά μέσα σε ένα συγκεκριμένο κρυπτογραφικό πεδίο. Το Bitcoin το χρησιμοποιεί ως πεδίο αναζήτησης 32-bit που ένας εξορύκτης κάνει κύκλο για να βρει ένα έγκυρο hash. Το Ethereum το χρησιμοποιεί ως μετρητή που δίνει εντολή για εξερχόμενες συναλλαγές για έναν λογαριασμό. Η κρυπτογράφηση τη χρησιμοποιεί ως τιμή ανά μήνυμα που, σε συνδυασμό με ένα κλειδί, δεν πρέπει ποτέ να επαναληφθεί.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.