안드로이드의 어플리케이션은 설치되는 시점에서 각 어플리케이션별 고유의 UID, GID를 받아 각각의 권한으로 실행하며, 보안 샌드 박스에서 실행되어 다른 어플리케이션 영역을 침범할 수 없음.
package명
/data/data/kr.co.shiftworks/database
# ls -l
ls -l
-rw-rw---- app_24 app_24 13312 2010-03-04 08:24 virus.db
<타 사용자는 아무런 권한이 없음>
2. pemission setting
응용 프로그램이 설치되는 시점에 사용자가 확인 후 설치할 수 있도록 하고 있음.
pemission 종류
: 다양한 종류의 pemission이 있을 뿐 아니라 새로운 pemission을 정의할 수도 있음
인터넷 연결, 주소록, SMS, 위치정보와 같은 휴대폰의 정보를 다루는 어플리케이션의 권한 설정 방법은 안드로이드 apk 파일 내 AndroidManifest.xml 파일 내 권한 설정값에 의해 결정됨.
해당 xml 파일을 통한 권한 부여가 없다면 관련 작동을 할 수 없게 설계되어 있음
... (화면 캡쳐)
-----------------------------------------------------------------------------
pemission | 용도
--------------------------------------------------------------------------------
internet | 네트워크 소켓을 열 수 있는 권한(인터넷 사용)
read_contacts | 연락처 정보를 읽을 수 있는 권한
read_sms | sms메시지를 읽을 수 있는 권한
read_calendar | 일정 정보를 읽을 수 있는 권한
read_phone_state | 전화기의 상태를 읽을 수 있는 권한
bluetooth | 연결되어있는 블루투쓰 장치를 사용할 수 있는 권한
access_fine_location | gps 정보를 얻을 수 있는 권한
-------------------------------------------------------------------------------------
3. 안드로이드 어플리케이션의 코드사인
안드로이드 응용프로그램은 인증서로 서명됨 (1024bit RSA)
- 개발자가 발행한 자체 인증서로 서명이 가능함 (self-signed)
개발자를 구분하는 기능 : 문제 발생 시 악성코드 개발자 추적 등 사후 처리 가능하도록.
같은 인증서로 서명된 응용 프로그램 : 업데이트 기능, 각각 모듈로서 작동 가능, 프로그램 코드 및 데이터 공유 가능
개발자가 앱 개발 후 사용자가 다운 받기 까지
1. 개발자가 안드로이드 마켓에 개발자 등록 (25$)
2. 개발자가 어플리케이션 개발
3. 개발자 스스로 자신의 어플리케이션에 인증서로 서명
4. 안드로이드 마켓에 어플리케이션 등록
5. 사용자는 안드로이드 마켓에서 직접 프로그램 다운로드
※ 사용자가 다운로드 받기 전 그 어느 곳에서도 보안성 검증이나 체크하는 절차가 없음.
cf. 심비안 (사전 예방 방식 적용)
1. 개발자는 사전 인증기관(Trusted Center)로부터 ID를 요청하여 ID를 발급받는다.
2. 어플리케이션 개발
3. 개발자 서명
4. 검증 센터(www.symbiansigned.com)에 보안 검증 요청
5. 어플리케이션 보안 검증
6. 인증기관 서명 후 OMP 등록됨
최초 심비안도 개발자 스스로 응용프로그램에 서명하고 추가적인 보안 검증이 없어서
악성코드가 많이 발견되었음.
테스트 기관을 통한 검증 및 서명 서비스 제공 후 악성코드는 줄었으나, 함께 OMP시장도 죽음.
Reference.
https://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf