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.
Compila cargas de trabajo BNN de Kera para el runtime de Selvedge.
Procedencia de eventos con cadena de hash para eventos del sistema.
Certificados de prueba de razonamiento, no transcripciones de ejecución.
Selvedge se publica en la cuarta ronda del programa de lanzamiento de la fundación, después de Knot y Ledger. Una vez publicado, prueba un módulo WASM en un sandbox y reproduce el sobre de prueba por ti mismo.
Superficie de ejecución de herramientas del Model Context Protocol.
Ed25519 sellado, transcripción SHA3-256, verificación sin conexión.
Redes neuronales binarias de IR de grafo, JIT e intérprete.
Runtime de modelo de componentes, host WASI 0.2 Preview 2.
Selvedge ejecuta código no confiable dentro de un sandbox con límites de capacidades y registra la ejecución en una transcripción sellada. El aislamiento limita lo que el código puede tocar; la transcripción muestra lo que realmente sucedió y se puede reproducir para revisión.
Servidor del Model Context Protocol para herramientas de agentes.
Runtime de agente de larga duración con cola.
build, verify, run, replay. Compatible con CI.
Las herramientas de agentes, los plugins de terceros, la inferencia BNN de Kera y el trabajo con datos regulados entran todos por el mismo límite controlado. Cada runtime produce el mismo sobre de evidencia sellado, por lo que los cambios de despliegue no cambian la historia de auditoría.
Firma Ed25519 5-15 us, verificación 15-30 us.
Arranque del proceso incluido, 8-9 veces más rápido.
Módulo de cómputo, frente a 1187-1494 us en vanilla.
Selvedge Wasmtime arranca de 62 a 243 veces más rápido que Wasmtime vanilla a nivel de API. La contrapartida honesta es la ruta en caliente: vanilla mantiene la llamada repetida de 22 ns, y el modelo de componentes que produce el transcript corre más lento allí. Kera JIT es 2 veces más rápido en caliente para trabajo de grafos. Las cifras provienen de BENCHMARKS.md del repositorio.
Elige el runtime según la carga de trabajo
Cada decisión de puerta se registra y se aplica hash.
max_execution_time_ns, separado del fuel.
max_memory_bytes, 256 MiB por defecto, techo de 4 GiB.
max_instructions, el agotamiento detiene la carga de trabajo limpiamente.
Reloj, aleatorio, sistema de archivos, red, entorno, stdio, proceso, personalizado. Denegación por defecto.
Un conjunto de capacidades de denegación por defecto controla cada llamada al host en ocho dominios WASI. Los límites de recursos en memoria, fuel y tiempo acotan el comportamiento descontrolado. Cada decisión de puerta y lectura de recursos está en el transcript.
Necesitas evidencia criptográfica de lo que hizo la carga de trabajo, no confianza en el runtime.
Confía en el runtime, no en la carga de trabajo
Permitir sistema de archivos, denegar red, pero sin registro por llamada en el rastro de auditoría.
FP y tiempo real se filtran. La reproducción produce aproximadamente la misma salida, no exactamente.
Un sandbox detiene la fuga. No demuestra que la carga de trabajo se comportó correctamente dentro.
Los sandbox convencionales evitan que el código malo escape. No producen un registro de lo que el código realmente hizo dentro. Cuando un auditor pregunta, la respuesta es una afirmación, no evidencia.
Selvedge captura exactamente lo que se ejecutó, de entrada a salida, cada llamada al host sellada.
Ledger registra lo que ocurrió en un sistema. Selvedge registra qué código se ejecutó.
AION emite certificados sobre pasos de resolución, no sobre ejecuciones completas.
Cómo se diferencia Selvedge de AION y Ledger
Las mismas entradas más el mismo sobre significan la misma salida, siempre.
Una época fija y un PRNG ChaCha20 con semilla reemplazan el tiempo del host y la entropía.
El cálculo interno, el almacenamiento y la acumulación usan representaciones binarias, enteras, de punto fijo o adaptativas enteras/de punto fijo. El punto flotante solo se acepta en un límite externo declarado y se convierte explícitamente antes de comenzar el trabajo interno; no hay respaldo interno de punto flotante. El reloj virtual permanece fijo, por lo que la reproducción produce los mismos bytes.
El verificador reproduce sin conexión con los bytes del módulo y el sobre únicamente.
Firma ed25519 sobre la raíz del sobre. No prosa.
Cada llamada al host se incluye en el hash de la cadena. Las ediciones rompen la cadena.
Por qué la transcripción es diferente de un registro
Mismo flujo en cada ejecución. La reproducción es mecánica.
Prueba AION emitida, firmada con ed25519, sobre listo para enviar.
Cada llamada al host y su resultado se incluyen en el hash de una cadena SHA3-256.
Wasmtime o Kera se ejecuta dentro del sandbox de denegación por defecto.
Módulo cargado, capacidades fijadas, límites de recursos aplicados.
Selvedge ejecuta código WASM o Kera dentro de un sandbox de denegación por defecto, incluye cada llamada al host en el hash de una cadena de transcripción SHA3-256 y envuelve el resultado en un sobre de prueba AION firmado. El sobre se reproduce sin el sandbox original.
Selvedge es un sandbox WebAssembly determinista para código no confiable. Su manifiesto de permisos y su transcripción sellada se ejecutan en hardware que controlas, por lo que una contraparte puede reproducir el registro en su propia máquina y una disputa se convierte en una consulta en lugar de una solicitud de garantía.
Mantén el código dentro de los límites, mantén el registro
Selvedge pone un programa que no elegiste en una sala sin internet, sin ruta a tus archivos y sin nada que aprender sobre tu máquina. Deja un recibo que dice qué volvió y qué se le permitió hacer al programa, para que puedas comprobar una afirmación posterior en lugar de fiarte de la palabra de alguien.
Selvedge ejecuta código que no escribiste en un host de componentes WebAssembly sin red, sistema de archivos, entorno ni reloj en movimiento. Cada ejecución completada devuelve un registro que otra parte puede reproducir, y un informe de ejecución que indica qué se le permitió hacer al código. Publicado bajo Apache 2.0.
Ejecuta código no confiable en hardware que controlas.
Un espacio aislado WebAssembly determinista.
La publicación está prevista en rondas quincenales. El repositorio y su documentación se publican juntos.
Se ejecuta en ordenadores que usted posee
Hace un pequeño trabajo, aquí, y en ningún otro lugar.
Ejecución completada correctamente en 18,4 ms
La sala, el recibo y la lista son toda la promesa.
Aquí llega como una lista. Cada trabajo que usó el programa defectuoso lo identifica por código, fecha y una breve lista de permisos, para que puedas ver qué se vio afectado y hasta dónde pudo llegar. Si las personas que lo crearon ya no son de confianza, la retirada se aplica en un intervalo de actualización fijo, no cuando caduca un certificado. El software se publica bajo la licencia Apache 2.0.
La versión habitual de esta conversación es una estimación. Alguien calcula qué versión probablemente se ejecutaba, en qué días, para qué personas, y la respuesta llega como un rango con una advertencia. Eso deja los hechos necesarios para delimitar una corrección como una reconstrucción, no como un registro. La corrección comienza con una lista que se puede comprobar.
Cada trabajo registra un código corto para el programa exacto que hizo el trabajo. No su nombre, no su número de versión, el programa en sí, de modo que dos compilaciones que comparten nombre tengan códigos diferentes. Si ese programa resulta defectuoso, el código es cómo se encuentra cada trabajo que tocó.
Cuando algo sale mal, un código identifica el programa.
El programa en sí se carga de nuevo cada vez desde su propio código, y el recibo lleva un código para ese código, de modo que lo que se ejecutó hoy es demostrablemente lo que se ejecutó el mes pasado. Nada se acumula entre medias para que nadie tenga que preocuparse después.
Una sala Selvedge nueva cuesta tan poco que una por trabajo es asequible, así que no hay que compartir nada. Si algo necesita realmente transferirse, se entrega a propósito y aparece en el registro como algo que se entregó.
Cada trabajo recibe una sala nueva. Nada de la anterior está en ella: sin notas sobrantes, sin trabajo a medias, sin memoria de quién lo pidió. Suena obvio y normalmente no es cierto, porque mantener una sala en pie es más barato que construir una nueva, así que la mayoría de los sistemas conservan la sala y la reutilizan.
para que el siguiente trabajo lo encuentre
Una sala nueva está lista para el siguiente trabajo.
No encontrar nada es una evidencia débil, porque depende de cuánto buscó alguien y cuánto tiempo tuvo antes de la reunión. Una lista de dos permisos es una evidencia sólida, porque no había nada más que encontrar.
Cambia lo que ocurre cuando haces una pregunta más tarde. En lugar de que alguien revise lo que hizo el programa e informe de que no encontró nada preocupante, la lista de permisos está ahí mismo, y es corta.
La mayoría de los registros te dicen lo que hizo un programa. Un recibo de Selvedge también dice lo que se le permitió hacer, que es algo distinto y más útil. Un programa al que nunca se le permitió acercarse a tus archivos no puede haber estado cerca de tus archivos, y eso queda registrado tanto si alguien estaba mirando en ese momento como si no.