14
1 Civet: An Efficient Java Partitioning Framework for Hardware Enclaves Chia-Che Tsai * , Jeongseok Son , Bhushan Jain , John McAvey , Raluca Ada Popa , Donald E. Porter Civet: An Efficient Java Partitioning Framework for Hardware Enclaves *TAMU, UC Berkeley, UNC Chapel Hill, Hendrix College

Civet: An Efficient Java Partitioning Framework for Hardware … · Civet: An Efficient Java Partitioning Framework for Hardware Enclaves 13 Partitioning Effectiveness + Performance

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

  • 1Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Chia-Che Tsai*†, Jeongseok Son†, Bhushan Jain‡, John McAvey¶, Raluca Ada Popa†, Donald E. Porter‡

    Civet: An Efficient Java Partitioning Framework

    for Hardware Enclaves

    *TAMU, †UC Berkeley, ‡UNC Chapel Hill, ¶Hendrix College

  • 2Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Hardware Enclaves as Root of Trust

    An abstraction for bootstrapping users’ trust

    on untrusted platforms.

    User

    ✓ Proof of a trustworthy CPU

    ✓ Isolated from untrusted OS & IO

    ✓ Memory encrypted in DRAM

    Program

    & DataUntrusted Cloud

    Infrastructure

    Enclave

    Existing solutions:

    • Intel SGX

    • AMD SEV

    • ARM TrustZone

    • RISC-V Sanctum

    & Keystone

  • 3Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Cloud Platforms + Enclaves= Large Trusted Computing Base

    Cloud applications are often

    (1) complex

    (2) multi-principal

    (3) written in managed languages like Java.

    Ex: Hadoop

    mapper

    reducer

    6.3 MLoC

    • Scheduler

    • HDFS

    • Workers

    • Other mappers/reducers

    + 2.3 MLoC (JARs)

    + 0.9 MLoC (JVM)

  • 4Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Existing Approaches for Enclave Development

    • Entire Application

    (Haven’14, SCONE’16,

    Graphene-SGX’17,SGK-LKL’20)

    Enclave

    System API

    Untrusted OS

    No code modification

    but large TCB

    • API Engine Only

    (VC3’15,

    SecureKeeper’16)

    • Partitioned /

    Partial Re-development

    (Glamdring’17, GOTEE’19)

    Small TCB

    but little flexibility

    Enclave

    KVStore

    Untrusted App

    Get/Put

    Small TCB

    but lack support for partition

    with object-oriented interfaces

    Untrusted App

    App

    func()

    Enclave

    func()

    Partition

  • 5Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Civet: Partitioning Java-based Applications for Enclaves

    • Guided partitioning for experimentation of partition boundary

    • White-listing class loading & polymorphism

    • Tailored Java runtime for enclave performance patterns (e.g., GC)

  • 6Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Threat Model

    Enclave

    mapper X

    Encrypted

    Data

    X.map()

    Untrusted Components

    Operating System

    IO Devices,DRAM

    SystemAPI

    Threat 2:Attacker abusing exposed

    enclave interfaces(i.e., Iago Attack [ASPLOS’13])

    Threat 1:Enclave loading

    unexpected classes/methods

  • 7Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Partitioning Tool + Java Runtime for Enclaves

    Trusted JAR

    Untrusted JAR

    mapper X

    Entry: X.map()

    Configuration

    Civet

    Partitioning

    ToolUser Input

    (Design phase)

  • 8Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Partitioning Tool + Java Runtime for Enclaves

    Trusted JAR

    Untrusted JAR

    Mapper X

    Entry: X.map()

    Configuration

    Civet

    Partitioning

    ToolUser Input

    (Execution phase)

    Enclave

    X.map()

    Proxy for X

    SignatureVerified by CPU

    Trimmed,shielded

    OpenJDK JVM

  • 9Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Determining Boundary for TCB

    • Determine effective TCB based on

    partitioning decisions

    • Prevent loading unnecessary code

    Code Reachability

    Analysis(Based on bytecode-level,

    call graph + points-to analysis)

    See paper!

    Trusted JAR

    mapper X

    Entry: X.map()

    Configuration

    Civet

    Partitioning

    ToolUser Input

  • 10Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Polymorphic Attacks on Enclave Entries

    Entry: X.map()

    Trusted World Untrusted World

    Polymorphic objects

    malicious

    Benign

    Behaviorscontrolled byattackers

    Deep Input Type ChecksSee paper!

  • 11Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Garbage Collection in Enclaves (1/2)

    Old Gen.

    (Rarely GC’ed)

    Young Gen.

    (Frequently GC’ed)

    “Mark-and-Sweep”

    Dead

    obj

    Dead

    obj

    2-6X

    caching overhead

    2-12X

    paging overhead

    Insight: Memory overhead in enclaves heavily impacted

    by cache misses & page faults.

  • 12Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Garbage Collection in Enclaves (2/2)

    Insight: Memory overhead in enclaves heavily impacted

    by cache misses & page faults.

    Old Gen.Young Gen.

    Mid Gen.

    Dead

    obj

    Dead

    obj

    Fit into cache – 8MB

    (minimize misses)

    Fit into encrypted DRAM – 92MB

    (minimize page faults)

    Live object ratio

    3-gen GC

    2-gen GC

    Avg GC Time

  • 13Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Partitioning Effectiveness + Performance

    0

    10

    20

    30

    40

    50

    60

    70

    80

    90

    100

    4 8 16 32 64 128 256

    Tota

    l P

    roce

    ssin

    g T

    ime

    (S

    eco

    nd

    s)

    # of Data Split in 1GB Data

    (i.e., Maximum # of concurrent mappers)

    Hadoop latency for regular expression

    matching in 1GB encrypted data

    Native Civet (w/ Type Check)

    Civet’senclave protection +

    type checkingadds 16-22% overhead

    Hadoop Regular Expression

    Matching:

    Before partitioning:

    589K methods, 7.2MLoC

    After partitioning:

    12K methods, 248KLoC

    (-96%)

  • 14Civet: An Efficient Java Partitioning Framework for Hardware Enclaves

    Conclusion

    • Java workloads don’t fit into enclave programming paradigms

    – Dynamic and polymorphic behaviors

    – Monolithic runtimes and expensive resource management

    • Civet: partitioning, refining and hardening with reachability analysis,

    deep type checking, and enclave-specific runtime design.

    Questions or feedback: Chia-Che Tsai