Τι είναι ένα 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 στην εξόρυξη 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 προστατεύει ένα μυστικό που στέλνετε.

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