Véletlenszerű orákulum digitális aláírás alapján a blokkláncban

Ötlettől a megvalósításig: a meglévő elliptikus görbe digitális aláírási sémát determinisztikusra módosítjuk, és ez alapján a blokkláncon belül ellenőrizhető pszeudo-véletlen számok beszerzésére biztosítunk függvényeket.

Véletlenszerű orákulum digitális aláírás alapján a blokkláncban

Ötlet

2018 őszén a Waves blokklánc is benne volt Az első intelligens szerződések aktiválva, rögtön felmerült a kérdés megszerzésének lehetőségével kapcsolatban álvéletlen számokhogy megbízhatsz.

Ezen a kérdésen elgondolkodva végül arra a következtetésre jutottam: minden blokklánc sejt, zárt rendszerben lehetetlen megbízható entrópiaforrást szerezni.

De egy ötlet mégis tetszett: ha véletlenszerű orákulum determinisztikus algoritmussal írja alá a felhasználói adatokat, akkor a felhasználó mindig ellenőrizni tudja az aláírást a nyilvános kulccsal, és biztos lehet benne, hogy a kapott érték egyedi. Az orákulum, bármennyire is akarja, nem tud semmit megváltoztatni, az algoritmus egyértelmű eredményt ad. Lényegében a felhasználó rögzíti az eredményt, de nem tudja, amíg az orákulum közzé nem teszi. Kiderült, hogy egyáltalán nem bízhat az orákulumban, de ellenőrizze munkájának eredményét. Ezután sikeres ellenőrzés esetén egy ilyen aláírás entrópiaforrásnak tekinthető egy pszeudovéletlen szám esetében.

A Waves blokklánc platform aláírási sémát használ EdDSA opció Ed25519. Ebben a sémában az aláírás az R és az S értékekből áll, ahol R egy véletlen értéktől függ, S pedig az aláírandó üzenet, a privát kulcs és az R-vel azonos véletlenszám alapján kerül kiszámításra. nincs egyedi függősége ugyanazon Sok érvényes aláírás létezik egy felhasználói üzenethez.

Nyilvánvaló, hogy tiszta formájában egy ilyen aláírás nem használható pszeudo-véletlen számok forrásaként, mivel nem determinisztikus, ezért az orákulum könnyen manipulálható.

De, mint kiderült, valójában lehetséges determinisztikussá tenni.

Nagy reményeket fűztem hozzá ellenőrizhető véletlen függvény (VRF), de a hardver tanulmányozása után el kellett hagynom ezt a lehetőséget. Bár a VRF az aláírás determinisztikus változatát és annak bizonyítását kínálja, van egy furcsa hely az algoritmusban, amely fekete lyukat nyit az orákulum manipulálására. Mégpedig k értékének kiszámításakor (5.1. szakasz) egy privát kulcsot használnak, amely ismeretlen marad a felhasználó számára, ami azt jelenti, hogy a felhasználó nem tudja ellenőrizni a k ​​számításának helyességét, ami azt jelenti, hogy az orákulum bármilyen k értékét használhatja, és ezzel egyidejűleg egy megfelelési adatbázist is karbantarthat. k értékét és az aláírt adatot, hogy mindig újra lehessen számítani a helyes eredményt a VRF szempontjából. Ha VRF-alapú rajzot lát a privát kulcs felfedése nélkül, lehet okos: jelezze a kulcs felfedésének szükségességét, vagy zárja ki a k ​​számításából, akkor a privát kulcs automatikusan felfedi magát az első aláírás megjelenésekor . Általában, amint már említettük, furcsa séma egy véletlen orákulum számára.

Kis gondolkodás és a helyi elemzők támogatásának igénybevétele után megszületett a VECRO munkaprogram.

A VECRO a Verifiable Elliptic Curve Random Oracle (Verifiable Elliptic Curve Random Oracle) rövidítése, ami oroszul azt jelenti, hogy ellenőrizhető véletlenszerű orákulum elliptikus görbéken.

Minden nagyon egyszerűnek bizonyult: a determinizmus eléréséhez rögzíteni kell az R értékét, mielőtt az aláírandó üzenet megjelenik. Ha R véglegesített, és az aláírandó üzenet része, ami tovább biztosítja, hogy R véglegesítésre kerüljön az aláírt üzenetben, akkor S értékét a felhasználó üzenete egyedileg határozza meg, és ezért álvéletlen számok forrásaként használható.

Egy ilyen sémában nem mindegy, hogy R-t hogyan rögzítjük, ez továbbra is az orákulum felelőssége. Fontos, hogy az S-t a felhasználó egyedileg határozza meg, de értéke ismeretlen, amíg az orákulum ki nem adja. Mindent, amit akartunk!

Ha a fix R-ről beszélünk, vegyük észre újrafelhasznált R különböző üzenetek aláírásakor egyedileg felfedi a privát kulcsot az EdDSA sémában. Rendkívül fontossá válik az orákulum tulajdonosa számára, hogy kiküszöbölje annak lehetőségét, hogy az R-t újra felhasználja különböző felhasználói üzenetek aláírására. Vagyis bármilyen manipuláció vagy összejátszás esetén az orákulum mindig azt kockáztatja, hogy elveszíti privát kulcsát.

Összességében az orákulumnak két funkciót kell biztosítania a felhasználóknak: az inicializálással, amely rögzíti az R értéket, és az aláírással, amely az S értéket adja vissza. Ebben az esetben az R, S pár a fixet tartalmazó felhasználói üzenet szokásos ellenőrizhető aláírása. R érték és tetszőleges felhasználói adatok.

Vitatható, hogy ez a blokklánc-séma nem más, mint a szokásos commit-expand séma. Lényegében igen, ő az. De van néhány árnyalat. Először is, az orákulum mindig ugyanazzal a kulccsal működik minden műveletben, például ezt kényelmesen lehet használni a szerződésekben. Másodszor, fennáll annak a veszélye, hogy az orákulum elveszti a privát kulcsot, ha helytelenül viselkedik, például az orákulum lehetővé teszi, hogy mintákat készítsen az eredményből, akkor elegendő csak két tesztet végezni a privát kulcs kiderítéséhez és a teljes megszerzéséhez. hozzáférést a pénztárcához. Harmadszor, gyönyörű egy aláírás, amely natívan ellenőrizhető a blokkláncon, és a véletlenszerűség forrása.

Hat hónapig motoszkált a fejemben a megvalósítás ötlete, míg végül a motiváció megjelent a formában támogatást a Waves Labstól. Egy nagy támogatás nagy felelősséggel jár, így a projekt ott lesz!

Реализация

Tehát ebben a projektben VECRO valósult meg a Waves blokkláncon kérés-válasz módban a felhasználó és az orákulum közötti átviteli tranzakciók segítségével. Ezzel egyidejűleg az oracle fiókra telepítve van egy szkript, amely szigorúan a fent leírt logika szerint vezérli a munkát. Az Oracle tranzakciók ellenőrzése megtörténik, és a teljes felhasználói interakciós lánc helyreáll. Mind a négy tranzakció részt vesz a végső érték ellenőrzésében, az intelligens szerződés ezeket egy szigorú ellenőrző szállal köti össze, lépésről lépésre ellenőrzi az összes értéket, és nem hagy teret semmilyen manipulációnak.

Még egyszer, hogy félretegyem és világosabbá tegyem. Az orákulum nem csak a javasolt séma szerint működik. Működését blokklánc szinten teljesen ellenőrzik a kialakult szorosan egy okos szerződéssel. Lépjen balra, és a tranzakció egyszerűen nem megy. Tehát, ha egy tranzakció szerepel a blokkláncban, a felhasználónak nem is kell semmit ellenőriznie, több száz hálózati csomópont már mindent ellenőrzött helyette.

Jelenleg egy VECRO fut a Waves főhálózatán (futtathatja a sajátját, nem nehéz, csak nézze meg a konfigurációs példát). Az aktuális kód PHP-ben fut (on WavesKit, melyről mondtam korábban).

Az oracle szolgáltatás használatához a következőket kell tennie:

  • R javítás;
    • Legalább 0.005 Waves küldése az oracle álnévre init@vecr;
    • Fogadja meg az R-kódot a csatolási mezőben az 1 R-vecr token átvitelekor az orákulumtól a felhasználóhoz;
  • Szerezzen aláírást;
    • Legalább 0.005 Waves küldése a random@vecr oracle aliasnak, valamint a csatolt mezőben KÖTELEZŐ megadni a korábban kapott R-kódot és a további felhasználói adatokat;
    • Fogadja meg az S-kódot a csatolási mezőben az 1 S-vecr token átvitelekor az orákulumtól a felhasználóhoz;
  • Használja az S-kódot pszeudo-véletlen számok forrásaként.

A jelenlegi megvalósítás árnyalatai:

  • Az orákulumnak küldött hullámok jutalékként szolgálnak a felhasználónak történő visszaküldési tranzakcióhoz, legfeljebb 1 hullámig;
  • Az R-kód az 'R' karakter bájtjának és egy 32 bájtos base58 kódolású R értéknek az összefűzése;
  • A mellékletben szereplő R-kód legyen az első, a felhasználói adatok az R-kód után következnek;
  • Az S-kód az 'S' karakter bájtjának és egy 32 bájtos base58 kódolású S értéknek az összefűzése;
  • S a modulo osztás eredménye, így S nem használható teljes 256 bites álvéletlen számként (ez a szám maximum 252 bites pszeudovéletlen számnak tekinthető);
  • A legegyszerűbb lehetőség az S-kód hash pszeudo-véletlen számként való használata.

Példa az S-kód fogadására:

Technikai szempontból az orákulum teljesen készen áll a munkára, nyugodtan használható. Az átlagfelhasználói használat szempontjából hiányzik a kényelmes grafikus felület, erre még várni kell.

Szívesen válaszolok a kérdésekre és elfogadom a megjegyzéseket, köszönöm.

Forrás: will.com

Hozzászólás