<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
  <title>Le Journal de NoWayOS</title>
  <subtitle>Comment NoWayOS est construit, et pourquoi : des récits de la construction d’un Single Purpose OS, tous vrais et pour la plupart vérifiables.</subtitle>
  <link href="https://www.nowayos.com/fr/journal/feed.xml" rel="self"/>
  <link href="https://www.nowayos.com/fr/journal"/>
  <id>https://www.nowayos.com/fr/journal</id>
  <updated>2026-11-13T00:00:00Z</updated>
  <author><name>NoWayOS</name><uri>https://www.nowayos.com/fr</uri></author>
  <entry>
    <title>React en entrée, Rust en sortie</title>
    <link href="https://www.nowayos.com/fr/journal/react-in-rust-out"/>
    <id>https://www.nowayos.com/fr/journal/react-in-rust-out</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Les designers gardent React. Les appareils reçoivent du Rust natif. Comment le Screen Compiler transforme les écrans en code à la compilation, pour qu’il n’y ait aucun navigateur à attaquer sur l’appareil.</summary>
    <content type="html">&lt;p&gt;Les interfaces modernes sont conçues en React. Si bien qu’un très grand nombre d’appareils dédiés, du pupitre de commande au distributeur de billets, embarquent un moteur de navigateur entier, l’un des programmes les plus volumineux et les plus attaqués qui soient, pour dessiner quelques boutons et les mots « Touch Start to begin ».&lt;/p&gt;
&lt;p&gt;Nous voulions la méthode de design moderne sans le navigateur. Nous avons donc construit le &lt;strong&gt;Screen Compiler&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&quot;écrivez-lécran-en-react&quot;&gt;Écrivez l’écran en React&lt;/h2&gt;
&lt;p&gt;Vos designers et vos développeurs front-end gardent leurs outils : composants, props, design tokens, leur éditeur. Ils écrivent l’écran en TSX (celui-ci est abrégé à partir de l’un des écrans de test du 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;livrez-du-rust-tout-simple&quot;&gt;Livrez du Rust tout simple&lt;/h2&gt;
&lt;p&gt;À la compilation, sur votre machine ou en CI, le Screen Compiler en fait du Rust pour le runtime d’interface 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;Chaque ligne renvoie au TSX dont elle vient. L’appareil reçoit ce code et rien d’autre : pas de moteur JavaScript, pas de navigateur, pas de page web à attaquer. Le Screen Compiler lui-même n’est jamais embarqué.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;exact-ou-rien&quot;&gt;Exact, ou rien&lt;/h2&gt;
&lt;p&gt;Un convertisseur qui devine est un convertisseur auquel on ne peut pas se fier. Le Screen Compiler convertit exactement son sous-ensemble déclaré de TSX, et refuse tout le reste en donnant le fichier, la ligne et la colonne. Il n’approxime jamais. Le Rust qu’il écrit ne contient ni &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;Ensuite, chaque écran converti est dessiné par le moteur de rendu de NoWayOS et comparé, pixel par pixel, à son image approuvée. Si un seul pixel bouge, la compilation le dit.&lt;/p&gt;
&lt;h2 id=&quot;où-il-en-est&quot;&gt;Où il en est&lt;/h2&gt;
&lt;p&gt;Le Screen Compiler est en développement : son premier sous-ensemble est construit et le suivant est en cours. Il est open source sous licence MIT, sur GitHub à côté de NoWayOS. Si votre équipe conçoit en React et construit des appareils qui comptent, &lt;a href=&quot;mailto:partners@nowayos.com&quot;&gt;nous serions heureux de vous lire&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Le secours qui n’était pas une copie</title>
    <link href="https://www.nowayos.com/fr/journal/the-backup-that-wasnt-a-copy"/>
    <id>https://www.nowayos.com/fr/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 emportait deux systèmes de guidage bâtis sur des principes différents, et a eu besoin des deux. Ariane 5 en emportait deux identiques, et une seule faute a arrêté les deux. Cette différence porte un nom, et NoWayOS est construit pour se trouver du bon côté.</summary>
    <content type="html">&lt;p&gt;Tout le monde sait qu’il faut un système de secours. Moins nombreux sont ceux qui posent la question gênante qui suit : un secours de &lt;em&gt;quoi&lt;/em&gt;, au juste ?&lt;/p&gt;
&lt;h2 id=&quot;cinq-alarmes&quot;&gt;Cinq alarmes&lt;/h2&gt;
&lt;p&gt;Le 20 juillet 1969, le module lunaire d’Apollo 11 était à quelques minutes de la surface de la Lune quand son ordinateur de guidage a déclenché une alarme sur laquelle l’équipage a dû interroger le centre de contrôle. Puis une autre. Cinq en tout, dans la dernière partie de la descente.&lt;/p&gt;
&lt;p&gt;L’ordinateur était surchargé. Ce qu’il a fait ensuite compte parmi les grandes réussites d’ingénierie de cette histoire : à chaque fois, il a redémarré, abandonné le travail qui pouvait attendre et repris aussitôt celui qui ne le pouvait pas. L’alunissage s’est poursuivi.&lt;/p&gt;
&lt;p&gt;C’est la partie que tout le monde raconte. Celle qui mérite d’être racontée ensuite s’est produite le lendemain.&lt;/p&gt;
&lt;h2 id=&quot;le-second-système&quot;&gt;Le second système&lt;/h2&gt;
&lt;p&gt;Le module lunaire emportait un second système de guidage, et ce n’était pas une copie de rechange du premier. Une autre entreprise l’avait construit, sur un autre principe. Le système principal gardait ses repères grâce à une plateforme qui pivotait librement sur des cardans. Le second n’avait pas de cardans du tout : ses capteurs étaient fixés directement au vaisseau, et il déterminait où était le haut par le calcul.&lt;/p&gt;
&lt;p&gt;Il était là pour ramener l’équipage en orbite si le système principal venait à s’arrêter. Pendant l’alunissage, on n’a pas fait appel à lui.&lt;/p&gt;
&lt;p&gt;Puis, lors de la remontée pour s’amarrer au module de commande, une série de manœuvres a amené la plateforme du système principal dans la seule position qu’une plateforme à cardans ne supporte pas, et il a perdu sa référence d’attitude. L’équipage est passé sur le second système pour stabiliser le vaisseau, et s’est amarré.&lt;/p&gt;
&lt;p&gt;Le second système n’aurait pas pu tomber en panne de la même façon. Il n’avait pas la pièce.&lt;/p&gt;
&lt;h2 id=&quot;deux-fois-le-même&quot;&gt;Deux fois le même&lt;/h2&gt;
&lt;p&gt;Voici maintenant l’autre histoire. En 1996, la première Ariane 5 a décollé avec deux centrales de référence inertielle pour lui dire dans quelle direction elle pointait : l’une active, l’autre en réserve. Elles étaient identiques, jusqu’au logiciel.&lt;/p&gt;
&lt;p&gt;Trente-sept secondes après le décollage, un nombre, dans ce logiciel, est devenu trop grand pour la place qui lui était réservée. La centrale en réserve s’est arrêtée. La centrale active, qui exécutait le même code sur le même vol, s’est arrêtée elle aussi. Le rapport de la commission d’enquête est public, et il est sans détour : il n’y avait rien vers quoi basculer, parce que le secours avait déjà suivi le même chemin.&lt;/p&gt;
&lt;p&gt;Deux copies. Une faute. Plus rien.&lt;/p&gt;
&lt;h2 id=&quot;comment-les-ingénieurs-lappellent&quot;&gt;Comment les ingénieurs l’appellent&lt;/h2&gt;
&lt;p&gt;Une faute qui emporte ensemble un système et son secours est une &lt;em&gt;défaillance de cause commune&lt;/em&gt;. La parade est la &lt;em&gt;redondance diversifiée&lt;/em&gt; : un second système construit assez différemment pour que ce qui arrête le premier ne se trouve pas dans le second.&lt;/p&gt;
&lt;p&gt;La navette spatiale volait ainsi. Quatre de ses ordinateurs de vol exécutaient le logiciel d’une entreprise ; le cinquième exécutait un logiciel écrit séparément par une autre. Quatre copies vous protègent d’un ordinateur qui tombe en panne. Elles ne vous protègent pas d’un programme qui est faux, parce que les quatre l’exécutent.&lt;/p&gt;
&lt;p&gt;Cela a un coût. Le premier lancement de la navette a été annulé parce que le cinquième ordinateur et les quatre autres n’arrivaient pas à s’accorder sur l’heure. Deux conceptions demandent plus de travail qu’une, et il faut les faire se rejoindre.&lt;/p&gt;
&lt;h2 id=&quot;où-nowayos-entre-en-scène&quot;&gt;Où NoWayOS entre en scène&lt;/h2&gt;
&lt;p&gt;La plupart des appareils dédiés tournent aujourd’hui sur l’un d’un très petit nombre de systèmes d’exploitation généralistes. Leurs secours aussi. Quand un défaut apparaît dans un moteur de navigateur, un bureau ou un noyau de dizaines de millions de lignes, ou quand une mauvaise mise à jour est diffusée, il apparaît partout où ce logiciel tourne, le même jour.&lt;/p&gt;
&lt;p&gt;Un appareil NoWayOS est différent en profondeur. Son noyau est seL4, environ 10 000 lignes. Tout ce que nous avons écrit au-dessus est en Rust. Il n’a ni moteur de navigateur, ni bureau, ni shell ; un défaut dans l’un d’eux ne s’y trouve donc pas.&lt;/p&gt;
&lt;p&gt;NoWayOS n’a donc pas besoin de remplacer ce que vous exploitez pour être utile. Il peut se tenir à côté : une seconde façon d’accomplir une tâche essentielle, bâtie sur un autre principe.&lt;/p&gt;
&lt;h2 id=&quot;ce-quil-ne-fait-pas&quot;&gt;Ce qu’il ne fait pas&lt;/h2&gt;
&lt;p&gt;La diversité a des limites, et nous préférons que vous les appreniez de nous.&lt;/p&gt;
&lt;p&gt;Elle donne à un appareil NoWayOS des fautes différentes, pas une absence de fautes. Elle ne fait rien pour ce que deux systèmes partagent : l’alimentation, le réseau, les services derrière eux, ou une erreur sur ce que la tâche devait être. Et certaines des briques open source de NoWayOS sont aussi utilisées dans d’autres logiciels ; c’est pourquoi chaque image énumère chaque composant qu’elle contient, pour que vous puissiez lire ce qu’elle a en commun avec le système d’à côté.&lt;/p&gt;
&lt;p&gt;NoWayOS est en développement : c’est donc un rôle pour lequel il est conçu, pas un rôle qu’il a déjà tenu. &lt;a href=&quot;/fr/security#diverse-redundancy&quot;&gt;La page Sécurité dit sur quoi il repose&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Les ingénieurs d’Apollo n’ont pas emporté un second système parce qu’ils s’attendaient à ce que le premier tombe en panne. Ils l’ont emporté parce qu’ils ne pouvaient pas prouver qu’il ne tomberait pas en panne, et ils ont veillé à ce que ce qui arrêterait le premier ne trouve rien de familier dans le second.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Nous attaquons notre propre build à chaque modification</title>
    <link href="https://www.nowayos.com/fr/journal/we-attack-our-own-build"/>
    <id>https://www.nowayos.com/fr/journal/we-attack-our-own-build</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Un test de sécurité qui ne peut pas échouer ne prouve rien. Les tests de NoWayOS viennent donc avec des variantes faites pour échouer, et ses contrôles vivent là où une pull request ne peut pas les atteindre.</summary>
    <content type="html">&lt;p&gt;Voici une question gênante pour tout test de sécurité : a-t-il déjà échoué ? Un test qui n’a jamais échoué réussit peut-être parce que le système est sain, ou parce que le test ne voit rien du tout. De l’extérieur, les deux se ressemblent trait pour trait.&lt;/p&gt;
&lt;p&gt;NoWayOS ne se contente donc pas de tester sa sécurité. Il l’attaque, à chaque modification, et vérifie que les attaques sont arrêtées.&lt;/p&gt;
&lt;h2 id=&quot;tendre-la-main-vers-ce-qui-nest-pas-à-soi&quot;&gt;Tendre la main vers ce qui n’est pas à soi&lt;/h2&gt;
&lt;p&gt;Chaque partie d’un système NoWayOS tourne dans son propre compartiment sur seL4, et ne détient que ce qui lui a été accordé. Les tests d’isolation envoient exprès des sondes à travers ces frontières. L’une lit une adresse qu’on ne lui a jamais donnée. Une autre écrit sur une page qu’elle ne peut que lire. Une autre, qui détient exactement ce que détient l’interface utilisateur, tente d’écrire sur la page de contrôle de l’écran, que l’interface ne peut que lire. Une autre encore, qui détient exactement ce que détient le client réseau, tente d’écrire dans la mémoire du pilote réseau.&lt;/p&gt;
&lt;p&gt;seL4 doit les arrêter toutes, et une partie témoin doit continuer de tourner, intacte.&lt;/p&gt;
&lt;h2 id=&quot;un-test-fait-pour-échouer&quot;&gt;Un test fait pour échouer&lt;/h2&gt;
&lt;p&gt;Vient ensuite le retournement. À côté du test d’isolation de l’interface utilisateur se trouve une variante dont un droit a été élargi exprès : la doublure de l’interface reçoit la page privée de l’écran. Le test de cette variante &lt;strong&gt;doit échouer&lt;/strong&gt;. S’il réussissait un jour, le test d’isolation serait aveugle, et la compilation le dirait.&lt;/p&gt;
&lt;p&gt;La même idée traverse le reste des contrôles. Chaque décodeur des messages entre parties a des preuves bornées, issues du vérificateur de modèles Kani, établissant qu’il ne panique jamais, ne déborde jamais et ne lit jamais hors limites. Des contrôles par mutation cassent ensuite les décodeurs exprès, pour montrer que les preuves le remarquent. Chaque analyseur d’entrées venues de l’extérieur est soumis au fuzzing avec des données hostiles.&lt;/p&gt;
&lt;p&gt;Tout cela fait partie de &lt;code&gt;make ci&lt;/code&gt;, le contrôle que chaque modification doit franchir. Les tests d’isolation tournent à chaque fois ; une preuve ou une campagne de fuzzing est rejouée dès que le code qu’elle couvre change.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;des-contrôles-hors-de-portée&quot;&gt;Des contrôles hors de portée&lt;/h2&gt;
&lt;p&gt;Un contrôle ne vaut que par la main qui peut le modifier. Les contrôles que chaque contribution à NoWayOS doit franchir sont donc définis dans &lt;strong&gt;Defence Agent&lt;/strong&gt;, un dépôt public à part. Une pull request qui touche à un contrôle est signalée au mainteneur.&lt;/p&gt;
&lt;p&gt;Defence Agent se teste lui-même de la même façon : vingt pull requests piégées, chacune cachant quelque chose qu’un relecteur pourrait manquer. Il y a du texte caché écrit de droite à gauche dans un commentaire, une lettre remplacée par son sosie cyrillique, une dépendance récupérée directement depuis un dépôt git, un workflow qui exécuterait du code non fiable. Chacune doit être arrêtée, tandis que trois vraies modifications passées doivent passer.&lt;/p&gt;
&lt;h2 id=&quot;des-preuves-pas-des-adjectifs&quot;&gt;Des preuves, pas des adjectifs&lt;/h2&gt;
&lt;p&gt;Rien de tout cela ne rend un appareil “impiratable”. Rien ne le fait, et nous ne le dirons jamais. Ce que vous obtenez, ce sont des éléments de preuve : la trace de ce qui a été tenté, de ce qui a été arrêté, et la commande qui le montre. Lisez &lt;a href=&quot;/fr/security#read-one-images-evidence&quot;&gt;les éléments de preuve d’une image réelle&lt;/a&gt;, ou &lt;a href=&quot;https://github.com/NoWayOS/defence-agent&quot;&gt;les contrôles eux-mêmes&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Ce qu’une preuve peut promettre</title>
    <link href="https://www.nowayos.com/fr/journal/what-a-proof-can-promise"/>
    <id>https://www.nowayos.com/fr/journal/what-a-proof-can-promise</id>
    <published>2026-11-13T00:00:00Z</published>
    <updated>2026-11-13T00:00:00Z</updated>
    <summary>Un test essaie les cas auxquels quelqu’un a pensé. Une preuve les couvre tous. Ce que disent les preuves mathématiques de seL4, ce qu’elles supposent, et où se situe NoWayOS.</summary>
    <content type="html">&lt;p&gt;On fait le plus souvent confiance à un logiciel parce qu’il a été testé. Quelqu’un a imaginé ce qui pouvait mal tourner, l’a essayé, et a regardé le logiciel s’en sortir. Cela marche bien, jusqu’au cas auquel personne n’avait pensé.&lt;/p&gt;
&lt;p&gt;Une preuve part de l’autre bout. Elle n’essaie pas des cas. Elle montre, par les mathématiques, qu’un énoncé vaut pour tous.&lt;/p&gt;
&lt;h2 id=&quot;tous-les-cas-pas-seulement-ceux-quon-a-essayés&quot;&gt;Tous les cas, pas seulement ceux qu’on a essayés&lt;/h2&gt;
&lt;p&gt;Prenons une petite promesse : ce code ne lit jamais au-delà de la fin de son tampon. Un test peut lui soumettre mille entrées, ou un milliard, et rapporter qu’aucune ne l’a mis en défaut. Une preuve dit autre chose, d’une autre nature : il n’existe aucune entrée qui le mette en défaut. On n’en a trouvé aucune, et il n’y en a aucune.&lt;/p&gt;
&lt;p&gt;Le prix à payer est la rigueur. Une preuve exige un énoncé exact de ce que le code doit faire, sa spécification, et un raisonnement qui relie chaque ligne du code à cet énoncé. Pour un vrai logiciel, ce raisonnement est bien trop long pour qu’une personne le vérifie à l’œil. C’est donc un ordinateur qui le vérifie.&lt;/p&gt;
&lt;!-- slot --&gt;&lt;h2 id=&quot;vérifiée-par-machine&quot;&gt;Vérifiée par machine&lt;/h2&gt;
&lt;p&gt;Voilà ce que signifie « vérifiée par machine ». La preuve est écrite en entier, dans un langage que sait lire un programme appelé assistant de preuve, et ce programme confronte chaque étape aux règles de la logique. Il ne fatigue pas à la page neuf cents, et il ne croit personne sur parole.&lt;/p&gt;
&lt;p&gt;Les preuves de seL4 sont vérifiées ainsi, dans un assistant de preuve nommé Isabelle/HOL. Elles sont publiques, et chacun peut les rejouer.&lt;/p&gt;
&lt;h2 id=&quot;ce-que-disent-les-preuves-de-sel4&quot;&gt;Ce que disent les preuves de seL4&lt;/h2&gt;
&lt;p&gt;seL4 est le noyau sur lequel tourne chaque système NoWayOS : environ 10 000 lignes de code, et le seul code qui ait le contrôle total de l’appareil. Sa taille est l’essentiel. Un raisonnement sur dix mille lignes peut être mené à son terme. Un raisonnement sur des dizaines de millions ne le peut pas encore.&lt;/p&gt;
&lt;p&gt;La seL4 Foundation &lt;a href=&quot;https://sel4.systems/Verification/proofs.html&quot;&gt;présente ces preuves&lt;/a&gt; par couches :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Le code fait ce que dit la spécification, et rien de plus.&lt;/strong&gt; Il en découle une liste de choses que le noyau ne peut pas faire : déborder d’un tampon, suivre un pointeur nul, laisser fuir de la mémoire, diviser par zéro.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le programme qui s’exécute correspond au code qui a été prouvé.&lt;/strong&gt; Un compilateur se tient entre les deux ; une preuve supplémentaire en vérifie donc la sortie.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le noyau peut tenir séparées les parties d’un système.&lt;/strong&gt; Une partie ne peut ni modifier les données d’une autre, ni les lire, ni lui prendre les ressources dont elle a besoin, à moins d’en avoir reçu le droit.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Un système peut démarrer dans l’état pour lequel il a été conçu,&lt;/strong&gt; avec exactement les droits que sa description énumère.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Toutes les couches ne sont pas achevées pour tous les processeurs et toutes les configurations. Cela compte, et nous y reviendrons.&lt;/p&gt;
&lt;h2 id=&quot;ce-quune-preuve-tient-pour-acquis&quot;&gt;Ce qu’une preuve tient pour acquis&lt;/h2&gt;
&lt;p&gt;Une preuve a exactement la portée de son énoncé, et elle repose sur ses hypothèses. seL4 écrit les siennes : que le matériel se comporte comme le dit son modèle, que quelques centaines de lignes du code le plus proche du matériel sont justes, que le code exécuté avant le démarrage du noyau a fait son travail. La preuve de confidentialité ne couvre pas les temps d’exécution.&lt;/p&gt;
&lt;p&gt;Elle ne dit rien sur la question de savoir si la spécification demande la bonne chose, et rien sur le logiciel au-dessus du noyau. Un noyau prouvé isolera fidèlement un programme qui contient un bogue. Le bogue est toujours là. Il ne peut simplement atteindre rien d’autre.&lt;/p&gt;
&lt;p&gt;Ce n’est pas une faiblesse des preuves. C’est ce qui fait leur valeur : elles disent précisément ce qu’elles couvrent, et vous savez donc précisément ce qui reste.&lt;/p&gt;
&lt;h2 id=&quot;où-se-situe-nowayos&quot;&gt;Où se situe NoWayOS&lt;/h2&gt;
&lt;p&gt;Voici la position, sans détour. NoWayOS tourne sur seL4, mais aucune image NoWayOS n’entre aujourd’hui dans les preuves achevées de seL4. NoWayOS utilise la configuration à criticité mixte de seL4, dont les preuves pour nos processeurs sont en cours. Et les preuves de seL4 n’ont jamais couvert le code propre à NoWayOS. Nous ne disons donc pas que NoWayOS est “formellement vérifié”, et nous ne le dirons pas.&lt;/p&gt;
&lt;p&gt;Chaque image dit où elle en est. Un fichier, à côté d’elle, énumère la configuration de son noyau, option par option, en regard de celle que seL4 a prouvée. La page &lt;a href=&quot;/fr/security#what-sel4s-proofs-cover-and-what-they-dont&quot;&gt;Sécurité&lt;/a&gt; en montre un vrai.&lt;/p&gt;
&lt;h2 id=&quot;de-plus-petites-preuves-les-nôtres&quot;&gt;De plus petites preuves, les nôtres&lt;/h2&gt;
&lt;p&gt;Le code de NoWayOS tire son assurance d’ailleurs : Rust, l’isolation, la relecture, les tests, et des preuves d’un genre plus modeste.&lt;/p&gt;
&lt;p&gt;Chaque décodeur des messages qui circulent entre les parties d’un système a des &lt;strong&gt;preuves bornées&lt;/strong&gt;, produites avec un vérificateur de modèles nommé Kani. Une preuve bornée couvre toute entrée jusqu’à une taille déclarée, ici l’enregistrement le plus long qu’un décodeur accepte. À l’intérieur de cette borne, c’est une vraie preuve : aucune entrée ne fait paniquer le décodeur, ne le fait déborder ni lire hors limites. Au-delà de la borne, elle ne dit rien, et c’est pourquoi la borne est l’entrée la plus longue qui soit.&lt;/p&gt;
&lt;p&gt;Ensuite, nous cassons les décodeurs exprès, pour nous assurer que les preuves le remarquent. Une preuve qui ne peut pas échouer ne vaut pas mieux qu’&lt;a href=&quot;/fr/journal/we-attack-our-own-build&quot;&gt;un test qui ne le peut pas&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;la-juste-mesure&quot;&gt;La juste mesure&lt;/h2&gt;
&lt;p&gt;Une preuve ne rend rien “impiratable”. Elle rend un énoncé vrai, dans tous les cas, sous des hypothèses que vous pouvez lire. Connaissez l’énoncé et les hypothèses, et vous savez ce que vous avez.&lt;/p&gt;
&lt;p&gt;C’est pourquoi NoWayOS est bâti sur le noyau qui a ces preuves, et pourquoi il vous dit, image par image, jusqu’où elles vont.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Pourquoi un appareil NoWayOS n’a pas de shell</title>
    <link href="https://www.nowayos.com/fr/journal/why-a-nowayos-device-has-no-shell"/>
    <id>https://www.nowayos.com/fr/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 plupart des appareils dédiés sont des ordinateurs généralistes avec une tâche par-dessus et tout le reste encore en dessous. Nous avons pris l’autre route : construire chaque appareil avec seulement ce dont sa tâche a besoin, et laisser le reste de côté.</summary>
    <content type="html">&lt;p&gt;La plupart des attaques contre un appareil dédié ne visent pas la tâche qu’il accomplit. Elles visent le reste de l’ordinateur sur lequel il tourne : le shell laissé là pour la maintenance, le service d’accès à distance que personne n’a coupé, le navigateur derrière l’application, le bureau à un plantage de distance.&lt;/p&gt;
&lt;p&gt;Ce « reste de l’ordinateur » est partout. La passerelle qui sort les relevés d’une usine d’eau, le terminal dans la salle de contrôle d’un réseau électrique, les appareils sur lesquels compte un hôpital, le panneau sur le flanc d’une machine, l’écran dans le hall d’une gare : beaucoup tournent sur un système d’exploitation généraliste, avec une tâche par-dessus, et tout le reste encore là en dessous, désactivé par des réglages. Le mode kiosque en est la version la plus simple. Chaque compromission, c’est quelqu’un qui trouve le réglage qu’on a oublié.&lt;/p&gt;
&lt;h2 id=&quot;le-laisser-de-côté-plutôt&quot;&gt;Le laisser de côté, plutôt&lt;/h2&gt;
&lt;p&gt;NoWayOS part de l’autre bout. Une image NoWayOS contient l’application de l’appareil, les pilotes que cette application utilise, et le micronoyau seL4. C’est toute la liste.&lt;/p&gt;
&lt;p&gt;Il n’y a pas de shell où atterrir, parce qu’aucun shell n’y a jamais été mis. Pas de connexion à distance dont on devinerait le mot de passe. Pas de bureau vers lequel s’échapper. Pas de moteur de navigateur qui attend une page malveillante. On ne peut pas mal configurer le réglage d’un logiciel qui n’est pas là.&lt;/p&gt;
&lt;p&gt;Tout cela concerne le système d’exploitation. L’application qui tourne au-dessus, c’est autre chose : elle peut authentifier ses utilisateurs, et se connecter à d’autres systèmes, chaque fois que sa tâche le demande. Simplement, elle ne repose pas sur un système d’exploitation auquel quelqu’un peut se connecter.&lt;/p&gt;
&lt;p&gt;Nous appelons cela un &lt;strong&gt;Single Purpose OS&lt;/strong&gt; : un ordinateur qui n’a rien d’autre à faire.&lt;/p&gt;
&lt;h2 id=&quot;et-ce-qui-reste-est-cloisonné&quot;&gt;Et ce qui reste est cloisonné&lt;/h2&gt;
&lt;p&gt;Laisser de côté, c’est la moitié du travail. Chaque partie qui reste (le réseau, l’écran, la saisie, l’application) tourne dans son propre compartiment, un &lt;em&gt;domaine de protection&lt;/em&gt; dans les termes de seL4, et n’atteint que ce qui lui a été accordé. Le pilote réseau déplace des paquets. Le pilote d’affichage dessine. L’application parle à chacun par des messages de taille fixe.&lt;/p&gt;
&lt;p&gt;Chaque droit est consigné dans un fichier, un fait par ligne, et la compilation échoue si le système et le fichier ne concordent pas. L’ensemble est construit pour qu’une faute dans une partie reste dans cette partie.&lt;/p&gt;
&lt;h2 id=&quot;mais-comment-le-réparer-sans-shell&quot;&gt;« Mais comment le réparer sans shell ? »&lt;/h2&gt;
&lt;p&gt;C’est la première question des ingénieurs, et elle est légitime. On ne se connecte pas au système d’exploitation d’un appareil NoWayOS : il n’a pas de comptes, il n’y a donc personne sous le nom de qui se connecter. On construit une nouvelle image et on remplace l’ancienne. Aujourd’hui, cela veut dire la construire et la charger sur la carte ; les mises à jour signées, vérifiées par l’appareil et capables de revenir en arrière en sécurité, sont conçues et en chemin.&lt;/p&gt;
&lt;p&gt;En échange, vous obtenez un appareil qui démarre droit dans son unique tâche, avec bien moins à corriger et bien moins à attaquer. Pour les systèmes sur lesquels repose un pays, cet échange est tout l’intérêt.&lt;/p&gt;
&lt;h2 id=&quot;voyez-par-vous-même&quot;&gt;Voyez par vous-même&lt;/h2&gt;
&lt;p&gt;Les éléments de preuve d’une image NoWayOS réelle, son fichier des droits, sa nomenclature et son relevé de configuration seL4, sont sur notre &lt;a href=&quot;/fr/security#read-one-images-evidence&quot;&gt;page Sécurité&lt;/a&gt;. Pas d’inscription, pas de script. Juste les fichiers.&lt;/p&gt;
</content>
  </entry>
</feed>
