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.
Kompilējiet Kera BNN darba slodzes Selvedge izpildes videi.
Notikumu izcelsmes ķēde ar hešēšanu sistēmas notikumiem.
Pamatojuma pierādījumu sertifikāti, nevis izpildes atšifrējumi.
Selvedge tiek publicēts ceturtajā pamata laidiena programmas kārtā, pēc Knot un Ledger. Kad tas notiks, pats izmēģiniet WASM moduli smilškastē un atkārtojiet pierādījuma aploksni.
Model Context Protocol rīku izpildes virsma.
Ed25519 aizzīmogots, SHA3-256 atšifrējums, bezsaistes pārbaude.
Grafa IR binārie neironu tīkli, JIT un interpretators.
Komponentu modeļa izpildvide, WASI 0.2 Preview 2 resursdators.
Selvedge palaiž neuzticamu kodu ierobežotu iespēju smilškastē un ieraksta izpildi aizzīmogotā atšifrējumā. Ierobežojumi nosaka, kam kods var piekļūt; atšifrējums parāda, kas faktiski notika, un to var atkārtot pārskatīšanai.
Model Context Protocol serveris agenta rīkiem.
Ilgstošas darbības agenta izpildvide ar rindu.
būvēt, pārbaudīt, palaist, atkārtot. CI draudzīgs.
Saistīts jūsu lietojumprogrammā kā crate.
Agenta rīki, trešo pušu plugini, Kera BNN secinājumi un regulētu datu apstrāde visi ienāk caur to pašu kontrolēto robežu. Katra izpildvide rada to pašu aizzīmogoto pierādījuma aploksni, tāpēc izvietošanas izmaiņas nemaina audita stāstu.
Ed25519 parakstīšana 5-15 us, pārbaude 15-30 us.
Skaitļošanas modulis, salīdzinot ar 1187-1494 us parasto.
Selvedge Wasmtime starts 62 līdz 243x ātrāk nekā parastais Wasmtime API līmenī. Godīgais kompromiss ir karstais ceļš: parastais notur 22 ns atkārtoto izsaukumu, un komponentu modelis, kas veido transkriptu, tur darbojas lēnāk. Kera JIT ir 2x ātrāks silts grafu darbam. Skaitļi ir no repozitorija BENCHMARKS.md.
Izvēlieties izpildlaiku atbilstoši slodzei
Katrs vārtu lēmums tiek ierakstīts un jaukts.
max_execution_time_ns, atsevišķi no degvielas.
max_memory_bytes, 256 MiB noklusējums, 4 GiB griesti.
max_instructions, izsīkums tīri aptur slodzi.
Pulkstenis, nejaušība, failu sistēma, tīkls, vide, stdio, process, pielāgots. Noklusējuma aizliegums.
Noklusējuma aizlieguma iespēju kopa bloķē katru resursdatora izsaukumu astoņās WASI jomās. Resursu ierobežojumi atmiņai, degvielai un laikam ierobežo nekontrolētu uzvedību. Katrs vārtu lēmums un resursu nolasījums ir transkriptā.
Jums ir nepieciešami kriptogrāfiski pierādījumi par to, ko slodze darīja, nevis pārliecība par izpildlaiku.
Atļaut failu sistēmu, aizliegt tīklu, bet bez ieraksta par katru izsaukumu audita žurnālā.
FP un sienas pulkstenis izplūst. Atkārtošana rada aptuveni tādu pašu izvadi, nevis tieši tādu.
Smilšu kaste aptur izbēgšanu. Tā nepierāda, ka slodze iekšpusē uzvedās pareizi.
Parastās smilšu kastes aptur sliktu kodu no izbēgšanas. Tās nerada ierakstu par to, ko kods faktiski darīja iekšpusē. Kad auditors jautā, atbilde ir apgalvojums, nevis pierādījums.
Selvedge uztver tieši to, kas tika izpildīts, no ievades līdz izvadei, katrs resursdatora izsaukums ir aizzīmogots.
Virsgrāmata ieraksta, kas notika sistēmā. Selvedge ieraksta, kāds kods tika izpildīts.
AION izsniedz sertifikātus par solvera soļiem, nevis izpildes reizēm.
Vieni un tie paši ievaddati plus viena un tā pati aploksne nozīmē vienu un to pašu izvadi, vienmēr.
Fiksēta ēra un sēklots ChaCha20 PRNG aizstāj resursdatora laiku un entropiju.
Iekšējie aprēķini, glabāšana un uzkrāšana izmanto bināros, veselo skaitļu, fiksētā punkta vai adaptīvās veselo skaitļu/fiksētā punkta attēlojumus. Peldošais punkts tiek pieņemts tikai deklarētā ārējā robežā un pirms iekšējā darba sākšanas tiek skaidri konvertēts; nav iekšējas peldošā punkta rezerves. Virtuālais pulkstenis paliek fiksēts, tāpēc atkārtošana rada tos pašus baitus.
Nav iekšējo peldošā punkta aprēķinu, nav pulksteņu
Verifikators atkārto bezsaistē, izmantojot tikai moduļa baitus un aploksni.
ed25519 paraksts virs aploksnes saknes. Nevis prozas teksts.
Katrs resursdatora izsaukums ir iekļauts ķēdē. Izmaiņas pārtrauc ķēdi.
Viena un tā pati plūsma katrā izpildē. Atkārtošana ir mehāniska.
AION pierādījums izdots, ed25519 parakstīts, aploksne gatava nosūtīšanai.
Katrs resursdatora izsaukums un rezultāts ir iekļauts SHA3-256 ķēdē.
Wasmtime vai Kera izpildās smilšu kastē ar noklusējuma aizliegumu.
Modulis ielādēts, iespējas fiksētas, resursu ierobežojumi piemēroti.
Selvedge izpilda WASM vai Kera kodu smilšu kastē ar noklusējuma aizliegumu, iekļauj katru resursdatora izsaukumu SHA3-256 transkripta ķēdē un ietin rezultātu parakstītā AION pierādījuma aploksnē. Aploksne atkārtojas bez sākotnējās smilšu kastes.
Selvedge ir deterministiska WebAssembly smilšu kaste neuzticamam kodam. Tā atļauju manifests un aizzīmogotais transkripts darbojas aparatūrā, kuru kontrolējat jūs, tāpēc darījuma partneris var atkārtot ierakstu savā mašīnā, un strīds kļūst par uzmeklēšanu, nevis apliecinājuma pieprasījumu.
Turiet kodu robežās, saglabājiet ierakstu
Selvedge ievieto programmu, kuru neizvēlējāties, telpā bez interneta, bez ceļa uz jūsu failiem un bez iespējas uzzināt kaut ko par jūsu ierīci. Tā atstāj kvīti, kurā redzams, kas atgriezās un ko programmai bija atļauts darīt, lai vēlāk varētu pārbaudīt apgalvojumu, nevis ticēt kādam uz vārda.
Selvedge palaiž kodu, kuru neesat rakstījis, WebAssembly komponentu resursdatorā bez tīkla, failu sistēmas, vides vai kustīga pulksteņa. Katra pabeigtā palaišana atgriež ierakstu, ko cita puse var atkārtoti atskaņot, un izpildes ziņojumu, kurā norādīts, ko kodam bija atļauts darīt. Publicēts saskaņā ar Apache 2.0.
Palaižiet neuzticamu kodu aparatūrā, kuru kontrolējat.
Publicēšana plānota divu nedēļu kārtās. Repozitorijs un tā dokumentācija tiek publicēti kopā.
Tas veic vienu mazu darbu šeit un nekur citur.
Izpilde veiksmīgi pabeigta 18.4 ms laikā
Telpa, kvīts un saraksts ir viss solījums.
Šeit tas nonāk kā saraksts. Katrs darbs, kurā tika izmantota bojātā programma, to nosauc pēc koda, datuma un īsa atļauju saraksta, lai jūs redzētu, kas tika ietekmēts un cik tālu tas varēja izplatīties. Ja cilvēki, kas to izveidoja, vairs netiek uzskatīti par uzticamiem, atsaukšana stājas spēkā noteiktā atsvaidzināšanas intervālā, nevis tad, kad beidzas kāds sertifikāts. Programmatūra ir publicēta saskaņā ar Apache 2.0 licenci.
Parastā šīs sarunas versija ir aplēse. Kāds izrēķina, kura versija, visticamāk, darbojās, kurās dienās, kuriem cilvēkiem, un atbilde nāk kā diapazons ar piezīmi. Tas atstāj faktus, kas nepieciešami korekcijas apjoma noteikšanai, kā rekonstrukciju, nevis ierakstu. Korekcija sākas ar sarakstu, ko var pārbaudīt.
Katrs darbs ieraksta īsu kodu tieši tai programmai, kas veica darbu. Ne tās nosaukumu, ne versijas numuru, bet pašu programmu, tāpēc divām būvēm, kam ir viens nosaukums, joprojām ir dažādi kodi. Ja vēlāk izrādās, ka šī programma ir bojāta, kods ir tas, kā tiek atrasts katrs darbs, ko tā skāra.
Kad kaut kas izrādās nepareizs, viens kods nosauc programmu.
Pati programma katru reizi tiek ielādēta no sava koda, un kvītī ir kods šim kodam, tāpēc tas, kas darbojās šodien, ir pierādāmi tas pats, kas darbojās pagājušajā mēnesī. Pa vidu nekas neuzkrājas, par ko kādam vēlāk būtu jāuztraucas.
Jauna Selvedge telpa maksā tik maz, ka viena katra darbam ir pieejama, tāpēc nekas nav jādala. Ja kaut kas patiešām ir jāpārnes, tas tiek nodots ar nolūku un ierakstā parādās kā nodots.
Katrs darbs saņem jaunu telpu. Tajā nav nekā no iepriekšējās: ne atstātu piezīmju, ne pusgatava darba, ne atmiņas par to, kurš lūdza. Tas izklausās pašsaprotami, un parasti tā nav, jo telpas uzturēšana ir lētāka nekā jaunas būvēšana, tāpēc lielākā daļa sistēmu patur telpu un izmanto to atkārtoti.
Izvade, rezultāts un resursu izmantojums.
Nekā neatrašana ir vājš pierādījums, jo tas ir atkarīgs no tā, cik rūpīgi kāds meklēja un cik ilgi viņam bija laiks pirms sapulces. Divu atļauju saraksts ir spēcīgs pierādījums, jo tur nebija nekā cita, ko atrast.
Tas maina to, kas notiek, kad vēlāk uzdodat jautājumu. Tā vietā, lai kāds pārskatītu, ko programma darīja, un ziņotu, ka nav atradis neko satraucošu, atļauju saraksts ir tieši tur, un tas ir īss.
Lielākā daļa ierakstu stāsta, ko programma izdarīja. Selvedge kvīts arī norāda, ko tai bija atļauts darīt, kas ir cita un noderīgāka lieta. Programma, kurai nekad nebija atļauts piekļūt jūsu failiem, nevarēja tiem piekļūt, un tas ir ierakstīts neatkarīgi no tā, vai kāds tobrīd to vēroja.
Kods nav programmas kopija; tas nosauc tieši to, kas tika izpildīts.
Tas arī aizver nelielu viltību. Programma, kas var nolasīt pulksteni, var uzvesties vienādi pirms termiņa un citādi pēc tā, un neviens nekad neredzētu atšķirību. Pulkstenis, kas nekad nekustas, nevar tikt vērots, tāpēc nav nekā, par ko uzvesties citādi.
Tas dod jums testu, ko varat veikt paši. Ja kaut kas izskatās nepareizi, palaidiet to vēlreiz ar to pašu ievadi. Ja atbilde ir tā pati, programma darbojas pareizi un problēma ir kaut kur citur. Ja tā ir atšķirīga, kaut kas ir mainījies, un salīdzinājums norāda, kura daļa.
Lielākā daļa programmu katru reizi sniedz nedaudz atšķirīgas atbildes, jo tās skatās pulkstenī, izmanto mazliet nejaušības vai pamana, cik noslogota ir iekārta. Programma, kas darbojas Selvedge, neko no tā nevar darīt. Iekšējais pulkstenis ir fiksēts un nekad nekustas, un jebkura nejaušība sākas no tā paša skaitļa katrā palaišanā. Jautājiet divreiz, saņemiet to pašu atbildi.