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는 보안 엔클레이브(enclave) 내의 코드와 데이터를 커널 및 하이퍼바이저를 포함한 신뢰할 수 없는 소프트웨어의 접근으로부터 보호합니다. TEE를 효율적으로 사용하기 위해 개발자는 애플리케이션을 신뢰할 수 있는 부분과 신뢰할 수 없는 부분으로 수동으로 분할하여 신뢰할 수 있는 컴퓨팅 기반(TCB)의 크기를 줄이고 보안 취약점의 위험을 최소화해야 합니다. 본 논문은 보안 엔클레이브를 대상으로 하는 Java 애플리케이션을 위한 실용적이고 직관적인 주석 기반 분할 방법을 제공하는 Montsalvat 도구를 제시합니다. Montsalvat은 RMI와 유사한 메커니즘을 제공하여 객체 간 통신을 보장하고, 분할된 컴포넌트 간의 일관된 가비지 컬렉션을 제공합니다.
// 원본 메서드를 중계 메서드로 변환
@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);
}
본 논문은 SGX 기술, TEE 애플리케이션, Java 보안, 컴파일 최적화 등 여러 분야의 중요한 연구를 포함하는 60편의 관련 문헌을 인용하여 본 연구에 견고한 이론적 기초를 제공합니다.
종합 평가: 이는 Java 애플리케이션의 TEE 환경 실제 배포 문제를 해결하는 고품질의 시스템 연구 논문입니다. 방법 설계가 합리적이고 구현이 완전하며 실험이 충분하여 우수한 학술 가치와 실용적 의의를 갖고 있습니다. RMI 오버헤드 및 적용성 측면에서 개선의 여지가 있지만, 관련 분야 연구에 중요한 참고 자료를 제공합니다.