Juhuslikud numbrid ja detsentraliseeritud võrgud: praktilised rakendused

Sissejuhatus

"Juhuslike numbrite genereerimine on liiga oluline, et seda juhuse hooleks jätta."
Robert Cavue, 1970

See artikkel on pühendatud kollektiivset juhuslike arvude genereerimist kasutavate lahenduste praktilisele rakendamisele ebausaldusväärses keskkonnas. Lühidalt, kuidas ja miks plokiahelates juhuslikku kasutatakse ning natuke sellest, kuidas eristada “head” juhuslikku “halvast”. Tõeliselt juhusliku arvu genereerimine on isegi ühes arvutis äärmiselt keeruline probleem ja krüptograafid on seda juba pikka aega uurinud. Noh, detsentraliseeritud võrkudes on juhuslike numbrite genereerimine veelgi keerulisem ja olulisem.

Just võrgustikes, kus osalejad üksteist ei usalda, võimaldab vaieldamatu juhusliku arvu genereerimise võimalus paljusid kriitilisi probleeme tõhusalt lahendada ja olemasolevaid skeeme oluliselt täiustada. Veelgi enam, hasartmängud ja loteriid pole siin eesmärk number üks, nagu kogenematule lugejale esmapilgul võib tunduda.

Juhuslike arvude genereerimine

Arvutid ei saa ise juhuslikke numbreid genereerida; selleks on vaja välist abi. Arvuti võib saada mõne juhusliku väärtuse näiteks hiire liigutuste, kasutatud mälumahu, protsessori kontaktide hajuvusvoolude ja paljude muude allikate, mida nimetatakse entroopiaallikateks. Need väärtused ise ei ole täiesti juhuslikud, kuna need on teatud vahemikus või neil on prognoositav muutuste muster. Et muuta sellised arvud teatud vahemikus tõeliselt juhuslikeks arvudeks, rakendatakse neile krüptotransformatsioone, et saada entroopiaallika ebaühtlaselt jaotunud väärtustest ühtlaselt jaotunud pseudojuhuslikud väärtused. Saadud väärtusi nimetatakse pseudojuhuslikeks, kuna need ei ole tõeliselt juhuslikud, vaid on deterministlikult tuletatud entroopiast. Iga hea krüptograafiline algoritm loob andmete krüptimisel šifritekste, mis peaksid olema statistiliselt eristamatud juhuslikust järjestusest, nii et juhuslikkuse saamiseks võite võtta entroopia allika, mis tagab ainult hea korratavuse ja väärtuste ettearvamatuse isegi väikestes vahemikes. ülejäänud töö on bittide hajutamine ja segamine. Saadud väärtuse võtab üle krüpteerimisalgoritm.

Põgusa õppeprogrammi lõpetuseks lisan, et juhuslike numbrite genereerimine kasvõi ühes seadmes on üks meie andmete turvalisuse tagamise alustalasid.Loodud pseudojuhuslikke numbreid kasutatakse turvaliste ühenduste loomisel erinevates võrkudes, genereerimiseks. krüptograafilised võtmed koormuse tasakaalustamiseks, terviklikkuse jälgimiseks ja paljude muude rakenduste jaoks. Paljude protokollide turvalisus sõltub võimest genereerida usaldusväärne, väliselt ettearvamatu juhuslik, seda salvestada ja mitte avaldada seda enne protokolli järgmist etappi, vastasel juhul satub turvalisus ohtu. Rünnak pseudojuhuslike väärtuste generaatori vastu on äärmiselt ohtlik ja ohustab koheselt kogu tarkvara, mis kasutab juhuslikkuse genereerimist.

Seda kõike peaksite teadma, kui läbisite krüptograafia algkursuse, seega jätkame detsentraliseeritud võrkude teemal.

Juhuslik plokiahelates

Kõigepealt räägin nutikate lepingute toega plokiahelatest, just nemad saavad kvaliteetse, vaieldamatu juhuslikkuse pakutavaid võimalusi täielikult ära kasutada. Lisaks nimetan seda tehnoloogiat lühiduse huvides "Avalikult kontrollitavad juhuslikud majakad” või PVRB. Kuna plokiahelad on võrgustikud, milles teavet saab kontrollida iga osaleja, on nime võtmeosa “Publicly Verifiable”, st. Igaüks võib kasutada arvutusi, et hankida tõendeid selle kohta, et plokiahelasse postitatud numbril on järgmised omadused:

  • Tulemus peab olema tõestatavalt ühtlase jaotusega, st põhinema tõestatavalt tugeval krüptograafial.
  • Tulemuse ühtki bitti pole võimalik juhtida. Seetõttu ei saa tulemust ette ennustada.
  • Te ei saa genereerimisprotokolli saboteerida, kui te protokollis ei osale või võrku ründesõnumitega üle koormates
  • Kõik eelnev peab olema vastupidav lubatava arvu ebaausate protokollis osalejate kokkumängule (näiteks 1/3 osalejatest).

Igasugune võimalus, et kokkumängiv alaealine osalejate rühm luua isegi kontrollitud paaris/paaritu juhuslikkuse, on turvaauk. Grupi igasugune suutlikkus peatada juhusliku väljaandmine on turvaauk. Üldiselt on probleeme palju ja see ülesanne pole lihtne...

Tundub, et PVRB kõige olulisem rakendus on erinevad mängud, loteriid ja üldiselt igasugused hasartmängud plokiahelas. Tõepoolest, see on oluline suund, kuid juhuslikkusele plokiahelates on veelgi olulisemad rakendused. Vaatame neid.

Konsensuse algoritmid

PVRB mängib võrgustiku konsensuse korraldamisel tohutut rolli. Tehingud plokiahelates on kaitstud elektroonilise allkirjaga, seega on "rünnak tehingule" alati tehingu lisamine/välistamine plokki (või mitmesse plokki). Ja konsensusalgoritmi põhiülesanne on kokku leppida nende tehingute järjekord ja neid tehinguid sisaldavate plokkide järjekord. Samuti on tõeliste plokiahelate jaoks vajalik omadus lõplikkus – võrgustiku võime leppida kokku, et ahel kuni lõpetatud plokini on lõplik ja seda ei välistata kunagi uue kahvli ilmumise tõttu. Tavaliselt on selleks, et leppida kokku, et plokk on kehtiv ja mis kõige tähtsam lõplik, koguda allkirjad enamustelt plokitootjatelt (edaspidi BP – plokitootjad), mis eeldab vähemalt plokiahela kohaletoimetamist. kõigile BP-dele ja allkirjade jagamine kõigi BP-de vahel. BP-de arvu kasvades kasvab vajalike sõnumite arv võrgus plahvatuslikult, mistõttu lõplikkust nõudvad konsensusalgoritmid, mida kasutatakse näiteks Hyperledger pBFT konsensuses, ei tööta vajaliku kiirusega, alustades mitmekümnest BP-st, mis nõuavad suur hulk ühendusi.

Kui võrgus on vaieldamatu ja aus PVRB, siis võib isegi kõige lihtsamal lähendusel valida selle põhjal ühe plokitootjatest ja määrata ta ühe protokollivooru jooksul “juhiks”. Kui meil on N plokitootjad, millest M: M > 1/2 N on ausad, ärge tsenseerige tehinguid ja ärge suunake ketti "topeltkulutamise" rünnaku läbiviimiseks, siis võimaldab ühtlaselt jaotatud vaidlustamata PVRB kasutamine tõenäosusega valida ausa juhi M / N (M / N > 1/2). Kui igale juhile määratakse oma ajavahemik, mille jooksul ta saab ploki luua ja ahelat valideerida ning need intervallid on ajaliselt võrdsed, siis on ausate BP-de plokiahel pikem kui pahatahtlike BP-de moodustatud ahel ja konsensus Algoritm toetub ahela pikkusele. „halva” lihtsalt loobub. Seda igale BP-le võrdsete ajalõikude eraldamise põhimõtet rakendati esmakordselt Graphene'is (EOS-i eelkäija) ja see võimaldab enamiku plokke sulgeda ühe signatuuriga, mis vähendab oluliselt võrgu koormust ja võimaldab sellel konsensusel töötada väga kiiresti ja stabiilselt. EOS-i võrk peab aga nüüd kasutama spetsiaalseid plokke (Last Irreversible Block), mida kinnitavad 2/3 BP allkirjad. Need plokid tagavad lõplikkuse (ketihargi võimatus alustada enne viimast viimast pöördumatut plokki).

Samuti on reaalsetes teostustes protokolliskeem keerulisem - pakutud plokkide poolt hääletamine toimub mitmes etapis, et võrk säilitada puuduvate plokkide ja võrguga seotud probleemide korral, kuid isegi seda arvesse võttes nõuavad PVRB-d kasutavad konsensusalgoritmid oluliselt vähem sõnumeid BP-de vahel, mis võimaldab muuta need kiiremaks kui traditsiooniline PVFT või selle erinevad modifikatsioonid.

Selliste algoritmide silmapaistvaim esindaja: ouroboros Cardano meeskonnast, mis väidetavalt on matemaatiliselt tõestatav BP kokkumängu vastu.

Ouroboroses kasutatakse PVRB-d niinimetatud "BP ajakava" määratlemiseks - ajakava, mille kohaselt igale BP-le määratakse ploki avaldamiseks oma ajapilu. PVRB kasutamise suur eelis on BP-de täielik “võrdsus” (vastavalt nende bilansi suurusele). PVRB terviklikkus tagab, et pahatahtlikud BP-d ei saa kontrollida ajapilude ajastamist ja seetõttu ei saa ahelaga manipuleerida, valmistades ette ja analüüsides ahela harke, ning kahvli valimiseks piisab, kui tugineda lihtsalt ajapilude pikkusele. kasutamata keerulisi viise BP "kasulikkuse" ja selle plokkide "kaalu" arvutamiseks.

Üldiselt on kõigil juhtudel, kui detsentraliseeritud võrgus on vaja valida juhuslik osaleja, PVRB peaaegu alati parim valik, mitte näiteks ploki räsipõhine deterministlik valik. Ilma PVRBta viib osaleja valiku mõjutamise võimalus rünnakuteni, kus ründajal on võimalik valida mitme futuuri vahel, et valida järgmine korrumpeerunud osaleja või mitu korraga, et tagada suurem osakaal otsuses. PVRB kasutamine diskrediteerib seda tüüpi rünnakuid.

Skaleerimine ja koormuse tasakaalustamine

PVRB-st võib olla palju kasu ka sellistes ülesannetes nagu koormuse vähendamine ja maksete skaleerimine. Alustuseks on mõttekas end kurssi viia artikliga Rivesta “Elektroonilised loteriipiletid kui mikromaksed”. Üldine idee on see, et selle asemel, et teha maksjalt saajale 100 1c makset, saate mängida ausat loterii, mille võidusumma on 1 $ = 100 c, kus maksja annab pangale ühe 1 oma "loteriipiletist" igaühe eest. 100c makse. Üks neist piletitest võidab purgi $1 ja just selle pileti saab saaja plokiahelasse salvestada. Kõige olulisem on, et ülejäänud 99 piletit liiguks saaja ja maksja vahel ilma välise osaluseta, privaatkanali kaudu ja soovitud kiirusega. Sellel skeemil põhineva protokolli head kirjeldust Emercoini võrgus saab lugeda siin.

Sellel skeemil on mõned probleemid, näiteks võib saaja lõpetada maksja teenindamise kohe pärast võidupileti saamist, kuid paljude erirakenduste puhul, nagu minutiarveldus või teenuste elektrooniline tellimus, võib need tähelepanuta jätta. Peamine nõue on loomulikult loterii ausus ja selle läbiviimiseks on PVRB hädavajalik.

Juhusliku osaleja valik on äärmiselt oluline ka sharding-protokollide puhul, mille eesmärk on horisontaalselt skaleerida plokkahelat, võimaldades erinevatel BP-del töödelda ainult oma tehingute ulatust. See on äärmiselt keeruline ülesanne, eriti turvalisuse mõttes kildude liitmisel. Juhusliku BP õiglane valimine konkreetse killu eest vastutavate isikute määramiseks, nagu konsensusalgoritmide puhul, on samuti PVRB ülesanne. Tsentraliseeritud süsteemides määrab killud tasakaalustaja; see lihtsalt arvutab päringu räsi ja saadab selle vajalikule täitjale. Plokiahelates võib selle ülesande mõjutamise võimalus viia konsensuse rünnakuni. Näiteks saab ründaja kontrollida tehingute sisu, ta saab kontrollida, millised tehingud lähevad tema juhitavale killule ja manipuleerida selles oleva plokkide ahelaga. Saate lugeda arutelu juhuslike arvude kasutamise probleemi kohta Ethereumi ülesannete jagamisel siin
Jagamine on üks ambitsioonikamaid ja tõsisemaid probleeme plokiahela valdkonnas; selle lahendus võimaldab ehitada fantastilise jõudluse ja mahuga detsentraliseeritud võrgustikke. PVRB on vaid üks olulisi plokke selle lahendamiseks.

Mängud, majandusprotokollid, arbitraaž

Juhuslike numbrite rolli mängutööstuses on raske üle hinnata. Selgesõnaline kasutamine online-kasiinodes ja kaudne kasutamine mängija tegevuse mõjude arvutamisel on detsentraliseeritud võrkude jaoks äärmiselt keerulised probleemid, kus ei ole võimalik tugineda juhuslikkuse kesksele allikale. Kuid juhuslik valik võib lahendada ka paljusid majandusprobleeme ning aidata koostada lihtsamaid ja tõhusamaid protokolle. Oletame, et meie protokollis on vaidlusi mõne odava teenuse tasumise üle ja neid vaidlusi tuleb ette üsna harva. Sel juhul saavad vaieldamatu PVRB olemasolul kliendid ja müüjad kokku leppida vaidluste lahendamises juhuslikult, kuid etteantud tõenäosusega. Näiteks 60% tõenäosusega võidab klient ja 40% tõenäosusega müüja. Selline esmapilgul absurdne lähenemine võimaldab vaidlusi automaatselt lahendada täpselt prognoositava võitude/kaotuste osakaaluga, mis sobib mõlemale poolele ilma kolmanda osapoole osaluse ja tarbetu ajaraiskamiseta. Lisaks võib tõenäosussuhe olla dünaamiline ja sõltuda mõnest globaalsest muutujast. Näiteks kui ettevõttel läheb hästi, vaidlusi on vähe ja kasumlikkus on kõrge, võib ettevõte vaidluse lahendamise tõenäosuse automaatselt nihutada kliendikesksuse suunas, näiteks 70/30 või 80/20 ja vastupidi, kui vaidlused võtavad palju raha ja on petturlikud või ebapiisavad, saate tõenäosust teises suunas nihutada.

Suur hulk huvitavaid detsentraliseeritud protokolle, nagu märgiga kureeritud registrid, ennustusturud, sidumiskõverad ja paljud teised, on majanduslikud mängud, kus head käitumist premeeritakse ja halba käitumist karistatakse. Need sisaldavad sageli turvaprobleeme, mille kaitsed on omavahel vastuolus. See, mis on kaitstud miljardite žetoonidega „vaalade” rünnaku eest (“suur panus”), on haavatav tuhandete väikese saldoga kontode rünnakute eest (“sybil stake”) ja meetmete suhtes, mida võetakse ühe rünnaku vastu, näiteks mitte lineaarsed tasud, mis on loodud selleks, et muuta suure panusega töö kahjumlikuks, diskrediteeritakse tavaliselt mõne teise rünnakuga. Kuna me räägime majandusmängust, saab vastavad statistilised kaalud eelnevalt välja arvutada ja asendada komisjonitasud lihtsalt sobiva jaotusega randomiseeritud omadega. Selliseid tõenäosuslikke komisjonitasusid rakendatakse äärmiselt lihtsalt, kui plokiahelal on usaldusväärne juhuslikkuse allikas ja see ei nõua keerulisi arvutusi, muutes nii vaalade kui ka siblite elu keeruliseks.
Samas tuleb jätkuvalt meeles pidada, et kontroll ühe biti üle selles juhuslikkuses võimaldab petta, vähendades ja suurendades tõenäosusi poole võrra, seega on aus PVRB selliste protokollide kõige olulisem komponent.

Kust leida õige juhuslik?

Teoreetiliselt muudab õiglane juhuslik valik detsentraliseeritud võrkudes peaaegu iga protokolli tõestatavalt turvaliseks kokkumängu eest. Põhjendus on üsna lihtne – kui võrk lepib kokku ühes 0 või 1 bitis ja vähem kui pooled osalejatest on ebaausad, siis piisavate iteratsioonide korral saavutab võrk kindla tõenäosusega selle biti osas konsensuse. Lihtsalt sellepärast, et aus juhuslik valib 51% juhtudest 100 osaleja seast 51. Aga see on teoreetiliselt, sest... reaalsetes võrkudes on artiklites kirjeldatud turbetaseme tagamiseks vaja palju hostide vahelisi sõnumeid, keerukat mitme läbipääsuga krüptograafiat ja protokolli mis tahes tüsistus lisab kohe uusi ründevektoreid.
Seetõttu ei näe me plokiahelates veel tõestatult vastupidavat PVRB-d, mida oleks kasutatud piisavalt kaua, et seda oleks testitud reaalsete rakenduste, mitmekordsete auditite, laadimiste ja loomulikult reaalsete rünnakute poolt, ilma milleta on raske rünnakut nimetada. toode on tõeliselt ohutu.

Siiski on mitmeid paljutõotavaid lähenemisviise, need erinevad paljude detailide poolest ja üks neist lahendab kindlasti probleemi. Kaasaegsete arvutusressursside abil saab krüptograafiateooriat üsna nutikalt praktilisteks rakendusteks tõlkida. Edaspidi räägime hea meelega PVRB juurutustest: neid on nüüd mitu, igaühel on oma komplekt olulisi omadusi ja juurutusomadusi ning igaühe taga on hea idee. Randomiseerimisega tegelevaid meeskondi ei ole palju ja igaühe kogemus on kõigi teiste jaoks äärmiselt oluline. Loodame, et meie info võimaldab teistel meeskondadel eelkäijate kogemusi arvestades kiiremini edasi liikuda.

Allikas: www.habr.com

Lisa kommentaar