<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
  <title>O Diário do NoWayOS</title>
  <subtitle>Como o NoWayOS é construído, e por quê: histórias da construção de um Single Purpose OS, todas verdadeiras e quase todas verificáveis.</subtitle>
  <link href="https://www.nowayos.com/pt/journal/feed.xml" rel="self"/>
  <link href="https://www.nowayos.com/pt/journal"/>
  <id>https://www.nowayos.com/pt/journal</id>
  <updated>2026-11-13T00:00:00Z</updated>
  <author><name>NoWayOS</name><uri>https://www.nowayos.com/pt</uri></author>
  <entry>
    <title>Entra React, sai Rust</title>
    <link href="https://www.nowayos.com/pt/journal/react-in-rust-out"/>
    <id>https://www.nowayos.com/pt/journal/react-in-rust-out</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Os designers continuam com React. Os dispositivos recebem Rust nativo. Como o Screen Compiler transforma telas em código em tempo de build, para que não haja navegador no dispositivo para atacar.</summary>
    <content type="html">&lt;p&gt;As interfaces modernas são projetadas em React. Por isso, muitíssimos dispositivos dedicados, de painéis de controle a máquinas de bilhetes, levam um motor de navegador inteiro, um dos maiores e mais atacados programas que existem, para desenhar alguns botões e as palavras “Touch Start to begin”.&lt;/p&gt;
&lt;p&gt;Queríamos o fluxo de design moderno sem o navegador. Então construímos o &lt;strong&gt;Screen Compiler&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;escreva-a-tela-em-react&quot;&gt;Escreva a tela em React&lt;/h2&gt;
&lt;p&gt;Os seus designers e desenvolvedores de front-end continuam com as suas ferramentas: componentes, props, design tokens, o editor deles. Eles escrevem a tela em TSX (esta foi abreviada de uma das telas de teste do 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-puro-e-simples&quot;&gt;Entregue Rust puro e simples&lt;/h2&gt;
&lt;p&gt;Em tempo de build, na sua máquina ou na CI, o Screen Compiler transforma isso em Rust para o runtime de interface do 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 linha aponta de volta para o TSX de onde veio. O dispositivo recebe esse código e mais nada: sem motor de JavaScript, sem navegador, sem página web para atacar. O próprio Screen Compiler nunca vai para o dispositivo.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;exato-ou-nada&quot;&gt;Exato, ou nada&lt;/h2&gt;
&lt;p&gt;Um conversor que adivinha é um conversor em que não se pode confiar. O Screen Compiler converte com exatidão o seu subconjunto declarado de TSX e recusa todo o resto, informando o arquivo, a linha e a coluna. Ele nunca aproxima. O Rust que ele escreve não tem &lt;code&gt;unsafe&lt;/code&gt;, nem &lt;code&gt;unwrap&lt;/code&gt;, nem &lt;code&gt;panic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Depois, cada tela convertida é desenhada pelo renderizador do NoWayOS e comparada, pixel a pixel, com a sua imagem aprovada. Se um único pixel se mover, o build avisa.&lt;/p&gt;
&lt;h2 id=&quot;em-que-pé-está&quot;&gt;Em que pé está&lt;/h2&gt;
&lt;p&gt;O Screen Compiler está em desenvolvimento: o seu primeiro subconjunto está construído e o próximo está em andamento. Ele é open source sob a licença MIT, no GitHub ao lado do NoWayOS. Se a sua equipe projeta em React e constrói dispositivos que importam, &lt;a href=&quot;mailto:partners@nowayos.com&quot;&gt;gostaríamos de ouvir você&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>O backup que não era uma cópia</title>
    <link href="https://www.nowayos.com/pt/journal/the-backup-that-wasnt-a-copy"/>
    <id>https://www.nowayos.com/pt/journal/the-backup-that-wasnt-a-copy</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>A Apollo 11 voou com dois sistemas de guiagem construídos sobre princípios diferentes, e precisou dos dois. O Ariane 5 voou com dois idênticos, e uma única falha parou ambos. Essa diferença tem nome, e o NoWayOS é construído para ficar do lado certo dela.</summary>
    <content type="html">&lt;p&gt;Todo mundo sabe que é bom ter um backup. Menos gente faz a pergunta incômoda que vem depois: um backup &lt;em&gt;de quê&lt;/em&gt;, exatamente?&lt;/p&gt;
&lt;h2 id=&quot;cinco-alarmes&quot;&gt;Cinco alarmes&lt;/h2&gt;
&lt;p&gt;Em 20 de julho de 1969, o módulo lunar da Apollo 11 estava a poucos minutos da superfície da Lua quando o seu computador de guiagem disparou um alarme sobre o qual a tripulação precisou perguntar ao controle da missão. Depois outro. Cinco ao todo, no trecho final da descida.&lt;/p&gt;
&lt;p&gt;O computador estava sobrecarregado. O que ele fez em seguida é uma das grandes obras de engenharia dessa história: a cada vez, ele reiniciou, largou o trabalho que podia esperar e retomou na hora o trabalho que não podia. O pouso continuou.&lt;/p&gt;
&lt;p&gt;Essa é a parte que todos contam. A parte que vale contar em seguida aconteceu no dia seguinte.&lt;/p&gt;
&lt;h2 id=&quot;o-segundo-sistema&quot;&gt;O segundo sistema&lt;/h2&gt;
&lt;p&gt;O módulo lunar levava um segundo sistema de guiagem, e ele não era uma cópia reserva do primeiro. Outra empresa o construiu, sobre outro princípio. O sistema principal mantinha a orientação com uma plataforma que girava livremente sobre cardãs. O segundo não tinha cardãs: os seus sensores eram parafusados diretamente na nave, e ele descobria onde ficava o alto fazendo contas.&lt;/p&gt;
&lt;p&gt;Ele estava lá para levar a tripulação de volta à órbita se o sistema principal algum dia parasse. Durante o pouso, não foi chamado.&lt;/p&gt;
&lt;p&gt;Então, na subida para acoplar ao módulo de comando, uma sequência de manobras levou a plataforma do sistema principal à única posição com que uma plataforma com cardãs não consegue lidar, e ele perdeu a sua referência de atitude. A tripulação passou para o segundo sistema para manter a nave estável, e acoplou.&lt;/p&gt;
&lt;p&gt;O segundo sistema não poderia ter falhado do mesmo jeito. Ele não tinha a peça.&lt;/p&gt;
&lt;h2 id=&quot;dois-iguais&quot;&gt;Dois iguais&lt;/h2&gt;
&lt;p&gt;Agora a outra história. Em 1996, o primeiro Ariane 5 decolou com duas unidades de referência inercial para lhe dizer para onde estava apontando: uma em operação, outra de prontidão. Eram idênticas, até no software.&lt;/p&gt;
&lt;p&gt;Aos trinta e sete segundos, um número dentro desse software ficou grande demais para o espaço reservado a ele. A unidade de prontidão parou. A unidade em operação, rodando o mesmo código no mesmo voo, parou também. O relatório da comissão de inquérito é público, e é direto: não havia para o que mudar, porque o backup já tinha ido pelo mesmo caminho.&lt;/p&gt;
&lt;p&gt;Duas cópias. Uma falha. Nada sobrou.&lt;/p&gt;
&lt;h2 id=&quot;como-os-engenheiros-chamam-isso&quot;&gt;Como os engenheiros chamam isso&lt;/h2&gt;
&lt;p&gt;Uma falha que derruba um sistema e o seu reserva juntos é uma &lt;em&gt;falha de causa comum&lt;/em&gt;. A defesa contra ela é a &lt;em&gt;redundância diversa&lt;/em&gt;: um segundo sistema construído de forma diferente o bastante para que aquilo que para o primeiro não esteja no segundo.&lt;/p&gt;
&lt;p&gt;O ônibus espacial voava assim. Quatro dos seus computadores de voo rodavam o software de uma empresa; o quinto rodava software escrito separadamente por outra. Quatro cópias protegem você de um computador que quebra. Não protegem de um programa que está errado, porque os quatro o estão rodando.&lt;/p&gt;
&lt;p&gt;Isso não sai de graça. O primeiro lançamento do ônibus espacial foi cancelado quando o quinto computador e os outros quatro não conseguiram concordar sobre a hora. Dois projetos dão mais trabalho do que um, e é preciso fazer com que se encontrem.&lt;/p&gt;
&lt;h2 id=&quot;onde-o-nowayos-entra&quot;&gt;Onde o NoWayOS entra&lt;/h2&gt;
&lt;p&gt;A maioria dos dispositivos dedicados roda hoje um de um número muito pequeno de sistemas operacionais de uso geral. Os backups deles também. Quando aparece um defeito em um motor de navegador, em uma área de trabalho ou em um kernel de dezenas de milhões de linhas, ou quando sai uma atualização ruim, ele aparece em todo lugar em que esse software roda, no mesmo dia.&lt;/p&gt;
&lt;p&gt;Um dispositivo NoWayOS é diferente por dentro. O seu kernel é o seL4, cerca de 10.000 linhas. Tudo o que é nosso acima dele é escrito em Rust. Ele não tem motor de navegador, área de trabalho nem shell, então um defeito em um deles não está nele.&lt;/p&gt;
&lt;p&gt;Isso quer dizer que o NoWayOS não precisa substituir o que você já opera para ser útil. Ele pode ficar ao lado: uma segunda forma de fazer uma tarefa essencial, construída sobre outro princípio.&lt;/p&gt;
&lt;h2 id=&quot;o-que-ele-não-faz&quot;&gt;O que ele não faz&lt;/h2&gt;
&lt;p&gt;A diversidade tem limites, e preferimos que você os ouça de nós.&lt;/p&gt;
&lt;p&gt;Ela dá a um dispositivo NoWayOS falhas diferentes, não nenhuma. Ela não faz nada pelo que dois sistemas compartilham: a energia, a rede, os serviços por trás deles, ou um erro sobre o que a tarefa deveria ser. E algumas das partes de código aberto do NoWayOS também são usadas em outros softwares, e é por isso que cada imagem lista cada componente que contém, para que você possa ler o que ela tem em comum com o sistema ao lado.&lt;/p&gt;
&lt;p&gt;O NoWayOS está em desenvolvimento, então este é um papel para o qual ele é projetado, não um papel que já tenha cumprido. &lt;a href=&quot;/pt/security#diverse-redundancy&quot;&gt;A página de segurança diz em que ele se apoia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Os engenheiros da Apollo não levaram um segundo sistema porque esperavam que o primeiro falhasse. Levaram porque não podiam provar que ele não falharia, e cuidaram para que aquilo que parasse o primeiro não encontrasse nada de familiar no segundo.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Atacamos o nosso próprio build a cada mudança</title>
    <link href="https://www.nowayos.com/pt/journal/we-attack-our-own-build"/>
    <id>https://www.nowayos.com/pt/journal/we-attack-our-own-build</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Um teste de segurança que não pode falhar não prova nada. Por isso os testes do NoWayOS vêm com versões feitas para falhar, e os seus controles ficam onde um pull request não alcança.</summary>
    <content type="html">&lt;p&gt;Eis uma pergunta incômoda para qualquer teste de segurança: ele já falhou alguma vez? Um teste que nunca falhou pode estar passando porque o sistema é sólido, ou porque o teste não enxerga nada. De fora, as duas coisas são exatamente iguais.&lt;/p&gt;
&lt;p&gt;Por isso o NoWayOS não se limita a testar a sua segurança. Ele a ataca, a cada mudança, e confere se os ataques são barrados.&lt;/p&gt;
&lt;h2 id=&quot;estender-a-mão-para-o-que-não-é-seu&quot;&gt;Estender a mão para o que não é seu&lt;/h2&gt;
&lt;p&gt;Cada parte de um sistema NoWayOS roda em seu próprio compartimento sobre o seL4, com apenas o que lhe foi concedido. Os testes de isolamento enviam sondas através dessas fronteiras de propósito. Uma lê um endereço que nunca recebeu. Uma escreve em uma página que só pode ler. Uma, que tem exatamente o que a interface do usuário tem, tenta escrever na página de controle do vídeo, que a interface só pode ler. Outra, que tem exatamente o que o cliente de rede tem, tenta escrever na memória do driver de rede.&lt;/p&gt;
&lt;p&gt;O seL4 precisa barrar todas elas, e uma parte que não tem nada a ver com isso precisa continuar rodando, intacta.&lt;/p&gt;
&lt;h2 id=&quot;um-teste-feito-para-falhar&quot;&gt;Um teste feito para falhar&lt;/h2&gt;
&lt;p&gt;Então vem a virada. Ao lado do teste de isolamento da interface do usuário fica uma variante com uma concessão ampliada de propósito: o substituto da interface recebe a página privada do vídeo. O teste dessa variante &lt;strong&gt;precisa falhar&lt;/strong&gt;. Se algum dia ele passasse, o teste de isolamento estaria cego, e o build diria isso.&lt;/p&gt;
&lt;p&gt;A mesma ideia percorre as demais verificações. Cada decodificador de mensagens entre partes tem provas limitadas, do verificador de modelos Kani, de que nunca entra em pânico, nunca estoura e nunca lê fora dos limites. Verificações por mutação então quebram os decodificadores deliberadamente, para mostrar que as provas percebem. Cada analisador de entradas externas passa por fuzzing com dados hostis.&lt;/p&gt;
&lt;p&gt;Tudo isso faz parte do &lt;code&gt;make ci&lt;/code&gt;, o controle pelo qual toda mudança precisa passar. Os testes de isolamento rodam sempre; uma prova ou uma rodada de fuzzing é repetida sempre que muda o código que ela cobre.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;controles-fora-de-alcance&quot;&gt;Controles fora de alcance&lt;/h2&gt;
&lt;p&gt;Um controle é tão forte quanto a mão que pode alterá-lo. Por isso as verificações pelas quais toda contribuição ao NoWayOS precisa passar estão definidas no &lt;strong&gt;Defence Agent&lt;/strong&gt;, um repositório público próprio. Um pull request que toca em um controle é sinalizado para o mantenedor.&lt;/p&gt;
&lt;p&gt;O Defence Agent testa a si mesmo do mesmo jeito: vinte pull requests armados, cada um escondendo algo que um revisor poderia deixar passar. Há texto oculto da direita para a esquerda em um comentário, uma letra trocada pela sua sósia cirílica, uma dependência buscada direto de um repositório git, um workflow que executaria código não confiável. Cada um precisa ser pego, enquanto três mudanças reais do passado precisam passar.&lt;/p&gt;
&lt;h2 id=&quot;evidências-não-adjetivos&quot;&gt;Evidências, não adjetivos&lt;/h2&gt;
&lt;p&gt;Nada disso torna um dispositivo “inhackeável”. Nada torna, e nunca diremos isso. O que você recebe são evidências: um registro do que foi tentado, do que foi barrado, e o comando que mostra isso. Leia &lt;a href=&quot;/pt/security#read-one-images-evidence&quot;&gt;as evidências de uma imagem real&lt;/a&gt;, ou &lt;a href=&quot;https://github.com/NoWayOS/defence-agent&quot;&gt;os próprios controles&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>O que uma prova pode prometer</title>
    <link href="https://www.nowayos.com/pt/journal/what-a-proof-can-promise"/>
    <id>https://www.nowayos.com/pt/journal/what-a-proof-can-promise</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Um teste experimenta os casos em que alguém pensou. Uma prova cobre todos. O que dizem as provas matemáticas do seL4, o que elas presumem e onde o NoWayOS está.</summary>
    <content type="html">&lt;p&gt;Em geral, confia-se em um software porque ele foi testado. Alguém pensou nas formas como ele poderia falhar, experimentou cada uma e viu como ele se saía. Isso funciona bem, até chegar o caso em que ninguém pensou.&lt;/p&gt;
&lt;p&gt;Uma prova começa pela outra ponta. Ela não experimenta casos. Ela mostra, com matemática, que uma afirmação vale para todos.&lt;/p&gt;
&lt;h2 id=&quot;todos-os-casos-não-só-os-que-testamos&quot;&gt;Todos os casos, não só os que testamos&lt;/h2&gt;
&lt;p&gt;Tome uma promessa pequena: este código nunca lê além do fim do seu buffer. Um teste pode lhe dar mil entradas, ou um bilhão, e relatar que nenhuma o fez falhar. Uma prova diz algo de outra natureza: não há entrada que o faça falhar. Nenhuma foi encontrada, e nenhuma existe.&lt;/p&gt;
&lt;p&gt;O preço é o rigor. Uma prova precisa de um enunciado exato do que o código deve fazer, a sua especificação, e de um argumento que ligue cada linha do código a ele. Em software de verdade, esse argumento é longo demais para uma pessoa conferir a olho. Então um computador confere.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;verificada-por-máquina&quot;&gt;Verificada por máquina&lt;/h2&gt;
&lt;p&gt;É isso que “verificada por máquina” quer dizer. A prova é escrita por inteiro, em uma linguagem que um programa chamado assistente de provas consegue ler, e o programa confere cada passo com as regras da lógica. Ele não se cansa na página novecentos, e não aceita a palavra de ninguém.&lt;/p&gt;
&lt;p&gt;As provas do seL4 são verificadas assim, em um assistente de provas chamado Isabelle/HOL. Elas são públicas, e qualquer pessoa pode executá-las de novo.&lt;/p&gt;
&lt;h2 id=&quot;o-que-dizem-as-provas-do-sel4&quot;&gt;O que dizem as provas do seL4&lt;/h2&gt;
&lt;p&gt;O seL4 é o kernel sobre o qual todo sistema NoWayOS roda: cerca de 10.000 linhas de código, e o único código com controle total do dispositivo. O tamanho é o ponto. Um argumento sobre dez mil linhas pode ser concluído. Um argumento sobre dezenas de milhões, ainda não.&lt;/p&gt;
&lt;p&gt;A seL4 Foundation &lt;a href=&quot;https://sel4.systems/Verification/proofs.html&quot;&gt;apresenta as provas&lt;/a&gt; em camadas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;O código faz o que a especificação diz, e nada mais.&lt;/strong&gt; Disso decorre uma lista de coisas que o kernel não pode fazer: estourar um buffer, seguir um ponteiro nulo, vazar memória, dividir por zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O programa que roda corresponde ao código que foi provado.&lt;/strong&gt; Há um compilador entre os dois, então outra prova confere a saída dele.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O kernel consegue manter separadas as partes de um sistema.&lt;/strong&gt; Uma parte não pode alterar os dados de outra, nem lê-los, nem tomar os recursos de que ela precisa, a menos que tenha recebido esse direito.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Um sistema pode iniciar no estado para o qual foi projetado,&lt;/strong&gt; com exatamente as concessões que a sua descrição lista.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nem toda camada está concluída para todo processador e toda configuração. Isso importa, e voltaremos ao assunto.&lt;/p&gt;
&lt;h2 id=&quot;o-que-uma-prova-toma-como-dado&quot;&gt;O que uma prova toma como dado&lt;/h2&gt;
&lt;p&gt;Uma prova tem exatamente o alcance do seu enunciado, e se apoia nas suas premissas. O seL4 registra as dele por escrito: que o hardware se comporta como o seu modelo diz, que algumas centenas de linhas do código de mais baixo nível estão certas, que o código que roda antes de o kernel iniciar fez o seu trabalho. A prova de confidencialidade não cobre os tempos de execução.&lt;/p&gt;
&lt;p&gt;Ela não diz nada sobre se a especificação pede a coisa certa, nem sobre o software acima do kernel. Um kernel provado vai isolar fielmente um programa que tem um defeito. O defeito continua lá. Ele só não consegue alcançar mais nada.&lt;/p&gt;
&lt;p&gt;Isso não é uma fraqueza das provas. É o que faz delas algo que vale a pena ter: elas dizem com precisão o que cobrem, e assim você sabe com precisão o que sobra.&lt;/p&gt;
&lt;h2 id=&quot;onde-o-nowayos-está&quot;&gt;Onde o NoWayOS está&lt;/h2&gt;
&lt;p&gt;Esta é a posição, sem rodeios. O NoWayOS roda sobre o seL4, mas nenhuma imagem do NoWayOS está hoje dentro das provas concluídas do seL4. O NoWayOS usa a configuração de criticidade mista do seL4, cujas provas para os nossos processadores estão em andamento. E as provas do seL4 nunca cobriram o código do próprio NoWayOS. Por isso não chamamos o NoWayOS de “formalmente verificado”, e não vamos chamar.&lt;/p&gt;
&lt;p&gt;Cada imagem diz onde está. Um arquivo ao lado dela lista a configuração do seu kernel, opção por opção, ao lado daquela que o seL4 provou. A página &lt;a href=&quot;/pt/security#what-sel4s-proofs-cover-and-what-they-dont&quot;&gt;Segurança&lt;/a&gt; mostra um de verdade.&lt;/p&gt;
&lt;h2 id=&quot;provas-menores-as-nossas&quot;&gt;Provas menores, as nossas&lt;/h2&gt;
&lt;p&gt;O código do NoWayOS obtém a sua garantia por outro caminho: Rust, isolamento, revisão, testes e provas de um tipo mais modesto.&lt;/p&gt;
&lt;p&gt;Cada decodificador das mensagens que passam entre as partes de um sistema tem &lt;strong&gt;provas limitadas&lt;/strong&gt;, feitas com um verificador de modelos chamado Kani. Uma prova limitada cobre toda entrada até um tamanho declarado, aqui o registro mais longo que um decodificador aceita. Dentro desse limite, ela é uma prova de verdade: nenhuma entrada faz o decodificador entrar em pânico, estourar ou ler fora dos limites. Além do limite, ela não diz nada, e é por isso que o limite é a entrada mais longa que existe.&lt;/p&gt;
&lt;p&gt;Depois quebramos os decodificadores de propósito, para ter certeza de que as provas percebem. Uma prova que não pode falhar não é melhor do que &lt;a href=&quot;/pt/journal/we-attack-our-own-build&quot;&gt;um teste que não pode&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;o-tamanho-real-disso&quot;&gt;O tamanho real disso&lt;/h2&gt;
&lt;p&gt;Uma prova não torna nada “inhackeável”. Ela torna uma afirmação verdadeira, em todos os casos, sob premissas que você pode ler. Conheça a afirmação e as premissas, e você sabe o que tem.&lt;/p&gt;
&lt;p&gt;É por isso que o NoWayOS é construído sobre o kernel que tem essas provas, e por isso ele diz a você, imagem por imagem, até onde elas vão.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Por que um dispositivo NoWayOS não tem shell</title>
    <link href="https://www.nowayos.com/pt/journal/why-a-nowayos-device-has-no-shell"/>
    <id>https://www.nowayos.com/pt/journal/why-a-nowayos-device-has-no-shell</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>A maioria dos dispositivos dedicados é um computador de uso geral com uma tarefa por cima e todo o resto ainda por baixo. Nós fomos pelo outro caminho: construir cada dispositivo só com o que a sua tarefa precisa, e deixar o resto de fora.</summary>
    <content type="html">&lt;p&gt;A maioria dos ataques a um dispositivo dedicado não mira a tarefa que ele executa. Mira o resto do computador em que ele roda: o shell deixado ali para manutenção, o serviço de acesso remoto que ninguém desligou, o navegador por trás da aplicação, a área de trabalho a uma falha de distância.&lt;/p&gt;
&lt;p&gt;Esse “resto do computador” está em toda parte. O gateway que leva as leituras para fora de uma estação de tratamento de água, o terminal na sala de controle de uma rede elétrica, os dispositivos de que um hospital depende, o painel na lateral de uma máquina, a tela no saguão de uma estação: muitos rodam um sistema operacional de uso geral com uma tarefa por cima, e todo o resto continua lá embaixo, desligado por configurações. O modo quiosque é a versão mais simples. Cada invasão é alguém encontrando a configuração que passou despercebida.&lt;/p&gt;
&lt;h2 id=&quot;deixar-de-fora-em-vez-disso&quot;&gt;Deixar de fora, em vez disso&lt;/h2&gt;
&lt;p&gt;O NoWayOS começa pela outra ponta. Uma imagem do NoWayOS contém a aplicação do dispositivo, os drivers que essa aplicação usa e o microkernel seL4. Essa é a lista inteira.&lt;/p&gt;
&lt;p&gt;Não há shell em que cair, porque nenhum shell jamais foi incluído. Não há login remoto com senha para adivinhar. Não há área de trabalho para onde escapar. Não há motor de navegador à espera de uma página maliciosa. Não dá para configurar errado um software que não está lá.&lt;/p&gt;
&lt;p&gt;Tudo isso diz respeito ao sistema operacional. A aplicação que roda por cima é outra história: ela pode fazer os seus usuários entrarem com login, e pode fazer login em outros sistemas, sempre que a sua tarefa pedir. O que ela não tem por baixo é um sistema operacional em que alguém possa fazer login.&lt;/p&gt;
&lt;p&gt;Chamamos isso de &lt;strong&gt;Single Purpose OS&lt;/strong&gt;: um computador sem mais nada para fazer.&lt;/p&gt;
&lt;h2 id=&quot;e-o-que-está-lá-fica-isolado&quot;&gt;E o que está lá fica isolado&lt;/h2&gt;
&lt;p&gt;Deixar coisas de fora é metade da história. Cada parte que permanece (a rede, a tela, a entrada, a aplicação) roda em um compartimento próprio, um &lt;em&gt;domínio de proteção&lt;/em&gt; nos termos do seL4, e alcança apenas o que lhe foi concedido. O driver de rede move pacotes. O driver de vídeo desenha. A aplicação fala com cada um por mensagens de tamanho fixo.&lt;/p&gt;
&lt;p&gt;Cada concessão está registrada em um arquivo, um fato por linha, e o build falha se o sistema e o arquivo divergirem. Tudo é construído para que uma falha em uma parte fique nessa parte.&lt;/p&gt;
&lt;h2 id=&quot;mas-como-se-conserta-isso-sem-um-shell&quot;&gt;“Mas como se conserta isso sem um shell?”&lt;/h2&gt;
&lt;p&gt;É a primeira pergunta dos engenheiros, e é justa. Ninguém faz login no sistema operacional de um dispositivo NoWayOS: ele não tem contas, então não há usuário com quem entrar. Você constrói uma nova imagem e substitui a antiga. Hoje isso significa construí-la e carregá-la na placa; atualizações assinadas, verificadas pelo dispositivo e capazes de voltar atrás com segurança, estão projetadas e a caminho.&lt;/p&gt;
&lt;p&gt;Em troca, você tem um dispositivo que inicia direto na sua única tarefa, com muito menos para corrigir e muito menos para atacar. Para os sistemas de que um país depende, essa troca é exatamente o objetivo.&lt;/p&gt;
&lt;h2 id=&quot;veja-você-mesmo&quot;&gt;Veja você mesmo&lt;/h2&gt;
&lt;p&gt;As evidências de uma imagem real do NoWayOS, o seu arquivo de concessões, a sua lista de materiais e o seu registro de configuração do seL4, estão na nossa &lt;a href=&quot;/pt/security#read-one-images-evidence&quot;&gt;página de segurança&lt;/a&gt;. Sem cadastro, sem script. Só os arquivos.&lt;/p&gt;
</content>
  </entry>
</feed>
