Тіркелгіге негізделген блокчейндердегі анонимділік туралы

Біз криптовалюталардағы анонимділік тақырыбына ұзақ уақыт бойы қызығушылық танытып келеміз және осы саладағы технологиялардың дамуын қадағалауға тырысамыз. Біздің мақалаларымызда біз жұмыс істеу принциптерін егжей-тегжейлі талқыладық құпия транзакциялар Монерода, сондай-ақ жүзеге асырылады салыстырмалы шолу осы салада бар технологиялар. Дегенмен, бүгінде барлық анонимді криптовалюталар Bitcoin ұсынған деректер үлгісіне негізделген - жұмсалмаған транзакция шығысы (бұдан әрі UTXO). Ethereum сияқты тіркелгіге негізделген блокчейндер үшін анонимділік пен құпиялылықты енгізуге арналған қолданыстағы шешімдер (мысалы, Mobius немесе Aztec) смарт келісімшарттарда UTXO үлгісін қайталауға тырысты.

2019 жылдың ақпанында Стэнфорд университетінің және Visa Research зерттеушілерінің тобы босатылды алдын ала басып шығару «Zether: Смарт келісімшарттар әлеміндегі құпиялылыққа.» Авторлар шотқа негізделген блокчейндерде анонимділікті қамтамасыз ету тәсілін бірінші болып ұсынды және смарт келісімшарттың екі нұсқасын ұсынды: құпия (қалдықтар мен аударым сомасын жасыру) және анонимді (алушы мен жіберушіні жасыру) транзакциялар үшін. Бізге ұсынылған технология қызықты және оның дизайнымен бөліскіміз келеді, сондай-ақ тіркелгіге негізделген блокчейндердегі анонимділік мәселесі неге өте қиын деп есептелетіні және авторлар оны толығымен шеше алды ма, жоқ па, соны айтқымыз келеді.

Бұл деректер үлгілерінің құрылымы туралы

UTXO үлгісінде транзакция «енгізулер» және «шығыстардан» тұрады. «Шығыстардың» тікелей аналогы - әмияныңыздағы вексельдер: әрбір «шығыстың» белгілі бір номиналы бар. Біреуге төлем жасағанда (транзакцияны қалыптастырғанда) сіз бір немесе бірнеше «шығыстарды» жұмсайсыз, бұл жағдайда олар транзакцияның «кірістеріне» айналады және блокчейн оларды жұмсалған деп белгілейді. Бұл жағдайда төлемді алушы (немесе өзгерту қажет болса, өзіңіз) жаңадан жасалған «шығыстарды» алады. Оны схемалық түрде келесідей көрсетуге болады:

Тіркелгіге негізделген блокчейндердегі анонимділік туралы

Есептік жазбаға негізделген блокчейндер сіздің банктік шотыңыз сияқты құрылымдалған. Олар тек сіздің шотыңыздағы сома мен аударым сомасымен айналысады. Есептік жазбаңыздан белгілі бір соманы аударған кезде сіз ешқандай «шығыстарды» күйдірмейсіз, желіге қандай монеталардың жұмсалғанын және қайсысы жұмсалмағанын есте сақтаудың қажеті жоқ. Қарапайым жағдайда транзакцияны тексеру жіберушінің қолын және оның балансындағы соманы тексеруден тұрады:

Тіркелгіге негізделген блокчейндердегі анонимділік туралы

Технологияны талдау

Әрі қарай, Zether транзакция сомасын, алушыны және жіберушіні қалай жасыратыны туралы айтатын боламыз. Оның жұмыс істеу принциптерін сипаттай отырып, біз құпия және анонимді нұсқалардағы айырмашылықтарды атап өтеміз. Тіркелгіге негізделген блокчейндерде құпиялылықты қамтамасыз ету әлдеқайда оңай болғандықтан, анонимизация арқылы енгізілген кейбір шектеулер технологияның құпия нұсқасына қатысты болмайды.

Қалдықтарды және аударым сомаларын жасыру

Шифрлау схемасы теңгерімдерді шифрлау және Zether ішіндегі сомаларды аудару үшін пайдаланылады Эль Гамаль. Ол келесідей жұмыс істейді. Алиса Бобты жібергісі келгенде b мекенжай бойынша монеталар (оның ашық кілті) Y, ол кездейсоқ санды таңдайды r және соманы шифрлайды:

Тіркелгіге негізделген блокчейндердегі анонимділік туралы
қайда C - шифрланған сома, D - осы соманы шешуге қажетті көмекші мән, G - эллиптикалық қисықтағы бекітілген нүкте, құпия кілтке көбейткенде ашық кілт алынады.

Боб бұл мәндерді алған кезде, ол оларды шифрланған балансына дәл осылай қосады, сондықтан бұл схема ыңғайлы.

Сол сияқты, Алиса өз балансынан бірдей мәндерді шегереді, тек сияқты Y ашық кілтіңізді пайдаланады.

Алушы мен жіберушіні жасыру

UTXO ішіндегі «шығыстарды» араластыру криптовалюталардың алғашқы күндерінен басталады және жіберушіні жасыруға көмектеседі. Мұны істеу үшін жіберушінің өзі аударым жасау кезінде блокчейндегі кездейсоқ «шығыстарды» жинайды және оларды өзімен араластырады. Содан кейін ол «шығыстарға» сақина қолтаңбасымен қол қояды — бұл криптографиялық механизм оған тексерушіні «шығыстардың» арасында жіберушінің монеталарының бар екеніне сендіруге мүмкіндік береді. Аралас монеталардың өзі, әрине, жұмсалмайды.

Дегенмен, біз алушыны жасыру үшін жалған нәтижелерді жасай алмаймыз. Сондықтан, UTXO-да әрбір «шығыстың» өзінің бірегей мекенжайы бар және ол осы монеталарды алушының мекенжайымен криптографиялық түрде байланысты. Қазіргі уақытта оның құпия кілттерін білмей-ақ, бірегей шығыс мекенжайы мен алушы мекенжайы арасындағы байланысты анықтауға мүмкіндік жоқ.

Есептік жазбаға негізделген үлгіде біз бір реттік мекенжайларды пайдалана алмаймыз (әйтпесе ол «шығу» үлгісі болады). Сондықтан алушы мен жіберуші блокчейндегі басқа тіркелгілер арасында араласуы керек. Бұл жағдайда шифрланған 0 монета аралас шоттардан дебеттеледі (немесе егер алушы араласса, 0 қосылады), олардың нақты теңгерімін өзгертпейді.

Жіберушінің де, алушының да әрқашан тұрақты мекенжайы болғандықтан, бір мекенжайларға тасымалдау кезінде араластыру үшін бірдей топтарды пайдалану қажет болады. Мұны мысалмен қарау оңайырақ.

Алиса Бобтың қайырымдылық қорына үлес қосуды шешті делік, бірақ трансфер сыртқы бақылаушыға жасырын болғанын қалайды. Содан кейін, жіберуші өрісінде өзін жасыру үшін ол Адам мен Адельдің есептеріне де кіреді. Ал Бобты жасыру үшін алушы өрісіне Бен мен Биллдің есептік жазбаларын қосыңыз. Келесі үлес қосқан Алиса Алекс пен Аманданы қасына, ал Брюс пен Бендженді Бобқа жазуды ұйғарды. Бұл жағдайда блокчейнді талдағанда, осы екі транзакцияда тек бір ғана қиылысатын қатысушылар жұбы бар - Алиса мен Боб, бұл транзакцияларды анонимизациялайды.

Тіркелгіге негізделген блокчейндердегі анонимділік туралы

Транзакция жарыстары

Жоғарыда айтқанымыздай, шотқа негізделген жүйелерде теңгеріміңізді жасыру үшін пайдаланушы өз балансын және аударым сомасын шифрлайды. Бұл ретте ол өз шотындағы қалдық теріс емес болып қалатынын дәлелдеу керек. Мәселе мынада, транзакцияны жасау кезінде пайдаланушы өзінің ағымдағы шотының күйіне қатысты дәлелді жасайды. Егер Боб Алисаға транзакция жіберсе және ол Алиса жібергеннен бұрын қабылданса не болады? Сонда Алисаның мәмілесі жарамсыз деп есептеледі, өйткені балансты растау Боб транзакциясын қабылдағанға дейін жасалған.

Тіркелгіге негізделген блокчейндердегі анонимділік туралы

Мұндай жағдайда келетін бірінші шешім - транзакция орындалғанға дейін шотты тоқтату. Бірақ бұл тәсіл жарамайды, өйткені таратылған жүйеде мұндай мәселені шешудің күрделілігіне қоса, анонимді схемада кімнің есептік жазбасын бұғаттау керектігі анық болмайды.

Бұл мәселені шешу үшін технология кіріс және шығыс операцияларды ажыратады: шығыстар балансқа бірден әсер етеді, ал түсімдер кешіктірілген әсер етеді. Ол үшін «дәуір» ұғымы енгізілген - белгіленген өлшемдегі блоктар тобы. Ағымдағы «дәуір» блок биіктігін топ өлшеміне бөлу арқылы анықталады. Транзакцияны өңдеу кезінде желі жіберушінің балансын дереу жаңартады және алушының қаражатын сақтау қоймасында сақтайды. Жинақталған қаражат жаңа «дәуір» басталғанда ғана алушыға беріледі.

Нәтижесінде, пайдаланушы қаражаттың қаншалықты жиі түсетініне қарамастан транзакцияларды жібере алады (әрине, оның балансы мүмкіндік берсе). Дәуір өлшемі блоктардың желі арқылы қаншалықты жылдам таралатынына және транзакцияның блокқа қаншалықты тез енетініне байланысты анықталады.

Бұл шешім құпия аударымдар үшін жақсы жұмыс істейді, бірақ анонимді транзакциялармен, кейінірек көретініміздей, ол күрделі проблемаларды тудырады.

Қайталау шабуылдарынан қорғау

Есептік жазбаға негізделген блокчейндерде әрбір транзакция жіберушінің жеке кілтімен қол қойылады, бұл тексерушіні транзакцияның өзгертілмегеніне және осы кілттің иесі жасағанына сендіреді. Бірақ тарату арнасын тыңдап тұрған шабуылдаушы бұл хабарламаны ұстап алып, дәл сол екінші хабарламаны жіберсе ше? Тексеруші транзакцияның қолтаңбасын тексереді және оның авторлығына көз жеткізеді, ал желі жіберушінің балансынан сол соманы қайтадан есептен шығарады.

Бұл шабуыл қайталау шабуылы деп аталады. UTXO үлгісінде мұндай шабуылдар маңызды емес, өйткені шабуылдаушы өздігінен жарамсыз және желі қабылдамайтын жұмсалған шығыстарды пайдалануға тырысады.

Бұған жол бермеу үшін транзакцияға кездейсоқ деректері бар өріс енгізілген, ол бір реттік немесе жай ғана «тұз» деп аталады. Тұзбен транзакцияны қайта жіберген кезде, тексеруші nonce бұрын қолданылғанын тексереді, ал егер олай болмаса, транзакцияны жарамды деп санайды. Блокчейнде пайдаланушының бүкіл тарихын сақтамау үшін әдетте бірінші транзакцияда ол нөлге теңестіріледі, содан кейін бір көбейтіледі. Желі жаңа транзакцияның бір-бірінің алдыңғысынан ерекшеленетінін ғана тексере алады.

Анонимді аударым схемасында транзакцияның дұрыстығын тексеру мәселесі туындайды. Біз жөнелтушінің мекен-жайына nonce байланыстыра алмаймыз, өйткені бұл аударымды анонимдендіретіні анық. Сондай-ақ біз барлық қатысушы тіркелгілердің шоттарына біреуін қоса алмаймыз, себебі бұл өңделіп жатқан басқа аударымдарға қайшы келуі мүмкін.

Zether авторлары «дәуірге» байланысты nonce криптографиялық жолмен құруды ұсынады. Мысалы:

Тіркелгіге негізделген блокчейндердегі анонимділік туралы
Бұл x жіберушінің құпия кілті болып табылады және Gepoch — «Zether +» түріндегі жолды хэштеу арқылы алынған дәуірге арналған қосымша генератор. Енді мәселе шешілген сияқты - біз жіберушінің немқұрайлылығын көрсетпейміз және қатыспаған қатысушылардың әрекетіне араласпаймыз. Бірақ бұл тәсіл елеулі шектеулер қояды: бір шот «дәуірге» бір транзакциядан артық жібере алмайды. Бұл мәселе, өкінішке орай, шешімін таппай отыр және қазіргі уақытта Zether-тің анонимді нұсқасын, біздің ойымызша, қолдануға жарамсыз етеді.

Нөлдік білім дәлелдерінің күрделілігі

UTXO-да жіберуші желіге теріс соманы жұмсамайтынын дәлелдеуі керек, әйтпесе жұқа ауадан жаңа монеталарды шығаруға болады (неге бұл мүмкін, біз алдыңғы нұсқалардың бірінде жазғанбыз. мақалалар). Сондай-ақ араласқан монеталардың арасында оған тиесілі қаражат бар екенін дәлелдеу үшін сақина қолтаңбасымен «кірістерге» қол қойыңыз.

Есептік жазбаға негізделген блокчейннің анонимді нұсқасында дәлелдеуге арналған өрнектер әлдеқайда күрделі. Жіберуші мынаны дәлелдейді:

  1. Жіберілген сома оң;
  2. Баланс теріс емес болып қалады;
  3. Жіберуші аударым сомаларын дұрыс шифрлады (оның ішінде нөл);
  4. Баланстағы қалдық тек жіберуші мен алушы үшін өзгереді;
  5. Жіберуші өз шотының жеке кілтін иеленеді және ол іс жүзінде жіберушілер тізімінде (қатысушылардың арасында);
  6. Транзакцияда пайдаланылған Nonce дұрыс құрастырылған.

Осындай күрделі дәлелдеу үшін авторлар қоспаны пайдаланады Bulletproof (авторлардың бірі, айтпақшы, оны жасауға қатысқан) және Сигма протоколы, олар Sigma-bullets деп аталады. Мұндай мәлімдеменің ресми дәлелі - бұл өте қиын міндет және ол технологияны енгізуге дайын адамдардың санын айтарлықтай шектейді.

Ақырында не?

Біздің ойымызша, Zether-тің тіркелгіге негізделген блокчейндерге құпиялылықты қамтамасыз ететін бөлігін дәл қазір пайдалануға болады. Бірақ қазіргі уақытта технологияның анонимді нұсқасы оны қолдануға елеулі шектеулер қояды, ал оны жүзеге асырудың күрделілігі. Дегенмен, авторлардың оны бірнеше ай бұрын шығарғанын ескермеу керек, мүмкін басқа біреу бүгінгі күндегі мәселелердің шешімін табады. Өйткені, ғылым осылай жасалады.

Ақпарат көзі: www.habr.com

пікір қалдыру