GrapheneOS의 잠금 장치 데이터 추출 방지 기술
안드로이드 기반의 커스텀 OS인 GrapheneOS는 강력한 하드웨어 보안 모듈과 메모리 보호 기술을 통해 기기 잠금 상태에서의 데이터 추출 및 무차별 대입 공격(Brute-force)을 철저히 방어합니다. 이는 최신 안드로이드 보안 기능을 극대화하여 사용자가 고강도 비밀번호를 안전하고 편리하게 사용할 수 있도록 지원합니다. 물리적 기기 탈취나 국가 주도의 공격 등 극단적인 상황에서도 데이터를 보호해야 하는 보안 실무자에게 매우 중요한 업데이트입니다.
GrapheneOS는 데이터 추출에 대한 강력한 방어 체계를 갖추고 있습니다. 이는 안드로이드 17이 제공하는 표준 보안 기능과 현재 안드로이드에서 사용 가능한 가장 안전한 하드웨어를 기반으로 구축되었습니다. 현재 GrapheneOS에 필요한 하드웨어 보안 기능과 업데이트를 제공하는 기기는 픽셀(Pixel) 스마트폰뿐입니다. 하지만 모토로라 모빌리티(Motorola Mobility)와의 파트너십과 퀄컴(Qualcomm)의 발전 덕분에 2027년에는 이 상황이 변할 것입니다.
디스크 암호화는 데이터에 대한 강력한 보호를 제공합니다. 아무리 정교한 공격자라도 이를 직접 뚫는 것은 불가능에 가깝습니다. 대신 공격자들은 기기가 잠금 해제된 상태(AFU)일 때 운영체제의 취약점을 노리거나 PIN/비밀번호에 대한 무차별 대입 공격(Brute-force)을 시도해야 합니다. 안드로이드 16 QPR2는 지연 시간을 점진적으로 늘리는 하드웨어 기반 보안 요소(Secure element)의 속도 제한을 요구합니다. 오류가 10회 발생하면 4시간, 15회 발생하면 41일 동안 대기해야 하며, 총 시도 횟수는 20회로 제한됩니다. 사용성을 위해, 반복된 동일한 실수로 시도 횟수를 낭비하지 않도록 가장 최근에 실패한 5개의 고유한 시도는 즉시 거부합니다. GrapheneOS는 최신 세대 보안 요소 속도 제한을 구현한 기기만 지원합니다.
지원되는 기기의 보안 요소는 내부자 공격 방지(Insider attack resistance) 기능도 갖추고 있습니다. 이는 보안 요소의 펌웨어를 업데이트하기 전에 기기 소유자(Owner)의 인증을 성공적으로 완료해야만 구현됩니다. 유효한 서명 키와 높은 버전 번호만으로는 부족합니다. 이의 목적은 속도 제한을 제거하는 펌웨어 업데이트를 강제로 만들어내려는 정부의 시도를 방지하는 것입니다. 픽셀 기기는 2017년 말 출시된 픽셀 2부터 내부 타이머가 있는 보안 요소를 사용하여 속도 제한 및 내부자 공격 방지를 구현해 왔습니다. (관련 포스팅: https://android-developers.googleblog.com/2018/05/insider-attack-resistance.html) 그 이후로 보안 요소와 운영체제 통합은 훨씬 좋아졌지만, 이러한 기반은 오래전부터 마련되어 왔으며 새로운 기능이 아님을 보여줍니다.
GrapheneOS는 비밀번호의 글자 수 제한을 16자에서 128자로 늘렸습니다. 이를 통해 보안 요소의 속도 제한에 의존하지 않는 높은 엔트로피(High entropy)의 다이스웨어(Diceware) 암호문을 사용할 수 있습니다. 생체 인식 잠금 해제로 인해 강력한 암호문을 망치지 않으면서도 편리하게 사용할 수 있도록, GrapheneOS는 선택적 2단계 지문 PIN을 추가했습니다. 허용되는 지문 시도 횟수를 20회에서 5회로 줄였으며, 올바른 2단계 PIN을 입력하지 못하면 이 횟수에 포함됩니다. 이렇게 하면 기기 재부팅 후 최초 잠금 해제 전(BFU) 상태에서 필수적인 기본 잠금 해제 방법으로 6~8개의 무작위 다이스웨어 단어를 사용하고, 편의성을 위해 짧은 PIN을 사용하는 지문+PIN 방식을 함께 사용할 수 있습니다. 유효한 지문이 인식되면 2단계 PIN을 입력하라는 메시지가 표시되며, 이를 입력해야 화면 및 하드웨어 키스토어(Keystore) 잠금 해제가 완료됩니다.
GrapheneOS는 강화된 메모리 할당자(Hardened memory allocators) 및 기타 기능을 통해 운영체제에 대한 익스플로잇(Exploit) 방어를 크게 개선했습니다. 또한 익스플로잇으로부터 보호하기 위해 하드웨어 기반 메모리 태깅(MTE)을 포함한 하드웨어 기반 보안 기능을 적극적으로 활용합니다. 이러한 보호 기능에 대한 부분적인 개요는 여기에서 확인할 수 있습니다: https://grapheneos.org/features#exploit-protection
GrapheneOS는 물리적 접근을 통한 공격에 대비한 특수한 보호 기능도 추가했습니다. 예를 들어, 기기가 잠겨 있는 동안에는 소프트웨어 및 하드웨어 수준에서 새로운 USB 연결을 기본적으로 차단하며, 활성화된 USB 연결이 없는 즉시 USB 데이터 전송을 비활성화합니다. GrapheneOS는 2021년 6월에 잠금 장치 자동 재부팅 타이머를 출시했습니다. 이 타이머는 10분에서 72시간 사이로 설정할 수 있습니다. 기본값을 72시간으로 설정했다가 나중에 18시간으로 낮췄습니다. 운영체제를 종료하고 부팅하는 과정의 일환으로 메모리를 초기화(Memory zeroing)하기 때문에, 기기가 자동으로 재부팅되면 잠금 해제 전(BFU) 상태로 돌아갑니다. 2024년 4월에는 픽셀 기기가 펌웨어 fastboot 모드 부팅 시 메모리를 초기화하도록 했습니다. Apple과 Google도 iOS 18.1 및 안드로이드 16에서 잠금 장치 자동 재부팅 타이머를 추가했습니다. 안드로이드의 경우 고급 보호 모드(Android Advanced Protection Mode)를 통해 활성화할 수 있습니다. 당사의 구현이 여러 가지 이유로 더 우수하지만, 이는 그 자체로도 매우 유용한 기능입니다. 안드로이드는 각 보조 사용자 계정에 대해 별도의 암호화 키를 사용합니다.