← नवीनतम पेपर
💻 computer science

obliv-clang: Real-World Oblivious Programming in C++

यह शोध पत्र obliv-clang को प्रस्तुत करता है, जो एक संकलन-समय (compilation-time) जाँच उपकरण है जो उच्च प्रदर्शन और उद्योग-मानक कोडबेस के साथ अनुकूलता बनाए रखते हुए, साइड-चैनल लीक्स को रोकने के लिए नेस्टेड पॉइंटर्स जैसी जटिल विशेषताओं वाले C++ प्रोग्राम्स की ओब्लिवियसनेस (obliviousness) को औपचारिक रूप से सत्यापित करता है।

मूल लेखक: Yunqian Luo, Mingyu Gao

प्रकाशित 2026-06-16
📖 5 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Yunqian Luo, Mingyu Gao

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक उच्च-सुरक्षा वाली रसोई में एक गुप्त रेसिपी तैयार कर रहे हैं एक मास्टर शेफ के रूप में। लक्ष्य केवल सामग्रियों को छिपाना नहीं है; बल्कि यह सुनिश्चित करना है कि आपकी गतिविधियों को देख रहा कोई भी व्यक्ति यह पता न लगा सके कि आप क्या पका रहे हैं।

यदि आप नमक का एक चुटकी तभी लेते हैं जब रेसिपी में इसकी आवश्यकता होती है, या यदि आप किसी विशिष्ट चरण पर पहुँचने पर अपनी कटिंग रोक देते हैं, तो खिड़की से देख रहा जासूस आपके कार्यों के समय या आपके चाकू के प्रहारों की गिनती करके आपकी रेसिपी का अनुमान लगा सकता है। कंप्यूटर वैज्ञानिक इसे "साइड-चैनल अटैक" (side-channel attack) कहते हैं।

यह पेपर obliv-clang को पेश करता है, जो इस तरह की जासूसी को रोकने के लिए डिज़ाइन किया गया एक नया टूल है। यह कैसे काम करता है, यहाँ सरल भाषा में समझाया गया है:

1. समस्या: "लीकी" (Leaky) रसोई

डिजिटल दुनिया में, भले ही आपका डेटा एक "ट्रस्टेड एक्जीक्यूशन एनवायरनमेंट" (एक सुरक्षित तिजोरी) में लॉक हो, फिर भी हैकर्स यह देख सकते हैं कि कंप्यूटर कैसे व्यवहार कर रहा है। वे देखते हैं:

  • टाइमिंग (Timing): एक गणना (calculation) में कितना समय लगता है।
  • एक्सेस पैटर्न (Access Patterns): कंप्यूटर किन मेमोरी स्लॉट्स को छूता है।

यदि कोई प्रोग्राम गुप्त डेटा (जैसे पासवर्ड) के आधार पर अलग तरह से व्यवहार करता है, तो हैकर कंप्यूटर के "डांस" को देखकर उस रहस्य का पता लगा सकता है।

2. समाधान: "ओब्लिवियस" (Oblivious) शेफ

इसे ठीक करने के लिए, प्रोग्रामर्स को ऐसा कोड लिखने की आवश्यकता है जो "ओब्लिवियस" हो। इसका अर्थ है कि प्रोग्राम को बिल्कुल एक जैसा व्यवहार करना चाहिए, चाहे गुप्त डेटा "1" हो या "0"। यह एक ऐसे शेफ की तरह है जो हर बार ठीक 10 सेकंड तक सब्जियां काटता है, चाहे वह वास्तव में प्याज काट रहा हो या सिर्फ नाटक कर रहा हो, ताकि जासूस यह पता न लगा सके कि क्या हो रहा है।

इस तरह का कोड हाथ से लिखना अविश्वसनीय रूप से कठिन और त्रुटिपूर्ण है। एक छोटी सी गलती (जैसे कि एक if स्टेटमेंट जो किसी गुप्त डेटा पर निर्भर हो) पूरे सुरक्षा चक्र को नष्ट कर सकती है।

3. पेश है obliv-clang: एक सख्त इंस्पेक्टर

लेखकों ने obliv-clang बनाया है, जो C++ कोड (उस भाषा का उपयोग करती है जिसका उपयोग अधिकांश प्रमुख सॉफ्टवेयर कंपनियां करती हैं) के लिए एक सुपर-स्ट्रिक्ट इंस्पेक्टर की तरह कार्य करता है।

  • यह प्रोफेशनल्स की भाषा बोलता है: पिछले टूल्स के विपरीत, जो प्रोग्रामर्स को एक अजीब, नई, बनाई हुई भाषा सीखने के लिए मजबूर करते थे, obliv-clang सीधे C++ के साथ काम करता है। यह पॉइंटर्स (वे वेरिएबल जो अन्य वेरिएबल्स की ओर इशारा करते हैं), क्लासेस और टेम्पलेट्स जैसी जटिल चीजों को समझता है। यह एक ऐसे इंस्पेक्टर की तरह है जो जानता है कि एक पेशेवर रसोई कैसे काम करती है, बजाय इसके कि वह केवल एक सरलीकृत खिलौना रसोई को समझता हो।
  • "O-Level" सिस्टम: यह टूल "ओब्लिवियस लेवल्स" (olevels) की अवधारणा का उपयोग करता है। इसे एक सुरक्षा क्लीयरेंस बैज के रूप में सोचें।
    • एक पब्लिक वेरिएबल का क्लीयरेंस कम होता है।
    • एक सीक्रेट वेरिएबल का क्लीयरेंस उच्च होता है।
    • टूल हर एक लाइन की जांच करता है ताकि यह सुनिश्चित हो सके कि आप गलती से भी एक हाई-क्लीयरेंस सीक्रेट को लो-क्लीयरेंस वाले व्यक्ति को न सौंप दें। यह "पॉइंटर्स टू पॉइंटर्स" (जैसे एक गुप्त जानकारी के नक्शे का नक्शा) को भी ट्रैक करता है ताकि यह सुनिश्चित हो सके कि सीक्रेट संदर्भों की एक श्रृंखला के माध्यम से लीक न हो जाए।
  • "अनसेफ" (Unsafe) ज़ोन: कभी-कभी, आपको कुछ जोखिम भरा करने की आवश्यकता होती है (जैसे डिबगिंग या किसी थर्ड-पार्टी लाइब्रेरी का उपयोग करना)। टूल आपको इन विशिष्ट क्षेत्रों को "अनसेफ" के रूप में चिह्नित करने की अनुमति देता है, जो प्रभावी रूप से कहता है, "मैं, मानव प्रोग्रामर, यहाँ सावधान रहने का वादा करता हूँ।" यह एक ड्राइवर के सीटबेल्ट उतारने जैसा है जब वह पार्किंग लॉट में होता है, लेकिन टूल आपसे उस जोखिम को स्पष्ट रूप से स्वीकार करने के लिए मजबूर करता है।

4. यह पुराने तरीकों से बेहतर क्यों है?

पिछले टूल्स ऐसे थे जैसे अपने पड़ोस के ब्लूप्रिंट से अलग ब्लूप्रिंट के साथ घर बनाने की कोशिश करना। वे कठिन थे, धीमे थे, या मौजूदा सॉफ्टवेयर के साथ फिट नहीं बैठते थे।

  • संगतता (Compatibility): obliv-clang मौजूदा टूल्स (Clang और LLVM) में फिट बैठता है जिनका इंजीनियर पहले से ही उपयोग करते हैं।
  • गति (Speed): क्योंकि यह कंप्यूटर को अपने पदचिह्नों को छिपाने के लिए अनावश्यक "डमी" काम करने के लिए मजबूर नहीं करता है, इसलिए परिणामी प्रोग्राम बहुत तेज़ होते हैं। पेपर का दावा है कि obliv-clang से बने प्रोग्राम एक प्रतिस्पर्धी की तुलना में 27.8% तेज़ और दूसरे की तुलना में 66.9% तेज़ चलते हैं।
  • सुरक्षा: यह केवल अनुमान नहीं लगाता; यह गणितीय रूप से सिद्ध करता है कि यदि कोड जांच पास कर लेता है, तो वह इन विशिष्ट प्रकार के टाइमिंग हमलों से सुरक्षित है।

5. परिणाम

लेखकों ने वास्तविक दुनिया के एल्गोरिदम (जैसे एन्क्रिप्शन और डेटा सर्च) पर obliv-clang का परीक्षण किया। उन्होंने पाया:

  • यह कोड को कंपाइल करने की प्रक्रिया में बहुत कम अतिरिक्त समय जोड़ता है (18% से कम अतिरिक्त समय)।
  • यह वास्तविक सुरक्षा खामियों को पकड़ता है जिन्हें इंसान भी मिस कर देते हैं (जैसे OpenSSL में एक विशिष्ट भेद्यता जिसने हैकर्स को चाबियाँ चुराने की अनुमति दी थी)।
  • यह ऐसा सॉफ्टवेयर बनाता है जो सुरक्षित भी है और तेज़ भी।

संक्षेप में: obliv-clang एक ऐसा टूल है जो प्रोग्रामर्स को C++ में "अदृश्य" कोड लिखने में मदद करता है। यह सुनिश्चित करता है कि कंप्यूटर का व्यवहार गुप्त डेटा के बारे में कोई सुराग न दे, और यह सब करते हुए सॉफ्टवेयर को तेज़ और संगत बनाए रखता है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →