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.
Kompiler Kera BNN-arbejdsbelastninger til Selvedge-kørselsmiljøet.
Hash-kædet hændelsesoprindelse for systemhændelser.
Beviscertifikater for ræsonnement, ikke udførelsesudskrifter.
Selvedge udgives i fjerde runde af fundamentets udgivelsesprogram, efter Knot og Ledger. Når det sker, kan du selv sandboxe en WASM-modul og afspille beviskuverten.
Model Context Protocol-værktøjsudførelsesflade.
Ed25519-forseglet, SHA3-256-udskrift, offline-verifikation.
Binære neurale netværk med graf-IR, JIT og fortolker.
Komponentmodel-runtime, WASI 0.2 Preview 2-vært.
Selvedge kører ikke-betroet kode i en sandbox med begrænsede kapaciteter og registrerer udførelsen i en forseglet udskrift. Indeslutning begrænser, hvad koden kan røre; udskriften viser, hvad der faktisk skete, og kan afspilles til gennemgang.
Model Context Protocol-server til agentværktøjer.
Langtidskørende agent-runtime med en kø.
byg, verificér, kør, afspil. CI-venligt.
Linket ind i din applikation som en crate.
Agentværktøjer, tredjepartsplugins, Kera BNN-inferens og reguleret dataarbejde kommer alle ind gennem den samme kontrollerede grænse. Hvert kørselsmiljø producerer den samme forseglede beviskuvert, så ændringer i implementeringen ændrer ikke revisionshistorien.
Ed25519-signering 5-15 us, verifikation 15-30 us.
Compute-modul, mod 1187-1494 us vanilla.
Selvedge Wasmtime starter 62 til 243x hurtigere end vanilla Wasmtime på API-niveau. Den ærlige afvejning er hot path: vanilla holder de 22 ns gentagne kald, og komponentmodellen, der producerer transskriptionen, kører langsommere der. Kera JIT er 2x hurtigere varm til graf-arbejde. Tal er fra repositoryets BENCHMARKS.md.
Hver gate-beslutning er registreret og hashet.
max_execution_time_ns, adskilt fra fuel.
max_memory_bytes, 256 MiB standard, 4 GiB maks.
max_instructions, udtømning stopper arbejdsbelastningen rent.
Ur, tilfældig, filsystem, netværk, miljø, stdio, proces, brugerdefineret. Standard afvis.
Et standard-afvis kapacitetssæt gater hvert host-kald på tværs af otte WASI-domæner. Ressourcelofter på hukommelse, fuel og tid begrænser løbsk adfærd. Hver gate-beslutning og ressourceaflæsning er i transskriptionen.
Du har brug for kryptografisk bevis for, hvad arbejdsbelastningen gjorde, ikke tillid til runtime.
Stol på runtime, ikke arbejdsbelastningen
Tillad filsystem, afvis netværk, men ingen per-kald registrering i revisionssporet.
FP og væg-tid lækker igennem. Afspilning producerer cirka samme output, ikke præcis.
En sandbox stopper flugt. Den beviser ikke, at arbejdsbelastningen opførte sig korrekt indeni.
Konventionelle sandboxes stopper dårlig kode fra at flygte. De producerer ikke en registrering af, hvad koden faktisk gjorde indeni. Når en revisor spørger, er svaret en påstand, ikke bevis.
Selvedge fanger præcis, hvad der blev udført, input til output, hvert host-kald forseglet.
Ledger registrerer, hvad der skete i et system. Selvedge registrerer, hvilken kode der kørte.
AION udsteder certifikater over løser-trin, ikke udførelseskørsler.
Hvordan Selvedge adskiller sig fra AION og Ledger
Samme input plus samme kuvert betyder samme output, altid.
En fast epoke og en seedet ChaCha20 PRNG erstatter værtstid og entropi.
Intern beregning, lagring og akkumulering bruger binære, heltals-, fastpunkts- eller adaptive heltals-/fastpunktsrepræsentationer. Flydende komma accepteres kun ved en erklæret ekstern grænse og konverteres eksplicit, før internt arbejde begynder; der er ingen intern flydende-komma-fallback. Det virtuelle ur forbliver fast, så afspilning producerer de samme bytes.
Verifikator afspiller offline med kun modulbytes og kuvert.
ed25519-signatur over kuvertroden. Ikke prosa.
Hvert værtkald hashes ind i kæden. Redigeringer bryder kæden.
Hvorfor transskriptet er forskelligt fra en log
Samme flow ved hver udførelse. Afspilning er mekanisk.
AION-bevis udstedt, ed25519-signeret, kuvert klar til forsendelse.
Hvert værtkald og resultat hashes ind i en SHA3-256-kæde.
Wasmtime eller Kera udfører inde i sandkassen med standard-nægtelse.
Modul indlæst, capabilities fastlåst, ressourcebegrænsninger anvendt.
Selvedge kører WASM- eller Kera-kode inde i en sandkasse med standard-nægtelse, hasher hvert værtkald ind i en SHA3-256-transskriptkæde og pakker resultatet ind i en signeret AION-beviskuvert. Kuverten afspilles uden den oprindelige sandkasse.
Selvedge er en deterministisk WebAssembly-sandkasse til upålidelig kode. Dets tilladelsesmanifest og forseglede transskript kører på hardware, du kontrollerer, så en modpart kan afspille registreringen på sin egen maskine, og en tvist bliver en opslag frem for en assurances-anmodning.
Hold koden inden for rammerne, bevar registret
Selvedge placerer et program, du ikke selv har valgt, i et rum uden internet, uden adgang til dine filer og uden noget at lære om din maskine. Det efterlader en kvittering, der siger, hvad der kom tilbage, og hvad programmet havde lov til at gøre, så du kan tjekke en senere påstand i stedet for at stole på nogens ord.
Selvedge kører kode, du ikke selv har skrevet, i en WebAssembly-komponentvært uden netværk, filsystem, miljø eller bevægeligt ur. Hver fuldført kørsel returnerer en registrering, som en anden part kan afspille, og en eksekveringsrapport, der angiver, hvad koden havde lov til at gøre. Udgivet under Apache 2.0.
Kør utroværdig kode på hardware, du selv kontrollerer.
Udgivelsen er planlagt i fjortendagesrunder. Repositoryet og dets dokumentation går live sammen.
Den laver ét lille stykke arbejde, her, og ingen andre steder.
Rummet, kvitteringen og listen er hele løftet.
Her kommer det som en liste. Hvert job, der brugte det fejlbehæftede program, navngiver det med kode, dato og en kort tilladelsesliste, så du kan se, hvad der var berørt, og hvor langt det kunne have nået. Hvis de, der lavede det, ikke længere er betroet, træder tilbagetrækningen i kraft med et fast opdateringsinterval i stedet for, når et certifikat udløber. Softwaren er udgivet under Apache 2.0-licensen.
Den sædvanlige version af denne samtale er et skøn. Nogen regner ud, hvilken udgivelse der formentlig kørte, på hvilke dage, for hvilke personer, og svaret kommer som et interval med en forbeholdsklausul. Det efterlader de fakta, der skal til for at afgrænse en korrektion, som en rekonstruktion snarere end en registrering. Korrektionen begynder med en liste, der kan kontrolleres.
Hvert job registrerer en kort kode for det præcise program, der udførte arbejdet. Ikke dets navn, ikke dets versionsnummer, selve programmet, så to bygninger, der deler et navn, stadig har forskellige koder. Hvis det program senere viser sig at være fejlbehæftet, er koden sådan, hvert job, det rørte, bliver fundet.
Når noget viser sig at være forkert, navngiver én kode programmet.
Selve programmet indlæses frisk hver gang fra sin egen kode, og kvitteringen bærer en kode for den kode, så det, der kørte i dag, kan bevises at være det, der kørte sidste måned. Intet akkumuleres imellem, som nogen skal bekymre sig om senere.
Et nyt Selvedge-rum koster så lidt, at ét per job er overkommeligt, så intet skal deles. Hvis noget virkelig skal føres over, overdrages det med vilje, og det fremgår af registreringen som noget, der blev overdraget.
Hvert job får et nyt rum. Intet fra det forrige er i det: ingen efterladte noter, intet halvfærdigt arbejde, ingen hukommelse om, hvem der bad om det. Det lyder indlysende, og det er det normalt ikke, fordi det er billigere at holde et rum stående end at bygge et nyt, så de fleste systemer beholder rummet og genbruger det.
At finde intet er svag evidens, fordi det afhænger af, hvor grundigt nogen ledte, og hvor lang tid de havde før mødet. En liste med to tilladelser er stærk evidens, fordi der ikke var andet at finde.
Det ændrer, hvad der sker, når du stiller et spørgsmål senere. I stedet for at nogen gennemgår, hvad programmet gjorde, og rapporterer tilbage, at de ikke fandt noget bekymrende, er tilladelseslisten lige der, og den er kort.
De fleste registreringer fortæller, hvad et program gjorde. En Selvedge-kvittering fortæller også, hvad det havde lov til at gøre, hvilket er noget andet og mere nyttigt. Et program, der aldrig fik lov til at komme i nærheden af dine filer, kan ikke have været i nærheden af dine filer, og det står i registreringen, uanset om nogen tilfældigvis holdt øje på det tidspunkt.
En kode er ikke en kopi af programmet; den navngiver præcis det, der kørte.
Det lukker også et lille trick. Et program, der kan læse uret, kan opføre sig på én måde før en deadline og på en anden måde efter den, og ingen ville nogensinde se forskellen. Et ur, der aldrig bevæger sig, kan ikke overvåges, så der er intet at opføre sig anderledes om.
Det giver dig en test, du selv kan køre. Hvis noget ser forkert ud, så kør det igen med samme input. Hvis svaret er det samme, opfører programmet sig korrekt, og problemet ligger et andet sted. Hvis det er anderledes, er noget ændret, og sammenligningen viser hvilken del.
De fleste programmer giver lidt forskellige svar hver gang, fordi de kigger på uret, bruger lidt tilfældighed eller bemærker, hvor travl maskinen er. Et program, der kører i Selvedge, kan ikke gøre noget af det. Uret indeni er fastlåst og bevæger sig aldrig, og alt tilfældigt starter fra samme tal ved hver kørsel. Spørg to gange, få samme svar.