Sissejuhatus
âJuhuslike numbrite genereerimine on liiga tĂ€htis, et seda juhuse hooleks jĂ€ttaâ
Robert Kavju, 1970
See artikkel kĂ€sitleb kollektiivsete juhuslike numbrite genereerimise lahenduste praktilist rakendamist usaldamatutes keskkondades. Lihtsalt öeldes â kuidas ja miks kasutatakse juhuslikkust plokiahelates ning natuke ka sellest, kuidas eristada âheadâ juhuslikkust âhalvastâ. TĂ”eliselt juhusliku numbri genereerimine on isegi eraldi arvutis ÀÀrmiselt keeruline probleem, mis on juba pikka aega olnud krĂŒptograafide uurimistöö objekt. Ja jaotatud vĂ”rkudes on juhuslike numbrite genereerimine veelgi keerulisem ja tĂ€htsam.
Just sellistes vĂ”rkudes, kus osalised ei usalda ĂŒksteist, vĂ”imalus genereerida vaieldamatult juhuslik number aitab tĂ”husalt lahendada mitmeid olulisi ĂŒlesandeid ja oluliselt tĂ€iustada juba olemasolevaid skeeme. Tegelikult ei ole hasartmĂ€ngud ja loteriid siin sugugi esikohal, nagu alguses vĂ”ib kogenematule lugejale tunduda.
Juhuslike numbrite genereerimine
Arvutid ei oska ise genereerida juhuslikke numbreid, selle jaoks vajavad nad vĂ€liseid abi. Arvuti vĂ”ib saada mĂ”ne juhusliku vÀÀrtuse nĂ€iteks hiire liikumise, kasutatud mĂ€lu hulga, protsessori kontaktidel esinevate parasiitide voolude ja paljude teiste allikate kaudu, mida nimetatakse entropia allikateks. Need vÀÀrtused pole pĂ€ris juhuslikud, kuna nad asuvad kindlas vahemikus vĂ”i muutuvad ennustatult. Et muuta sellised numbrid tĂ”eliselt juhuslikeks numbriteks antud vahemikus, kasutatakse krĂŒptopreparerimisi, et saada ebaĂŒhtlaselt jaotatud entropia allikast ĂŒhtlaselt jaotatud pseudojuhuslikke vÀÀrtusi. Saadud vÀÀrtusi nimetatakse pseudojuhuslikeks, kuna nad ei ole tĂ”eliselt juhuslikud, vaid deterministlikult genereeritud entropiast. Iga hea krĂŒptoalgoritm, andmeid krĂŒpteerides toodab ĆĄifritekste, mis statistiliselt ei tohiks erineda juhuslikust jĂ€rjestusest, nii et juhuslikkuse tootmiseks vĂ”ib kasutada entropia allikat, mis tagab vaid head kordumatust ja ennustamatust vÀÀrtustes isegi vĂ€ikestes vahemikes, ĂŒlejÀÀnud töö bittide hajutamise ja segamise osas tuleks algoritmil.
LĂ”petamaks lĂŒhikese koolituse, lisan, et juhuslike numbrite genereerimine isegi ĂŒhel seadmel on ĂŒks meie andmete turvalisuse alustalasid, genereeritud pseudojuhuslikke numbreid kasutatakse turvaliste ĂŒhenduste loomisel erinevates vĂ”rkudes, krĂŒptograafiliste vĂ”tmete genereerimisel, koormuse tasakaalustamisel, terviklikkuse kontrollimisel ja veel paljude rakenduste puhul. Paljude protokollide turvalisus sĂ”ltub vĂ”imest genereerida usaldusvÀÀrne, vĂ€ljastpoolt ennustamatud juhuslikkus, seda salvestada ja mitte paljastada jĂ€rgmise protokolli sammu jooksul, vastasel juhul on turvalisus ohus. RĂŒnnak pseudojuhuslike vÀÀrtuste generaatori vastu on ÀÀrmiselt ohtlik ja ohustab korraga kogu tarkvara, mis kasutab juhuslike numbrite genereerimist.
KĂ”ike seda peaksite teadma, kui olete lĂ€binud krĂŒptograafia baaskursuse, seetĂ”ttu jĂ€tkame detsentraliseeritud vĂ”rkude teemaga.
Juhus blockchainides
Esiteks rÀÀgin plokiahelatest, mis toetavad nutilepinguid, kuna just nemad saavad tĂ€ielikult Ă€ra kasutada kvaliteetse ja vaieldamatu juhuse vĂ”imalusi. Edaspidi nimetan seda tehnoloogiat âAvalikult kontrollitavad juhuslikud signaalidâ vĂ”i PVRB. Kuna plokiahelad on vĂ”rgud, mille teavet saavad kontrollida kĂ”ik osalejad, on nime olulisim osa âAvalikult kontrollitavadâ, s.t. igaĂŒhel on vĂ”imalus lĂ€bi arvutuste tĂ”estada, et plokiahelas avaldatud number omab jĂ€rgmisi omadusi:
- Tulemus peab olema tĂ”estatud ĂŒhtlaselt jaotunud, s.t. pĂ”hinev tĂ”estatud krĂŒptograafial.
- Mitte ĂŒhtegi tulemust bitist ei saa kontrollida. SeetĂ”ttu ei saa tulemust ette ennustada.
- Protokolli genereerimist ei saa saboteerida, osalemat protokollis vĂ”i koormates vĂ”rku rĂŒndavate sĂ”numitega.
- KĂ”ik ĂŒlalnimetatud peab olema vastupidav lubatud arvu ebaausate protokolli osalejate (nĂ€iteks 1/3 osalejat) koostööle.
Iga vĂ”imalus kokku saanud alamhulga osalejatel genereerida isegi kontrollitav paaris/ĂŒksuslik juhus â turvaauk. Iga vĂ”imalus rĂŒhmal peatada juhuse genereerimise â turvaauk. ĂhesĂ”naga, probleeme on palju ja see ĂŒlesanne pole kerge...
Tundub, et PVRB kĂ”ige olulisem rakendus on erinevad mĂ€ngud, loteriid ja ĂŒldiselt kĂ”ik mĂ€nguasi plokiahelas. TĂ”epoolest, see on oluline suund, kuid juhusel plokiahelates on ka tĂ€htsamaid rakendusi. Vaatame neid.
Konsensuse algoritmid
PVRB organisatsiooni vĂ”rgukonsensuse jaoks mĂ€ngib tohutut rolli. Tehingud plokiahelates on kaitstud digitaalse allkirjaga, seetĂ”ttu on "rĂŒnnak tehingu vastu" alati tehingu lisamine/riismine plokki (vĂ”i mitmesse plokki). Peamine ĂŒlesanne konsensuse algoritmil on kokku leppida, kuidas need tehingud ja plokid, mis sisaldavad neid tehinguid, jĂ€rjekorda seada. Samuti on tĂ”eliselt toimivate plokiahelate vajalik omadus lĂ”ppus â vĂ”ime, et vĂ”rk lepiks kokku, et ahel kuni lĂ”ppplokini on lĂ”plik ja ei saa kunagi vĂ€listada uue jagunemise tĂ”ttu. TĂŒĂŒpiliselt, et kokku leppida, et plokk on kehtiv ja, mis kĂ”ige olulisem, lĂ”plik, on vaja koguda allkirjad enamuselt plokki tootjatelt (edaspidi BP â block-producers), mis nĂ”uab vĂ€hemalt plokkide ahela edastamist kĂ”igile BP-dele ja allkirjade levitamist kĂ”igi BP-de vahel. BP-de arvu suurenedes kasvab vajalike sĂ”numite arv vĂ”rku eksponentsiaalselt, seetĂ”ttu konsensuse algoritmid, mis nĂ”uavad lĂ”plikkust, nagu nĂ€iteks pBFT konsensus Hyperledgeris, ei tööta vajaliku kiirusena, alustades juba mĂ”nest kĂŒmnest BP-st, nĂ”udes tohutult palju ĂŒhendusi.
Kui vĂ”rgus on vaieldamatu ja aus PVRB, siis isegi kĂ”ige lihtsamas lĂ€henemises saame selle pĂ”hjal valida ĂŒhe block produceridest ja nimetada ta "liidriks" ĂŒhe protokolli vooru ajaks. Kui meil on N block producer-it, kellest M: M > 1/2 N on ausad, ei tsenseeri tehinguid ja ei loo ahela jagunemisi, et korraldada "double spend" rĂŒnnakut, siis ĂŒhtlaselt jaotatud vaieldamatu PVRB kasutamine vĂ”imaldab valida ausa liidri tĂ”enĂ€osusega M / N (M / N > 1/2). Kui iga liidri jaoks mÀÀrata oma ajavahemik, mille jooksul ta saab ploki luua ja ahelat valideerida, ja need ajavahemikud on ĂŒhesugused, siis on ausate BP plokke ahel pikem kui pahatahtlike BP loodud ahel ning konsensusalgoritm, mis toetub ahela pikkusele, lihtsalt kĂ”rvaldab "halva". See vĂ”rdselt ajakvante igale BP andmise pĂ”himĂ”te rakendati esmakordselt Graphenes (EOS-i eelkĂ€ijas) ning vĂ”imaldab enamus plokkidest sulgeda ĂŒhe allkirjaga, mis vĂ€hendab oluliselt vĂ”rgu koormust ja vĂ”imaldab sellel konsensusel töötada ÀÀrmiselt kiiresti ja stabiilselt. Siiski peab EOS-i vĂ”rk praegu kasutama spetsiaalseid plokke (Viimane Kinnitatud Plokk), mida kinnitatakse 2/3 BP allkirjadega. Need plokid tagavad lĂ”plikkuse (keti haru tekkimise vĂ”imatuse, mis algab enne viimast Viimast Kinnitatud Plokki).
Reaalsetes rakendustes on protokolli skeem keerulisem â pakutud plokkide hÀÀletused toimuvad mitmes etapis, et toetada vĂ”rgu tööd plokkide vahelejĂ€tmise ja vĂ”rgu probleemide korral, kuid isegi sellega arvestades nĂ”uavad PVRB kasutavad konsensusalgoritmid oluliselt vĂ€hem sĂ”numeid BP vahel, mis muudab need kiiremateks kui traditsiooniline PĐFT vĂ”i erinevad selle variandid.
Selliste algoritmide kÔige silmatorkavam esindaja: Cardano meeskonnalt, mis, nagu on kuulutatud, omab matemaatiliselt tÔestatud vastupidavust BP-de vahelisele salajasele kokkuleppele.
Ouroboroses kasutatakse PVRB-d nii-öelda "BP ajakava" mÀÀramiseks â ajakava, mille kohaselt mÀÀratakse igale BP oma ajavahemik ploki avaldamiseks. PVRB kasutamise suur eelis on BP tĂ€ielik "vĂ”rdsus" (vastavalt nende bilansside suurusele). PVRB ausus tagab, et pahatahtlikud BP-d ei saa ajakava ajavahemike ĂŒle kontrolli omada ja seetĂ”ttu ei saa nad ahelat manipuleerida, valmistades ette ja analĂŒĂŒsides ahela haru, ning haru valimiseks piisab lihtsalt ahela pikkusele toetumisest, ilma et peaks kasutama keerukaid meetodeid BP "kasutegurite" ja tema plokkide "kaalu" arvutamiseks.
Ăldiselt, kui detsentraliseeritud vĂ”rgustikus tuleb valida juhuslik osaleja, on peaaegu alati parem valik PVRB, mitte deterministlik variant, mis pĂ”hineb nĂ€iteks ploki hash'il. Ilma PVRB-ta vĂ”imalus mĂ”jutada osaleja valikut viib rĂŒnnakuteni, kus rĂŒndaja saab valides mitmest tulevikuvĂ”imalusest valida jĂ€rgmise korruptsiooniga seotud osaleja vĂ”i isegi mitu, et tagada suurem osakaal otsuste tegemises. PVRB kasutamine diskrediteerib neid rĂŒnnakutĂŒĂŒpe.
Skaleerimine ja koormuse tasakaalustus
PVRB vĂ”ib tuua tĂ”siseid eeliseid ka koormuse vĂ€hendamise ja maksete skaleerimise ĂŒlesannetes. Esiteks on mĂ”istlik tutvuda Rivesta "Electronic Lottery Tickets as Micropayments". Ăldine sisu on see, et selle asemel, et teha 100 makset 1 senti, saab mĂ€ngida Ă”iglast loterii, mille auhind on 1 dollar = 100 senti, kus maksja iga 1 sendi eest annab pangale ĂŒhe oma 100-st "loterii piletist". Ăks nendest piletitest vĂ”idab pangale 1 dollar, ja just seda piletit saaja saab plokkides fikseerida. KĂ”ige olulisem on see, et ĂŒlejÀÀnud 99 piletit edastatakse saaja ja maksja vahel ilma igasuguse vĂ€lise sekkumiseta, privaatses kanalis ja vajalikul kiirusel. Selle skeemi pĂ”hjaliku protokolli kirjeldust Emercoin'i vĂ”rgustikus vĂ”ib lugeda .
Sellel skeemil on mitu probleem, nÀiteks vÔib saaja kohe pÀrast vÔidupileti saamist lÔpetada maksja teenindamise, kuid paljude eriliste rakenduste, nagu minutipÔhine tasustamine vÔi teenuste elektroonilised tellimused, korral vÔib neid probleeme ignoreerida. Peamine nÔue on loomulikult korraliku loterii ausus, ja selle lÀbiviimiseks on tÀiesti vajalik PVRB.
Juhusliku osaleja valimine on ÀÀrmiselt oluline ka ĆĄardimise protokollide jaoks, mis on suunatud plokiahela horisontaalsele skaleerimisele, vĂ”imaldades erinevatel BP-del töödelda ainult oma tehingute ulatust. See on ÀÀrmiselt keeruline ĂŒlesanne, eriti turvalisuse kĂŒsimustes ĆĄardide ĂŒhendamisel. Aus juhuslik BP valimine konkreetse ĆĄardi nimetamiseks, nagu ka konsensuse algoritmides â on samuti PVRB ĂŒlesanne. Keskhaldusstruktuurides mÀÀrab ĆĄardid tasakaalustaja, kes lihtsalt arvutab pĂ€ringu jĂ€rgi hash'i ja saadab selle vajalikele tĂ€itmisportfellidele. Plokiahelates vĂ”ib selle mÀÀramise mĂ”jutamine viia konsensuse rĂŒndamiseni. NĂ€iteks vĂ”ivad tehingute sisule mĂ”ju avaldada rĂŒndajad, kes saavad kontrollida, millised tehingud satuvad nende kontrollitavasse ĆĄardisse, ja manipuleerida sealset plokiahelat. Ć ardimiseks juhuslike numbrite kasutamise probleemi arutelu Ethereumis on saadaval.
Ć ardimine on ĂŒks ambitsioonikamaid ja tĂ”sisemaid ĂŒlesandeid plokiahela valdkonnas, mille lahendamine vĂ”imaldab luua suurepĂ€rase jĂ”udluse ja mahuga detsentraliseeritud vĂ”rke. PVRB on vaid ĂŒks tĂ€htsamaid komponente selle ĂŒlesande lahendamiseks.
MĂ€ngud, majandusprotokollid, arbitraaĆŸ
Juhuslike numbrite roll mĂ€ngutööstuses on keeruline ĂŒle hinnata. Selge kasutamine online-kasiinodes ja varjatud kasutamine mĂ€ngija tegevuse efektide hindamisel â need on kĂ”ik ÀÀrmiselt keerulised probleemid detsentraliseeritud vĂ”rkudes, kus ei ole vĂ”imalik tugineda kesksele juhuslikkusele. Kuid juhusliku valiku rakendamine vĂ”ib lahendada ka paljusid majandusprobleeme ja aidata luua lihtsamaid ja tĂ”husamaid protokolle. Oletame, et meie protokollis on vaidlused odavate teenuste tasumise osas, ja need vaidlused esinevad piisavalt harva. Sellisel juhul, kui on vaieldamatu PVRB, saavad kliendid ja mĂŒĂŒjad kokku leppida juhuslikus vaidluste lahendamises, kuid kindla tĂ”enĂ€osusega. NĂ€iteks 60% tĂ”enĂ€osusega vĂ”idab klient ja 40% tĂ”enĂ€osusega mĂŒĂŒja. See, esmapilgul absurdne, lĂ€henemine vĂ”imaldab vaidlusi automaatselt lahendada, pakkudes tĂ€pselt prognoositavat vĂ”itude/kaotuste suhet, mis sobib mĂ”lemale poolele ilma kolmanda osapoole sekkumiseta ja tarbetu aja raiskamiseta. Veelgi enam, tĂ”enĂ€osuste suhe vĂ”ib olla dĂŒnaamiline ja sĂ”ltuda teatud globaalsetest muutujatest. NĂ€iteks, kui ettevĂ”tte asjad lĂ€hevad hĂ€sti, tuvastatakse madal vaidluste arv ja kĂ”rge tulusus, vĂ”ib ettevĂ”te automaatselt suunata vaidluste lahendamise tĂ”enĂ€osuse kliendikesksemaks, nĂ€iteks 70/30 vĂ”i 80/20, ja vastupidi, kui vaidlused nĂ”uavad palju vahendeid ja on petturlikud vĂ”i ebamugavad, saab tĂ”enĂ€osust suunata teisele poole.
Suur hulk huvitavaid detsentraliseeritud protokolle, nagu token currated registries, prediction markets, bonding curves ja paljud teised, esindavad majandusmĂ€nge, kus hea kĂ€itumine on auhinnatud ja halb kĂ€itumine karistatud. Neil esinevad sageli turvaprobleemid, mille kaitse vastandub ĂŒksteisele. See, mis on kaitstud "kitse" rĂŒnnaku eest, kellel on miljardite tokenite "suur osalus", on haavatav tuhandete vĂ€ikeste saldosega kontode "sybil osaluse" rĂŒnnaku ees, ning meetmed, mida tehakse ĂŒhe rĂŒnnaku vastu, nĂ€iteks mitte-lineaarsed tasud, mis on loodud selleks, et muuta suure osaluse töö ebaefektiivseks, diskrediteeritakse tavaliselt teise rĂŒnnaku poolt. Kuna tegemist on majandusmĂ€nguga, saab vastavad statistilised kaalukesed eelnevalt arvutada ja lihtsalt asendada tasud juhuslike vastava jaotusega. Sellised tĂ”enĂ€osuslikud tasud on vĂ€ga lihtsad rakendada, kui plokiahelas on usaldusvÀÀrne juhuslikkuse allikas, ja need ei vaja keerulisi arvutusi, keerates elu keeruliseks nii kitle kui ka sybile.
Samas tuleb alati meeles pidada, et kontroll ĂŒhe bitiga selles juhuslikkuses vĂ”imaldab petta, vĂ€hendades ja suurendades tĂ”enĂ€osusi kahekordselt, seega on aus PVRB selliste protokollide jaoks ÀÀrmiselt oluline.
Kust leida Ôiget juhuslikkust?
Teoorias vĂ”imaldab aus juhuslik valik detsentraliseeritud vĂ”rkudes tagada peaaegu iga protokolli tĂ”estatud turvalisuse vandenĂ”u eest. PĂ”hjendus on ĂŒsna lihtne â kui vĂ”rk leppib kokku ĂŒhes bitis 0 vĂ”i 1, ning osalejate seas on vĂ€hem kui pooled ebaausad, siis piisava iteratsioonide arvu korral jĂ”uab vĂ”rk garanteeritult konsensusele selle bitiga kindla tĂ”enĂ€osusega. Lihtsalt sellepĂ€rast, et aus juhuslik valik valib 51 100 osalejast 51% juhtudest. Kuid see on teoorias, kuna reaalsetes vĂ”rkudes sellise turvalisuse taseme saavutamiseks, nagu artiklites, on vajalik palju sĂ”numeid hostide vahel, keeruline mitmejĂ€rguline krĂŒptograafia ja iga protokolli keerustamine toob kohe juurde uusi rĂŒnnakute vektoreid.
SeetĂ”ttu ei nĂ€e me seni blockchainides usaldusvÀÀrset PVRB-d, mida oleks piisavalt kaua kasutatud, et lĂ€bida tĂ”eliste rakendustega, mitmete audititega, koormustestidega ja loomulikult ka tĂ”eliste rĂŒnnakutega seotud katsed, ilma milleta on raske rÀÀkida tĂ”eliselt turvalisest tootest.
KĂŒll aga on mitmeid perspektiivseid lĂ€henemisviise, mis erinevad mitmete detailide poolest, ja ĂŒks neist kindlasti lahendab probleemi. TĂ€napĂ€eva arvutusressursside tasemel suudab krĂŒptograafia teooria oskuslikult muutuda praktilisteks rakendusteks. Edaspidi rÀÀgime hea meelega PVRB rakendustest: neid on mitu, igal neist on oma oluline omaduste ja rakenduse eripĂ€ra kogum, ning igaĂŒhe taga on hea idee. VĂ€he meeskondi tegeleb juhuslikkusega ja igaĂŒhe kogemus on ÀÀrmiselt oluline kĂ”igi teiste jaoks. Loodame, et meie teave aitab teistel meeskondadel kiiremini edasi liikuda, arvestades eelnevat kogemust.
Allikas: habr.com
