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.

Prevedi Kera BNN delovne obremenitve za Selvedge izvajalno okolje.

Zgoščeno verižno izvor dogodkov za sistemske dogodke.

Potrdila o dokazu sklepanja, ne prepisi izvedbe.

Selvedge izide v četrtem krogu programa izdaj temeljev, za Knot in Ledger. Ko se to zgodi, preizkusi modul WASM v peskovniku in sam predvajaj dokazno ovojnico.

Površina za izvajanje orodij Model Context Protocol.

Ed25519 zapečateno, SHA3-256 prepis, preverjanje brez povezave.

Graf IR binarne nevronske mreže, JIT in interpreter.

Izvajalno okolje komponentnega modela, gostitelj WASI 0.2 Preview 2.

Selvedge izvaja nezaupanja vredno kodo v peskovniku z omejenimi zmogljivostmi in beleži izvedbo v zapečatenem prepisu. Omejitev določa, česa se koda lahko dotakne; prepis prikazuje, kaj se je dejansko zgodilo, in ga je mogoče predvajati za pregled.

Strežnik Model Context Protocol za agentska orodja.

Dolgotrajno agentsko izvajalno okolje s čakalno vrsto.

zgradi, preveri, zaženi, predvajaj. Primerno za CI.

Agentska orodja, vtičniki tretjih oseb, Kera BNN sklepanje in delo z reguliranimi podatki vstopajo skozi isto nadzorovano mejo. Vsako izvajalno okolje ustvari isto zapečateno dokazno ovojnico, zato spremembe uvajanja ne spremenijo zgodbe o reviziji.

ustreza reguliranim delovnim obremenitvam

Ed25519 podpis 5-15 us, preverjanje 15-30 us.

Računski modul, v primerjavi z 1187-1494 us običajno.

Selvedge Wasmtime se na ravni API-ja zažene 62 do 243x hitreje kot običajni Wasmtime. Poštena menjava je vroča pot: običajni ohrani 22 ns ponovljeni klic, komponentni model, ki ustvari prepis, pa tam deluje počasneje. Kera JIT je pri grafičnem delu topel 2x hitrejši. Številke so iz BENCHMARKS.md v repozitoriju.

Izberite izvajalno okolje glede na obremenitev

Vsaka odločitev o prehodu je zabeležena in zgoščena.

max_execution_time_ns, ločeno od goriva.

max_memory_bytes, privzeto 256 MiB, zgornja meja 4 GiB.

max_instructions, izčrpanje delo čisto ustavi.

Ura, naključje, datotečni sistem, omrežje, okolje, stdio, proces, po meri. Privzeto zavrnjeno.

Nabor zmožnosti s privzeto zavrnitvijo nadzira vsak klic gostitelja na osmih področjih WASI. Omejitve virov za pomnilnik, gorivo in čas omejujejo ubežno vedenje. Vsaka odločitev o prehodu in branje virov sta v prepisu.

Potrebujete kriptografski dokaz o tem, kaj je delo naredilo, ne zaupanja v izvajalno okolje.

Dovoli datotečni sistem, zavrni omrežje, vendar brez zapisa na klic v revizijski sledi.

FP in stenski čas puščata. Ponovitev daje približno enak rezultat, ne natančno enakega.

Peskovnik ustavi pobeg. Ne dokaže, da se je delo znotraj obnašalo pravilno.

Običajni peskovniki ustavijo slabo kodo, da ne pobegne. Ne ustvarijo zapisa o tem, kaj je koda dejansko naredila znotraj. Ko revizor vpraša, je odgovor trditev, ne dokaz.

Selvedge zajame točno to, kar se je izvedlo, od vhoda do izhoda, vsak klic gostitelja je zapečaten.

Knjiga beleži, kaj se je zgodilo v sistemu. Selvedge beleži, katera koda je tekla.

AION izdaja potrdila o korakih reševalca, ne o izvajanjih.

Kako se Selvedge razlikuje od AION in Ledger

Enaki vhodi plus enaka ovojnica pomenijo enak izhod, vedno.

Fiksna epoha in zasnovani ChaCha20 PRNG nadomestita čas gostitelja in entropijo.

Notranje računanje, shranjevanje in kopičenje uporabljajo binarne, cele, fiksne ali prilagodljive cele/fiksne predstavitve. Plavajoča vejica je sprejeta le na deklarirani zunanji meji in se izrecno pretvori, preden se začne notranje delo; ni notranjega padca na plavajočo vejico. Navidezna ura ostane fiksna, zato ponovitev ustvari enake bajte.

Brez notranjih plavajočih vejic, brez ur

Preverjevalnik ponovi brez povezave samo z bajti modula in ovojnico.

Podpis ed25519 nad korenom ovojnice. Ne proza.

Vsak klic gostitelja je zgoščen v verigo. Urejanja prekinejo verigo.

Enak potek pri vsakem izvajanju. Ponovitev je mehanska.

Dokaz AION izdan, podpisan z ed25519, ovojnica pripravljena za pošiljanje.

Vsak klic gostitelja in rezultat sta zgoščena v verigo SHA3-256.

Wasmtime ali Kera se izvaja v peskovniku s privzeto prepovedjo.

Modul naložen, zmogljivosti določene, omejitve virov uporabljene.

Selvedge izvaja kodo WASM ali Kera v peskovniku s privzeto prepovedjo, zgoščuje vsak klic gostitelja v verigo prepisa SHA3-256 in rezultat zavije v podpisano ovojnico dokaza AION. Ovojnica se ponovi brez prvotnega peskovnika.

Selvedge je deterministični peskovnik WebAssembly za nezaupljivo kodo. Njegov manifest dovoljenj in zapečaten prepis se izvajata na strojni opremi, ki jo nadzorujete, zato lahko nasprotna stranka ponovi zapis na svojem računalniku in spor postane iskanje namesto zahteve za zagotovilo.

Selvedge postavi program, ki ga niste izbrali, v prostor brez interneta, brez poti do vaših datotek in brez možnosti, da bi se kaj naučil o vašem računalniku. Pusti potrdilo o tem, kaj se je vrnilo in kaj je program smel narediti, da lahko pozneje preverite trditev, namesto da bi nekomu verjeli na besedo.

Selvedge poganja kodo, ki je niste napisali, v gostitelju komponent WebAssembly brez omrežja, datotečnega sistema, okolja ali premikajoče se ure. Vsak zaključen zagon vrne zapis, ki ga lahko druga stran ponovno izvede, ter poročilo o izvedbi, ki navaja, kaj je koda smela narediti. Objavljeno pod licenco Apache 2.0.

Poganjaj nezaupljivo kodo na strojni opremi, ki jo nadzoruješ.

Objava je načrtovana v štirinajstdnevnih krogih. Skladišče in njegova dokumentacija bosta objavljena skupaj.

Deluje na računalnikih, ki jih imate v lasti

Opravlja eno majhno nalogo, tukaj in nikjer drugje.

Zapečateno, da se nič ne more spremeniti

Izvajanje je bilo uspešno zaključeno v 18,4 ms

Prostor, potrdilo in seznam so celotna obljuba.

Tukaj prispe kot seznam. Vsako opravilo, ki je uporabljalo okvarjen program, ga poimenuje s kodo, datumom in kratkim seznamom dovoljenj, tako da lahko vidite, kaj je bilo prizadeto in kako daleč bi lahko seglo. Če ljudem, ki so ga ustvarili, ni več mogoče zaupati, se umik začne v določenem intervalu osveževanja in ne takrat, ko poteče certifikat. Programska oprema je objavljena pod licenco Apache 2.0.

Običajna različica tega pogovora je ocena. Nekdo ugotovi, katera izdaja je verjetno tekla, katere dni, za katere ljudi, in odgovor pride kot razpon s pridržkom. To pusti dejstva, potrebna za opredelitev popravka, kot rekonstrukcijo in ne kot zapis. Popravek se začne s seznamom, ki ga je mogoče preveriti.

Vsako opravilo zabeleži kratko kodo za točno določen program, ki je opravil delo. Ne njegovo ime, ne njegovo številko različice, ampak sam program, tako da imata dve gradnji, ki si delita ime, še vedno različni kodi. Če se pozneje izkaže, da je program okvarjen, je koda tista, po kateri se najde vsako opravilo, ki se ga je dotaknila.

in vsako opravilo, ki se ga je dotaknila

Ko se izkaže, da je nekaj narobe, ena koda poimenuje program.

Sam program se vsakič naloži na novo iz svoje kode, potrdilo pa nosi kodo za to kodo, tako da je mogoče dokazati, da je tisto, kar je teklo danes, tisto, kar je teklo prejšnji mesec. Nič se med tem ne nabere, kar bi bilo treba pozneje skrbeti.

Nov prostor Selvedge stane tako malo, da si ga lahko privošči eno na opravilo, zato ni treba ničesar deliti. Če je treba nekaj resnično prenesti, se to preda namerno in se v zapisu pojavi kot nekaj, kar je bilo predano.

Vsako opravilo dobi nov prostor. Ničesar iz prejšnjega ni v njem: nobenih ostalih zapiskov, nobenega nedokončanega dela, nobenega spomina na to, kdo je vprašal. To se sliši očitno in običajno ni res, ker je ohranjanje prostora cenejše od gradnje novega, zato večina sistemov obdrži prostor in ga ponovno uporabi.

Nov prostor je pripravljen za naslednje opravilo.

Ne najti ničesar je šibek dokaz, ker je odvisno od tega, kako natančno je kdo iskal in koliko časa je imel pred sestankom. Seznam dveh dovoljenj je močan dokaz, ker tam ni bilo ničesar drugega za najti.

To spremeni, kaj se zgodi, ko pozneje postavite vprašanje. Namesto da bi nekdo pregledal, kaj je program naredil, in poročal, da ni našel ničesar zaskrbljujočega, je seznam dovoljenj takoj tam in je kratek.

Večina zapisov pove, kaj je program naredil. Selvedge potrdilo pove tudi, kaj mu je bilo dovoljeno narediti, kar je drugačna in bolj uporabna stvar. Program, ki mu nikoli ni bilo dovoljeno blizu vaših datotek, ne more biti bil blizu vaših datotek, in to je v zapisu, ne glede na to, ali je kdo takrat slučajno gledal ali ne.

Koda ni kopija programa; poimenuje točno tisto, kar se je izvajalo.

Zapre tudi majhen trik. Program, ki lahko bere uro, se lahko obnaša enako pred rokom in drugače po njem, in nihče ne bi nikoli videl razlike. Ura, ki se nikoli ne premika, ne more biti opazovana, zato ni ničesar, kar bi se obnašalo drugače.

V roke ti da test, ki ga lahko izvedeš sam. Če se kaj zdi narobe, ga zaženi znova z istim vhodom. Če je odgovor enak, se program obnaša pravilno in težava je drugje. Če je drugačen, se je nekaj spremenilo, primerjava pa pove, kateri del.

Večina programov vsakič da nekoliko drugačne odgovore, ker gledajo na uro, uporabijo delček naključja ali opazijo, kako zaseden je računalnik. Program, ki teče v Selvedge, ne more početi nič od tega. Ura v njem je fiksna in se nikoli ne premika, vse naključno pa se začne z iste številke ob vsakem zagonu. Vprašaj dvakrat, dobiš enak odgovor.