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 কমানো
Java প্রোগ্রামিং ভাষার জনপ্রিয়তা ক্লাউড কম্পিউটিং অবকাঠামোতে এর ব্যাপক গ্রহণযোগ্যতা নিশ্চিত করেছে। তবে, অবিশ্বস্ত ক্লাউড পরিবেশে চলমান Java অ্যাপ্লিকেশনগুলি বিভিন্ন বিশেষাধিকার সম্পন্ন আক্রমণের জন্য সংবেদনশীল। Intel SGX-এর মতো বিশ্বস্ত সম্পাদন পরিবেশ (TEE) এই সমস্যাটি প্রশমিত করে। TEE নিরাপদ এনক্লেভে কোড এবং ডেটা রক্ষা করে, যা কার্নেল এবং হাইপারভাইজার সহ অবিশ্বস্ত সফটওয়্যার দ্বারা অ্যাক্সেসযোগ্য নয়। TEE দক্ষতার সাথে ব্যবহার করার জন্য, ডেভেলপারদের অবশ্যই অ্যাপ্লিকেশনটি বিশ্বস্ত এবং অবিশ্বস্ত অংশে ম্যানুয়ালি বিভক্ত করতে হবে যাতে বিশ্বস্ত কম্পিউটিং বেস (TCB) এর আকার কমানো যায় এবং নিরাপত্তা দুর্বলতার ঝুঁকি কমানো যায়। এই পেপারটি Montsalvat সরঞ্জাম উপস্থাপন করে, যা নিরাপদ এনক্লেভের জন্য Java অ্যাপ্লিকেশনগুলির একটি ব্যবহারিক এবং স্বজ্ঞাত অ্যানোটেশন-ভিত্তিক বিভাজন পদ্ধতি প্রদান করে। Montsalvat বস্তু মধ্যে যোগাযোগ নিশ্চিত করতে RMI-এর মতো প্রক্রিয়া এবং বিভাজিত উপাদানগুলির মধ্যে সামঞ্জস্যপূর্ণ আবর্জনা সংগ্রহ প্রদান করে।
নিরাপত্তা হুমকি: অবিশ্বস্ত ক্লাউড পরিবেশে Java অ্যাপ্লিকেশনগুলি বিশেষাধিকার সম্পন্ন আক্রমণের হুমকির সম্মুখীন, যার মধ্যে রয়েছে কার্নেল-স্তরের এবং হাইপারভাইজার-স্তরের আক্রমণ
TCB ন্যূনতমকরণের প্রয়োজনীয়তা: Intel SGX-এর মতো TEE ব্যবহার করার সময়, আক্রমণের পৃষ্ঠ কমাতে বিশ্বস্ত কম্পিউটিং বেস ন্যূনতম করা প্রয়োজন
বিভাজন জটিলতা: Java অ্যাপ্লিকেশনগুলি ম্যানুয়ালি বিভক্ত করার জন্য বস্তু যোগাযোগ এবং আবর্জনা সংগ্রহের সামঞ্জস্যের মতো জটিল সমস্যাগুলি পরিচালনা করা প্রয়োজন
অ্যানোটেশন-ভিত্তিক বিভাজন পদ্ধতি: শ্রেণী-স্তরের অ্যানোটেশন (@Trusted, @Untrusted, @Neutral) ব্যবহার করে Java অ্যাপ্লিকেশনগুলি বিভক্ত করার জন্য একটি ব্যবহারিক এবং স্বজ্ঞাত পদ্ধতি প্রস্তাব করা
RMI প্রক্রিয়া: প্রক্সি বস্তুর মাধ্যমে স্বচ্ছ দূরবর্তী পদ্ধতি আহ্বান সক্ষম করে ক্রস-এনক্লেভ বস্তু যোগাযোগের জন্য একটি RMI-এর মতো প্রক্রিয়া ডিজাইন করা
বিতরণকৃত আবর্জনা সংগ্রহ: দুর্বল রেফারেন্স-ভিত্তিক GC এক্সটেনশন বাস্তবায়ন করা যা বিশ্বস্ত এবং অবিশ্বস্ত হিপের মধ্যে বস্তু ধ্বংসের সামঞ্জস্য নিশ্চিত করে
GraalVM একীকরণ: GraalVM native-image-এর সাথে গভীর একীকরণ, AOT সংকলন অপ্টিমাইজেশন ব্যবহার করা
কর্মক্ষমতা উন্নতি: বাস্তব অ্যাপ্লিকেশনে উল্লেখযোগ্য কর্মক্ষমতা উন্নতি অর্জন (PalDB 6.6×, GraphChi 2.2×)
ইনপুট: নিরাপত্তা অ্যানোটেশন সহ Java অ্যাপ্লিকেশন সোর্স কোড
আউটপুট: বিভক্ত বিশ্বস্ত এবং অবিশ্বস্ত native image, Intel SGX পরিবেশে স্থাপনযোগ্য
সীমাবদ্ধতা: মূল অ্যাপ্লিকেশন শব্দার্থ বজায় রাখা, বস্তু যোগাযোগ এবং GC সামঞ্জস্য নিশ্চিত করা
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);
}
বস্তু ম্যাপিং প্রক্রিয়া:
প্রতিটি প্রক্সি বস্তুকে অনন্য হ্যাশ মান বরাদ্দ করা
প্রক্সি-মিরর বস্তু নিবন্ধন বজায় রাখা
হ্যাশ মানের মাধ্যমে ক্রস-এনক্লেভ বস্তু রেফারেন্স বাস্তবায়ন করা
// দুর্বল রেফারেন্স-ভিত্তিক GC সিঙ্ক্রোনাইজেশন
WeakReference<ProxyObject> weakRef = new WeakReference<>(proxy);
proxyWeakRefs.add(new ProxyWeakRefEntry(weakRef, proxy.getHash()));
// GC সহায়ক নিয়মিত পরীক্ষা করে
if (weakRef.get() == null) {
// প্রক্সি বস্তু ইতিমধ্যে GC করা হয়েছে, মিরর বস্তু ধ্বংসের বিজ্ঞপ্তি দিন
notifyMirrorDestruction(hash);
}
পেপারটি ৬০টি সম্পর্কিত সাহিত্য উদ্ধৃত করে, যা SGX প্রযুক্তি, TEE অ্যাপ্লিকেশন, Java নিরাপত্তা, সংকলন অপ্টিমাইজেশন এবং অন্যান্য একাধিক ক্ষেত্রের গুরুত্বপূর্ণ কাজ অন্তর্ভুক্ত করে, এই গবেষণার জন্য একটি শক্তিশালী তাত্ত্বিক ভিত্তি প্রদান করে।
সামগ্রিক মূল্যায়ন: এটি একটি উচ্চ মানের সিস্টেম গবেষণা পেপার যা TEE পরিবেশে Java অ্যাপ্লিকেশনের ব্যবহারিক স্থাপনার সমস্যা সমাধান করে। পদ্ধতি ডিজাইন যুক্তিসঙ্গত, বাস্তবায়ন সম্পূর্ণ, পরীক্ষা ব্যাপক, এবং উচ্চ একাডেমিক মূল্য এবং ব্যবহারিক তাৎপর্য রয়েছে। যদিও RMI ওভারহেড এবং প্রযোজ্যতার দিক থেকে উন্নতির জায়গা রয়েছে, তবে এটি সম্পর্কিত ক্ষেত্রের গবেষণার জন্য গুরুত্বপূর্ণ রেফারেন্স প্রদান করে।