NoWayOS
AR
GitHub
القائمةإغلاق

أقل، عن قصد

Single Purpose OS

حاسوب لا يشغله شيء آخر.

لا متصفح. لا سطح مكتب. لا صدفة أوامر. لا تسجيل دخول. مهمة واحدة فحسب، مبنية من الشيفرة التي تحتاجها وحدها، ومعزولة في حجرات فوق النواة المصغرة seL4، ومكتوبة بلغة Rust.

يعمل اليوم في QEMU وعلى Raspberry Pi 5 · مفتوح المصدر على GitHub

01 / مبدأ المهمة الواحدة

مهمة واحدة.وكل ما عداها مستبعد.
صورة توضيحية للمبدأ.

كيف وصلنا إلى هنا

بدأ الأمر بأماكن لا تحتمل يومًا سيئًا.

لم نخطط لكتابة نظام تشغيل. أردنا حماية بضعة أجهزة بالغة الأهمية، فظللنا نجد المشكلة نفسها تحتها جميعًا.

المهمة
حماية الأنظمة التي يقوم عليها البلد: أنظمة التحكم التي تُبقي الكهرباء متدفقة والمياه نظيفة، والشبكات التي يعتمد عليها المستشفى، والبوابات التي تنقل بياناتها إلى الخارج، والطرفيات في غرفة التحكم، وكل جهاز حولها، وصولًا إلى الشاشة التي يقترب منها غريب في مكان عام. كان لكل منها مهمة واحدة. وكان كل منها يشغّل نظام تشغيل بُني ليؤدي آلاف المهام.
المعضلة
يصل النظام عام الأغراض ومعه كل ما قد يحتاجه يومًا: متصفح، وسطح مكتب، وصدفة أوامر، وتسجيلات دخول، وخدمات خلفية. قيّده بتطبيق واحد، وسيبقى ذلك كله موجودًا تحته، ينتظر من يجد طريقًا للعودة إليه. كل سطر زائد شيء يجب ترقيعه، وشيء يمكن مهاجمته.
المنعطف
فطرحنا السؤال المعاكس: ماذا لو لم يحمل الجهاز سوى مهمته الوحيدة؟ بدأنا من seL4، وكتبنا كل ما يخصنا فوقه بلغة Rust، وعزلنا كل جزء في حجرة خاصة به، واستبعدنا كل ما عدا ذلك. ثم دوّنّا الأدلة، كي لا يضطر أحد إلى الأخذ بكلامنا.
المفاجأة
ثم نظرنا حولنا. البوابة في المحطة الفرعية، والطرفية في غرفة التحكم، واللوحة على جانب المضخة، والصندوق بين شبكتين، وشاشة العرض على جدار محطة القطار: لكل جهاز مخصص تقريبًا مهمة واحدة. ما بدأ درعًا للبنية التحتية الحيوية تبيّن أنه طريقة أفضل لبنائها جميعًا. ونسمّيه Single Purpose OS.

مساحة أقل للهجوم. ترقيع أقل بكثير. ولا شيء آخر يشغله.

ما نعنيه

الغاية مبنية فيه. وكل ما عداها مستبعد.

يُبنى Single Purpose OS لمهمة واحدة يؤديها جهاز واحد، بدلًا من أن يُبنى لتشغيل أي شيء ثم يُقيَّد بشيء واحد. وثلاثة أمور تجعله كذلك.

  1. مبني لمهمة واحدة

    تحوي صورة الجهاز تطبيقه، وبرامج التشغيل التي يستخدمها ذلك التطبيق، والنواة. ولا شيء مما قد تحتاجه مهمة أخرى موجود فيها: لا متصفح ولا سطح مكتب ولا صدفة أوامر ولا مدير حزم ولا حساب مستخدم.

  2. معزول من الداخل

    يعمل كل جزء (الشاشة، والإدخال، والشبكة، والتطبيق) في حجرة خاصة به، ولا يصل إلا إلى ما مُنح له. وقد صُمّم ليبقى العطل في أي جزء محصورًا فيه.

  3. يُظهر أدلّته

    يأتي ومعه الأدلة على ما بداخله وعلى ما يحق لكل جزء أن يفعله: كل إذن مدوَّن، وكل مكوّن مُدرج، وفحوص يستطيع أي أحد تشغيلها.

ليس وضع الكشك، الذي يقيّد نظامًا عام الأغراض بتطبيق واحد ويترك كل ما عداه في مكانه. وليس نظام تشغيل أحادي المستخدم، الذي يقيّد من يستخدم الحاسوب، لا ما يحويه.

ما ليس موجودًا

برمجيات أقل. عن قصد وتصميم.

تشغّل معظم الأجهزة المخصصة نظامًا عام الأغراض فوقه تطبيق واحد، ويبقى كل ما عداه تحته. أما NoWayOS فيبدأ من المهمة، ولا يضيف إلا ما تحتاجه، ويستبعد الباقي. وهذا هو الفرق.

لا سبيل لاستغلال ما لم يُبنَ فيه أصلًا.
جهاز مقيَّد نموذجيجهاز يعمل بـ NoWayOS
متصفح ويب ومحرك JavaScriptمُضمَّنغير مبني فيه
سطح مكتب ونظام نوافذمُضمَّنغير مبني فيه
صدفة أوامر وسطر أوامرمُضمَّنغير مبني فيه
مدير حزممُضمَّنغير مبني فيه
حسابات مستخدمين وتسجيلات دخولمُضمَّنغير مبني فيه
خدمات خلفيةمُضمَّنغير مبني فيه
إعدادات لتقييد كل ذلكمُضمَّنغير مبني فيه
النواةعامة الأغراض: عشرات الملايين من الأسطرseL4: نحو 10,000 سطر
برامج التشغيللعتاد قد يصادفهللعتاد الذي يستخدمه فقط
تطبيقكمُضمَّنمُضمَّن
لا سبيل لاستغلال ما لم يُبنَ فيه أصلًا.

Screen Compiler

تحب React؟ ونحن كذلك.

تريد واجهات غنية وحديثة، تبنيها بأسلوب العمل الذي تعرفه أصلًا؟ اكتب شاشاتك بـ React. ويحوّلها Screen Compiler إلى مكوّنات Rust أصلية تعمل مباشرة على NoWayOS: بلا متصفح، وبلا JavaScript، وبلا صفحة ويب يمكن مهاجمتها.

  • احتفظ بأدواتك: المكوّنات، والخصائص (props)، ورموز التصميم (design tokens)، والمحرر الذي تستخدمه أصلًا.
  • لبنات بناء حقيقية: التخطيطات، والنصوص، والأزرار، وحقول إدخال النص، ومربعات الاختيار، ومجموعات أزرار الاختيار، والبطاقات، والتنبيهات، وأشرطة التقدم، والأيقونات.
  • بدقة أو لا شيء. يحوّل مجموعته الجزئية بدقة، ويرفض كل ما عداها مع ذكر الملف والسطر والعمود. ولا يخمّن أبدًا.
  • مُدقَّق حتى آخر بكسل. كل شاشة محوّلة يرسمها NoWayOS وتُقارن بصورتها المعتمدة.

حوّل شاشتك الأولى إلى Rust

المُدخَل: React
<Column gap={SPACE_SM} padding={SPACE_LG}>
  <Text id="title">Welcome</Text>
  <Text>Touch Start to begin.</Text>
  <Button id="start" onPress={onStart}>
    Start
  </Button>
</Column>
المُخرَج: Rust
let n1 = b.text("Welcome")?; // welcome.tsx:17:9
let n2 = b.text("Touch Start to begin.")?;
let n5 = b.button("Start", actions::START)?;
let n0 = b.column(
    ui::Layout::new()
        .gap(super::tokens::SPACE_SM)
        .padding(super::tokens::SPACE_LG),
    &[n1, n2, n5],
)?;

مختصرة من إحدى شاشات الاختبار في Screen Compiler وشيفرة Rust التي يولّدها منها.

لماذا يهم ذلك

مهمة واحدة. وكفى.

ابنِ حاسوبًا لشيء واحد، وستتمكن من بنائه بطريقة مختلفة تمامًا. وهذا ما تكسبه من ذلك.

  • أكثر أمانًا

    لا سبيل لاستغلال ما لم يُبنَ فيه أصلًا.

    • لا محرك متصفح، ولا نظام نوافذ، ولا صدفة أوامر، ولا مدير حزم، ولا حسابات مستخدمين. وما ليس في الصورة لا يمكن استخدامه ضدها.
    • الشاشة والإدخال والشبكة وتطبيقك، يعيش كلٌّ منها في حجرة معزولة خاصة به، ولا يصل إلا إلى ما مُنح له. وهو مبني بحيث يبقى العطل في أي جزء محصورًا في ذلك الجزء.
    • في قلبه seL4، الذي تصفه مؤسسة seL4 بأنه «نواة نظام التشغيل الأعلى ضمانًا والأسرع في العالم».
    • Rust في كل مكان. والشيفرة غير الآمنة (unsafe) محصورة في حفنة من الحزم (crates) المراجَعة، ويفرض البناء هذه القائمة.
  • أكثر كفاءة

    لا شيء خامل. ولا شيء يعترض الطريق.

    • لا خدمات خلفية، ولا أداة تحديث لبرمجيات لا تستخدمها أبدًا. شغّله، فيمضي مباشرة إلى مهمته الوحيدة.
    • كل بايت يُحدَّد وقت البناء: يحصل كل جزء على قدر ثابت من الذاكرة ولا يمكنه أبدًا أن يأخذ أكثر. ومعظم شيفرة الجهاز لا تحجز أي ذاكرة على الإطلاق، وحتى عميل TLS يحصل على ميزانية ثابتة: فإن نفدت يومًا، توقّف بشكل نظيف بدلًا من أن يتمدد.
    • واجهة أصلية واضحة لا تعيد رسم إلا ما تغيّر، تعمل بارتياح على عتاد منخفض التكلفة مثل Raspberry Pi 5.
  • أسهل في العمل

    لغة واحدة. حاوية واحدة. المحاكي أولًا.

    • Rust من برامج التشغيل إلى واجهة المستخدم.
    • صمّم الشاشات بـ React. ويحوّلها Screen Compiler إلى Rust أصلية وقت البناء: واجهة حديثة بلا محرك متصفح ولا JavaScript على الجهاز. أو اكتبها بـ Rust.
    • تأتي سلاسل الأدوات وحزمة تطوير seL4 Microkit SDK و QEMU مثبّتة الإصدارات في حاوية تطوير واحدة. ولا يحتاج جهازك إلا إلى Podman و make، و Python للتحكم في Raspberry Pi.
  • أسهل في الإثبات

    كل إذن مدوَّن. وكل صورة مفصّلة بندًا بندًا.

    • كل صلاحية يمنحها النظام مُدرجة في ملف، ويفشل البناء إذا اختلف الاثنان.
    • تُشحن كل صورة مع قائمة مكونات البرمجيات وسجل لإعداد seL4 الخاص بها.
    • براهين محدودة على أن كل مفكك للرسائل لا ينهار ولا يفيض ولا يقرأ خارج الحدود أبدًا، إضافة إلى اختبار التشويش وفحوص التراخيص والتحذيرات الأمنية: كل منها أمر يمكنك تشغيله بنفسك.

حين يتوقف عليه كل شيء، امنحه مهمة واحدة.

لبعض الأجهزة عمل أهم من أن يُشارَك مع ما يشتته: أنظمة التحكم في شبكة الكهرباء، والبوابة الخارجة من محطة المياه، والطرفية في غرفة التحكم، والحد الفاصل بين شبكتين. صُمّم NoWayOS حول الدور الذي يحتاج كل جهاز إلى أدائه، مع الأدلة التي تساعدك على فهم ما بداخله.

براهين، لا صفات

لا يعنيه إلا شأنه. ويمكنك أن تتحقق.

لا يساوي الادعاء الأمني أكثر من الأدلة التي تسنده. ويدوّن NoWayOS الأدلة، وكل جزء منها ينتج عن أمر يمكنك تشغيله.

  • كل إذن مدوَّن

    يُدرج ملف الأذونات لكل نظام كل أولوية ومنطقة ذاكرة وجهاز ومقاطعة وقناة يمنحها. ويفشل البناء إذا اختلف النظام والقائمة.

  • عزل يُختبر بحيث يمكن أن يفشل

    تحاول اختبارات العزل الوصول إلى ما لم يُمنح لها، ويجب أن يوقفها seL4. ويجب أن يفشل متغيّر وُسّع فيه إذن عمدًا، وهو ما يُثبت أن الاختبار قادر على الفشل.

  • كل صورة مفصّلة بندًا بندًا

    قائمة مكونات برمجيات بصيغة CycloneDX لكل صورة: النواة، والمُحمِّل، وكل نطاق حماية والحزم التي فيه، مع قيمة التجزئة لكل منها.

  • بوابات بعيدة عن المتناول

    الفحوص التي يجب أن تجتازها كل مساهمة موجودة في Defence Agent، وهو مستودع عام مستقل، وأي طلب دمج يمسّ بوابةً يُعلَّم لمسؤول المشروع.

اقرأ الأدلة الخاصة بصورة حقيقية واحدة

في العلن

أربعة مشاريع. لكلٍّ منها مهمة واحدة.

المشاريع الأربعة كلها مفتوحة المصدر، وتُطوَّر علنًا تحت مؤسسة NoWayOS على GitHub. استنسخها، وابنِها، وتحقق من كل سطر فيها بنفسك.

  • NoWayOS

    Single Purpose OS.

    أنماط نطاقات الحماية على seL4 و Microkit، ورسائل محددة النوع، وبرامج تشغيل، وشبكات، وواجهة مستخدم أصلية، مع حاوية التطوير والفحوص التي يُبنى بها كل مستودع من مستودعات NoWayOS.

    الحالة
    قيد التطوير
    الترخيص
    MIT OR Apache-2.0
    NoWayOS على GitHub
  • Screen Compiler

    صمّم بـ React. واشحن Rust أصلية. بلا متصفح على الجهاز.

    يحوّل شاشات React، المكتوبة بـ TSX ضمن مجموعة جزئية مُعلنة، إلى Rust لواجهة مستخدم NoWayOS. يعمل وقت البناء، على جهازك أو في التكامل المستمر (CI)، ولا يُشحن أبدًا.

    الحالة
    قيد التطوير: المجموعة الجزئية v0 والأجزاء الأولى من v1
    الترخيص
    MIT
    Screen Compiler على GitHub
  • Showcase

    تطبيقات آمنة يمكنك تشغيلها على Raspberry Pi.

    عُدّة لشاشات الخدمة الذاتية الآمنة، وتطبيق مرجعي للبناء عليه، ومشغّل لأمثلة تحت علامات تجارية خيالية يُقلع فيه Raspberry Pi 5.

    الحالة
    في مرحلة مبكرة، ولا يصلح للنشر
    الترخيص
    MIT OR Apache-2.0
    Showcase على GitHub
  • Defence Agent

    البوابات التي يجب أن تجتازها كل مساهمة، بعيدًا عن متناول طلب الدمج.

    كل بوابة أمنية يجب أن يجتازها أي تغيير على مشاريع NoWayOS المفتوحة، مدوَّنةً مع التهديد الذي تتصدى له ومن يحق له تغييرها، ومعها الوكيل الذي يشغّلها. لا يغيّر طلب الدمج أبدًا ما يحكم عليه، ولا يقدّمه.

    الحالة
    عام: البوابات مدوَّنة؛ ويأتي الوكيل وأدواته لاحقًا
    الترخيص
    MIT OR Apache-2.0
    Defence Agent على GitHub

المزيد عن المشاريع

الشركاء التجاريون

منتجات تجارية، مبنية على NoWayOS.

Adappt.ai، راعي NoWayOS، هي أول شريك تجاري له. وهي تبني منتجين تجاريين على NoWayOS، وكلاهما قيد التطوير.

هل تودّ أن تصبح شريكًا تجاريًا؟ راسلنا على partners@nowayos.com

Remote Desktop
إطلالة مُحصّنة. محطة آمنة لسطح مكتب Windows بعيد، صُمّمت لعزل الاتصال في حجرة خاصة به وإبقاء بيانات الاعتماد بعيدة عن متناوله.
Data Diode
لا سبيل للعودة. حدّ أحادي الاتجاه لإخراج البيانات من شبكة محمية، صُمّم حول وصلة تحمل الضوء في اتجاه واحد فقط.

أين وصلنا

يعمل اليوم. ولم يكتمل بعد.

NoWayOS قيد التطوير وليس مهيأً بعدُ للاستخدام في الإنتاج، وستتغير واجهات API فيه. هذا ما يعمل اليوم، وما سيأتي بعده.

في QEMU
أكثر من خمسين نظامًا تُقلع وتتحقق من مخرجاتها، من أول نطاق حماية إلى مكدس الشبكة وهو يحصل على عنوان عبر DHCP، وحالة الأمان عند العطل التي يفرضها المشرف، وواجهة مستخدم قابلة للنقر.
على Raspberry Pi 5
واجهة المستخدم على شاشة HDMI، ولوحة مفاتيح وفأرة عبر USB، والمؤقتات، ومؤقت المراقبة، وإعادة التعيين التي يجريها المشرف، كلها تعمل على اللوحة. ويجري العمل على تشغيل المزيد من عتادها.
ما زال قادمًا
الإقلاع الآمن، والتحديثات الموقّعة التي تُطبَّق على الجهاز، والعتاد الصناعي (NXP i.MX8).
براهين seL4
كل نظام يعمل على seL4، لكن لا توجد بعدُ صورة من صور NoWayOS تستخدم إعدادًا تغطيه براهين seL4 المكتملة. وتسجّل كل صورة الإعداد الذي تستخدمه.

تابع العمل

غاية واحدة. والكثير لاستكشافه.

ابدأ بالتصميم، أو افحص الأدلة، أو ابنِ نظامك الأول بمساعدة إرشادات المطورين. وهذا الموقع يلتزم القاعدة نفسها بالمناسبة: لا نصوص برمجية، ولا ملفات تعريف ارتباط، ولا شيء آخر يشغله.