안드로이드 11까지 지탱해 온 안드로이드 보안의 변천사

시장조사기관 스탯카운터에 따르면 2019년 5월부터 2020년 5월까지 1년 동안 전세계 스마트폰 가운데 무려 72.6%에 이르는 스마트폰이 안드로이드 운영체제를 쓰는 것으로 확인된다. 10명 중 7명 이상 안드로이드 운영체제가 탑재된 스마트폰을 쓰고 있을 만큼 가장 대중화된 모바일 운영체제라는 점에서 이견은 없을 듯하다.

26.7%의 점유율을 차지하는 iOS와 함께 많은 이용자들이 사용하는 모바일 운영체제로 자리 잡은 원인을 한 가지만 콕 짚어 말하긴 어렵다. 하지만 모바일 생태계를 거대한 축으로 성장하는 데 있어 이용자의 신뢰를 얻지 못했다면 안드로이드는 결코 자리를 잡지 못했을 거라는 점은 분명하다. 모바일 장치를 통해 개인 정보는 물론 위치 데이터, 금융 거래 같은 온갖 민감 정보에 기반한 다양한 활용이 가능했던 것은 이러한 변화에 대비한 대책을 담아온 때문이다.

최근 구글은 올해 정식 발표할 안드로이드 11의 베타 테스트를 시작했다. 안드로이드 11은 앞으로 모바일 장치에서 좀더 안전하게 갖가지 데이터를 보관하고 보호하면서 활용할 수 있는 기술과 방법을 추가할 것으로 알려졌다. 새로운 변화를 이야기하기에 앞서 안드로이드 시작부터 이용자를 위한 보안 기술과 기능이 어떻게 변화했는지 살펴본다.

 

확장되는 생태계에 대응해야 했던 안드로이드 보안

안드로이드는 가장 많은 스마트폰에서 이용하고 있는 운영체제인 것은 맞지만, 보안은 단순히 운영체제에 국한되지 않는다. 안드로이드가 처음 상업용 스마트폰에 탑재되기 시작한 이후 안드로이드가 대응해야 할 보안 범위는 운영체제를 벗어나 훨씬 더 넓은 범위로 확대될 수밖에 없었기 때문이다.

일단 운영체제 자체의 보안은 처음부터 신경 썼던 부분이었다. 운영체제를 개발할 때 발생할 수 있는 취약점을 찾아 내고 해당 문제를 빠르게 보완하는 것은 기본이었기 때문이다. 하지만 시간이 지날 수록 보안 위협이 증가하면서 안드로이드는 운영체제에서 발견된 취약점을 찾는 것 이상으로 빨리 메우기 위한 방법을 도입해야만 했다. 운영체제 전체를 업데이트하지 않고 보안 업데이트만 빠르게 적용하는 기술도 그렇게 도입되었다.

여기에 운영체제에 저장된 여러 데이터를 보호하기 위한 보안 및 암호화 기술도 강화됐다. 안드로이드 스마트폰은 시간이 지날 수록 점점 더 많은 개인 데이터 및 민감 데이터를 저장해 왔기 때문에 이를 탈취하기 위한 보안 위협과 수법도 다양해진 터라, 이용자의 허가 없이 이러한 데이터에 접근하는 것을 차단하기 위한 보안 대책들이 꾸준히 적용됐다.

안드로이드가 배포되기까지 수많은 생태계 요소가 관여하고 있는 만큼 보안은 매우 중요하다.(이미지 출처 : 안드로이드 개발자 블로그)

안드로이드에서 실행되는 앱과 앱을 유통하는 스토어에 대한 보안도 강화했다. 안드로이드는 수많은 앱을 설치해 활용할 수 있지만, 앱 개발자들 가운데 일부는 악의적인 앱을 만들어 개인 정보와 데이터를 탈취하는 데 악용했다. 이에 구글은 안드로이드 앱의 등록과 배포, 설치과 실행까지 전 과정에서 위협으로 의심되는 앱의 유통과 실행을 차단할 수 있는 보호 장치를 준비했다.

지문이나 홍채, 얼굴 인식으로 스마트폰의 잠금이나 본인 확인 기술이 대중화되면서 스마트폰에 여러 유형의 생체 정보를 저장하게 됐다. 운영체제도 이러한 생체 인증 흐름에 맞게 보호 방법을 개발해 탑재했고, 이에 더해 물리적 신분증을 대신하는 디지털 신분증 표준에 맞는 보안 프레임워크도 준비하고 있다. 스마트폰에서 발생하는 개인정보보호를 보호하기 위해서 업그레이드 된 정책에 따라 관련 기능도 정비했다.

클라우드로 전송된 데이터를 보호하는 것도 안드로이드에서 챙겨야 할 보안의 일부가 됐다. 스마트폰 성능이 좋아지고 네트워크 속도가 빨라지면서 일반 데이터는 물론 비밀번호와 같은 다양한 정보를 클라우드에 저장하고 불러올 수 있게 되면서 이에 대한 보안 기술도 따로 뗄 수 없게 된 것이다.

 

안드로이드 1.x~3.0

안드로이드의 진화를 기간 별로 나누긴 어려운 일이다. 하지만 2008년 처음 안드로이드 1.5(일명 컵케이크)와 1.6(도넛)을 채택한 스마트폰을 선보였을 무렵부터 대중화를 이끄는 버전이 나오기 전까지를 초기로 볼 수는 있을 듯하다.

안드로이드 초기 시절 오픈 소스로 개방해 개발하면서 모바일 앱을 유통하는 안드로이드 마켓을 처음 구축하던 때 안드로이드는 다른 운영체제에 비하면 눈길을 끌지는 못했다. 운영체제와 앱스토어를 운영하는 기본 골격은 애플의 아이폰 생태계와 유사했지만, 초기 이용자가 많지 않았을 때 안드로이드의 결함을 노린 공격도 많지는 않았다.

다만 초기 안드로이드는 사실 보안을 크게 강조하던 때는 아니었지만, 운영체제의 취약점을 미리 막는 조치를 해두었다. 안드로이드 1.5는 스택 버퍼 오버런 방지와 정수 오버 플로, double free() 취약점을 방지하고 청크 통합 공격을 방지, 메모리 할당 중 정수 오버플로 방지 등 운영체제를 공격해 작동을 불안하게 만들 수 있는 몇 가지 취약점에 대비했다.

에클레어, 프로요, 진저브레드까지 걸친 안드로이드 2.x 시대에 들어서도 안드로이드 스마트폰 점유율은 3%를 넘지 못했다. 그렇지만 안드로이드의 기능이 강화되고 채택 비율이 조금씩 높아지면서 기업 환경에 맞춘 마이크로소프트 익스체인지를 지원하고 이에 대한 보안 정책이 추가됐다. 또한 오랜 보안 논란에도 어도비 플래시의 지원을 더했다.

무엇보다 안드로이드 2.3(진저브레드)부터 NFC를 과감하게 지원한 것이 눈길을 끌었다. 사실 NFC는 이를 지원하는 태그 또는 NFC 장치를 통해 쉽게 장치와 연결하거나 데이터를 읽고 필요한 기능을 실행할 수 있지만, 도청, 데이터 손상 및 조작, 가로 채기 등 여러 보안 위협도 있었기 때문이다.

안드로이드 2.x 시기 눈 여겨 볼 다른 특징은 보안 업데이트의 시행이다. 일반적으로 운영체제 출시 이후 기능 향상을 위한 업데이트는 진행됐지만, 보안을 이유로 업데이트가 안드로이드 2.0 에클레어에서 시행됐다. 다만 당시 보안 업데이트는 운영체제 등장 이후 1년 또는 1년 6개월 정도 짧은 기간 시행되었다.

참고로 안드로이드 3(허니콤)은 안드로이드 최초로 태블릿 전용으로 출시된 운영체제였다. 스마트폰에 있던 물리 버튼이 없는 풀 스크린 터치 인터페이스를 갖추고 멀티 태스킹 및 외장 저장 장치와 키보드 도크 지원 등 태블릿 환경에 맞는 기능을 보완했는데, 상대적으로 보안성도 강화됐다. 특히 사용자의 데이터를 암호화하는 기능과 응용 프로그램이 지정된 저장소 이외의 메모리 카드 같은 다른 저장소에 대한 쓰기 권한을 허용하지 않는 중요한 변화가 담겨 있다.

 

안드로이드 4.0~7.0

안드로이드 4.0(아이스크림 샌드위치)는 2011년 10월에 정식 발표됐다. 그런데 이 운영체제는 발표 당시부터 보안 허점을 가진 기능들이 문제가 됐다. 가장 큰 논란은 얼굴 인식 잠금 해제였다. 안드로이드는 거의 10여년 전에 요즘 흔히 쓰는 얼굴 인식 잠금 해제 기능을 넣었지만, 지금처럼 정교한 스캔 방식의 기술을 쓰는 것은 아니었다. 전면 카메라로 이용자의 얼굴 이미지를 여러 각도로 캡쳐한 뒤 잠금 해제 때 전면 카메라로 수집된 이미지를 비교하는 방식을 적용했으나 여러 방법으로 이를 우회할 수 있을 정도로 완성도가 낮았던 것이다. 얼굴 구조가 비슷한 사람이나 사진만 있어도 얼굴 인식으로 잠금이 해제될 정도로 허술했다. 이와 함께 데이터 전송을 위한 안드로이드 빔은 암호화되지 않은 정보를 전송할 수 있어 안드로이드에 저장된 정보를 쉽게 도난 당할 수 있는 방법으로 지적되기도 했다.

안드로이드 보안의 큰 변화는 안드로이드 4.2(젤리빈)에서 도입한 보안을 강화한 SELinux(Security Enhanced Linux)의 도입이다. 허용되지 않은 모든 것을 거부하는 접근 제어 모듈을 추가함으로써 안드로이드의 커널을 보호하는 한편 응용 프로그램 데이터 및 시스템 로그 접근을 제어한다. 이를 통해 악성 프로그램의 영향을 줄이고 잠재적인 코드 결함을 방지하고자 했으나 강제로 앱에 적용하진 않았다. 안드로이드 4.4(킷캣)는 장치를 켤 때 관여된 부트로더와 부트 파티션, 기타 인증된 파티션이 손상되지 않았는지 확인하는 자체 검사 부팅(Verified boot)이 적용하면서 운영체제의 안정성을 높이려 했다.

2014년 선보인 안드로이드 5.0(롤리팝)은 가장 많은 변화를 담았으면서 동시에 새로운 보안 취약점과 직면했다. 기존 안드로이드의 자바 실행 컴파일러였던 DALVIK을 JIT로로 교체하면서 전반적인 성능을 높였던 것이다. 다만 안드로이드의 오버로드 결함을 악용한 보안 취약성으로 공격자가 장치를 가로챌 가능성이 있었다. 공격자가 시스템이 느려질 정도로 매우 긴 문자열의 암호를 준비해 카메라를 실행시킨 상태에서 복사한 문자열을 입력창에 넣으면 일정 시간이 흐른 뒤 카메라 앱과 홈 런처가 충돌하며 잠금이 해제되는 보안 취약성이 등장했다. 더불어 스마트폰과 페어링한 블루투스 장치 또는 NFC 장치가 있을 때 장치 잠금을 해제하는 스마트 락(Smart Locking)이 작동하면 이를 악용할 위험도 있었기 때문에 이후 수정을 거쳐 장치 암호화를 기본 값으로 변경하고 모든 앱의 SELinux 강제 모드를 필수로 설정했다. 여기에 원격으로 공장 초기화할 수 있는 킬 스위치(Kill Switch)도 도입했다.

2015년 악명 높았던 스테이지프라이트를 막기 위한 조치가 안드로이드 7.0에 추가됐다.(이미지 출처 : 테크리퍼블릭)

안드로이드 6(마시멜로우)는 상대적으로 안드로이드 자체의 보안 문제보다 구글 플레이가 아닌 다른 앱스토어에서 다운로드한 앱으로 특정 회사의 모바일 프로세서를 탑재한 장치의 권한을 획득할 수 있는 보안 취약점이 이슈였다. 이로 인해 구글은 안드로이드 보안 게시판을 만들어 보안 취약성에 대해 보고하고 보안 패치를 자동으로 업데이트하는 시스템을 만들었다.

2016년 8월에 발표된 안드로이드 7.0(누가)는 보안 측면에서 많은 변화를 줬다. 장치 암호화 저장소 및 자격 증명 암호화 저장소 등 데이터를 2개 그룹으로 나누고, 강력한 파일 기반 암호화, 안드로이드 비디오 재생 라이브러리를 오버플로 시켜 상승한 권한으로 악성 코드를 실행했던 스테이지프라이트(StageFright)를 방지하기 위한 미디어 서버 개선, VPN 상시 작동 및 업무 시간이 지나면 모든 업무 관련 앱을 사용 중단 시키는 작업 모드 아이콘 등이 추가됐다.

 

안드로이드 8.0~10

안드로이드 8.0(오레오)의 보안은 이용자가 쓰는 앱의 변조 방지를 위한 정책과 보안 기술이 추가됐다. 특히 구글 플레이를 통하지 않고 출처를 알 수 없는 앱을 이용자가 설치할 때 발생할 수 있는 보안 위협이 증가하자, 기존 한번만 설정하면 설치할 수 있는 사이드 로드 앱을 다운로드하는 앱부터 차단할 수 있도록 설정을 강화했다. 또한 구글 플레이 프로텍트를 통해 구글 플레이에서 배포되는 앱 가운데 이용자를 기만하거나 멀웨어 기능을 가진 잘 알려지지 않은 앱에 대한 보안 위협을 확인할 수 있도록 조치했다.

여기에 빠른 업그레이드를 위해 파티션을 나누어 기존 운영체제와 별개로 새 운영체제를 설치한 뒤 이동하는 프로젝트 트레블과 커널 드라이버에 직접 접근하지 않고 하드웨어를 쓸 수 있도록 샌드박스화된 HAL을 제공했다. 이 밖에 안전하지 않은 SSL 버전에 대한 지원을 중단하고 TLS가 잘못 구현된 서버에 연결하기 위한 TLS 폴백도 보안 문제가 있어 제거했다. 이 밖에 운영체제 뿐만 아니라 하드웨어의 변조를 방지하는 물리 모듈을 탑재한 장치를 지원하는 기능을 추가하는 한편 블루투스 또는 NFCㄹ르 이용하는 물리적 보안 키도 지원했다. 운영체제 변조 방지를 위한 강화된 안드로이드 Verified Boot 2.0의 도입으로 이전보다 보안이 취약한 운영체제로 다운그레이드할 경우 장치 부팅을 못하도록 설계했다.

운영체제 파티션을 나눠 새로운 운영체제 업데이트를 유연하게 진행하려고 했던 프로젝트 트레블.(이미지 출처 : 구글 안드로이드 개발자 블로그)

안드로이드 9.0(파이)는 앱에 대한 감시와 보안 인증을 강화하는 조치들이 추가됐다. 구글 플레이 스토어는 물론 설치된 오작동을 감시하는 구글 플레이 프로텍트가 운영체제에 통합됐고, 안드로이드 장치의 안전을 위해 본인 확인을 강화하는 2단계 인증이 도입됐다. 2단계 인증으로 구글 게정에서 관리하는 민감한 데이터를 한번 더 보호할 수 있는데, 이를 위한 연락처 등록 및 구글 OTP 등 여러 2단계 인증 장치들을 적용했다. 더불어 그 동안 무심했던 앱 권한 요청에 대해 이용자가 좀더 엄격하게 관리할 수 있도록 했다. 각 앱이 어떤 권한을 요청하는지 확인하고 허용 여부를 결정하게 했으며 나중에 권한을 조정할 수 있도록 관리 기능을 강화했다.

일부 앱이 백그라운드에 실행되며 카메라와 마이크를 활성화되던 기능을 제외했고, 지문이나 홍채 같은 생체 인식을 비활성화하는 대신 핀이나 패턴, 비밀번호만 잠금 작동하도록 새로운 잠금 모드가 추가됐다. 또한 기기를 초기화하거나 복원할 때 좀더 안전하게 작업할 수 있도록 핀을 이용한 이중 인증 방식을 적용했다.

지난 해 발표한 안드로이드 10은 안드로이드 보안 업데이트를 손쉽게 할 수 있는 장치가 추가됐다. 마치 구글 플레이에서 설치한 앱을 업데이트하는 것처럼 프로젝트 메인라인(Project Mainline)의 도입으로 업데이트 해야 하는 보안 모듈만 운영체제 프레임워크에 탑재할 수 있게 되어 보안 업데이트마다 대규모 데이터를 다운로드해 업데이트하던 일이 사라졌다. 이로 인해 취약점 발견에 따른 보안 패치를 빠르게 적용할 수 있게 됐고 이용자의 안전이 상대적으로 높아졌다.

이와 함께 개발자가 구글 플레이 스토어에서 안드로이드 장치에 설치하는 앱이 조작되지 않았음으로 확인하는 애플리케이션 서명 체계를 도입했다. 또한 엔터프라이즈 보안을 강화하는 방법으로 안드로이드 10은 아디안텀(Adiantum)이라는 새로운 저장 장치 암호 체계로 저성능 프로세서를 탑재한 장치에서 데이터 저장 때 발생하는 성능 저하를 줄였다. 이 밖에 각 앱은 관련되지 않은 디렉토리의 파일에 접근하는 것을 차단하고 다른 폴더의 파일에 접근해야 할 경우 이용자의 권한을 얻어야 한다. 위치 공유에 대한 이용자의 제어 권한이 강화되었고, 하드웨어를 특정할 수 있는 IMEI나 다른 일련 번호를 알 수 없도록 제한했다.

 

안드로이드 11에 준비 중인 보안 기술들

비록 여러 요인들로 뒤숭숭해진 미국 사회의 분위기로 인해 구글도 예정했던 6월 3일보다 늦은 6월 11일부터 안드로이드 11 베타 테스트를 시작했다. 안드로이드 11 베타 테스트는 코로나19의 영향으로 예정된 일정보다 무려 한 달이나 늦게 공개되었으므로 올해 안드로이드 11 정식 버전의 출시 일정까지 영향을 미칠 것으로 보인다.

안드로이드 11 베타 버전은 새로운 기능을 다수 포함하면서도 보안과 개인 정보 보호를 위한 기술과 기능을 추가했다. 이번 안드로이드 11에서 눈길을 끄는 부분은 블록 스토어와 원탭이다. 블록 스토어는 앱에 로그인한 사용자의 인증 토큰을 장치에 저장하고 클라우드에 백업한 뒤 새 장치에 해당 앱을 설치하고 실행하면 암호를 재입력하지 않고 복원하는 기술이다. 해당 토큰은 장치뿐만 아니라 클라우드까지 모두 암호화되어 저장되는데, 안드로이드 11에서 올해 말에 시범 적용한다. 원탭은 지난 4월 선보인 기능으로 가입을 필요로 하는 앱 또는 서비스에서 구글 계정으로 가입할지 미리 묻는데, 해당 서비스가 원탭을 지원하고 구글 계정으로 연동되어 있으면 원탭 로그인 또는 계정 자동 완성을 표시해 계정 및 비밀번호 입력 없이 곧바로 로그인할 수 있다.

안드로이드 11에서 구현될 블록 스토어.(이미지 출처 : 구글 안드로이드 개발자 유튜브)

로그인 관리 강화와 아울러 안드로이드 11은 앞으로 나올 디지털 신원 증명에 대비하는 기술을 준비했다. 이는 이용자의 신원을 증명하는 여러 식별 문서를 안전하게 저장하고 검색을 지원할 수 있는 기술이다. 이용자의 지문이나 홍채, 얼굴 등 생체 식별 정보를 프로세서의 보안 영역에 저장하고 있지만, 운전 면허증처럼 민감한 자격 증명 정보를 저장하기 위해 암호화 방법 및 표준화 절차를 따르는 전자 ID 라이브러리를 안드로이드 11에 넣은 것이다.

이 밖에 안드로이드 11은 새로 설치되는 앱에 대한 권한을 더 엄격하게 제어한다. 이제 안드로이드 11은 설치된 앱을 실행할 때 마이크와 위치, 카메라에 대해 영구적으로 권한을 부여하는 옵션을 제외하고 앱 실행 중에만 권한을 부여하거나 이번 실행에만 권한을 부여, 또는 거부 등 세 가지 선택 항목으로 정리해 앱이 백그라운드에서 권한을 악용하지 못하도록 했다.

여기까지 공개된 안드로이드 11에서 보게 될 보안 관련 기술과 기능들의 특징을 요약하면 이용자 대부분이 귀찮게 여기면서도 가장 중요한 보안과 관련된 행동을 손쉽게 만들어준다는 점이다. 특히 모바일 서비스의 증가로 인해 복잡해진 암호 관리로 발생하는 보안 문제에서 벗어날 수 있는 현실적인 대책을 담은 것이 흥미롭다. 또한 아직 낯설긴 해도 스마트폰에 담게 될 모바일 신분증 시대에 대비해 디지털 ID를 안전하게 저장하고 관리할 수 있는 기술을 준비한 것도 기대해 볼만한 점이다.

이처럼 안드로이드 11에서 보듯이 첫 상용화 이후 11년이라는 긴 시간 동안 모바일 시장을 장악하게 된 것은 시대의 흐름에 맞는 보안으로 든든하게 뒤를 받친 결과다. 아무리 뛰어난 기능을 담은 운영체제였어도 보안이 없었다면 안드로이드의 영토는 지금보다 훨씬 줄어들었을 것이다. 그러한 보안 기술 덕분에 수많은 모바일 이용자와 개발자, 이통사와 제조사 그 밖의 생태계 구성원들이 안드로이드를 믿고 쓰는 이유다.

덧붙임 #

  1. 이 글은 KISA 리포트 2020.0506에 기고한 것으로 편집본은 KISA 리포트 자료실에서 다운로드할 수 있습니다. 
  2. 이 글은 2020년 7월 7일에 이 사이트에 공개되었습니다.
PHIL CHiTSOL CHOI Written by:

2 Comments

  1. 열이아빠
    2020년 7월 7일
    Reply

    KISA Report 5월이 아니라 6월호입니다.

    • chitsol
      2020년 7월 7일
      Reply

      앗… 수정했습니다. 고맙습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다