Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς

Μας ενδιαφέρει το θέμα της ανωνυμίας στα κρυπτονομίσματα εδώ και πολύ καιρό και προσπαθούμε να παρακολουθήσουμε την εξέλιξη των τεχνολογιών σε αυτόν τον τομέα. Στα άρθρα μας έχουμε ήδη συζητήσει λεπτομερώς τις αρχές λειτουργίας εμπιστευτικές συναλλαγές στο Monero, και επίσης πραγματοποιήθηκε συγκριτική ανασκόπηση τεχνολογίες που υπάρχουν στον τομέα αυτό. Ωστόσο, όλα τα ανώνυμα κρυπτονομίσματα σήμερα βασίζονται στο μοντέλο δεδομένων που προτείνεται από το Bitcoin - Unspent Transaction Output (εφεξής UTXO). Για blockchains που βασίζονται σε λογαριασμούς όπως το Ethereum, υπάρχουσες λύσεις για την εφαρμογή της ανωνυμίας και της εμπιστευτικότητας (για παράδειγμα, Mobius ή Αζτέκων) προσπάθησε να αναπαράγει το μοντέλο UTXO σε έξυπνα συμβόλαια.

Τον Φεβρουάριο του 2019, μια ομάδα ερευνητών από το Πανεπιστήμιο του Στάνφορντ και τη Visa Research κυκλοφόρησε προεκτύπωση "Zether: Προς το απόρρητο στον κόσμο των έξυπνων συμβολαίων." Οι συγγραφείς ήταν οι πρώτοι που πρότειναν μια προσέγγιση για τη διασφάλιση της ανωνυμίας σε blockchains που βασίζονται σε λογαριασμούς και παρουσίασαν δύο εκδοχές ενός έξυπνου συμβολαίου: για εμπιστευτικές (απόκρυψη υπολοίπων και ποσών μεταφοράς) και ανώνυμες (απόκρυψη παραλήπτη και αποστολέα) συναλλαγές. Θεωρούμε την προτεινόμενη τεχνολογία ενδιαφέρουσα και θα θέλαμε να μοιραστούμε τον σχεδιασμό της, καθώς και να μιλήσουμε για το γιατί το πρόβλημα της ανωνυμίας σε blockchains που βασίζονται σε λογαριασμούς θεωρείται πολύ δύσκολο και αν οι συγγραφείς κατάφεραν να το λύσουν πλήρως.

Σχετικά με τη δομή αυτών των μοντέλων δεδομένων

Στο μοντέλο UTXO, μια συναλλαγή αποτελείται από "εισόδους" και "εξόδους". Ένα άμεσο ανάλογο των "εκροών" είναι οι λογαριασμοί στο πορτοφόλι σας: κάθε "έξοδος" έχει κάποια ονομαστική αξία. Όταν πληρώνετε κάποιον (από μια συναλλαγή), ξοδεύετε μία ή περισσότερες «εκροές», οπότε γίνονται «εισροές» της συναλλαγής και το blockchain τις επισημαίνει ως δαπανημένες. Σε αυτήν την περίπτωση, ο παραλήπτης της πληρωμής σας (ή εσείς οι ίδιοι, εάν χρειάζεστε αλλαγή) λαμβάνει τα νέα "εκροές". Αυτό μπορεί να αναπαρασταθεί σχηματικά ως εξής:

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς

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

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς

Ανάλυση τεχνολογίας

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

Απόκρυψη υπολοίπων και ποσών μεταφοράς

Χρησιμοποιείται ένα σχήμα κρυπτογράφησης για την κρυπτογράφηση υπολοίπων και μεταφοράς ποσών στο Zether Ελ Γκαμάλ. Λειτουργεί ως εξής. Όταν η Αλίκη θέλει να στείλει τον Μπομπ b κέρματα ανά διεύθυνση (το δημόσιο κλειδί του) Y, επιλέγει έναν τυχαίο αριθμό r και κρυπτογραφεί το ποσό:

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς
όπου C - κρυπτογραφημένο ποσό, D - βοηθητική τιμή απαραίτητη για την αποκρυπτογράφηση αυτού του ποσού, G - ένα σταθερό σημείο στην ελλειπτική καμπύλη, όταν πολλαπλασιαστεί με το μυστικό κλειδί, προκύπτει το δημόσιο κλειδί.

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

Ομοίως, η Αλίκη αφαιρεί τις ίδιες τιμές από το υπόλοιπό της, μόνο ως Y χρησιμοποιεί το δημόσιο κλειδί σας.

Απόκρυψη του παραλήπτη και του αποστολέα

Η ανακάτεμα των «εξόδων» στο UTXO χρονολογείται από τις πρώτες μέρες των κρυπτονομισμάτων και βοηθά στην απόκρυψη του αποστολέα. Για να γίνει αυτό, ο ίδιος ο αποστολέας, όταν κάνει μια μεταφορά, συλλέγει τυχαίες «εξόδους» στο blockchain και τις αναμιγνύει με τις δικές του. Στη συνέχεια, υπογράφει τις "εξόδους" με μια υπογραφή δακτυλίου - έναν κρυπτογραφικό μηχανισμό που του επιτρέπει να πείσει τον επαληθευτή ότι τα νομίσματα του αποστολέα είναι παρόντα μεταξύ των εμπλεκόμενων "εξόδων". Τα ίδια τα μικτά νομίσματα, φυσικά, δεν ξοδεύονται.

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

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

Δεδομένου ότι τόσο ο αποστολέας όσο και ο παραλήπτης έχουν πάντα μια μόνιμη διεύθυνση, καθίσταται απαραίτητο να χρησιμοποιούνται οι ίδιες ομάδες για μίξη κατά τη μεταφορά στις ίδιες διευθύνσεις. Είναι πιο εύκολο να το δούμε αυτό με ένα παράδειγμα.

Ας υποθέσουμε ότι η Αλίκη αποφασίζει να συνεισφέρει στη φιλανθρωπία του Μπομπ, αλλά προτιμά η μεταφορά να παραμείνει ανώνυμη σε έναν εξωτερικό παρατηρητή. Στη συνέχεια, για να μεταμφιεστεί στο πεδίο του αποστολέα, μπαίνει και στους λογαριασμούς του Άνταμ και της Αντέλ. Και για να κρύψετε τον Bob, προσθέστε τους λογαριασμούς του Ben και του Bill στο πεδίο παραλήπτη. Κάνοντας την επόμενη συνεισφορά, η Αλίκη αποφάσισε να γράψει δίπλα της τον Άλεξ και την Αμάντα και τον Μπρους και τον Μπέντζεν δίπλα στον Μπομπ. Σε αυτήν την περίπτωση, κατά την ανάλυση του blockchain, σε αυτές τις δύο συναλλαγές υπάρχει μόνο ένα τεμνόμενο ζεύγος συμμετεχόντων - η Alice και ο Bob, το οποίο απο-ανωνυμοποιεί αυτές τις συναλλαγές.

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς

Αγώνες συναλλαγών

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

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς

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

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

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

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

Προστασία από επιθέσεις επανάληψης

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

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

Για να αποφευχθεί αυτό, ενσωματώνεται στη συναλλαγή ένα πεδίο με τυχαία δεδομένα, το οποίο ονομάζεται nonce ή απλά "salt". Κατά την εκ νέου υποβολή μιας συναλλαγής με ένα αλάτι, ο επαληθευτής εξετάζει εάν το nonce έχει χρησιμοποιηθεί στο παρελθόν και, εάν όχι, θεωρεί τη συναλλαγή έγκυρη. Για να μην αποθηκεύεται ολόκληρο το ιστορικό των nonces των χρηστών στο blockchain, συνήθως στην πρώτη κιόλας συναλλαγή τίθεται ίσο με το μηδέν και στη συνέχεια αυξάνεται κατά ένα. Το δίκτυο μπορεί μόνο να ελέγξει ότι η μη ύπαρξη της νέας συναλλαγής διαφέρει από την προηγούμενη.

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

Οι συγγραφείς του Zether προτείνουν να δημιουργηθεί το nonce κρυπτογραφικά, ανάλογα με την «εποχή». Για παράδειγμα:

Σχετικά με την ανωνυμία σε blockchains που βασίζονται σε λογαριασμούς
Εδώ x είναι το μυστικό κλειδί του αποστολέα και Gepoch — μια πρόσθετη γεννήτρια για την εποχή, που λαμβάνεται με κατακερματισμό μιας συμβολοσειράς της μορφής «Zether +». Τώρα το πρόβλημα φαίνεται να έχει λυθεί - δεν αποκαλύπτουμε τη μη ύπαρξη του αποστολέα και δεν παρεμβαίνουμε στις μη εμπλεκόμενες συμμετοχές. Αλλά αυτή η προσέγγιση επιβάλλει έναν σοβαρό περιορισμό: ένας λογαριασμός δεν μπορεί να στείλει περισσότερες από μία συναλλαγές ανά «εποχή». Αυτό το πρόβλημα, δυστυχώς, παραμένει άλυτο και επί του παρόντος καθιστά την ανώνυμη έκδοση του Zether, κατά τη γνώμη μας, ελάχιστα κατάλληλη για χρήση.

Η πολυπλοκότητα των αποδείξεων μηδενικής γνώσης

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

Στην ανώνυμη έκδοση του blockchain που βασίζεται σε λογαριασμό, οι εκφράσεις για απόδειξη είναι πολύ πιο περίπλοκες. Ο αποστολέας αποδεικνύει ότι:

  1. Το ποσό που αποστέλλεται είναι θετικό.
  2. Το υπόλοιπο παραμένει μη αρνητικό.
  3. Ο αποστολέας κρυπτογραφούσε σωστά τα ποσά μεταφοράς (συμπεριλαμβανομένου του μηδενός).
  4. Το υπόλοιπο στο υπόλοιπο αλλάζει μόνο για τον αποστολέα και τον παραλήπτη.
  5. Ο αποστολέας κατέχει το ιδιωτικό κλειδί του λογαριασμού του και στην πραγματικότητα βρίσκεται στη λίστα των αποστολέων (μεταξύ των εμπλεκομένων).
  6. Το Nonce που χρησιμοποιείται στη συναλλαγή έχει συντεθεί σωστά.

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

Το αποτέλεσμα;

Κατά τη γνώμη μας, το τμήμα του Zether που φέρνει το απόρρητο σε blockchains που βασίζονται σε λογαριασμούς μπορεί να χρησιμοποιηθεί αυτή τη στιγμή. Αλλά αυτή τη στιγμή, η ανώνυμη έκδοση της τεχνολογίας επιβάλλει σοβαρούς περιορισμούς στη χρήση της και την πολυπλοκότητά της στην εφαρμογή της. Ωστόσο, δεν πρέπει να αγνοηθεί ότι οι συγγραφείς το κυκλοφόρησαν μόλις πριν από λίγους μήνες και ίσως κάποιος άλλος βρει μια λύση στα προβλήματα που υπάρχουν σήμερα. Άλλωστε έτσι γίνεται η επιστήμη.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο