Android 기기 보안

Android는 업계 최고의 보안 기능을 통합하고 개발자 및 기기 구현자와 함께 협력하여 Android 플랫폼 및 생태계의 보안을 유지합니다. Android 플랫폼 및 그 주위에 빌드되고 클라우드 서비스에 의해 지원되는 앱 및 기기의 원활한 생태계를 활성화하는 데는 강력한 보안 모델이 필수적입니다. 따라서 Android는 개발 수명 주기 전체를 통해 엄격한 보안 프로그램을 적용받습니다.

Android는 개방형으로 설계되었습니다. Android 앱은 플랫폼을 통해 노출되는 로컬 및 제공 데이터뿐만 아니라 고급 하드웨어 및 소프트웨어를 사용하여 소비자에게 혁신 및 가치를 제공합니다. 이러한 가치를 실현하기 위해 플랫폼은 사용자, 데이터, 앱, 기기 및 네트워크의 기밀성, 무결성 및 가용성을 보호하는 앱 환경을 제공합니다.

개방형 플랫폼을 보호하려면 강력한 보안 아키텍처 및 엄격한 보안 프로그램이 필요합니다. Android는 개방형 플랫폼을 지원하는 동시에 플랫폼의 모든 사용자를 보호할 수 있을 정도로 유연한 멀티 레이어 보안으로 설계되었습니다. 보안 문제 신고 및 업데이트 프로세스에 관한 자세한 내용은 보안 업데이트 및 리소스를 참조하세요.

Android는 개발자를 위해 설계되었습니다. 보안 컨트롤은 개발자의 부담을 줄이도록 설계되었습니다. 보안에 정통한 개발자는 유연한 보안 컨트롤을 사용하여 손쉽게 작업할 수 있습니다. 보안에 익숙하지 않은 개발자는 안전한 기본값을 통해 보호됩니다.

Android는 안정적인 기반 플랫폼을 제공할 뿐만 아니라 여러 가지 방법으로 개발자에게 추가 지원을 제공합니다. Android 보안팀은 앱의 잠재적인 취약점을 찾아 문제를 해결하는 방법을 제안합니다. Google Play가 설치된 기기에서는 Play 서비스가 앱 통신을 보호하는 데 사용되는 OpenSSL과 같은 중요한 소프트웨어 라이브러리의 보안 업데이트를 제공합니다. Android 보안팀에서는 개발자가 개발 중인 플랫폼이 무엇이든 플랫폼에서 잠재적인 보안 문제를 찾을 수 있도록 SSL(nogotofail) 테스트 도구를 출시했습니다.

Android 앱 개발자를 위한 자세한 정보는 developer.android.com에서 찾을 수 있습니다.

Android는 사용자를 위해 설계되었습니다. 사용자는 각 앱에서 요청한 권한을 파악할 수 있으며 권한을 제어할 수 있습니다. 이러한 설계 방식에는 공격자가 기기 사용자의 멀웨어 설치를 유도하는 소셜 엔지니어링 공격 및 Android의 서드 파티 앱을 향한 공격과 같은 일반적인 공격을 시도할 것이라는 예상이 포함됩니다. Android는 이러한 공격의 가능성을 줄이는 동시에 공격받았을 때 공격의 영향을 크게 제한하도록 설계되었습니다. 그리고 사용자가 기기를 제어하는 상황에서도 Android 보안은 계속 진행됩니다. Android는 파트너 및 일반 대중과의 협력을 통해 보안 업데이트를 계속 수신하는 모든 Android 기기에 패치를 제공합니다.

최종 사용자를 위한 자세한 정보는 Nexus 고객센터, Pixel 고객센터 또는 기기 제조업체 고객센터에서 찾을 수 있습니다.

이 페이지에서는 Android 보안 프로그램의 목표를 개괄적으로 살펴보고 Android 보안 아키텍처의 기본사항을 설명하며 관련하여 시스템 설계자 및 보안 분석가들이 가장 궁금해 하는 사항에 대한 답변을 제공합니다. Android 핵심 플랫폼의 보안 기능에 집중하며 브라우저 또는 SMS 앱 관련 문제와 같이 특정 앱에 고유한 보안 문제는 다루지 않습니다.

배경

Android는 휴대기기에 오픈소스 플랫폼 및 앱 환경을 제공합니다.

아래 섹션 및 페이지는 Android 플랫폼의 보안 기능을 설명합니다. 그림 1은 다양한 Android 소프트웨어 스택 수준의 보안 구성요소 및 고려사항을 보여줍니다. 각 구성요소는 아래 구성요소가 적절하게 보호되었다고 가정합니다. 루트로 실행되는 소수의 Android OS 코드를 제외하고 Linux 커널 위의 모든 코드는 애플리케이션 샌드박스에 의해 제한됩니다.

그림 1: Android 소프트웨어 스택

그림 1. Android 소프트웨어 스택

Android 플랫폼의 주요 기본 구성요소는 다음과 같습니다.

  • 기기 하드웨어: Android는 스마트폰, 태블릿, 시계, 자동차, 스마트 TV, OTT 게임 박스 및 셋톱 박스를 포함한 광범위한 하드웨어 구성에서 실행됩니다. Android는 프로세서에 구속받지 않지만 ARM eXecute-Never와 같은 일부 하드웨어 관련 보안 기능을 활용합니다.
  • Android 운영체제: 핵심 운영체제는 Linux 커널 위에 구축됩니다. 카메라 기능, GPS 데이터, 블루투스 기능, 텔레포니 기능 및 네트워크 연결과 같은 모든 기기 리소스는 운영체제를 통해 액세스됩니다.
  • Android 애플리케이션 런타임: Android 앱은 대부분 자바 프로그래밍 언어로 작성되며 Android 런타임(ART)에서 실행됩니다. 그러나 핵심 Android 서비스 및 앱을 비롯한 많은 앱은 네이티브 앱이거나 네이티브 라이브러리를 포함합니다. ART와 네이티브 앱은 모두 애플리케이션 샌드박스 내에 포함된 동일한 보안 환경에서 실행됩니다. 앱은 데이터베이스 및 원시 파일을 포함하여 비공개 데이터를 작성할 수 있는 파일 시스템의 전용 부분을 얻습니다.

Android 앱은 핵심 Android 운영체제를 확장합니다. 다음과 같은 두 가지 기본 앱 소스가 있습니다.

  • 사전 설치된 앱: Android에는 전화, 이메일, 캘린더, 웹브라우저 및 연락처를 비롯한 사전 설치된 앱 세트가 포함되어 있습니다. 이러한 앱은 사용자 앱 역할을 하며 다른 앱에서 액세스할 수 있는 주요 기기 기능을 제공합니다. 사전 설치된 앱은 오픈소스 Android 플랫폼의 일부이거나 기기 제조업체에서 특정 기기용으로 개발한 앱일 수 있습니다.
  • 사용자 설치 앱: Android는 서드 파티 앱을 지원하는 개방형 개발 환경을 제공합니다. Google Play는 사용자에게 수십만 개의 앱을 제공합니다.

Google 보안 서비스

Google은 Google 모바일 서비스와 호환되는 Android 기기에서 사용할 수 있는 일련의 클라우드 기반 서비스를 제공합니다. 이러한 서비스는 Android 오픈소스 프로젝트(AOSP)의 일부는 아니지만 많은 Android 기기에 포함되어 있습니다. 서비스에 관한 자세한 내용은 Android 보안의 2018년 결산을 참조하세요.

기본 Google 보안 서비스는 다음과 같습니다.

  • Google Play: Google Play는 사용자가 Android 기기 또는 웹에서 앱을 검색, 설치 및 구매할 수 있게 하는 서비스 컬렉션입니다. 개발자는 Google Play를 통해 Android 사용자 및 잠재고객에게 쉽게 접근할 수 있습니다. 또한 Google Play는 커뮤니티 검토, 앱 라이선스 확인, 앱 보안 검사 및 기타 보안 서비스도 제공합니다.
  • Android 업데이트: Android 업데이트 서비스는 선택된 Android 기기에 새로운 기능 및 보안 업데이트를 제공합니다. 여기에는 웹을 통한 업데이트 또는 무선 업데이트(OTA)가 포함됩니다.
  • 앱 서비스: Android 앱이 앱 데이터 및 설정 백업, 푸시 메시지를 위한 C2DM(Cloud to Device Messaging)과 같은 클라우드 기능을 사용할 수 있게 하는 프레임워크입니다.
  • 앱 인증: 유해한 앱 설치를 경고하거나 자동으로 차단하고 기기에서 앱을 지속적으로 검사하여 유해한 앱을 경고 또는 삭제합니다.
  • SafetyNet: Google 추적을 지원하고 알려진 보안 위협을 완화하며 새로운 보안 위협을 식별하기 위한 개인 정보 보호 침입 감지 시스템입니다.
  • SafetyNet 증명: 기기가 CTS와 호환되는지 확인하기 위한 서드 파티 API입니다. 또한 증명은 앱 서버와 통신하는 Android 앱을 식별할 수 있습니다.
  • Android 기기 관리자: 분실하거나 도난당한 기기를 찾는 웹 앱Android 앱입니다.

보안 프로그램 개요

Android 보안 프로그램의 주요 구성요소에는 다음이 포함됩니다.

  • 디자인 검토: Android 보안 프로세스는 개발 수명 주기 초기에 풍부하고 구성 가능한 보안 모델 및 디자인을 만드는 것으로 시작합니다. 플랫폼의 각 주요 기능은 시스템 아키텍처에 통합된 적절한 보안 컨트롤을 통해 엔지니어링 및 보안 리소스에서 검토됩니다.
  • 침투 테스트 및 코드 검토: 플랫폼을 개발하는 동안 Android에서 생성된 오픈소스 구성요소는 철저한 보안 검토를 받습니다. 이러한 검토는 Android 보안팀, Google의 정보 보안 엔지니어링팀 및 독립 보안 컨설턴트가 실시합니다. 검토의 목적은 주요 출시 이전에 약점과 잠재적 취약점을 파악하고 출시 후 외부 보안 전문가가 실시하는 분석 유형을 시뮬레이션하는 것입니다.
  • 오픈소스 및 커뮤니티 검토: AOSP를 통해 모든 이해 당사자가 광범위한 보안 검토를 실시할 수 있습니다. 또한 Android는 Linux 커널과 같이 중요한 외부 보안 검토를 거친 오픈소스 기술을 사용합니다. Google Play는 사용자와 회사가 특정 앱에 관한 정보를 사용자에게 직접 제공할 수 있는 포럼을 제공합니다.
  • 사고 대응: 이러한 예방 조치에도 불구하고 출시 후 보안 문제가 발생할 수 있으므로 Android 프로젝트에서 종합적인 보안 대응 프로세스를 마련했습니다. 정규 Android 보안팀 구성원은 Android 관련 및 일반 보안 커뮤니티에서 잠재적인 취약점에 대한 논의를 모니터링하고 Android 버그 데이터베이스에 제출된 보안 버그를 검토합니다. 합법적인 문제가 발견되면 Android팀은 취약점을 신속하게 개선하여 모든 Android 사용자의 잠재적 위험을 최소화할 수 있는 대응 프로세스를 진행합니다. 이러한 클라우드 지원 대응에는 Android 플랫폼 업데이트(AOSP 업데이트), Google Play에서 앱 삭제 및 현장의 기기에서 앱 삭제가 포함될 수 있습니다.
  • 월별 보안 업데이트: Android 보안팀은 Google Android 기기 및 Google의 모든 기기 제조 파트너에게 월별 업데이트를 제공합니다.

플랫폼 보안 아키텍처

Android는 기존 운영체제 보안 컨트롤을 다음과 같은 목표에 맞게 업데이트하여 모바일 플랫폼에서 가장 안전하고 사용하기 쉬운 운영체제를 지향합니다.

  • 앱 및 사용자 데이터 보호
  • 시스템 리소스 보호(네트워크 포함)
  • 시스템 및 다른 앱으로부터 앱 분리 및 사용자로부터 앱 격리 제공

이러한 목표를 달성할 수 있도록 Android는 다음과 같은 주요 보안 기능을 제공합니다.

  • Linux 커널을 통한 OS 수준의 강력한 보안
  • 모든 앱을 위한 필수 앱 샌드박스
  • 프로세스 간 통신 보안
  • 앱 서명
  • 앱에서 정의한 권한 및 사용자가 부여한 권한