Dweve

Deterministische WebAssembly-sandbox | Dweve Selvedge

Selvedge voert niet-vertrouwde code uit in een deterministische WebAssembly-sandbox en levert een replaybaar runrecord. Verschijnt in de derde releaseronde.

Kies de doelgroep die bij je vraag past

De pagina bevat drie selecteerbare lezingen van hetzelfde onderwerp.

Voor consumenten

Selvedge zet een programma dat je niet zelf koos in een ruimte zonder internet, zonder route naar je bestanden en zonder iets te leren over je machine. Het laat een ontvangstbewijs achter met wat terugkwam en wat het programma mocht doen, zodat je een latere bewering kunt controleren.

Voor bedrijven

Selvedge is een deterministische WebAssembly-sandbox voor niet-vertrouwde code. Het manifest met toegangsrechten en het verzegelde transcript draaien op hardware die jij beheert, zodat een tegenpartij het verslag zelf kan afspelen en een geschil een opzoekvraag wordt.

Voor engineers

Selvedge draait code die je niet zelf schreef in een WebAssembly-componenthost zonder netwerk, bestandssysteem, omgeving of bewegende klok. Elke afgeronde run levert een record op dat een andere partij kan herhalen, plus een uitvoeringsrapport met wat de code mocht doen. Gepubliceerd onder Apache 2.0.

Compileer Kera BNN-workloads voor de Selvedge-runtime.

Via een hashketen vastgelegde herkomst van systeemgebeurtenissen.

Certificaten voor redeneringsbewijzen, geen uitvoeringstranscripten.

Selvedge verschijnt in de derde ronde van het publicatieprogramma, na Knot en Ledger. Zodra dat gebeurt, kun je zelf een WASM-module in een sandbox uitvoeren en de bewijsenvelop afspelen.

Uitvoeringsoppervlak voor tools via het Model Context Protocol.

Verzegeld met Ed25519, SHA3-256-transcript, offline verifieerbaar.

Binaire neurale netwerken in Graph IR, JIT en interpreter.

Runtime voor het componentmodel, host voor WASI 0.2 Preview 2.

Selvedge voert niet-vertrouwde code uit in een sandbox met beperkte capabilities en legt de uitvoering vast in een verzegeld transcript. De afscherming beperkt wat de code kan aanraken; het transcript laat zien wat er werkelijk gebeurde en kan ter beoordeling opnieuw worden afgespeeld.

Model Context Protocol-server voor agenttools.

Langlopende agentruntime met een wachtrij.

build, verify, run, replay. CI-vriendelijk.

Agenttools, plug-ins van derden, Kera BNN-inferentie en werk met gereguleerde data gaan allemaal via dezelfde gecontroleerde grens. Elke runtime levert dezelfde verzegelde bewijsenvelop, zodat een andere deployment het auditverhaal niet verandert.

Ed25519 ondertekenen: 5-15 μs; verifiëren: 15-30 μs.

Inclusief process-startup, 8-9x sneller.

Computemodule, tegenover 1187-1494 μs bij vanilla.

Selvedge Wasmtime start op API-niveau 62 tot 243 keer sneller dan vanilla Wasmtime. De eerlijke afweging zit in de hot path: vanilla houdt de herhaalde call van 22 ns, terwijl het componentmodel dat het transcript produceert daar langzamer draait. Kera JIT is bij warm draaien 2 keer sneller voor graph-werk. De cijfers komen uit de repository-BENCHMARKS.md.

Elke gate-beslissing vastgelegd en gehasht.

max_memory_bytes, 256 MiB standaard, 4 GiB plafond.

max_instructions; bij uitputting stopt de workload netjes.

Klok, willekeurig, bestandssysteem, netwerk, omgeving, stdio, proces, aangepast. Standaard weigeren.

Een default-deny capability set bewaakt elke host call over acht WASI-domeinen. Resource caps voor geheugen, fuel en tijd begrenzen op hol geslagen gedrag. Elke gate-beslissing en resource-uitlezing staat in het transcript.

Je hebt cryptografisch bewijs nodig van wat de workload deed, geen vertrouwen in de runtime.

Sta het bestandssysteem toe en weiger netwerktoegang, maar leg niets per aanroep vast in de audittrail.

FP en wall-clock lekken door. Replay produceert ongeveer dezelfde output, niet exact.

Een sandbox voorkomt dat code ontsnapt. Dat bewijst niet dat de workload zich daarbinnen correct gedroeg.

Conventionele sandboxes voorkomen dat schadelijke code ontsnapt. Ze leggen niet vast wat de code binnen de afgeschermde omgeving precies deed. Vraagt een auditor ernaar, dan heb je een bewering in plaats van bewijs.

Een sandbox legt niet uit hoe de run verliep

Selvedge legt precies vast wat er is uitgevoerd, van invoer tot uitvoer, en verzegelt elke host call.

Ledger registreert wat er in een systeem is gebeurd. Selvedge registreert welke code werd uitgevoerd.

Ledger registreert de herkomst van gebeurtenissen

AION geeft certificaten af voor solverstappen, niet voor uitvoeringsruns.

Hoe Selvedge verschilt van AION en Ledger

Zelfde inputs plus zelfde envelope betekent zelfde output, altijd.

Een vast tijdperk en een gezaaide ChaCha20-PRNG vervangen hosttijd en entropie.

Interne berekening, opslag en accumulatie gebruiken binaire, gehele-getal-, vaste-komma- of adaptieve gehele-getal-/vaste-kommarepresentaties. Floating point wordt alleen aan een expliciete externe grens geaccepteerd en vóór intern gebruik expliciet omgezet; er is geen interne fallback met floating point. De virtuele klok blijft vast, dus replay produceert dezelfde bytes.

De verifier speelt offline opnieuw af met alleen modulebytes en de envelop.

ed25519-handtekening over de envelope-root. Geen proza.

Elke host call wordt in de keten gehasht. Wijzigingen verbreken de keten.

Waarom het transcript anders is dan een log

Dezelfde flow bij elke uitvoering. Replay verloopt mechanisch.

AION-bewijs afgegeven, ondertekend met Ed25519, envelop klaar voor verzending.

Elke host call en het resultaat worden gehasht in een SHA3-256-keten.

Wasmtime of Kera voert uit in de default-deny sandbox.

Module geladen, capabilities vastgezet, resource caps toegepast.

Selvedge voert WASM- of Kera-code uit in een default-deny-sandbox, hasht elke host call in een SHA3-256-transcriptketen en verpakt het resultaat in een ondertekende AION-bewijsenvelop. De envelop kan zonder de oorspronkelijke sandbox worden afgespeeld.

Selvedge is een deterministische WebAssembly-sandbox voor niet-vertrouwde code. Het manifest met toegangsrechten en het verzegelde transcript draaien op hardware die jij beheert, zodat een tegenpartij het verslag zelf kan afspelen en een geschil een opzoekvraag wordt.

Houd code binnen de grenzen en bewaar het bewijs

Selvedge zet een programma dat je niet zelf koos in een ruimte zonder internet, zonder route naar je bestanden en zonder iets te leren over je machine. Het laat een ontvangstbewijs achter met wat terugkwam en wat het programma mocht doen, zodat je een latere bewering kunt controleren.

Selvedge draait code die je niet zelf schreef in een WebAssembly-componenthost zonder netwerk, bestandssysteem, omgeving of bewegende klok. Elke afgeronde run levert een record op dat een andere partij kan herhalen, plus een uitvoeringsrapport met wat de code mocht doen. Gepubliceerd onder Apache 2.0.

Draai niet-vertrouwde code op eigen hardware.

Een deterministische WebAssembly-sandbox.

De publicatie is gepland in tweewekelijkse rondes. De repository en de documentatie gaan tegelijk live.

Het doet één klein klusje, hier, en nergens anders.

Verzegeld, zodat niets kan worden gewijzigd

Uitvoering succesvol voltooid in 18,4 ms

De ruimte, het ontvangstbewijs en de lijst zijn de hele belofte.

Hier komt het als een lijst. Elke job die het foutieve programma gebruikte noemt het met code, datum en korte machtigingenlijst, zodat je ziet wat geraakt is en hoe ver dat kon gaan. Als de makers niet langer worden vertrouwd, werkt de intrekking na een vaste vernieuwingsperiode en niet pas als een certificaat verloopt. De software valt onder de Apache 2.0-licentie.

De gebruikelijke versie van dit gesprek is een schatting. Iemand zoekt uit welke release waarschijnlijk draaide, op welke dagen en voor welke mensen. Het antwoord komt als een reeks met een voorbehoud erbij. De feiten die nodig zijn om een correctie af te bakenen, moeten dan worden gereconstrueerd in plaats van uit een record te komen. Daarmee begint de correctie met een lijst die iedereen kan controleren.

Elke job registreert een korte code voor het exacte programma dat het werk deed. Niet de naam, niet het versienummer, maar het programma zelf. Twee builds met dezelfde naam hebben dus nog steeds verschillende codes. Blijkt dat programma later fout te zijn, dan vind je met de code elke job die het heeft aangeraakt.

Wanneer er iets mis blijkt te zijn, noemt één code het programma.

Het programma zelf wordt elke keer vers geladen uit zijn eigen code, en op het ontvangstbewijs staat een code voor die code. Daardoor is aantoonbaar dat wat vandaag draaide hetzelfde is als wat vorige maand draaide. Tussendoor hoopt niets zich op waar iemand later rekening mee moet houden.

Een nieuwe Selvedge-ruimte kost zo weinig dat één ruimte per job betaalbaar is, dus niets hoeft gedeeld te worden. Als iets echt moet worden overgedragen, gebeurt dat bewust en staat het ook als overdracht in het record. Wie later naar de run kijkt, ziet die overdracht als een afzonderlijk en controleerbaar onderdeel.

Elke job krijgt een nieuwe ruimte. Niets uit de vorige zit daarin: geen achtergebleven notities, geen half afgemaakt werk, geen herinnering aan wie de job vroeg. Dat klinkt vanzelfsprekend, maar is het meestal niet. Een ruimte laten staan is goedkoper dan een nieuwe bouwen, daarom houden de meeste systemen de ruimte vast en gebruiken ze haar opnieuw.

Een nieuwe ruimte is klaar voor de volgende job.

Niets vinden is zwak bewijs, omdat het afhangt van hoe hard iemand zocht en hoeveel tijd er voor de vergadering was. Een lijst met twee machtigingen is sterk bewijs, omdat er niets anders te vinden was.

Het verandert wat er gebeurt als je later een vraag stelt. In plaats van dat iemand uitzoekt wat het programma deed en meldt dat er niets zorgwekkends was, ligt de machtigingenlijst er al en is die kort.

De meeste records vertellen wat een programma deed. Een Selvedge-ontvangstbewijs vermeldt ook wat het mocht doen, en dat is iets anders en vaak nuttiger. Een programma dat nooit bij je bestanden mocht komen, kan er niet bij zijn geweest. Dat staat op het record, of er toen iemand toekeek of niet.

Een code is geen kopie van het programma; het noemt het exacte ding dat draaide.

Een programma dat de klok kan lezen kan zich vóór een deadline anders gedragen dan erna, zonder dat iemand het verschil ziet. Een klok die nooit beweegt kan niet worden bekeken, dus er is niets waarop het gedrag kan verschillen.