2025-11-20T07:49:14.984146

Montsalvat: Partitioning Java Applications to Minimize the TCB in Intel SGX

Yuhala, Ménétrey, Felber et al.
The popularity of the Java programming language has led to its wide adoption in cloud computing infrastructures. However, Java applications running in untrusted clouds are vulnerable to various forms of privileged attacks. The emergence of trusted execution environments (TEEs) such as Intel SGX mitigates this problem. TEEs protect code and data in secure enclaves inaccessible to untrusted software, including the kernel and hypervisors. To efficiently use TEEs, developers must manually partition their applications into trusted and untrusted parts, in order to reduce the size of the trusted computing base (TCB) and minimise the risks of security vulnerabilities. However, partitioning applications poses two important challenges: (i) ensuring efficient object communication between the partitioned components, and (ii) ensuring the consistency of garbage collection between the parts, especially with memory-managed languages such as Java. We present Montsalvat, a tool which provides a practical and intuitive annotation-based partitioning approach for Java applications destined for secure enclaves. Montsalvat provides an RMI-like mechanism to ensure inter-object communication, as well as consistent garbage collection across the partitioned components. We implement Montsalvat with GraalVM native-image, a tool for compiling Java applications ahead-of-time into standalone native executables that do not require a JVM at runtime. Our extensive evaluation with micro- and macro-benchmarks shows our partitioning approach to boost performance in real-world applications
academic

Montsalvat: Intel SGX में Java अनुप्रयोगों को विभाजित करके TCB को न्यूनतम करना

मूल जानकारी

  • पेपर ID: 2305.00766
  • शीर्षक: Montsalvat: Partitioning Java Applications to Minimize the TCB in Intel SGX
  • लेखक: Peterson Yuhala, Jämes Ménétrey, Pascal Felber, Valerio Schiavoni, Alain Tchana, Gaël Thomas, Hugo Guiroux, Jean-Pierre Lozi
  • वर्गीकरण: cs.CR (क्रिप्टोग्राफी और सुरक्षा)
  • प्रकाशन सम्मेलन: 22वां अंतर्राष्ट्रीय मिडलवेयर सम्मेलन (Middleware 2021)
  • पेपर लिंक: https://arxiv.org/abs/2305.00766

सारांश

Java प्रोग्रामिंग भाषा की लोकप्रियता के कारण इसे क्लाउड कंप्यूटिंग बुनियादी ढांचे में व्यापक रूप से अपनाया जाता है। हालांकि, अविश्वसनीय क्लाउड वातावरण में चलने वाले Java अनुप्रयोग विभिन्न विशेषाधिकार हमलों के लिए असुरक्षित हैं। Intel SGX जैसे विश्वसनीय निष्पादन वातावरण (TEE) के आगमन ने इस समस्या को कम किया है। TEE सुरक्षित एनक्लेव में कोड और डेटा की सुरक्षा करता है, जिससे कर्नल और हाइपरविजर सहित अविश्वसनीय सॉफ्टवेयर द्वारा पहुंच को रोका जाता है। TEE का कुशलतापूर्वक उपयोग करने के लिए, डेवलपर्स को अनुप्रयोग को विश्वसनीय और अविश्वसनीय भागों में मैन्युअल रूप से विभाजित करना चाहिए ताकि विश्वसनीय कंप्यूटिंग आधार (TCB) के आकार को कम किया जा सके और सुरक्षा कमजोरियों का जोखिम कम किया जा सके। यह पेपर Montsalvat उपकरण प्रस्तुत करता है, जो सुरक्षित एनक्लेव के लिए Java अनुप्रयोगों के लिए एक व्यावहारिक और सहज एनोटेशन-आधारित विभाजन विधि प्रदान करता है। Montsalvat वस्तु-के-बीच संचार सुनिश्चित करने के लिए RMI जैसी तंत्र प्रदान करता है, साथ ही विभाजित घटकों में सुसंगत कचरा संग्रह भी करता है।

अनुसंधान पृष्ठभूमि और प्रेरणा

समस्या परिभाषा

  1. सुरक्षा खतरे: Java अनुप्रयोग अविश्वसनीय क्लाउड वातावरण में विशेषाधिकार हमलों के खतरे का सामना करते हैं, जिसमें कर्नल-स्तर और हाइपरविजर-स्तर के हमले शामिल हैं
  2. TCB न्यूनीकरण आवश्यकता: Intel SGX जैसे TEE का उपयोग करते समय, हमले की सतह को कम करने के लिए विश्वसनीय कंप्यूटिंग आधार को कम करना आवश्यक है
  3. विभाजन जटिलता: Java अनुप्रयोगों को मैन्युअल रूप से विभाजित करने के लिए वस्तु संचार और कचरा संग्रह सुसंगतता जैसी जटिल समस्याओं को संभालना आवश्यक है

मौजूदा समाधान की सीमाएं

  1. पूर्ण अनुप्रयोग समाधान: SCONE, Graphene-SGX आदि पूरे अनुप्रयोग (JVM सहित) को एनक्लेव में रखते हैं, TCB बहुत बड़ा है (लाखों लाइनें कोड)
  2. फ्रेमवर्क-विशिष्ट समाधान: VC3, SecureKeeper आदि केवल विशिष्ट फ्रेमवर्क के लिए हैं, सामान्यता की कमी है
  3. मौजूदा Java विभाजन समाधान:
    • Civet को पूर्ण LibOS की आवश्यकता है, TCB अभी भी बहुत बड़ा है
    • Uranus को विश्वसनीय विभाजन का अनुमान लगाने के लिए तीसरे पक्ष के उपकरण की आवश्यकता है, डेवलपर हस्तक्षेप अधिक है

अनुसंधान प्रेरणा

एक सामान्य, स्वचालित Java अनुप्रयोग विभाजन उपकरण विकसित करना जो निम्नलिखित कर सके:

  • सहज वर्ग-स्तरीय एनोटेशन विधि प्रदान करना
  • कुशल क्रॉस-एनक्लेव वस्तु संचार को लागू करना
  • वितरित कचरा संग्रह सुसंगतता सुनिश्चित करना
  • TCB आकार में उल्लेखनीय कमी करना

मुख्य योगदान

  1. एनोटेशन-आधारित विभाजन विधि: Java अनुप्रयोगों को विभाजित करने के लिए व्यावहारिक और सहज वर्ग-स्तरीय एनोटेशन विधि (@Trusted, @Untrusted, @Neutral) प्रस्तावित की गई है
  2. RMI तंत्र: क्रॉस-एनक्लेव वस्तु संचार के लिए RMI जैसी तंत्र डिजाइन की गई है, जो प्रॉक्सी वस्तुओं के माध्यम से पारदर्शी दूरस्थ विधि आह्वान को लागू करती है
  3. वितरित कचरा संग्रह: कमजोर संदर्भ-आधारित GC एक्सटेंशन को लागू किया गया है, जो विश्वसनीय और अविश्वसनीय हीप के बीच वस्तु विनाश सुसंगतता सुनिश्चित करता है
  4. GraalVM एकीकरण: GraalVM native-image के साथ गहन एकीकरण, AOT संकलन अनुकूलन का लाभ उठाता है
  5. प्रदर्शन वृद्धि: वास्तविक अनुप्रयोगों में उल्लेखनीय प्रदर्शन वृद्धि (PalDB 6.6×, GraphChi 2.2×)

विधि विवरण

कार्य परिभाषा

इनपुट: सुरक्षा एनोटेशन के साथ Java अनुप्रयोग स्रोत कोड आउटपुट: विभाजित विश्वसनीय और अविश्वसनीय native image, Intel SGX वातावरण में तैनाती के लिए तैयार बाधाएं: मूल अनुप्रयोग शब्दार्थ को बनाए रखना, वस्तु संचार और GC सुसंगतता सुनिश्चित करना

प्रणाली आर्किटेक्चर

Montsalvat का कार्यप्रवाह 4 मुख्य चरणों में शामिल है:

1. कोड एनोटेशन चरण

तीन एनोटेशन प्रकार प्रदान करता है:

  • @Trusted: वर्ग और इसके उदाहरण हमेशा एनक्लेव के अंदर बनाए और संचालित किए जाते हैं
  • @Untrusted: वर्ग और इसके उदाहरण हमेशा एनक्लेव के बाहर संचालित किए जाते हैं
  • @Neutral: उपयोगिता वर्ग, दोनों पक्षों पर स्वतंत्र रूप से कई प्रतियां मौजूद हो सकती हैं

2. बाइटकोड रूपांतरण चरण

Javassist फ्रेमवर्क का उपयोग करके बाइटकोड रूपांतरण:

प्रॉक्सी वर्ग पीढ़ी:

  • प्रत्येक विश्वसनीय वर्ग के लिए अविश्वसनीय रनटाइम में प्रॉक्सी वर्ग उत्पन्न करना
  • प्रत्येक अविश्वसनीय वर्ग के लिए विश्वसनीय रनटाइम में प्रॉक्सी वर्ग उत्पन्न करना
  • प्रॉक्सी वर्ग मूल विधि हस्ताक्षर को बनाए रखते हैं, लेकिन विधि निकाय को क्रॉस-एनक्लेव कॉल से बदल दिया जाता है

रिले विधि इंजेक्शन:

// मूल विधि को रिले विधि में रूपांतरित किया गया
@CEntryPoint
public static void relayAccount(Isolate ctx, int hash, 
                               CCharPointer buf, int b) {
    String s = deserialize(buf);
    Account mirror = new Account(s, b);
    mirrorProxyRegistry.add(hash, mirror);
}

वस्तु मानचित्रण तंत्र:

  • प्रत्येक प्रॉक्सी वस्तु को अद्वितीय हैश मान आवंटित किया जाता है
  • प्रॉक्सी-दर्पण वस्तु रजिस्ट्री को बनाए रखना
  • हैश मान के माध्यम से क्रॉस-एनक्लेव वस्तु संदर्भ को लागू करना

3. Native Image विभाजन

GraalVM के स्थिर विश्लेषण का लाभ उठाना:

  • विश्वसनीय छवि: विश्वसनीय वर्ग कार्यान्वयन + अविश्वसनीय वर्ग प्रॉक्सी शामिल हैं
  • अविश्वसनीय छवि: अविश्वसनीय वर्ग कार्यान्वयन + विश्वसनीय वर्ग प्रॉक्सी शामिल हैं
  • बिंदु-से विश्लेषण स्वचालित रूप से अप्राप्य कोड को काटता है

4. SGX अनुप्रयोग पीढ़ी

  • Shim लाइब्रेरी: हल्के वजन की लाइब्रेरी जो असमर्थित libc कॉल को अवरोधित करती है और अविश्वसनीय रनटाइम को रिले करती है
  • EDL पीढ़ी: स्वचालित रूप से enclave परिभाषा भाषा फ़ाइल उत्पन्न करना
  • अंतिम लिंकिंग: निष्पादन योग्य SGX अनुप्रयोग उत्पन्न करना

तकनीकी नवाचार बिंदु

1. वर्ग-स्तरीय विभाजन रणनीति

विधि-स्तरीय या डेटा-स्तरीय विभाजन की तुलना में:

  • वस्तु-उन्मुख प्रोग्रामिंग के लिए अधिक सहज
  • जटिल डेटा प्रवाह विश्लेषण से बचना
  • प्राकृतिक एनकैप्सुलेशन सीमा

2. पारदर्शी प्रॉक्सी तंत्र

  • मूल प्रोग्रामिंग मॉडल को बनाए रखना
  • स्वचालित पैरामीटर क्रमबद्धता/विक्रमबद्धता को संभालना
  • क्रॉस-एनक्लेव में जटिल वस्तु ग्राफ के हस्तांतरण का समर्थन करना

3. वितरित GC डिजाइन

// कमजोर संदर्भ-आधारित GC सिंक्रोनाइजेशन
WeakReference<ProxyObject> weakRef = new WeakReference<>(proxy);
proxyWeakRefs.add(new ProxyWeakRefEntry(weakRef, proxy.getHash()));

// GC सहायक नियमित रूप से जांच करता है
if (weakRef.get() == null) {
    // प्रॉक्सी वस्तु को GC किया गया है, दर्पण वस्तु विनाश को सूचित करना
    notifyMirrorDestruction(hash);
}

प्रयोगात्मक सेटअप

प्रयोगात्मक वातावरण

  • हार्डवेयर: Intel Xeon E3-1270 CPU (3.80 GHz), 64GB RAM
  • SGX कॉन्फ़िगरेशन: 128MB EPC (93.5MB उपलब्ध), अधिकतम हीप 4GB, स्टैक 8MB
  • सॉफ्टवेयर: Ubuntu 18.04, SGX SDK v2.11, GraalVM CE v21.0.0
  • तुलना आधार: SCONE (एनक्लेव के अंदर JVM चल रहा है)

मूल्यांकन संकेतक

  • प्रदर्शन संकेतक: अनुप्रयोग निष्पादन समय, संचालन विलंबता
  • ओवरहेड विश्लेषण: प्रॉक्सी वस्तु निर्माण ओवरहेड, RMI कॉल ओवरहेड, GC प्रदर्शन
  • त्वरण अनुपात: अविभाजित और SCONE योजना के सापेक्ष प्रदर्शन सुधार

परीक्षण अनुप्रयोग

  1. सिंथेटिक बेंचमार्क: CPU-गहन और I/O-गहन संचालन
  2. PalDB: LinkedIn की एम्बेडेड कुंजी-मान संग्रहण
  3. GraphChi: बड़े पैमाने पर ग्राफ प्रसंस्करण फ्रेमवर्क (PageRank एल्गोरिदम)
  4. SPECjvm2008: मानक Java माइक्रो-बेंचमार्क परीक्षण

प्रयोगात्मक परिणाम

मुख्य प्रदर्शन परिणाम

1. वास्तविक अनुप्रयोग प्रदर्शन सुधार

  • PalDB: SCONE की तुलना में 6.6× सुधार (RTWU योजना), 2.8× (RUTW योजना)
  • GraphChi: SCONE की तुलना में 2.2× सुधार
  • SPECjvm2008: 5/6 बेंचमार्क परीक्षणों में उल्लेखनीय सुधार (1.38×-2.66×)

2. प्रॉक्सी वस्तु ओवरहेड विश्लेषण

  • प्रॉक्सी वस्तु निर्माण ठोस वस्तु से 3-4 परिमाण धीमा है
  • RMI कॉल स्थानीय कॉल से 3-4 परिमाण धीमा है
  • क्रमबद्ध पैरामीटर 10× (एनक्लेव के अंदर) से 3× (एनक्लेव के बाहर) ओवरहेड जोड़ते हैं

3. GC प्रदर्शन प्रभाव

  • एनक्लेव के अंदर GC एनक्लेव के बाहर से 1 परिमाण धीमा है
  • GC सुसंगतता सत्यापन: प्रॉक्सी वस्तु विनाश पर दर्पण वस्तु सही ढंग से साफ किया जाता है

विलोपन प्रयोग

विभाजन रणनीति तुलना

सिंथेटिक बेंचमार्क के माध्यम से विभिन्न विश्वसनीय वर्ग अनुपात का परीक्षण:

  • CPU-गहन: अधिक वर्गों को एनक्लेव से बाहर ले जाने पर प्रदर्शन सुधार उल्लेखनीय है
  • I/O-गहन: I/O संचालन को एनक्लेव से बाहर ले जाने पर प्रदर्शन सुधार अधिक स्पष्ट है

अविभाजित बनाम विभाजित बनाम SCONE

सभी परीक्षणों में, प्रदर्शन क्रम है:

  1. मूल निष्पादन (कोई SGX नहीं) - सबसे तेज लेकिन असुरक्षित
  2. विभाजित native image - प्रदर्शन और सुरक्षा को संतुलित करता है
  3. अविभाजित native image - मध्यम प्रदर्शन
  4. SCONE+JVM - सबसे धीमा लेकिन सर्वोत्तम संगतता

केस विश्लेषण

PalDB विभाजन रणनीति

@Trusted class DBReader   // संवेदनशील पढ़ने के संचालन की सुरक्षा
@Untrusted class DBWriter // I/O लेखन संचालन को एनक्लेव से बाहर ले जाना

RTWU योजना अधिक प्रदर्शन करती है क्योंकि यह महंगे लेखन संचालन एनक्लेव रूपांतरण से बचाती है।

GraphChi विभाजन रणनीति

@Trusted class GraphChiEngine    // मुख्य गणना तर्क की सुरक्षा
@Untrusted class FastSharder     // ग्राफ विभाजन I/O संचालन

विभाजन संचालन को एनक्लेव से बाहर ले जाने के बाद मूल प्रदर्शन के करीब है।

संबंधित कार्य

पूर्ण अनुप्रयोग एनक्लेव समाधान

  • SCONE, Graphene-SGX, SGX-LKL: अच्छी संगतता प्रदान करते हैं लेकिन TCB बहुत बड़ा है
  • Haven: प्रारंभिक पूर्ण अनुप्रयोग समाधान

फ्रेमवर्क-विशिष्ट विभाजन

  • VC3: Hadoop डेटा विश्लेषण
  • SecureKeeper: ZooKeeper एक्सटेंशन
  • Opaque: Spark SQL प्लेटफॉर्म
  • सीमा: केवल विशिष्ट फ्रेमवर्क के लिए लागू

सामान्य विभाजन समाधान

  • Glamdring: C/C++ स्वचालित विभाजन, Java के लिए उपयुक्त नहीं
  • Panoply: माइक्रो-कंटेनर समाधान
  • Civet: Java विभाजन लेकिन पूर्ण LibOS का उपयोग करता है
  • Uranus: विधि-स्तरीय एनोटेशन, तीसरे पक्ष के उपकरण की आवश्यकता है

निष्कर्ष और चर्चा

मुख्य निष्कर्ष

  1. व्यवहार्यता सत्यापन: एनोटेशन-आधारित वर्ग-स्तरीय विभाजन योजना व्यवहार्य और सहज है
  2. प्रदर्शन लाभ: विभाजित अनुप्रयोग पूर्ण एनक्लेव समाधान की तुलना में उल्लेखनीय प्रदर्शन सुधार दिखाते हैं
  3. TCB में कमी: Shim लाइब्रेरी के माध्यम से LibOS के बजाय विश्वसनीय कोड आधार में उल्लेखनीय कमी
  4. विकास-अनुकूल: एनोटेशन विधि डेवलपर्स के लिए अधिक सहज है

सीमाएं

  1. एनकैप्सुलेशन आवश्यकता: यह मानता है कि सभी एनोटेट किए गए वर्ग सही ढंग से एनकैप्सुलेट हैं (निजी फ़ील्ड)
  2. RMI ओवरहेड: क्रॉस-एनक्लेव कॉल में अभी भी उल्लेखनीय ओवरहेड है, बार-बार इंटरैक्शन परिदृश्यों के लिए उपयुक्त नहीं है
  3. GraalVM निर्भरता: GraalVM इकोसिस्टम तक सीमित है
  4. स्थिर विश्लेषण सीमा: कुछ गतिशील विशेषताओं का समर्थन सीमित है

भविष्य की दिशाएं

  1. बिना-रूपांतरण कॉल: महंगे RMI को कम करने की तकनीकों का अन्वेषण करना
  2. बहु-अलगाववाद समर्थन: कई isolate वातावरण तक विस्तार करना
  3. स्वचालित विभाजन: स्थिर विश्लेषण-आधारित स्वचालित विभाजन सिफारिश
  4. अन्य TEE समर्थन: AMD SME, ARM TrustZone तक विस्तार करना

गहन मूल्यांकन

शक्तियां

  1. मजबूत नवाचार: Java अनुप्रयोगों के वर्ग-स्तरीय विभाजन का पहला प्रस्ताव, डिजाइन सहज और उचित है
  2. इंजीनियरिंग पूर्णता: एनोटेशन से अंतिम SGX अनुप्रयोग तक पूर्ण उपकरण श्रृंखला
  3. उत्कृष्ट प्रदर्शन: वास्तविक अनुप्रयोगों में उल्लेखनीय प्रदर्शन सुधार प्रदर्शित करता है
  4. उच्च व्यावहारिक मूल्य: Java अनुप्रयोगों की सुरक्षित क्लाउड तैनाती की व्यावहारिक समस्या को हल करता है

कमियां

  1. अभी भी बड़ा ओवरहेड: RMI कॉल ओवरहेड अभी भी 3-4 परिमाण है, लागू परिदृश्यों को सीमित करता है
  2. कठोर धारणा शर्तें: वर्ग एनकैप्सुलेशन की आवश्यकता मौजूदा कोड की प्रयोज्यता को सीमित कर सकती है
  3. अपूर्ण मूल्यांकन: बड़े पैमाने पर, दीर्घकालिक चलने वाले अनुप्रयोगों का मूल्यांकन नहीं है
  4. अपर्याप्त सुरक्षा विश्लेषण: साइड-चैनल हमलों जैसे उन्नत खतरों से सुरक्षा विश्लेषण सीमित है

प्रभाव

  1. शैक्षणिक योगदान: TEE वातावरण में प्रबंधित भाषा अनुप्रयोग विभाजन के लिए नई सोच प्रदान करता है
  2. व्यावहारिक मूल्य: Java क्लाउड अनुप्रयोगों की सुरक्षा सुदृढ़ीकरण में सीधे लागू किया जा सकता है
  3. पुनरुत्पादनीयता: लेखक ओपन-सोर्स करने का वचन देते हैं, अनुसंधान पुनरुत्पादन और विस्तार को सुविधाजनक बनाता है

लागू परिदृश्य

  1. क्लाउड Java सेवाएं: संवेदनशील व्यावसायिक तर्क की सुरक्षा की आवश्यकता वाले क्लाउड अनुप्रयोग
  2. डेटा विश्लेषण प्लेटफॉर्म: संवेदनशील डेटा को संभालने वाली विश्लेषण फ्रेमवर्क
  3. फिनटेक अनुप्रयोग: उच्च सुरक्षा गारंटी की आवश्यकता वाली वित्तीय सेवाएं
  4. IoT एज कंप्यूटिंग: संसाधन-सीमित वातावरण में सुरक्षित कंप्यूटिंग

संदर्भ

पेपर ने 60 संबंधित संदर्भों का हवाला दिया है, जिसमें SGX तकनीक, TEE अनुप्रयोग, Java सुरक्षा, संकलन अनुकूलन और अन्य क्षेत्रों के महत्वपूर्ण कार्य शामिल हैं, जो इस अनुसंधान के लिए एक ठोस सैद्धांतिक आधार प्रदान करते हैं।


समग्र मूल्यांकन: यह एक उच्च-गुणवत्ता वाला प्रणाली अनुसंधान पेपर है जो TEE वातावरण में Java अनुप्रयोगों की व्यावहारिक तैनाती की समस्या को हल करता है। विधि डिजाइन उचित है, कार्यान्वयन पूर्ण है, प्रयोग पर्याप्त हैं, और इसमें बहुत अच्छा शैक्षणिक मूल्य और व्यावहारिक महत्व है। यद्यपि RMI ओवरहेड और प्रयोज्यता के संदर्भ में अभी भी सुधार की गुंजाइश है, लेकिन यह संबंधित क्षेत्र के अनुसंधान के लिए महत्वपूर्ण संदर्भ प्रदान करता है।