NoWayOS
FR
GitHub
MenuFermer

Questions

Vos questions, des réponses sans détour.

Ce que l’on demande à propos de NoWayOS, avec la réponse courte d’abord. Si votre question n’y figure pas, posez-la sur GitHub.

À propos de NoWayOS

Qu’est-ce que NoWayOS ?

Le Single Purpose OS : un système d’exploitation pour appareils dédiés, comme les systèmes de contrôle des réseaux d’électricité et d’eau, les terminaux de salle de contrôle et les diodes de données unidirectionnelles, construit pour l’unique tâche de chaque appareil. Vous écrivez l’application de l’appareil en Rust, et NoWayOS la construit, avec uniquement les pilotes qu’elle utilise, sur le micronoyau seL4. L’image contient cela et rien d’autre : ni moteur de navigateur, ni système de fenêtrage, ni shell, ni gestionnaire de paquets, ni compte utilisateur.

Un ordinateur qui n’a rien d’autre à faire.

Qu’est-ce qu’un Single Purpose OS ?

Un système d’exploitation construit pour l’unique tâche d’un appareil, au lieu d’être construit pour tout faire tourner puis verrouillé sur une seule chose. Trois traits font d’un système d’exploitation un système à vocation unique :

  • Bâti pour une seule tâche. Son image contient l’application, les pilotes que cette application utilise et le noyau, et rien d’autre : ni navigateur, ni bureau, ni shell, ni gestionnaire de paquets, ni compte utilisateur.
  • Cloisonné de l’intérieur. Chaque partie s’exécute dans un compartiment qui lui est propre et n’atteint que ce qui lui a été accordé : tout est conçu pour qu’une défaillance dans une partie y reste confinée.
  • Preuves à l’appui. Il est livré avec les éléments de preuve de ce qu’il contient et de ce que chaque partie a le droit de faire : chaque droit consigné, chaque composant répertorié, et des vérifications que chacun peut exécuter.

Un Single Purpose OS n’est pas un mode kiosque, qui verrouille un système généraliste sur une seule application et laisse tout le reste en place, ni un OS mono-utilisateur, qui limite qui utilise un ordinateur plutôt que ce qu’il contient. NoWayOS est un Single Purpose OS : un ordinateur qui n’a rien d’autre à faire.

Pourquoi s’appelle-t-il NoWayOS ?

Parce qu’il n’y a aucun moyen (no way) d’exploiter ce qui n’a jamais été intégré. Le nom parle de ce qui est absent d’un appareil, pas d’une promesse que rien ne pourra jamais mal tourner dans ce qui y reste. Ce qui est intégré peut encore contenir des bugs ; ce que nous affirmons, c’est qu’il y a bien moins de code intégré, et qu’un bug reste dans son compartiment.

Pourquoi ne pas simplement verrouiller Linux, Windows ou une tablette ?

Verrouiller, c’est être sécurisé par configuration : le navigateur, le bureau et le shell sont toujours là, derrière les réglages, doivent toujours être corrigés, et un seul bug peut contourner tous les réglages d’un coup. NoWayOS est sécurisé par construction : ces éléments n’ont jamais été intégrés à l’appareil, et ce qui reste s’exécute dans des compartiments étanches, où tout est conçu pour qu’une défaillance dans une partie reste dans cette partie.

Peut-on l’utiliser en production ?

Non. NoWayOS est en développement, et chaque API est provisoire et changera. Plus de cinquante systèmes démarrent et se vérifient eux-mêmes dans QEMU, et l’interface utilisateur, le clavier et la souris USB, les timers, le watchdog et le superviseur fonctionnent sur un Raspberry Pi 5. Le démarrage sécurisé, les mises à jour signées appliquées sur l’appareil et le matériel de production restent à venir.

Est-il open source ?

Oui. NoWayOS, le Showcase et Defence Agent sont sous MIT OR Apache-2.0, au choix, et le Screen Compiler est sous MIT. Les quatre sont publics dans l’organisation NoWayOS sur GitHub : vous pouvez les cloner, les compiler et ouvrir une issue.

Sécurité et preuves

NoWayOS est-il “formellement vérifié” ?

Non, et nous veillons à ne pas le laisser entendre. NoWayOS tourne sur seL4, qui dispose de preuves de correction et de sécurité vérifiées par machine pour des configurations précises sur son matériel. NoWayOS utilise la configuration à criticité mixte de seL4, dont les preuves AArch64 sont en cours : aucune image NoWayOS n’entre donc aujourd’hui dans le périmètre des preuves achevées de seL4. Le code propre de NoWayOS n’est pas du tout couvert par les preuves de seL4 ; il repose sur Rust, l’isolation, les tests et ses propres preuves bornées. Chaque image consigne sa configuration seL4 exacte (Sécurité).

Si tout le monde peut lire le code, n’est-ce pas moins sûr ?

Non. La sécurité de NoWayOS vient de sa conception, pas du secret : ce qui est laissé de côté, et les compartiments autour de ce qui reste. L’ouverture permet à chacun de vérifier les affirmations, de produire lui-même les éléments de preuve et de signaler ce qu’il trouve.

Que se passe-t-il quand une vulnérabilité est découverte ?

Tout est conçu pour qu’elle reste dans le compartiment où elle se trouve, ce qui limite les dégâts le temps qu’un correctif soit élaboré ; et avec bien moins de code, il y a bien moins de correctifs à faire. Les correctifs sont appelés à arriver sous forme de mises à jour signées, avec un retour arrière sûr : c’est conçu, pas encore réalisé. Pour en signaler une, écrivez-nous en privé, comme le décrit le SECURITY.md de chaque dépôt, et non dans un ticket public.

Utilisation

Peut-il faire tourner notre application existante ?

Pas en l’état. NoWayOS exécute des applications écrites pour lui, en Rust ; il ne peut pas exécuter de programmes Linux ou Windows, ni une application web, car rien de ce dont ils ont besoin n’y est intégré. Les écrans sont la partie facile : des écrans React écrits dans le sous-ensemble que prend en charge le Screen Compiler se convertissent en Rust natif à la compilation. La logique de l’application est reconstruite sous forme de domaines de protection NoWayOS.

A-t-il un navigateur web ?

Non. C’est même tout l’intérêt. Il n’y a ni moteur de navigateur, ni WebView, ni JavaScript sur un appareil NoWayOS. Les écrans sont en Rust natif, dessinés par la petite interface utilisateur propre à NoWayOS, et peuvent malgré tout être conçus en React et convertis à la compilation.

Sur quel matériel fonctionne-t-il ?

La machine AArch64 de QEMU, où chaque système démarre d’abord, et le Raspberry Pi 5, la carte de référence bon marché. La famille i.MX8 de NXP est le matériel de production visé, avec une racine de confiance matérielle ; elle n’est pas encore prise en charge. Pour construire NoWayOS, il vous faut Podman (ou Docker) et make : il est développé sur Apple silicon, et les hôtes x86-64 ne sont pas encore testés.

Comment l’essayer ?

Clonez le dépôt nowayos, lancez une fois make container, puis make demo : la session scriptée de la démo cliquable s’exécute sur votre machine, chaque image vérifiée, sans aucun matériel. make qemu-test SYSTEM=hello démarre ensuite seL4 dans QEMU. Premiers pas vous guide pas à pas.