Bevezetés
„A véletlenszám-generálás túl fontos ahhoz, hogy a véletlenre bízzuk.”
Robert Cavu, 1970
Ez a cikk a kollektív véletlenszám-generálás gyakorlati alkalmazásaira összpontosít megbízhatatlan környezetben. Röviden; hogyan és miért használják a véletlent a blokkláncokban, és egy kicsit arról, hogyan lehet megkülönböztetni a „jó” véletlent a „rossztól”. A valóban véletlenszerű szám előállítása rendkívül nehéz feladat, még egyetlen számítógépen is, és régóta tanulmányozzák a kriptográfusok. A decentralizált hálózatokban a véletlenszámok generálása még bonyolultabb és fontosabb.
Különösen azokban a hálózatokban, ahol a résztvevők nem bíznak egymásban, a megkérdőjelezhetetlen véletlenszám generálásának képessége lehetővé teszi számos fontos feladat hatékony megoldását, és jelentősen javíthatja a már létező rendszereket. Érdemes megjegyezni, hogy a szerencsejátékok és lottók nem is az első számú cél, ahogy azt egy tapasztalatlan olvasónak először tűnhet.
Véletlenszám-generálás
A számítógépek nem képesek önállóan véletlenszerű számokat előállítani, ehhez külső segítségre van szükségük. A számítógép különféle módszerekkel, például az egér mozgásával, a felhasználott memória mennyiségével, a processzorkontaktokon lévő parazita áramokkal és számos más, entropiaforrásnak nevezett forrással szerezhet véletlen értékeket. Ezek az értékek nem igazán véletlenszerűek, mivel egy meghatározott tartományon belül helyezkednek el, vagy előre kiszámítható változásokkal rendelkeznek. Ahhoz, hogy az ilyen számokat valódi véletlen számokká alakítsuk át egy adott tartományban, kriptográfiai átalakításokat alkalmaznak, hogy a nem egyenletesen eloszlott entropiaforrásból egyenletesen eloszlott álnéven generált értékeket nyerjenek. Az így kapott értékeket álnévenek nevezik, mivel nem valódi véletlenek, hanem determinisztikus módon generálták az entropiából. Bármely jó kriptoalgoritmus, amikor adatokat titkosít, olyan titkosított szövegeket hoz létre, amelyek statisztikailag megkülönböztethetetlenek a véletlenszerű sorozattól, így a véletlen előállításához olyan entropiát vehetünk alapul, amely csak jó megismételhetőséget és kiszámíthatatlanságot biztosít, a fennmaradó feladatot a titkosító algoritmus végzi el a kidobált és megkevert bitek kezelésében az eredményben.
A rövid tájékoztatás befejezéseként hozzáteszem, hogy a véletlenszám-generálás még egy eszközön is - az egyik pillére az adataink biztonságának - a generált álnéven használt számok a különböző hálózatokban a védett kapcsolatok létesítésére, kriptográfiai kulcsok generálására, terheléselosztásra, integritás ellenőrzésére és még sok más alkalmazásra használatosak. Számos protokoll biztonsága attól függ, hogy képesek vagyunk-e megbízható, előre nem látható véletlent generálni, megőrizni azt, és nem felfedni a következő lépésig a protokoll során, különben a biztonság veszélybe kerül. A véletlenszerű számok generátorának megtámadása rendkívül veszélyes, és az összes olyan szoftvert veszélyezteti, amely a véletlen számok generálását használja.
Mindez fontos, ha alapfokú kriptográfiai tanfolyamon vettél részt, ezért folytassuk a decentralizált hálózatokkal.
Véletlenszerűség a blokkláncokban
Elsősorban a smart contractokat támogató blokkláncokról fogok beszélni, amelyek teljes mértékben ki tudják használni a minőségi, vitathatatlan véletlenszámok által nyújtott lehetőségeket. A továbbiakban ezt a technológiát “Közpublic verifikálható véletlen jelek” vagy PVRB néven fogom említeni. Mivel a blokkláncok hálózatok, amelyekben az információt bárki ellenőrizheti, a név kulcsfontosságú része a “Közpublic verifikálható”, tehát bárki, aki szeretné, képes számítások segítségével bizonyítékot szerezni arra, hogy a blokkláncban rögzített szám rendelkezik a következő tulajdonságokkal:
- Az eredménynek bizonyíthatóan egyenletes eloszlásúak kell lennie, azaz bizonyíthatóan ellenálló kriptográfián kell alapulnia.
- Nem lehet ellenőrizni az eredmény egyetlen bitjét sem. Ennek következtében az eredmény előre nem látható.
- Nem lehet szabotálni a generáló protokolt úgy, hogy nem veszünk részt a protokollban, vagy a hálózat túlterhelésével támadó üzenetekkel.
- Mindazonáltal a fenti feltételeknek ellenállónak kell lenniük az elfogadható számú tisztességtelen résztvevő összeesküvéseivel szemben (például a résztvevők 1/3-a).
Bármilyen lehetőség az összeesküvői csoport számára, hogy még kontrollált páros/ páratlan véletlent is generáljon, biztonsági rés. Bármilyen lehetőség arra, hogy a csoport megállítsa a véletlen generálást, biztonsági rés. Összességében sok probléma van, és ez a feladat nem könnyű…
Úgy tűnik, hogy a PVRB legfontosabb alkalmazása a különféle játékok, lottók és egyéb szerencsejáték-formák a blokkláncon. Valóban, ez egy fontos irány, de a blokkláncok véletlenszámának van ennél fontosabb felhasználása is. Vizsgáljuk meg ezeket.
Konszenzus algoritmusok
A PVRB szerepe a hálózati konszenzus megszervezésében rendkívül nagy jelentőséggel bír. A blokkláncok tranzakcióit elektronikus aláírás védi, ezért a "tranzakció elleni támadás" mindig a tranzakció blokkokba (vagy többszörös blokkba) való be- vagy kiemelése. A konszenzus algoritmus fő célja a tranzakciók sorrendjének és a tranzakciókat tartalmazó blokkok sorrendjének a megállapítása. Továbbá, a valódi blokkláncok szükséges tulajdonsága a véglegesség — a hálózat képes megállapodni abban, hogy a végleges blokkig vezető lánc végleges, és soha nem lesz kizárva új fork megjelenése miatt. Általában ahhoz, hogy megállapítsuk, hogy egy blokk érvényes és, ami a legfontosabb, végleges, a blokkok többségétől (továbbiakban BP — block-producers) aláírásokat kell gyűjteni, ami legalább azt követeli meg, hogy a blokkok láncát eljuttassák minden BP-hez, és az aláírásokat eloszlassák a BP-k között. A BP-k számának növekedésével a szükséges üzenetek száma exponenciálisan nő, ezért a véglegességet követelő konszenzus algoritmusok, mint például a pBFT konszenzus a Hyperledgerben, nem működnek a szükséges sebességgel, már néhány tucat BP esetén is hatalmas számú kapcsolatot követelnek.
Ha a hálózaton van egy vitathatatlan és tisztességes PVRB, akkor még a legegyszerűbb megközelítés alapján is választani lehet egy block producer-t, és kinevezni őt "vezetőnek" egy protokoll körében. Ha van N block producer-ünk, amelyből M: M > 1/2 N tisztességes, nem cenzúrázzák a tranzakciókat, és nem állítanak elő fork-okat a "double spend" támadások végrehajtása érdekében, akkor egyenletesen elosztott, vitathatatlan PVRB használata lehetővé teszi, hogy tisztességes vezetőt válasszunk M/N (M/N > 1/2) valószínűséggel. M / N (M / N > 1/2). Ha minden vezetőnek saját időintervallumot jelölünk ki, amelyen belül blokkokat hozhat létre és érvényesítheti a láncot, és ezek az intervallumok időben egyenlőek, akkor a tisztességes BP blokklánca hosszabb lesz, mint a rosszindulatú BP által létrehozott lánc, és az algoritmus, amely a lánc hosszára épít, egyszerűen elveti a „rosszat”. Ezt az elvet, amely minden BP számára egyenlő időkvantumokat biztosít, először a Graphene-ben (az EOS elődjében) alkalmazták, és lehetővé teszi, hogy a legtöbb blokk egy aláírással záródjon, ami jelentősen csökkenti a hálózati terhelést, és lehetővé teszi, hogy ez a konszenzus rendkívül gyorsan és megbízhatóan működjön. Ennek ellenére az EOS hálózatának jelenleg speciális blokkokat (Last Irreversible Block) kell használnia, amelyeket a BP 2/3-a aláírásával hitelesít. Ezek a blokkok a véglegesség biztosítására szolgálnak (az utolsó Last Irreversible Block előtt kezdődő láncfork megjelenésének lehetetlensége).
Valamint a valós implementációkban a protokoll sémája bonyolultabb — a javasolt blokkokra vonatkozó szavazások több lépésben történnek annak érdekében, hogy a hálózat zavartalanul működhessen blokkok kihagyása és hálózati problémák esetén, de még figyelembe véve ezt is, a PVRB-t használó konszenzus algoritmusok jelentősen kevesebb üzenetet igényelnek a BP-k között, ami lehetővé teszi, hogy gyorsabbak legyenek, mint a hagyományos PВFT vagy annak különböző módosításai.
Ezeknek az algoritmusoknak a legkiemelkedőbb képviselője: a Cardano csapatától, amely állítása szerint matematikailag bizonyított ellenállósággal bír a BP-k közötti összejátszás esetén.
Az Ouroboros PVRB-t használ a „BP ütemezés” meghatározására — egy ütemezés, amely alapján minden BP-nek kijelölt időintervallum van a blokk közzétételére. A PVRB használatának nagy előnye a BP-k teljes 'egyenlősége' (a mérlegeik nagysága szerint). A PVRB tisztessége garantálja, hogy a rosszindulatú BP-k nem tudják irányítani az időintervallumok ütemezését, és ezért nem tudják manipulálni a láncot előre felkészítve és elemezve a láncforkokat, és a fork kiválasztásához elég csak a lánc hosszára támaszkodni, anélkül hogy rafinált módszereket alkalmaznánk a BP „hasznosságának” és blokkjaik „súlyának” számítására.
Általában minden esetben, amikor egy decentralizált hálózaton véletlenszerű résztvevőt kell választani, szinte mindig a PVRB a legjobb választás, nem pedig a determinisztikus változat, például egy blokklánc hash alapján. PVRB nélkül a résztvevő kiválasztásának manipulálására való lehetőség támadásokhoz vezet, ahol a támadó a jövő több lehetősége közül választva tudja kiválasztani a következő korrupt résztvevőt, vagy akár többet is, hogy biztosítson egy jelentősebb részesedést a döntéshozatalban. A PVRB használata hitelteleníti ezeket a típusú támadásokat.
Skálázás és terheléselosztás
A PVRB komoly előnyöket nyújthat a terheléscsökkentési és a fizetések skálázási feladataiban is. Kezdésnek érdemes megismerkedni a Rivest "Elektromos Lottószelvények mint Mikrofizetések" című munkájával. A lényeg az, hogy ahelyett, hogy 100 db 1 centes kifizetést teljesítenénk a fizetőtől a címzett felé, lehet egy tisztességes lottón részt venni, ahol a nyeremény 1$ = 100 cent, és ahol a fizető minden 1 centes tranzakciónál átad a banknak egy a 100-ból származó „lottószelvényét”. Ezek közül az egyik nyer 1$-t a banknak, és ezt a szelvényt a címzett rögzítheti a blokkláncon. A legfontosabb, hogy a többi 99 szelvényt a címzett és a fizető külső részvétel nélkül, privát csatornán és bármilyen szükséges sebességgel tudja átadni. Egy jó leírás a rendszer alapú protokollról az Emercoin hálózaton elérhető. .
Ennek a sémának több problémája van, például a címzett azonnal abbahagyhatja a fizető kiszolgálását a nyereményjegy átvétele után, de sok speciális alkalmazás, mint a percdíjas számlázás vagy elektronikus szolgáltatások előfizetései esetén ezek figyelmen kívül hagyhatók. A fő követelmény nyilvánvalóan a lottó tisztessége, és ennek lebonyolításához elengedhetetlen a PVRB.
A véletlenszerű résztvevő kiválasztása rendkívül fontos a sharding protokollok számára, amelyek célja a blokklánc horizontális skálázása, lehetővé téve, hogy a különböző BP-k csak a saját tranzakciós terjedelmüket dolgozzák fel. Ez egy rendkívül összetett feladat, különösen a shardok egyesítésével kapcsolatos biztonsági kérdések szempontjából. Az igazságos véletlenszerű BP kiválasztása, akit egy adott shardért felelősnek neveznek ki, hasonlóan a konszenzus algoritmusokhoz — szintén a PVRB feladata. A centralizált rendszerekben a shardokat egy terheléselosztó rendeli ki, aki egyszerűen kiszámítja a kérés hash-ét, és elküldi a szükséges végrehajtónak. A blokkláncokban a kijelölés befolyásolásának lehetősége konszenzusellenes támadáshoz vezethet. Például a tranzakciók tartalmát a támadó ellenőrizheti, és befolyásolhatja, hogy mely tranzakciók kerülnek az általa ellenőrzött shardba, ezzel manipulálva annak blokkláncát. Az Ethereum sharding feladatainak véletlenszámok használatának problémájáról bővebben olvashat.
A sharding az egyik legambiciózusabb és legkomolyabb feladat a blokklánc területén, megoldása lehetővé teszi rendkívüli teljesítményű és kapacitású decentralizált hálózatok kialakítását. A PVRB csupán egy fontos blokk a megoldáshoz.
Játékok, gazdasági protokollok, arbitrázs
A véletlenszámok szerepe a játékiparban nehezen túlbecsülhető. A nyilvánvaló használat az online kaszinókban, és a játékosok különféle cselekedeteinek hatásainak kiszámításakor rejtett módon - mindez rendkívül bonyolult probléma a decentralizált hálózatokban, ahol nem lehet megbízható központi véletlenszerűségre támaszkodni. Azonban a véletlenszerű választás sok gazdasági problémát is megoldhat, és segíthet egyszerűbb és hatékonyabb protokollok kidolgozásában. Tegyük fel, hogy a protokollunkban viták merülnek fel olcsó szolgáltatások kifizetésével kapcsolatban, és ezek a viták elég ritkák. Ebben az esetben, ha létezik vitathatatlan PVRB, az ügyfelek és az eladók megállapodhatnak a viták véletlenszerű megoldásáról, de egy meghatározott valószínűséggel. Például 60%-os valószínűséggel az ügyfél nyer, míg 40%-os valószínűséggel az eladó. Ez a látszólag abszurd megközelítés lehetővé teszi a viták automatikus megoldását pontosan előre meghatározott nyerési/veszteségi arány mellett, amely mindkét felet kielégíti harmadik fél részvétele és időpazarlás nélkül. Sőt, a valószínűségek aránya dinamikus lehet és függhet bizonyos globális változóktól. Például, ha a cég ügyei jól mennek, alacsony vitaszám és magas hozam figyelhető meg, a cég automatikusan elmozdíthatja a vita megoldásának valószínűségét az ügyfélbarát irányba, például 70/30 vagy 80/20 arányban, és fordítva, ha a viták sok pénzt vonnak el és csalás vagy nem megfelelőek, a valószínűséget a másik irányba lehet elmozdítani.
Számos érdekes decentralizált protokoll, mint például a token által vezérelt nyilvántartások, előrejelző piacok, bond curve-ok és még sok más, gazdasági játékokat képviselnek, amelyekben a jó viselkedést jutalmazzák, a rosszat pedig büntetik. Ezekben gyakran találhatóak biztonsági problémák, amelyek védelme gyakran ellentmond egymásnak. Amit megvédtek a "bálnák", azaz a milliárd tokennel rendelkező felhasználók támadásaitól, sebezhető lehet több ezer kis egyenleggel rendelkező fiók, azaz a "sybil stake" támadásokkal szemben. Az ellen intézkedések, mint például a nemlineáris jutalékok, amelyeket azért hoztak létre, hogy a nagy tétek munkáját nem jövedelmezővé tegyék, általában egy másik támadás által lelepleződnek. Mivel gazdasági játékról van szó, a megfelelő statisztikai súlyokat előre lehet számítani, és egyszerűen kiválthatók az arányos eloszlással rendelkező véletlenszerű jutalékokkal. Az ilyen valószínűségi jutalékok rendkívül egyszerűen megvalósíthatók, ha a blokkláncon megbízható véletlenszám-forrás van, és nem igényelnek bonyolult számításokat, megnehezítve ezzel a bálnák és a sybil felhasználók életét.
Ugyanakkor mindig emlékeznünk kell arra, hogy az egyetlen bit kontrollálása ebben a véletlenszerűségben csalásokhoz vezethet, mivel a valószínűségeket duplájára csökkenthetjük vagy megduplázhatjuk, így a tisztességes PVRB a legfontosabb eleme ezeknek a protokolloknak.
Hol található a megfelelő véletlen szám?
Elméletileg a decentralizált hálózatokban a tisztességes véletlenszerű választás lehetővé teszi gyakorlatilag bármely protokoll bizonyítható biztonságát a megállapodástól. Az indoklás meglehetősen egyszerű: ha a hálózat megbeszél egybites 0-át vagy 1-et, és a résztvevők között kevesebb mint a felük tisztességtelen, akkor a megfelelő számú iteráció után a hálózat garantáltan konszenzusra jut ezt a bitet illetően, rögzített valószínűséggel. Csak azért, mert a tisztességes véletlen 51 résztvevőt választ ki a 100-ból 51%-os eséllyel. De ez elméletben van, mivel a valós hálózatok esetében, hogy biztosítsák ezt a szintű biztonságot, mint a cikkekben, számos üzenetre van szükség a hosztok között, bonyolult több lépcsős kriptográfiára, és bármilyen protokollt bonyolító tényező azonnal új támadási vektorokat hoz létre.
Ezért jelenleg nem látunk olyan blokkláncokat, amelyek bizonyítottan megbízható PVRB-vel rendelkeznek, amit már elegendő ideje használtak ahhoz, hogy valódi alkalmazások, többszörös auditok, terhelések és természetesen valódi támadások tesztjein áteshessenek, amelyek nélkül nehéz lenne egy terméket igazán biztonságosnak nevezni.
Mindazonáltal több ígéretes megközelítés is létezik, amelyek sok részletben különböznek, és valamelyikük biztosan megoldja a problémát. A modern számítási erőforrások mellett a kriptográfiai elmélet meglehetősen ügyesen képes gyakorlati alkalmazásokká alakulni. A későbbiekben örömmel beszámolunk a PVRB-implementációkról: jelenleg több is létezik, mindegyik rendelkezik saját fontos tulajdonságaival és jellemzőivel, és mindegyik mögött jó ötlet áll. A véletlenszám-generálásra nem sok csapat specializálódik, és mindegyik tapasztalata rendkívül fontos a többi számára. Reméljük, hogy információnk segíti a többi csapatot a gyorsabb előrehaladásban, figyelembe véve a korábbi tapasztalatokat.
Forrás: habr.com
