Hesab əsaslı blokçeynlərdə anonimlik haqqında

Biz kriptovalyutalarda anonimlik mövzusu ilə çoxdan maraqlanırıq və bu sahədə texnologiyaların inkişafını izləməyə çalışırıq. Məqalələrimizdə artıq iş prinsiplərini ətraflı təhlil etdik məxfi əməliyyatlar Moneroda və həmçinin keçirilib müqayisəli baxış bu sahədə texnologiyalar. Bununla belə, bu gün bütün anonim kriptovalyutalar Bitcoin tərəfindən təklif olunan məlumat modelinə əsaslanır - İstifadə edilməmiş Transaction Çıxışı (bundan sonra UTXO). Ethereum kimi hesaba əsaslanan blokçeynlər üçün mövcud anonimlik və məxfilik həlləri (məsələn, Mobius və ya Aztec) ağıllı müqavilələrdə UTXO modelini təkrarlamağa çalışdı.

2019-cu ilin fevral ayında Stanford Universiteti və Visa Research-dən tədqiqatçılar qrupu sərbəst buraxıldı qabaqcadan çap "Zether: Ağıllı Müqavilələr Dünyasında Məxfiliyə Doğru". Müəlliflər ilk dəfə hesaba əsaslanan blokçeynlərdə anonimliyin təmin edilməsinə yanaşma təklif etdilər və ağıllı müqavilə üçün iki variant təqdim etdilər: məxfi (qalıqları və köçürmə məbləğlərini gizlətmək) və anonim (alıcı və göndəricini gizlətmək) əməliyyatlar üçün. Təklif olunan texnologiyanı maraqlı hesab edirik və onun dizaynını bölüşmək, həmçinin hesaba əsaslanan blokçeynlərdə anonimlik probleminin niyə çox çətin hesab edildiyi və müəlliflərin bunu tam şəkildə həll edə bilib-bilmədiyi barədə danışmaq istərdik.

Bu məlumat modellərinin strukturu haqqında

UTXO modelində əməliyyat “girişlər” və “çıxışlar”dan ibarətdir. "Çıxışlar" ın birbaşa analoqu cüzdanınızdakı əskinaslardır: hər bir "çıxış" müəyyən nominallara malikdir. Siz kiməsə pul ödədiyiniz zaman (bir əməliyyat təşkil edirsiniz), siz bir və ya daha çox “çıxış” sərf edirsiniz, onlar isə əməliyyatın “girişinə” çevrilirlər və blokçeyn onları xərclənmiş kimi qeyd edir. Bu halda, ödənişinizi alan şəxs (və ya dəyişiklik lazımdırsa, özünüz) yeni yaradılan "çıxışları" alır. Sxematik olaraq bunu aşağıdakı kimi təqdim etmək olar:

Hesab əsaslı blokçeynlərdə anonimlik haqqında

Hesab əsaslı blokçeynlər bank hesabınıza çox bənzəyir. Onlar yalnız hesabınızdakı məbləğ və köçürmə məbləği üzərində işləyirlər. Hesabınızdan müəyyən məbləğ köçürdükdə siz heç bir “çıxış” yandırmırsınız, şəbəkə hansı sikkələrin xərcləndiyini və hansının xərclənmədiyini xatırlamağa ehtiyac duymur. Ən sadə halda, əməliyyatın yoxlanılması göndərənin imzasını və balansındakı məbləği yoxlamaqdan ibarətdir:

Hesab əsaslı blokçeynlərdə anonimlik haqqında

Texnologiyanın təhlili

Bundan sonra, Zether'in əməliyyatların məbləğini, alıcını və göndəricini necə gizlətdiyi barədə danışacağıq. Onun fəaliyyət prinsiplərini təsvir edərkən biz məxfi və anonim versiyadakı fərqləri qeyd edəcəyik. Hesab əsaslı blokçeynlərdə məxfiliyi təmin etmək daha asan olduğundan, anonimləşdirmə ilə qoyulan bəzi məhdudiyyətlər texnologiyanın məxfi versiyası üçün uyğun olmayacaq.

Qalıqları və köçürmə məbləğlərini gizlətmək

Zether qalıqları və köçürmə məbləğlərini şifrələmək üçün şifrələmə sxemindən istifadə edir Əl Qamal. Aşağıdakı kimi işləyir. Alice Bobu göndərmək istəyəndə b ünvana görə sikkələr (onun açıq açarı) Y, o, təsadüfi bir nömrə seçir r və məbləği şifrələyir:

Hesab əsaslı blokçeynlərdə anonimlik haqqında
hara C - şifrələnmiş məbləğ, D - bu məbləği deşifrə etmək üçün lazım olan köməkçi dəyər; G - açıq açarın əldə edildiyi gizli açarı vurarkən elliptik əyri üzərində sabit nöqtə.

Bob bu dəyərləri aldıqda, onları sadəcə olaraq eyni şəkildə şifrələnmiş balansına əlavə edir ki, bu da bu sxem üçün əlverişlidir.

Eynilə, Alice eyni dəyərləri balansından yalnız kimi çıxarır Y açıq açarından istifadə edir.

Ünvanı və göndəricini gizlədir

UTXO-da "çıxışların" qarışdırılması kriptovalyutaların başlanğıcında ortaya çıxdı və göndəricini gizlətməyə kömək edir. Bunu etmək üçün, göndəricinin özü, köçürmə edərkən, blokçeynində təsadüfi "çıxışları" toplayır və onları özü ilə qarışdırır. Sonra o, "çıxışları" üzük imzası ilə imzalayır, bu kriptoqrafik mexanizm, təsdiqləyicini göndərənin sikkələrinin cəlb olunan "çıxışlar" arasında olduğuna inandırmağa imkan verir. Sikkələrin özləri, əlbəttə ki, xərclənmir.

Bununla belə, alıcını gizlətmək üçün biz saxta "çıxışlar" yarada bilməyəcəyik. Buna görə də, UTXO-da hər bir “çıxış”ın özünəməxsus ünvanı var və o, kriptoqrafik olaraq bu sikkələrin alıcısının ünvanı ilə əlaqələndirilir. Hazırda onun gizli açarlarını bilmədən unikal “çıxış” ünvanı ilə alıcının ünvanı arasındakı əlaqəni aşkara çıxarmaq mümkün deyil.

Hesaba əsaslanan modeldə biz birdəfəlik ünvanlardan istifadə edə bilmərik (əks halda o, artıq “çıxış” modeli olacaq). Buna görə də, alıcı və göndərən blokçeyndəki digər hesablar arasında qarışdırılmalıdır. Eyni zamanda, qarışıq hesablardan şifrələnmiş 0 sikkələr çıxarılır (və ya alıcı qarışıqdırsa, 0 əlavə olunur), əslində onların real balansı dəyişdirilmir.

Həm göndərənin, həm də alıcının həmişə daimi ünvanı olduğundan, burada eyni ünvanlara köçürmə zamanı qarışdırmaq üçün eyni qruplardan istifadə etmək lazım gəlir. Bunu bir nümunə ilə görmək daha asandır.

Deyək ki, Alice Bobun xeyriyyə fonduna ianə etmək qərarına gəldi, lakin bu köçürmənin kənar müşahidəçi üçün anonim qalmasına üstünlük verir. Sonra göndərici sahəsində gizlənmək üçün o, Adəm və Adelin hesablarına da daxil olur. Bobu gizlətmək üçün, alıcı sahəsində, əlavə olaraq, Ben və Bill hesabları. Növbəti hissəni hazırlayarkən Alice onun yanına Aleks və Amanda, Bobun yanına Bruce və Benjen yazmağa qərar verdi. Bu halda, bu iki əməliyyatda blokçeyni təhlil edərkən, yalnız bir kəsişən iştirakçı cütü var - bu əməliyyatları deanonimləşdirən Alice və Bob.

Hesab əsaslı blokçeynlərdə anonimlik haqqında

Əməliyyat yarışları

Artıq qeyd etdiyimiz kimi, hesaba əsaslanan sistemlərdə balansını gizlətmək üçün istifadəçi balansını və köçürmə məbləğini şifrələyir. Eyni zamanda, o, hesabındakı qalığın mənfi olaraq qaldığını sübut etməlidir. Məsələ ondadır ki, əməliyyat təşkil edərkən istifadəçi cari hesabının vəziyyəti ilə bağlı sübut hazırlayır. Bəs Bob Alisə bir əməliyyat göndərsə və bu, Alice tərəfindən göndəriləndən əvvəl qəbul edilsə nə olar? Sonra Alisin əməliyyatı etibarsız sayılacaq, çünki balans sübutu Bobun əməliyyatı qəbul edilməzdən əvvəl qurulmuşdur.

Hesab əsaslı blokçeynlərdə anonimlik haqqında

Belə bir vəziyyətdə gələn ilk həll, əməliyyat baş verənə qədər hesabı dondurmaqdır. Ancaq bu yanaşma uyğun deyil, çünki paylanmış sistemdə belə bir problemin həllinin mürəkkəbliyinə əlavə olaraq, anonim bir sxemdə kimin hesabını bloklamaq aydın olmayacaq.

Bu problemi həll etmək üçün texnologiya daxil olan və çıxan əməliyyatları ayırır: vəsaitlərin xərclənməsi balansa dərhal təsir edir, daxilolmalar isə gecikdirici təsir göstərir. Bunun üçün "epox" anlayışı - sabit ölçülü bloklar qrupu təqdim olunur. Cari "dövr" blokun hündürlüyünü qrup ölçüsünə bölmək yolu ilə müəyyən edilir. Tranzaksiyanı emal edərkən, şəbəkə göndəricinin balansını dərhal yeniləyir və alıcının vəsaitlərini akkumulyatora əlavə edir. Yığılmış vəsaitlər yalnız yeni "epoxa" başlayanda alıcıya verilir.

Nəticədə, istifadəçi nə qədər tez-tez vəsait almasından asılı olmayaraq əməliyyatlar göndərə bilər (təbii ki, balansı imkan verdiyi qədər). Dövrün ölçüsü blokların şəbəkədə nə qədər sürətlə yayıldığına və əməliyyatın bloka nə qədər sürətlə daxil olduğuna görə müəyyən edilir.

Bu həll məxfi köçürmələr zamanı yaxşı işləyir, lakin anonim əməliyyatlarla, daha sonra görəcəyimiz kimi, ciddi problemlər yaradır.

Təkrar hücumlara qarşı qorunma

Hesaba əsaslanan blokçeynlərdə hər bir əməliyyat göndərənin şəxsi açarı ilə imzalanır və bu, təsdiqləyicini əməliyyatın dəyişdirilmədiyinə və bu açarın sahibi tərəfindən yaradıldığına inandırır. Bəs ötürmə kanalında dinləyən təcavüzkar bu mesajı ələ keçirsə və eyni ikinci mesajı göndərsə nə etməli? Doğrulayıcı əməliyyatın imzasını yoxlayacaq və onun müəllifliyinə əmin olacaq və şəbəkə eyni məbləği yenidən göndərənin balansından siləcək.

Bu hücum təkrar hücum adlanır. UTXO modelində bu cür hücumlar aktual deyil, çünki təcavüzkar özlüyündə etibarlı olmayan və şəbəkə tərəfindən rədd edilən sərf edilmiş çıxışlardan istifadə etməyə çalışacaq.

Bunun baş verməsinin qarşısını almaq üçün əməliyyata təsadüfi verilənləri olan bir sahə daxil edilir ki, bu da qeyri və ya sadəcə “duz” adlanır. "Duz" ilə əməliyyatı yenidən göndərərkən, yoxlayıcı bu qeyri-şərtin əvvəllər istifadə olunub-olunmadığını yoxlayır və əgər yoxsa, bu əməliyyatı etibarlı hesab edir. Blockchain-də istifadəçinin bütün tarixini saxlamamaq üçün adətən ilk tranzaksiyada sıfıra bərabər götürülür, sonra isə bir artır. Şəbəkə yalnız yeni əməliyyatın qeyri-nin əvvəlkindən bir-bir fərqləndiyini yoxlamalıdır.

Anonim köçürmə sxemində əməliyyatın qeyri-müəyyənləşdirilməsi problemi yaranır. Biz qeyri-müəyyənliyi göndərənin ünvanına açıq şəkildə bağlaya bilmərik, çünki bu, açıq-aydın köçürməni deanonimləşdirir. Biz həmçinin bütün iştirakçı hesabların boşluqlarına birini əlavə edə bilmərik, çünki bu, davam edən digər köçürmələrlə ziddiyyət təşkil edə bilər.

“Zether”in müəllifləri “dövr”dən asılı olaraq kriptoqrafik olaraq qeyri-neft yaratmağı təklif edirlər. Misal üçün:

Hesab əsaslı blokçeynlərdə anonimlik haqqında
Burada x göndərənin gizli açarıdır və Gepoch — 'Zether +' kimi bir sətri hashing etməklə əldə edilən dövr üçün əlavə generator. İndi problem həll edilmiş kimi görünür - biz göndərənin qeyri-məsləhətini açıqlamırıq və cəlb olunmamış iştirakçıların boşluqlarına müdaxilə etmirik. Lakin bu yanaşma ciddi məhdudiyyət qoyur: bir hesab hər “dövr” üçün birdən çox əməliyyat göndərə bilməz. Təəssüf ki, bu problem həll olunmamış qalır və hazırda Zether-in anonim versiyasını, fikrimizcə, çətin ki, istifadə edilə bilər.

Sıfır Bilik sübutlarının mürəkkəbliyi

UTXO-da göndərici şəbəkəyə mənfi məbləğ xərcləmədiyini sübut etməlidir, əks halda havadan yeni sikkələr yaratmaq mümkün olur (niyə bu mümkündür, biz əvvəlkilərdən birində yazdıq məqalələr). Həm də yoğrulan sikkələr arasında ona məxsus vəsaitin olduğunu sübut etmək üçün “girişləri” üzük imza ilə imzalamaq.

Hesaba əsaslanan blokçeynin anonim versiyasında sübut ifadələri daha mürəkkəbdir. Göndərən sübut edir:

  1. Göndərilən məbləğ müsbətdir;
  2. Balans mənfi olaraq qalır;
  3. Göndərən köçürmə məbləğlərini (sıfırlar daxil olmaqla) düzgün şəkildə şifrələyib;
  4. Balansdakı qalıq yalnız göndərən və alan üçün dəyişir;
  5. Göndərən öz hesabının məxfi açarına sahibdir və o, həqiqətən də göndərənlər siyahısındadır (iştirak edənlər arasında);
  6. Sövdələşmədə istifadə edilməmiş söz düzgündür.

Belə mürəkkəb sübut üçün müəlliflər qarışıqdan istifadə edirlər Bulletproof (yeri gəlmişkən, onun yaradılmasında müəlliflərdən biri iştirak etmişdir) və Sigma Protokolu, buna Sigma-güllələr deyilir. Belə bir bəyanatın rəsmi sübutu kifayət qədər çətin işdir və texnologiyanı həyata keçirmək istəyən insanların sayını xeyli məhdudlaşdırır.

Nəticədə?

Fikrimizcə, Zether-in hesaba əsaslanan blokçeynlərə məxfilik gətirən hissəsi hazırda istifadə edilə bilər. Lakin hazırda texnologiyanın anonim versiyası onun istifadəsinə ciddi məhdudiyyətlər qoyur, həyata keçirilməsində isə onun mürəkkəbliyi. Bununla belə, müəlliflərin onu cəmi bir neçə ay əvvəl buraxdığını və bəlkə də başqasının bu gün mövcud olan problemlərin həllini tapmasını da nəzərdən qaçırmaq olmaz. Axı elm belə olur.

Mənbə: www.habr.com

Добавить комментарий