KR102235556B1 - 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR102235556B1
KR102235556B1 KR1020200027118A KR20200027118A KR102235556B1 KR 102235556 B1 KR102235556 B1 KR 102235556B1 KR 1020200027118 A KR1020200027118 A KR 1020200027118A KR 20200027118 A KR20200027118 A KR 20200027118A KR 102235556 B1 KR102235556 B1 KR 102235556B1
Authority
KR
South Korea
Prior art keywords
android
container
secure container
application
virtual machine
Prior art date
Application number
KR1020200027118A
Other languages
English (en)
Other versions
KR102235556B9 (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 숭실대학교산학협력단
Priority to PCT/KR2020/017016 priority Critical patent/WO2021118125A1/ko
Priority to US17/784,483 priority patent/US20220405385A1/en
Application granted granted Critical
Publication of KR102235556B1 publication Critical patent/KR102235556B1/ko
Publication of KR102235556B9 publication Critical patent/KR102235556B9/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
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Abstract

본 발명은 기존 보안 컨테이너 기술과 비교하여 빠른 퍼포먼스를 보여주면서도 루트 권한 없이 어플리케이션 레벨에서 컨테이너 호출이 가능하여 안드로이드 프레임워크를 침범하지 않고 구현될 수 있는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.

Description

안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체{DEVICE AND METHOD FOR CONSTRUCTING SECURE CONTAINERS EXECUTABLE BY ANDROID APPLICATIONS, AND COMPUTER-READABLE RECORD MEDIUM STORING PROGRAM THEREFOR}
본 발명은 기존 보안 컨테이너 기술과 비교하여 빠른 퍼포먼스를 보여주면서도 루트 권한 없이 어플리케이션 레벨에서 컨테이너 호출이 가능하여 안드로이드 프레임워크를 침범하지 않고 구현될 수 있는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 관한 것이다.
컨테이너 기술은 가상머신과 유사하지만 격리 기술을 간소화하여 호스트 운영체제와 커널을 공유할 수 있다. 이로 인해 기존의 가상머신보다 빠르고 가벼운 기술로서 많은 관심을 받고 있다.
현재 컨테이너 구현 도구인 도커(docker)와 컨테이너 관리 도구인 쿠버네티스(Kubernetes) 등의 기술은 클라우드 환경에서 주목받고 있는 기술로서 많은 기업에 의해 활용되고 있다.
이러한 컨테이너는 운영체제와 커널을 공유하는데 컨테이너가 호스트 운영체제와 커널을 공유한다는 것은 많은 오버헤드를 줄일 수 있는 장점이 있는 반면 다양한 취약점도 존재한다.
예컨대, 호스트 커널에 취약점이 있으면 컨테이너 내부에서 그 취약점을 이용하여 권한 상승을 이룰 수 있으며, 이는 컨테이너 제어권 외에 호스트 운영체제에도 영향을 미칠 수 있다.
또한, 호스트 운영체제에서 컨테이너는 하나의 프로세스로 구동이 된다. 따라서 컨테이너 내부에서 기밀성이 필요한 작업을 수행하는 경우에는 호스트 운영체제로부터의 접근을 제한할 수 있는 별도의 방법이 요구된다.
이에 비해 가상머신은 위 컨테이너 기술보다는 안전한 환경을 구현할 수 있지만 가상 CPU나 가상 메모리를 비롯하여 모든 시스템을 가상화하여 실행시키는 방법을 채택하기 때문에 무겁고 오버헤드가 크다는 단점을 가진다.
한편, 위와 같이 종래의 컨테이너 기술이나 가상머신 기술이 갖는 문제점들을 해결하기 위하여 경량화된 가상머신을 이용한 보안 컨테이너(secure container)의 개념이 등장 하였다.
보안 컨테이너는 경량화된 가상머신을 이용하여 격리환경을 구축하고 가상머신의 안전성을 상속받을 수 있다. 또한 가상머신 내부의 운영체제를 간소화하고 사용할 라이브러리와 어플리케이션만을 실행하여 오버헤드를 줄일 수 있다.
하지만 아직까지 안드로이드 환경에서는 사용자에게 안드로이드 어플리케이션 레벨에서 직접 호출하여 보안 컨테이너를 활용할 수 있는 안드로이드 프레임워크를 제공하지 못하고 있다.
안드로이드 프레임워크는 안드로이드 어플리케이션이 리눅스 커널 모듈에서 제공하는 기능을 직접적으로 사용할 수 있도록 허용하지 않으며, 안드로이드의 모든 어플리케이션들은 샌드박싱 되어있기 때문이다.
또한, 각 프로세스간의 통신은 안드로이드에서 제공하는 통신 디바이스인 바인더(binder)를 활용해야 하는데, 이는 안드로이드 어플리케이션이 보안 컨테이너를 직접적으로 실행시킬 수 없는 원인이 된다.
대한민국 등록특허 제10-1857009호 대한민국 등록특허 제10-1997061호
본 발명은 전술한 바와 같은 문제점을 해결하기 위한 것으로, 기존 보안 컨테이너 기술과 비교하여 빠른 퍼포먼스를 보여주면서도 루트 권한 없이 어플리케이션 레벨에서 컨테이너 호출 가능하여 안드로이드 프레임워크를 침범하지 않고 구현될 수 있는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공하고자 한다.
이를 위해, 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치는 안드로이드 디바이스에 설치되며,가상화 환경을 지원하는 리눅스 커널 모듈을 안드로이드 커널에 생성하는 리눅스 커널 생성부와; 상기 리눅스 커널 모듈에 접근 권한을 갖는 안드로이드 서비스 모듈을 안드로이드 프레임워크에 생성하는 컨테이너 서비스 생성부; 및 안드로이드 어플리케이션의 명령을 전달받아 상기 안드로이드 서비스 모듈에 보안 컨테이너의 생성을 요청하는 어플리케이션 명령 처리부;를 포함하여, 상기 보안 컨테이너 생성 요청에 따라 상기 리눅스 커널 모듈에 의해 보안 컨테이너가 생성되는 것을 특징으로 한다.
이때, 상기 보안 컨테이너에 의해 상기 보안 컨테이너와 안드로이드 서비스 모듈간 통신 기능이 구축되고, 상기 안드로이드 서비스 모듈에 의해 상기 안드로이드 어플리케이션과 보안 컨테이너간 통신 기능이 구축되는 것이 바람직하다.
또한, 상기 보안 컨테이너와 연결된 콘솔을 각 어플리케이션들에게 제공해주는 프록시를 더 포함하는 것이 바람직하다.
또한, 상기 리눅스 커널 모듈은 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈인 KVM인 것이 바람직하다.
또한, 상기 KVM은 ARM 환경에서 제공하는 하이퍼바이져 모드를 통해 하드웨어 레벨에서 각 가상머신을 위한 가상화가 이루어지는 것이 바람직하다.
또한, 상기 KVM은 lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행하는 것이 바람직하다.
또한, 상기 보안 컨테이너는 상기 보안 컨테이너에서 사용되는 커널로서 마이크로 커널을 포함하되, 상기 보안 컨테이너를 위해 사용될 루트 파일 시스템으로 busybox 기반의 미니멈 루트 파일 시스템이 구현되는 것이 바람직하다.
한편, 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법은 안드로이드 디바이스의 메모리에 저장되어 프로세서에 의해 실행되며, 리눅스 커널 생성부에서 가상화 환경을 지원하는 리눅스 커널 모듈을 안드로이드 커널에 생성하는 가상머신 생성단계와; 컨테이너 서비스 생성부에서 상기 리눅스 커널 모듈에 접근 권한을 갖는 안드로이드 서비스 모듈을 안드로이드 프레임워크에 생성하는 시스템 서비스 생성단계와; 어플리케이션 명령 처리부에서 안드로이드 어플리케이션의 명령을 전달받아 상기 안드로이드 서비스 모듈에 보안 컨테이너의 생성을 요청하는 컨테이너 생성 요청단계; 및 상기 리눅스 커널 모듈에서 상기 안드로이드 서비스 모듈을 통해 생성 요청을 받아 보안 컨테이너를 생성하는 보안 컨테이너 생성단계;를 포함하는 것을 특징으로 한다.
이때, 상기 보안 컨테이너에 의해 상기 보안 컨테이너와 안드로이드 서비스 모듈간 통신 기능을 구축하는 제1 연결단계; 및 상기 안드로이드 서비스 모듈에 의해 상기 안드로이드 어플리케이션과 보안 컨테이너간 통신 기능을 구축하는 제2 연결단계;를 더 포함하는 것이 바람직하다.
또한, 상기 컨테이너 서비스 생성부에서 상기 보안 컨테이너와 연결된 콘솔을 각 어플리케이션들에게 제공하는 프록시 단계를 더 포함하는 것이 바람직하다.
또한, 상기 가상머신 생성단계는 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈인 KVM을 구축하는 단계인 것이 바람직하다.
또한, 상기 가상머신 생성단계에서 ARM 환경에서 제공하는 하이퍼바이져 모드를 통해 하드웨어 레벨에서 각 가상머신을 위한 가상화가 이루어지는 것이 바람직하다.
또한, 상기 가상머신 생성단계에서 상기 KVM의 활용하기 위해 lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행하는 것이 바람직하다.
또한, 상기 보안 컨테이너 생성단계에서는 상기 보안 컨테이너에서 사용될 커널로서 마이크로 커널이 함께 생성되되, 상기 보안 컨테이너를 위해 사용될 루트 파일 시스템으로 busybox 기반의 미니멈 루트 파일 시스템이 구현되는 것이 바람직하다.
나아가, 본 발명에 따른 컴퓨터로 판독 가능한 기록 매체는 이상과 같은 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 것을 특징으로 한다.
이상과 같은 본 발명은 기존 보안 컨테이너 기술과 비교하여 빠른 퍼포먼스를 보여주면서도 루트 권한 없이 어플리케이션 레벨에서 직접 컨테이너 호출이 가능하여 안드로이드 프레임워크를 침범하지 않고 보안 컨테이너를 구현한다.
따라서, 어플리케이션 레벨에서 보안 컨테이너를 활용할 수 있는 환경을 제공하고, 어플리케이션들은 루팅이나 관리자 권한 없이 보안 컨테이너를 실행 및 종료하고 특정 커맨드를 보안 컨테이너 내부에서 실행시킬 수 있게 한다.
도 1은 본 발명에 따른 보안 컨테이너 구축 장치가 적용되는 안드로이드 디바이스를 나타낸 도이다.
도 2는 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치를 나타낸 구성도이다.
도 3은 본 발명에 따라 안드로이드 환경에서 구현된 보안 컨테이너 생성 아키텍쳐를 나타낸 도이다.
도 4는 본 발명에 따른 구축된 보안 컨테이너의 성능 특징을 나타낸 도이다.
도 5는 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법을 나타낸 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체에 대해 상세히 설명한다.
도 1과 같이, 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치(20)는 안드로이드 디바이스(10)에 탑재되어 실행된다. 안드로이드 디바이스(10)는 안드로이드 운영체제(Operation System; OS)를 사용하는 단말장치를 포함한다.
이러한 안드로이드 단말장치는 모바일 장치를 포함할 수 있다. 모바일 장치는 무선 통신이 가능한 장치로서 스마트 폰, 태블릿 컴퓨터, 노트북, 넷북, PDA, PMP, PSP, MP3 플레이어, ebook 리더기, 내비게이션, 스마트 카메라, 전자사전, 전자시계, 게임기 등 다양한 형태의 모바일 장치를 포함한다.
또한, 모바일 장치는 이동성을 가지는 디바이스(device), 기구(apparatus), 단말(terminal), UE(user-equipment), MS(mobile station), 무선기기(wireless device), 휴대기기(handheld device) 등 다른 용어로 불릴 수 있으며 안드로이드를 기반으로 다양한 응용 프로그램을 실행시킨다.
응용 프로그램은 모바일 장치를 이용하여 특정한 작업을 수행할 수 있도록 개발된 프로그램으로서 각종 어플리케이션, 소프트웨어 툴, 프로세스 및 서비스 객체뿐 아니라 게임, 동영상, 사진과 같은 멀티미디어 컨텐츠 및 상기 멀티미디어 컨텐츠를 실행하는 뷰어나 재생기 등의 실행 프로그램을 모두 포함할 수 있다.
도 2와 같이, 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치(20)는 리눅스 커널 생성부(21), 컨테이너 서비스 생성부(22) 및 어플리케이션 명령 처리부(23)를 포함한다.
여기서, 리눅스 커널 생성부(21)는 안드로이드 커널에 리눅스 커널 모듈(11)을 생성시키고, 컨테이너 서비스 생성부(22)는 안드로이드 프레임워크에 안드로이드 서비스 모듈(12)을 생성시킨다. 어플리케이션 명령 처리부(23)는 안드로이드 어플리케이션의 명령에 따라 컨테이너 생성 요청을 한다.
위와 같은 본 발명의 구성들은 프로세서(25)에 의해 처리 가능한 프로그램에 의해 구현될 수 있다. 따라서, 메모리(24) 및 프로세서(25)를 더 포함하도록 구성되거나 혹은 이들과 연동되어 프로세스 자원을 이용할 수도 있다. 네트워크 인터페이스(26)는 외부 단말과 통신하는 것으로 프로그램 다운로드에 이용될 수 있다.
도 3에는 본 발명에 따라 안드로이드 환경에서 구현된 보안 컨테이너 생성 아키텍쳐가 도시되어 있다.
도시된 바와 같이, 본 발명에 의하면 안드로이드 디바이스(10)에 어플리케이션 레벨에서 실행 가능한 보안 컨테이너 환경이 구현된다.
안드로이드 디바이스(10)에 구축되는 안드로이드 보안 컨테이너 환경은 리눅스 커널 모듈(11), 안드로이드 서비스 모듈(12), 안드로이드 어플리케이션(13) 및 보안 컨테이너(14)를 포함한다.
여기서, 리눅스 커널 모듈(11)은 가상화 환경을 이용하여 보안 컨테이너(14)를 생성하고, 안드로이드 서비스 모듈(12)은 리눅스 운영체제와는 다른 안드로이드 환경에서의 구동을 위해 안드로이드 프레임워크에 포함되도록 구축된다.
안드로이드 어플리케이션(13)은 안드로이드 서비스 모듈(12)을 통해 리눅스 커널 모듈(11)에 컨테이너의 생성을 요청하고, 보안 컨테이너(14) 생성 후에는 구축된 통신 기능을 이용하여 직접 보안 컨테이너(14)와 통신한다.
이러한 본 발명은 안드로이드 환경에서 보안 컨테이너(14)를 구축할 수 있게 한다. 또한, 빠른 퍼포먼스를 보여주면서도 어플리케이션 레벨에서 호출이 가능하여 안드로이드 프레임워크를 침범하지 않고 보안 컨테이너(14)를 구현한다.
따라서, 어플리케이션 레벨에서 보안 컨테이너(14)를 활용할 수 있는 환경을 제공하고, 어플리케이션들은 루팅이나 관리자 권한 없이 보안 컨테이너(14)를 실행 및 종료하고 특정 커맨드를 보안 컨테이너(14) 내부에서 실행시킬 수 있게 된다.
이를 위해, 상기한 리눅스 커널 생성부(21)는 안드로이드 OS의 하위 레벨에 있는 안드로이드 커널(Android Kernel)에 리눅스 커널 모듈(11)을 생성한다. 리눅스 커널 모듈(11)은 가상화 환경을 지원하도록 가상화 모듈로 구현된다.
바람직한 예로, 리눅스 커널 모듈(11)은 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈(11)인 KVM(Kernel-based Virtual Machine)이며, KVM(11)이 안드로이드 환경의 안드로이드 커널에 구축된다.
안드로이드 커널은 리눅스 커널로부터 파생되어 개발되었기 때문에 리눅스 커널에서 제공하는 기능들을 활용할 수 있다. 따라서, KVM(11)을 안드로이드 커널에 적용하면 가상화 환경을 위한 vcpu 및 vmem 등을 지원할 수 있게 된다.
또한, 일 예로 ARM 환경에서 제공되는 하이퍼바이져 모드(HYP mode)를 이용하면 하드웨어 레벨에서 가상머신을 위한 가상화가 가능하다. 예컨대, 가상머신을 위한 시스템 버스 가상화 및 CPU 인터럽트 가상화를 제공할 수 있게 된다.
안드로이드 커널에 설정된 KVM의 활용도를 위해 바람직하게는 lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행한다.
따라서, 클라우드 서버와 비교하여 비교적 낮은 성능을 가진 모바일 디바이스(단말장치)의 환경에 최적화되도록 경량 가상머신 환경을 제공하면서도 퍼포먼스가 빠른 커널을 구축할 수 있게 된다.
컨테이너 서비스 생성부(22)는 리눅스 커널 모듈(11)에 대한 접근 권한을 갖도록 안드로이드 서비스 모듈(12)을 안드로이드 프레임워크에 포함되도록 구축한다. 따라서 안드로이드 어플리케이션(13)이 안드로이드 서비스 모듈(12)을 통해 리눅스 커널 모듈(11)에 접근할 수 있게 한다.
일반적인 안드로이드 프레임워크는 안드로이드 어플리케이션(13)이 리눅스 커널 모듈(11)에서 제공하는 기능을 직접적으로 사용하는 것을 허용하지 않는다. 또한, 안드로이드의 모든 어플리케이션들은 샌드박싱 되어 있다.
이런 이유로 종래의 안드로이드 프로세스간 통신은 통신 디바이스인 Binder에 의존했으며, 안드로이드 어플리케이션(13)에서 Binder를 통하여 컨테이너를 실행시키기 위해서는 해당 서비스를 Binder에 등록시켜야 하는 제한이 있다.
반면, 본 발명은 컨테이너 서비스 생성부(22)에 의해 안드로이드 서비스 모듈(12)을 안드로이드 프레임워크에 구축함으로서 리눅스 커널 모듈(11)에 접근 가능하게 하며, 어플리케이션 레벨에서 보안 컨테이너(14)를 생성할 수 있게 한다.
이와 같이 생성된 안드로이드 서비스 모듈(12)은 기존의 리눅스 운영체제와 다른 안드로이드 환경을 고려하여 안드로이드 프레임워크에 포함될 수 있는 시스템 서비스 형식으로 추가된 것이다.
이때, 안드로이드 서비스 모듈(12)은 보안 컨테이너(14)를 만들기 위해 ARM기반 경량의 가상머신 환경 구축 도구에 대한 접근 권한을 가지며, 안드로이드 어플리케이션(13)의 요청에 따라 보안 컨테이너(14)를 생성 및 제거할 수 있다.
다만, 본 발명은 보안 컨테이너(14)와 연결된 콘솔을 각 어플리케이션들에게 제공해주는 프록시를 더 포함하는 것이 바람직한데, 일 예로 안드로이드 서비스 모듈(12)에서 프록시 역할까지 수행할 수 있다.
어플리케이션 명령 처리부(23)는 안드로이드 어플리케이션(13)의 명령을 전달받아 이를 실행한다. 예컨대, 안드로이드 어플리케이션(13)의 실행에 의해 호출된 어플리케이션 명령 처리부(23)는 그 명령을 처리한다.
안드로이드 어플리케이션(13)은 어플리케이션 레벨에서 구현 및 실행되는 여러 어플리케이션들을 포함하는 것으로, 특히 본 발명에서의 안드로이드 어플리케이션(13)은 안드로이드 서비스 모듈(12)에 보안 컨테이너(14)의 생성을 요청한다.
이를 위해 어플리케이션 명령 처리부(23)는 안드로이드 어플리케이션(13)으로부터의 컨테이너 생성 요청에 따라 안드로이드 서비스 모듈(12)에 접속하여 컨테이너 생성 명령을 전달한다.
따라서, 안드로이드 어플리케이션(13)에 루트 권한이 없어도 어플리케이션 레벨에서 호출이 가능하며, 안드로이드 프레임워크를 침범하지 않고 보안 컨테이너(14)를 구현할 수 있게 한다.
보안 컨테이너(14)는 가상 머신의 보안성과 컨테이너 기술의 퍼포먼스를 모두 충족시켜 줄 수 있는 새로운 가상 환경 구축 기술로서, 안드로이드 어플리케이션(13)에서의 생성 요청시 리눅스 커널 모듈(11)에 의해 생성된다.
바람직한 실시예로 보안 컨테이너(14)는 해당 보안 컨테이너(14)에서 사용되는 커널로서 마이크로 커널(micro kernel)을 포함한다. 보안 컨테이너(14)의 마이크로 커널로는 일 예로 지르콘 커널(Zircon kernel)을 사용한다.
지르콘 커널은 임베디드 디바이스에 적용되는 Google Fuchsia OS를 위해 개발된 커널로서 기본적인 스케쥴링 및 시스템콜들을 제공해주는 장점이 있다. 또한 워치에서 데스크탑까지 각종 장치의 여러 앱에서 동작이 가능한 장점이 있다.
본 발명에서는 위와 같은 보안 컨테이너(14)를 위해 사용될 루트 파일 시스템으로 비지박스(busybox) 기반의 미니멈 루트 파일 시스템(minimum root file system)이 구현되는 것이 바람직하다.
이 루트 파일 시스템은 리눅스 운영체제에서 활용하는 데몬이나 추가 서비스들 없이 기본 명령어만을 제공하는 busybox를 제공한다. 이후 docker 컨테이너 이미지처럼 base root file system을 기반으로 보안 컨테이너(14) 안에서 실행될 어플리케이션과 라이브러리들을 통합하여 컨테이너를 실행시킨다.
한편, 위와 같이 보안 컨테이너(14)가 생성된 이후에는 단말장치 내부의 보안 컨테이너(14)와 안드로이드 서비스 사이 및/또는 보안 컨테이너(14)와 안드로이드 어플리케이션(13) 사이에 데이터 통신을 연결한다.
이를 위해 보안 컨테이너(14)는 보안 컨테이너(14)와 안드로이드 서비스 모듈(12)간 통신 기능을 구축하고, 안드로이드 서비스 모듈(12)은 안드로이드 어플리케이션(13)과 보안 컨테이너(14)간 통신 기능을 구축한다.
따라서, 안드로이드 어플리케이션(13)은 직접 보안 컨테이너(14)를 이용할 수 있게 되어 루팅이나 관리자 권한 없이 보안 컨테이너(14)를 실행 및 종료하고 특정 커맨드를 보안 컨테이너(14) 내부에서 실행시킬 수 있게 한다.
다만, 필요에 따라서는 보안 컨테이너(14) 및/또는 안드로이드 서비스 모듈(12) 대신 컨테이너 서비스 생성부(22)에서 위와 같은 통신 기능을 구축할 수도 있으며, 이를 통해 실질적으로 동일한 기능을 제공할 수도 있다.
이상에서 본 발명에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치에 대해 설명하였다.
위에서 살펴본 바와 같이, 보안 컨테이너(14)의 활용이 가능한 안드로이드 프레임워크는 안드로이드에서 구동되는 어플리케이션(13)의 레벨에서 보안 컨테이너(14)를 생성하는 환경을 제공한다.
나아가, 도 4와 같이 본 발명은 기존 보안 컨테이너 관리 툴과 비교하여 더욱 빠른 속도를 보여준다.
본 발명의 보안 컨테이너(14)는 Hikey960 디바이스(4*Cortex A73 + 4*Cortex A53 Big.Little CPU architecture, 4GB LPDDR4 DRAM, 32GB UFS flash, Android 9.0) 환경에 구축된 후 안드로이드 어플리케이션 레벨에서 측정되었다.
기존 보안 컨테이너 기술인 Kata container의 경우 Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, 16GB RAM, Ubuntu 16.04 환경에서 수행되었다. 테스트에 사용된 이미지는 busybox 이미지를 활용하였으며 각 환경에서 sha1sum 값을 수행하는 동작에 대하여 소요시간을 산출하였다.
소요시간은 어플리케이션 레벨에서 호출 이전 타임스탬프를 기록하고 호출 이후 타임스탬프를 기록하여 계산하였으며, 각 환경에서 10회 반복수행을 통하여 산출된 소요시간의 평균값과 특징을 보여준다.
Native의 경우 리눅스 환경에서 보안 컨테이너 없이 동일한 작업을 수행한 경우 걸리는 소요시간을 나타내었으며, 매우 짧은 작업을 사용하여 각 보안 컨테이너가 가지는 오버헤드를 산출하였다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예에 따른 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법에 대해 설명한다.
다만, 이하에서 설명할 본 발명의 보안 컨테이너 구축 방법은 위에서 도 3을 참조하여 설명한 안드로이드 운영체제 아키텍쳐를 위한 것이므로 가급적 중복적인 설명은 생략한다.
도 5와 같이 본 발명의 보안 컨테이너 구축 방법은 가상머신 생성단계(S11), 시스템 서비스 생성단계(S12), 컨테이너 생성 요청단계(S13) 및 보안 컨테이너 생성단계(S14)를 포함한다. 나아가 보안 컨테이너(14) 생성 이후에는 모듈간 통신 기능을 구축하는 연결단계(S15: S15-1, S15-2)를 포함한다.
이러한 본 발명은 안드로이드 디바이스(10)에서 실행될 수 있다. 안드로이드 디바이스(10)는 스마트폰과 같이 컴퓨팅 기능이 탑재된 모바일 단말기가 대표적이며 이에 대해서는 위에서 이미 설명하였다.
여기서, 가상머신 생성단계(S11)에서는 가상화 환경을 이용하여 보안 컨테이너(14)를 생성하고, 시스템 서비스 생성단계(S12)에서는 안드로이드 환경에서 구동이 가능하도록 안드로이드 프레임워크에 시스템 서비스를 구축한다.
컨테이너 생성 요청단계(S13)에서는 안드로이드 어플리케이션(13)이 안드로이드 서비스 모듈(12)을 통해 리눅스 커널 모듈(11)에 컨테이너의 생성을 요청한다. 따라서, 보안 컨테이너 생성단계(S14)에서 보안 컨테이너(14)가 생성된다. 보안 컨테이너(14) 생성 후에는 모듈간 통신 기능을 구축한다.
이러한 본 발명은 안드로이드 환경에서 보안 컨테이너(14)를 구축한다. 또한, 빠른 퍼포먼스를 보여주면서도 어플리케이션 레벨에서 호출이 가능하여 안드로이드 프레임워크를 침범하지 않고 보안 컨테이너(14)를 구현한다.
따라서, 어플리케이션 레벨에서 보안 컨테이너(14)를 활용할 수 있는 환경을 제공하고, 어플리케이션들은 루팅이나 관리자 권한 없이 보안 컨테이너(14)를 실행 및 종료하고 특정 커맨드를 보안 컨테이너(14) 내부에서 실행시킬 수 있게 된다.
이를 위해, 상기 가상머신 생성단계(S11)에서는 안드로이드 OS의 하위 레벨에 있는 안드로이드 커널에 가상화 환경을 지원하는 리눅스 커널 모듈(11)을 생성한다. 이러한 리눅스 커널 모듈(11)은 리눅스 커널 생성부(21)에 의해 생성된다.
바람직한 예로, 리눅스 커널 모듈(11)은 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈(11)인 KVM(Kernel-based Virtual Machine)을 구축한다. 즉, KVM(11)을 안드로이드 환경의 안드로이드 커널에 구축한다.
안드로이드 커널은 리눅스 커널로부터 파생되어 개발되었기 때문에 리눅스 커널에서 제공하는 기능들을 활용할 수 있다. 따라서, KVM을 안드로이드 커널에 적용하여 가상화 환경인 vcpu 및 vmem 등을 지원할 수 있게 된다.
또한, ARM 환경에서 제공되는 하이퍼바이져 모드(HYP mode)를 이용하면 하드웨어 레벨에서 가상머신을 위한 가상화가 가능하다. 예컨대, 가상머신을 위한 시스템 버스 가상화 및 CPU 인터럽트 가상화를 제공할 수 있게 된다.
또한, 안드로이드 커널에 설정된 KVM의 활용도를 위해 바람직하게는 lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행한다.
따라서, 클라우드 서버와 비교하여 비교적 낮은 성능을 가진 모바일 디바이스의 환경에 최적화되도록 경량 가상머신 환경을 제공하면서도 퍼포먼스가 빠른 커널을 구축할 수 있게 된다.
다음, 시스템 서비스 생성단계(S12)에서는 안드로이드 프레임워크에 포함됨에 따라 리눅스 커널 모듈(11)에 접근 권한을 갖는 안드로이드 서비스 모듈(12)을 생성한다. 안드로이드 서비스 모듈(12)은 컨테이너 서비스 생성부(22)에 의해 생성된다.
안드로이드 서비스 모듈(12)은 안드로이드 프레임워크에 포함되도록 구축됨에 따라 리눅스 커널 모듈(11)에 접근 권한을 갖게 된다. 따라서, 안드로이드 어플리케이션(13)은 안드로이드 서비스 모듈(12)을 통해 리눅스 커널 모듈(11)에 접근할 수 있게 된다.
일반적으로 안드로이드 프레임워크는 안드로이드 어플리케이션(13)이 리눅스 커널 모듈(11)에서 제공하는 기능을 직접적으로 사용하는 것을 허용하지 않는다. 또한, 안드로이드의 모든 어플리케이션들은 샌드박싱 되어 있다.
이런 이유로 종래의 안드로이드 프로세스간 통신은 통신 디바이스인 Binder에 의존했으며, 안드로이드 어플리케이션(13)에서 Binder를 통하여 컨테이너를 실행시키기 위해서는 해당 서비스를 Binder에 등록시켜야 하는 제한이 있다.
반면, 본 발명은 안드로이드 프레임워크에 안드로이드 서비스 모듈(12)을 구축하여 리눅스 커널 모듈(11)에 대한 접근성을 보장함으로써, 안드로이드 어플리케이션(13)이 보안 컨테이너(14)의 생성 또는 제거할 수 있게 한다.
이와 같이 안드로이드 서비스 모듈(12)은 기존의 리눅스 운영체제와 다른 안드로이드 환경을 고려하여 안드로이드 프레임워크에 포함될 수 있는 시스템 서비스 형식으로 추가적으로 구현된다.
따라서, 안드로이드 서비스 모듈(12)은 보안 컨테이너(14)를 만들기 위해 ARM기반 경량의 가상머신 환경 구축 도구에 대한 접근 권한을 가지며, 어플리케이션 레벨에서 보안 컨테이너(14)를 생성/제거할 수 있게 된다.
다만, 본 발명은 보안 컨테이너(14)와 연결된 콘솔을 각 어플리케이션들에게 제공해주는 프록시 단계를 더 포함한다. 프록시 단계는 보안 컨테이너(14)의 생성 후 가능하며, 컨테이너 서비스 생성부(22)나 그에 의해 생성된 안드로이드 서비스 모듈(12)에서 수행할 수 있다.
다음, 컨테이너 생성 요청단계(S13)에서는 안드로이드 어플리케이션(13)에서 안드로이드 서비스 모듈(12)로 컨테이너의 생성을 요청한다. 이러한 안드로이드 어플리케이션(13)의 명령은 어플리케이션 명령 처리부(23)에서 전달받아 처리한다.
예컨대, 안드로이드 어플리케이션(13)의 실행에 의해 호출된 어플리케이션 명령 처리부(23)는 컨테이너 생성 명령을 전달받고, 이를 안드로이드 서비스 모듈(12)로 전달한다.
안드로이드 어플리케이션(13)은 어플리케이션 레벨에서 구현 및 실행되는 여러 어플리케이션을 포함하는 것으로, 특히 안드로이드 어플리케이션(13)은 안드로이드 서비스 모듈(12)에 보안 컨테이너(14)의 생성을 요청한다.
구체적으로 호출된 어플리케이션 명령 처리부(23)에서 안드로이드 서비스 모듈(12)로 컨테이너 생성을 요청하면, 리눅스 커널 모듈(11)에 접근 권한을 안드로이드 서비스 모듈(12)은 해당 리눅스 커널 모듈(11)에 컨테이너 생성을 요청한다.
따라서, 안드로이드 어플리케이션(13)에 루트 권한이 없어도 어플리케이션 레벨에서 호출이 가능하며, 안드로이드 프레임워크를 침범하지 않고 보안 컨테이너(14)를 구현할 수 있게 한다.
다음, 보안 컨테이너 생성단계(S14)에서는 안드로이드 서비스 모듈(12)을 통해 생성 요청을 받은 리눅스 커널 모듈(11)에서 보안 컨테이너(14)를 생성한다.
보안 컨테이너(14)는 가상 머신의 보안성과 컨테이너 기술의 퍼포먼스를 모두 충족시켜 줄 수 있는 새로운 가상 환경 구축 기술로서, 안드로이드 어플리케이션(13)에서의 생성 요청에 따라 리눅스 커널 모듈(11)에 의해 생성된다.
바람직한 실시예로 보안 컨테이너(14)는 해당 보안 컨테이너(14)에서 사용되는 마이크로 커널(micro kernel)도 함께 생성된다. 보안 컨테이너(14)의 마이크로 커널로는 일 예로 지르콘 커널(Zircon kernel)을 사용한다.
지르콘 커널은 임베디드 디바이스에 적용되는 Google Fuchsia OS를 위해 개발된 커널로서 기본적인 스케쥴링 및 시스템콜들을 제공해주는 장점이 있다. 또한 워치에서 데스크탑까지 각종 장치의 여러 앱에서 동작이 가능한 장점이 있다.
다만, 본 발명에서는 위와 같은 보안 컨테이너(14)를 위해 사용될 루트 파일 시스템으로 비지박스(busybox) 기반의 미니멈 루트 파일 시스템(minimum root file system)이 구현되는 것이 바람직하다.
이 루트 파일 시스템은 리눅스 운영체제에서 활용하는 데몬이나 추가 서비스들 없이 기본 명령어만을 제공하는 busybox를 제공한다. 이후 docker 컨테이너 이미지처럼 base root file system을 기반으로 보안 컨테이너(14) 안에서 실행될 어플리케이션과 라이브러리들을 통합하여 컨테이너를 실행시킨다.
다음, 연결단계(S15: S15-1, S15-2)는 통신 기능을 구축하는 단계로, 보안 컨테이너(14)가 생성된 이후 단말장치 내부의 보안 컨테이너(14)와 안드로이드 서비스 사이 및/또는 보안 컨테이너(14)와 안드로이드 어플리케이션(13) 사이에 데이터 통신을 연결한다.
이를 위해 보안 컨테이너(14)에 의해 보안 컨테이너(14)와 안드로이드 서비스 모듈(12)간 통신 기능을 구축하는 제1 연결단계(S15-1) 및 안드로이드 서비스 모듈(12)에 의해 안드로이드 어플리케이션(13)과 보안 컨테이너(14)간 통신 기능을 구축하는 제2 연결단계(S15-2)를 포함한다.
따라서, 안드로이드 어플리케이션(13)은 직접 보안 컨테이너(14)를 이용할 수 있게 되어 루팅이나 관리자 권한 없이 보안 컨테이너(14)를 실행 및 종료하고 특정 커맨드를 보안 컨테이너(14) 내부에서 실행시킬 수 있게 한다.
다만, 이상에서 설명한 통신 기능은 필요에 따라 보안 컨테이너(14) 및/또는 안드로이드 서비스 모듈(12) 대신 컨테이너 서비스 생성부(22)에서 구축할 수도 있으며, 이를 통해 실질적으로 동일한 기능을 제공할 수도 있다.
한편, 본 발명에 따른 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체는 위에서 설명한 바와 같이 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법을 수행하기 위한 프로그램이 기록된다.
따라서, 본 발명의 실시예에 따른 방법들은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다.
컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독 또는 조합하여 포함할 수 있으며, 기록된 프로그램 명령어는 본 발명을 위한 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는 하드 디스크, CDROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광매체(magneto-optical media) 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
또한, 메모리 기능이 탑재된 단말장치로써 스마트폰과 같이 컴퓨팅 기능이 탑재된 모바일 단말기를 포함한다. 특히 모바일 단말기는 위에서 설명한 바와 같은 여러 타입의 안드로이드 디바이스(10)를 포함한다. 나아가, 서버 역시 포함될 수 있는데 서버는 해당 프로그램의 다운로드 서비스를 제공하는 다운로드 서버나 클라우드 서버를 포함한다.
이상, 본 발명의 특정 실시예에 대하여 상술하였다. 그러나, 본 발명의 사상 및 범위는 이러한 특정 실시예에 한정되는 것이 아니라, 본 발명의 요지를 변경하지 않는 범위 내에서 다양하게 수정 및 변형 가능하다는 것을 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 이해할 것이다.
따라서, 이상에서 기술한 실시예들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이므로, 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 하며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
10: 안드로이드 디바이스
11: 리눅스 커널 모듈
12: 안드로이드 서비스 모듈
13: 안드로이드 어플리케이션
14: 보안 컨테이너
14a: 마이크로 커널
20: 보안 컨테이너 구축 장치
21: 리눅스 커널 생성부
22: 컨테이너 서비스 생성부
23: 어플리케이션 명령 처리부

Claims (15)

  1. 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치에 있어서,
    안드로이드 디바이스에 설치되며,
    가상화 환경을 지원하는 리눅스 커널 모듈(11)을 안드로이드 커널(kernel)에 생성하는 리눅스 커널 생성부(21)와;
    상기 리눅스 커널 모듈(11)에 접근 권한을 갖는 안드로이드 서비스 모듈(12)을 안드로이드 프레임워크에 생성하는 컨테이너 서비스 생성부(22); 및
    안드로이드 어플리케이션(13)의 명령을 전달받아 상기 안드로이드 서비스 모듈(12)에 보안 컨테이너(14)의 생성을 요청하는 어플리케이션 명령 처리부(23);를 포함하여,
    상기 보안 컨테이너(14) 생성 요청에 따라 상기 리눅스 커널 모듈(11)에 의해 보안 컨테이너(14)가 생성되고,
    상기 리눅스 커널 모듈(11)은, 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈(11)인 KVM(Kernel-based Virtual Machine)이며,
    상기 KVM은, ARM 환경에서 제공하는 하이퍼바이져 모드(HYP mode)를 통해 하드웨어 레벨에서 각 가상머신을 위한 가상화가 이루어지고,
    상기 안드로이드 서비스 모듈(12)은 ARM 기반 경량의 가상 머신 환경 구축 도구에 대한 접근 권한을 가지며, 안드로이드 어플리케이션(13)의 요청에 따라 상기 보안 컨테이너(14)를 생성 및 제거하고,
    상기 보안 컨테이너(14)에 의해 상기 보안 컨테이너(14)와 안드로이드 서비스 모듈(12)간 통신 기능이 구축되고,
    상기 안드로이드 서비스 모듈(12)에 의해 상기 안드로이드 어플리케이션(13)과 보안 컨테이너(14)간 통신 기능이 구축되며,
    상기 안드로이드 어플리케이션(13)은 상기 보안 컨테이너(14)를 직접 이용하도록 마련되어, 어플리케이션 레벨에서 상기 보안 컨테이너(14)를 실행 및 종료하고, 특정 커맨드를 상기 보안 컨테이너(14) 내부에서 실행시키도록 마련되는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 보안 컨테이너(14)와 연결된 콘솔을 각 어플리케이션들에게 제공해주는 프록시(proxy)를 더 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 KVM은,
    lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행하는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치.
  7. 제1항에 있어서,
    상기 보안 컨테이너(14)는,
    상기 보안 컨테이너(14)에서 사용되는 커널로서 마이크로 커널을 포함하되,
    상기 보안 컨테이너(14)를 위해 사용될 루트 파일 시스템으로 busybox 기반의 미니멈 루트 파일 시스템이 구현되는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치.
  8. 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법에 있어서,
    안드로이드 디바이스의 메모리에 저장되어 프로세서에 의해 실행되며,
    리눅스 커널 생성부(21)에서 가상화 환경을 지원하는 리눅스 커널 모듈(11)을 안드로이드 커널에 생성하는 가상머신 생성단계(S11)와;
    컨테이너 서비스 생성부(22)에서 상기 리눅스 커널 모듈(11)에 접근 권한을 갖는 안드로이드 서비스 모듈(12)을 안드로이드 프레임워크에 생성하는 시스템 서비스 생성단계(S12)와;
    어플리케이션 명령 처리부(23)에서 안드로이드 어플리케이션(13)의 명령을 전달받아 상기 안드로이드 서비스 모듈(12)에 보안 컨테이너(14)의 생성을 요청하는 컨테이너 생성 요청단계(S13); 및
    상기 리눅스 커널 모듈(11)에서 상기 안드로이드 서비스 모듈(12)을 통해 생성 요청을 받아 보안 컨테이너(14)를 생성하는 보안 컨테이너 생성단계(S14);를 포함하고,
    상기 가상머신 생성단계(S11)는, 경량 가상 머신 환경을 구현하기 위한 리눅스 커널 모듈(11)인 KVM(Kernel-based Virtual Machine)을 구축하는 단계이고,
    상기 가상머신 생성단계(S11)에서, ARM 환경에서 제공하는 하이퍼바이져 모드(HYP mode)를 통해 하드웨어 레벨에서 각 가상머신을 위한 가상화가 이루어지며,
    상기 안드로이드 서비스 모듈(12)은 ARM 기반 경량의 가상 머신 환경 구축 도구에 대한 접근 권한을 가지며, 안드로이드 어플리케이션(13)의 요청에 따라 상기 보안 컨테이너(14)를 생성 및 제거하고,
    상기 보안 컨테이너(14)에 의해 상기 보안 컨테이너(14)와 안드로이드 서비스 모듈(12)간 통신 기능을 구축하는 제1 연결단계(S15-1); 및
    상기 안드로이드 서비스 모듈(12)에 의해 상기 안드로이드 어플리케이션(13)과 보안 컨테이너(14)간 통신 기능을 구축하는 제2 연결단계(S15-2);를 더 포함하며,
    상기 안드로이드 어플리케이션(13)은 상기 보안 컨테이너(14)를 직접 이용하도록 마련되어, 어플리케이션 레벨에서 상기 보안 컨테이너(14)를 실행 및 종료하고, 특정 커맨드를 상기 보안 컨테이너(14) 내부에서 실행시키도록 마련되는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법.
  9. 삭제
  10. 제8항에 있어서,
    상기 컨테이너 서비스 생성부(22)에서 상기 보안 컨테이너(14)와 연결된 콘솔을 각 어플리케이션들에게 제공하는 프록시 단계를 더 포함하는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법.
  11. 삭제
  12. 삭제
  13. 제8항에 있어서,
    상기 가상머신 생성단계(S11)에서,
    상기 KVM의 활용하기 위해 lkvm 바이너리를 사용하며, lkvm 소스코드를 받아 ARM 아키텍처를 위해 크로스 컴파일하고 동적 라이브러리들을 모두 통합하여 정적 라이브러리로 함께 컴파일을 수행하는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법.
  14. 제8항에 있어서,
    상기 보안 컨테이너 생성단계(S14)에서는,
    상기 보안 컨테이너(14)에서 사용될 커널로서 마이크로 커널이 함께 생성되되,
    상기 보안 컨테이너(14)를 위해 사용될 루트 파일 시스템으로 busybox 기반의 미니멈 루트 파일 시스템이 구현되는 것을 특징으로 하는 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법.
  15. 제8항, 제10항, 제13항 및 제14항 중 어느 하나의 항과 같은 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
KR1020200027118A 2019-12-12 2020-03-04 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체 KR102235556B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/KR2020/017016 WO2021118125A1 (ko) 2019-12-12 2020-11-27 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
US17/784,483 US20220405385A1 (en) 2019-12-12 2020-11-27 Secure container construction device and method executable by android application, and computer-readable recording medium on which program thereof is recorded

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190165648 2019-12-12
KR20190165648 2019-12-12

Publications (2)

Publication Number Publication Date
KR102235556B1 true KR102235556B1 (ko) 2021-04-02
KR102235556B9 KR102235556B9 (ko) 2022-10-21

Family

ID=75466406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200027118A KR102235556B1 (ko) 2019-12-12 2020-03-04 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체

Country Status (3)

Country Link
US (1) US20220405385A1 (ko)
KR (1) KR102235556B1 (ko)
WO (1) WO2021118125A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190282A (zh) * 2021-04-07 2021-07-30 北京鲸鲮信息系统技术有限公司 安卓运行环境构建的方法及装置
CN114385305A (zh) * 2022-03-23 2022-04-22 麒麟软件有限公司 一种录制Linux屏幕并分享给安卓应用的系统和方法
CN116360928A (zh) * 2023-05-15 2023-06-30 摩尔线程智能科技(北京)有限责任公司 一种安卓容器显示系统的优化方法及装置、电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113934464A (zh) * 2021-12-14 2022-01-14 北京鲸鲮信息系统技术有限公司 Linux系统中启动安卓应用的方法、装置和电子设备
CN117112144B (zh) * 2023-09-22 2024-03-12 上海卓悠网络科技有限公司 一种在android系统上部署k3s的方法及系统、存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857009B1 (ko) 2017-01-19 2018-05-11 숭실대학교산학협력단 안드로이드 악성코드 분석을 위한 컨테이너 플랫폼 및 이를 이용한 모바일 장치의 보안 방법
KR101997061B1 (ko) 2017-09-29 2019-07-05 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101837678B1 (ko) * 2016-06-20 2018-03-12 주식회사 씨오티커넥티드 신뢰실행환경 기반의 컴퓨팅 장치
KR101895893B1 (ko) * 2016-11-16 2018-10-24 숭실대학교산학협력단 안드로이드 보안을 위한 듀오 os 모델 및 이를 탑재한 모바일 장치, 이를 이용한 모바일 장치의 보안 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857009B1 (ko) 2017-01-19 2018-05-11 숭실대학교산학협력단 안드로이드 악성코드 분석을 위한 컨테이너 플랫폼 및 이를 이용한 모바일 장치의 보안 방법
KR101997061B1 (ko) 2017-09-29 2019-07-05 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Earlence Fernandes et al, "Anception: Application Virtualization for Android"(2014.01.)* *
Lei Xu et al, "The Study and Evaluation of ARM-Based Mobile Virtualization", International Journal of Distributed Sensor Networks(2015.)* *
Virtual Open Systems, "Android & Virtualization on Fast Models"(2019.10.)* *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190282A (zh) * 2021-04-07 2021-07-30 北京鲸鲮信息系统技术有限公司 安卓运行环境构建的方法及装置
CN113190282B (zh) * 2021-04-07 2024-04-09 北京字节跳动网络技术有限公司 安卓运行环境构建的方法及装置
CN114385305A (zh) * 2022-03-23 2022-04-22 麒麟软件有限公司 一种录制Linux屏幕并分享给安卓应用的系统和方法
CN114385305B (zh) * 2022-03-23 2022-07-08 麒麟软件有限公司 一种录制Linux屏幕并分享给安卓应用的系统和方法
CN116360928A (zh) * 2023-05-15 2023-06-30 摩尔线程智能科技(北京)有限责任公司 一种安卓容器显示系统的优化方法及装置、电子设备
CN116360928B (zh) * 2023-05-15 2023-08-29 摩尔线程智能科技(北京)有限责任公司 一种安卓容器显示系统的优化方法及装置、电子设备

Also Published As

Publication number Publication date
WO2021118125A1 (ko) 2021-06-17
KR102235556B9 (ko) 2022-10-21
US20220405385A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
KR102235556B1 (ko) 안드로이드 어플리케이션에 의해 실행 가능한 보안 컨테이너 구축 장치, 방법 및 그 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
EP3518098B1 (en) Cross platform content management and distribution system
US10949247B2 (en) Systems and methods for auditing a virtual machine
US9336384B2 (en) Systems and methods for replacing application methods at runtime
US10983926B2 (en) Efficient userspace driver isolation for virtual machines
US10915348B2 (en) Technologies for duplicating virtual machine states
US8910155B1 (en) Methods and systems for injecting endpoint management agents into virtual machines
KR101857009B1 (ko) 안드로이드 악성코드 분석을 위한 컨테이너 플랫폼 및 이를 이용한 모바일 장치의 보안 방법
US20170102957A1 (en) System and Method for Trusted Operability When Moving Between Network Functions Virtualization States
CN111858004A (zh) 基于tee扩展的计算机安全世界实时应用动态加载方法及系统
EP3783481A1 (en) Method and apparatus for upgrading virtualized emulator
WO2016176005A1 (en) Translating operating system processes
CN113391881A (zh) 中断的管理方法、装置、电子设备及计算机存储介质
CN114691298A (zh) 数据处理方法、装置、设备和存储介质
US9684529B2 (en) Firmware and metadata migration across hypervisors based on supported capabilities
US10261921B2 (en) Universal secure platform virtualization system and method thereof
US11513825B2 (en) System and method for implementing trusted execution environment on PCI device
KR20180055627A (ko) 안드로이드 보안을 위한 듀오 os 모델 및 이를 탑재한 모바일 장치, 이를 이용한 모바일 장치의 보안 방법
US10452408B1 (en) System and method for intercepting data flow between a computer process and a file
Mehrab et al. Kite: Lightweight critical service domains
Li et al. Secure Trusted Operating System Based on Microkernel Architecture
CN109937407B (zh) 用于smm传输监控器的扩展存储器
Chawla et al. A survey of virtualization on mobiles
CN117093326A (zh) 虚拟机运行控制方法、装置、计算机设备和存储介质
Lu et al. Poster: TwinHype: A Novel Approach to Reduce Cloud Downtime

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]