한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
안드로이드 누가(Nougat)의 향상된 보안 기능
2016년 9월 19일 월요일
안드로이드 7.0 누가는 더 안전한 플랫폼입니다. 안드로이드 누가는 다양한 영역에서 보안이 향상되었습니다.
취약성 보상 프로그램
을 통한 보안 향상, 새로운
직접 부팅
모드, 재설계된 미디어 서버 및
강화된 미디어 스택
,
일반 텍스트 트래픽으로의 우연한 회귀
를 막아주는 앱,
신뢰할 수 있는 인증 기관
을 안드로이드가 처리하는 방식에 대한 업데이트, 오류 수정으로
확인된 부팅
의 엄격한 시행,
공격 가능성을 줄이고 향상된 메모리 보호 기능을 갖춘 Linux 커널 업데이트
등이 있습니다.
직접 부팅 및 암호화
이전 버전의 안드로이드에서는 스토리지 영역을 암호 해독하고 부팅을 완료하려면, 암호화된 기기를 가진 사용자가 부팅 중에 자신의 PIN/패턴/암호를 기본적으로 입력해야 했습니다. 안드로이드 7.0 누가에서 저희는 기본 암호화 방식을 업데이트했으며 부팅 절차를 간소화하여 휴대폰의 재부팅 속도를 높였습니다. 이제는 여러분이 PIN을 입력하기도 전에 전화 앱, 알람 시계와 같은 휴대폰의 주요 기능들을 즉시 사용할 수 있으므로, 사람들이 여러분과 통화를 하거나 알람 시계가 여러분을 깨울 수 있습니다. 이 기능을
직접 부팅
이라고 합니다.
이렇듯 파일 기반 암호화는 이면에서 사용자의 환경을 개선해 줍니다. 이 새로운 방식의 암호화에서는 시스템 저장소 영역과 각 사용자 프로필 저장소 영역이 완전히 별도로 암호화됩니다. 모든 데이터가 단일 단위로 암호화되었던 전체 디스크 암호화와 달리, 프로필 기반 암호화는 기기 키만을 사용해 시스템을 작동 상태로 재부팅할 수 있습니다. 필수 앱은 재부팅 후에 제한 상태에서 실행되도록 옵트인할 수 있으며, 잠금 화면 자격 증명을 입력하면 이들 앱이 사용자 데이터에 액세스하여 전체 기능을 제공할 수 있습니다.
파일 기반 암호화는 데이터를 보다 정밀하게 암호화하여 기기에서 개별 사용자와 프로필을 격리하고 보호하는 성능이 더 뛰어납니다. 각 프로필은 고유 키를 사용하여 암호화되는데, 이 키는 본인의 PIN이나 암호를 통해서만 해제될 수 있으므로, 자신만이 데이터의 암호를 해독할 수 있습니다.
암호화 지원은 안드로이드 생태계에서도 더욱 강화되고 있습니다. 안드로이드 6.0 마시멜로부터는, 암호화를 지원하려면 해당 기능을 모두 갖춘 기기가 필요했습니다. 또한, Nexus 5X 및 6P와 같은 많은 기기들은 신뢰할 수 있는 하드웨어(예: ARM TrustZone)로만 액세스할 수 있는 고유 키를 사용합니다. 이제 7.0 누가에서는 해당 기능을 갖춘 모든 신규 안드로이드 기기들은 키 저장소를 위해 이런 종류의 하드웨어 지원도 갖추어야 하며, 이 키를 사용할 수 있으려면 잠금 화면 자격 증명을 검사하는 중에 완벽한 보호 기능을 제공해야 합니다. 이런 방식으로, 자신의 모든 데이터는 정확한 기기에서 자신에 의해서만 암호 해독될 수 있습니다.
미디어 스택 및 플랫폼 강화
저희는 안드로이드 누가에서 미디어 서버를 강화했고
재설계
했습니다. 미디어 서버는 신뢰할 수 없는 입력 데이터를 처리하는 메인 시스템 서비스 중 하나입니다.
먼저, libstagefright 버그로 구성된 것으로 알려진 기존에 알려진 모든 종류의 취약성을 예방하기 위해, Clang의
UndefinedBehaviorSanitizer
의 일부분인 정수 오버플로 삭제(sanitization) 기능이 통합되었습니다. 정수 오버플로가 감지되자마자 프로세스가 종료되며, 공격이 중단됩니다.
둘째로, 각각의 구성 요소를 개별 샌드박스에 넣기 위해 미디어 스택을 모듈화했으며, 작업 수행에 필요한 최소한의 권한만 가지도록 각 샌드박스의 권한 범위를 좁혔습니다. 이 억제 기법에서는 스택의 여러 부분 중 한 곳에서 손상이 있더라도, 공격자의 액세스 권한을 최소한으로 줄여주고, 커널 공격에 노출될 가능성을 줄여줍니다.
미디어 서버 강화 외에도, 매우 다양한 보호 기능을 추가했습니다.
확인된 부팅
: 이제 '확인된 부팅'을 엄격하게 적용하여, 손상된 기기가 부팅되는 것을 막을 수 있습니다. 또한, 악성이 아닌 데이터 손상으로부터 신뢰성을 개선하기 위해
오류 수정
을 지원합니다.
SELinux
: 업데이트된 SELinux 구성과 향상된 Seccomp 적용 범위를 통해 애플리케이션 샌드박스를 더 한층 잠그고 공격 가능성을 더 줄여줍니다.
라이브러리 로드 순서 랜덤화 및 개선된 ASLR
: 임의성이 증대되어 코드 재사용 공격이 더 힘들어집니다.
커널 강화
: 더 새로운 커널에 대해 메모리 보호 성능을 더 개선하기 위해
커널 메모리의 일부분을 읽기 전용으로 표시하고
,
커널 액세스를 사용자 공간 주소로 제한하고
, 공격이 가능한 부분이 가능한 노출되지 않도록 줄였습니다.
APK 서명 구성표 v2
: 전체 파일의 서명 구성표를 도입했으며, 이 구성표는
확인 속도
를 개선하고 무결성을 강화해 줍니다.
앱 보안 개선
Android Nougat는 애플리케이션 개발자가 사용할 수 있는 가장 빠르고 안전한 Android 버전입니다.
다른 앱과 데이터를 공유하려는 앱은 이제 명시적으로 옵트인을 해야 하며 이를 위해
FileProvider
와 같은
콘텐츠 제공자
를 통해 파일을 제공해야 합니다. 이제 애플리케이션 개인 디렉토리(일반적으로 /data/data/
)가 Linux 권한 0700으로 설정됩니다(API 레벨 24+ 대상 앱의 경우).
보안 네트워크 트래픽에 대한 액세스를 앱이 쉽게 제어하도록 만들기 위해, 사용자가 설치한 인증 기관과 Device Admin API를 통해 설치된 인증 기관은
기본적으로 더 이상 신뢰할 수 없습니다
(API 레벨 24+ 대상 앱의 경우). 또한, 모든 신규 Android 기기에는
신뢰할 수 있는 동일한 CA 저장소
가 함께 제공되어야 합니다.
개발자는
네트워크 보안 구성
을 통해 선언적 구성 파일을 통해 네트워크 보안 정책을 보다 쉽게 구성할 수 있습니다. 이 구성에는 일반 텍스트 트래픽을 차단하고, 신뢰할 수 있는 CA 및 인증서를 구성하고, 별도의 디버그 구성을 설정하는 작업이 포함됩니다.
또한, 잠재적 유해 앱을 차단하기 위한 앱 권한과 성능을 지속적으로 개선하고 있습니다.
기기 개인정보 보호를 개선하기 위해, 저희는 MAC 주소와 같은 영구적인 기기 식별자에 대한 액세스를 더욱 제한하고 제거했습니다.
사용자 인터페이스 오버레이는 권한 대화상자 위에 더 이상 표시되지 않습니다. 이 “클릭재킹” 기법은 일부 앱에서 부적절한 방식으로 권한을 얻기 위해 사용되었습니다.
기기 관리자 애플리케이션의 권한을 줄였으므로, 잠금 화면을 설정한 경우 관리자가 이 잠금 화면을 변경할 수 없으며,
onDisableRequested()
를 통해 임박한 비활성화가 기기 관리자에게 더 이상 통보되지 않게 됩니다. 이런 방법은 일부 랜섬웨어에서 기기의 제어 권한을 얻을 목적으로 사용되었습니다.
시스템 업데이트
마지막으로, 저희는 최신 시스템 소프트웨어 및 보안 패치로 여러분의 기기를 훨씬 더 쉽게 업데이트할 수 있도록 OTA 업데이트 시스템을 대폭 개선했습니다. 저희는 OTA의 설치 시간을 더욱 단축시켰으며, 보안 업데이트의 OTA 크기를 더 작게 만들었습니다. 신속한 설치 및 업데이트가 가능하도록 새 JIT 컴파일러가
최적화되었기
때문에, 이제 여러분은 앱 최적화 단계를 기다릴 필요가 없습니다. 이 단계는 업데이트 프로세스에서 가장 느린 부분에 속합니다.
펌웨어가 업데이트된 누가가 실행되는 신형 안드로이드 기기는 업데이트 환경이 더욱 빨라졌습니다. Chromebook에서와 마찬가지로, 기기가 정상적으로 계속 실행되는 중에 백그라운드에서 업데이트가 적용됩니다. 이 업데이트는 다른 시스템 파티션에 적용되며, 재부팅할 경우에는 새 시스템 소프트웨어 버전이 실행 중인 새 파티션으로 매끄럽게 전환됩니다.
저희는 안드로이드 보안을 개선하기 위해 끊임없이 노력하고 있으며 안드로이드 누가 훨씬 향상된 보안 기능을 갖추고 있습니다. 저희 작업에 대한 피드백을 보내주셔서 항상 감사드리며, 안드로이드 개선 방법에 대한 제안을 언제든지 환영합니다.
security@android.com
으로 연락해 주세요.
게시자: Xiaowen Xin, Android 보안 팀
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed