Deterministic WebAssembly Sandbox | Dweve Selvedge

Selvedge runs untrusted code in a deterministic WebAssembly sandbox and returns a replayable run record. Publishing in the fourth release round.

Kompajlirajte Kera BNN radna opterećenja za Selvedge runtime.

Hash-lančana provenijencija događaja za sistemske događaje.

Certifikati dokaza zaključivanja, ne transkripti izvršenja.

Selvedge izlazi u četvrtom krugu programa temeljnog izdanja, nakon Knota i Ledgera. Nakon toga, testirajte WASM modul u pješčaniku i sami reproducirajte omotnicu dokaza.

Površina izvršavanja alata Model Context Protocola.

Ed25519 zapečaćeno, SHA3-256 transkript, izvanmrežna provjera.

Graf IR binarne neuronske mreže, JIT i interpreter.

Runtime modela komponenti, WASI 0.2 Preview 2 host.

Selvedge pokreće nepouzdani kod unutar pješčanika s ograničenim mogućnostima i bilježi izvršenje u zapečaćeni transkript. Ograničenje određuje čemu kod može pristupiti; transkript pokazuje što se stvarno dogodilo i može se reproducirati radi pregleda.

Model Context Protocol poslužitelj za alate agenata.

Dugotrajni agent runtime s redom čekanja.

izgradi, provjeri, pokreni, reproduciraj. Pogodno za CI.

Alati agenata, dodaci trećih strana, Kera BNN inferencija i regulirani podaci ulaze kroz istu kontroliranu granicu. Svaki runtime proizvodi istu zapečaćenu omotnicu dokaza, tako da promjene implementacije ne mijenjaju priču o reviziji.

zadovoljava regulirana radna opterećenja

Ed25519 potpis 5-15 us, provjera 15-30 us.

Pokretanje procesa uključeno, 8-9x brže.

Računalni modul, u usporedbi s 1187-1494 us vanilla.

Selvedge Wasmtime pokreće se 62 do 243x brže od vanilla Wasmtime na razini API-ja. Iskrena razmjena je vruća putanja: vanilla drži ponovljeni poziv od 22 ns, a model komponente koji proizvodi transkript tamo radi sporije. Kera JIT je 2x brži toplo za rad s grafom. Brojke su iz BENCHMARKS.md u repozitoriju.

Odaberite runtime prema radnom opterećenju

Svaka odluka o pristupu zabilježena je i hashirana.

max_execution_time_ns, odvojeno od goriva.

max_memory_bytes, zadano 256 MiB, gornja granica 4 GiB.

max_instructions, iscrpljenje čisto zaustavlja radno opterećenje.

Sat, slučajnost, datotečni sustav, mreža, okruženje, stdio, proces, prilagođeno. Zadano odbijanje.

Skup mogućnosti sa zadanim odbijanjem ograničava svaki poziv domaćina u osam WASI domena. Ograničenja resursa na memoriju, gorivo i vrijeme ograničavaju nekontrolirano ponašanje. Svaka odluka o pristupu i čitanje resursa u transkriptu je.

Trebate kriptografski dokaz onoga što je radno opterećenje učinilo, ne povjerenje u runtime.

Vjerujte runtimeu, ne radnom opterećenju

Dopusti datotečni sustav, odbij mrežu, ali bez zapisa po pozivu u zapisniku revizije.

FP i zidni sat propuštaju. Ponavljanje proizvodi približno isti izlaz, ne točno isti.

Pješčanik zaustavlja bijeg. Ne dokazuje da se radno opterećenje ponašalo ispravno unutra.

Konvencionalni pješčanici sprječavaju loš kod u bijegu. Ne proizvode zapis onoga što je kod zapravo učinio unutra. Kad revizor pita, odgovor je tvrdnja, ne dokaz.

Selvedge bilježi točno ono što se izvršilo, od ulaza do izlaza, svaki poziv domaćina zapečaćen.

Glavna knjiga bilježi što se dogodilo u sustavu. Selvedge bilježi koji se kod pokrenuo.

Ledger je provjereno podrijetlo događaja

AION izdaje potvrde za korake rješavača, ne za izvršavanje.

Kako se Selvedge razlikuje od AION-a i Ledgera

Isti ulazi plus ista omotnica znače isti izlaz, uvijek.

Fiksna epoha i sjemenom pokrenuti ChaCha20 PRNG zamjenjuju vrijeme i entropiju domaćina.

Interno računanje, pohrana i akumulacija koriste binarne, cjelobrojne, fiksno-točkaste ili prilagodljive cjelobrojne/fiksno-točkaste reprezentacije. Plutajuća točka prihvaća se samo na deklariranoj vanjskoj granici i eksplicitno se pretvara prije početka internog rada; ne postoji interna plutajuća-točkasta rezerva. Virtualni sat ostaje fiksan, pa reprodukcija proizvodi iste bajtove.

Bez internih plutajućih točaka, bez satova

Provjeritelj reproducira izvan mreže samo s modulskim bajtovima i omotnicom.

ed25519 potpis nad korijenom omotnice. Ne proza.

Svaki poziv domaćina uhashiran u lanac. Izmjene prekidaju lanac.

Zašto se transkript razlikuje od dnevnika

Isti tijek pri svakom izvršavanju. Reprodukcija je mehanička.

AION dokaz izdan, ed25519 potpisan, omotnica spremna za slanje.

Svaki poziv domaćina i rezultat uhashirani u SHA3-256 lanac.

Wasmtime ili Kera izvršava se unutar pješčanika koji zadano odbija.

Modul učitan, kapaciteti prikvačeni, ograničenja resursa primijenjena.

Selvedge pokreće WASM ili Kera kod unutar pješčanika koji zadano odbija, hashira svaki poziv domaćina u SHA3-256 transkriptni lanac i omotava rezultat u potpisanu AION dokaznu omotnicu. Omotnica se reproducira bez originalnog pješčanika.

Selvedge je deterministički WebAssembly pješčanik za nepouzdani kod. Njegov manifest dopuštenja i zapečaćeni transkript rade na hardveru koji kontrolirate, tako da druga strana može reproducirati zapis na vlastitom stroju i spor postaje pretraga, a ne zahtjev za jamstvom.

Selvedge stavlja program koji niste odabrali u prostoriju bez interneta, bez puta do vaših datoteka i bez mogućnosti da išta nauči o vašem računalu. Ostavlja potvrdu koja kaže što se vratilo i što je programu bilo dopušteno učiniti, tako da kasniju tvrdnju možete provjeriti umjesto da nekome vjerujete na riječ.

Selvedge pokreće kod koji niste napisali u WebAssembly komponentnom domaćinu bez mreže, datotečnog sustava, okruženja ili pokretnog sata. Svaki dovršeni pokret vraća zapis koji druga strana može ponoviti i izvješće o izvršenju koje navodi što je kodu bilo dopušteno učiniti. Objavljeno pod Apache 2.0.

Pokrenite nepouzdan kod na hardveru koji kontrolirate.

Objavljivanje je planirano u dvotjednim krugovima. Repozitorij i njegova dokumentacija objavljuju se zajedno.

Ona obavlja jedan mali posao, ovdje, i nigdje drugdje.

Zapečaćeno, tako da se ništa ne može promijeniti

Izvršavanje uspješno dovršeno za 18.4 ms

Prostorija, potvrda i popis cijelo su obećanje.

Ovdje stiže kao popis. Svaki posao koji je koristio neispravan program imenuje ga kôdom, datumom i kratkim popisom dopuštenja, tako da možete vidjeti što je bilo pogođeno i koliko je daleko moglo otići. Ako se ljudima koji su ga izradili više ne vjeruje, povlačenje stupa na snagu u zadanom intervalu osvježavanja, a ne kad god istekne certifikat. Softver je objavljen pod licencom Apache 2.0.

Uobičajena verzija ovog razgovora je procjena. Netko izračuna koja je verzija vjerojatno bila pokrenuta, kojih dana, za koje ljude, i odgovor stiže kao raspon s ogradom. To ostavlja činjenice potrebne za opseg ispravka kao rekonstrukciju, a ne kao zapis. Ispravak počinje popisom koji se može provjeriti.

Svaki posao bilježi kratki kôd za točan program koji je obavio posao. Ne njegovo ime, ne njegov broj verzije, sam program, tako da dvije izrade koje dijele ime i dalje imaju različite kôdove. Ako se kasnije ispostavi da je taj program neispravan, kôd je način na koji se pronalazi svaki posao koji je dotaknuo.

Kad se nešto pokaže pogrešnim, jedan kôd imenuje program.

Sam program se svaki put učitava svjež iz vlastitog kôda, a potvrda nosi kôd za taj kôd, tako da je stvar koja je danas pokrenuta dokazivo ista ona koja je pokrenuta prošlog mjeseca. Ništa se ne nakuplja između što bi itko kasnije morao brinuti.

Nova Selvedge prostorija košta tako malo da je jedna po poslu pristupačna, pa se ništa ne mora dijeliti. Ako nešto stvarno treba prenijeti, predaje se namjerno i pojavljuje se u zapisu kao nešto što je predano.

Svaki posao dobiva novu prostoriju. Ništa iz prethodne nije u njoj: nema ostavljenih bilješki, nema nedovršenog rada, nema sjećanja na to tko je tražio. To zvuči očito, a obično nije istina, jer je držanje prostorije jeftinije od izgradnje nove, pa većina sustava zadržava prostoriju i ponovno je koristi.

Nova prostorija spremna je za sljedeći posao.

Pronalaženje ničega slab je dokaz, jer ovisi o tome koliko je netko tražio i koliko je vremena imao prije sastanka. Popis od dvije dozvole snažan je dokaz, jer nije bilo ničega drugog za pronaći.

To mijenja ono što se događa kad kasnije postavite pitanje. Umjesto da netko prolazi kroz ono što je program učinio i javlja da nije našao ništa zabrinjavajuće, popis dopuštenja je tu, i kratak je.

Većina zapisa govori što je program učinio. Selvedge račun također kaže što mu je bilo dopušteno učiniti, što je druga i korisnija stvar. Program koji nikada nije smio biti blizu vaših datoteka nije mogao biti blizu vaših datoteka, i to je u zapisu bez obzira je li netko u tom trenutku slučajno gledao ili ne.

Kôd nije kopija programa; on imenuje točno ono što se pokrenulo.

To također zatvara mali trik. Program koji može čitati sat može se ponašati na jedan način prije roka, a na drugi nakon njega, i nitko nikada ne bi vidio razliku. Sat koji se nikada ne pomiče ne može se promatrati, pa nema ničega oko čega bi se ponašao drugačije.

To vam daje test koji možete sami pokrenuti. Ako nešto izgleda krivo, pokrenite ga ponovno s istim ulazom. Ako je odgovor isti, program se ponaša ispravno i problem je negdje drugdje. Ako je drugačiji, nešto se promijenilo, a usporedba kaže koji dio.

Većina programa svaki put daje malo drugačije odgovore jer gledaju na sat, koriste malo slučajnosti ili primjećuju koliko je stroj zauzet. Program koji radi u Selvedgeu ne može ništa od toga. Sat unutra je fiksiran i nikada se ne pomiče, a sve slučajno kreće od istog broja pri svakom pokretanju. Pitajte dvaput, dobijte isti odgovor.