KR101862382B1 - 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치 - Google Patents

안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치 Download PDF

Info

Publication number
KR101862382B1
KR101862382B1 KR1020160169867A KR20160169867A KR101862382B1 KR 101862382 B1 KR101862382 B1 KR 101862382B1 KR 1020160169867 A KR1020160169867 A KR 1020160169867A KR 20160169867 A KR20160169867 A KR 20160169867A KR 101862382 B1 KR101862382 B1 KR 101862382B1
Authority
KR
South Korea
Prior art keywords
application
data
directory
type
sepolicyfile
Prior art date
Application number
KR1020160169867A
Other languages
English (en)
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 단국대학교 산학협력단
Priority to KR1020160169867A priority Critical patent/KR101862382B1/ko
Application granted granted Critical
Publication of KR101862382B1 publication Critical patent/KR101862382B1/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치에 관한 것이다. 더 상세하게는 새로운 어플리케이션(Application)이 설치될 때마다 어플리케이션(Application)의 설치를 실시간으로 인식하고, 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드하고, 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 상기 정책파일(SEpolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)한 후 상기 정책파일(SEpolicyfile)을 업데이트(Update)하는 것을 특징으로 한다. 이를 통해 루트(Root) 권한 쉘(Shell)에 의한 어플리케이션 데이터(Application Data) 접근을 차단할 수 있으며, 루팅(Rooting)이 된 후에도 특정 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)는 UID(User ID)가 동일한 어플리케이션(Application)만이 접근할 수 있다. 또한 본 발명의 접근 정책 추가 과정으로 인한 성능 오버헤드(Overhead)가 크지 않은 효과를 가진다.

Description

안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치 {Method and device for managing application data in Android}
본 발명은 안드로이드 환경에서 어플리케이션 데이터 관리 방법 및 장치에 관한 것이다. 보다 상세하게는 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 정책파일(SEpolicyfile)의 타입(Type)을 매칭(Matching)함으로써 하나 또는 둘 이상의 어플리케이션(Application)만이 자신(들)의 디렉토리(Directory) 및 해당 데이터 디렉토리(Data Directory)에 접근할 수 있는 기술이다.
2016년 가트너(Gartner) 보고서에 의하면 국제적으로 판매된 모바일 단말 운영체제(이하 “OS") 중 안드로이드 운영체제(Android OS)의 사용률이 84.1%로 가장 많은 것을 알 수 있다. 안드로이드 어플리케이션(Android Application) 수요 및 공급 증가로 인해 개인정보 등 어플리케이션 데이터(Application Data)를 외부로 유출하기 위해 많은 악성 어플리케이션(Application)이 생겨나고 있다.
최영석 등의 연구에 의하면, 안드로이드(Android)에서 개인정보를 포함한 대부분의 어플리케이션 데이터(Application Data)들은 “/data/data/패키지명” 이하 디렉토리(Directory)에 에스큐라이트 데이터베이스(SQLite Database)로 저장되어있다. 연락처, 통화 목록, 단문메세지서비스(SMS : Short Massage Service) 등의 기본적인 정보를 포함하여, 카카오톡(KAKAO TALK) 대화내용, 페이스북(FACEBOOK) 등 많이 사용되는 어플리케이션 데이터(Application Data) 또한 “/data/data/패키지명” 이하 디렉토리(Directory)에 에스큐라이트 데이터베이스(SQLite Database)로 저장된다. 그리고 악성 어플리케이션(Application)에 의해 개인정보를 포함한 어플리케이션 데이터(Application Data)가 외부로 유출될 수 있음을 언급하였다.
악성 어플리케이션(Application)의 위협 외에도 단말기 루팅(Rooting) 또한 문제가 된다. 기본적으로 안드로이드(Android) 단말은 루트(Root) 권한이 제공되지 않으며, 접근제어를 위해 임의 접근 제어(DAC : Discretionary Access Control)와 안드로이드(Android) 4.3 버전부터 추가된 에스이안드로이드(SEAndroid : Security Enhanced Android)의 MAD(Mandatory Access Control)을 사용한다. 두 개의 접근제어 모델(Model)로 인해 어플리케이션 데이터(Application Data)가 저장되는 “/data/data/패키지명” 이하 디렉토리(Directory)의 데이터(Data)는 동일한 UID(User ID)를 지닌 어플리케이션(Application) 외에는 접근할 수 없다.
하지만 4.3, 4.4 버전의 안드로이드(Android) 단말은 towelroot.apk 등의 루팅(Rooting) 도구를 사용하면 루트(Root) 권한을 획득할 수 있다. 루트(Root) 권한을 획득한 다음, 루트(Root) 권한 쉘(Shell)에서 특정 어플리케이션 데이터(Application Data)에 직접 접근할 수 있고, ‘setenforce' 등의 명령어를 사용하면 에스이안드로이드(SEAndroid : Security Enhanced Android)의 강제적 접근 제어 모델(MAC : Mandatory Access Control) 또한 무력화시킬 수 있다. 즉 루트(Root) 권한을 가진 공격자에 의해 기존 접근제어 모델(Model)이 무력화되어 개인정보 등의 어플리케이션 데이터(Application Data)가 외부로 유출될 수 있다.
4.3과 4.4 버전의 안드로이드(Android)에서는 사용자가 설치한 어플리케이션(Application)은 모두 ‘untrusted_app' 도메인 타입(Domain type) 하나만을 할당받는다.
또한 어플리케이션 데이터(Application Data)가 저장되는 “/data/data/패키지명” 이하 디렉토리(Directory)는 ‘app_data_file'인 하나의 타입(Type)만이 할당된다. 도 1은 획일화된 도메인 타입(Domain type)과 객체 타입(Object type)으로 인해 발생 가능한 위협의 예를 보여준다.
도 1의 좌측과 같이 루팅(Rooting)되지 않은 안드로이드(Android)에서는 기본적으로 ‘a' 앱(app)이 ’b' 앱(app)의 ‘/data/data/패키지명’ 이하 디렉토리(Directory)에 접근할 수 없다. 이는 임의 접근 제어 퍼미션(DAC Permission : Discretionary Access Control Permission)이 ‘others'에게 ’x‘인 실행 권한만 부여되어있기 때문이다. 기존 에스이안드로이드(SEAndroid : Security Enhanced Android)의 정책으로는 4.3, 4.4 버전의 안드로이드(Android)에서는 도 1과 같은 공격을 방어할 수 없다.
도 2는 4.3, 4.4 버전의 안드로이드(Android)에서 기존 에스이안드로이드(SEAndroid : Security Enhanced Android)의 정책으로 도 1과 같은 공격을 방어할 수 없는 이유를 나타낸 도면이다. 도 2를 참조하면 ‘untrusted-app' 도메인 타입(Domain type)이 ’app_data_file' 객체 타입(type)에 대한 접근 권한을 나타낸다. 도 2에서 언급된 정책은 ‘untrusted-app' 도메인 타입(Domain type)을 가진 프로세스(Process)에게 ’app_data_file' 타입(type)의 파일(File)에 대해 읽기(read), 열기(open), 임의 접근 제어 퍼미션(DAC Permission : Discretionary Access Control Permission) 권한 변경(settattr) 등의 권한을 허용함을 나타낸다. 이는 어플리케이션 데이터(Application Data)가 저장되는 디렉토리(Directory)의 타입(Type)이 ‘app_data_file'로 획일화 되어있기 때문에 도 1의 우측과 같이 위협이 발생할 수 있는 것이다.
따라서 도 1의 우측과 같이 루트(Root) 권한 쉘(Shell)에서 ‘chmod' 명령어를 사용하여 접근하고자 하는 디렉토리(Directory) 및 파일(File)의 임의 접근 제어 퍼미션(DAC Permission : Discretionary Access Control Permission) 권한을 변경(’b' 앱(app)이 ‘a' 앱(app)의 데이터(Data) 저장소에 대해 누구나 읽고, 쓸 수 있는 권한 추가)하게 되면, ’b' 앱(app)에서 ‘a' 앱(app)의 “/data/data/패키지명” 이하 디렉토리 파일(Directory File)에 접근할 수 있게 된다. 즉 기존 에스이안드로이드(SEAndroid : Security Enhanced Android)의 정책은 하나의 어플리케이션(Application)이 다른 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)를 접근할 수 있도록 미리 정의하고 있는 상태이다. 따라서 루트(Root) 권한 쉘(Shell)에서 임의 접근 제어 퍼미션(DAC Permission : Discretionary Access Control Permission) 권한을 변경하면, 어플리케이션 데이터(Application Data)가 루트(Root) 권한 쉘(Shell) 혹은 다른 어플리케이션(Application)에 노출될 수 있는 문제점이 있다.
미국등록특허공보 제8549656호 한국등록특허공보 제1661817호
이에 본 발명은 상기와 같은 제반 사항을 고려하여 제안된 것으로, 안드로이드(Android) 환경에서 어플리케이션 데이터(Application Data)가 저장되는 디렉토리 타입(Directory type)을 변경하는 어플리케이션 데이터 관리 방법 및 장치를 제공하는 것을 목적으로 한다. 이 때 디렉토리 타입(Directory type) 변경은 어플리케이션(Application)마다 일대일 연결로 할당되도록 변경하고자 한다.
또한 UID(User ID) 정보를 통해 접근 주체를 식별하여 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에는 동일한 UID(User ID)를 지닌 어플리케이션(Application)만이 접근하도록 한다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 안드로이드 환경에서의 어플리케이션 데이터 관리 방법은, 어플리케이션(Application)의 설치를 실시간으로 인식하는 인식단계와, 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드하는 로드단계와, 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 정책파일(SEpolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 정책파일(SEpolicyfile)을 업데이트(Update)하는 제1업데이트단계와, 새로운 어플리케이션(Application)이 설치될 때마다 상기 인식단계 내지 상기 제1업데이트단계를 반복하는 반복단계를 포함하는 것을 특징으로 한다.
이 때 어플리케이션(Application)을 삭제하는 경우, 정책파일(SEpolicyfile)을 로드(Load)하고 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제하는 연결해제단계와, 해제된 정책파일(SEpolicyfile)을 업데이트(Update)하는 제2업데이트단계를 더 포함하는 것을 특징으로 한다.
로드단계의 정책파일(SEpolicyfile)은 ‘type_pkg_manage'형태의 정책파일(SEpolicyfile)인 것을 특징으로 한다.
제1업데이트단계의 매칭(Matching)은 설치한 어플리케이션(Application)이 출력하는 로그캣메세지(Logcatmessage)로부터 어플리케이션(Application)의 설치 완료를 인식한 후, 타입(Type)을 매칭(Matching)하는 ‘chcon'명령어를 이용하여 실행하는 것을 특징으로 한다. 이 때 어플리케이션(Application)의 설치 완료는 로그캣메세지(Logcatmessage)에서‘PACKAGE_ADDED' 브로드캐스트 메세지(Broadcast Message)를 파싱(Parsing)하여 인식하는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 기록 매체는, 상기 인식단계 내지 반복단계를 수행하기 위한 일련의 명령이 기록된 것을 특징으로 한다.
또한, 상기와 같은 목적을 달성하기 위하여 본 발명의 기술적 사상에 의한 안드로이드 환경에서의 어플리케이션 데이터 관리 장치는, 어플리케이션(Application)의 설치를 실시간으로 인식하는 인식부와, 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드하는 로드부와, 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 정책파일(SEpolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 정책파일(SEpolicyfile)을 업데이트(Update)하는 제1업데이트부와, 새로운 어플리케이션(Application)이 설치될 때마다 상기 인식단계 내지 상기 제1업데이트단계를 반복하는 반복부를 포함하는 것을 특징으로 한다.
이 때 어플리케이션(Application)을 삭제하는 경우, 정책파일(SEpolicyfile)을 로드(Load)하고 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제하는 연결해제부와, 해제된 정책파일(SEpolicyfile)을 업데이트(Update)하는 제2업데이트부를 더 포함하는 것을 특징으로 한다.
로드부의 정책파일(SEpolicyfile)은 ‘type_pkg_manage'형태의 정책파일(SEpolicyfile)인 것을 특징으로 한다.
제1업데이트부의 매칭(Matching)은 설치한 어플리케이션(Application)이 출력하는 로그캣메세지(Logcatmessage)로부터 어플리케이션(Application)의 설치 완료를 인식한 후, 타입(Type)을 매칭(Matching)하는 ‘chcon'명령어를 이용하여 실행하는 것을 특징으로 한다. 이 때 어플리케이션(Application)의 설치 완료는 로그캣메세지(Logcatmessage)에서‘PACKAGE_ADDED' 브로드캐스트 메세지(Broadcast Message)를 파싱(Parsing)하여 인식하는 것을 특징으로 한다.
이상에서 설명한 바와 같은 안드로이드 환경에서 어플리케이션 데이터 관리 방법 및 장치에 따르면,
첫째, 루트(Root) 권한 쉘(Shell)에 의한 어플리케이션 데이터(Application Data) 접근을 차단할 수 있다.
둘째, UID(User ID)가 다른 어플리케이션(Application)의 접근을 차단함으로써 루팅(Rooting)이 된 후에도 특정 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)는 UID(User ID)가 동일한 어플리케이션(Application)만이 접근할 수 있다.
셋째, 본 발명의 접근 정책 추가 과정으로 인한 성능 오버헤드(Overhead)가 크지 않은 효과를 가진다.
도 1은 획일화된 도메인 타입(Domain type)과 객체 타입(Object type)으로 인해 발생 가능한 위협의 예를 보여주는 도면.
도 2는‘untrusted-app' 도메인 타입(Domain type)이 ’app_data_file' 타입(type)에 대해 허용된 권한을 보여주는 도면.
도 3은 본 발명의 일 실시예에 따른 안드로이드 환경에서의 어플리케이션 데이터 관리 과정을 나타낸 도면.
도 4는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법을 나타낸 순서도.
도 5는 안드로이드 환경에서의 어플리케이션을 삭제할 때에 데이터 관리 방법을 나타낸 순서도.
도 6은 안드로이드 환경에서의 어플리케이션 데이터 관리 장치를 나타낸 구성도.
도 7은 안드로이드 환경에서의 어플리케이션을 삭제할 때에 데이터 관리 장치를 나타낸 구성도.
도 8은 본 발명의 일 실시예를 적용한 후, 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 접근이 차단되는 것을 보여주는 도면.
도 9는 본 발명의 일 실시예를 적용한 후, 어플리케이션(Application) 성능 실험 결과를 보여주는 도면.
도 10a는 새로운 어플리케이션(Application)을 설치 할 때, ‘chcon' 명령어를 이용한 타입(Type) 변경에 소요되는 시간을 보여주는 도면.
도 10b는 새로운 어플리케이션(Application)을 설치할 때, 어플리케이션(Application) 접근 정책을 추가하는 데에 소요되는 시간을 보여주는 도면.
첨부한 도면을 참조하여 본 발명의 실시예들에 의한 안드로이드 환경에서 어플리케이션 데이터 관리 방법 및 장치에 대하여 상세히 설명한다. 본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술범위에 포함되는 모든 영상을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. 첨부된 도면에 있어서, 구조물들의 치수는 본 발명의 명확성을 기하기 위하여 실제보다 확대하거나, 개략적인 구성을 이해하기 위하여 실제보다 축소하여 도시한 것이다.
또한, 제1 및 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 한편, 다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
도 3을 참조하면, 허용된 프로세스(Process)만이 에스이안드로이드(SEAndroid : Security Enhanced Android) 정책을 조작하도록 제한하는 것과, 각 어플리케이션 데이터(Application Data) 저장소(‘/data/data/패키지명' 이하 디렉토리(Directory))에는 UID(User ID)가 동일한 어플리케이션(Application)만이 접근 가능한 도면을 보여준다. 그 중 본 발명은 각 어플리케이션 데이터(Application Data) 저장소(‘/data/data/패키지명' 이하 디렉토리(Directory))에 UID(User ID)가 동일한 어플리케이션(Application)만이 접근 가능한 목표를 구현하기 위해 각 어플리케이션(Application)의 데이터(Data)를 보호할 수 있도록 획일화된 도메인 타입(Domain Type) 및 객체 타입(Type)을 안전하게 분리하는 기술을 제안한다.
기존 에스이안드로이드(SEAndroid : Security Enhanced Android)에서 사용자가 설치한 어플리케이션(Application)은 'untrusted_app' 도메인 타입(Domain Type), 어플리케이션 데이터(Application Data)가 저장되는 디렉토리(Directory)는 ‘app_data_file' 하나의 타입(Type)이 할당된다. 따라서 도 1에서 설명한 루트(Root) 권한 쉘(Shell)에서 임의 접근 제어(DAC : Discretionary Access Control) 권한 변경을 통한 어플리케이션 데이터(Application Data) 접근을 막기 위해서는, 접근 주체 혹은 접근 객체의 타입(Type)을 변경해야한다. 이 때 접근 주체의 도메인 타입(Domain Type)을 변경하는 것은 다음과 같은 문제점이 존재한다.
첫 번째, 도메인 타입(Domain Type)이 분리가 될 때 새로 추가되어야 할 접근 규칙의 수(도메인타입(Domain Type) 수 × 타겟 타입(Target Type) 수)가 크게 증가한다. 이 때 규칙 추가로 인한 공간 오버헤드(Overhead), 연산 오버헤드(Overhead)를 발생시킨다.
두 번째, 4.3 버전 이후의 안드로이드(Android)에서는 ‘zygote' 프로세스(Process)가 어플리케이션(Application)을 fork()할 때, 내부적으로 ’prctl()'함수를 사용하여 ‘no_new_priv'값을 설정한다. ’no_new_priv'는 ‘exec()' 계열의 함수 등으로 인해 권한상승 등의 연산 수행을 방지하기 위한 것이다.
에스이안드로이드(SEAndroid : Security Enhanced Android)에서는 도메인(Domain) 전이를 어플리케이션(Application) 자체가 특정 권한을 얻는 것으로 인식하여 사용자가 설치한 어플리케이션(Application)(UID(User ID)가 10,000 이상인 프로세스(Process))은 도메인(Domain) 전이를 하지 못하게 되어있다. 따라서 본 발명에서는 타겟 타입(Target Type) 분리를 수행한다.
에스이안드로이드(SEAndroid : Security Enhanced Android)를 도입하여 새로 설치되는 어플리케이션 디렉토리(Application Directory)의 타입(Type)을 변경하지만, 도 1의 위협 상황과 같이 'untrusted_app' 도메인 타입(Domain Type)을 갖는 어플리케이션(Application)에 대해서는 접근 주체가 모두 동일하여 주체 식별이 되지 않으므로, 접근 주체를 식별할 필요가 있다. 따라서 기존 에스이안드로이드(SEAndroid : Security Enhanced Android)의 변경을 최소화하고, 성능 오버헤드(Overhead) 발생을 최소화하여 접근 주체를 식별하기 위해 UID(User ID) 정보를 사용한다. 이 때 접근 주체 식별 과정에서 에스이안드로이드(SEAndroid : Security Enhanced Android)의 SID(Security ID)를 사용하지 않는 이유는 SID(Security ID)가 접근 주체를 식별하는 데에 충분하지 않기 때문이다. SID(Security ID)는 에스이안드로이드(SEAndroid : Security Enhanced Android) 상에서 각 객체별로 할당된 보안 문맥을 식별하기 위한 정수 값이다. 예를 들어, 4.4 버전의 안드로이드(Android)에서는 어플리케이션(Application)(‘untrusted_app' 도메인 타입(Domain Type)을 갖는)의 SID(Security ID)는 모두 ’164‘로 할당되어 특정 어플리케이션 데이터(Application Data)에 접근할 때, 어느 어플리케이션(Application)이 접근하는가를 알기 어렵다. 따라서 사용자가 설치한 어플리케이션(Application)에는 모두 'untrusted_app' 도메인 타입(Domain Type) 하나가 할당되므로, 어플리케이션(Application)에서 특정 파일(File)에 접근할 때에는 어느 어플리케이션(Application)에서 접근하는가를 알 수 없다.
따라서 본 발명에서는 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 고유한 타입(Type)을 할당함으로써 루트(Root) 권한 쉘(Shell)에서의 접근을 차단할 수 있다. 또한 UID(User ID)로 접근 주체를 식별하여 UID(User ID)가 다른 어플리케이션(Application)이 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 접근하는 것을 차단할 수 있다. 이로 인해 본 발명이 적용된 후에는 루팅(Rooting)이 되어도 특정 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)는 UID(User ID)가 동일한 어플리케이션(Application)만이 접근할 수 있다.
어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 고유한 타입(Type)을 할당하는 방법은 다음과 같다. 에스이안드로이드(SEAndroid : Security Enhanced Android)를 도입하여 어플리케이션 데이터(Application Data)가 저장되는 디렉토리(Directory)의 타입(Type)을 새로 할당하는 방법이다.
에스이매니저(SE_manager)는 어플리케이션(Application)이 설치될 때 어플리케이션(Application) 설치를 실시간으로 인식하고, 생성되는 디렉토리(‘/data/data/패키지명’ 이하)에 새로운 타입(Type)을 할당하는 프로세스(Process)이다.
에스이매니저(SE_manager)를 도입하여 어플리케이션 데이터(Application Data)가 저장되는 디렉토리(Directory)의 타입(Type)을 새로 할당하는 이유는 다음과 같다.
기존 에스이안드로이드(SEAndroid : Security Enhanced Android)의 정책에 없던 새로운 타입(Type)을 정의하고, 이를 할당하기 때문에 기존 정책에 정의된 ‘init' 도메인 타입(Domain Type)에서의 접근을 차단할 수 있다.
Towelroot.apk 도구로 루팅(Rooting)한 단말의 경우, 루트(Root) 권한 쉘(Shell)의 도메인 타입(Domain Type)이 ‘init’이기 때문에, 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)의 타입을 변경하면 접근 정책이 없어 루트(Root) 권한 쉘(Shell)에서 접근할 수 없게 된다. 즉, 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data) 접근은 에스이안드로이드(SEAndroid : Security Enhanced Android) 상에서 타겟 타입(Target Type)을 분리하는 것만으로도 막을 수 있다.
에스이매니저(SE_manager)는 어플리케이션(Application)마다 할당하는 고유한 객체 타입(Type)을 ‘type_pkg_manage' 파일(File)에서 ’[타입]:[패키지명]‘ 형태로 관리한다. [타입]은 시스템(System) 내부에 미리 정의되어있는 객체 타입(Type)을 의미하며, [패키지명]은 설치되는 어플리케이션(Application)의 패키지명을 의미한다. 안드로이드(Android) 환경에서 새로운 타입(Type)을 정책에 추가하기 위해서는 ’sepolicy' 정책 파일(File)을 변경해야하므로, ‘sepolicy' 정책 파일(File)을 수정할 때 객체 타입(Type)을 미리 정의한다. 이 때 미리 생성한 타입(Type)의 수는 676개(a_a_t, a_b_t, ..., z_z_t)로, 이는 조절 가능한 값이다.
에스이매니저 프로세스(SE_manager Process)가 ‘type_pkg_manage' 파일(File)을 생성 및 관리해야하므로, ’type_pkg_manage' 파일(File)에 타입(Type)을 할당하고, 에스이매니저(SE_manager)만이 접근 가능하도록 규칙을 추가하였다.
에스이안드로이드(SEAndroid : Security Enhanced Android)가 동작하는 순서는 아래와 같다.
(1) [타입]:[패키지명]:[플래그] 구조를 갖는 ‘type_pkg_manage' 파일(File)을 메모리(Memory) 내에 로드(Load)한다. 해당 파일(File)의 ’타입(Type)‘은 수정된 정책 파일(File)에 미리 정의되어있는 타입(Type)으로써, 시스템 내 유일한 타입(Type)을 나타낸다.
(2) 어플리케이션(Application) 설치 인식 후, 미리 정의된 타입(Type) 내에서 사용되지 않는 타입(Type)을 선정한다. 어플리케이션(Application) 설치는 로그캣메시지(LogcatMessage)에서 ‘PACKAGE_ADDED' 브로드캐스트 메시지(Broadcast Message)를 파싱(Parsing)하여 인식한다. 이 때 로그캣메시지(LogcatMessage)는 설치한 어플리케이션(Application)이 출력하는 메시지(Message)이다.
(3) ‘chcon' 명령어로 어플리케이션(Application) 설치 후 생성된 어플리케이션 데이터(Application Data) 저장소 디렉토리(Directory)의 타입(Type)을 변경한다. (app_data_file → (2)에서 선정한 타입(Type)) 이 때 'chcon’명령어는 타입(Type)을 매칭(Matching)하는 명령어이다.
(4) 어플리케이션 데이터(Application Data) 저장소 디렉토리(Directory)의 타입(Type)이 변경되었으므로, 설치된 어플리케이션(Application)이 접근할 수 있도록 새로운 접근 정책을 시스템(System)에 추가한다. 새로운 정책 추가는 ‘sepolicy-inject' 도구를 사용하였다. 이 때 ‘sepolicy-inject’도구는 오픈 소스 프로그램으로서, 새로운 정책 추가가 가능한 그 외에 소스 프로그램도 사용이 가능하다.
(5) 새로운 타입(Type) 할당이 정상적으로 처리되면, ‘type_pkg_manage' 파일(File)에 해당 내용을 기록하고, 다시 메모리(Memory)로 로드(Load)한다.
(6) 어플리케이션(Application) 설치 후, (2)~(5)의 과정을 반복한다.
에스이안드로이드 프로세스(SEAndroid Process : Security Enhanced Android Process)에서 ‘chcon' 명령어와 ’sepolicy_inject' 명령어를 수행하기 위해서는 자체적으로 UID(Use ID)가 ‘0’인 루트(Root) 권한 프로세스(Process)이어야 한다. 본 발명에서는 이를 위해 시스템(System) 내 존재하는 ‘healthd'이 에스이안드로이드 프로세스(SEAndroid Process : Security Enhanced Android Process)를 자식으로 생성하도록 소스코드(Sourcecode)를 수정하여 다시 빌드(Build)하였다. 또한 에스이안드로이드 프로세스(SEAndroid Process : Security Enhanced Android Process)의 도메인 타입(Domain Type)은 ’에스이매니저(Se_manager)'로 지정하고, ‘에스이매니저(Se_manager)' 프로세스(Process)를 킬(Kill)하는 등의 영향을 줄 수 없도록 하였다.
도 4를 참조하면, 안드로이드 환경에서의 어플리케이션 데이터 관리 방법은 인식단계(S100), 로드단계(S200), 제1업데이트단계(S300), 반복단계(S400)를 포함하여 구성된다.
인식단계(S100)는 어플리케이션(Application)의 설치를 실시간으로 인식한다.
로드단계(S200)는 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드한다.
제1업데이트단계(S300)는 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 정책파일(sepolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 상기 정책파일(SEpolicyfile)을 업데이트(Update) 한다.
반복단계(S400)는 새로운 어플리케이션(Application)이 설치될 때마다 상기 인식단계 내지 상기 제1업데이트단계를 반복한다.
도 5를 참조하면, 안드로이드 환경에서의 어플리케이션을 삭제할 때에 데이터 관리 방법은 연결해제단계(S700), 제2업데이트단계(S800)를 포함하여 구성된다.
연결해제단계(S700)는 정책파일(SEpolicyfile)을 로드(Load)하고, 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제한다.
제2업데이트단계(S800)는 해제된 정책파일(SEpolicyfile)을 업데이트(Update)한다.
도 6을 참조하면, 안드로이드 환경에서의 어플리케이션 데이터 관리 장치는 인식부(100), 로드부(200), 제1업데이트부(300), 반복부(400)를 포함하여 구성된다.
인식부(100)는 어플리케이션(Application)의 설치를 실시간으로 인식한다.
로드부(200)는 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드한다.
제1업데이트부(300)는 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 정책파일(sepolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 상기 정책파일(SEpolicyfile)을 업데이트(Update) 한다.
반복부(400)는 새로운 어플리케이션(Application)이 설치될 때마다 상기 인식부 내지 상기 제1업데이트부를 반복한다.
도 7을 참조하면, 안드로이드 환경에서의 어플리케이션을 삭제할 때에 데이터 관리 장치는 연결해제부(700), 제2업데이트부(800)를 포함하여 구성된다.
연결해제부(700)는 정책파일(SEpolicyfile)을 로드(Load)하고, 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제한다.
제2업데이트부(800)는 해제된 정책파일(SEpolicyfile)을 업데이트(Update)한다.
도 8 내지 도 10b는 본 발명의 일 실시예를 적용한 후 발생하는 효과와 오버헤드(Overhead)에 관한 것이다. 이는 넥서스(Nexus) 7(2013 Wifi model)에 4.4.4버전(Kitkat)의 안드로이드 플랫폼(Android Platform), 3.4버전의 리눅스 커널(Linux kernel)에서 수행하였다. 사용한 어플리케이션(Application)은 apkpure 웹 사이트(Website)에서 인기 어플리케이션(Application) 100개를 다운로드(Download)하였고, 바이러스 토탈 웹 사이트(Virus total website)에 업로드(Upload)하여 감염되지 않은 어플리케이션(Application)을 사용하였다. 또한 본 발명의 일 실시예의 적용은 특정 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수와 정책 파일(File)인 ‘sepolicy' 파일(File)을 수정해야하기 때문에 boot.img 파일(File)을 다시 수정해서 업로드(Upload)하였다. 이 때 특정 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수를 수정한 이유는 접근 주체를 식별해야하기 때문이다. 안드로이드(Android) 환경에서는 사용자 어플리케이션(Application)의 도메인 타입(Domain Type)이 ’untrusted_app' 하나이기 때문에 정책을 수정하거나, SID(Security ID)를 참조하는 수준에서는 접근 주체를 식별할 수 없다. 따라서 특정 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수 수준에서 UID(User ID)로 접근 주체를 식별하여, 각 어플리케이션(Application)의 저장소 디렉토리(Directory)에 소유자의 어플리케이션(Application)만이 접근할 수 있게 하였다.
그리고 toolbox 명령어를 일부 수정하기 때문에 toolbox 명령어 바이너리(Binary)를 단말기에 재 업로드(Upload)하였다.
도 8을 참조하면, 본 발명의 일 실시예를 적용한 후, 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 접근이 차단되는 것을 보여준다. 본 발명이 적용되기 전에는 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 직접 접근이 가능했지만, 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수 중,‘selinux_dentry_open()' 함수를 수정하여 접근 주체와 접근 경로를 필터링(Filtering)하였다. 특정 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)가 접근되면 접근 주체의 UID(User ID)가 해당 디렉토리(Directory)의 소유자인지를 확인한다. 따라서 도 8에서 접근 주체의 UID(User ID)와 디렉토리(Directory)의 소유자가 다르기 때문에 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 접근할 수 없게 된다.
구체적으로는 접근 객체의 경로가 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)이면 접근 주체의 UID(User ID)와 객체의 UID(User ID)가 동일한가를 확인한다. 따라서 본 발명의 일 실시예를 적용한 후에는 루트(Root) 권한 쉘(Shell)에서 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 접근할 수 없게 된다.
도 9를 참조하면, 본 발명의 일 실시예를 적용한 후, 어플리케이션(Application) 성능 실험 결과를 보여준다. 본 발명은 주로 파일(File) 열기와 관련된 리눅스 훅(LSM Hook : Linux Security Modules Hook) 함수를 수정하였으므로, 파일(File) 처리 관련 성능 오버헤드(Overhead)가 발생할 수 있다. 이 때 파일(File) 처리 관련 오버헤드(Overhead) 실험은 소프트웨그(Softweg) 어플리케이션(Application)으로 진행하였다. 실험 횟수는 성능 테스트(Test)를 100회 반복하고 평균값을 도출하였다.
성능 실험 결과, 본 발명의 일 실시예를 적용한 후, 1,000개 빈 파일(File)을 생성하는데 0.003초의 시간 오버헤드(Overhead)가 발생하였고, 삭제하는데 0.01초의 시간 오버헤드(Overhead)가 발생하였다. 또한 본 발명은 새로운 어플리케이션(Application) 설치마다 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 새로운 타입(Type)을 할당하고, 관련 정책을 추가해야한다. 이는 에스이매니저(SE_manager)에서 발생하는 오버헤드(Overhead)로 주요 발생 요소로는 ‘chcon’명령어로 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)에 새로운 타입(Type)을 할당하는 시간과 새로운 정책 추가에 소요된 시간이다.
도 10a를 참조하면, 'chcon'으로 새로운 타입(Type)을 할당하는데 소요되는 시간에 대한 결과를 나타내며, 도 10b를 참조하면, 새로운 정책 추가에 소요된 시간을 나타낸다. 도 10a의 경우,‘chcon'으로 새로운 타입(Type)을 할당하는 데는 총 100개의 어플리케이션(Application)에 대해 약 0.64초의 시간 오버헤드(Overhead)를 보이며, 평균 6.4밀리초가 소요되었다. 도 10b의 경우, 새로운 정책 추가에 소요된 시간은 총 122.63초이며, 평균 1.23초가 소요된다. 또한 1개 어플리케이션(Application)마다 추가되는 정책의 크기는 60바이트이다.
그 결과 어플리케이션 데이터(Application Data)가 저장된 디렉토리(Directory)의 타입(Type) 할당 시간 오버헤드(Overhead)는 수 밀리초 단위로 크지 않았으나, 새로운 정책 할당에 소요되는 시간이 어플리케이션(Application) 하나당 약 1.23초가 소요되었다. 이는 ‘sepolicy-inject' 도구를 사용함으로써 발생하는 오버헤드(Overhead)이다. 정책 추가 과정은 설치 시 한 번에 국한되어 발생하는 오버헤드(Overhead)이기 때문에 비교적 큰 오버헤드(Overhead)는 아니다.
‘sepolicy-inject' 도구에서 소요되는 시간 오버헤드(Overhead)가 큰 이유는 명령어 사용법 상 한 번의 명령 수행 후 정책 파일(File)을 빌드하고, 다시 로드(Load)를 하기 때문이다. 또한 한 번 명령에 한 줄의 정책만을 삽입할 수 있다. 'sepolicy-inject' 도구 외, 'supolicy' 또한 마찬가지로 기존 시스템(System)에 새로운 정책을 추가할 수 있다. 이 때 'supolicy'는 'sepolicy-inject' 도구와 마찬가지로 오픈 소스 프로그램이다. 'supolicy'는 한 번의 명령어 실행에서 여러 개의 정책을 실행시킬 수 있다. 하지만 본 발명의 일 실시예로서 'supolicy'를 사용하지 않은 이유는 'supolicy' 도구가 'untrusted_app' 도메인 타입(Domain Type)을 지원하지 않기 때문이다. 본 발명의 일 실시예에서는 어플리케이션 데이터(Application Data)가 저장되는 디렉토리(Directory)에 새로운 타입(Type)을 할당하고, 'untrusted_app' 도메인 타입(Domain Type)의 어플리케이션(Application)이 접근할 정책을 추가해야하기 때문에 'supolicy' 대신 'sepolicy_inject'도구를 사용하였다. 이후 여러 정책을 한 번에 하도록 정책 추가 도구를 수정한다면 시간 오버헤드(Overhead)를 단축할 수 있다.
이상에서 본 발명의 바람직한 실시예를 설명하였으나, 본 발명은 다양한 변화와 변경 및 균등물을 사용할 수 있다. 본 발명은 상기 실시예를 적절히 변형하여 동일하게 응용할 수 있음이 명확하다. 따라서 상기 기재 내용은 하기 특허청구범위의 한계에 의해 정해지는 본 발명의 범위를 한정하는 것이 아니다.
100 : 인식부 200 : 로드부
300 : 제1업데이트부 400 : 반복부
700 : 연결해제부 800 : 제2업데이트부

Claims (13)

  1. 안드로이드(Android) 환경에서의 어플리케이션 데이터 관리(Application Data) 방법에 있어서,
    어플리케이션(Application)의 설치를 실시간으로 인식하는 인식단계;
    상기 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드하는 로드단계;
    상기 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 상기 정책파일(SEpolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 상기 정책파일(SEpolicyfile)을 업데이트(Update)하는 제1업데이트단계; 및
    상기 인식단계 내지 제1업데이트단계는 새로운 어플리케이션(Application)이 설치될 때마다 반복하는 반복단계;를 포함하며,
    상기 로드단계의 정책파일(SEpolicyfile)은 'type_pkg_manage'형태의 정책파일(SEpolicyfile)인 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법.
  2. 제 1항에 있어서,
    상기 어플리케이션(Application)을 삭제하는 경우,
    상기 정책파일(SEpolicyfile)을 로드(Load)하고, 상기 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제하는 연결해제단계; 및
    상기 해제된 정책파일(SEpolicyfile)을 업데이트(Update)하는 제2업데이트단계;를 더 포함하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법.
  3. 제 1항에 있어서,
    제1업데이트단계의 매칭(Matching)은,
    타입(Type)을 매칭(Matching)하는 ‘chcon'명령어를 이용하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법.
  4. 제 1항에 있어서,
    제1업데이트단계의 매칭(Matching)은,
    설치한 어플리케이션(Application)이 출력하는 로그캣메세지(Logcatmessage)로부터 어플리케이션(Application)의 설치 완료를 인식한 후, 실행하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법.
  5. 제 4항에 있어서,
    상기 어플리케이션(Application)의 설치 완료는,
    상기 로그캣메세지(Logcatmessage)에서‘PACKAGE_ADDED' 브로드캐스트 메세지(Broadcast Message)를 파싱(Parsing)하여 인식하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 방법.
  6. 삭제
  7. 제 1항에 따른 방법을 수행하기 위한 일련의 명령이 기록된 기록 매체.
  8. 안드로이드(Android) 환경에서의 어플리케이션 데이터 관리(Application Data) 장치에 있어서,
    어플리케이션(Application)의 설치를 실시간으로 인식하는 인식부;
    상기 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 매칭(Matching)되며 이에 따른 접근 규칙을 저장하고 있는 정책파일(SEpolicyfile)을 메모리 내에 로드하는 로드부;
    상기 설치된 어플리케이션(Application)의 디렉토리(Directory) 및 데이터 디렉토리(Data Directory)와 상기 정책파일(SEpolicyfile) 내 어플리케이션(Application)과 연결되지 않는 타입(Type)을 매칭(Matching)하고, 상기 정책파일(SEpolicyfile)을 업데이트(Update)하는 제1업데이트부; 및
    상기 인식부 내지 제1업데이트부는 새로운 어플리케이션(Application)이 설치될 때마다 반복하는 반복부;를 포함하며,
    상기 로드되는 정책파일(SEpolicyfile)은 ‘type_pkg_manage'형태의 정책파일(SEpolicyfile)인 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 장치.
  9. 제 8항에 있어서,
    상기 어플리케이션(Application)을 삭제하는 경우,
    상기 정책파일(SEpolicyfile)을 로드(Load)하고, 상기 삭제 어플리케이션(Application)의 데이터(Data)와 매칭(Matching)된 타입(Type)의 연결을 해제하는 연결해제부; 및
    상기 해제된 정책파일(SEpolicyfile)을 업데이트(Update)하는 제2업데이트부;를 더 포함하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 장치.
  10. 제 8항에 있어서,
    제1업데이트부의 매칭(Matching)은,
    타입(Type)을 매칭(Matching)하는 ‘chcon'명령어를 이용하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 장치.
  11. 제 8항에 있어서,
    제1업데이트부의 매칭(Matching)은,
    설치한 어플리케이션(Application)이 출력하는 로그캣메세지(Logcatmessage)로부터 어플리케이션(Application)의 설치 완료를 인식한 후, 실행하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 장치.
  12. 제 11항에 있어서,
    상기 어플리케이션(Application)의 설치 완료는,
    상기 로그캣메세지(Logcatmessage)에서‘PACKAGE_ADDED' 브로드캐스트 메세지(Broadcast Message)를 파싱(Parsing)하여 인식하는 것을 특징으로 하는 안드로이드 환경에서의 어플리케이션 데이터 관리 장치.
  13. 삭제
KR1020160169867A 2016-12-13 2016-12-13 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치 KR101862382B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160169867A KR101862382B1 (ko) 2016-12-13 2016-12-13 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160169867A KR101862382B1 (ko) 2016-12-13 2016-12-13 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101862382B1 true KR101862382B1 (ko) 2018-06-29

Family

ID=62780960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160169867A KR101862382B1 (ko) 2016-12-13 2016-12-13 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101862382B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084494A (zh) * 2020-09-21 2020-12-15 百度在线网络技术(北京)有限公司 敏感信息检测方法、装置、设备以及存储介质
US12105814B2 (en) 2020-12-11 2024-10-01 Samsung Electronics Co., Ltd. Electronic device for providing privacy services

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005063259A (ja) * 2003-08-18 2005-03-10 Canon Inc アプリケーションの共用ファイル制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005063259A (ja) * 2003-08-18 2005-03-10 Canon Inc アプリケーションの共用ファイル制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112084494A (zh) * 2020-09-21 2020-12-15 百度在线网络技术(北京)有限公司 敏感信息检测方法、装置、设备以及存储介质
US12105814B2 (en) 2020-12-11 2024-10-01 Samsung Electronics Co., Ltd. Electronic device for providing privacy services

Similar Documents

Publication Publication Date Title
US11055438B2 (en) Methods for restricting resources used by a program based on entitlements
Zhang et al. Efficient, context-aware privacy leakage confinement for android applications without firmware modding
WO2015124018A1 (zh) 基于智能终端设备的应用程序访问方法与装置
WO2015124017A1 (zh) 基于智能终端设备安装应用程序的方法与装置
CN103559446A (zh) 一种基于安卓系统的设备的动态病毒检测方法和装置
CN109255235B (zh) 基于用户态沙箱的移动应用第三方库隔离方法
CN110325994B (zh) 增强软件应用的控制流完整性的设备和方法
US11861364B2 (en) Circular shadow stack in audit mode
CN115185534A (zh) 一种数据脱敏方法、装置、可读存储介质以及电子设备
CN106411814B (zh) 一种策略管理方法及系统
KR101862382B1 (ko) 안드로이드 환경에서의 어플리케이션 데이터 관리 방법 및 장치
CN108985096B (zh) 一种Android SQLite数据库安全增强、安全操作方法以及装置
US20230195884A1 (en) Method for securing a system call, method for implementing an associated security policy and devices for carrying out such methods
CN112613011B (zh) U盘系统认证方法、装置、电子设备及存储介质
US20210303681A1 (en) Shadow stack enforcement range for dynamic code
CN107818260B (zh) 保障系统安全的方法及装置
WO2018023368A1 (en) Enhanced security using scripting language-based hypervisor
CN109657458B (zh) Ios中保护钥匙串数据的方法、存储介质、设备及系统
CN107392010B (zh) 执行Root操作的方法及装置、终端设备、存储介质
CN115495343A (zh) 一种安全维护方法、装置、存储介质及电子设备
CN112889045B (zh) 虚拟函数指针验证设备及方法
CN109783156B (zh) 一种应用的启动控制方法及装置
CN109597662B (zh) 移动终端中非公开库的调用方法、装置及电子设备
Singh et al. Discovering persuaded risk of permission in android applications for malicious application detection
Lee et al. Is your android app insecure? patching security functions with dynamic policy based on a java reflection technique

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant