Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti

Tumekuwa na nia ya mada ya kutokujulikana katika fedha za siri kwa muda mrefu na kujaribu kufuata maendeleo ya teknolojia katika eneo hili. Katika makala yetu tayari tumejadili kwa undani kanuni za uendeshaji shughuli za siri huko Monero, na pia ilifanyika mapitio ya kulinganisha teknolojia zilizopo katika uwanja huu. Hata hivyo, fedha zote za siri zisizojulikana leo zimejengwa juu ya mfano wa data uliopendekezwa na Bitcoin - Pato la Muamala Usiotumiwa (hapa UTXO). Kwa blockchains zinazotegemea akaunti kama Ethereum, suluhu zilizopo za kutekeleza kutokujulikana na usiri (kwa mfano, Mobius au Azteki) alijaribu kuiga mfano wa UTXO katika mikataba ya smart.

Mnamo Februari 2019, kikundi cha watafiti kutoka Chuo Kikuu cha Stanford na Utafiti wa Visa iliyotolewa chapa ya awali "Zether: Kuelekea faragha katika ulimwengu wa mikataba mahiri." Waandishi walikuwa wa kwanza kupendekeza mbinu ya kuhakikisha kutokujulikana katika minyororo inayotegemea akaunti na waliwasilisha matoleo mawili ya mkataba mahiri: kwa usiri (kuficha salio na kiasi cha uhamisho) na kutokujulikana (kuficha mpokeaji na mtumaji) miamala. Tunapata teknolojia iliyopendekezwa ya kuvutia na tungependa kushiriki muundo wake, na pia kuzungumza juu ya kwa nini tatizo la kutokujulikana katika blockchains ya akaunti inachukuliwa kuwa ngumu sana na ikiwa waandishi waliweza kutatua kikamilifu.

Kuhusu muundo wa mifano hii ya data

Katika mfano wa UTXO, shughuli ina "pembejeo" na "matokeo". Analog ya moja kwa moja ya "matokeo" ni bili katika mkoba wako: kila "pato" lina dhehebu fulani. Unapomlipa mtu (unda muamala) unatumia "pato" moja au zaidi, katika hali ambayo wanakuwa "pembejeo" za muamala, na blockchain inaashiria kuwa imetumika. Katika kesi hii, mpokeaji wa malipo yako (au wewe mwenyewe, ikiwa unahitaji mabadiliko) hupokea "matokeo" mapya. Hii inaweza kuwakilishwa kimkakati kama hii:

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti

Minyororo ya kuzuia-msingi ya akaunti imeundwa kama vile akaunti yako ya benki. Wanashughulikia tu kiasi kilicho katika akaunti yako na kiasi cha uhamisho. Unapohamisha kiasi fulani kutoka kwa akaunti yako, huna kuchoma "matokeo" yoyote, mtandao hauhitaji kukumbuka ni sarafu gani zimetumika na ambazo hazijatumiwa. Katika hali rahisi, uthibitishaji wa muamala unakuja kwa kuangalia saini ya mtumaji na kiasi kwenye salio lake:

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti

Uchambuzi wa teknolojia

Kisha, tutazungumza kuhusu jinsi Zether huficha kiasi cha muamala, mpokeaji na mtumaji. Tunapoelezea kanuni za uendeshaji wake, tutaona tofauti katika matoleo ya siri na yasiyojulikana. Kwa kuwa ni rahisi zaidi kuhakikisha usiri katika blockchains za akaunti, baadhi ya vikwazo vilivyowekwa na kutokujulikana havitakuwa muhimu kwa toleo la siri la teknolojia.

Kuficha mizani na kiasi cha uhamisho

Mpango wa usimbaji fiche hutumika kusimba salio kwa njia fiche na kuhamisha kiasi katika Zether El Gamal. Inafanya kazi kama ifuatavyo. Wakati Alice anataka kutuma Bob b sarafu kwa anwani (ufunguo wake wa umma) Y, anachagua nambari ya nasibu r na kusimba kiasi hicho kwa njia fiche:

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti
ambapo C - kiasi kilichosimbwa, D - thamani ya msaidizi muhimu kuamua kiasi hiki; G - hatua ya kudumu kwenye mviringo wa mviringo, wakati wa kuongezeka kwa ufunguo wa siri, ufunguo wa umma unapatikana.

Wakati Bob anapokea maadili haya, yeye anayaongeza tu kwa usawa wake uliosimbwa kwa njia ile ile, ndiyo sababu mpango huu ni rahisi.

Vile vile, Alice huondoa maadili sawa kutoka kwa usawa wake, kama tu Y hutumia ufunguo wako wa umma.

Kuficha mpokeaji na mtumaji

Kuchanganya "matokeo" katika UTXO kulianza siku za mwanzo za sarafu ya fiche na husaidia kumficha mtumaji. Ili kufanya hivyo, mtumaji mwenyewe, wakati wa kufanya uhamisho, hukusanya "matokeo" ya random katika blockchain na kuchanganya na yake mwenyewe. Kisha, anatia sahihi "matokeo" kwa saini ya pete-utaratibu wa siri unaomruhusu kumshawishi mthibitishaji kwamba sarafu za mtumaji zipo kati ya "matokeo" yanayohusika. Sarafu zilizochanganywa wenyewe, bila shaka, hazitumiwi.

Hata hivyo, hatutaweza kuzalisha matokeo ghushi ili kumficha mpokeaji. Kwa hiyo, katika UTXO, kila "pato" ina anwani yake ya kipekee, na inaunganishwa kwa siri na anwani ya mpokeaji wa sarafu hizi. Kwa sasa, hakuna njia ya kutambua uhusiano kati ya anwani ya kipekee ya pato na anwani ya mpokeaji bila kujua funguo zake za siri.

Katika mfano wa msingi wa akaunti, hatuwezi kutumia anwani za wakati mmoja (vinginevyo itakuwa tayari kuwa mfano wa "kutoka"). Kwa hivyo, mpokeaji na mtumaji wanapaswa kuchanganywa kati ya akaunti zingine kwenye blockchain. Katika kesi hii, sarafu 0 zilizosimbwa hutozwa kutoka kwa akaunti mchanganyiko (au 0 huongezwa ikiwa mpokeaji amechanganywa), bila kubadilisha salio lao halisi.

Kwa kuwa mtumaji na mpokeaji daima wana anwani ya kudumu, inakuwa muhimu kutumia vikundi sawa kwa kuchanganya wakati wa kuhamisha kwenye anwani sawa. Ni rahisi kuangalia hii na mfano.

Wacha tuseme Alice anaamua kutoa mchango kwa hisani ya Bob, lakini anapendelea uhamishaji huo usijulikane kwa mtazamaji wa nje. Kisha, ili kujificha kwenye uwanja wa mtumaji, pia anaingia kwenye akaunti za Adamu na Adele. Na ili kuficha Bob, ongeza akaunti za Ben na Bill katika sehemu ya mpokeaji. Akitoa mchango uliofuata, Alice aliamua kuandika Alex na Amanda karibu naye, na Bruce na Benjen karibu na Bob. Katika kesi hii, wakati wa kuchambua blockchain, katika shughuli hizi mbili kuna jozi moja tu ya washiriki - Alice na Bob, ambayo haitoi utambulisho wa shughuli hizi.

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti

Mashindano ya shughuli

Kama tulivyokwisha sema, ili kuficha salio lako katika mifumo inayotegemea akaunti, mtumiaji husimba salio lake na kiasi cha uhamisho kwa njia fiche. Wakati huo huo, lazima athibitishe kwamba usawa kwenye akaunti yake unabakia kuwa sio hasi. Tatizo ni kwamba wakati wa kuunda shughuli, mtumiaji hujenga uthibitisho kuhusu hali yake ya sasa ya akaunti. Nini kitatokea ikiwa Bob atatuma muamala kwa Alice, na itakubaliwa kabla ya ile iliyotumwa na Alice? Kisha shughuli ya Alice itachukuliwa kuwa batili, kwa kuwa uthibitisho wa usawa ulijengwa kabla ya shughuli ya Bob kukubaliwa.

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti

Uamuzi wa kwanza unaokuja katika hali hiyo ni kufungia akaunti hadi shughuli ifanyike. Lakini njia hii haifai, kwa sababu pamoja na utata wa kutatua tatizo hilo katika mfumo uliosambazwa, katika mpango usiojulikana hautakuwa wazi ni akaunti gani ya kuzuia.

Ili kutatua tatizo hili, teknolojia hutenganisha shughuli zinazoingia na zinazotoka: matumizi yana athari ya haraka kwenye usawa, wakati risiti zina athari ya kuchelewa. Ili kufanya hivyo, wazo la "epoch" linaletwa - kikundi cha vizuizi vya saizi iliyowekwa. "Enzi" ya sasa imedhamiriwa kwa kugawa urefu wa block na saizi ya kikundi. Wakati wa kusindika muamala, mtandao husasisha mara moja salio la mtumaji na kuhifadhi fedha za mpokeaji kwenye tanki la kuhifadhia. Pesa zilizokusanywa hutolewa kwa mpokeaji tu wakati "zama" mpya inapoanza.

Matokeo yake, mtumiaji anaweza kutuma shughuli bila kujali mara ngapi fedha zinapokelewa (kwa kadiri salio lake linaruhusu, bila shaka). Saizi ya enzi imedhamiriwa kulingana na jinsi vizuizi hueneza haraka kupitia mtandao na jinsi shughuli inavyoingia kwenye kizuizi.

Suluhisho hili linafanya kazi vizuri kwa uhamisho wa siri, lakini kwa shughuli zisizojulikana, kama tutakavyoona baadaye, husababisha matatizo makubwa.

Ulinzi dhidi ya mashambulizi ya marudio

Katika misururu inayotokana na akaunti, kila muamala hutiwa saini na ufunguo wa faragha wa mtumaji, ambao humsadikisha mthibitishaji kwamba shughuli hiyo haijarekebishwa na iliundwa na mmiliki wa ufunguo huu. Lakini vipi ikiwa mshambulizi ambaye alikuwa akisikiliza kituo cha usambazaji anakatiza ujumbe huu na kutuma sekunde ileile? Mthibitishaji atathibitisha saini ya muamala na atasadikishwa juu ya uandishi wake, na mtandao utaondoa kiasi sawa kutoka kwa salio la mtumaji tena.

Shambulio hili linaitwa shambulio la marudio. Katika mfano wa UTXO, mashambulizi hayo hayafai, kwani mshambuliaji atajaribu kutumia matokeo yaliyotumiwa, ambayo yenyewe haifai na inakataliwa na mtandao.

Ili kuzuia hili kutokea, shamba na data random ni kujengwa katika shughuli, ambayo inaitwa nonce au tu "chumvi". Wakati wa kuwasilisha tena muamala kwa kutumia chumvi, kithibitishaji hutazama ili kuona kama nonce imetumika hapo awali na, ikiwa sivyo, inazingatia muamala huo kuwa halali. Ili si kuhifadhi historia nzima ya nonces ya mtumiaji katika blockchain, kwa kawaida katika shughuli ya kwanza ni kuweka sawa na sifuri, na kisha kuongezeka kwa moja. Mtandao unaweza tu kuangalia kwamba nonce ya muamala mpya inatofautiana na uliopita mmoja baada ya mwingine.

Katika mpango wa uhamishaji usiojulikana, tatizo la kuthibitisha nonces za muamala hutokea. Hatuwezi kuunganisha nonce kwa njia ya wazi kwa anwani ya mtumaji, kwa kuwa, ni wazi, hii inafuta uhamishaji utambulisho. Pia hatuwezi kuongeza moja kwa nonces za akaunti zote zinazoshiriki, kwa kuwa hii inaweza kukinzana na uhamishaji mwingine unaochakatwa.

Waandishi wa Zether wanapendekeza kutoa nonce cryptography, kulingana na "epoch". Kwa mfano:

Kuhusu kutokujulikana katika blockchains zinazotegemea akaunti
Hapa x ni ufunguo wa siri wa mtumaji, na Gepoch - jenereta ya ziada ya enzi, iliyopatikana kwa kuharakisha mfuatano wa fomu 'Zether +'. Sasa shida inaonekana kutatuliwa - hatuonyeshi maoni ya mtumaji na hatuingilii maoni ya washiriki ambao hawajahusika. Lakini mbinu hii inaweka kizuizi kikubwa: akaunti moja inaweza kutuma si zaidi ya shughuli moja kwa kila "kipindi". Tatizo hili, kwa bahati mbaya, bado halijatatuliwa, na kwa sasa hufanya toleo lisilojulikana la Zether, kwa maoni yetu, kuwa vigumu kutumika.

Utata wa Uthibitisho Sifuri wa Maarifa

Katika UTXO, mtumaji lazima athibitishe kwa mtandao kuwa haitumii kiasi hasi, vinginevyo inawezekana kutoa sarafu mpya kutoka kwa hewa nyembamba (kwa nini hii inawezekana, tuliandika katika moja ya awali. makala) Na pia saini "pembejeo" na saini ya pete ili kuthibitisha kuwa kati ya sarafu zinazochanganywa kuna fedha ambazo ni zake.

Katika toleo lisilojulikana la blockchain inayotokana na akaunti, maneno ya uthibitisho ni magumu zaidi. Mtumaji anathibitisha kuwa:

  1. Kiasi kilichotumwa ni chanya;
  2. Usawa unabaki kuwa sio hasi;
  3. Mtumaji alisimba kwa njia fiche kiasi cha uhamisho (pamoja na sifuri);
  4. Salio kwenye salio hubadilika tu kwa mtumaji na mpokeaji;
  5. Mtumaji anamiliki ufunguo wa faragha wa akaunti yake na kwa hakika yuko kwenye orodha ya watumaji (kati ya wale wanaohusika);
  6. Nonce iliyotumika katika muamala imeundwa kwa usahihi.

Kwa uthibitisho mgumu kama huo, waandishi hutumia mchanganyiko Bulletproof (mmoja wa waandishi, kwa njia, alishiriki katika uumbaji wake) na Itifaki ya Sigma, ambazo huitwa Sigma-bullets. Uthibitisho rasmi wa taarifa kama hiyo ni kazi ngumu sana, na inapunguza sana idadi ya watu walio tayari kutekeleza teknolojia.

matokeo?

Kwa maoni yetu, sehemu ya Zether inayoleta faragha kwa blockchains inayotokana na akaunti inaweza kutumika sasa hivi. Lakini kwa sasa, toleo lisilojulikana la teknolojia linaweka vikwazo vikali juu ya matumizi yake, na utata wake juu ya utekelezaji wake. Hata hivyo, haipaswi kupunguzwa kwamba waandishi waliitoa miezi michache iliyopita, na labda mtu mwingine atapata suluhisho la matatizo yaliyopo leo. Baada ya yote, hivi ndivyo sayansi inafanywa.

Chanzo: mapenzi.com

Kuongeza maoni