Skip to main content
QUICK REVIEW

[논문 리뷰] SplittingSecrets: A Compiler-Based Defense for Preventing Data Memory-Dependent Prefetcher Side-Channels

Reshabh K Sharma, Dan Grossman|arXiv (Cornell University)|2026. 01. 18.
Security and Verification in Computing인용 수 0
한 줄 요약

SplittingSecrets는 DMP(데이터 메모리 의존 프리페처) 사이드 채널로부터 소프트웨어 라이브러리를 견고하게 만드는 컴파일러 기반 도구로, 비트 고정 접두어를 사용해 메모리에 비밀값을 분할하여 DMP로 인한 누출을 방지합니다. ARM64용 LLVM으로 구현되었고 libsodium에서 평가되었습니다.

ABSTRACT

Traditional side-channels take advantage of secrets being used as inputs to unsafe instructions, used for memory accesses, or used in control flow decisions. Constant-time programming, which restricts such code patterns, has been widely adopted as a defense against these vulnerabilities. However, new hardware optimizations in the form of Data Memory-dependent Prefetchers (DMP) present in Apple, Intel, and ARM CPUs have shown such defenses are not sufficient. These prefetchers, unlike classical prefetchers, use the content of memory as well as the trace of prior accesses to determine prefetch targets. An adversary abusing such a prefetcher has been shown to be able to mount attacks leaking data-at-rest; data that is never used by the program, even speculatively, in an unsafe manner. In response, this paper introduces SplittingSecrets, a compiler-based tool that can harden software libraries against side-channels arising from DMPs. SplittingSecrets's approach avoids reasoning about the complex internals of different DMPs and instead relies on one key aspect of all DMPs: activation requires data to resemble addresses. To prevent secret data from leaking, SplittingSecrets transforms memory operations to ensure that secrets are never stored in memory in a manner resembling an address, thereby avoiding DMP activation on those secrets. Rather than disable a DMP entirely, SplittingSecrets can provide targeted hardening for only specific secrets entirely in software. We have implemented SplittingSecrets using LLVM, supporting both source-level memory operations and those generated by the compiler backend for the AArch64 architecture, We have analyzed the performance overhead involved in safeguarding secrets from DMP-induced attacks using common primitives in libsodium, a popular cryptographic library when built for Apple M-series CPUs.

연구 동기 및 목표

  • 전통적인 상수 시간 방어를 우회하는 데이터 메모리 의존 프리페처(DMP) 사이드 채널의 동기를 부여하고 이를 해결한다.
  • 비밀값이 DMP 페이지 워크에 참여하지 않도록 하는 컴파일러 기반 변환을 제안한다.
  • ARM64용 LLVM에서 접근 방식을 구현하고 암호 라이브러리에서 성능 오버헤드를 평가한다.
  • 권한 있는 하드웨어 변경 없이 알려진 DMP 지원 CPU 전반에 작동하는 소프트웨어 전용 방어책을 제공한다.

제안 방법

  • 비밀값이 유효한 DMP 페이지 워크를 트리거할 수 없도록 64비트 단어의 상위 절반에 고정 비일치 접두를 붙여 메모리 저장/로드를 변환한다.
  • 비밀값을 32비트 조각으로 분할하고, 교대로 지속 접두를 가진 조각을 추가로 할당된 메모리에 저장한다.
  • 소스 또는 컴파일러가 생성한 메모리 연산에서 포인터에 대한 상위 비트 태그를 사용하여 동적 추적을 위한 비밀 메모리를 주석 처리하고 추적합니다.
  • 비밀을 위한 추가 메모리를 할당하고 매핑하며, 비밀 추적 및 접근 체크를 처리하는 런타임을 제공합니다.
  • 소스 수준 연산에 대해 LLVM IR에서 변환을 적용하고 AArch64 백엔드의 MIR에서 변환을 적용하여 스택, 힙, 전역 비밀을 처리합니다.
  • 단위 테스트와 libsodium을 이용한 광범위한 테스트로 정확성을 확보하고, 변환된 데이터가 DMP 페이지 워크에 참여할 수 없도록 보장을 통해 보안을 확보합니다.
Figure 1 : The end-to-end pipeline of SplittingSecrets . Extra memory is allocated for annotated secrets, with the top bits of addresses set for dynamic tracking. At the LLVM IR level, memory operations are instrumented with checks and transformed loads and stores for our defense. Memory operations
Figure 1 : The end-to-end pipeline of SplittingSecrets . Extra memory is allocated for annotated secrets, with the top bits of addresses set for dynamic tracking. At the LLVM IR level, memory operations are instrumented with checks and transformed loads and stores for our defense. Memory operations

실험 결과

연구 질문

  • RQ1컴파일러 기반 메모리 변환이 아키텍처 간에 데이터 메모리 의존 프리페처 사이드 채널을 방지할 수 있는가?
  • RQ2프로그램 시맨틱스를 보존하면서 DMP 트리거 누출을 방지하는 SplittingSecrets 접근법의 효과는 어떠한가?
  • RQ3DMP 사이드 채널로부터 암호 라이브러리를 보호할 때 성능/메모리 오버헤드는 무엇인가?
  • RQ4접두를 회전시키거나 비밀 조각 크기를 조정하여 다양한 DMP 구현에 방법이 적응할 수 있는가?

주요 결과

  • 도구는 ARM64용 LLVM으로 구현되었고 암호 라이브러리를 대상으로 한다.
  • 비밀 데이터는 32비트 조각으로 분할되어 페이지 워크를 방지하기 위해 고정 접두어로 저장된다.
  • 비밀을 위한 추가 메모리가 할당되고 런타임이 올바른 로드/스토어를 가능하게 하도록 비밀 위치를 추적한다.
  • 이 접근법은 프리픽스를 변경함으로써 크로스 플랫폼이며 다양한 DMP 설계에 적용 가능하도록 설계되었다.
  • libsodium에 대한 평가를 통해 하드웨어 변경 없이 소프트웨어만으로 방어가 가능함을 입증한다.]
  • table_headers: []
  • table_rows: []} { } {
  • title_footer_text_api_compatibility_check_placeholder
  • tldr
  • meta_description
  • objective
  • method
  • research_questions
  • key_findings
  • table_headers
  • table_rows
  • title
  • GeneratedReview
  • }
Figure 2 : Example of transforming a 256-bit unsafe store. Each circle represents 64 bits. 64-bit chunks of the input (e.g the magenta and blue semi-circles) are split and padded with a 32-bit fixed constant value (black semi-circle.) The lower half with padding is stored at the original memory loca
Figure 2 : Example of transforming a 256-bit unsafe store. Each circle represents 64 bits. 64-bit chunks of the input (e.g the magenta and blue semi-circles) are split and padded with a 32-bit fixed constant value (black semi-circle.) The lower half with padding is stored at the original memory loca

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.