KR101321479B1 - 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치 - Google Patents

프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치 Download PDF

Info

Publication number
KR101321479B1
KR101321479B1 KR1020120039836A KR20120039836A KR101321479B1 KR 101321479 B1 KR101321479 B1 KR 101321479B1 KR 1020120039836 A KR1020120039836 A KR 1020120039836A KR 20120039836 A KR20120039836 A KR 20120039836A KR 101321479 B1 KR101321479 B1 KR 101321479B1
Authority
KR
South Korea
Prior art keywords
file
access
application software
user
privileged
Prior art date
Application number
KR1020120039836A
Other languages
English (en)
Other versions
KR20130101956A (ko
Inventor
김강희
이은규
조성제
박영웅
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Publication of KR20130101956A publication Critical patent/KR20130101956A/ko
Application granted granted Critical
Publication of KR101321479B1 publication Critical patent/KR101321479B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/08Access security

Abstract

프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치가 개시된다. 개시된 불법 복제 방지 방법은 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근권한과 관련된 프로세스 타입을 판단하는 단계; 및 상기 판단 결과에 기초하여 상기 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근을 선택적으로 허용하는 단계를 포함한다.

Description

프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치{Method and Apparatus for preventing illegal copy of application software using access control of process}
본 발명의 실시예들은 단말장치에서 실행되는 프로세스의 자원 접근 제어(Resource Access Control)를 통해 응용 소프트웨어의 불법 복제를 방지하는 방법 및 장치에 관한 것이다.
스마트폰, 태블릿 PC 등과 같은 스마트 기기에 설치되는 응용 소프트웨어(속칭 스마트폰 앱)는 크기가 작고 변조가 용이하며 기존의 PC 응용 소프트웨어에 비해 보호 기술이 미비하다. 이 때문에, 스마트폰 앱은 비정상적인 스마트 기기로의 접근에 의해 쉽게 추출이 가능하고, 컴퓨터 시스템, 인터넷, 이동식 저장매체 등을 통해 쉽게 유포될 수 있다. 이에 따라 사용자는 앱 마켓(스토어)을 통하지 않고 비정상적 경로를 통해 유포된 스마트폰 앱을 설치하여 사용할 수 있다. 따라서, 스마트폰 앱의 불법 복제에 의한 피해를 최소화하기 위해서는 불법 복제의 조기 차단이 중요한 이슈로 부각되고 있다.
한편, 대부분의 플랫폼과는 다르게 안드로이드 플랫폼은 개방되어 있어서 일반 사용자들은 안드로이드 플랫폼의 실행 환경, 서비스 등과 같은 내부 동작 메커니즘을 확인할 수 있다. 따라서, 악의적인 사용자는 내부 동작 메커니즘 정보를 바탕으로 정확하고 빠르게 해킹을 수행할 수 있으며, 비정상적인 방법으로 자신의 단말기에 설치된 응용 소프트웨어(어플리케이션)과 관련된 파일(설치파일)을 불법으로 복제하여 배포할 수 있게 되었다. 이는 응용 소프트웨어 개발자들에게 엄청난 피해를 주고 있다.
이와 같은 응용 소프트웨어의 불법 복제를 방지하기 위한 종래 기술로서, 모바일 앱이 임의의 자원에 접근하고자 할 때 해당 모바일 앱의 권한과 자원의 권한을 비교하여 해당 자원에 대한 접근을 선택적으로 허용하는 임의 접근 제어 기반의 불법 복제 방지 방법이 있다. 그러나 상기한 종래기술은 슈퍼 사용자 내지 관리자의 권한을 갖는 모바일 앱의 경우에는 자원으로의 접근을 무조건적으로 허용하기 때문에 해킹에 매우 취약하다는 문제점이 있다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 실시예들은 단말장치에서 실행되는 프로세스의 자원 접근 제어(Resource Access Control)를 통해 응용 소프트웨어의 불법 복제를 방지하는 방법 및 장치를 제공하고자 한다.
본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.
상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근권한과 관련된 프로세스 타입을 판단하는 단계; 및 상기 판단 결과에 기초하여 상기 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근을 선택적으로 허용하는 단계를 포함하는 응용 소프트웨어의 불법 복제 방지 방법이 제공된다.
상기 판단하는 단계는 상기 프로세스가 상기 단말장치의 부팅 완료시점 이후에 생성되고 상기 프로세스의 파일접근 권한레벨이 관리자 권한인 경우, 상기 프로세스 타입을 비특권 루트 프로세스로 판단하고, 상기 선택적으로 허용하는 단계는 비특권 루트 프로세스인 상기 프로세스가 상기 응용 소프트웨어 관련 파일로 접근하지 못하도록 차단할 수 있다.
상기 선택적으로 허용하는 단계는 비특권 루트 프로세스로 판단된 상기 프로세스가 상기 단말장치의 부팅 완료시점 이전에 생성된 프로세스의 복제 프로세스인 경우 상기 응용 소프트웨어 관련 파일로 접근을 예외적으로 허용할 수 있다.
상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고, 상기 판단하는 단계는 비특권 루트 프로세스로 판단된 상기 프로세스가 setuid를 호출하는 경우, 상기 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고, 상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 재판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고, 상기 응용 소프트웨어의 불법 복제 방지 방법은 상기 비특권 사용자 프로세스로 판단된 프로세스가 상기 어플리케이션 내에 포함되는 컴포넌트 간의 통신을 수행하는 것을 차단하는 단계를 더 포함할 수 있다.
상기 판단하는 단계는 상기 프로세스가 상기 단말장치의 부팅 완료시점 이전에 생성되고 상기 프로세스의 파일접근 권한 레벨이 관리자 권한인 경우, 상기 프로세스를 특권 루트 프로세스로 판단하고, 상기 선택적으로 허용하는 단계는 특권 루트 프로세스로 판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일로의 접근을 허용할 수 있다.
상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고, 상기 판단하는 단계는 특권 루트 프로세스로 판단된 상기 프로세스가 setuid를 호출하는 경우, 상기 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고, 상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 재판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
상기 판단하는 단계는 상기 프로세스의 파일접근 권한 레벨이 사용자 권한인 경우, 상기 프로세스를 비특권 사용자 프로세스로 판단하고, 상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
또한, 본 발명의 다른 실시예에 따르면, 단말장치의 부팅 완료 시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 프로세스들을 다수의 프로세스 그룹으로 분류하는 프로세스 그룹 분류부; 상기 다수의 프로세스 그룹 별로 응용 소프트웨어 관련 파일로의 접근권한을 설정하는 접근권한 설정부; 및 상기 설정된 접근권한에 기초하여 상기 응용 소프트웨어 관련 파일로의 상기 프로세스들의 접근을 제어하는 접근 제어부를 포함하는 응용 소프트웨어의 불법 복제 방지 장치가 제공된다.
또한, 본 발명의 또 다른 실시예에 따르면, 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근권한과 관련된 프로세스 타입을 판단하는 프로세스 타입 판단부; 및 상기 판단 결과에 기초하여 상기 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근을 선택적으로 허용하는 접근 제어부를 포함하는 응용 소프트웨어의 불법 복제 방지 장치가 제공된다.
본 발명에 따르면, 단말장치 특히 스마트 기기에서 실행 내지 설치되는 응용 소프트웨어(모바일 앱)의 불법 복제를 효율적으로 차단할 수 있다.
도 1은 안드로이드 플랫폼에서 하나의 샌드박스 환경과 "AndroidManifest.xml" 파일의 역할을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 장치의 개략적인 구성을 도시한 블록도이다.
도 3에서는 특권 루트 프로세스, 비특권 사용자 프로세스 및 비특권 루트 프로세스의 판단 기준의 일례를 도시한 도면이다.
도 4에서는 특권 루트 프로세스, 비특권 사용자 프로세스 및 비특권 루트 프로세스에 접근 제어의 일례를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라서, 컴포넌트 간의 통신이 수행되는 경우, 비특권 루트 프로세스로 판단된 프로세스가 컴포넌트 간 통신을 통해 우회적으로 모바일 앱 관련 파일에 접근하는 개념을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 응용 소프트웨어의 불법 복제 방지 방법의 전체적인 흐름을 도시한 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
본 발명의 일 실시예에 따른 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치는 단말장치에서 실행 내지 설치되는 응용 소프트웨어가 불법으로 복제되는 것을 방지하기 위한 기술에 제한 없이 적용될 수 있다.
특히, 본 발명의 일 실시예에 따른 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법은 안드로이드 플랫폼 기반의 스마트 기기에 효율적으로 적용될 수 있으므로, 아래에서는 단말장치가 안드로이드 플랫폼 기반의 스마트 기기이고, 응용 소프트웨어가 모바일 앱인 일례를 중심으로 본 발명의 실시예들을 상세히 설명하기로 한다. 그러나, 본 발명이 이에 한정되는 것은 아니다.
이하에서는 첨부된 도면들을 참조하여 안드로이드 보안 프레임워크에 대해 우선적으로 설명하고, 이를 기초로 하여 본 발명의 실시예들을 설명하기로 한다.
안드로이드 보안 프레임워크에서의 모바일 앱의 실행 환경을 특징짓는 개념은 샌드박스(sandbox)이다. 각 모바일 앱은 하나의 독립된 실행 환경을 가지며, 오직 이 환경 안에서 제공되는 파일(객체 또는 자원, 이하 "파일"이라고 함)만 접근할 수 있는 권한을 가진다.
안드로이드 보안 프레임워크는 사용자 임의 접근 제어 방식을 사용하기 때문에, 샌드박스 환경에서는 모바일 앱마다 고유한 사용자 UID가 배정되고, 샌드박스 안에 존재하는 파일들은 해당 사용자 UDI와 동일한 소유자 UID를 갖도록 구성된다. 기본적으로 각 모바일 앱의 파일로의 접근 여부는 프로세스의 사용자 아이디(즉, 프로세스의 사용자 UID)와 특정 파일을 생성한 프로세스의 사용자 아이디(즉, 해당 파일의 소유자 UID)가 동일한지 여부에 따라 결정된다.
그러나 하나의 모바일 앱이 자신의 샌드박스 환경을 넘어서 다른 모바일 앱과 관련된 파일에 접근하여야 하는 경우가 발생할 수도 있다. 예를 들어, 전화걸기(Call) 앱은 전화번호부(Contacts) 앱으로부터 전화번호부를 읽어올 수 있어야 한다.
이렇게 전화걸기 앱이 전화번호부 앱의 데이터베이스(전화번호부 DB)를 접근하기 위해서는 전화걸기 앱이 전화번호부 DB 파일의 접근 허가를 받아야 한다. 이러한 접근 허가는 전화걸기 앱의 "AndroidManifest.xml" 이라는 파일에 해당 attribute가 미리 정의되어 있어야 가능하다. 도 1에서는 하나의 샌드박스 환경과 "AndroidManifest.xml" 파일의 역할을 도시하고 있다.
그러나 상기한 전화걸기 앱과 전화번호부 앱 사이의 전화번호부 DB 파일 공유는 DB 파일의 직접 공유가 아니라 전화걸기 앱이 전화번호부 앱을 통해서 DB 파일을 간접적으로 접근하는 방식으로 이루어진다.
이와 같은 자원 공유를 위해서 안드로이드 플랫폼은 4가지 컴포넌트들, 즉, 액티비티(Activity), 서비스(Service), 컨텐츠 프로바이더(Contents Provider), 브로드캐스트 리시버(Broadcast Receiver)를 정의하고 있으며, 이 컴포넌트들 사이에서 일정한 보안 규칙을 기반으로 컴포넌트간 통신(InterComponent Communication)을 지원하고 있다.
즉, 모바일 앱 A가 모바일 앱 B의 파일로 접근하고자 하는 경우, 모바일 앱 B의 내부 컴포넌트들 중에서 하나의 컴포넌트와 통신을 해야 한다. 이 때 모바일 앱 B는 자신의 "AndroidManifest.xml"에 외부 접근을 허용할 컴포넌트들을 미리 열거해야 하며, 모바일 앱 A 역시 자신의 "AndroidManifest.xml"에 자신이 접근하고 싶은 모바일 앱 B의 컴포넌트를 열거해야 한다.
이 때 각각의 xml 파일에 열거되는 컴포넌트들은 퍼미션 레이블(Permission Label)의 형태로 표현되는데, 결과적으로 모바일 앱 B에서 열거된 퍼미션 레이블을 정확하게 알고 있는 모바일 앱들만이 모바일 앱 B의 파일로 접근할 수 있는 권리를 가진다.
안드로이드 플랫폼이 정의한 컴포넌트들, 컴포넌트간 통신 및 이에 적용되는 보안 규칙에 대해 상세히 설명하면 아래와 같다.
(1) 액티비티: 한 화면을 구성하는 모바일 앱 내부의 실행 단위로서 필요에 따라 결과값을 반환한다. 한 모바일 앱에 속한 액티비티는 다른 앱에서 "action string"이라는 인텐트(intent)를 전송함으로써 실행될 수 있다. 인텐트는 안드로이드 플랫폼에서 컴포넌트간 신호를 전달할 목적으로 사용되는 통신 객체이다.
(2) 서비스: 파일 다운로드, 뮤직 플레이, 위치 추적 등과 같은 백그라운드 처리를 담당하는 모바일 앱 내부의 실행 단위로서 안드로이드 핵심 기능들의 대부분은 서비스의 형태로 구현된다. 원격 서비스 호출을 위해서 AIDL(Android Interface Defition Language)라는 언어를 통해서 서비스와 호출자 간에 인터페이스 함수들을 생성하여야 한다.
(3) 컨텐츠 프로바이더: 전화번호부와 같이 DB 형태로 조직된 데이터 공유를 위해서 표준 인터페이스를 제공한다. SELECT, UPDATE, INSERT, DELETE와 같은 질의 기능을 서비스하며, DB를 접근하려는 타 모바일 앱은 "content://contacts/people/10"과 같은 URI(uniform resource indicator) 문자열로 접근하고자 하는 특정 레코드를 지정해야 한다(여기서, contacts는 DB 관리 주체, people은 DB 테이블의 이름, 10은 테이블 내부의 레코드 ID를 의미함).
(4) 브로드캐스트 리시버: 다른 모바일 앱이 인텐트 형태로 브로드캐스트하는 메시지를 수신하는 일종의 핸들러로서, 핸들러 안에서 지정된 action을 수행할 수 있다. 브로드캐스트 리시버는 원하는 메시지를 골라서 받기 위해서 해당 메시지를 생성하는 컴포넌트에 action string 형태로 가입해야 한다.
안드로이드 플랫폼에서는 결국 한 모바일 앱이 가지고 있는 사용자 UID와 다른 모바일 앱들과 컴포넌트간 통신을 하기 위해 미리 알고 있는 퍼미션 레이블들이 해당 모바일 앱이 가진 전체 권한을 구성하게 된다.
이를 우회하는 가장 편리한 방법은 루트 권한을 자신의 모바일 앱에 부여하여 다른 모바일 앱의 샌드박스를 자유롭게 드나들거나, 다른 모바일 앱이 보유한 컴포넌트들과 통신하는데 필요한 퍼미션 레이블을 파일 시스템에서 찾아내 자신의 앱의 "AndroidManifest.xml"에 마음대로 설정하여 사용하는 것이다. 다만, 퍼미션 레이블을 변경하는 일은 "AndroidManifest.xml"을 수정하고 해당 모바일 앱을 스마트폰에 재설치해야만 가능하다. 왜냐하면 퍼미션 레이블이 안드로이드 플랫폼에서 유효화되는 것은 해당 모바일 앱이 패키지 매니저에 의해 설치되면서 "AndroidManifest.xml"을 스캐닝할 때 뿐이기 때문이다.
결국 사용자 임의 접근 제어를 기반으로 하는 안드로이드 플랫폼을 해킹하는 방법은 루트 권한을 획득하는 것에 초점이 맞추어져 있다. 최근에 안드로이드 루팅은 adbd(Android Debug Bridge Daemon)을 주요 타겟으로 하고 있는데, 그 이유는 adbd가 막강한 쉘 기능을 가지고 있으며, init 프로세스에 의해서 처음에는 루트 권한을 물려받기 때문이다. 이후 adbd는 루트 권한을 setuid 시스템 콜로 스스로 박탈하는데, 이 단계만 수행되지 않도록 만들면 adbd가 루트 권한을 유지할 수 있다.
이하, 상기에서 설명한 내용을 참조하여 본 발명의 실시예들을 상세하게 설명한다.
도 2는 본 발명의 일 실시예에 따른 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 장치의 개략적인 구성을 도시한 블록도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 응용 소프트웨어의 불법 복제 방지 장치(200)는 프로세스 타입 판단부(210) 및 접근 제어부(220)를 포함한다.
프로세스 타입 판단부(210)는 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 해당 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 해당 프로세스의 접근권한과 관련된 프로세스 타입을 판단한다.
그리고, 접근 제어부(220)는 상기 판단 결과에 기초하여 모바일 앱(응용 소프트웨어) 관련 파일에 대한 프로세스의 접근을 선택적으로 허용한다.
프로세스 타입의 설정/판단 및 접근 제어에 대해 보다 상세하게 설명하면 아래와 같다.
스마트 기기는 앱 마켓에서 직접 모바일 앱을 다운로드하여 설치하므로, 해당 모바일 앱이 설치된 스마트 기기 내부의 위치는 사용자에게 노출되어 있다. 따라서 악의적인 사용자가 해킹에 성공하였을 경우 쉽게 해당 경로에 있는 모바일 앱을 불법 복제하는 것이 가능하다.
하지만 이를 역으로 생각하면, 시스템 내부의 모든 파일(객체, 자원)들 중에서 보호해야 하는 파일(즉, 불법 복제가 방지되어야 하는 모바일 앱 관련 파일)은 해당 모바일 앱이 다운로드되어 설치되는 경로에 있는 파일들로 좁혀 지게 된다. 따라서 해당 경로에 있는 파일들에 대해 "접근하길 원하는 프로세스의 이름과 접근하려는 파일의 이름에 대한 비교" 및 "DEX 파일이 갖는 GID(Group ID)와 접근하려는 프로세스의 UID(User ID)의 비교"를 통해 보호하고자 하는 모바일 앱 관련 파일에 대한 프로세스의 접근 제어를 수행할 수 있다.
한편, 스마트 기기에서 수행되는 프로세스들은 크게 관리자 권한 내지 슈퍼 사용자 권한의 프로세스와 사용자 권한의 프로세스로 분류될 수 있다. 관리자 권한의 프로세스는 스마트 기기에 저장된 모든 파일(자원)에 대해 접근이 허용되는 프로세스이고, 사용자 권한의 프로세스는 특정한 제한 하에서 일부의 파일에 대해서만 접근이 허용되는 프로세스를 의미한다.
다른 관점에서, 프로세스들은 스마트 기기의 부팅 완료시점(즉, "boot complete" 메시지가 발생하는 시점)을 기준으로 분류될 수도 있다. 즉, 프로세스들은 부팅 완료시점 이전에 생성된 프로세스와 부팅 완료시점 이후에 생성된 프로세스로 분류될 수 있다.
본 발명에서는 상기와 같은 프로세스의 생성시점 및 프로세스에 대한 파일접근 권한레벨 중 적어도 하나에 기초하여 프로세스의 타입을 결정한다.
본 발명의 일 실시예에 따르면, 프로세스 타입 판단부(210)는 프로세스가 스마트 기기(단말장치)의 부팅 완료시점 이전에 생성되고 프로세스의 파일접근 권한 레벨이 관리자 권한인 경우, 해당 프로세스를 특권 루트(Privileged Root) 프로세스로 판단할 수 있다. 이 경우, 접근 제어부(220)는 특권 루트 프로세스로 판단된 프로세스가 상기 응용 소프트웨어 관련 파일로의 접근을 허용한다.
즉, 스마트 기기의 부팅 완료시점 이전에 생성되어 실행되는 프로세스들은 기본적으로 시스템 서비스로 등록된 프로세스들로서, 악의적인 목적이 없는 프로세스(일례로, 데몬(Daemon) 프로세스)로 볼 수 있다. 따라서, 이와 같은 프로세스에 대해서는 모바일 앱 관련 파일로의 접근을 허용한다 하더라도 모바일 앱이 불법으로 복제될 가능성이 낮다고 볼 수 있다.
상기한 내용에 기초하여, 접근 제어부(220)는 스마트 기기의 부팅 완료 전에 생성된 관리자 권한의 프로세스(특권 루트 프로세스)에 대해서는 모바일 앱과 관련된 모든 파일에 대해 접근을 허용한다.
또한, 본 발명의 일 실시예에 따르면, 프로세스 타입 판단부(210)는 프로세스의 파일접근 권한 레벨이 사용자 권한인 경우, 해당 프로세스를 비특권 사용자(Unprivileged User) 프로세스로 판단할 수 있다. 이 경우, 접근 제어부(220)는 비특권 사용자 프로세스로 판단된 프로세스가 모바일 앱 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용한다.
즉, 일반 사용자 권한의 프로세스는 특정한 제한 하에서 모바일 앱 관련 어플리케이션에 접근할 수 있으므로, 이러한 프로세스에 대해서는 별도의 추가적인 접근 제한을 적용할 필요성이 낮다. 따라서, 접근 제어부(220)는 비특권 사용자 프로세스에 대해서는 기본적인 접근 제한(모바일 앱 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 것)만을 적용한다.
또한, 본 발명의 일 실시예에 따르면, 프로세스 타입 판단부(210)는 프로세스가 스마트 기기의 부팅 완료시점 이후에 생성되고 프로세스의 파일접근 권한레벨이 관리자 권한인 경우, 프로세스 타입을 비특권 루트(Unprivileged Root) 프로세스로 판단할 수 있다. 이 경우, 접근 제어부(220)는 비특권 루트 프로세스인 프로세스가 모바일 앱 관련 파일로 접근하지 못하도록 차단한다.
보다 상세하게, 부팅 완료시점 이후에 생성되는 프로세스 중 관리자 권한을 가지는 프로세스는 일반적으로 생성되는 것이 아니라 악의적 사용자가 불법 복제를 목적으로 한 해킹에 의해 생성되는 것으로 볼 수 있다. 따라서, 접근 제어부(220)는 부팅 완료시점 이후에 생성된 관리자 권한의 프로세스(비특권 루트 프로세스)에 대해서는 기본적으로 모바일 앱 관련 파일로의 접근을 불허한다. 일례로, 부팅 완료시점 이후에 생성되는 adbd 데몬 프로세스가 비특권 루트 프로세스일 수 있다.
한편, 부팅 완료시점 이후에 생성된 관리자 권한의 프로세스가 단말장치의 부팅 완료시점 이전에 생성된 프로세스(즉, 특권 루트 프로세스)의 복제 프로세스인 경우가 발생할 수 있다. 일례로, 안드로이드 플랫폼에서의 자이고트(Zygote) 프로세스는 특권 루트 프로세스에 의해 생성된 자식 프로세스이다. 이와 같은 복제 프로세스(자식 프로세스)가 지정받은 모바일 앱을 실행하기 위해는 한시적으로 특정 모바일 앱 관련 파일에 접근을 할 수 있어야 한다.
따라서, 접근 제어부(220)는 비특권 루트 프로세스로 판단된 프로세스라 하더라도 특권 루트 프로세스의 복제 프로세스인 경우 해당 프로세스가 모바일 앱 관련 파일로 접근하는 것을 예외적으로 허용한다.
또한, 상기한 특권 루트 프로세스의 복제 프로세스는 한시적으로 관리자(루트) 권한을 부여받은 후 특정 시점(일례로, setuid를 호출하는 시점)이 경과하면 접근권한이 일반 사용자 권한으로 낮아지게 된다. 이 경우, 프로세스 타입 판단부(210)는 해당 프로세스를 타입을 비특권 사용자 프로세스로 재판단하고, 접근 제어부(220)는 비특권 사용자 프로세스로 판단된 프로세스가 모바일 앱 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용한다. 그리고, 이와 같은 프로세스 타입의 재판단 및 접근 제어는 상기에서 설명한 특권 루트 프로세스로 판단된 프로세스에 대해서도 동일하게 적용될 수 있다.
이와 관련하여, 도 3에서는 특권 루트 프로세스, 비특권 사용자 프로세스 및 비특권 루트 프로세스의 판단 기준의 일례를 도시하고 있다. 그리고, 도 4에서는 특권 루트 프로세스, 비특권 사용자 프로세스 및 비특권 루트 프로세스에 접근 제어의 일례를 도시하고 있다.
도 4를 참조하면, 특권 루트 프로세스는 시스템 내의 모든 자원(파일)에 접근하는 것이 가능하고, 비특권 루트 프로세스는 시스템 내의 모든 자원에 접근하는 것이 차단된다. 그리고, 비특권 사용자 프로세스는 제한된 경우에 한해 시스템 내의 자원에 접근하는 것이 가능하다. 즉, "daemon" 의 이름을 갖는 프로세스가 "/data/app-private" 경로의 "App_101.apk" 파일에 접근할 경우 프로세스의 이름이 "daemon" 이며 접근하려는 파일의 확장자를 제외한 이름이 "App_101" 이므로 apk 파일의 접근이 차단된다. 그리고, DEX 파일의 경우에는 프로세스의 이름과 파일의 이름을 비교하고 추가로 해당 파일의 GID와 프로세스 UID의 비교를 통해 차단이 가능하다. "daemon" 프로세스는 daemon 이라는 값의 UID를 가지며 "data@app-private@App_101.dex@classes.dex"라는 파일은 GID 가 user1 이라는 값을 가진다.
또한, 앞서 설명한 바와 같이 컴포넌트 간의 통신이 수행되는 경우, 비특권 루트 프로세스로 판단된 프로세스는 도 5에 도시된 바와 같이 컴포넌트 간 통신을 통해 우회적으로 모바일 앱 관련 파일에 접근할 수 있다(이러한 컴포넌트 간의 송신은 "sendmsg" 라는 시스템 콜을 통하여 이루질 수 있음).
따라서, 본 발명의 일 실시예에 따르면, 접근 제어부(220)는 비특권 사용자 프로세스로 판단된 프로세스가 모바일 앱 내에 포함되는 컴포넌트 간의 통신을 수행하는 것을 차단함으로써 우회적인 접근을 차단할 수 있다.
한편, 본 발명의 일 실시예에 따르면, 프로세스 타입 판단부(210)는 스마트 기기의 부팅 완료 시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 프로세스들을 다수의 프로세스 그룹으로 분류하는 프로세스 그룹 분류부(211) 및 다수의 프로세스 그룹 별로 응용 소프트웨어 관련 파일로의 접근권한을 설정하는 접근권한 설정부(212)로 구성될 수 있다. 이 경우, 접근 제어부(220)는 상기 설정된 접근권한에 기초하여 모바일 앱 관련 파일로의 프로세스들의 접근을 제어할 수 있다.
보다 상세하게, 본 발명의 일 실시예에 따르면, 프로세스 그룹 분류부(211)는 스마트 기기의 부팅 완료시점 이후에 생성되고 프로세스의 파일접근 권한레벨이 관리자 권한인 프로세스를 비특권 루트 프로세스 그룹으로 분류하고, 접근권한 설정부(212)는 비특권 루트 프로세스 그룹에 포함된 프로세스에 대해 모바일 앱 관련 파일로의 접근을 차단하는 접근권한을 설정할 수 있다.
이 경우, 접근권한 설정부(211)는 비특권 루트 프로세스 그룹에 포함된 프로세스 중에서 스마트 기기의 부팅 완료시점 이전에 생성된 프로세스의 복제 프로세스에 대해서는 예외적으로 모바일 앱 관련 파일로의 접근을 허용하는 접근권한을 설정할 수 있다.
그리고, 프로세스 그룹 분류부(211)는 비특권 루트 프로세스 그룹에 포함된 프로세스 중 setuid를 호출하는 프로세스를 비특권 사용자 프로세스 그룹으로 재분류하고, 접근권한 설정부(212)는 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 모바일 앱 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 프로세스 그룹 분류부(211)는 스마트 기기의 부팅 완료시점 이전에 생성되고 프로세스의 파일접근 권한레벨이 관리자 권한인 프로세스를 특권 루트 프로세스 그룹으로 분류하고, 접근권한 설정부(212)는 특권 루트 프로세스 그룹에 포함된 프로세스에 대해 모바일 앱 관련 파일로의 접근을 허용하는 접근권한을 설정할 수 있다.
이 경우, 프로세스 그룹 분류부(211)는 특권 루트 프로세스 그룹에 포함된 프로세스 중 setuid를 호출하는 프로세스를 비특권 사용자 프로세스 그룹으로 재분류하고, 접근권한 설정부(212)는 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 모바일 앱 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 프로세스 그룹 분류부(211)는 프로세스의 파일접근 권한레벨이 사용자 권한인 프로세스를 비특권 사용자 프로세스 그룹으로 분류하고, 접근권한 설정부(212)는 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 모바일 앱 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정할 수 있다.
한편, 상기와 같은 접근 제한 기능은 리눅스 커널 수준에서 관련된 시스템 콜에 강제 접근 제어에 필요한 절차들을 추가함으로써 구현될 수 있다. 리눅스 커널에서 강제 접근 제어를 목적으로 한 시스템 콜 기능의 추가 또는 변경 방법은 다음 두 가지가 있다.
하나는 PC 환경에서 강제 접근 제어를 적용하기 위해 개발된 LSM (Linux Security Module) 메커니즘을 사용하는 것이다. LSM은 SELinux 등 PC 환경에서 사용되는 강제 접근 제어 프레임워크를 구현하는데 이미 사용되고 있다. 다만, LSM 메커니즘은 타겟 커널 전체를 LSM 설정 옵션으로 컴파일해야 한다는 단점이 있다.
다른 하나는 리눅스 드라이버 개발 목적으로 주로 활용되는 LKM (Loadable Kernel Module) 메커니즘을 사용하는 것이다. LKM이란 커널에 추가 기능을 구현할 때 동적 링크 방식으로 링크되는 커널 오브젝트 파일을 의미한다. LKM은 원래 장치 드라이버를 구현할 목적으로 사용되기 때문에, 특정 시스템 콜의 기능을 바꾸기 어렵지만, 각 시스템 콜의 시작 주소를 테이블 형태로 관리하는 커널의 구조상, 시스템 콜 주소 테이블의 특정 슬롯이 LKM 안의 시스템 콜을 가리키도록 만들 수 있다.
아래의 표 1은 본 발명에서 제안하는 강제 접근 제어 프레임워크의 구체적인 구현 시나리오를 시스템 콜 수준에서 기술한 것이다. 여기서 한 가지 유의할 것은, sys_setuid 시스템 콜의 경우 비특권 루트 프로세스가 setuid를 호출하면 비특권 사용자 프로세스로 재분류되며, 해당 UID 권한을 갖도록 허용한다는 점이다. 이것은 비특권 루트 프로세스가 어떤 파일도 접근할 수 없다는 점을 고려하면, 오히려 특정 UID의 권한을 획득하여 그 권한으로 접근 가능한 파일들에 접근할 위험성이 있다. 그러나, 이것을 보안상의 허점으로 보기보다는, 다음의 합법적인 실행 시나리오를 구제하기 위한 것으로 이해해야 한다. 즉, init 프로세스가 부트 완료 시점 이후에 생성하는 모든 자식 프로세스(adbd 데몬 포함)는 처음에 루트 권한을 유지하다가 setuid를 호출하여 스스로 루트 권한을 박탈한다. 따라서 이 기간에 루팅 공격을 받을 가능성도 있지만, 합법적으로 특정 UID의 권한으로 스스로를 강등할 가능성도 있다. 따라서, setuid 호출 전까지만 비특권 루트 프로세스로 분류하여 자원 접근을 차단하고, setuid 호출 시점에 비특권 사용자 프로세스로 재분류하여 해당 UID의 수준의 자원 접근 권한을 회복해주어야 한다. 그러나 비특권 루트 프로세스가 합법인지 불법인지 시스템 콜 수준에서 판단하는 작업은 좀 더 세밀한 주의가 요구된다. 비특권 루트 프로세스 중에서 합법적으로 비특권 사용자 프로세스로 전환되기 전에 파일 접근을 필요로 하는 경우가 있다면, 그런 비특권 루트 프로그램과 해당 파일의 조합을 소스 코드 수준에서 파악하여 예외적으로 허용해 주어야 한다. open 시스템 콜이 사용할 접근 제어 행렬에 반영해야 한다.
시스템 콜 강제 접근 제어를 위해 구현할 내용
sys_writev 안드로이드 부트 완료 시점에 system_server 데몬이 출력하는 "Boot Completed" 메시지를 확인한다. 메시지가 확인되는 시점에 이미 루트 권한을 가진 프로세스는 특권 루트 프로세스로, 그 외 프로세스는 비특권 사용자 프로세스로 분류한다.
sys_clone 새 프로세스 생성시, 생성되는 프로세스가 일반 사용자 프로세스인 경우 모두 비특권 사용자 프로세스로 분류한다. 루트 프로세스인 경우에는 현 시점이 부트 완료 이전일 때 특권 루트 프로세스로, 부트 완료 이후일 때 비특권 루트 프로세스로 분류한다. 단 부트 완료 이후라도, 부모 프로세스가 Zygote인 경우에 한해서 생성되는 자식 프로세스는 특권 루트 프로세스로 분류한다.
sys_setuid 특권 루트 프로세스 또는 비특권 루트 프로세스가 setuid를 호출하여 스스로 루트 권한을 박탈하면, 비특권 사용자 프로세스로 재분류한다.
sys_open 다음과 같은 접근 제어 행렬을 구현한다. 특권 루트 프로세스의 경우 파일시스템 상의 모든 파일들에 접근을 허용한다. 비특권 루트 프로세스의 경우 어떤 파일에도 접근을 허용하지 않는다. 비특권 사용자 프로세스의 경우 자신의 UID와 동일한 UID를 가진 파일들과 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능하다고 판단된 파일들에 대해서만 접근을 허용한다.
sys_sendmsg 비특권 루트 프로세스의 경우 오픈바인더를 이용할 수 없도록 sendmsg 호출을 허용하지 않는다. 특권 루트 및 비특권 사용자 프로세스는 접근을 허용한다.
sys_rmmod LKM을 이용하여 system call hooking이 구현된 경우, 해당 LKM 모듈을 제거하지 못하게 rmmod를 허용하지 않는다.
이와 같이, 본 발명에 따르면, 스마트 기기가 해킹되는 경우에도 관리자 권한을 획득한 프로세스가 불법적으로 모바일 앱을 복제하는 것을 차단할 수 있게 된다.
도 6은 본 발명의 일 실시예에 따른 응용 소프트웨어의 불법 복제 방지 방법의 전체적인 흐름을 도시한 순서도이다. 이하, 각 단계별로 수행되는 과정을 설명한다.
먼저, 단계(S610)에서는 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 프로세스의 접근권한과 관련된 프로세스 타입을 판단한다.
다음으로, 단계(S620)에서는 상기 판단 결과에 기초하여 응용 소프트웨어 관련 파일에 대한 프로세스의 접근을 선택적으로 허용한다.
본 발명의 일 실시예에 따르면, 단계(S610)에서는 프로세스가 단말장치의 부팅 완료시점 이후에 생성되고 프로세스의 파일접근 권한레벨이 관리자 권한인 경우, 프로세스 타입을 비특권 루트 프로세스로 판단하고, 단계(S620)에서는 비특권 루트 프로세스인 프로세스가 응용 소프트웨어 관련 파일로 접근하지 못하도록 차단할 수 있다.
이 경우, 단계(S620)에서는 비특권 루트 프로세스로 판단된 프로세스가 단말장치의 부팅 완료시점 이전에 생성된 프로세스의 복제 프로세스인 경우 응용 소프트웨어 관련 파일로 접근을 예외적으로 허용할 수 있다.
또한, 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고, 단계(S610)에서는 비특권 루트 프로세스로 판단된 프로세스가 setuid를 호출하는 경우, 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고, 단계(S620)에서는 비특권 사용자 프로세스로 재판단된 프로세스가 응용 소프트웨어 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
이 경우, 본 발명에 일 실시예에 따른 응용 소프트웨어의 불법 복제 방지 방법은 비특권 사용자 프로세스로 판단된 프로세스가 어플리케이션 내에 포함되는 컴포넌트 간의 통신을 수행하는 것을 차단하는 단계(미도시)를 더 포함할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 단계(S610)에서는 프로세스가 단말장치의 부팅 완료시점 이전에 생성되고 프로세스의 파일접근 권한 레벨이 관리자 권한인 경우, 프로세스를 특권 루트 프로세스로 판단하고, 단계(S620)에서는 특권 루트 프로세스로 판단된 프로세스가 응용 소프트웨어 관련 파일로의 접근을 허용할 수 있다.
이 경우, 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고, 단계(S610)에서는 특권 루트 프로세스로 판단된 프로세스가 setuid를 호출하는 경우, 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고, 단계(S620)에서는 비특권 사용자 프로세스로 재판단된 프로세스가 응용 소프트웨어 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 단계(S610)에서는 프로세스의 파일접근 권한 레벨이 사용자 권한인 경우, 프로세스를 비특권 사용자 프로세스로 판단하고, 단계(S620)에서는 비특권 사용자 프로세스로 판단된 프로세스가 응용 소프트웨어 관련 파일 중 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용할 수 있다.
지금까지 본 발명에 따른 응용 소프트웨어의 불법 복제 방지 방법의 실시예들에 대하여 설명하였고, 앞서 도 2에서 응용 소프트웨어의 불법 복제 방지 장치(200)에 관한 구성이 본 실시예에도 그대로 적용 가능하다. 이에, 보다 상세한 설명은 생략하기로 한다.
또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (16)

  1. 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근권한과 관련된 프로세스 타입을 판단하는 단계; 및
    상기 판단 결과에 기초하여 상기 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근을 선택적으로 허용하는 단계;를 포함하되,
    상기 판단하는 단계는 상기 프로세스가 상기 단말장치의 부팅 완료시점 이후에 생성되고 상기 프로세스의 파일접근 권한레벨이 관리자 권한인 경우, 상기 프로세스 타입을 비특권 루트 프로세스로 판단하고,
    상기 선택적으로 허용하는 단계는 비특권 루트 프로세스인 상기 프로세스가 상기 응용 소프트웨어 관련 파일로 접근하지 못하도록 차단하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 선택적으로 허용하는 단계는 비특권 루트 프로세스로 판단된 상기 프로세스가 상기 단말장치의 부팅 완료시점 이전에 생성된 프로세스의 복제 프로세스인 경우 상기 응용 소프트웨어 관련 파일로 접근을 예외적으로 허용하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  4. 청구항 4은(는) 설정등록료 납부시 포기되었습니다.
    제1항 또는 제3항에 있어서,
    상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고,
    상기 판단하는 단계는 비특권 루트 프로세스로 판단된 상기 프로세스가 setuid를 호출하는 경우, 상기 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고,
    상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 재판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  5. 제1항에 있어서,
    상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고,
    상기 응용 소프트웨어의 불법 복제 방지 방법은 상기 비특권 사용자 프로세스로 판단된 프로세스가 상기 어플리케이션 내에 포함되는 컴포넌트 간의 통신을 수행하는 것을 차단하는 단계를 더 포함하는 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  6. 제1항에 있어서,
    상기 판단하는 단계는 상기 프로세스가 상기 단말장치의 부팅 완료시점 이전에 생성되고 상기 프로세스의 파일접근 권한 레벨이 관리자 권한인 경우, 상기 프로세스를 특권 루트 프로세스로 판단하고,
    상기 선택적으로 허용하는 단계는 특권 루트 프로세스로 판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일로의 접근을 허용하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  7. 청구항 7은(는) 설정등록료 납부시 포기되었습니다.
    제6항에 있어서,
    상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고,
    상기 판단하는 단계는 특권 루트 프로세스로 판단된 상기 프로세스가 setuid를 호출하는 경우, 상기 프로세스의 타입을 비특권 사용자 프로세스로 재판단하고,
    상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 재판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  8. 제1항에 있어서,
    상기 판단하는 단계는 상기 프로세스의 파일접근 권한 레벨이 사용자 권한인 경우, 상기 프로세스를 비특권 사용자 프로세스로 판단하고,
    상기 선택적으로 허용하는 단계는 비특권 사용자 프로세스로 판단된 상기 프로세스가 상기 응용 소프트웨어 관련 파일 중 상기 프로세스의 사용자 아이디와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 방법.
  9. 단말장치의 부팅 완료 시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 프로세스들을 다수의 프로세스 그룹으로 분류하는 프로세스 그룹 분류부;
    상기 다수의 프로세스 그룹 별로 응용 소프트웨어 관련 파일로의 접근권한을 설정하는 접근권한 설정부; 및
    상기 설정된 접근권한에 기초하여 상기 응용 소프트웨어 관련 파일로의 상기 프로세스들의 접근을 제어하는 접근 제어부를 포함하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  10. 제9항에 있어서,
    상기 프로세스 그룹 분류부는 상기 단말장치의 부팅 완료시점 이후에 생성되고 상기 프로세스의 파일접근 권한레벨이 관리자 권한인 프로세스를 비특권 루트 프로세스 그룹으로 분류하고,
    상기 접근권한 설정부는 상기 비특권 루트 프로세스 그룹에 포함된 프로세스에 대해 상기 응용 소프트웨어 관련 파일로의 접근을 차단하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  11. 청구항 11은(는) 설정등록료 납부시 포기되었습니다.
    제10항에 있어서,
    상기 접근권한 설정부는 상기 비특권 루트 프로세스 그룹에 포함된 프로세스 중에서 상기 단말장치의 부팅 완료시점 이전에 생성된 프로세스의 복제 프로세스에 대해서는 예외적으로 상기 응용 소프트웨어 관련 파일로의 접근을 허용하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  12. 청구항 12은(는) 설정등록료 납부시 포기되었습니다.
    제10항 또는 제11항에 있어서,
    상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고,
    상기 프로세스 그룹 분류부는 비특권 루트 프로세스 그룹에 포함된 프로세스 중 setuid를 호출하는 프로세스를 비특권 사용자 프로세스 그룹으로 재분류하고,
    상기 접근권한 설정부는 상기 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 상기 응용 소프트웨어 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  13. 제9항에 있어서,
    상기 프로세스 그룹 분류부는 상기 단말장치의 부팅 완료시점 이전에 생성되고 상기 프로세스의 파일접근 권한레벨이 관리자 권한인 프로세스를 특권 루트 프로세스 그룹으로 분류하고,
    상기 접근권한 설정부는 상기 특권 루트 프로세스 그룹에 포함된 프로세스에 대해 상기 응용 소프트웨어 관련 파일로의 접근을 허용하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  14. 청구항 14은(는) 설정등록료 납부시 포기되었습니다.
    제13항에 있어서,
    상기 응용 소프트웨어는 안드로이드 플랫폼에서 실행되는 어플리케이션이고,
    상기 프로세스 그룹 분류부는 특권 루트 프로세스 그룹에 포함된 프로세스 중 setuid를 호출하는 프로세스를 비특권 사용자 프로세스 그룹으로 재분류하고,
    상기 접근권한 설정부는 상기 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 상기 응용 소프트웨어 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  15. 제9항에 있어서,
    상기 프로세스 그룹 분류부는 상기 프로세스의 파일접근 권한레벨이 사용자 권한인 프로세스를 비특권 사용자 프로세스 그룹으로 분류하고,
    상기 접근권한 설정부는 상기 비특권 사용자 프로세스 그룹에 포함된 프로세스에 대해 상기 응용 소프트웨어 관련 파일 중 해당 프로세스와 동일한 사용자 아이디를 가지는 프로세스에 의해 생성된 파일 또는 사용자 임의 접근 제어의 파일 퍼미션 테스트를 통해 접근 가능한 것으로 판단된 파일로의 접근을 허용하는 접근권한을 설정하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
  16. 단말장치의 부팅 완료시점을 기준으로 한 프로세스 생성시점 및 상기 프로세스에 대해 미리 설정된 파일접근 권한레벨 중 적어도 하나에 기초하여 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근권한과 관련된 프로세스 타입을 판단하는 프로세스 타입 판단부; 및
    상기 판단 결과에 기초하여 상기 응용 소프트웨어 관련 파일에 대한 상기 프로세스의 접근을 선택적으로 허용하는 접근 제어부;를 포함하되,
    상기 프로세스 타입 판단부는 상기 프로세스가 상기 단말장치의 부팅 완료시점 이후에 생성되고 상기 프로세스의 파일접근 권한레벨이 관리자 권한인 경우, 상기 프로세스 타입을 비특권 루트 프로세스로 판단하고,
    상기 접근 제어부는 비특권 루트 프로세스인 상기 프로세스가 상기 응용 소프트웨어 관련 파일로 접근하지 못하도록 차단하는 것을 특징으로 하는 응용 소프트웨어의 불법 복제 방지 장치.
KR1020120039836A 2012-02-22 2012-04-17 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치 KR101321479B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020120017888 2012-02-22
KR20120017888 2012-02-22

Publications (2)

Publication Number Publication Date
KR20130101956A KR20130101956A (ko) 2013-09-16
KR101321479B1 true KR101321479B1 (ko) 2013-10-28

Family

ID=49451924

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120039836A KR101321479B1 (ko) 2012-02-22 2012-04-17 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101321479B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101530532B1 (ko) * 2013-11-04 2015-06-23 주식회사 잉카인터넷 모바일단말의 루팅 탐지 시스템 및 방법
KR101477050B1 (ko) * 2014-05-28 2015-01-08 충남대학교산학협력단 메모리 덤프 기법을 이용한 어플리케이션의 실행코드 추출 방법
KR102311827B1 (ko) * 2015-02-10 2021-10-13 주식회사 마크애니 사용자 적응형 모바일 디바이스 제어 방법 및 시스템
KR102254283B1 (ko) * 2020-11-12 2021-05-21 주식회사 시큐브 멀티프로세스 클러스터링 기반 랜섬웨어 공격 탐지 장치, 방법 및 그 방법을 실현하기 위한 프로그램을 기록한 기록매체

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004194117A (ja) 2002-12-12 2004-07-08 Canon Inc 携帯型情報端末装置
KR100641884B1 (ko) * 2005-07-14 2006-11-02 이재준 휴대용 저장장치의 고유번호를 이용한 사용자 구분 및어플리케이션 구동시스템 및 그 방법.
KR20110098721A (ko) * 2008-12-26 2011-09-01 샌디스크 아이엘 엘티디 사용자 신분에 근거하여 파일에 대한 액세스를 제공하기 위한 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004194117A (ja) 2002-12-12 2004-07-08 Canon Inc 携帯型情報端末装置
KR100641884B1 (ko) * 2005-07-14 2006-11-02 이재준 휴대용 저장장치의 고유번호를 이용한 사용자 구분 및어플리케이션 구동시스템 및 그 방법.
KR20110098721A (ko) * 2008-12-26 2011-09-01 샌디스크 아이엘 엘티디 사용자 신분에 근거하여 파일에 대한 액세스를 제공하기 위한 방법 및 장치

Also Published As

Publication number Publication date
KR20130101956A (ko) 2013-09-16

Similar Documents

Publication Publication Date Title
KR101928127B1 (ko) 애플리케이션용 선택적 파일 액세스 기법
US9916475B2 (en) Programmable interface for extending security of application-based operating system
Singh An overview of android operating system and its security
CN102799817B (zh) 用于使用虚拟化技术进行恶意软件保护的系统和方法
US9147069B2 (en) System and method for protecting computer resources from unauthorized access using isolated environment
US9679130B2 (en) Pervasive package identifiers
US8938811B2 (en) Information processing apparatus, method, program, and integrated circuit
KR101308859B1 (ko) 임시 관리자 권한 부여 기능을 가진 단말기 및 이를 이용한 임시 관리자 권한 부여 방법
US20060259487A1 (en) Creating secure process objects
US20050091658A1 (en) Operating system resource protection
US20080066187A1 (en) Mobile Wireless Device with Protected File System
JP2010182319A (ja) コンピュータ装置上の記憶領域へのアプリケーションレベルのアクセス特権
Burns Developing secure mobile applications for android
US20070050369A1 (en) Accessing file under confinement
US20160344771A1 (en) Managed applications
KR101321479B1 (ko) 프로세스의 접근 제어를 이용한 응용 소프트웨어의 불법 복제 방지 방법 및 장치
Kern et al. Permission tracking in Android
CN114154144A (zh) 基于安全沙箱的应用安全加固系统
Schreckling et al. Constroid: data-centric access control for android
Stach How to Deal with Third Party Apps in a Privacy System--The PMP Gatekeeper--
CN107636667B (zh) 在设备中创建多个工作空间的系统及方法
US9286476B2 (en) Method and system for configuring constraints for a resource in an electronic device
US20070038572A1 (en) Method, system and computer program for metering software usage
WO2023016151A1 (zh) Linux系统安全应用的软件框架及创建方法
KR101731920B1 (ko) 이동 단말기 및 그것의 제어방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181017

Year of fee payment: 6