<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
  <title>La bitácora de NoWayOS</title>
  <subtitle>Cómo se construye NoWayOS, y por qué: historias de la construcción de un Single Purpose OS, todas ciertas y la mayoría comprobables.</subtitle>
  <link href="https://www.nowayos.com/es/journal/feed.xml" rel="self"/>
  <link href="https://www.nowayos.com/es/journal"/>
  <id>https://www.nowayos.com/es/journal</id>
  <updated>2026-11-13T00:00:00Z</updated>
  <author><name>NoWayOS</name><uri>https://www.nowayos.com/es</uri></author>
  <entry>
    <title>Entra React, sale Rust</title>
    <link href="https://www.nowayos.com/es/journal/react-in-rust-out"/>
    <id>https://www.nowayos.com/es/journal/react-in-rust-out</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Los diseñadores conservan React. Los dispositivos reciben Rust nativo. Cómo el Screen Compiler convierte las pantallas en código durante la compilación, para que en el dispositivo no haya ningún navegador que atacar.</summary>
    <content type="html">&lt;p&gt;Las interfaces modernas se diseñan en React. Por eso muchísimos dispositivos dedicados, desde paneles de control hasta máquinas de billetes, incluyen un motor de navegador entero, uno de los programas más grandes y más atacados que existen, para dibujar unos pocos botones y las palabras «Touch Start to begin».&lt;/p&gt;
&lt;p&gt;Queríamos el flujo de diseño moderno sin el navegador. Así que construimos el &lt;strong&gt;Screen Compiler&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;escriba-la-pantalla-en-react&quot;&gt;Escriba la pantalla en React&lt;/h2&gt;
&lt;p&gt;Sus diseñadores y desarrolladores de front-end conservan sus herramientas: componentes, props, tokens de diseño, su editor. Escriben la pantalla en TSX (esta está abreviada a partir de una de las pantallas de prueba del Screen Compiler):&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-tsx&quot;&gt;&amp;lt;Column gap={SPACE_SM} padding={SPACE_LG}&amp;gt;
  &amp;lt;Text id=&amp;quot;title&amp;quot;&amp;gt;Welcome&amp;lt;/Text&amp;gt;
  &amp;lt;Text&amp;gt;Touch Start to begin.&amp;lt;/Text&amp;gt;
  &amp;lt;Spacer /&amp;gt;
  &amp;lt;Button id=&amp;quot;start&amp;quot; onPress={onStart}&amp;gt;Start&amp;lt;/Button&amp;gt;
&amp;lt;/Column&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;entregue-rust-sin-más&quot;&gt;Entregue Rust sin más&lt;/h2&gt;
&lt;p&gt;Durante la compilación, en su máquina o en CI, el Screen Compiler lo convierte en Rust para el runtime de interfaz de usuario de NoWayOS:&lt;/p&gt;
&lt;pre tabindex=&quot;0&quot;&gt;&lt;code class=&quot;language-rust&quot;&gt;let n1 = b.text(&amp;quot;Welcome&amp;quot;)?; // welcome.tsx:17:9 &amp;lt;Text&amp;gt;
let n2 = b.text(&amp;quot;Touch Start to begin.&amp;quot;)?; // welcome.tsx:18:9 &amp;lt;Text&amp;gt;
let n4 = b.spacer(None)?; // welcome.tsx:20:9 &amp;lt;Spacer&amp;gt;
let n5 = b.button(&amp;quot;Start&amp;quot;, actions::START)?; // welcome.tsx:21:9 &amp;lt;Button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cada línea remite al TSX del que procede. El dispositivo recibe ese código y nada más: ni motor de JavaScript, ni navegador, ni página web que atacar. El propio Screen Compiler nunca se entrega con el dispositivo.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;exacto-o-nada&quot;&gt;Exacto, o nada&lt;/h2&gt;
&lt;p&gt;Un conversor que adivina es un conversor del que no se puede fiar. El Screen Compiler convierte con exactitud su subconjunto declarado de TSX y rechaza todo lo demás indicando el archivo, la línea y la columna. Nunca aproxima. El Rust que escribe no tiene &lt;code&gt;unsafe&lt;/code&gt;, ni &lt;code&gt;unwrap&lt;/code&gt;, ni &lt;code&gt;panic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Después, el renderizador de NoWayOS dibuja cada pantalla convertida y la compara, píxel a píxel, con su imagen aprobada. Si se mueve un solo píxel, la compilación lo dice.&lt;/p&gt;
&lt;h2 id=&quot;en-qué-punto-está&quot;&gt;En qué punto está&lt;/h2&gt;
&lt;p&gt;El Screen Compiler está en desarrollo: su primer subconjunto está construido y el siguiente está en marcha. Es de código abierto bajo licencia MIT, en GitHub junto a NoWayOS. Si su equipo diseña en React y construye dispositivos que importan, &lt;a href=&quot;mailto:partners@nowayos.com&quot;&gt;nos gustaría saber de usted&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>El respaldo que no era una copia</title>
    <link href="https://www.nowayos.com/es/journal/the-backup-that-wasnt-a-copy"/>
    <id>https://www.nowayos.com/es/journal/the-backup-that-wasnt-a-copy</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>El Apolo 11 voló con dos sistemas de guiado construidos sobre principios distintos, y necesitó los dos. El Ariane 5 voló con dos idénticos, y un solo fallo detuvo ambos. Esa diferencia tiene nombre, y NoWayOS está construido para quedar del lado correcto.</summary>
    <content type="html">&lt;p&gt;Todo el mundo sabe que conviene tener un respaldo. Menos gente hace la incómoda pregunta siguiente: un respaldo ¿de &lt;em&gt;qué&lt;/em&gt;, exactamente?&lt;/p&gt;
&lt;h2 id=&quot;cinco-alarmas&quot;&gt;Cinco alarmas&lt;/h2&gt;
&lt;p&gt;El 20 de julio de 1969, el módulo lunar del Apolo 11 estaba a pocos minutos de la superficie de la Luna cuando su ordenador de guiado lanzó una alarma por la que la tripulación tuvo que preguntar al control de la misión. Luego otra. Cinco en total, en el último tramo del descenso.&lt;/p&gt;
&lt;p&gt;El ordenador estaba sobrecargado. Lo que hizo a continuación es una de las grandes obras de ingeniería de esta historia: cada vez, se reinició, soltó el trabajo que podía esperar y retomó de inmediato el que no podía. El alunizaje siguió adelante.&lt;/p&gt;
&lt;p&gt;Esa es la parte que todos cuentan. La parte que merece contarse después ocurrió al día siguiente.&lt;/p&gt;
&lt;h2 id=&quot;el-segundo-sistema&quot;&gt;El segundo sistema&lt;/h2&gt;
&lt;p&gt;El módulo lunar llevaba un segundo sistema de guiado, y no era una copia de repuesto del primero. Lo construyó otra empresa, sobre otro principio. El sistema principal mantenía la orientación con una plataforma que giraba libremente sobre cardanes. El segundo no tenía cardanes: sus sensores iban atornillados directamente a la nave, y calculaba dónde estaba arriba con aritmética.&lt;/p&gt;
&lt;p&gt;Estaba allí para llevar a la tripulación de vuelta a la órbita si el sistema principal llegaba a detenerse. Durante el alunizaje no hizo falta.&lt;/p&gt;
&lt;p&gt;Después, en el ascenso para acoplarse con el módulo de mando, una serie de maniobras llevó la plataforma del sistema principal a la única posición con la que una plataforma con cardanes no puede, y perdió su referencia de actitud. La tripulación pasó al segundo sistema para mantener estable la nave, y se acopló.&lt;/p&gt;
&lt;p&gt;El segundo sistema no podría haber fallado del mismo modo. No tenía esa pieza.&lt;/p&gt;
&lt;h2 id=&quot;dos-iguales&quot;&gt;Dos iguales&lt;/h2&gt;
&lt;p&gt;Ahora la otra historia. En 1996, el primer Ariane 5 despegó con dos unidades de referencia inercial que le decían hacia dónde apuntaba: una en funcionamiento y otra en reserva. Eran idénticas, hasta en el software.&lt;/p&gt;
&lt;p&gt;A los treinta y siete segundos, un número dentro de ese software se hizo demasiado grande para el espacio que tenía reservado. La unidad de reserva se detuvo. La unidad en funcionamiento, que ejecutaba el mismo código en el mismo vuelo, se detuvo también. El informe de la comisión de investigación es público, y es tajante: no había nada a lo que cambiar, porque el respaldo ya había seguido el mismo camino.&lt;/p&gt;
&lt;p&gt;Dos copias. Un fallo. No quedó nada.&lt;/p&gt;
&lt;h2 id=&quot;cómo-lo-llaman-los-ingenieros&quot;&gt;Cómo lo llaman los ingenieros&lt;/h2&gt;
&lt;p&gt;Un fallo que se lleva por delante un sistema y su repuesto a la vez es un &lt;em&gt;fallo de causa común&lt;/em&gt;. La defensa contra él es la &lt;em&gt;redundancia diversa&lt;/em&gt;: un segundo sistema construido de forma lo bastante distinta como para que lo que detiene al primero no esté en el segundo.&lt;/p&gt;
&lt;p&gt;El transbordador espacial volaba así. Cuatro de sus ordenadores de vuelo ejecutaban el software de una empresa; el quinto ejecutaba software escrito por separado por otra. Cuatro copias protegen de un ordenador que se avería. No protegen de un programa que está mal, porque los cuatro lo están ejecutando.&lt;/p&gt;
&lt;p&gt;No sale gratis. El primer lanzamiento del transbordador se canceló cuando el quinto ordenador y los otros cuatro no lograron ponerse de acuerdo en la hora. Dos diseños dan más trabajo que uno, y hay que hacer que se encuentren.&lt;/p&gt;
&lt;h2 id=&quot;dónde-entra-nowayos&quot;&gt;Dónde entra NoWayOS&lt;/h2&gt;
&lt;p&gt;La mayoría de los dispositivos dedicados ejecutan hoy uno de un número muy pequeño de sistemas operativos de uso general. Sus respaldos también. Cuando aparece un defecto en un motor de navegador, un escritorio o un núcleo de decenas de millones de líneas, o cuando sale una actualización defectuosa, aparece en todos los lugares donde se ejecuta ese software, el mismo día.&lt;/p&gt;
&lt;p&gt;Un dispositivo NoWayOS es distinto por dentro. Su núcleo es seL4, unas 10 000 líneas. Todo lo nuestro por encima de él está escrito en Rust. No tiene motor de navegador, ni escritorio, ni shell, de modo que un defecto en uno de ellos no está en él.&lt;/p&gt;
&lt;p&gt;Eso significa que NoWayOS no tiene que sustituir lo que usted ya utiliza para ser útil. Puede estar a su lado: una segunda manera de hacer una tarea esencial, construida sobre otro principio.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-no-hace&quot;&gt;Lo que no hace&lt;/h2&gt;
&lt;p&gt;La diversidad tiene límites, y preferimos que los conozca por nosotros.&lt;/p&gt;
&lt;p&gt;Le da a un dispositivo NoWayOS fallos distintos, no ninguno. No hace nada por lo que dos sistemas comparten: la alimentación, la red, los servicios que hay detrás, o un error en lo que la tarea debía ser. Y algunas de las piezas de código abierto de NoWayOS se usan también en otro software, por lo que cada imagen enumera cada componente que contiene, para que usted pueda leer qué tiene en común con el sistema de al lado.&lt;/p&gt;
&lt;p&gt;NoWayOS está en desarrollo, así que este es un papel para el que está diseñado, no uno que haya desempeñado ya. &lt;a href=&quot;/es/security#diverse-redundancy&quot;&gt;La página de seguridad dice en qué se apoya&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Los ingenieros del Apolo no llevaron un segundo sistema porque esperaran que el primero fallara. Lo llevaron porque no podían demostrar que no fallaría, y se aseguraron de que aquello que detuviera al primero no encontrara nada conocido en el segundo.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Atacamos nuestra propia compilación en cada cambio</title>
    <link href="https://www.nowayos.com/es/journal/we-attack-our-own-build"/>
    <id>https://www.nowayos.com/es/journal/we-attack-our-own-build</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Una prueba de seguridad que no puede fallar no demuestra nada. Por eso las pruebas de NoWayOS vienen con versiones hechas para fallar, y sus controles viven donde una pull request no puede alcanzarlos.</summary>
    <content type="html">&lt;p&gt;Esta es una pregunta incómoda para cualquier prueba de seguridad: ¿ha fallado alguna vez? Una prueba que nunca ha fallado puede estar pasando porque el sistema es sólido, o porque la prueba no ve nada en absoluto. Desde fuera, las dos cosas se ven exactamente igual.&lt;/p&gt;
&lt;p&gt;Por eso NoWayOS no se limita a probar su seguridad. La ataca, en cada cambio, y comprueba que los ataques se detienen.&lt;/p&gt;
&lt;h2 id=&quot;alargar-la-mano-hacia-lo-ajeno&quot;&gt;Alargar la mano hacia lo ajeno&lt;/h2&gt;
&lt;p&gt;Cada parte de un sistema NoWayOS se ejecuta en su propio compartimento sobre seL4, y solo tiene lo que se le concedió. Las pruebas de aislamiento envían sondas a propósito a través de esas fronteras. Una lee una dirección que nunca se le dio. Otra escribe en una página que solo puede leer. Otra, que tiene exactamente lo que tiene la interfaz de usuario, intenta escribir en la página de control de la pantalla, que la interfaz solo puede leer. Otra más, que tiene exactamente lo que tiene el cliente de red, intenta escribir en la memoria del controlador de red.&lt;/p&gt;
&lt;p&gt;seL4 debe detenerlas todas, y una parte ajena al asunto debe seguir funcionando, intacta.&lt;/p&gt;
&lt;h2 id=&quot;una-prueba-hecha-para-fallar&quot;&gt;Una prueba hecha para fallar&lt;/h2&gt;
&lt;p&gt;Luego viene el giro. Junto a la prueba de aislamiento de la interfaz de usuario hay una variante con una concesión ampliada a propósito: al sustituto de la interfaz se le da la página privada de la pantalla. La prueba de esa variante &lt;strong&gt;debe fallar&lt;/strong&gt;. Si alguna vez pasara, la prueba de aislamiento estaría ciega, y la compilación lo diría.&lt;/p&gt;
&lt;p&gt;La misma idea recorre el resto de las comprobaciones. Cada decodificador de mensajes entre partes tiene demostraciones acotadas, del verificador de modelos Kani, de que nunca entra en pánico, nunca se desborda y nunca lee fuera de los límites. Después, las comprobaciones por mutación rompen los decodificadores deliberadamente, para mostrar que las demostraciones lo notan. Cada analizador de entradas externas se somete a fuzzing con datos hostiles.&lt;/p&gt;
&lt;p&gt;Todo ello forma parte de &lt;code&gt;make ci&lt;/code&gt;, el control que debe superar cada cambio. Las pruebas de aislamiento se ejecutan siempre; una demostración o una sesión de fuzzing se repite cada vez que cambia el código que cubre.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;controles-fuera-de-alcance&quot;&gt;Controles fuera de alcance&lt;/h2&gt;
&lt;p&gt;Un control solo es tan fuerte como la mano que puede cambiarlo. Por eso las comprobaciones que debe superar cada contribución a NoWayOS están definidas en &lt;strong&gt;Defence Agent&lt;/strong&gt;, un repositorio público propio. Una pull request que toca un control se señala al mantenedor.&lt;/p&gt;
&lt;p&gt;Defence Agent se prueba a sí mismo del mismo modo: veinte pull requests trucadas, cada una con algo oculto que a un revisor se le podría escapar. Hay texto oculto de derecha a izquierda en un comentario, una letra cambiada por su doble cirílica, una dependencia obtenida directamente de un repositorio git, un workflow que ejecutaría código no fiable. Todas deben detectarse, mientras que tres cambios reales anteriores deben pasar.&lt;/p&gt;
&lt;h2 id=&quot;evidencias-no-adjetivos&quot;&gt;Evidencias, no adjetivos&lt;/h2&gt;
&lt;p&gt;Nada de esto hace que un dispositivo sea “inhackeable”. Nada lo hace, y nunca lo diremos. Lo que le da son evidencias: un registro de lo que se intentó, de lo que se detuvo, y el comando que lo muestra. Lea &lt;a href=&quot;/es/security#read-one-images-evidence&quot;&gt;las evidencias de una imagen real&lt;/a&gt;, o &lt;a href=&quot;https://github.com/NoWayOS/defence-agent&quot;&gt;los propios controles&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Lo que una demostración puede prometer</title>
    <link href="https://www.nowayos.com/es/journal/what-a-proof-can-promise"/>
    <id>https://www.nowayos.com/es/journal/what-a-proof-can-promise</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Una prueba de software ensaya los casos que a alguien se le ocurrieron. Una demostración los cubre todos. Qué dicen las demostraciones matemáticas de seL4, qué suponen y dónde está NoWayOS.</summary>
    <content type="html">&lt;p&gt;Por lo general se confía en el software porque se ha probado. Alguien pensó en las formas en que podía fallar, las ensayó y vio cómo respondía. Eso funciona bien, hasta que llega el caso en el que nadie pensó.&lt;/p&gt;
&lt;p&gt;Una demostración empieza por el otro extremo. No ensaya casos. Muestra, con matemáticas, que una afirmación se cumple en todos.&lt;/p&gt;
&lt;h2 id=&quot;todos-los-casos-no-solo-los-que-probamos&quot;&gt;Todos los casos, no solo los que probamos&lt;/h2&gt;
&lt;p&gt;Tomemos una promesa pequeña: este código nunca lee más allá del final de su búfer. Una prueba puede darle mil entradas, o mil millones, e informar de que ninguna lo hizo fallar. Una demostración dice algo de otra clase: no hay ninguna entrada que lo haga fallar. No se encontró ninguna, y no existe ninguna.&lt;/p&gt;
&lt;p&gt;El precio es el rigor. Una demostración necesita un enunciado exacto de lo que el código debe hacer, su especificación, y un argumento que conecte cada línea del código con él. En el software real, ese argumento es demasiado largo para que una persona lo revise a simple vista. Así que lo comprueba un ordenador.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;comprobada-por-máquina&quot;&gt;Comprobada por máquina&lt;/h2&gt;
&lt;p&gt;Eso significa «comprobada por máquina». La demostración se escribe completa, en un lenguaje que puede leer un programa llamado asistente de demostración, y el programa coteja cada paso con las reglas de la lógica. No se cansa en la página novecientos, y no se fía de la palabra de nadie.&lt;/p&gt;
&lt;p&gt;Las demostraciones de seL4 se comprueban así, en un asistente de demostración llamado Isabelle/HOL. Son públicas, y cualquiera puede volver a ejecutarlas.&lt;/p&gt;
&lt;h2 id=&quot;qué-dicen-las-demostraciones-de-sel4&quot;&gt;Qué dicen las demostraciones de seL4&lt;/h2&gt;
&lt;p&gt;seL4 es el núcleo sobre el que se ejecuta todo sistema NoWayOS: unas 10 000 líneas de código, y el único código con control total del dispositivo. Su tamaño es la clave. Un argumento sobre diez mil líneas se puede terminar. Uno sobre decenas de millones, todavía no.&lt;/p&gt;
&lt;p&gt;La seL4 Foundation &lt;a href=&quot;https://sel4.systems/Verification/proofs.html&quot;&gt;expone las demostraciones&lt;/a&gt; por capas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;El código hace lo que dice la especificación, y nada más.&lt;/strong&gt; De ahí se sigue una lista de cosas que el núcleo no puede hacer: desbordar un búfer, seguir un puntero nulo, perder memoria, dividir por cero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El programa que se ejecuta corresponde al código que se demostró.&lt;/strong&gt; Entre ambos hay un compilador, así que otra demostración comprueba su salida.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;El núcleo puede mantener separadas las partes de un sistema.&lt;/strong&gt; Una parte no puede modificar los datos de otra, ni leerlos, ni quitarle los recursos que necesita, a menos que se le haya concedido ese derecho.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un sistema puede arrancar en el estado para el que fue diseñado,&lt;/strong&gt; con exactamente los permisos que enumera su descripción.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No todas las capas están terminadas para todos los procesadores y todas las configuraciones. Eso importa, y volveremos a ello.&lt;/p&gt;
&lt;h2 id=&quot;lo-que-una-demostración-da-por-sentado&quot;&gt;Lo que una demostración da por sentado&lt;/h2&gt;
&lt;p&gt;Una demostración es exactamente tan amplia como su enunciado, y se apoya en sus supuestos. seL4 pone los suyos por escrito: que el hardware se comporta como dice su modelo, que unos pocos cientos de líneas del código de más bajo nivel son correctas, que el código que se ejecuta antes de que arranque el núcleo ha hecho su trabajo. La demostración de confidencialidad no cubre los tiempos de ejecución.&lt;/p&gt;
&lt;p&gt;No dice nada sobre si la especificación pide lo correcto, ni sobre el software que está por encima del núcleo. Un núcleo demostrado aislará fielmente un programa que tenga un error. El error sigue ahí. Solo que no puede alcanzar nada más.&lt;/p&gt;
&lt;p&gt;Eso no es una debilidad de las demostraciones. Es lo que las hace valiosas: dicen con precisión qué cubren, de modo que usted sabe con precisión qué queda.&lt;/p&gt;
&lt;h2 id=&quot;dónde-está-nowayos&quot;&gt;Dónde está NoWayOS&lt;/h2&gt;
&lt;p&gt;Esta es la posición, sin rodeos. NoWayOS se ejecuta sobre seL4, pero ninguna imagen de NoWayOS está hoy dentro de las demostraciones completadas de seL4. NoWayOS usa la configuración de criticidad mixta de seL4, cuyas demostraciones para nuestros procesadores están en curso. Y las demostraciones de seL4 nunca cubrieron el código propio de NoWayOS. Por eso no decimos que NoWayOS esté “verificado formalmente”, y no lo diremos.&lt;/p&gt;
&lt;p&gt;Cada imagen dice dónde está. Un archivo junto a ella enumera la configuración de su núcleo, opción por opción, frente a la que seL4 ha demostrado. &lt;a href=&quot;/es/security#what-sel4s-proofs-cover-and-what-they-dont&quot;&gt;Seguridad&lt;/a&gt; muestra uno real.&lt;/p&gt;
&lt;h2 id=&quot;demostraciones-más-pequeñas-las-nuestras&quot;&gt;Demostraciones más pequeñas, las nuestras&lt;/h2&gt;
&lt;p&gt;El código de NoWayOS obtiene su garantía por otro camino: Rust, aislamiento, revisión, pruebas y demostraciones de un tipo más modesto.&lt;/p&gt;
&lt;p&gt;Cada decodificador de los mensajes que pasan entre las partes de un sistema tiene &lt;strong&gt;demostraciones acotadas&lt;/strong&gt;, hechas con un verificador de modelos llamado Kani. Una demostración acotada cubre toda entrada hasta un tamaño indicado, aquí el registro más largo que acepta un decodificador. Dentro de esa cota es una demostración de verdad: ninguna entrada hace que el decodificador entre en pánico, se desborde o lea fuera de los límites. Más allá de la cota no dice nada, y por eso la cota es la entrada más larga que existe.&lt;/p&gt;
&lt;p&gt;Después rompemos los decodificadores a propósito, para asegurarnos de que las demostraciones lo notan. Una demostración que no puede fallar no es mejor que &lt;a href=&quot;/es/journal/we-attack-our-own-build&quot;&gt;una prueba que no puede fallar&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;su-tamaño-real&quot;&gt;Su tamaño real&lt;/h2&gt;
&lt;p&gt;Una demostración no hace que nada sea “inhackeable”. Hace que una afirmación sea cierta, en todos los casos, bajo supuestos que usted puede leer. Conozca la afirmación y los supuestos, y sabrá lo que tiene.&lt;/p&gt;
&lt;p&gt;Por eso NoWayOS se construye sobre el núcleo que las tiene, y por eso le dice, imagen por imagen, hasta dónde llegan.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Por qué un dispositivo NoWayOS no tiene shell</title>
    <link href="https://www.nowayos.com/es/journal/why-a-nowayos-device-has-no-shell"/>
    <id>https://www.nowayos.com/es/journal/why-a-nowayos-device-has-no-shell</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>La mayoría de los dispositivos dedicados son ordenadores de uso general con una tarea encima y todo lo demás todavía debajo. Nosotros tomamos el otro camino: construir cada dispositivo solo con lo que su tarea necesita, y dejar fuera el resto.</summary>
    <content type="html">&lt;p&gt;La mayoría de los ataques a un dispositivo dedicado no van contra la tarea que realiza. Van contra el resto del ordenador sobre el que se ejecuta: el shell que se dejó para mantenimiento, el servicio de acceso remoto que nadie apagó, el navegador que hay detrás de la aplicación, el escritorio que queda a un fallo de distancia.&lt;/p&gt;
&lt;p&gt;Ese «resto del ordenador» está en todas partes. La pasarela que saca las lecturas de una planta de agua, el terminal de la sala de control de una red eléctrica, los dispositivos de los que depende un hospital, el panel en el costado de una máquina, la pantalla en el vestíbulo de una estación: muchos ejecutan un sistema operativo de uso general con una tarea encima, y todo lo demás sigue ahí debajo, desactivado mediante ajustes. El modo quiosco es la versión más sencilla. Cada intrusión es alguien que encuentra el ajuste que se pasó por alto.&lt;/p&gt;
&lt;h2 id=&quot;mejor-dejarlo-fuera&quot;&gt;Mejor dejarlo fuera&lt;/h2&gt;
&lt;p&gt;NoWayOS empieza por el otro extremo. Una imagen de NoWayOS contiene la aplicación del dispositivo, los controladores que usa esa aplicación y el micronúcleo seL4. Esa es toda la lista.&lt;/p&gt;
&lt;p&gt;No hay shell en el que caer, porque nunca se incluyó ninguno. No hay inicio de sesión remoto cuya contraseña adivinar. No hay escritorio al que escapar. No hay motor de navegador esperando una página maliciosa. No se puede configurar mal un ajuste de un software que no está.&lt;/p&gt;
&lt;p&gt;Todo eso se refiere al sistema operativo. La aplicación que va encima es otra cosa: puede hacer que sus usuarios inicien sesión, e iniciar sesión en otros sistemas, siempre que su tarea lo requiera. Lo que no tiene debajo es un sistema operativo en el que alguien pueda iniciar sesión.&lt;/p&gt;
&lt;p&gt;A eso lo llamamos un &lt;strong&gt;Single Purpose OS&lt;/strong&gt;: una máquina sin nada más que hacer.&lt;/p&gt;
&lt;h2 id=&quot;y-lo-que-hay-está-sellado&quot;&gt;Y lo que hay, está sellado&lt;/h2&gt;
&lt;p&gt;Dejar cosas fuera es la mitad. Cada parte que queda (la red, la pantalla, la entrada, la aplicación) se ejecuta en un compartimento propio, un &lt;em&gt;dominio de protección&lt;/em&gt; en términos de seL4, y solo alcanza lo que se le concedió. El controlador de red mueve paquetes. El controlador de pantalla dibuja. La aplicación habla con cada uno mediante mensajes de tamaño fijo.&lt;/p&gt;
&lt;p&gt;Cada concesión está escrita en un archivo, un hecho por línea, y la compilación falla si el sistema y el archivo no coinciden. Está construido para que un fallo en una parte se quede en esa parte.&lt;/p&gt;
&lt;h2 id=&quot;pero-cómo-se-arregla-sin-un-shell&quot;&gt;«Pero ¿cómo se arregla sin un shell?»&lt;/h2&gt;
&lt;p&gt;Es lo primero que preguntan los ingenieros, y con razón. En el sistema operativo de un dispositivo NoWayOS no se inicia sesión: no tiene cuentas, así que no hay nadie como quien iniciarla. Se construye una imagen nueva y se sustituye la anterior. Hoy eso significa construirla y cargarla en la placa; las actualizaciones firmadas, comprobadas por el dispositivo y capaces de volver atrás de forma segura, están diseñadas y en camino.&lt;/p&gt;
&lt;p&gt;A cambio se obtiene un dispositivo que arranca directamente en su única tarea, con mucho menos que parchear y mucho menos que atacar. Para los sistemas de los que depende un país, ese intercambio es justo lo que se busca.&lt;/p&gt;
&lt;h2 id=&quot;véalo-usted-mismo&quot;&gt;Véalo usted mismo&lt;/h2&gt;
&lt;p&gt;Las evidencias de una imagen real de NoWayOS, su archivo de concesiones, su lista de materiales y su registro de configuración de seL4, están en nuestra &lt;a href=&quot;/es/security#read-one-images-evidence&quot;&gt;página de seguridad&lt;/a&gt;. Sin registro, sin scripts. Solo los archivos.&lt;/p&gt;
</content>
  </entry>
</feed>
