질문
질문에 솔직하게 답합니다.
사람들이 NoWayOS에 관해 묻는 것들을 짧은 답부터 정리했습니다. 찾는 질문이 없다면 GitHub에서 물어 주십시오.
NoWayOS 소개
NoWayOS란 무엇입니까?
Single Purpose OS입니다. 전력망과 수도망의 제어 시스템, 관제실 단말기, 단방향 데이터 다이오드 같은 전용 장치를 위해, 각 장치의 한 가지 일에 맞춰 만든 운영체제입니다. 장치의 애플리케이션을 Rust로 작성하면, NoWayOS가 실제로 쓰는 드라이버만 더해 seL4 마이크로커널 위에 빌드합니다. 이미지에는 그것만 있고 다른 것은 없습니다. 브라우저 엔진도, 윈도 시스템도, 셸도, 패키지 관리자도, 사용자 계정도 없습니다.
다른 할 일이 없는 컴퓨터.
Single Purpose OS란 무엇입니까?
무엇이든 실행하도록 만든 뒤 한 가지로 잠근 운영체제가 아니라, 한 장치의 한 가지 일을 위해 만든 운영체제입니다. 운영체제가 Single Purpose OS가 되려면 다음 세 가지를 갖춰야 합니다.
- 한 가지 일을 위해 만듦. 이미지에는 애플리케이션, 그 애플리케이션이 쓰는 드라이버, 커널만 있고 다른 것은 없습니다. 브라우저도, 데스크톱도, 셸도, 패키지 관리자도, 사용자 계정도 없습니다.
- 구획마다 봉인. 각 부분은 저마다의 구획에서 실행되며 부여받은 것에만 접근하므로, 한 부분의 결함은 그 안에 머물도록 설계되어 있습니다.
- 풀이 과정을 보여 줌. 안에 무엇이 있고 각 부분이 무엇을 할 수 있는지에 대한 증거가 함께 제공됩니다. 모든 권한 부여가 기록되고, 모든 구성 요소가 나열되며, 누구나 검사를 실행할 수 있습니다.
Single Purpose OS는 범용 시스템을 앱 하나에 잠가 두고 나머지는 그대로 남겨 두는 키오스크 모드가 아니며, 컴퓨터 안에 무엇이 있는지가 아니라 누가 쓰는지를 제한하는 단일 사용자 OS도 아닙니다. NoWayOS는 Single Purpose OS, 다른 할 일이 없는 컴퓨터입니다.
왜 이름이 NoWayOS입니까?
처음부터 넣지 않은 것은 악용할 길이 없기(no way) 때문입니다. 이 이름은 장치에서 무엇을 뺐는지에 관한 것이지, 남긴 것에 결코 아무 문제도 생기지 않는다는 약속이 아닙니다. 들어 있는 것에는 여전히 버그가 있을 수 있습니다. 저희가 주장하는 것은 그 양이 훨씬 적다는 것, 그리고 버그가 자기 구획 안에 머문다는 것입니다.
그냥 Linux, Windows, 태블릿을 잠가서 쓰면 되지 않습니까?
잠그는 것은 설정에 의한 보안입니다. 브라우저, 데스크톱, 셸은 설정 뒤에 여전히 있고, 여전히 패치가 필요하며, 버그 하나가 모든 설정을 한꺼번에 우회할 수 있습니다. NoWayOS는 구조에 의한 보안입니다. 그런 부분은 처음부터 장치에 넣지 않았고, 남은 것은 봉인된 구획에서 실행되므로, 한 부분의 결함은 그 부분 안에 머물도록 설계되어 있습니다.
프로덕션에 쓸 준비가 되었습니까?
아니요. NoWayOS는 개발 중이며, 모든 API는 임시이고 바뀔 것입니다. QEMU에서는 50개가 넘는 시스템이 부팅해 스스로를 검사하고, Raspberry Pi 5에서는 사용자 인터페이스, USB 키보드와 마우스, 타이머, 워치독, 슈퍼바이저가 동작합니다. 보안 부팅, 장치에서 적용하는 서명된 업데이트, 프로덕션 하드웨어는 아직 남아 있습니다.
오픈 소스입니까?
네. NoWayOS, Showcase, Defence Agent는 MIT OR Apache-2.0(선택 가능)이며, Screen Compiler는 MIT입니다. 네 프로젝트 모두 GitHub의 NoWayOS 조직에 공개되어 있어, 클론하고 빌드하고 이슈를 등록할 수 있습니다.
보안과 증명
NoWayOS는 “정형 검증된” 운영체제입니까?
아니요. 그렇게 보이지 않도록 주의하고 있습니다. NoWayOS는 seL4 위에서 실행되며, seL4는 해당 하드웨어의 특정 구성에 대해 정확성과 보안에 관한 기계 검사 증명을 갖추고 있습니다. NoWayOS는 seL4의 혼합 임계성 구성을 사용하는데, 이 구성의 AArch64 증명은 진행 중입니다. 따라서 현재 seL4의 완료된 증명 범위 안에 있는 NoWayOS 이미지는 없습니다. NoWayOS 자체의 코드는 seL4의 증명 범위에 전혀 포함되지 않으며, Rust, 격리, 테스트, 그리고 자체 유계 증명에 의존합니다. 모든 이미지는 자신의 정확한 seL4 구성을 기록합니다(보안).
누구나 코드를 읽을 수 있다면 덜 안전하지 않습니까?
아니요. NoWayOS의 보안은 비밀 유지가 아니라 설계에서 나옵니다. 무엇을 뺐는지, 그리고 남긴 것을 둘러싼 구획에서 나옵니다. 공개되어 있으면 누구나 주장을 확인하고, 증거를 직접 실행하고, 발견한 것을 알려 줄 수 있습니다.
취약점이 발견되면 어떻게 됩니까?
발견된 취약점은 그것이 있는 구획 안에 머물도록 설계되어 있으므로, 수정하는 동안 피해가 제한됩니다. 또 코드가 훨씬 적으니 고칠 것도 훨씬 적습니다. 수정은 안전하게 되돌릴 수 있는 서명된 업데이트로 제공될 예정입니다. 이는 설계되었지만 아직 구현되지 않았습니다. 취약점을 신고하려면 공개 이슈가 아니라, 각 저장소의 SECURITY.md에 설명된 대로 비공개로 알려 주십시오.
사용하기
기존 애플리케이션을 실행할 수 있습니까?
지금 그대로는 실행할 수 없습니다. NoWayOS는 NoWayOS용으로 Rust로 작성한 애플리케이션을 실행합니다. Linux나 Windows 프로그램, 웹 앱은 실행할 수 없습니다. 그런 프로그램에 필요한 것이 하나도 들어 있지 않기 때문입니다. 화면은 쉬운 부분입니다. Screen Compiler가 지원하는 부분 집합에 맞춰 작성한 React 화면은 빌드할 때 네이티브 Rust로 변환됩니다. 애플리케이션의 로직은 NoWayOS 보호 도메인으로 다시 만듭니다.
웹 브라우저가 있습니까?
없습니다. 사실 그게 핵심입니다. NoWayOS 장치에는 브라우저 엔진도, WebView도, JavaScript도 없습니다. 화면은 NoWayOS 자체의 작은 사용자 인터페이스가 그리는 네이티브 Rust이며, 그래도 여전히 React로 디자인해 빌드할 때 변환할 수 있습니다.
어떤 하드웨어에서 실행됩니까?
모든 시스템이 먼저 부팅하는 QEMU의 AArch64 머신, 그리고 저렴한 레퍼런스 보드인 Raspberry Pi 5에서 실행됩니다. 하드웨어 신뢰 루트를 갖춘 NXP의 i.MX8 제품군을 프로덕션 하드웨어로 계획하고 있으며, 아직 지원하지 않습니다. NoWayOS를 빌드하려면 Podman(또는 Docker)과 make가 필요합니다. NoWayOS는 Apple 실리콘에서 개발되며, x86-64 호스트는 아직 테스트하지 않았습니다.
어떻게 써 볼 수 있습니까?
nowayos 저장소를 클론하고 make container를 한 번 실행한 다음 make demo를 실행하십시오. 클릭할 수 있는 데모의 스크립트 세션이 여러분의 컴퓨터에서 실행되며, 모든 프레임을 검사합니다. 하드웨어는 필요 없습니다. 이어서 make qemu-test SYSTEM=hello를 실행하면 QEMU에서 seL4가 부팅합니다. 자세한 과정은 시작하기에서 안내합니다.