Slumptal och decentraliserade nÀtverk: praktisk tillÀmpning

Introduktion

«Att generera slumpmÀssiga tal Àr för viktigt för att överslÄtit Ät slumpen»
Robert Kavyu, 1970

Denna artikel handlar om praktisk tillĂ€mpning av lösningar som anvĂ€nder kollektiv generering av slumpmĂ€ssiga tal i en osĂ€ker miljö. För att sammanfatta – hur och varför anvĂ€nds slumpmĂ€ssighet i blockkedjor, och lite om hur man kan sĂ€rskilja ”bra” slumpmĂ€ssighet frĂ„n ”dĂ„lig”. Att generera verkligt slumpmĂ€ssiga tal Ă€r en oerhört komplex problematik, Ă€ven pĂ„ enskilda datorer, och har lĂ€nge studerats av kryptografer. I decentraliserade nĂ€tverk Ă€r genereringen av slumpmĂ€ssiga tal Ă€nnu mer komplicerad och viktig.

I nÀtverk dÀr deltagarna inte litar pÄ varandra, möjliggör förmÄgan att generera ett oförnekligt slumpmÀssigt tal effektivt lösande av mÄnga viktiga uppgifter och avsevÀrt förbÀttra redan existerande system. Det Àr vÀrt att notera att spel och lotterier inte Àr det frÀmsta syftet hÀr, vilket kanske först kan verka vara fallet för den ovana lÀsaren.

Generering av slumpmÀssiga tal

Datorer kan inte sjÀlva producera slumpmÀssiga tal, de behöver hjÀlp utifrÄn för detta. En dator kan fÄ ett visst slumpmÀssigt vÀrde genom att till exempel anvÀnda musrörelser, mÀngden anvÀnd minne, parasitÀra strömmar pÄ processorens kontakter och mÄnga andra kÀllor, kallade entropikÀllor. Dessa vÀrden Àr inte helt slumpmÀssiga, dÄ de ligger inom ett visst intervall eller har ett förutsÀgbart förÀndringsmönster. För att omvandla sÄdana tal till verkligen slumpmÀssiga tal inom ett givet intervall tillÀmpar man kryptografiska transformationer för att fÄ jÀmnt fördelade pseudorandomvÀrden frÄn oregelbundet fördelade vÀrden frÄn entropikÀllorna. De erhÄllna vÀrdena kallas pseudorandom, eftersom de inte Àr sanna slumpmÀssiga utan deterministiskt producerade frÄn entropi. Varje bra kryptovaloritm, nÀr den krypterar data, producerar chiffertext som statistiskt bör vara ob distinguishable frÄn en slumpmÀssig sekvens, sÄ att man kan anvÀnda en entropikÀlla som sÀkerstÀller god unikhet och oförutsÀgbarhet Àven inom smÄ intervall; resten av arbetet med att sprida och blanda bitarna i det resulterande vÀrdet kommer krypteringsalgoritmen att ta hand om.

För att avsluta den korta genomgÄngen, vill jag tillÀgga att generering av slumpmÀssiga tal Àven pÄ en enda enhet Àr en av grundpelarna för sÀkerheten av vÄra data. De genererade pseudorandomtal anvÀnds vid upprÀttande av sÀkra anslutningar i olika nÀtverk, för att generera kryptografiska nycklar, för lastbalansering, integritetskontroll och för mÄnga andra tillÀmpningar. MÄnga protokollens sÀkerhet beror pÄ förmÄgan att generera pÄlitlig, oförutsÀgbar slumpmÀssighet utifrÄn, att bevara den och inte avslöja den förrÀn nÀsta steg i protokollet, annars hotas sÀkerheten. En attack mot generatorn av pseudorandomvÀrden Àr extremt farlig och hotar all mjukvara som anvÀnder slumpgenerering.

Detta Àr nÄgot ni bör veta om ni har genomgÄtt en grundkurs i kryptografi, sÄ vi fortsÀtter med decentraliserade nÀtverk.

Slumpar i blockkedjor

Först kommer jag att tala om blockkedjor som stöder smarta kontrakt, eftersom de verkligen kan utnyttja de möjligheter som erbjuds av högkvalitativ och oförneklig slump. FrÄn och med nu kommer jag för korthetens skull att kalla denna teknik "Offentligt verifierbara slumpmÀssiga ljus" eller PVRB. Eftersom blockkedjor Àr nÀtverk dÀr varje deltagare kan verifiera information, Àr en nyckelkomponent i namnet "Offentligt verifierbar", det vill sÀga att vem som helst kan genom berÀkningar fÄ ett bevis pÄ att det erhÄllna numret, som lagts upp i blockkedjan, har följande egenskaper:

  • Resultatet mĂ„ste ha ett bevisligen jĂ€mnt fördelat resultat, dvs baserat pĂ„ bevisligen sĂ€ker kryptografi.
  • Ingen bit av resultatet kan kontrolleras. Som en följd kan resultatet inte förutsĂ€gas i förvĂ€g.
  • Protokollet för generation fĂ„r inte saboteras genom att inte delta i protokollet eller genom att överbelasta nĂ€tverket med attackerande meddelanden.
  • Allt ovanstĂ„ende mĂ„ste vara motstĂ„ndskraftigt mot sammansvĂ€rjningar av ett tillĂ„tet antal oĂ€rliga deltagare i protokollet (t.ex. 1/3 av deltagarna).

Möjligheten för en sammansvuren minoritet av deltagare att producera Ă€ven kontrollerad jĂ€mn/ojĂ€mn slump — en sĂ€kerhetslucka. Möjligheten för en grupp att stoppa utdelningen av slumpen — en sĂ€kerhetslucka. Det finns mĂ„nga problem, och denna uppgift Ă€r inte lĂ€tt...

Det verkar som att den mest betydelsefulla anvÀndningen för PVRB Àr olika spel, lotterier och alla typer av gambling pÄ blockkedjan. Verkligen, detta Àr en viktig riktning, men det finns ocksÄ mer viktiga tillÀmpningar för slumpen i blockkedjor. LÄt oss övervÀga dem.

Konsensusalgoritmer

PVRB för att organisera nĂ€tverkskonsensus spelar en avgörande roll. Transaktioner i blockkedjor skyddas av digitala signaturer, sĂ„ en "attack pĂ„ transaktionen" innebĂ€r alltid att inkludera/exkludera transaktionen i blocket (eller i flera block). Huvuduppgiften för konsensusalgoritmen Ă€r att enas om ordningen av dessa transaktioner och om ordningen av blocken som innehĂ„ller dessa transaktioner. En nödvĂ€ndig egenskap för verkliga blockkedjor Ă€r finalitet – möjligheten för nĂ€tverket att enas om att kedjan fram till det finaliserade blocket Ă€r slutgiltig och aldrig kommer att exkluderas pĂ„ grund av en ny fork. Vanligtvis, för att enas om att ett block Ă€r giltigt och, viktigast av allt, finalt, krĂ€vs det att samla signaturer frĂ„n majoriteten av blockproducenterna (hĂ€refter BP – blockproducenter), vilket Ă„tminstone krĂ€ver att blockkedjan levereras till alla BP och att signaturerna sprids mellan alla BP. Med ökningen av antalet BP vĂ€xer antalet nödvĂ€ndiga meddelanden i nĂ€tverket exponentiellt, dĂ€rför fungerar konsensusalgoritmer som krĂ€ver finalitet, som till exempel pBFT-konsensuset i Hyperledger, inte med den önskade hastigheten, redan frĂ„n nĂ„gra dussin BP, vilket krĂ€ver ett enormt antal anslutningar.

Om det finns en obestridlig och Àrlig PVRB i nÀtverket, sÄ kan man, Àven i den enklaste approximationen, utifrÄn detta vÀlja en av blockproducenterna och utse denne som "ledare" under en runda av protokollet. Om vi har N blockproducenter, av vilka M: M > 1/2 N Àr Àrliga, censurerar inte transaktioner och bygger inga forks av kedjan för att utföra en "double spend"-attack, sÄ möjliggör anvÀndningen av en jÀmnt distribuerad obestridlig PVRB att vÀlja en Àrlig ledare med sannolikheten M / N (M / N > 1/2). Om varje ledare tilldelas en egen tidsram under vilken de kan producera en block och validera kedjan, och dessa intervaller Àr lika i tid, kommer kedjan av Àrliga BP att vara lÀngre Àn kedjan skapad av illvilliga BP, och konsensusalgoritmen, som Àr baserad pÄ kedjans lÀngd, kommer helt enkelt att avvisa den "dÄliga". Denna princip om att tilldela lika tidskvanta till varje BP tillÀmpades först i Graphene (föregÄngaren till EOS) och möjliggör att majoriteten av blocken stÀngs med en enda signatur, vilket kraftigt minskar nÀtbelastningen och gör att denna konsensus kan fungera extremt snabbt och stabilt. Trots detta mÄste EOS-nÀtverk nu anvÀnda speciella block (Last Irreversible Block), som bekrÀftas med signaturer frÄn 2/3 BP. Dessa block sÀkerstÀller slutgiltighet (oförmÄga att skapa en gaffel som börjar tidigare Àn den senaste Last Irreversible Block).

I verkliga implementationer Ă€r dock protokollschemat mer komplext — omröstningar om de föreslagna blocken genomförs i flera steg för att upprĂ€tthĂ„lla nĂ€tverkets funktion Ă€ven vid blocköverskridningar och nĂ€tverksproblem, men Ă€ven med detta i Ă„tanke krĂ€ver konsensusalgoritmer som anvĂ€nder PVRB betydligt fĂ€rre meddelanden mellan BP, vilket gör dem snabbare Ă€n traditionell PВFT eller olika modifieringar av denna.

Den mest framtrÀdande representanten för sÄdana algoritmer: Ouroboros frÄn Cardano-teamet, som enligt uppgift har matematiskt bevisad motstÄndskraft mot sammansvÀrjningar bland BP.

I Ouroboros anvĂ€nds PVRB för att definiera det sĂ„ kallade "BP-schemat" — ett schema dĂ€r varje BP fĂ„r en egen tidslucka för publicering av block. En stor fördel med att anvĂ€nda PVRB Ă€r den fullstĂ€ndiga "jĂ€mlikheten" bland BP (baserat pĂ„ storleken pĂ„ deras saldon). Integriteten hos PVRB garanterar att illvilliga BP inte kan kontrollera schemat för tidsluckor, och dĂ€rför kan de inte manipulera kedjan genom att i förvĂ€g förbereda och analysera kedjegaflar, och för att vĂ€lja gaffeln rĂ€cker det att bara förlita sig pĂ„ kedjans lĂ€ngd, utan att anvĂ€nda subtila metoder för att berĂ€kna BP:s "nytta" och "vikten" av dess block.

I alla fall dÀr en decentraliserad nÀtverk behöver vÀlja en slumpmÀssig deltagare, Àr PVRB nÀstan alltid det bÀsta valet, snarare Àn en deterministisk variant baserad pÄ till exempel blockhash. Utan PVRB kan möjligheten att pÄverka valet av deltagare leda till attacker, dÀr angriparen, genom att vÀlja mellan flera möjliga framtider, kan vÀlja nÀsta korrumperade deltagare eller flera av dem för att sÀkra ett större inflytande över beslutsprocessen. AnvÀndningen av PVRB diskrediterar dessa typer av attacker.

Skalning och belastningsbalansering

PVRB kan ocksÄ medföra betydande fördelar för uppgifter som syftar till att minska belastningen och skala betalningar. För att börja Àr det vettigt att bekanta sig med artikeln Rivest "Electronic Lottery Tickets as Micropayments". Den övergripande idén Àr att i stÀllet för att göra 100 betalningar om 1 cent frÄn betalaren till mottagaren, kan man spela pÄ en rÀttvis lotteri med ett pris pÄ 1$ = 100 cent, dÀr betalaren vid varje betalning om 1 cent överför en av sina 100 "lotteribiljetter" till banken. En av dessa biljetter vinner banken 1$, och det Àr just den biljett som mottagaren kan registrera pÄ blockchain. Det mest avgörande Àr att de ÄterstÄende 99 biljetterna överförs mellan mottagaren och betalaren utan nÄgot externt deltagande, genom en privat kanal och med valfri hastighet. En bra beskrivning av protokollet baserat pÄ detta schema i Emercoin-nÀtverket kan lÀsas hÀr.

Denna schema har flera problem, till exempel kan mottagaren sluta betjÀna betalaren omedelbart efter att ha fÄtt den vinnande biljetten, men för mÄnga sÀrskilda tillÀmpningar, som minutavgifter eller elektroniska prenumerationer pÄ tjÀnster, kan de bortses ifrÄn. Det frÀmsta kravet Àr sjÀlvklart Àrlighet i det genomförda lotteriet, och för att hÄlla det Àr PVRB helt nödvÀndigt.

Valet av en slumpmÀssig deltagare Àr avgörande för shardingsprotokoll som syftar till att möjliggöra horisontell skalning av blockkedjan, vilket gör det möjligt för olika BP att endast bearbeta sitt eget scope av transaktioner. Detta Àr en mycket komplex uppgift, sÀrskilt nÀr det gÀller sÀkerhet vid sammanslagning av shards. Den Àrliga valet av en slumpmÀssig BP för att tillsÀtta ansvariga för en viss shard, precis som i konsensusalgoritmer, Àr ocksÄ en uppgift för PVRB. I centraliserade system tillsÀtts shards av en belastningsbalanserare, som helt enkelt berÀknar en hash av förfrÄgan och skickar den till den nödvÀndiga utföraren. I blockkedjor kan möjligheten att pÄverka denna tillsÀttning leda till angrepp pÄ konsensus. Till exempel kan en angripare kontrollera innehÄllet i transaktioner, han kan styra vilka transaktioner som hamnar i den shard han kontrollerar och manipulera blockkedjan inom den. Diskussionen om problemet med att anvÀnda slumpmÀssiga tal för shardingsuppgifter i Ethereum kan lÀsas. hÀr
Sharding Àr en av de mest ambitiösa och seriösa uppgifterna inom blockkedjan, och dess lösning kommer att möjliggöra byggandet av decentraliserade nÀtverk med fantastisk prestanda och kapacitet. PVRB Àr bara en av de viktiga komponenterna för att lösa detta.

Spel, ekonomiska protokoll, arbitrage

Roller av slumpmĂ€ssiga tal i spelindustrin Ă€r svĂ„ra att överskatta. Den uppenbara anvĂ€ndningen i onlinecasinon, och den underliggande vid berĂ€kningen av effekterna av en spelares handlingar – allt detta utgör extremt komplexa problem för decentraliserade nĂ€tverk, dĂ€r det inte finns nĂ„gon möjlighet att förlita sig pĂ„ en central kĂ€lla för slumpmĂ€ssighet. Men, slumpmĂ€ssigt val kan ocksĂ„ lösa mĂ„nga ekonomiska problem och hjĂ€lpa till att bygga enklare och mer effektiva protokoll. Anta att det i vĂ„rt protokoll finns tvister angĂ„ende betalning för vissa billiga tjĂ€nster, och dessa tvister uppstĂ„r ganska sĂ€llan. I sĂ„dana fall, om det finns en oĂ„terkallelig PVRB, kan kunder och sĂ€ljare enas om att slumpmĂ€ssigt lösa tvister, men med en viss sannolikhet. Till exempel, med en sannolikhet pĂ„ 60 % vinner kunden, och med en sannolikhet pĂ„ 40 % vinner sĂ€ljaren. Denna till en början absurda metod tillĂ„ter automatiskt att lösa tvister med en exakt förutsĂ€gbar andel vinster/förluster, vilket Ă€r acceptabelt för bĂ„da parter utan nĂ„got deltagande av en tredje part och onödig tidsĂ„tgĂ„ng. Dessutom kan sannolikhetsförhĂ„llandet vara dynamiskt och bero pĂ„ vissa globala variabler. Om till exempel företaget gĂ„r bra, med ett lĂ„gt antal tvister och hög lönsamhet, kan företaget automatiskt justera sannolikheten för att lösa en tvist mot kundfokus, till exempel 70/30 eller 80/20, och omvĂ€nt, om tvister kostar mycket pengar och Ă€r bedrĂ€gliga eller oönskade, kan sannolikheten justeras Ă„t andra hĂ„llet.

Ett stort antal intressanta decentraliserade protokoll, sÄsom token curaterade register, predictionsmarknader, bonding curves och mÄnga andra, utgör ekonomiska spel dÀr gott beteende belönas och dÄligt bestraffas. Dessa protokoll har ofta sÀkerhetsproblem som stÄr i konflikt med varandra. Det som Àr skyddat mot attacker frÄn "valarna" med miljarder tokens ("big stake") Àr sÄrbart för attacker frÄn tusentals konton med smÄ saldon ("sybil stake"), och ÄtgÀrder som vidtas mot en attack, till exempel icke-linjÀra avgifter, som skapats för att göra det olönsamt för stora insatser, diskrediteras vanligtvis av en annan attack. Eftersom det handlar om ett ekonomiskt spel kan de relevanta statistiska vikterna berÀknas i förvÀg, och avgifter kan helt enkelt ersÀttas med randomiserade med motsvarande fördelning. SÄdana probabilistiska avgifter implementeras extremt enkelt om det finns en pÄlitlig kÀlla till slumpmessighet i blockkedjan och krÀver inga komplicerade berÀkningar, vilket gör livet svÄrare bÄde för valarna och sybil-erna.
Samtidigt Àr det viktigt att komma ihÄg att kontroll över en enda bit i denna slumpmessighet möjliggör fusk genom att dubbla eller halvera sannolikheterna, sÄ en Àrlig PVRB - en viktig komponent i sÄdana protokoll.

Var hittar man rÀtt slumpmessighet?

Teoretiskt sett möjliggör en Àrlig slumpmÀssig urvalsprocess i decentraliserade nÀtverk bevisbar sÀkerhet för nÀstan vilket protokoll som helst mot samverkan. Motiveringen Àr ganska enkel - om nÀtverket enas om en bit, 0 eller 1, och mindre Àn hÀlften av deltagarna Àr oÀrliga, sÄ kommer nÀtverket, vid tillrÀckligt mÄnga iterationer, garanterat att nÄ konsensus om denna bit med en fast sannolikhet. Bara för att den Àrliga slumpen kommer att vÀlja 51 av 100 deltagare i 51 % av fallen. Men detta gÀller i teorin, eftersom det i verkliga nÀtverk, för att uppnÄ en sÄdan sÀkerhetsnivÄ som i artiklarna, krÀvs mÄnga meddelanden mellan vÀrdar, komplex flermetodskryptografi, och varje komplicering av protokollet lÀgger omedelbart till nya attackvektorer.
Det Àr dÀrför vi Ànnu inte ser en bevisat robust PVRB i blockkedjor, som har anvÀnts tillrÀckligt lÀnge för att klara tester mot verkliga applikationer, flera revisioner, belastningar, och sjÀlvklart, verkliga attacker, utan vilka det Àr svÄrt att kalla en produkt verkligen sÀker.

Det finns emellertid flera lovande tillvÀgagÄngssÀtt, de skiljer sig Ät i mÄnga detaljer, och nÄgot av dem kommer definitivt att lösa problemet. Med dagens berÀkningsresurser kan kryptografisk teori ganska smidigt omvandlas till praktiska tillÀmpningar. Framöver kommer vi gÀrna att berÀtta om implementationer av PVRB: det finns för nÀrvarande flera, var och en med sitt eget viktiga egenskaper och specifikationer för genomförande, och bakom varje finns en bra idé. Det Àr inte sÄ mÄnga team som sysslar med slumpmÀssighet, och erfarenheten frÄn varje av dem Àr oerhört viktig för alla andra. Vi hoppas att vÄr information kommer att hjÀlpa andra team att gÄ snabbare, med tanke pÄ erfarenheterna frÄn föregÄngarna.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster