트레소르
TRESORTRESOR("TRESOR Runs Encryption Runs Secure Outside RAM"의 회수 약자 및 보물을 뜻하는 프랑스어 단어)는 일반적인 RAM(Random-Access Memory) 외부에서 암호화를 수행하여 컴퓨터 시스템에 대한 콜드 부트 공격으로부터 방어하기 위해 CPU 기반 암호화를 제공하는 리눅스 커널 패치다.범용 컴퓨터를 위해 제안된 두 가지 솔루션 중 하나로(다른 하나는 동일한 목적으로[1] CPU 캐시를 사용함) 이전 AESSE로부터 개발되었으며, EuroSec 2010에서 제시되고 USENIX Security 2011에서 제시되었다.[2]저자들은 RAM이 시스템을 방해하지 않고 보안 관점에서 신뢰할 수 없는 것으로 취급될 수 있도록 허용한다고 말한다.
TRESOR-HUNT라는 2012년 논문은 링 0(최고의 특권 수준)에서 보이지 않게 기능하는 코드를 주입함으로써 DMA 공격이 어떻게 이 시스템을 파괴할 수 있는지를 보여 주었다.이 신문은 또한 그러한 공격을 완화시킬 수 있는 방법을 제안했다.[3]
동기
컴퓨터 보안에서 데이터 보안의 일반적인 문제는 침입자가 어떻게 컴퓨터의 암호화된 데이터에 접근할 수 있느냐 하는 것이다.올바르게 구현되고 강력한 암호로 이루어진 현대의 암호화 알고리즘은 현재의 기술로는 흔히 깨지지 않기 때문에, 암호화가 훨씬 적은 노력으로 "파쇄"될 수 있는 데이터 보안의 측면을 이용하거나, 그렇지 않으면 완전히 우회할 수 있는 데이터 보안의 측면을 이용함으로써, 이 요건을 우회하는 기법으로 강조점이 이동했다.
콜드 부트 공격은 시스템 보안에도 불구하고 침입자가 실행 중인 시스템에 물리적으로 접근할 수 있는 경우 암호화를 물리칠 수 있는 수단 중 하나이다.그것은 컴퓨터에 흔히 사용되는 메모리 장치 내의 회로의 물리적 특성에 의해 전제된다.개념은 컴퓨터 시스템이 암호화된 데이터를 열었을 때 암호화 키 자체는 보통 읽기 쉬운 형태로 물리적 메모리에 임시로 저장되어 있다는 것을 읽거나 쓰는 데 사용한다는 것이다.(이러한 키를 사용 중 "플레인" 형태로 유지하는 것은 시스템 자체가 축약해야 하기 때문에 통상적인 시스템으로는 피하기 어렵거나 불가능하다.e 인증된 사용자의 지시에 따라 데이터에 액세스한다).예를 들어 소프트웨어 또는 시스템에 내장된 보안 때문에 이러한 키를 액세스하거나 사용할 수 없기 때문에 일반적으로 무단 침입자에게 이로울 수 없다.그러나, 예를 들어 컴퓨터를 빠르게 다시 시작하거나 장치를 다른 장치로 제거하여 컨텐츠 손실 없이 실행 중인 시스템 외부에서 메모리 장치에 액세스할 수 있다면, 사용 중인 암호화 키를 포함한 현재의 컨텐츠는 쉽게 읽고 사용할 수 있다.시스템을 사용하여 해당 데이터를 보거나 복사 또는 액세스할 수 없는 경우(예: 시스템이 잠겨 있거나, 부비 트랩 또는 기타 침입 제어 장치가 있을 수 있거나, 법의학 또는 증거 목적을 위해 손대지 않은 보장된 형태로 필요한 경우) 이것이 중요할 수 있다.
이것은 하드웨어 자체의 물리적 속성이고, 메모리 장치의 물리적 특성에 기초하기 때문에, 개입 시점에서 메모리에서 실행되는 모든 소프트웨어에 접근하기 때문에 순수한 소프트웨어 기법으로 쉽게 물리칠 수 없다.결과적으로, 이런 방식으로 키에 접근할 수 있는 암호화 소프트웨어는 그러한 공격에 취약하다.보통 콜드 부트 공격은 메모리 칩을 냉각시키거나 컴퓨터를 신속하게 재시동하는 것을 포함하며, 데이터가 즉시 손실되지 않고(또는 전원이 매우 빨리 복구되는 경우에는 손실되지 않음) 개입 지점에 보관되어 있던 데이터는 검사에 접근할 수 있게 된다.
따라서 콜드 부트 공격은 무단 데이터 도난, 손실 또는 액세스 수단이 될 수 있다.이러한 공격은 하드웨어 수준에서 침입자(즉, 사용 중 키를 저장하는 장치가 콜드 부트 공격에 대처할 수 없는 경우)에 대한 암호화 키에 액세스할 수 없는 경우 무효화될 수 있지만 일반적인 경우는 아니다.
TRESOR의 접근법
TRESOR는 거의 전적으로 CPU에만 암호화 키를 저장하고 조작하여 이러한 불안정을 해결하고자 하는 소프트웨어 접근방식이며, 링 0(최고 권한 수준)에서만 액세스할 수 있는 레지스터에는 세션 시작 시 초기 계산의 짧은 기간만 예외로 한다.이를 통해 사용자 공간이나 콜드 부트 공격을 통해 암호화 키를 거의 사용할 수 없게 된다.TRESOR는 암호화 키를 x86 디버그 레지스터에 저장하는 커널패치로 기록되며, 통상적인 키 생성, 원자성 및 차단을 사용한다.보안을 위해 디버그 레지스터에 대한 액세스를 추적하십시오.
TRESOR는 콜드 부트 공격 문제를 분석한 틸로 뮬러(Tilo Muller)의 2010년 논문으로 예고됐다.그는 현대의 x86 프로세서는 CPU 기반의 커널 암호화가 현실적인 두 가지 레지스터 영역을 가지고 있다고 결론지었다. SSE 레지스터는 모든 SSE 명령어(그리고 반드시 SSE 명령어에 의존하는 모든 프로그램)를 비활성화함으로써 특권을 얻을 수 있고 디버그 레지스터는 훨씬 작지만 그러한 문제가 없었다.그는 후자를 남들이 검토할 수 있도록 남겨두었고, SSE 등록 방법에 근거하여 파라노익스라는 개념의 배포 증명서를 개발했다.[4]
개발자들은 "AES-NI를 지원하는 64비트 CPU에서 TRESOR를 실행하면 AES의 일반적인 구현에 비해 성능 저하가 없다"[5]고 밝히고, 키 재계산이 필요함에도 불구하고 표준 암호화보다 약간 빨리 실행돼 저자도 놀라게 했다.[2]
잠재적 취약성
저자의 논문은 다음과 같은 점에 주목한다.
- RAM에 CPU 데이터가 누출되는 것을 배제할 수는 없지만, 공식적인 테스트 중에 발생한 어떠한 사례도 관찰할 수 없었다.어떤 경우라도 패치가 가능할 것으로 예상된다.
- 실행 중인 시스템의 커널을 통한 암호화 키에 대한 루트 액세스는 로드 가능한 커널 모듈이나 가상 메모리(/dev/kmem) 및 물리적 메모리(/dev/mem)를 사용하여 가능하지만, 그렇지 않으면 표준 실행 시스템에서 알려진 방식으로 액세스할 수 없는 것으로 나타난다.
- ACPI 절전 및 저전력 상태: - 실제 프로세서 레지스터는 CPU가 꺼지기 때문에 ACPI S3 상태(스톱-to-RAM) 및 S4 상태(스톱-디스크) 중에 0으로 재설정된다.
- CPU에 대한 콜드 부팅 공격: 실제 프로세서 레지스터에 대한 콜드 부팅 공격은 하드웨어 재설정과 소프트웨어 재설정("Ctrl-Alt-Delete") 모두에서 0으로 지워진다.그러나 가상 시스템에서는 가상 하드웨어 재설정 중에는 재설정되지만 소프트웨어 재설정 중에는 재설정되지 않기 때문에 CPU 레지스터가 현재 취약하다.저자들은 이를 많은 가상 머신 구현에서 명백한 결함으로 간주하지만, 가상 머신의 모든 레지스터는 호스트 시스템을 사용하여 액세스할 수 있을 가능성이 높기 때문에 이를 수정하더라도 가상 시스템은 본질적으로 취약할 것이라는 점에 주목한다.
- TRESOR는 CPU가 AES 명령 집합 확장을 지원하는 AES-NI 명령의 설계에 의한 타이밍 공격과 캐시 기반 공격에 내성이 있다.[6]2011년 현재 AES 확장을 처리할 수 있는 프로세서는 Intel Westmere 및 Sandy Bridge(일부 i3 제외)와 승계자, AMD Buldozer, 특정 VIA PadLock 프로세서 등이다.
- 2012년, TRESOR-HUNT라는 논문은 DMA 공격이 어떻게 이 시스템을 파괴할 수 있는지를 보여주었는데, 이는 TRESOR가 부과한 "잠금"을 우회하여 디버그 레지스터에서 키를 읽고 통상적인 메모리로 전송할 수 있게 한다.이 신문은 또한 그러한 공격을 완화시킬 수 있는 방법을 제안했다.[3]
참고 항목
참조 및 참고 사항
- ^ 다른 하나는 냉동 캐시라고 불렸는데, 두 가지는 CPU 기반 암호화 키 스토리지를 사용하는 것과 유사하지만 냉동 캐시가 CPU 레지스터가 아닌 목적으로 CPU 캐시를 사용한다는 점에서 차이가 있다. Erik Tews (December 2010). "Crypto Talk at 27C3: FrozenCache – Mitigating cold-boot attacks for Full-Disk-Encryption software, Day 3, 23:00, Saal 2". 27th Chaos Communication Congress.
- ^ a b Müller, Tilo; Freiling, Felix C.; Dewald, Andreas (2011). "TRESOR Runs Encryption Securely Outside RAM" (PDF). Preprint.
- ^ a b Blass, Erik-Oliver; Robertson, William. "TRESOR-HUNT: Attacking CPU-Bound Encryption" (PDF). ACSAC 2012.
- ^ Müller, Tilo (May 2010). "Cold-Boot Resistant Implementation of AES in the Linux Kernel" (PDF). Thesis.
- ^ "TRESOR Runs Encryption Securely Outside RAM".
- ^ 저자들은 인텔을 인용한다.Shay Gueron, Intel Advanced Encryption Standard(AES) 지침 세트 백서 3.0 개정판: "성능 향상을 넘어, AES 지침은 중요한 보안 이점을 제공한다. 데이터 독립적인 시간에 실행되며 테이블을 사용하지 않음으로써 AES의 테이블 기반 소프트웨어 구현을 위협하는 주요 타이밍과 캐시 기반 공격을 제거하는 데 도움이 된다."