सुरक्षा
यह अपने काम से काम रखता है।
NoWayOS डिवाइस वह सब बाहर छोड़ देता है जिसकी उसके काम को ज़रूरत नहीं, और जो बचता है उसे कम्पार्टमेंट में सील कर देता है। यह पेज बताता है कि यह किस पर टिका है, क्या साबित है, क्या अभी नहीं, और क्या सही करना आपकी ज़िम्मेदारी है।
इस पेज पर
क्या बाहर छोड़ा गया है
NoWayOS इमेज में उसका एप्लिकेशन, वे ड्राइवर जिन्हें वह एप्लिकेशन इस्तेमाल करता है, और seL4 माइक्रोकर्नेल होता है। न ब्राउज़र इंजन है, न विंडो सिस्टम, न शेल, न पैकेज मैनेजर, न यूज़र अकाउंट: इनमें से कुछ भी कभी भीतर बनाया ही नहीं गया, इसलिए एक्सप्लॉइट करने, पैच करने या ग़लत कॉन्फ़िगर करने के लिए इनमें से कुछ मौजूद ही नहीं। NoWayOS को ग़ैर-ज़रूरी सॉफ़्टवेयर और सर्विस घटाने के लिए डिज़ाइन किया गया है: अगर काम को इसकी ज़रूरत नहीं, तो यह इमेज में नहीं है।
नाम का मतलब यही है: जो कभी बनाया ही नहीं गया, उसे एक्सप्लॉइट करने का कोई रास्ता नहीं। यह इस बारे में एक बयान है कि क्या मौजूद नहीं है, यह वादा नहीं कि कुछ भी ग़लत नहीं हो सकता। जो भीतर बना है, उसमें अब भी बग हो सकते हैं; दावे ये हैं कि वह बहुत कम है, और कि एक बग अपने कम्पार्टमेंट में ही रहता है।
किसी जनरल-पर्पज़ सिस्टम को लॉक डाउन करना उसे कॉन्फ़िगरेशन से सुरक्षित बनाना है: बंद किए गए फ़ीचर अब भी मौजूद हैं, और एक बग हर सेटिंग को दरकिनार कर सकता है। NoWayOS का लक्ष्य बनावट से सुरक्षित होना है: वे फ़ीचर कभी वहाँ थे ही नहीं।
फ़ॉल्ट को कैसे रोके रखा जाता है
- हर हिस्सा अपने प्रोटेक्शन डोमेन में चलता है, अपनी मेमोरी के साथ, और उसके पास सिर्फ़ वही कैपेबिलिटी होती हैं जो उसका सिस्टम डिस्क्रिप्शन देता है। seL4 इन्हें लागू करता है।
- हर ग्रांट सिस्टम की ग्रांट्स फ़ाइल में सूचीबद्ध है, और अगर डिस्क्रिप्शन कुछ ऐसा देता है जो फ़ाइल में नहीं, या इसका उल्टा, तो बिल्ड फ़ेल हो जाता है। किसी ग्रांट को चौड़ा करने का रिव्यू सुरक्षा बदलाव के रूप में होता है।
- हिस्सों के बीच के मैसेज फ़िक्स्ड-साइज़ रिकॉर्ड होते हैं, जिन्हें जाँचने से पहले शेयर्ड मेमोरी से बाहर कॉपी किया जाता है, ताकि भेजने वाला किसी रिकॉर्ड को जाँच पास होने के बाद बदल न सके।
- जाँचे जाने तक हर इनपुट शत्रु है। बाहरी इनपुट के हर पार्सर की फ़ज़िंग होती है और उसे कभी पैनिक न करने के लिए बनाया गया है, और एप्लिकेशन को की, पॉइंटर और टच इवेंट दिखते हैं, कभी डिवाइस प्रोटोकॉल नहीं।
- एक सुपरवाइज़र फ़ॉल्ट करने वाले हिस्से को रोकता है और सिस्टम को साफ़ तरीके से दोबारा शुरू करता है। बार-बार फ़ॉल्ट होने पर डिवाइस कोल्ड स्टार्ट तक फ़ेल-सेफ़ स्थिति में रहता है।
seL4 के प्रूफ़ क्या कवर करते हैं, और क्या नहीं
seL4 लगभग 10,000 लाइनों का एक माइक्रोकर्नेल है, जिसके पास शुद्धता और सुरक्षा के मशीन-जाँचे प्रूफ़ हैं। ये प्रूफ़ एक दुर्लभ उपलब्धि हैं, और ये विशिष्ट प्लेटफ़ॉर्म पर विशिष्ट कॉन्फ़िगरेशन के लिए लागू होते हैं। सटीक स्थिति यह है:
NoWayOS seL4 माइक्रोकर्नेल पर चलता है, जिसके पास हमारे हार्डवेयर पर विशिष्ट कॉन्फ़िगरेशन के लिए शुद्धता और सुरक्षा के मशीन-जाँचे प्रूफ़ हैं; NoWayOS seL4 का मिक्स्ड-क्रिटिकैलिटी कॉन्फ़िगरेशन इस्तेमाल करता है, जिसके प्रूफ़ पर काम जारी है।
- प्लेटफ़ॉर्म: seL4 के AArch64 सत्यापित कॉन्फ़िगरेशन की सूची में Raspberry Pi 5 और NXP के i.MX8M Mini, Plus और Quad शामिल हैं।
- शेड्यूलिंग: Microkit seL4 का मिक्स्ड-क्रिटिकैलिटी (MCS) कर्नेल बिल्ड करता है, जिसके AArch64 प्रूफ़ पर काम जारी है। इसलिए आज कोई भी NoWayOS इमेज seL4 के पूरे हो चुके प्रूफ़ के दायरे में नहीं है।
- कोर: प्रूफ़ सिंगल-कोर कर्नेल के लिए हैं। कई कोर इस्तेमाल करने वाली इमेज उनके दायरे से बाहर है, और यह बात खुद बताती है।
- कर्नेल के ऊपर: Microkit की टूलिंग और NoWayOS के प्रोटेक्शन डोमेन और ड्राइवर seL4 के प्रूफ़ के दायरे में नहीं आते। उन पर भरोसे का आधार Rust, आइसोलेशन, रिव्यू, टेस्टिंग और NoWayOS के अपने बाउंडेड प्रूफ़ हैं।
हर इमेज अपना कॉन्फ़िगरेशन अपने बगल में एक sel4-config.txt में दर्ज करती है। hello सिस्टम के एक डेवलपमेंट बिल्ड का रिकॉर्ड अपने बारे में यह कहता है:
system: hello
board: qemu_virt_aarch64
configuration: debug
sdk: Microkit 2.3.1
status: development build: a debug kernel, with printing and debug interfaces, outside seL4's proofs
status: outside seL4's completed proofs: a mixed-criticality (MCS) kernel, whose AArch64 proofs are in progress
status: outside seL4's proofs: a platform that is not on seL4's AArch64 verified list
अगर किसी इमेज का कर्नेल सत्यापित कॉन्फ़िगरेशन के हर विकल्प से मेल खाता, तब भी उसे यहाँ “सत्यापित” नहीं कहा जाता। रिकॉर्ड तथ्य बताता है, और तथ्य काफ़ी हैं।
सबूत, और हर एक का कमांड
इस पेज के हर दावे के साथ उसका सबूत है, और सबूत का हर हिस्सा एक ऐसे कमांड से आता है जिसे कोई भी डेव कंटेनर में चला सकता है। make ci इन्हें क्रम से चलाता है, और make ci CI_SCOPE=full हर प्रूफ़ और फ़ज़ टार्गेट चलाता है; जाँचें और सबूत हर एक को समझाता है।
| दावा | सबूत | चलाकर देखें |
|---|---|---|
| हर ग्रांट दर्ज है। | हर सिस्टम की ग्रांट्स फ़ाइल, जिसे हर बिल्ड पर उसके सिस्टम डिस्क्रिप्शन से मिलाकर जाँचा जाता है। | make qemu-test SYSTEM=hello |
| कोई हिस्सा उस तक नहीं पहुँच सकता जो उसे दिया नहीं गया। | आइसोलेशन टेस्ट, जिनके प्रोब बिना ग्रांट के रीड और राइट करते हैं, जिन्हें seL4 को रोकना ही होता है, और जान-बूझकर चौड़ी की गई ग्रांट वाला एक वेरिएंट, जिसे फ़ेल होना ही चाहिए। | make qemu-test SYSTEM=isolation-test |
| मैसेज डिकोडर एक सीमा तक के हर इनपुट पर खरे उतरते हैं। | हर मैसेज-रिकॉर्ड डिकोडर के Kani प्रूफ़, म्यूटेशन जाँचों के साथ, जो दिखाती हैं कि प्रूफ़ फ़ेल हो सकते हैं। | make kani |
| बाहरी इनपुट के पार्सर दुर्भावनापूर्ण इनपुट झेल लेते हैं। | अविश्वसनीय इनपुट के हर पार्सर के लिए एक फ़ज़ टार्गेट। कोई क्रैश, ठीक होने के बाद, एक रिग्रेशन टेस्ट बन जाता है। | make fuzz |
| unsafe कोड सिर्फ़ वहीं है जहाँ उसे मंज़ूरी मिली है। | उन गिनी-चुनी क्रेट और फ़ाइलों की एक अलाउ-लिस्ट जो इसे इस्तेमाल कर सकती हैं, जिसे make ci लागू करता है, और उन क्रेट पर Miri चलाया जाता है। | make unsafe-audit |
| हर कंपोनेंट की जानकारी है। | हर वर्कस्पेस और हर सिस्टम इमेज के लिए एक CycloneDX सॉफ़्टवेयर बिल ऑफ़ मटीरियल्स, हर कंपोनेंट अपने हैश के साथ। | make image-sbom SYSTEM=hello |
| लाइसेंस और एडवाइज़री जाँची जाती हैं। | हर वर्कस्पेस पर cargo-deny: लाइसेंस, स्रोत, प्रतिबंधित क्रेट और ज्ञात एडवाइज़री। | make deny |
| कोड में कोई सीक्रेट नहीं है। | पूरा ट्री और हर कमिट, ऑफ़लाइन, कुंजियों और क्रेडेंशियल्स के लिए स्कैन किया जाता है। | make secrets |
| हर इमेज का seL4 कॉन्फ़िगरेशन रिकॉर्ड में है। | हर इमेज के बगल में एक sel4-config.txt, और यह जाँच कि रिकॉर्ड के रेफ़रेंस मान पिन किए गए Microkit SDK से मेल खाते हैं। | make sel4-config-check |
एक इमेज का सबूत पढ़ें
सबूत कैसा दिखता है, यह देखने के लिए आपको कुछ भी बिल्ड करने की ज़रूरत नहीं। यहाँ एक असली इमेज का पूरा सबूत है: ui-interactive, क्लिक किया जा सकने वाला यूज़र इंटरफ़ेस, जिसे 1 नवंबर 2026 को QEMU के लिए बिल्ड किया गया।
- इसका सॉफ़्टवेयर बिल ऑफ़ मटीरियल्स (CycloneDX 1.5): 62 हिस्से, seL4 कर्नेल और Microkit के लोडर से लेकर हर प्रोटेक्शन डोमेन के हर क्रेट तक, हर एक अपने SHA-256 के साथ।
- इसका seL4 कॉन्फ़िगरेशन रिकॉर्ड: यह कौन-सा कर्नेल चलाती है, seL4 के सत्यापित कॉन्फ़िगरेशन से विकल्प-दर-विकल्प मिलाकर, और साफ़ तौर पर यह भी कि यह कहाँ प्रूफ़ के दायरे से बाहर पड़ती है।
- इसका सिस्टम डिस्क्रिप्शन: हर प्रोटेक्शन डोमेन, मेमोरी रीजन, इंटरप्ट और चैनल, जैसे Microkit उन्हें बिल्ड करता है।
- इसकी ग्रांट्स फ़ाइल: वही ग्रांट, प्रति लाइन एक तथ्य के रूप में दर्ज, जिन्हें बिल्ड डिस्क्रिप्शन से मिलाकर जाँचता है।
- यह जो स्क्रीन ड्रॉ करती है, जिसे हर बार टेस्ट चलने पर इस स्वीकृत इमेज से पिक्सेल-दर-पिक्सेल मिलाया जाता है।
क्या आपकी ज़िम्मेदारी रहती है
NoWayOS एक प्लेटफ़ॉर्म है, कोई प्रमाणित प्रोडक्ट नहीं। एक सुरक्षित डिवाइस इस पर भी निर्भर करता है कि उसे कैसे डिप्लॉय किया और चलाया जाता है, और वह हिस्सा उसकी ज़िम्मेदारी है जो उसे बनाता और ऑपरेट करता है।
- भौतिक सुरक्षा। प्लग इन किया गया कोई डिवाइस या पावर केबल पर पड़ा एक हाथ अब भी किसी डिवाइस को ठप कर सकता है। एनक्लोज़र, पोर्ट और पावर, NoWayOS पर बने प्रोडक्ट के डिज़ाइन का हिस्सा हैं।
- हर सिस्टम क्या ग्रांट करता है। NoWayOS जाँचता है कि सिस्टम और उसकी ग्रांट्स फ़ाइल आपस में मेल खाते हैं। वे ग्रांट काम के लिए सही हैं या नहीं, यह एक डिज़ाइन निर्णय है, और उसका रिव्यू भी डिज़ाइन निर्णय की तरह ही होना चाहिए।
- नेटवर्क और बैक एंड। डिवाइस सिर्फ़ उन्हीं गंतव्यों से जुड़ता है जिनकी उसका सिस्टम अनुमति देता है। वे सर्विस जो कुछ प्राप्त करती हैं, उसके साथ जो करती हैं, उसे सुरक्षित रखना उनकी ज़िम्मेदारी है।
- कुंजियाँ और अपडेट। ऐसे साइन किए गए अपडेट, जो गड़बड़ी होने पर सुरक्षित रूप से पिछली स्थिति पर लौट सकें, डिज़ाइन किए गए हैं, अभी बनाए नहीं गए। साइनिंग कुंजियाँ किसके पास हों, और किसी रिलीज़ को मंज़ूरी कैसे मिले, यह एक ऑपरेटिंग निर्णय है।
- प्रमाणन। NoWayOS पर चलने वाले विनियमित प्रोडक्ट अपना खुद का प्रमाणन रखते हैं। NoWayOS को उनकी ज़रूरत का सबूत देने के लिए डिज़ाइन किया गया है; यह खुद प्रमाणित नहीं है।
अभी नहीं बना
- सिक्योर बूट और अटेस्टेशन हार्डवेयर रूट ऑफ़ ट्रस्ट वाले प्रोडक्शन हार्डवेयर का हिस्सा हैं। दोनों में से कोई भी नहीं बना है।
- डिवाइस पर लागू होने वाले साइन किए गए अपडेट। अपडेट रिकॉर्ड और उनकी जाँचें मौजूद हैं; डिवाइस पर अपडेट लागू करने वाला रास्ता अभी नहीं है।
- Raspberry Pi 5 एक डेवलपमेंट बोर्ड है, कोई हार्डन किया हुआ डिवाइस नहीं। जिसके हाथ में यह है, वह इसका सॉफ़्टवेयर बदल सकता है, और इस पर USB डिवाइसों की मेमोरी एक्सेस अभी सीमित नहीं की गई है।
शब्द जो आपको यहाँ नहीं मिलेंगे
हम NoWayOS को “अनहैकेबल”, “टैम्पर-प्रूफ़” या “बुलेटप्रूफ़” नहीं कहते, और “ज़ीरो अटैक सरफ़ेस” का दावा नहीं करते। कोई भी चीज़ ऐसी नहीं होती, और ऐसा दावा देखकर आप पढ़ना बंद कर दें, तो ठीक ही करेंगे। इस पेज के दावे इससे छोटे हैं, और हर एक के साथ उसका सबूत है।
सुरक्षा खामी की रिपोर्ट करना
कृपया किसी सुरक्षा खामी की रिपोर्ट निजी तौर पर करें, रिपॉज़िटरी के Security टैब पर GitHub की प्राइवेट वल्नरेबिलिटी रिपोर्टिंग के ज़रिए या security@nowayos.com पर ईमेल करके, जैसा कि हर रिपॉज़िटरी की SECURITY.md बताती है, और किसी सार्वजनिक इशू में नहीं। चूँकि हर हिस्सा अपने कम्पार्टमेंट में चलता है, इसलिए किसी खामी को, सुधार तैयार होने तक, वहीं रुके रहने के लिए डिज़ाइन किया गया है।