Υπογραφές δακτυλίου (ring signatures): πώς κρύβεται ο αποστολέας

· Ανάγνωση: 7 λεπ.

Μια υπογραφή δακτυλίου (ring signature) σας επιτρέπει να υπογράψετε εκ μέρους μιας ομάδας, ώστε οποιοσδήποτε να μπορεί να ελέγξει ότι η υπογραφή προήλθε από ένα από τα κλειδιά της ομάδας, χωρίς κανείς να μπορεί να πει από ποιο. Αυτό το άρθρο εξηγεί πώς λειτουργούν οι υπογραφές δακτυλίου, από τη δημοσίευση του 2001 που τις παρουσίασε έως τα key images και το CLSAG, και δείχνει πώς το Blocknet χρησιμοποιεί δακτύλιο 16 μελών για να κρατά ιδιωτικό τον αποστολέα κάθε πληρωμής.

Τι είναι η υπογραφή δακτυλίου;

Σύντομη απάντηση

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

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

Από πού προέρχονται οι υπογραφές δακτυλίου;

Οι Ron Rivest, Adi Shamir και Yael Tauman παρουσίασαν τις υπογραφές δακτυλίου στο ASIACRYPT 2001 σε μια δημοσίευση με τίτλο «How to Leak a Secret». Το παράδειγμά τους είναι ένα μέλος της κυβέρνησης που θέλει να διαρρεύσει μια ιστορία σε έναν δημοσιογράφο με τρόπο που αποδεικνύει ότι προέρχεται από το υπουργικό συμβούλιο χωρίς να αποκαλύπτει ποιο μέλος. Υπογράφει με το δικό του κλειδί μαζί με τα δημόσια κλειδιά των άλλων μελών, και ο δημοσιογράφος μπορεί να επαληθεύσει την υπογραφή χωρίς να μάθει ποιος την έγραψε.

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

Πώς λειτουργεί μια υπογραφή δακτυλίου;

Τα σύγχρονα σχήματα που χρησιμοποιούνται στα κρυπτονομίσματα χτίζουν τον βρόχο από hashes και κλειδιά ελλειπτικών καμπυλών. Ακολουθεί η ιδέα σε απλά βήματα για έναν δακτύλιο 16 δημόσιων κλειδιών:

  1. Ξεκινήστε από τη δική σας θέση. Ο υπογράφων επιλέγει έναν τυχαίο μυστικό αριθμό και υπολογίζει το hash του μαζί με το μήνυμα. Αυτό το hash γίνεται η πρόκληση (challenge) για την επόμενη θέση του δακτυλίου.
  2. Πλαστογραφήστε μια απάντηση για κάθε άλλη θέση. Για καθένα από τα άλλα 15 μέλη, ο υπογράφων επιλέγει μια τυχαία απάντηση και τη συνδυάζει με το δημόσιο κλειδί του μέλους και την τρέχουσα πρόκληση για να υπολογίσει την πρόκληση της επόμενης θέσης.
  3. Κλείστε τον δακτύλιο. Αφού κάνει όλο τον κύκλο, η αλυσίδα επιστρέφει στη θέση του υπογράφοντος. Μόνο όποιος κατέχει το ιδιωτικό κλειδί αυτής της θέσης μπορεί να υπολογίσει τη μία απάντηση που κάνει την αλυσίδα να καταλήξει ακριβώς εκεί που ξεκίνησε.

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

Πώς σταματούν τα key images τη διπλή δαπάνη;

Μια απλή υπογραφή δακτυλίου έχει ένα κενό όταν πρόκειται για χρήματα: αν κάθε δαπάνη κρύβεται ανάμεσα σε άλλες εξόδους, το δίκτυο δεν μπορεί να δει ότι τα ίδια νομίσματα ξοδεύτηκαν δύο φορές. Οι συνδέσιμες υπογραφές δακτυλίου το διορθώνουν. Οι Joseph Liu, Victor Wei και Duncan Wong περιέγραψαν το πρώτο τέτοιο σχήμα, το LSAG, στο ACISP 2004 (ePrint 2004/027). Δύο υπογραφές που φτιάχτηκαν με το ίδιο ιδιωτικό κλειδί μπορούν να συνδεθούν μεταξύ τους, ενώ ο υπογράφων εξακολουθεί να κρύβεται μέσα στον δακτύλιο.

Ο σχεδιασμός CryptoNote του 2013 το μετέτρεψε στο key image. Για μια έξοδο με ιδιωτικό κλειδί x και δημόσιο κλειδί P, το πορτοφόλι υπολογίζει I = x · Hp(P), όπου το Hp αντιστοιχίζει μέσω hash το δημόσιο κλειδί σε ένα σημείο της καμπύλης. Η υπογραφή αποδεικνύει ότι το I ανήκει σε όποιο μέλος του δακτυλίου υπέγραψε, χωρίς να λέει ποιο. Επειδή το key image εξαρτάται μόνο από την έξοδο που ξοδεύεται, μια νέα δαπάνη αυτής της εξόδου δίνει πάντα το ίδιο I. Κάθε κόμβος κρατά μια λίστα με τα key images που έχει ήδη δει και απορρίπτει κάθε συναλλαγή που επαναλαμβάνει ένα από αυτά.

Από το MLSAG στο CLSAG

Τα κρυπτονομίσματα που κρύβουν και τα ποσά χρειάζονται η υπογραφή δακτυλίου να αποδεικνύει και ένα δεύτερο γεγονός: ότι το κρυφό ποσό εισόδου ταιριάζει με αυτό που ξοδεύει η συναλλαγή. Η δημοσίευση του Shen Noether του 2015 «Ring Signature Confidential Transactions for Monero» (RingCT) το έκανε με το MLSAG, μια υπογραφή δακτυλίου πάνω σε δύο σύνολα κλειδιών, ένα για την κυριότητα και ένα για τις δεσμεύσεις των ποσών.

Το CLSAG, από τους Brandon Goodell, Sarang Noether και Arthur Blue (ePrint 2019/654), αποδεικνύει τα ίδια δύο γεγονότα πιο συμπαγώς. Το Monero πέρασε από το MLSAG στο CLSAG με την αναβάθμιση του Οκτωβρίου 2020. Η τεκμηρίωση του Monero αναφέρει περίπου 20% ταχύτερη επαλήθευση και μια τυπική συναλλαγή δύο εισόδων και δύο εξόδων να μικραίνει από περίπου 2,5 kB σε 1,9 kB.

Τι σημαίνει το μέγεθος του δακτυλίου για το απόρρητο;

Σύντομη απάντηση

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

Τα δολώματα είναι πραγματικές έξοδοι από την αλυσίδα, οπότε καθένα θα μπορούσε πράγματι να είναι το νόμισμα που ξοδεύεται. Αν οι δακτύλιοι μπορούσαν να διαφέρουν, ένα πορτοφόλι που διάλεγε ασυνήθιστο μέγεθος θα σημάδευε τις δικές του συναλλαγές. Το Monero αύξησε το μέγεθος του δακτυλίου από 11 σε 16 με την αναβάθμιση του Αυγούστου 2022, και το Blocknet χρησιμοποιεί 16 για κάθε είσοδο με κανόνα συναίνεσης.

Πώς χρησιμοποιεί το Blocknet τις υπογραφές δακτυλίου

Κάθε είσοδος του Blocknet υπογράφεται με CLSAG και RingCT πάνω σε δακτύλιο ακριβώς 16 εξόδων. Οι κανόνες επιβάλλονται από τη συναίνεση, οπότε κανένα πορτοφόλι δεν μπορεί να τους παρακάμψει:

Η μορφή συναλλαγών δεν έχει διαφανή λειτουργία, οπότε κάθε πληρωμή στην αλυσίδα φέρει δακτυλίους σαν αυτούς. Οι υπογραφές δακτυλίου κρύβουν τον αποστολέα· οι stealth διευθύνσεις μίας χρήσης κρύβουν τον παραλήπτη, και οι δεσμεύσεις Pedersen με Bulletproofs κρύβουν το ποσό. Το άρθρο πώς το Blocknet κρατά τις πληρωμές ιδιωτικές εξηγεί καθένα από αυτά τα επίπεδα και τι σημαίνουν όταν πληρώνετε κάποιον.

Τι έρχεται με την αναβάθμιση Faraday

Το Blocknet σχεδιάζει μια αναβάθμιση δικτύου με το όνομα Faraday, με ενεργοποίηση προγραμματισμένη γύρω στις 16 Φεβρουαρίου 2027 σύμφωνα με το blocknetcrypto.com. Με τα λόγια του ιστότοπου: «Σήμερα μια δαπάνη κρύβεται ανάμεσα σε 16 εξόδους. Μετά το Faraday, κρύβεται ανάμεσα σε κάθε έξοδο της αλυσίδας». Το Faraday θα φέρει επίσης νέες αποδείξεις δαπάνης, τις οποίες ο ιστότοπος περιγράφει ως «φτιαγμένες έτσι ώστε ένας κβαντικός υπολογιστής να μην μπορεί να πλαστογραφήσει μια δαπάνη». Ο σχεδιασμός, οι δοκιμές και ο ανταγωνιστικός έλεγχος (adversarial review) βρίσκονται σε εξέλιξη, και οι ημερομηνίες είναι προγραμματισμένες, όχι οριστικές.

Αποκτήστε BNT για να στέλνετε ιδιωτικά

Ένας απλός τρόπος να αποκτήσετε νομίσματα που χρησιμοποιούν αυτούς τους δακτυλίους είναι να τα εξορύξετε. Ο miner seine είναι δωρεάν, ανοιχτού κώδικα και προσαρμόζεται μόνος του στον υπολογιστή σας, και το bntpool.com είναι το προεπιλεγμένο pool του, οπότε μπορείτε να κάνετε εξόρυξη μέσα σε λίγα λεπτά. Ο οδηγός εξόρυξης καλύπτει τη ρύθμιση, και μπορείτε να κάνετε εξόρυξη απευθείας στη διεύθυνσή σας ή σε ένα όνομα Blocknet ID.

Συχνές ερωτήσεις

Ποια είναι η διαφορά ανάμεσα σε υπογραφή δακτυλίου και ομαδική υπογραφή;

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

Τι είναι το key image σε μια υπογραφή δακτυλίου;

Το key image είναι μια τιμή που υπολογίζεται από το ιδιωτικό κλειδί της εξόδου που ξοδεύεται. Η ίδια έξοδος δίνει πάντα το ίδιο key image, οπότε το δίκτυο απορρίπτει δεύτερη δαπάνη της, όμως το key image δεν αποκαλύπτει ποιο μέλος του δακτυλίου είναι το πραγματικό. Μετατρέπει την υπογραφή δακτυλίου σε συνδέσιμη υπογραφή δακτυλίου που αποτρέπει τη διπλή δαπάνη.

Τι είναι το CLSAG;

Το CLSAG είναι ένα σχήμα συνδέσιμης υπογραφής δακτυλίου που περιέγραψαν οι Brandon Goodell, Sarang Noether και Arthur Blue το 2019. Αποδεικνύει ότι ο υπογράφων κατέχει μία έξοδο του δακτυλίου και ότι τα ποσά ισοσκελίζονται, με ένα key image που σταματά τις διπλές δαπάνες. Το Monero το υιοθέτησε τον Οκτώβριο του 2020, και το Blocknet υπογράφει κάθε είσοδο με CLSAG και RingCT.

Τι μέγεθος δακτυλίου χρησιμοποιεί το Blocknet;

Το Blocknet χρησιμοποιεί δακτύλιο ακριβώς 16 μελών για κάθε είσοδο: την πραγματική έξοδο συν 15 δολώματα (decoys), καθένα από τα οποία είναι μια πραγματική έξοδος που βρίσκεται ήδη στην αλυσίδα. Η συναίνεση απορρίπτει κάθε άλλο μέγεθος. Επειδή κάθε είσοδος χρησιμοποιεί το ίδιο μέγεθος, το μέγεθος του δακτυλίου δεν μπορεί ποτέ να ξεχωρίσει μια συναλλαγή, και η πραγματική έξοδος βρίσκεται σε τυχαία θέση στον δακτύλιο.

Κρύβουν οι υπογραφές δακτυλίου το ποσό μιας πληρωμής;

Όχι. Μια υπογραφή δακτυλίου κρύβει ποια έξοδος πλήρωσε. Τα ποσά κρύβονται από ένα ξεχωριστό επίπεδο: τις δεσμεύσεις Pedersen, που κλειδώνουν έναν αριθμό χωρίς να τον δείχνουν, και τις αποδείξεις εύρους Bulletproofs, που αποδεικνύουν ότι κάθε ποσό είναι έγκυρο. Το Blocknet τα χρησιμοποιεί όλα μαζί σε κάθε συναλλαγή, μαζί με stealth διευθύνσεις μίας χρήσης που κρύβουν τον παραλήπτη.