2010/05/25

Security Concept of Android

1. Sandbox concept

안드로이드의 어플리케이션은 설치되는 시점에서 각 어플리케이션별 고유의 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

about Android

1. What is Android?
Google에서 제공하는 Smartphone OS 중 하나
Android는 운영체제, 미들웨어 및 핵심 응용프로그램을 포함하는 휴대기기용 S/W Stack
Open source
여러 휴대전화 제조업체를 통해 Android폰을 제작하고 있으며, OS를 무료로 제공하여 휴대폰 제조업체의 호응을 얻고 있음.
Android의 오픈 플랫폼 성향 때문에, 이통사 혹은 단말 vendor에 따른 플랫폼 자체의 분화가 불가피함
(같은 Android OS 버전이라도 이통사, 혹은 단말 Vendor에 따라 각기 다른 특화된 단말 제조가 가능)
Google은 모바일 OS의 판매를 통한 수익 창출이 아닌, 모바일 광고를 주 수익원으로 삼고 있는 만큼
앞으로 Android OS 탑재 휴대폰을 많이 보급하는데 주력할 것으로 예상됨


자료 출처 : 스트라베이스, 2010.

WM.Android, Symbian은 타 벤더들이 자신의 OS를 활용할 수 있도록 공개하고 있는 반면,
Apple, Blackberry, Palm Web OS는 특정 벤더만 이용할 수 있도록 폐쇠적인 입장을 유지

이동통신사 측면에서 볼 때 iPhone과 Android OS가 ARPU 증대 기여도와 가입자 유치 효과가 뛰어난 것으로 분석됨.

2. Android의 구조

Android는 linux 기반으로 많은 라이브러리와 어플리케이션의 core set이 포함되어 있다.
어플리케이션들은 다른 타입의 많은 컴포넌트들로 구성되어 있음.



Applications (ex. 이메일, SMS, 일정, 지도, 브라우저 ... ) : Java

Application Framework (Component Providers, ...) : Java


Libraries/ Android runtime (Core library) : C/C++


리눅스 커널(OS : 메모리 관리, 프로세서 관리, 네트워크 관리, Linux UID/GID, 기반 보안 프로세스) : C/C++


3. google의 android 정책
구글은 '개방'과 '자율'을 모토로 폐쇄적인 Apple과 맞서고 있음.

- Android Market에서도 google은 모든 콘텐츠 진입을 허용해 소비자의 선택에 맡기는 '개방과 자율'을 운영 원칙으로 삼아서 애플과의 차별화를 선언
: 최초 등록비 25$ 외에 별도 연회비나 사전심의가 없음
- 구글은 이통사와의 우호적인 관계 형성을 위해 앱스토어의 어플리케이션 판매 수익의 30%를 이통사에 배분하는 정책
cf. 애플의 경우는 어플리케이션 판매 수익을 배분하지 않고, 데이터 이용 수익만 제공 (통화 수익의 10%를 애플에 분배하도록)


» 미국 스마트폰 운영체제 점유율 추이
4. 안드로이드의 약진

미국 시장 조사 회사인 '엔피디(NPD)'에서 2010년 5월 10일 지난 1분기 미국 스마트폰 운영체제 점유율 조사 결과 안드로이드폰이 28%를 차지해 아이폰의 21%를 7%포인트 앞섰다고 밝혔다.

1위는 리서치인모션(RIM)의 블랙베리(36%)였으나, 작년에 비해 10% 포인트가 떨어지는 등 하락세를 보이고 있다.

안드로이드는 지난해 3분기에는 5%선이었으나, 4분기에 안드로이드와 같은 20%초반대로 올라섰고 올 1분기에 애플을 앞질렀다.

안드로이드폰이 이처럼 빠르게 성장할 수 있었던 요인은 단일 회사에서 출시하는 애플 아이폰에 비해 전세계 제조사에서 단말기를 쏟아내고 있는 안드로이드폰이 소비자들의 폭넓은 지지를 받았기 때문으로 풀이된다.

아울러 애플 아이폰은 고가 고급형 정책을 고수하고 있는 한편, 안드로이드폰은 애플을 따라잡으려는 휴대폰 제조사 및 이통사들의 공격적인 보조금 정책에 힘입어 상대적으로 저렴한 가격에 구입할 수 있다는 요인도 작용한 것으로 분석되고 있다.

PC월드는 안드로이드폰의 이같은 가파른 성장세를 매우 주목할만한 포인트라고 지목하면서 앞으로 아이폰을 제친 것 뿐만 아니라 스마트폰 OS 전체 시장에서 가장 높은 시장점유율을 차지하게 될 것이라고 내다봤다.



Reference
http://siis.cse.psu.edu/android_sec_tutorial.html
http://code.google.com/android
http://source.android.com
http://www.android.com


2010/05/23

Android Security

안드로이드 보안 관련 강의를 하게 되어서, 자료들을 수집하는 김에 블로그에도 포스팅을 해 볼까 한다.

일단 Agenda는 아래 정도로 할 생각이고,
이후에 각 주제별 글을 작성하면 링크를 걸어 두도록 수정하겠다.

1. Andorid?
- Android는 운영체제, 미들웨어 및 핵심 응용프로그램을 포함하는 휴대기기용 소프트웨어 스택
- 오픈 소스 프로젝트 (source.android.com)
- 안드로이드폰 라인업, 점유율,

2. Security Concept of Android
- 기본적으로 각 어플은 독립된 UID, Sandbox, 최초 설치시 xml 파일로 지정된 권한만 얻음
- 개발자가 개발 완료후 자신의 어플리케이션에 대해 서명함(어플리케이션 위변조 방지는 개발자가 스스로 함)
- OMP는 개발자와 사용자를 연계해주는 역할만 할 뿐. (Openness)
- 사용자가 설치 시 설치하는 어플의 권한을 확인하여 설치 (설치 시 책임은 사용자의 몫)

3. Andorid security issues
- 보안 사고 사례
- 안드로이드 보안 이슈 사항 : 검증되지 않은 어플의 설치 책임이 사용자 몫.
- rooting

CF) 심비안 악성코드: 보안 검증 사이트 오픈 후 악성코드↓, OMP도 함께 타격.
애플의 OMP : 단독 OMP로 폐쇄적 운용. 보안검증을 하고 있음.


4. 안드로이드 보안 대응
- OMP 보안 검증 시스템 (+안드로이드 어플리케이션 보안 검증시 체크 사항)
- 통합적 보안 사고 대응 센터 구축
- 스마트폰 사용자에게 백신 제공
- 안드로이드 앱 개발자 '진단 툴' 및 '보안 가이드라인' 제공
- ...

잡담..

1. 구글 블로그
최근들어서 블로그 로딩 속도가 눈에띄게 늦어졌다.
집 PC에서도, 회사에서도, 스마트폰에서도 그런 것으로 보아...
무언가 google쪽에서 시스템적으로 변화가 있었던게 아닐까.
(로드밸런싱용 서버 대수를 줄였거나[아시아쪽 서버 대역을 없앴거나] N/W 대역폭을 줄였거나
DDoS 공격을 받고 있거나..?)
여하튼 뭐 그렇다구.

2. 20세기 소년(21세기소년)
최근 이 만화책을 읽었는데, 이걸 보고 든 생각.
-> 왕따와 천재와의 연관관계...

무언가 한가지 분야에 대해 남들보다 뛰어난 생각을 하는 사람을 보통 천재라고 부르는데,
천재가 되기 위해서는 자신의 생각에 집중해서 발전하는 시간이 필요한것 같다.
일반적인 사람들은 천재의 생각에 대해 이해하지 못하는 경우가 많고,
그런 대부분의 사람들과 생활하면 자연스럽게 외로움과 왕따 생활을 할 수 밖에는 없다.

그냥 내가 궁금해 하는 분야에 몰입하여 왕따생활을 즐기면 그 분야에 대한 천재가 될테지만,
누군가에게 인정받고 싶다는 욕망이 과다하면 세상을 뒤엎는 무서운 사람이 될 수도 있고,
경제적 여건 때문에 사회에 순응하고 살 수밖에 없으면 세상에 대한 괴리감과 좌절감을 안고 살지도.

어쨌거나 요즘엔 영재교실도 인기라고 하지만, 난 천재로 태어나는건 하나도 부럽지 않다. -_-

덧붙여.
초대 '친구'는 켄지에게 인정받고 싶었던 거라고 생각이 된다. (예언자라고 집회에 불렀을때도)
두번째 '친구'는 켄지로 인해 도둑으로 오인받았던 일, 주변에 무시당했던 일 때문에 켄지와 이 세상에게 복수를 하고 싶었던 걸까?

두번째 친구는 도대체 어디어디에 출현했던 걸까..? (가면쓴 애의 출현 중 언제가 그 두번째 친구였던거지... 과거 이야기를 어떻게 알았을까.. 무언가 좀 앞뒤가 안맞는 채로 서둘러 끝낸 듯한 느낌. -_- 그래도 몬스터 끝보다는 좀 더 나은듯. ㅎㅎ)

그리고 내가 아는 장소들이 만화에 나오니까 진짜 반가웠다. 오사카의 만박 조형물도... ㅎㅎ

3. 할 일.
할 일이 엄청 많은데, 하기 싫은 일들인가보다.
미리미리 해 두지 않으면 분명 dead-line이 다가왔을때 엄청 고생할거라는걸 아는데,
자꾸만 내일로 내일로 미루려고만 한다.
아마도 내일부터 한 3일간은 밤 새 생고생을 하지 싶다.
그럴걸 알면서도 이 시간에 이런 잡담성 블로깅을 하고 있다니...;;;

..