NoWayOS
ZH
GitHub
菜单关闭

问答

问题,直白作答。

大家关于 NoWayOS 的提问,先给出简短的回答。如果这里没有您的问题,欢迎在 GitHub 上提问。

关于 NoWayOS

什么是 NoWayOS?

Single Purpose OS:一种面向专用设备的操作系统,例如电力和供水网络的控制系统、控制室终端和单向数据二极管,为每台设备的唯一任务而构建。您用 Rust 编写设备的应用,NoWayOS 将它连同它所使用的驱动程序一起构建到 seL4 微内核之上。镜像中只有这些,别无其他:没有浏览器引擎、窗口系统、Shell、包管理器或用户账户。

一台心无旁骛的计算机。

什么是 Single Purpose OS?

一种为一台设备的唯一任务而构建的操作系统,而不是先构建成什么都能运行、再锁定为只做一件事。一个操作系统要成为 Single Purpose OS,需要具备三点:

  • 专为一项任务而建。 它的镜像只包含应用、该应用使用的驱动程序和内核,别无其他:没有浏览器、桌面、Shell、包管理器或用户账户。
  • 内部密封。 每个部分都运行在自己的隔离舱中,只能触及被授予的资源;按照设计,一个部分中的故障会留在该部分之内。
  • 有据可查。 它附带证据,说明内部有什么、每个部分可以做什么:每项授权都有记录,每个组件都有清单,还有任何人都能运行的检查。

Single Purpose OS 不是 Kiosk 模式——那只是把通用系统锁定在一个应用上,其余一切仍原封不动;它也不是单用户操作系统——那限制的是谁使用计算机,而不是计算机里有什么。NoWayOS 就是一个 Single Purpose OS:一台心无旁骛的计算机。

为什么叫 NoWayOS?

因为从未内置的东西,就无从被利用。这个名字说的是设备省去了什么,而不是承诺留下的部分永远不会出问题。内置的部分仍然可能有缺陷;我们的主张是:这样的部分少得多,而且缺陷会留在它所在的隔离舱中。

为什么不直接锁定 Linux、Windows 或平板电脑?

锁定属于配置式安全:浏览器、桌面和 Shell 仍然藏在设置背后,仍然需要打补丁,而一个缺陷就可能一次绕过所有设置。NoWayOS 是构造式安全:这些部分从未被构建进设备,留下的部分运行在密封的隔离舱中,因此按照设计,一个部分中的故障会留在该部分之内。

它能用于生产环境了吗?

还不能。NoWayOS 正在开发中,所有 API 都是临时性的,并且会发生变化。五十多个系统已能在 QEMU 中启动并自行检查;用户界面、USB 键盘和鼠标、定时器、看门狗和监管器已在 Raspberry Pi 5 上运行。安全启动、在设备上应用的签名更新以及生产硬件仍有待实现。

它是开源的吗?

是的。NoWayOS、Showcase 和 Defence Agent 采用 MIT OR Apache-2.0 许可(任选其一),Screen Compiler 采用 MIT 许可。四个项目都已在 GitHub 上的 NoWayOS 组织下公开:您可以克隆、构建,也可以提交 issue。

安全与证明

NoWayOS 是否“经过形式化验证”?

不是,我们也注意不作这种暗示。NoWayOS 运行在 seL4 之上,seL4 针对 NoWayOS 所用硬件上的特定配置,拥有经机器检查的正确性与安全性证明。NoWayOS 使用 seL4 的混合关键性配置,其 AArch64 证明仍在进行中,因此目前没有任何 NoWayOS 镜像处于 seL4 已完成的证明范围之内。NoWayOS 自身的代码完全不在 seL4 的证明覆盖范围内;它依靠的是 Rust、隔离、测试以及自身的有界证明。每个镜像都会记录其确切的 seL4 配置(安全)。

任何人都能阅读代码,这难道不会降低安全性吗?

不会。NoWayOS 的安全性来自它的设计,而不是保密:省去了什么,以及为保留下来的部分筑起的隔离舱。开源让任何人都能核查这些说法、运行这些证据,并报告他们的发现。

发现漏洞时会怎样?

按照设计,漏洞会被限制在它所在的隔离舱内,从而在修复期间限制损害;而且代码少得多,需要修复的地方也就少得多。修复将以可安全回退的签名更新形式交付:这一点已完成设计,尚未构建。如需报告漏洞,请按照各代码仓库的 SECURITY.md 所述私下联系我们,不要提交公开 issue。

使用

它能运行我们现有的应用吗?

就目前而言,不能。NoWayOS 运行的是专为它用 Rust 编写的应用;它无法运行 Linux 或 Windows 程序,也无法运行 Web 应用,因为它们所需的一切都没有内置。屏幕反倒是容易的部分:按照 Screen Compiler 所支持的子集编写的 React 屏幕,会在构建时转换为原生 Rust。应用的逻辑则需要重建为 NoWayOS 的保护域。

它有网页浏览器吗?

没有。这恰恰是关键所在。NoWayOS 设备上没有浏览器引擎、WebView 或 JavaScript。屏幕是原生 Rust,由 NoWayOS 自己的小型用户界面绘制,但仍然可以用 React 设计,并在构建时转换。

它能在什么硬件上运行?

QEMU 的 AArch64 虚拟机,每个系统都先在这里启动;以及 Raspberry Pi 5,即低成本的参考开发板。NXP 的 i.MX8 系列是计划中的生产硬件,带有硬件信任根,目前尚不支持。构建 NoWayOS 需要 Podman(或 Docker)和 make:它在 Apple 芯片上开发,x86-64 主机尚未经过测试。

我怎样试用它?

克隆 nowayos 代码仓库,运行一次 make container,然后运行 make demo:可点击演示的脚本化会话会在您的机器上运行,每一帧都经过检查,无需任何硬件。接着,make qemu-test SYSTEM=hello 会在 QEMU 中启动 seL4。入门会一步步带您完成。