Selvedge a dôkazy o vykonaní

Sandbox izoluje kód do kúta, ale nedokazuje, čo sa v ňom stalo. Selvedge obaľuje WASM a Kera vykonávanie politikou, deterministickým prehrávaním, SHA3...

Selvedge a dôkazy o vykonaní

Sandbox nie je svedok

Spúšťanie nedôveryhodného kódu je jednou z tých myšlienok, ktoré znejú na porade dobre, pretože nikto ešte nenapísal hlásenie o incidente. Nechajte agenta zavolať nástroj. Nechajte plugin transformovať súbor. Nechajte partnerský modul spracovať dáta. Dajte to do sandboxu. Krásne. Kód nemôže uniknúť. Všetci prikyvujú. Potom sa audítor spýta, čo kód v sandboxe vlastne robil, a zrazu miestnosť zistí, že izolácia nie je to isté ako dôkaz.

Sandbox odpovedá na jednu otázku: zostala práca v rámci hraníc? To je nevyhnutné. Ale nestačí to. Ťažšia otázka je, čo sa počas behu stalo. Ktorý artefakt sa vykonal? Ktorá politika sa použila? Ktoré schopnosti sa vyžiadali? Ktoré volania hostiteľa boli povolené alebo zamietnuté? Koľko paliva, pamäte a času to spotrebovalo? Čo z toho vyšlo? Dá sa beh prehrať bez toho, aby sme dôverovali pôvodnému stroju? Ak tieto odpovede žijú v logoch a dôvere, systém má kostým, nie auditnú stopu.

Selvedge existuje práve pre túto medzeru. Stránka to nazýva vrstvou transkriptu vykonávania pre nedôveryhodný kód: AION dokazuje uvažovanie, Ledger zaznamenáva systémové udalosti a Selvedge zachytáva vykonávanie. Implementácia nasleduje tento tvar. Pracovný priestor je projekt Rust 2024 s crate-mi pre základné digesty a limity zdrojov, vykonávacie enginy, back-endy Wasmtime a Kera, determinizmus, hostiteľov WASI a Kera, politiku, overovanie AION, CLI, MCP, register, runner, démona, audit a povrchy SDK pre hostí. Verejný prísľub je zámerne prostý: Selvedge vykonáva nedôveryhodný kód pod deterministickým vykonávaním, presadzovaním politiky a disciplínou overovania.

Užitočný rozdiel je malý a krutý. Sandbox hovorí, že kód neodišiel. Selvedge je navrhnutý tak, aby povedal, čo kód urobil.

Transkript je povrch produktu. Načítanie, spustenie, hashovanie a zapečatenie sú samostatné kroky, pretože dôkaz potrebuje štruktúru, nie teplý pocit.

Transkript nie je log

Logy sú užitočné pre ľudí, ktorí už ladia. Menej užitočné sú, keď je otázkou, či sa dá beh neskôr overiť niekým, kto nedôveroval pôvodnému hostiteľovi. Riadok logu môže chýbať, byť preusporiadaný, filtrovaný, skrátený, preformátovaný alebo vysvetlený. Transkript musí byť súčasťou zmluvy o vykonávaní.

Jadro Selvedge definuje digesty SHA3-256, typy chýb, validáciu ciest, autentifikačné tokeny a zdieľané limity zdrojov. README opisuje transkripty s hash-mi bytecodu, nastavení, stdout, stderr, výstupu, pamäte a globálov, plus spotrebu paliva a počty volaní hostiteľa. Stránka opisuje, že každé volanie hostiteľa je hashované do reťazca SHA3-256 a výsledok je zabalený do dôkazovej obálky štýlu AION s zapečatením Ed25519. To je rozdiel medzi systémom, ktorý hovorí dôveruj mi, a systémom, ktorý hovorí tu je paket.

V tomto návrhu je zdravá dávka paranoje. Digest artefaktu pomenúva kód. Digest nastavení pomenúva deterministický profil. Transkript pomenúva, čo prekročilo hranicu hostiteľa. Podpísaná obálka robí manipuláciu viditeľnou. Offline overenie znamená, že pôvodný runtime nie je jediným svedkom. Toto je časť, ktorú mnohé príbehy o sandboxoch vynechávajú, pretože je menej zábavná ako ukážka bežiaceho pluginu. Ukážky sa málokedy pýtajú, kto upravil auditný log. Audítori sa pýtajú.

Predvolené odmietnutie tiež potrebuje potvrdenky

Defaultdeny je dobrý postoj, ale hrozný slogan, ak zostane len na slajde. Politika Selvedge dáva sloganu zuby. Balík politiky definuje schopnosti WASM, ako sú hodiny, náhodnosť, súborový systém, sieť, prostredie, stdio, proces a vlastné. Nesie limity zdrojov pre pamäť, veľkosť súboru, počet inštrukcií a čas. Overuje invarianty, odmieta duplicitné schopnosti, poskytuje štruktúrované chyby a mapuje zlyhania do spoločného slovníka chýb Dweve. Spúšťač potom aplikuje limity zdrojov na konfiguráciu vykonávania pred spustením pracovnej záťaže.

To znamená, že politika nie je dotazník, ktorý sa vyplní po spustení. Je vstupom do vykonávania. Ak pracovná záťaž žiada o čas, náhodnosť, súborový systém, sieť, prostredie alebo prístup k procesu, táto žiadosť musí prejsť politikou. Ak minie príliš veľa paliva, pamäte alebo času, beh sa skončí ako riadené zlyhanie. Ak je politika nekonzistentná, mala by zlyhať skôr, než artefakt začne robiť čokoľvek zaujímavé. Veľmi nudné. Veľmi užitočné. Nuda je to, ako si chránime víkendy.

Defaultdeny si zaslúži svoje miesto len vtedy, keď sú rozhodnutia súčasťou záznamu. Inak je to len prísne vyzerajúce zaškrtávacie políčko.

Dôležité je, že rozhodnutia politiky nie sú oddelené od dôkazov. Sandbox môže povoliť alebo zamietnuť širokú kategóriu a napriek tomu ponechať audítorskú stopu tenkú. Selvedge je postavený na myšlienke, že každé rozhodnutie brány a každé čítanie zdrojov patrí do príbehu behu. To je to, čo ho robí užitočným pre nástroje agentov, spúšťanie pluginov tretích strán, inferenciu Kera, regulované pracovné záťaže a kód partnerov. Práca môže byť nedôveryhodná. Dôkazy by nemali byť.

Determinizmus je miesto, kde hostiteľ prestáva improvizovať

Replay sa ľahko sľubuje a ťažko dodržiava. Hostiteľ má hodiny. Hostiteľ má náhodnosť. Správanie NaN s pohyblivou rádovou čiarkou môže byť nepríjemné. SIMD sa môže líšiť medzi architektúrami. Súborové systémy, premenné prostredia a stav procesu sú vynikajúce spôsoby, ako prepašovať nedeterminizmus na miesta, kde ho nikto nečakal. Ak chcete replay, musíte tieto zdroje odstrániť alebo kontrolovať skôr, než sa stanú výhovorkami.

Selvedge robí deterministické vykonávanie predvoleným. README opisuje virtuálne hodiny pripnuté na epochu 2024-01-01, deterministickú náhodnosť ChaCha20, meranie paliva, generovanie záznamu a kanonizáciu NaN. Tiež uvádza, že detekcia SIMD je najrýchlejšia, ale len pre rovnakú architektúru, zatiaľ čo vypnutie SIMD je plne prenosná cesta naprieč platformami. Tá posledná časť je dôležitá, pretože determinizmus nie je modlitba. Je to rozhodnutie o konfigurácii a architektúre a niekedy je čestný kompromis rýchlosť za prenosnosť.

Spúšťač štandardne používa backend Wasmtime s povoleným deterministickým vykonávaním. Kera je druhý backend, zameraný na Graph IR a binárne neurónové siete. Toto rozdelenie je rozumné. WASM je všeobecná cesta pre nedôveryhodné komponenty. Kera je cesta pre AI grafy. Obe potrebujú rovnakú disciplínu: politiku pred vykonávaním, deterministické nastavenia, záznam po vykonávaní a dôkaz okolo výsledku.

Replay je chránený odstránením osobnosti hostiteľa. Čas, náhodnosť, správanie NaN a profil SIMD nie sú ponechané na miestnu náladu.

Prečo agenti robia toto menej voliteľným

Agentské systémy opäť robia z nedôveryhodného vykonávania módu, čo je veta, pri ktorej by mal každý bezpečnostný pracovník zbystriť pozornosť. Model požiada o volanie nástroja. Plugin spustí transformáciu. Vygenerovaný pomocný skript sa dotkne dát. Partnerský nástroj príde cez MCP. Model nenapísal nástroj, nástroj nemusí byť skontrolovaný s rovnakou starostlivosťou ako produktový kód a používateľ stále očakáva, že systém vysvetlí, čo sa stalo. Veľa šťastia s tým, ak je jedinou odpoveďou adresár s logmi a dojmy.

Selvedge má povrch MCP servera pre agentské nástroje, CLI pre pracovné postupy typu build, verify, run a replay, démona pre dlhodobé vykonávanie, pooling runnerov a zahrievanie vyrovnávacej pamäte, knižnice pre klienta a server registra a SDK pre hosťov. Nejde o to, že každý povrch je rovnaký. Ide o to, že tvar dôkazov by mal byť porovnateľný. Či už pracovná záťaž vstupuje ako komponent WASM, graf Kera, agentský nástroj alebo servisná úloha, beh by mal skončiť niečím, čo môžete overiť.

Rôzne vstupné body sú v poriadku. Rôzne pravdy nie sú. Runtime povrchy dávajú zmysel len vtedy, ak produkujú jeden tvar dôkazov.

Výkon je kompromis, nie kúzlo

Stránka Selvedge obsahuje benchmarkové čísla z BENCHMARKS.md v repozitári: studený štart je hlavným tromfom, horúca cesta je nuansovanejšia, Kera JIT má dobrý príbeh pre zahriate grafy a vanilla Wasmtime stále drží niektoré horúce cesty s opakovanými volaniami. Toto je správny spôsob, ako o tom hovoriť. Práca runtime je plná kompromisov. Ak komponentový model produkuje prepis a obálku dôkazov, má iné náklady ako minimálna cesta. Ak je vašou bolesťou studený štart, táto cesta dôkazov môže pomôcť. Ak je pracovná záťaž tesné opakované volanie bez potreby réžie prepisu, odpoveď môže byť iná. Veľmi nepohodlná, realita. Odmieta byť brožúrou.

Článková verzia príbehu o výkone je preto jednoduchá: vyberte runtime pre pracovnú záťaž. Nepoužívajte obálku dôkazov ako magický elixír rýchlosti. Použite ju, keď sú náklady na absenciu prehrateľných dôkazov vyššie ako réžia. Pre agentské nástroje, regulované spracovanie dát, pluginy tretích strán a vykonávanie, kde sa neskôr človek spýta, čo sa stalo, sú tieto náklady často reálne.

Čo skontrolovať pred použitím

Po prvé, rozhodnite sa, či potrebujete izoláciu, dôkazy alebo oboje. Ak je pracovná záťaž dôveryhodná a interná, Selvedge môže byť viac mechanizmov, než je potrebné. Ak je pracovná záťaž nedôveryhodná, od partnera, spúšťaná modelom alebo určená na audit, prepis si začína zaslúžiť svoje miesto.

Po druhé, skontrolujte politiku. Ktoré schopnosti sú povolené? Ktoré sú zakázané? Aké sú limity pre fuel, pamäť a čas? Je deterministický režim povinný alebo len povolený? Je prístup k súborovému systému a sieti dostatočne úzky? Je politika verzovaná spolu s artefaktom? Ak politika žije vo wiki a vykonávanie niekde inde, dizajn sa už rozpadá.

Po tretie, testujte replay ako produktové správanie. Nečakajte na audit, aby ste zistili, či sa obálka overuje offline. Spustite rovnaký artefakt, rovnakú politiku a rovnaké vstupy dvakrát. Porovnajte prepisy. Skúste zakázané schopnosti. Poškodte kontrolný súčet. Zmeňte seed. Vypnite SIMD, ak záleží na identite naprieč platformami. Nepríjemné testy sú podstatou.

Ponaučenie

Selvedge nie je krajší sandbox. Je to vrstva dôkazov o vykonávaní. Spúšťa artefakty WASM a Kera, začína s predvoleným odmietnutím, obmedzuje zdroje, riadi deterministické vstupy, hashuje vykonávanie do prepisov a zabalí výsledky do obálky dôkazov, ktorú možno neskôr skontrolovať. To je iný sľub ako kód zostal vo svojom kúte.

Keď systémy umelej inteligencie volajú viac nástrojov, spúšťajú viac generovaných pomocníkov a prijímajú viac komponentov tretích strán, tento rozdiel prestáva byť akademický. Otázkou nebude len to, či pracovné zaťaženie uniklo. Otázkou bude, čo urobilo, podľa akej politiky, s akými vstupmi, aké výstupy vytvorilo a či niekto iný dokáže toto tvrdenie prehrať.

Sandbox je stena. Selvedge sa snaží byť aj svedkom.