NoWayOS
JA
GitHub
メニュー閉じる

よくある質問

質問に、率直に答えます。

NoWayOSについてよく聞かれることに、短い答えを先にしてお答えします。お探しの質問がなければ、GitHubで聞いてください。

NoWayOSについて

NoWayOSとは何ですか?

Single Purpose OSです。電力網や水道網の制御システム、制御室の端末、一方向のデータダイオードといった専用デバイスのためのオペレーティングシステムで、各デバイスのひとつの仕事のために作られます。デバイスのアプリケーションはRustで書きます。NoWayOSはそれを、使うドライバだけと一緒に、seL4マイクロカーネルの上へビルドします。イメージに入っているのはそれだけで、ほかには何もありません。ブラウザエンジンも、ウィンドウシステムも、シェルも、パッケージマネージャも、ユーザーアカウントもありません。

ほかにすることが何もないコンピューター。

Single Purpose OSとは何ですか?

あるデバイスのひとつの仕事のために作られたオペレーティングシステムです。何でも動かせるように作ってから、ひとつのことに絞ってロックダウンするのではありません。オペレーティングシステムを単一目的のものにする条件は、三つあります。

  • ひとつの仕事のために作る。イメージに入っているのは、アプリケーションと、そのアプリケーションが使うドライバと、カーネルだけで、ほかには何もありません。ブラウザも、デスクトップも、シェルも、パッケージマネージャも、ユーザーアカウントもありません。
  • 内側を区画で封じる。各部分はそれぞれ専用の区画で動き、許可されたものにしか届きません。そのため、ある部分の障害はその部分にとどまるよう設計されています。
  • 根拠を示す。中に何が入っていて、各部分に何が許されているか、その根拠が付いてきます。すべての付与を書き出し、すべての構成要素を一覧にし、誰でも実行できるチェックを用意しています。

Single Purpose OSは、汎用システムをひとつのアプリに固定し、ほかのものはすべてそのまま残すキオスクモードとは違います。また、中に何があるかではなく、コンピューターを使う人を制限するシングルユーザーOSとも違います。NoWayOSはSingle Purpose OS、ほかにすることが何もないコンピューターです。

なぜNoWayOSという名前なのですか?

組み込まれていないものは、悪用しようがないからです。英語の「no way」は、この「しようがない」にあたります。この名前が語っているのは、デバイスから何を外したかであって、残したものに決して何も起きないという約束ではありません。組み込まれているものには、バグがありえます。私たちが主張するのは、その量がはるかに少ないこと、そしてバグがその区画にとどまることです。

Linux、Windows、タブレットをロックダウンするだけではだめなのですか?

ロックダウンは設定によるセキュリティです。ブラウザ、デスクトップ、シェルは設定の陰にまだ残っていて、パッチも必要なままで、ひとつのバグで一度にすべての設定がすり抜けられてしまうこともあります。NoWayOSは構造によるセキュリティです。それらの部分はそもそもデバイスに組み込まれておらず、残ったものは封じられた区画で動くので、ある部分の障害はその部分にとどまるよう設計されています。

本番運用に使えますか?

いいえ。NoWayOSは開発中で、APIはすべて暫定的なものであり、今後変わります。50を超えるシステムがQEMUで起動して自らをチェックし、ユーザーインターフェース、USBキーボードとマウス、タイマー、ウォッチドッグ、スーパーバイザーがRaspberry Pi 5の上で動いています。セキュアブート、デバイス上で適用する署名付きアップデート、そして本番用ハードウェアは、これからです。

オープンソースですか?

はい。NoWayOS、Showcase、Defence AgentはMIT OR Apache-2.0(いずれかを選択できます)、Screen CompilerはMITです。四つすべてがGitHub上のNoWayOS組織で公開されており、クローンもビルドも、issueの作成もできます。

セキュリティと証明

NoWayOSは“形式検証済み”ですか?

いいえ。そう受け取られることのないよう、私たちは気をつけています。NoWayOSが動くseL4は、そのハードウェア上の特定の構成について、正しさとセキュリティの機械検査された証明を持っています。NoWayOSが使うのはseL4の混合クリティカリティ構成で、そのAArch64向けの証明は進行中です。そのため現時点で、seL4の完了済みの証明の範囲に入るNoWayOSイメージはありません。NoWayOS自身のコードはseL4の証明の対象にまったく入っておらず、Rust、隔離、テスト、そして独自の有界証明に頼っています。各イメージは、使っているseL4構成を正確に記録しています(セキュリティ)。

誰でもコードを読めるなら、かえって安全性が下がりませんか?

いいえ。NoWayOSのセキュリティは、秘密にすることではなく、設計から生まれています。何を外しているか、そして残したものを囲む区画です。オープンであれば、誰でも主張を確かめ、根拠を実行し、見つけたことを報告できます。

脆弱性が見つかったらどうなりますか?

脆弱性は、それがある区画の中にとどまるよう設計されているので、修正されるまでの間の被害を抑えられます。しかもコードがはるかに少ないので、修正すべきものもはるかに少なくて済みます。修正は、安全にフォールバックできる署名付きアップデートとして届ける予定です。これは設計はできていますが、まだ作られていません。報告は、各リポジトリのSECURITY.mdに記載のとおり、公開のissueではなく、非公開でお願いします。

使い方

既存のアプリケーションは動きますか?

そのままでは動きません。NoWayOSが動かすのは、NoWayOS向けにRustで書かれたアプリケーションです。LinuxやWindowsのプログラムも、Webアプリも動かせません。それらが必要とするものが、何ひとつ組み込まれていないからです。画面は簡単な部分です。Screen Compilerが対応するサブセットに沿って書かれたReactの画面は、ビルド時にネイティブなRustに変換されます。アプリケーションのロジックは、NoWayOSの保護ドメインとして作り直します。

Webブラウザはありますか?

いいえ。むしろ、そこが肝心なところです。NoWayOSのデバイスには、ブラウザエンジンも、WebViewも、JavaScriptもありません。画面はネイティブなRustで、NoWayOS独自の小さなユーザーインターフェースが描きます。それでも、Reactでデザインしてビルド時に変換することはできます。

どんなハードウェアで動きますか?

すべてのシステムが最初に起動するQEMUのAArch64マシンと、低価格のリファレンスボードであるRaspberry Pi 5です。NXPのi.MX8ファミリーが、ハードウェアのルート・オブ・トラストを備えた、想定している本番用ハードウェアですが、まだ対応していません。NoWayOSをビルドするには、Podman(またはDocker)とmakeが必要です。開発はApple silicon上で行っており、x86-64のホストではまだテストしていません。

どうすれば試せますか?

nowayosリポジトリをクローンし、make containerを一度実行してから、make demoを実行してください。クリックして操作できるデモのスクリプト化されたセッションが、すべてのフレームをチェックしながら手元のマシンで動きます。ハードウェアは要りません。続いてmake qemu-test SYSTEM=helloで、QEMUでseL4を起動します。手順ははじめにで順を追って説明しています。