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.

Kompilujte pracovné zaťaženia Kera BNN pre runtime Selvedge.

Hašovo reťazená proveniencia udalostí pre systémové udalosti.

Certifikáty dôkazov o uvažovaní, nie prepisy vykonania.

Selvedge vychádza vo štvrtom kole programu základného vydania, po Knot a Ledger. Keď vyjde, otestujte modul WASM v sandboxe a sami si prehrajte obálku dôkazu.

Plocha na vykonávanie nástrojov Model Context Protocol.

Ed25519 zapečatené, SHA3-256 prepis, offline overenie.

Grafové IR binárne neurónové siete, JIT a interpret.

Runtime komponentového modelu, hostiteľ WASI 0.2 Preview 2.

Selvedge spúšťa nedôveryhodný kód v sandboxe s obmedzenými schopnosťami a zaznamenáva vykonanie do zapečateného prepisu. Ohraničenie obmedzuje, čoho sa kód môže dotknúť; prepis ukazuje, čo sa skutočne stalo, a možno ho prehrať na kontrolu.

Server Model Context Protocol pre agentové nástroje.

Dlho bežiaci agentový runtime s frontou.

build, verify, run, replay. Vhodné pre CI.

Agentové nástroje, pluginy tretích strán, inferencia Kera BNN a práca s regulovanými údajmi vstupujú cez rovnaké kontrolované rozhranie. Každý runtime vytvára rovnakú zapečatenú obálku dôkazov, takže zmeny nasadenia nemenia príbeh auditu.

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

Zahrnuté spustenie procesu, 8-9x rýchlejšie.

Výpočtový modul, oproti 1187-1494 us vanilla.

Selvedge Wasmtime štartuje 62 až 243x rýchlejšie ako vanilla Wasmtime na úrovni API. Úprimný kompromis je horúca cesta: vanilla drží 22 ns opakované volanie a komponentový model, ktorý vytvára prepis, beží tam pomalšie. Kera JIT je 2x rýchlejší teplý pre grafové práce. Čísla sú z BENCHMARKS.md v repozitári.

Každé rozhodnutie brány je zaznamenané a hašované.

max_execution_time_ns, oddelené od fuel.

max_memory_bytes, predvolené 256 MiB, strop 4 GiB.

max_instructions, vyčerpanie čisto zastaví záťaž.

Hodiny, náhodné, súborový systém, sieť, prostredie, stdio, proces, vlastné. Predvolené odmietnutie.

Sada schopností s predvoleným odmietnutím bráni každé volanie hostiteľa v ôsmich doménach WASI. Limity zdrojov na pamäť, fuel a čas obmedzujú nekontrolované správanie. Každé rozhodnutie brány a čítanie zdrojov je v prepise.

Potrebujete kryptografický dôkaz toho, čo záťaž urobila, nie dôveru v runtime.

Povoliť súborový systém, odmietnuť sieť, ale bez záznamu na volanie v audítorskom traile.

FP a stenné hodiny pretekajú. Prehratie produkuje približne rovnaký výstup, nie presne.

Sandbox zastaví únik. Nedokazuje, že sa záťaž správala správne vnútri.

Bežné sandboxy zastavia zlý kód pred únikom. Nevytvárajú záznam o tom, čo kód skutočne urobil vnútri. Keď sa audítor opýta, odpoveď je tvrdenie, nie dôkaz.

Selvedge zachytáva presne to, čo sa vykonalo, od vstupu po výstup, každé volanie hostiteľa zapečatené.

Ledger zaznamenáva, čo sa stalo v systéme. Selvedge zaznamenáva, aký kód bežal.

AION vydáva certifikáty nad krokmi riešiteľa, nie nad behmi vykonania.

Rovnaké vstupy plus rovnaký obal znamenajú vždy rovnaký výstup.

Pevná epocha a seedovaný PRNG ChaCha20 nahrádzajú čas hostiteľa a entropiu.

Interné výpočty, ukladanie a akumulácia používajú binárne, celočíselné, pevno-rádové alebo adaptívne celočíselné/pevno-rádové reprezentácie. Pohyblivá rádová čiarka je akceptovaná len na deklarovanom vonkajšom rozhraní a je explicitne konvertovaná pred začiatkom internej práce; neexistuje žiadny interný záložný mechanizmus s pohyblivou rádovou čiarkou. Virtuálne hodiny zostávajú pevné, takže prehratie produkuje rovnaké bajty.

Žiadne interné plávajúce čísla, žiadne hodiny

Overovateľ prehráva offline len s bajtmi modulu a obalom.

Podpis ed25519 nad koreňom obalu. Nie próza.

Každé volanie hostiteľa je zahashované do reťazca. Úpravy prerušia reťazec.

Rovnaký tok pri každom vykonaní. Prehratie je mechanické.

Dôkaz AION vydaný, podpísaný ed25519, obal pripravený na odoslanie.

Každé volanie hostiteľa a výsledok sú zahashované do reťazca SHA3-256.

Wasmtime alebo Kera beží v sandboxe s predvoleným odmietnutím.

Modul načítaný, možnosti pripnuté, limity zdrojov aplikované.

Selvedge spúšťa kód WASM alebo Kera v sandboxe s predvoleným odmietnutím, hashuje každé volanie hostiteľa do reťazca prepisu SHA3-256 a zabalí výsledok do podpísaného obalu dôkazu AION. Obal sa prehráva bez pôvodného sandboxu.

Selvedge je deterministický sandbox WebAssembly pre nedôveryhodný kód. Jeho manifest povolení a zapečatený prepis bežia na hardvéri, ktorý ovládate, takže protistrana môže prehrať záznam na vlastnom počítači a spor sa stane vyhľadávaním, nie žiadosťou o uistenie.

Selvedge umiestni program, ktorý ste si nevybrali, do miestnosti bez internetu, bez cesty k vašim súborom a bez možnosti dozvedieť sa čokoľvek o vašom počítači. Zanechá účtenku, ktorá hovorí, čo sa vrátilo a čo program smel urobiť, takže si môžete overiť neskoršie tvrdenie namiesto toho, aby ste niekomu verili na slovo.

Selvedge spúšťa kód, ktorý ste nenapísali, v hostiteľovi WebAssembly komponentov bez siete, súborového systému, prostredia ani pohyblivých hodín. Každé dokončené spustenie vráti záznam, ktorý môže iná strana prehrať, a správu o vykonaní, ktorá uvádza, čo kód smel urobiť. Publikované pod licenciou Apache 2.0.

Spúšťajte nedôveryhodný kód na hardvéri, ktorý ovládate.

Publikácia je naplánovaná vo štrnásťdňových kolách. Repozitár a jeho dokumentácia idú do sveta spoločne.

Robí jednu malú úlohu, tu, a nikde inde.

Vykonávanie úspešne dokončené za 18,4 ms

Izba, potvrdenka a zoznam sú celým prísľubom.

Tu prichádza ako zoznam. Každá úloha, ktorá použila chybný program, ho pomenúva kódom, dátumom a krátkym zoznamom povolení, takže vidíte, čo bolo ovplyvnené a ako ďaleko to mohlo zájsť. Ak ľuďom, ktorí ho vytvorili, už nemožno dôverovať, odobratie nadobudne účinnosť v nastavenom intervale obnovy, nie vtedy, keď vyprší certifikát. Softvér je publikovaný pod licenciou Apache 2.0.

Bežná verzia tohto rozprávania je odhad. Niekto zistí, ktorá verzia pravdepodobne bežala, v ktoré dni, pre ktorých ľudí, a odpoveď príde ako rozsah s upozornením. To ponecháva fakty potrebné na vymedzenie opravy ako rekonštrukciu, nie ako záznam. Oprava začína zoznamom, ktorý možno skontrolovať.

Každá úloha zaznamenáva krátky kód presného programu, ktorý vykonal prácu. Nie jeho názov, nie číslo verzie, ale samotný program, takže dve zostavy so spoločným názvom majú stále rôzne kódy. Ak sa neskôr ukáže, že program je chybný, kód je spôsob, ako nájsť každú úlohu, ktorej sa dotkol.

Keď sa niečo ukáže ako chybné, jeden kód pomenúva program.

Samotný program sa každý raz načíta čerstvo z vlastného kódu a potvrdenka nesie kód tohto kódu, takže to, čo bežalo dnes, je dokázateľne to, čo bežalo minulý mesiac. Nič sa medzitým nehromadí, o čo by sa neskôr musel niekto starať.

Nová izba Selvedge stojí tak málo, že jedna na úlohu je dostupná, takže nič sa nemusí zdieľať. Ak sa niečo naozaj potrebuje preniesť, odovzdá sa zámerne a v zázname sa objaví ako niečo, čo bolo odovzdané.

Každá úloha dostane novú izbu. Nič z predchádzajúcej v nej nie je: žiadne zvyšné poznámky, žiadna nedokončená práca, žiadna spomienka na to, kto o čo požiadal. To znie samozrejme a zvyčajne to nie je pravda, pretože udržiavať izbu stojí menej ako stavať novú, takže väčšina systémov izbu ponechá a používa ju znova.

Nová izba je pripravená pre ďalšiu úlohu.

Nenájsť nič je slabý dôkaz, pretože závisí od toho, ako usilovne niekto hľadal a koľko času mal pred stretnutím. Zoznam dvoch povolení je silný dôkaz, pretože tam nebolo nič iné, čo by sa dalo nájsť.

To mení to, čo sa stane, keď neskôr položíte otázku. Namiesto toho, aby niekto prechádzal tým, čo program urobil, a hlásil, že nenašiel nič znepokojujúce, zoznam povolení je priamo tam a je krátky.

Väčšina záznamov hovorí, čo program urobil. Účtenka Selvedge tiež hovorí, čo mu bolo dovolené urobiť, čo je iná a užitočnejšia vec. Program, ktorý sa nikdy nesmel dostať k vašim súborom, sa k nim nemohol dostať, a to je v zázname bez ohľadu na to, či sa to v tom čase náhodou niekto pozeral.

Kód nie je kópia programu; pomenúva presne to, čo bežalo.

Uzatvára aj malý trik. Program, ktorý vie čítať hodiny, sa môže správať jedným spôsobom pred termínom a iným po ňom, a nikto by rozdiel nikdy nevidel. Hodiny, ktoré sa nikdy nehýbu, sa nedajú sledovať, takže nie je čo robiť inak.

Dáva vám test, ktorý si môžete spustiť sami. Ak sa niečo zdá byť zlé, spustite ho znova s rovnakým vstupom. Ak je odpoveď rovnaká, program sa správa správne a problém je inde. Ak je iná, niečo sa zmenilo a porovnanie hovorí, ktorá časť.

Väčšina programov dáva zakaždým mierne odlišné odpovede, pretože sa pozerajú na hodiny, používajú trochu náhody alebo si všimnú, ako je stroj zaneprázdnený. Program bežiaci v Selvedge nemôže robiť nič z toho. Hodiny vo vnútri sú pevné a nikdy sa nehýbu, a všetko náhodné začína z rovnakého čísla pri každom behu. Opýtajte sa dvakrát, dostanete rovnakú odpoveď.

Spustite to znova zajtra a zistite, či stále súhlasí.

Je to rovnaká myšlienka ako pečať na obálke, a robí viac. Pečať vám povie, že list bol otvorený. Toto vám povie, ktorá strana sa zmenila, a stále funguje, keď bol list odvtedy skopírovaný tucetkrát. Každý čitateľ dostane rovnakú odpoveď zo skopírovaného záznamu.