<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
  <title>Il Journal di NoWayOS</title>
  <subtitle>Come si costruisce NoWayOS, e perché: storie dalla costruzione di un Single Purpose OS, tutte vere e quasi tutte verificabili.</subtitle>
  <link href="https://www.nowayos.com/it/journal/feed.xml" rel="self"/>
  <link href="https://www.nowayos.com/it/journal"/>
  <id>https://www.nowayos.com/it/journal</id>
  <updated>2026-11-13T00:00:00Z</updated>
  <author><name>NoWayOS</name><uri>https://www.nowayos.com/it</uri></author>
  <entry>
    <title>Entra React, esce Rust</title>
    <link href="https://www.nowayos.com/it/journal/react-in-rust-out"/>
    <id>https://www.nowayos.com/it/journal/react-in-rust-out</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>I designer tengono React. I dispositivi ricevono Rust nativo. Come il Screen Compiler trasforma le schermate in codice in fase di build, così sul dispositivo non c'è alcun browser da attaccare.</summary>
    <content type="html">&lt;p&gt;Le interfacce moderne si progettano in React. Così moltissimi dispositivi dedicati, dai pannelli di controllo alle biglietterie automatiche, si portano dietro un intero motore di browser, uno dei programmi più grandi e più attaccati che esistano, per disegnare qualche pulsante e le parole “Touch Start to begin”.&lt;/p&gt;
&lt;p&gt;Volevamo il flusso di design moderno senza il browser. Così abbiamo costruito il &lt;strong&gt;Screen Compiler&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;scriva-la-schermata-in-react&quot;&gt;Scriva la schermata in React&lt;/h2&gt;
&lt;p&gt;I Suoi designer e sviluppatori front-end tengono i loro strumenti: componenti, props, design token, il loro editor. Scrivono la schermata in TSX (questa è abbreviata da una delle schermate di test 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;consegni-semplice-rust&quot;&gt;Consegni semplice Rust&lt;/h2&gt;
&lt;p&gt;In fase di build, sulla Sua macchina o in CI, il Screen Compiler lo trasforma in Rust per il runtime dell&amp;#39;interfaccia utente di 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;Ogni riga rimanda al TSX da cui proviene. Il dispositivo riceve quel codice e nient&amp;#39;altro: nessun motore JavaScript, nessun browser, nessuna pagina web da attaccare. Il Screen Compiler stesso non viene mai consegnato.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;esatto-o-niente&quot;&gt;Esatto, o niente&lt;/h2&gt;
&lt;p&gt;Un convertitore che tira a indovinare è un convertitore di cui non ci si può fidare. Il Screen Compiler converte con esattezza il suo sottoinsieme dichiarato di TSX e rifiuta tutto il resto indicando file, riga e colonna. Non approssima mai. Il Rust che scrive non ha &lt;code&gt;unsafe&lt;/code&gt;, né &lt;code&gt;unwrap&lt;/code&gt;, né &lt;code&gt;panic&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Poi ogni schermata convertita viene disegnata dal renderer di NoWayOS e confrontata, pixel per pixel, con la sua immagine approvata. Se si sposta un solo pixel, la build lo dice.&lt;/p&gt;
&lt;h2 id=&quot;a-che-punto-è&quot;&gt;A che punto è&lt;/h2&gt;
&lt;p&gt;Il Screen Compiler è in sviluppo: il suo primo sottoinsieme è costruito e il successivo è in corso. È open source con licenza MIT, su GitHub accanto a NoWayOS. Se il Suo team progetta in React e costruisce dispositivi che contano, &lt;a href=&quot;mailto:partners@nowayos.com&quot;&gt;ci farebbe piacere sentirLa&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Il backup che non era una copia</title>
    <link href="https://www.nowayos.com/it/journal/the-backup-that-wasnt-a-copy"/>
    <id>https://www.nowayos.com/it/journal/the-backup-that-wasnt-a-copy</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Apollo 11 volò con due sistemi di guida costruiti su principi diversi, ed ebbe bisogno di entrambi. Ariane 5 volò con due sistemi identici, e un solo guasto li fermò entrambi. Quella differenza ha un nome, e NoWayOS è costruito per stare dal lato giusto.</summary>
    <content type="html">&lt;p&gt;Tutti sanno che bisogna avere un backup. Meno persone fanno la scomoda domanda successiva: un backup &lt;em&gt;di che cosa&lt;/em&gt;, esattamente?&lt;/p&gt;
&lt;h2 id=&quot;cinque-allarmi&quot;&gt;Cinque allarmi&lt;/h2&gt;
&lt;p&gt;Il 20 luglio 1969 il modulo lunare di Apollo 11 era a pochi minuti dalla superficie della Luna quando il suo computer di guida lanciò un allarme su cui l&amp;#39;equipaggio dovette chiedere al controllo missione. Poi un altro. Cinque in tutto, nell&amp;#39;ultimo tratto della discesa.&lt;/p&gt;
&lt;p&gt;Il computer era sovraccarico. Ciò che fece subito dopo è uno dei grandi capolavori di ingegneria di questa storia: ogni volta si riavviò, lasciò cadere il lavoro che poteva aspettare e riprese subito quello che non poteva. L&amp;#39;allunaggio proseguì.&lt;/p&gt;
&lt;p&gt;Questa è la parte che raccontano tutti. La parte che vale la pena raccontare dopo accadde il giorno seguente.&lt;/p&gt;
&lt;h2 id=&quot;il-secondo-sistema&quot;&gt;Il secondo sistema&lt;/h2&gt;
&lt;p&gt;Il modulo lunare portava un secondo sistema di guida, e non era una copia di riserva del primo. Lo costruì un&amp;#39;altra azienda, su un altro principio. Il sistema principale manteneva l&amp;#39;orientamento con una piattaforma che ruotava liberamente su sospensioni cardaniche. Il secondo non aveva alcuna sospensione cardanica: i suoi sensori erano imbullonati direttamente al veicolo, e stabiliva dove fosse l&amp;#39;alto con l&amp;#39;aritmetica.&lt;/p&gt;
&lt;p&gt;Era lì per riportare l&amp;#39;equipaggio in orbita se il sistema principale si fosse mai fermato. Durante l&amp;#39;allunaggio non fu chiamato in causa.&lt;/p&gt;
&lt;p&gt;Poi, durante la risalita per agganciarsi al modulo di comando, una serie di manovre portò la piattaforma del sistema principale nell&amp;#39;unica posizione che una piattaforma cardanica non sa gestire, e questo perse il suo riferimento di assetto. L&amp;#39;equipaggio passò al secondo sistema per tenere stabile il veicolo, e si agganciò.&lt;/p&gt;
&lt;p&gt;Il secondo sistema non avrebbe potuto guastarsi allo stesso modo. Non aveva quel pezzo.&lt;/p&gt;
&lt;h2 id=&quot;due-uguali&quot;&gt;Due uguali&lt;/h2&gt;
&lt;p&gt;Ora l&amp;#39;altra storia. Nel 1996 il primo Ariane 5 decollò con due unità di riferimento inerziale a dirgli da che parte stava puntando: una in funzione, una di riserva. Erano identiche, fino al software.&lt;/p&gt;
&lt;p&gt;Dopo trentasette secondi, un numero dentro quel software divenne troppo grande per lo spazio che gli era riservato. L&amp;#39;unità di riserva si fermò. L&amp;#39;unità in funzione, che eseguiva lo stesso codice sullo stesso volo, si fermò anch&amp;#39;essa. Il rapporto della commissione d&amp;#39;inchiesta è pubblico, ed è netto: non c&amp;#39;era nulla a cui passare, perché il backup aveva già fatto la stessa fine.&lt;/p&gt;
&lt;p&gt;Due copie. Un guasto. Niente più.&lt;/p&gt;
&lt;h2 id=&quot;come-lo-chiamano-gli-ingegneri&quot;&gt;Come lo chiamano gli ingegneri&lt;/h2&gt;
&lt;p&gt;Un guasto che mette fuori uso insieme un sistema e la sua riserva è un &lt;em&gt;guasto di causa comune&lt;/em&gt;. La difesa è la &lt;em&gt;ridondanza diversificata&lt;/em&gt;: un secondo sistema costruito in modo abbastanza diverso che ciò che ferma il primo non si trovi nel secondo.&lt;/p&gt;
&lt;p&gt;Lo Space Shuttle volava così. Quattro dei suoi computer di volo eseguivano il software di un&amp;#39;azienda; il quinto eseguiva software scritto separatamente da un&amp;#39;altra. Quattro copie proteggono da un computer che si rompe. Non proteggono da un programma sbagliato, perché lo stanno eseguendo tutti e quattro.&lt;/p&gt;
&lt;p&gt;Non è gratis. Il primo lancio dello Shuttle fu annullato quando il quinto computer e gli altri quattro non riuscirono a mettersi d&amp;#39;accordo sull&amp;#39;ora. Due progetti costano più lavoro di uno, e bisogna farli incontrare.&lt;/p&gt;
&lt;h2 id=&quot;dove-entra-in-gioco-nowayos&quot;&gt;Dove entra in gioco NoWayOS&lt;/h2&gt;
&lt;p&gt;La maggior parte dei dispositivi dedicati esegue oggi uno fra pochissimi sistemi operativi generici. E così i loro backup. Quando salta fuori un difetto in un motore di browser, in un desktop o in un kernel da decine di milioni di righe, o quando esce un aggiornamento difettoso, salta fuori ovunque giri quel software, lo stesso giorno.&lt;/p&gt;
&lt;p&gt;Un dispositivo NoWayOS è diverso al suo interno. Il suo kernel è seL4, circa 10.000 righe. Tutto ciò che è nostro al di sopra è scritto in Rust. Non ha motore di browser, né desktop, né shell, quindi un difetto in uno di questi non c&amp;#39;è.&lt;/p&gt;
&lt;p&gt;Questo significa che NoWayOS non deve sostituire ciò che Lei già usa per essere utile. Può stargli accanto: un secondo modo di svolgere un compito essenziale, costruito su un altro principio.&lt;/p&gt;
&lt;h2 id=&quot;che-cosa-non-fa&quot;&gt;Che cosa non fa&lt;/h2&gt;
&lt;p&gt;La diversità ha dei limiti, e preferiamo che li senta da noi.&lt;/p&gt;
&lt;p&gt;Dà a un dispositivo NoWayOS guasti diversi, non nessun guasto. Non fa nulla per ciò che due sistemi condividono: l&amp;#39;alimentazione, la rete, i servizi alle loro spalle, o un errore su ciò che il compito doveva essere. E alcune delle parti open source di NoWayOS sono usate anche in altro software, ed è per questo che ogni immagine elenca ogni componente che contiene, così che Lei possa leggere che cosa ha in comune con il sistema accanto.&lt;/p&gt;
&lt;p&gt;NoWayOS è in sviluppo, quindi questo è un ruolo per cui è progettato, non uno che abbia già ricoperto. &lt;a href=&quot;/it/security#diverse-redundancy&quot;&gt;La pagina Sicurezza dice su che cosa poggia&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Gli ingegneri di Apollo non portarono un secondo sistema perché si aspettavano che il primo si guastasse. Lo portarono perché non potevano dimostrare che non si sarebbe guastato, e fecero in modo che ciò che avesse fermato il primo non trovasse nulla di familiare nel secondo.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Attacchiamo la nostra build a ogni modifica</title>
    <link href="https://www.nowayos.com/it/journal/we-attack-our-own-build"/>
    <id>https://www.nowayos.com/it/journal/we-attack-our-own-build</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Un test di sicurezza che non può fallire non dimostra nulla. Per questo i test di NoWayOS arrivano con versioni costruite per fallire, e i suoi controlli stanno dove una pull request non può arrivare.</summary>
    <content type="html">&lt;p&gt;Ecco una domanda scomoda per qualsiasi test di sicurezza: è mai fallito? Un test che non è mai fallito potrebbe passare perché il sistema è solido, oppure perché il test non vede proprio nulla. Da fuori, le due cose sono identiche.&lt;/p&gt;
&lt;p&gt;Perciò NoWayOS non si limita a testare la propria sicurezza. La attacca, a ogni modifica, e verifica che gli attacchi vengano fermati.&lt;/p&gt;
&lt;h2 id=&quot;allungare-la-mano-su-ciò-che-non-è-proprio&quot;&gt;Allungare la mano su ciò che non è proprio&lt;/h2&gt;
&lt;p&gt;Ogni parte di un sistema NoWayOS gira nel proprio compartimento su seL4, con soltanto ciò che le è stato concesso. I test di isolamento mandano apposta delle sonde oltre quei confini. Una legge un indirizzo che non le è mai stato dato. Una scrive su una pagina che può soltanto leggere. Una, che ha esattamente ciò che ha l&amp;#39;interfaccia utente, prova a scrivere sulla pagina di controllo del display, che l&amp;#39;interfaccia può soltanto leggere. Un&amp;#39;altra, che ha esattamente ciò che ha il client di rete, prova a scrivere nella memoria del driver di rete.&lt;/p&gt;
&lt;p&gt;seL4 deve fermarle tutte, e una parte estranea deve continuare a girare, intatta.&lt;/p&gt;
&lt;h2 id=&quot;un-test-costruito-per-fallire&quot;&gt;Un test costruito per fallire&lt;/h2&gt;
&lt;p&gt;Poi arriva il colpo di scena. Accanto al test di isolamento dell&amp;#39;interfaccia utente c&amp;#39;è una variante con una concessione allargata apposta: alla controfigura dell&amp;#39;interfaccia viene data la pagina privata del display. Il test di quella variante &lt;strong&gt;deve fallire&lt;/strong&gt;. Se mai passasse, il test di isolamento sarebbe cieco, e la build lo direbbe.&lt;/p&gt;
&lt;p&gt;La stessa idea attraversa il resto dei controlli. Ogni decoder dei messaggi tra le parti ha dimostrazioni limitate, dal model checker Kani, che non va mai in panic, in overflow né legge fuori dai limiti. I controlli a mutazione poi rompono deliberatamente i decoder, per mostrare che le dimostrazioni se ne accorgono. Ogni parser di input esterno è sottoposto a fuzzing con dati ostili.&lt;/p&gt;
&lt;p&gt;Tutto questo fa parte di &lt;code&gt;make ci&lt;/code&gt;, il controllo che ogni modifica deve superare. I test di isolamento girano ogni volta; una dimostrazione o una sessione di fuzzing viene ripetuta ogni volta che cambia il codice che copre.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;controlli-fuori-portata&quot;&gt;Controlli fuori portata&lt;/h2&gt;
&lt;p&gt;Un controllo è forte solo quanto la mano che può modificarlo. Perciò i controlli che ogni contributo a NoWayOS deve superare sono definiti in &lt;strong&gt;Defence Agent&lt;/strong&gt;, un repository pubblico a sé. Una pull request che tocca un controllo viene segnalata al maintainer.&lt;/p&gt;
&lt;p&gt;Defence Agent mette alla prova se stesso allo stesso modo: venti pull request truccate, ciascuna con dentro qualcosa che a un revisore potrebbe sfuggire. C&amp;#39;è testo nascosto da destra a sinistra in un commento, una lettera scambiata con la sua sosia cirillica, una dipendenza prelevata direttamente da un repository git, un workflow che eseguirebbe codice non attendibile. Ognuna deve essere scoperta, mentre tre vere modifiche del passato devono passare.&lt;/p&gt;
&lt;h2 id=&quot;prove-non-aggettivi&quot;&gt;Prove, non aggettivi&lt;/h2&gt;
&lt;p&gt;Niente di tutto questo rende un dispositivo “inattaccabile”. Niente lo fa, e non lo diremo mai. Ciò che Le dà sono prove: una traccia di ciò che è stato tentato, di ciò che è stato fermato, e il comando che lo mostra. Legga &lt;a href=&quot;/it/security#read-one-images-evidence&quot;&gt;le prove di un&amp;#39;immagine reale&lt;/a&gt;, oppure &lt;a href=&quot;https://github.com/NoWayOS/defence-agent&quot;&gt;i controlli stessi&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Cosa può promettere una dimostrazione</title>
    <link href="https://www.nowayos.com/it/journal/what-a-proof-can-promise"/>
    <id>https://www.nowayos.com/it/journal/what-a-proof-can-promise</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Un test prova i casi a cui qualcuno ha pensato. Una dimostrazione li copre tutti. Cosa dicono le dimostrazioni matematiche di seL4, cosa assumono e dove si trova NoWayOS.</summary>
    <content type="html">&lt;p&gt;Di solito ci si fida del software perché è stato testato. Qualcuno ha pensato ai modi in cui poteva andare storto, li ha provati e lo ha visto cavarsela. Funziona bene, fino al caso a cui nessuno aveva pensato.&lt;/p&gt;
&lt;p&gt;Una dimostrazione parte dall&amp;#39;altro capo. Non prova dei casi. Mostra, con la matematica, che un&amp;#39;affermazione vale per tutti.&lt;/p&gt;
&lt;h2 id=&quot;tutti-i-casi-non-solo-quelli-provati&quot;&gt;Tutti i casi, non solo quelli provati&lt;/h2&gt;
&lt;p&gt;Prendiamo una piccola promessa: questo codice non legge mai oltre la fine del suo buffer. Un test può dargli mille input, o un miliardo, e riferire che nessuno lo ha fatto sbagliare. Una dimostrazione dice una cosa di tipo diverso: non c&amp;#39;è input che lo faccia sbagliare. Non ne è stato trovato nessuno, e non ne esiste nessuno.&lt;/p&gt;
&lt;p&gt;Il prezzo è il rigore. Una dimostrazione richiede un enunciato esatto di ciò che il codice deve fare, la sua specifica, e un argomento che colleghi a essa ogni riga del codice. Per il software reale quell&amp;#39;argomento è troppo lungo perché una persona lo controlli a occhio. Così lo controlla un computer.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;verificata-a-macchina&quot;&gt;Verificata a macchina&lt;/h2&gt;
&lt;p&gt;Ecco cosa significa “verificata a macchina”. La dimostrazione viene scritta per intero, in un linguaggio che un programma chiamato assistente di dimostrazione sa leggere, e il programma controlla ogni passaggio con le regole della logica. Non si stanca a pagina novecento, e non si fida della parola di nessuno.&lt;/p&gt;
&lt;p&gt;Le dimostrazioni di seL4 sono verificate così, in un assistente di dimostrazione chiamato Isabelle/HOL. Sono pubbliche, e chiunque può rieseguirle.&lt;/p&gt;
&lt;h2 id=&quot;cosa-dicono-le-dimostrazioni-di-sel4&quot;&gt;Cosa dicono le dimostrazioni di seL4&lt;/h2&gt;
&lt;p&gt;seL4 è il kernel su cui gira ogni sistema NoWayOS: circa 10.000 righe di codice, e l&amp;#39;unico codice con il controllo totale del dispositivo. La dimensione è il punto. Un argomento su diecimila righe si può portare a termine. Uno su decine di milioni, non ancora.&lt;/p&gt;
&lt;p&gt;La seL4 Foundation &lt;a href=&quot;https://sel4.systems/Verification/proofs.html&quot;&gt;espone le dimostrazioni&lt;/a&gt; a strati:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Il codice fa ciò che dice la specifica, e nulla di più.&lt;/strong&gt; Ne segue un elenco di cose che il kernel non può fare: uscire da un buffer, seguire un puntatore nullo, perdere memoria, dividere per zero.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il programma che gira corrisponde al codice che è stato dimostrato.&lt;/strong&gt; In mezzo c&amp;#39;è un compilatore, perciò un&amp;#39;ulteriore dimostrazione ne controlla l&amp;#39;output.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Il kernel può tenere separate le parti di un sistema.&lt;/strong&gt; Una parte non può modificare i dati di un&amp;#39;altra, né leggerli, né toglierle le risorse di cui ha bisogno, a meno che non le sia stato concesso il diritto di farlo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un sistema può avviarsi nello stato per cui è stato progettato,&lt;/strong&gt; con esattamente le concessioni che la sua descrizione elenca.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Non tutti gli strati sono completi per ogni processore e ogni configurazione. È importante, e ci torneremo.&lt;/p&gt;
&lt;h2 id=&quot;cosa-dà-per-scontato-una-dimostrazione&quot;&gt;Cosa dà per scontato una dimostrazione&lt;/h2&gt;
&lt;p&gt;Una dimostrazione è ampia esattamente quanto il suo enunciato, e poggia sulle sue assunzioni. seL4 mette le proprie per iscritto: che l&amp;#39;hardware si comporti come dice il suo modello, che poche centinaia di righe del codice di più basso livello siano corrette, che il codice eseguito prima dell&amp;#39;avvio del kernel abbia fatto il suo lavoro. La dimostrazione di riservatezza non copre i tempi di esecuzione.&lt;/p&gt;
&lt;p&gt;Non dice nulla sul fatto che la specifica chieda la cosa giusta, e nulla sul software sopra il kernel. Un kernel dimostrato isolerà fedelmente un programma che contiene un bug. Il bug è ancora lì. Semplicemente non può raggiungere nient&amp;#39;altro.&lt;/p&gt;
&lt;p&gt;Non è una debolezza delle dimostrazioni. È ciò che le rende preziose: dicono con precisione cosa coprono, e così Lei sa con precisione cosa resta.&lt;/p&gt;
&lt;h2 id=&quot;dove-si-trova-nowayos&quot;&gt;Dove si trova NoWayOS&lt;/h2&gt;
&lt;p&gt;Ecco la posizione, senza giri di parole. NoWayOS gira su seL4, ma oggi nessuna immagine NoWayOS rientra nelle dimostrazioni completate di seL4. NoWayOS usa la configurazione a criticità mista di seL4, le cui dimostrazioni per i nostri processori sono in corso. E le dimostrazioni di seL4 non hanno mai coperto il codice proprio di NoWayOS. Perciò non diciamo che NoWayOS è “verificato formalmente”, e non lo diremo.&lt;/p&gt;
&lt;p&gt;Ogni immagine dice a che punto è. Un file accanto a essa elenca la configurazione del suo kernel, opzione per opzione, a fronte di quella che seL4 ha dimostrato. &lt;a href=&quot;/it/security#what-sel4s-proofs-cover-and-what-they-dont&quot;&gt;Sicurezza&lt;/a&gt; ne mostra uno vero.&lt;/p&gt;
&lt;h2 id=&quot;dimostrazioni-più-piccole-le-nostre&quot;&gt;Dimostrazioni più piccole, le nostre&lt;/h2&gt;
&lt;p&gt;Il codice di NoWayOS ottiene la sua garanzia per un&amp;#39;altra via: Rust, isolamento, revisione, test e dimostrazioni di un tipo più modesto.&lt;/p&gt;
&lt;p&gt;Ogni decoder dei messaggi che passano tra le parti di un sistema ha &lt;strong&gt;dimostrazioni limitate&lt;/strong&gt;, realizzate con un model checker chiamato Kani. Una dimostrazione limitata copre ogni input fino a una dimensione dichiarata, qui il record più lungo che un decoder accetta. Entro quel limite è una dimostrazione vera: nessun input manda il decoder in panic, in overflow o a leggere fuori dai limiti. Oltre il limite non dice nulla, ed è per questo che il limite è l&amp;#39;input più lungo che esista.&lt;/p&gt;
&lt;p&gt;Poi rompiamo i decoder di proposito, per assicurarci che le dimostrazioni se ne accorgano. Una dimostrazione che non può fallire non vale più di &lt;a href=&quot;/it/journal/we-attack-our-own-build&quot;&gt;un test che non può fallire&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;la-sua-misura-onesta&quot;&gt;La sua misura onesta&lt;/h2&gt;
&lt;p&gt;Una dimostrazione non rende nulla “inattaccabile”. Rende vera un&amp;#39;affermazione, in tutti i casi, sotto assunzioni che Lei può leggere. Conosca l&amp;#39;affermazione e le assunzioni, e saprà che cosa ha in mano.&lt;/p&gt;
&lt;p&gt;Ecco perché NoWayOS è costruito sul kernel che le ha, e perché Le dice, immagine per immagine, fin dove arrivano.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Perché un dispositivo NoWayOS non ha una shell</title>
    <link href="https://www.nowayos.com/it/journal/why-a-nowayos-device-has-no-shell"/>
    <id>https://www.nowayos.com/it/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 maggior parte dei dispositivi dedicati è un computer generico con un compito sopra e tutto il resto ancora sotto. Noi abbiamo preso l'altra strada: costruire ogni dispositivo solo con ciò che serve al suo compito, e lasciare fuori il resto.</summary>
    <content type="html">&lt;p&gt;La maggior parte degli attacchi a un dispositivo dedicato non punta al compito che svolge. Punta al resto del computer su cui gira: la shell lasciata lì per la manutenzione, il servizio di accesso remoto che nessuno ha spento, il browser dietro l&amp;#39;applicazione, il desktop a un crash di distanza.&lt;/p&gt;
&lt;p&gt;Quel “resto del computer” è ovunque. Il gateway che porta fuori le letture di un impianto idrico, il terminale nella sala di controllo di una rete elettrica, i dispositivi su cui conta un ospedale, il pannello sul fianco di una macchina, lo schermo nell&amp;#39;atrio di una stazione: molti eseguono un sistema operativo generico con un compito sopra, e tutto il resto ancora lì sotto, disattivato da impostazioni. La modalità kiosk è la versione più semplice. Ogni compromissione è qualcuno che trova l&amp;#39;unica impostazione sfuggita.&lt;/p&gt;
&lt;h2 id=&quot;lasciarlo-fuori-invece&quot;&gt;Lasciarlo fuori, invece&lt;/h2&gt;
&lt;p&gt;NoWayOS parte dall&amp;#39;altro capo. Un&amp;#39;immagine NoWayOS contiene l&amp;#39;applicazione del dispositivo, i driver che quell&amp;#39;applicazione usa e il microkernel seL4. L&amp;#39;elenco è tutto qui.&lt;/p&gt;
&lt;p&gt;Non c&amp;#39;è una shell in cui finire, perché nessuna shell è mai stata inclusa. Nessun login remoto di cui indovinare la password. Nessun desktop verso cui evadere. Nessun motore di browser in attesa di una pagina malevola. Non si può sbagliare l&amp;#39;impostazione di un software che non c&amp;#39;è.&lt;/p&gt;
&lt;p&gt;Tutto questo riguarda il sistema operativo. L&amp;#39;applicazione che ci gira sopra è un&amp;#39;altra cosa: può far accedere i propri utenti, e accedere ad altri sistemi, ogni volta che il suo compito lo richiede. Semplicemente, sotto non ha un sistema operativo a cui qualcuno possa accedere.&lt;/p&gt;
&lt;p&gt;Lo chiamiamo &lt;strong&gt;Single Purpose OS&lt;/strong&gt;: un computer che non ha altro da fare.&lt;/p&gt;
&lt;h2 id=&quot;e-ciò-che-cè-è-sigillato&quot;&gt;E ciò che c&amp;#39;è è sigillato&lt;/h2&gt;
&lt;p&gt;Lasciare fuori è metà del lavoro. Ogni parte che resta (la rete, lo schermo, l&amp;#39;input, l&amp;#39;applicazione) gira in un compartimento tutto suo, un &lt;em&gt;dominio di protezione&lt;/em&gt; nei termini di seL4, e raggiunge solo ciò che le è stato concesso. Il driver di rete sposta pacchetti. Il driver del display disegna. L&amp;#39;applicazione parla con ciascuno tramite messaggi di dimensione fissa.&lt;/p&gt;
&lt;p&gt;Ogni concessione è messa per iscritto in un file, un fatto per riga, e la build fallisce se il sistema e il file non concordano. È costruito perché un guasto in una parte resti in quella parte.&lt;/p&gt;
&lt;h2 id=&quot;ma-come-lo-si-ripara-senza-una-shell&quot;&gt;“Ma come lo si ripara senza una shell?”&lt;/h2&gt;
&lt;p&gt;È la prima domanda degli ingegneri, ed è giusta. Al sistema operativo di un dispositivo NoWayOS non si accede: non ha account, quindi non c&amp;#39;è nessuno con cui accedere. Si costruisce una nuova immagine e si sostituisce la vecchia. Oggi questo significa costruirla e caricarla sulla scheda; gli aggiornamenti firmati, verificati dal dispositivo e capaci di tornare indietro in sicurezza, sono progettati e in arrivo.&lt;/p&gt;
&lt;p&gt;In cambio si ottiene un dispositivo che si avvia direttamente nel suo unico compito, con molto meno da correggere e molto meno da attaccare. Per i sistemi su cui si regge un paese, quello scambio è esattamente il punto.&lt;/p&gt;
&lt;h2 id=&quot;lo-veda-di-persona&quot;&gt;Lo veda di persona&lt;/h2&gt;
&lt;p&gt;Le prove di un&amp;#39;immagine NoWayOS reale, il suo file delle concessioni, la sua distinta dei materiali e il suo registro di configurazione seL4, sono nella nostra &lt;a href=&quot;/it/security#read-one-images-evidence&quot;&gt;pagina Sicurezza&lt;/a&gt;. Nessuna registrazione, nessuno script. Solo i file.&lt;/p&gt;
</content>
  </entry>
</feed>
