안드로이드는 multi-process system으로 각 applicaiton은 자신의 process에서 실행한다. 대부분 Application과 System간의 security는 표준 Linux 기능 - Applicaiton에 할당되는 user and group ID - 을 통해 process level에서 수행된다. 부가적인 security 기능은 process가 수행하는 특정 업무에 대한 제한, data 접속에 대한 per-URI를 수행하는 "permission" mechanizm을 통해 제공된다.

Security Architecture
  안드로이드 security architecture의 주요 point는 application이 다른 applicatoin, OS 또는 user에 영향ㅇ르 미치는 어떠한 작업도 허용하지 않는 것이다.
Application의 process는 secure sandbox 이며, 다른 application을 중단 시킬수 없다. 다만 기존 sandbox에 제공되지 않는 부가적인 기능에 필요한 permission을 명백히 선언하는 경우는 제외이다. 이러한 permission은 다양한 방법으로 operating에의해 다루어 지는데, 인증을 기반으로 자동으로 허용/불허용하는 경우 또는 사용자에게 상기시키는 방법이 있다.
Application에 필요한 permission은 해당 Application에서 정적으로 선언되고, install전에 알려지며 그 후 변경되지 않는다.

Application Signing
  모든 안드로이드 Application(.apk file)은 private key를 가진 인증서로 sing되어야 한다. 이 인증서는 Application의 저작자를 식별해 준다. 인증서가 반드시 인증서 기관에서 sign될 필요는 없으며, 안드로이드 Application이 self-sing 인증서를 사용하는 것도 허용된다. 인증서는 단지 application 간의 신뢰있는 관계를 주기위해 사용되며, application이 설치될 수 있는지를 판단하기 위해 사용되는 것은 아니다.

User IDs and File Access
  Device에 설치되는 각각의 안드로이드 package(.apk file)은 자신의 unique Linix user ID를 가지며, 그것을 위한 sanbox를 생성하고, 가른 Applicaiton의 접근으로 부터 보호한다. user ID은 Device에 Applicaiton이 설치되는 경우에 할당을 받으며, Application의 생명주기 동안 존재하게 된다.

security에 대한 수행이 process level에서 이루어지므로 두개의 package의 코드가 동일한 procedd에서 실행될 수 없다.
하지만 동일한 user ID을 할당받기 위해 manifest file에 sharedUserId attribute를 사용할 수 있다. 이렇게 하면 두개의 package는 동일한 applicaiton으로 위급되어 동일한 user ID와 permission을 갖게된다. 동일한 서명으로 sign된 두개의 application만이 동일한 user ID를 사용할 수 있다.

  파일을 생성할때 MODE_WORLD_READABLE, MODE_WORLD_WRITABLE flag를 설정하면 다른 package가 같은 파일을 사용할 수 있게 된다.

Using Permission
  기본적으로 안드로이드 application은 permission이 없다.
Device의 protedted 기능을 사용하기 위해서는 manifest file에 하나 또는 그 이상의 <user-permission> tag를 사용하여 필요한 permission을 선언해 주어야 한다.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.myapp" >

    <uses-permission android:name="android.permission.RECEIVE_SMS" />

</manifest>

  Application 설치 시 application에서 필요로하는 permission은 package installer에 의해 권한이 부여된다. -  package installer는 permission을 선언한 application의 서명을 확인하거나 사용자의 입력을 통해 확인한다.


Posted by 피의복수
BLOG main image
일에 필요한 자료 by 피의복수

카테고리

분류 전체보기 (40)
프로그램이야기 (38)
끄적끄적 (1)
취미 (0)
서비스이야기 (1)
빅데이터 (0)

최근에 올라온 글