Extending Layered Attestation into ARM Application Run-Times
본 논문은 권한 오버레이 확장(Permission Overlay Extensions)을 활용하여 로드 시점부터 실행 시점까지 하드웨어 기반 검증을 확장함으로써, 최소한의 성능 오버헤드로 런타임 무결성 검증 및 비밀 보호를 위한 검증된 도메인을 생성하는 ARM 기반 애플리케이션-런타임 앵커인 ARA를 제시한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
현대 컴퓨팅의 세계에서 신뢰는 종종 프로그램이 시작되는 바로 그 순간에 구축됩니다. 스마트폰에서 앱을 열 때, 기기는 소프트웨어가 실행되기 전부터 해당 소프트웨어가 정품인지, 그리고 변조되지 않았는지 확인합니다. 어테스테이션(attestation)이라고 알려진 이 과정은 칩 자체에 내장되어 소프트웨어의 정체성을 검증하는 하드웨어 기반의 '신뢰의 뿌리(root of trust)'에 의존합니다. 그러나 이러한 초기 검사가 통과되고 애플리케이션이 본격적으로 작업을 시작하면, 이 높은 수준의 보안은 흔히 사라져 버립니다. 기기는 프로그램이 올바르게 동작하고 있다고 가정하며, 이로 인해 악의적인 행위자가 앱의 동작을 변경하거나, 비밀을 훔치거나, 시스템이 알아차리지 못하는 사이에 데이터를 조작할 수 있는 틈이 생깁니다. 수년 동안 이 문제에 대한 해결책은 민감한 작업들을 별도의 격리된 환경으로 옮기는 것이었지만, 그렇게 하려면 컴퓨터가 서로 다른 보안 구역 사이를 끊임없이 전환해야 했으며, 이 과정은 속도를 늦추고 배터리 수명을 소모했습니다.
취리히 대학교와 화웨이의 연구진은 이러한 간극을 메우기 위해, 성능 저하 없이 애플리케이션의 전체 수명 동안 보안이 지속될 수 있도록 하는 새로운 접근 방식을 개발했습니다. 그들은 ARA라고 불리는 시스템을 만들었는데, 이는 애플리케이션 자체의 메모리 공간 내에 직접 안전하고 보호된 구역을 구축합니다. 연구진은 최신 ARM 프로세서에 도입된 새로운 하드웨어 기능을 사용하여, 애플리케이션이 자신의 동작을 감시하고 실시간으로 민감한 키를 보호할 수 있는 자체적인 '신뢰할 수 있는 보안 요원'을 호스팅할 수 있도록 했습니다. 그들의 연구는 애플리케이션이 실행되는 동안 높은 수준의 보안을 유지하고 앱이 올바르게 동작하는지 검증하면서도, 보안되지 않은 애플리케이션과 거의 동일한 속도로 작동하는 것이 가능하다는 것을 보여줍니다.
연구진이 직면한 핵심 과제는, 느리고 먼 경계를 가로질러 서로 통신하게 하지 않으면서도 어떻게 신뢰할 수 있는 보안 시스템을 잠재적으로 침해된 애플리케이션으로부터 격리할 것인가였습니다. 전통적인 방식은 보안 서비스를 완전히 별개의 프로세스나 특수 하드웨어 엔클레이브(enclave)에서 실행하는 데 의존합니다. 이러한 방식은 보안성은 높지만, 보안 검사가 필요할 때마다 컴퓨터가 메인 애플리케이션을 중단시키고, 컨텍스트를 전환하며, 복잡한 장벽을 가로질러 통신해야 합니다. 이러한 끊임적인 전환은 상당한 지연을 발생시켜, 프로그램의 모든 단계를 모니터링하거나 실시간으로 비디오 스트림을 복호화하는 것과 같이 매 순간 아주 짧은 결정을 내려야 하는 작업에는 부적합하게 만듭니다. 연구진은 해결책이 '퍼미션 오버레이 익스텐션(Permission Overlay Extensions)'이라는 새로운 하드웨어 기능에 있다는 것을 깨달았습니다. 이 기능은 단일 프로그램이 자신의 메모리를 서로 다른 접근 규칙을 가진 별개의 격리된 방들로 나눌 수 있게 해주며, 이 모든 것은 프로세서 자체에 의해 관리됩니다.
이 기술을 사용하여 연구진은 ARA가 애플리케이션의 주소 공간 내에서 안전한 닻 역할을 하도록 구축했습니다. 애플리케이션이 실행될 때, 신뢰할 수 있는 로더(loader)가 먼저 환경을 설정하여 메모리를 세 개의 뚜렷한 영역으로 나눕니다: 신뢰할 수 없는 애플리케이션 코드용, 제어된 진입점용, 그리고 보안 서비스를 위한 영역입니다. 그런 다음 프로세서에 이 영역들에 대한 엄격한 규칙을 강제하도록 지시합니다. 메인 애플리케이션은 자신의 데이터를 읽고 쓸 수 있지만, 보안 서비스가 위치한 메모리에는 절대 손을 댈 수 없습니다. 결정적으로, 애플리케이션은 스스로 이 규칙을 변경할 수 없습니다. 설령 해커가 애플리케이션에 악성 코드를 주입하는 데 성공하더라도, 그 코드는 물리적으로 보안 영역에 도달하거나 보안을 유지하는 권한을 변경할 수 없습니다. 애플리케이션이 보안 서비스와 상호작용할 수 있는 유일한 방법은 보안 시스템이 제어하는 특정 승인된 통로를 통해서뿐입니다.
연구진은 이 시스템이 실제 환경에서 어떻게 작동하는지 보기 위해 두 가지 뚜렷한 시나리오로 테스트를 진행했습니다. 첫 번째 사례에서는 비밀 키를 사용하여 비디오 콘텐츠를 복호화해야 하는 미디어 스트리밍 서비스를 시뮬레이션했습니다. 그들은 이 새로운 시스템을 별도의 프로세스를 사용하는 표준 방식과 비교했습니다. 결과는 새로운 시스템이 압도적으로 빠르다는 것을 보여주었습니다. 2시간 분량의 비디오 파일의 경우, 전통적인 방식은 프로세스 간의 끊임없는 전환으로 인해 몇 초의 지연이 발생했지만, 새로운 시스템은 단 1초 미만의 지연만을 추가했습니다. 두 번째 사례에서는 프로그램이 올로 바른 경로를 따르고 있는지 확인하기 위해 애플리케이션의 동작을 지속적으로 모니터링하는 시스템을 테스트했는데, 이는 초당 수천 번의 보안 검사를 요구하는 작업입니다. 여기서 새로운 시스템은 전통적인 방식보다 약 30배에서 55배 더 빨랐습니다. 이러한 속도 향상은 서로 다른 프로세스 사이를 전환하거나 운영 체제에 도움을 요청할 필요를 없앴기 때문에 가능했습니다. 보안 검사는 하드웨어에 의해 보호받으며 애플리케이션의 흐름 내에서 직접 이루어졌습니다.
또한 이 연구는 이 시스템이 모바일 기기의 기존 보안 환경에 어떻게 부합하는지를 다루었습니다. 현대의 스마트폰은 이미 앱이 처음 설치되거나 실행될 때 앱이 정당한지 검증하기 위해 하드웨어를 사용합니다. 연구진은 자신들의 시스템이 이러한 기존의 신뢰 사슬을 확장하도록 설계했습니다. 앱이 시작될 때, 기기는 앱 자체를 검증하는 것과 마찬가지로 보안 서비스를 검증합니다. 이는 원격 서버가 앱 내부에서 일어나는 보안 검사가 정당하며 변조되지 않았음을 확신할 수 있음을 의미합니다. 또한 이 시스템은 애플리케이션에 비밀 키를 안전하게 전달하는 방법을 포함합니다. 서버는 특정하고 검증된 인스턴스의 애플리케이션만이 잠금을 해제할 수 있는 암호화된 키를 보낼 수 있으며, 이를 통해 애플리케이션이 침해된 기기에서 실행되더라도 비밀이 보호된 메모리 구역 내에 안전하게 유지되도록 보장합니다.
이 시스템은 큰 가능성을 보여주지만, 연구진은 필요한 하드웨어 기능이 아직 상용 기기에는 존재하지 않는다는 점을 언급했습니다. 그들은 개념 증명을 위해 시뮬레이션 환경과 수정된 물리적 프로세서를 사용하여 프로토타입을 구축했습니다. 또한 현재의 설계는 애플리케이션이 단일 스레드로 실행된다는 것을 가정하고 있으며, 여러 개의 스레드를 동시에 지원하려면 모든 스레드에 대해 보안 규칙이 올바르게 유지되도록 추가적인 엔지니어링이 필요하다고 인정했습니다. 그럼에도 불구하고, 이 연구는 애플리케이션이 빠르면서도 안전할 수 있는 미래를 위한 실질적인 청사진을 제공합니다. 이는 성능과 보호 사이의 오랜 절충안이 불가피한 것이 아니며, 적절한 하드웨어 지원이 있다면 우리는 사용자 경험을 저하시키지 않으면서도 스스로의 비밀을 보호하고 자신의 무결성을 검증하는 애플리케이션을 가질 수 있음을 시사합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.