WO2016064044A1 - 모바일 기기 및 상기 모바일 기기의 동작 방법 - Google Patents

모바일 기기 및 상기 모바일 기기의 동작 방법 Download PDF

Info

Publication number
WO2016064044A1
WO2016064044A1 PCT/KR2015/002207 KR2015002207W WO2016064044A1 WO 2016064044 A1 WO2016064044 A1 WO 2016064044A1 KR 2015002207 W KR2015002207 W KR 2015002207W WO 2016064044 A1 WO2016064044 A1 WO 2016064044A1
Authority
WO
WIPO (PCT)
Prior art keywords
coprocessor
core code
code
main processor
core
Prior art date
Application number
PCT/KR2015/002207
Other languages
English (en)
French (fr)
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 US15/105,302 priority Critical patent/US20170147798A1/en
Priority to EP15852009.8A priority patent/EP3057022B1/en
Priority to JP2016527337A priority patent/JP6297149B2/ja
Publication of WO2016064044A1 publication Critical patent/WO2016064044A1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Definitions

  • the present invention relates to a mobile device and a method of operating the mobile device. More specifically, the present invention relates to a mobile device and a method of operating the mobile device for protecting a core code of a mobile application.
  • smartphone banking Many users use smartphone banking, but the security of smartphone banking is still weak. Since smartphones connect to the Internet, which is a public network, there is a high security risk. Hackers who intrude through the Internet can leak information from smartphones and are not free from malware or phishing attacks. In addition, the forgery banking application can steal the user's financial information.
  • the existing forgery detection technology that executes the forgery detection code at the application level and analyzes the structure of the application is not safe from forgery attack.
  • extracting the Dalvik byte code executed in the Dalvik virtual machine of the Android mobile system can analyze the structure of the application. That is, application level forgery detection technology can be bypassed and avoided. Therefore, forgery detection technology at the platform level, not at the application level, is required.
  • the technical problem of the present invention is a technique for protecting core code in a mobile application that is vulnerable to forgery and attack, and the core code of the mobile application is separated by separating the core code into an executable form in a main processor and another coprocessor.
  • the present invention provides a protecting mobile device and a method of operating the mobile device.
  • the mobile device is connected to the main processor for executing the general code of the mobile application, the coprocessor for executing the core code of the mobile application, and between the main processor and the coprocessor A coprocessor driver for enabling communication between a main processor and the coprocessor, wherein the generic code consists of instructions executable on the main processor, and the core code consists of instructions executable on the coprocessor.
  • a method for operating a mobile device includes a main processor, a coprocessor, and a coprocessor driver for enabling communication between the main processor and the coprocessor, wherein the main processor includes: Invoking a core code of a mobile application consisting of instructions executable in the coprocessor; the coprocessor driver receiving a core code call from the main processor and passing the core code call to the coprocessor; After execution, delivering execution results to the coprocessor driver, and the coprocessor driver delivering the execution results to the main processor.
  • the core code is installed at the level below the operating system when installing a mobile application, and the main processor and the general code are installed in a separate core code repository that cannot be directly accessed, thereby preventing the core code from being exposed to reverse engineering. Increase resistance.
  • the core code is not exposed to the mobile device's main processor, increasing dynamic engineering resistance by preventing dynamic analysis using the mobile device's central processing unit.
  • the use of a coprocessor eliminates the need for a network, further optimizing for mobile environments.
  • the instruction set or structure of the isolated core code is changed to enhance reverse engineering analysis resistance.
  • FIG. 1 is an exemplary diagram of code division of a mobile application according to an embodiment of the present invention.
  • FIG. 2 is a block diagram showing the configuration of a mobile device according to an embodiment of the present invention.
  • FIG. 3 is a block diagram illustrating a detailed configuration of the main processor of FIG. 2.
  • FIG. 4 is a block diagram illustrating a detailed configuration of the coprocessor of FIG. 2.
  • FIG. 5 is a flowchart illustrating the operation of a mobile device according to an embodiment of the present invention.
  • ... unit means a unit for processing at least one function or operation, which may be implemented in hardware or software or a combination of hardware and software.
  • FIG. 1 is an exemplary diagram of code division of a mobile application according to an embodiment of the present invention.
  • a mobile application means an application installed and executable on a mobile device.
  • it includes an app running on a smartphone.
  • the user can download the app from the mobile application market, a virtual marketplace for freely buying and selling mobile content, and install the app on a mobile device such as a smartphone.
  • the mobile device is a terminal that can be installed and run a mobile application, such as smart phones, smart pads, mobile phones, notebook computers, tablet PCs, PDA (Personal Digital Assistant).
  • a mobile application such as smart phones, smart pads, mobile phones, notebook computers, tablet PCs, PDA (Personal Digital Assistant).
  • the application can be provided as an application on the device.
  • the mobile application is composed of a core code file composed of core codes that need to be protected from forgery and a general code file composed of general codes except core codes.
  • the core code can be set using a function predefined in the mobile platform. In addition, it can be directly set by the user or the developer of the application or a person concerned with authentication.
  • the core code cannot be omitted when running the application and can be selected as a part that must be executed more than once. That is, parts whose execution order is not changed by various conditions such as branch statements or condition statements can be selected as core codes.
  • Mobile devices protect these core codes in mobile applications that are relatively exposed due to the packaging of mobile applications.
  • obfuscation techniques to the main and coprocessors of mobile devices, it is possible to increase reverse engineering difficulty. have. This configuration will be described in detail with reference to FIGS. 2 to 5.
  • FIG. 2 is a block diagram showing a configuration of a mobile device according to an embodiment of the present invention
  • Figure 3 is a block diagram showing a detailed configuration of the main processor of Figure 2
  • Figure 4 is a detailed configuration of the coprocessor of FIG. The block diagram shown.
  • a mobile device includes a system-on-chip (200), a main processor (300), a coprocessor (400), a coprocessor driver (500), and a core code store (600). , A general code storage unit 700, a dynamic random access memory (DRAM) 800, and an encrypted shared memory 900.
  • DRAM dynamic random access memory
  • the system on chip 200 includes a main processor 300 and a coprocessor 400.
  • the main processor 300 performs data processing operations in response to the mobile application command.
  • the main processor 300 executes general code of a mobile application.
  • the general code is composed of instructions executable on the main processor 300.
  • the main processor 300 includes a general code execution unit 301, a core code call unit (Stub) 303, and a shared memory encryption / decryption unit 305.
  • the general code execution unit 301 executes the general code of the mobile application.
  • the core code caller 303 calls the core code while executing the general code, and transfers the call information to the coprocessor driver 500. And the core code processing result of the coprocessor 400 is received from the coprocessor driver 500.
  • the shared memory encryption / decryption unit 305 writes the execution code executed by the general code execution unit 301 in the encrypted shared memory 900 in an encrypted form.
  • the encrypted executable code of the coprocessor 400 written in the encrypted shared memory is decoded and referred to.
  • the coprocessor 400 communicates with the main processor 300 through the coprocessor driver 500.
  • the coprocessor 400 executes a predetermined operation in response to a call of the main processor 300.
  • Coprocessor 400 executes the core code of the mobile application.
  • the core code consists of instructions executable on the coprocessor 400.
  • the coprocessor 400 includes a core code execution unit 401, a core code response unit 403, and a shared memory encryption / decryption unit 405.
  • the core code execution unit 401 loads and executes core code from the core code repository 600.
  • the core code response unit (Skeleton) 403 receives a core code call from the main processor 300 through the coprocessor driver 500. Then, the core code processing result of the core code execution unit 401 is transmitted to the coprocessor driver 500.
  • the shared memory encryption / decryption unit 405 decrypts and references the encrypted executable code of the main processor 300 created in the encrypted shared memory 900.
  • the execution code of the core code is written in the encrypted shared memory 900 in encrypted form while executing the core code.
  • the coprocessor driver 500 is coupled between the main processor 300 and the coprocessor 400 to enable communication between the main processor 300 and the coprocessor 400.
  • the coprocessor driver 500 When the coprocessor driver 500 receives the core code call from the main processor 300, the coprocessor driver 500 transmits the core code call to the coprocessor 400.
  • the core code processing result is received from the coprocessor 400 and then transmitted to the main processor 300.
  • the core code store 600 is allowed access only to the coprocessor 400, and stores the core code.
  • the coprocessor 400 stores the core code separated from the mobile application in the core code repository 600 when the mobile application is installed.
  • the general code storage unit 700 stores the general code of the mobile application.
  • Dynamic random access memory (DRAM) 800 includes cryptographic shared memory 900.
  • the encryption shared memory 900 encrypts the execution code of the main processor 300 or the data of the coprocessor 400.
  • the encrypted data is shared between the main processor 300 and the coprocessor 400.
  • FIG. 5 is a flowchart illustrating the operation of a mobile device according to an embodiment of the present invention.
  • the main processor 300 installs a general code of a mobile application program (S101).
  • the coprocessor 400 installs the core code of the mobile application in the core code repository 600 (S103).
  • a mobile device is divided into a general code installation and a core code installation when installing a mobile application using a coprocessor, and the core code is installed in a separate core code repository that is inaccessible to the general code and the main processor. Is performed by.
  • the main processor 300 initializes the encrypted shared memory 900 when the core code is called while executing the general code (S105) (S107). If necessary, data is written to the encrypted shared memory 900 (S109). In other words, when the mobile application is executed, it initializes the encrypted shared memory and encrypts the data as necessary when calling core code (Stub) during normal code execution.
  • the main processor 300 transmits a core code call to the coprocessor driver 500 (S111). Then, the coprocessor driver 500 transmits the core code call information to the coprocessor 400 (S113). That is, the main processor 300 communicates with the coprocessor 400 by transferring the core code call information to the coprocessor driver 500.
  • the coprocessor 400 loads the core code from the core code repository 600 (S115) and executes it (S117).
  • the coprocessor 400 writes data to the encrypted shared memory 900 (S119).
  • the coprocessor 400 transmits the core code processing result to the coprocess driver 500 after the core code is executed (S121).
  • the coprocessor driver 500 transmits the processing result to the main processor 300 (S123). Therefore, the coprocessor 400 communicates the core code processing result to the coprocessor driver 500 and communicates with the main processor 300.
  • the general code is executed only in the main processor 300 and the separated core code is executed in the coprocessor 400 so that the main code 300 is not exposed to the main processor 300 at the time of execution. Since the shared memory 900 between the coprocessor 400 and the encryption is relatively difficult reverse engineering.
  • the embodiments of the present invention described above are not only implemented through the apparatus and the method, but may be implemented through a program for realizing a function corresponding to the configuration of the embodiments of the present invention or a recording medium on which the program is recorded.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Telephonic Communication Services (AREA)
  • Storage Device Security (AREA)

Abstract

모바일 기기 및 상기 모바일 기기의 동작 방법이 개시된다. 여기서, 모바일 기기는 모바일 응용 프로그램의 일반 코드를 실행하는 메인 프로세서, 상기 모바일 응용 프로그램의 핵심 코드를 실행하는 코프로세서, 그리고 상기 메인 프로세서 및 상기 코프로세서 사이에 연결되어 상기 메인 프로세서 및 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하고, 상기 일반 코드는 상기 메인 프로세서에서 실행 가능한 명령어로 구성되고, 상기 핵심 코드는 상기 코프로세서에서 실행 가능한 명령어로 구성된다. 이와 같이 본 발명에 의하면, 모바일 응용 프로그램 설치시 핵심 코드가 운영체제 이하 수준에서 구분되어 메인 프로세서와 일반 코드는 직접 접근 할 수 없는 별도의 핵심코드 저장소에 설치됨으로써 핵심 코드의 노출을 방지하여 역공학 저항성을 증가시킬 수 있다.

Description

모바일 기기 및 상기 모바일 기기의 동작 방법
본 발명은 모바일 기기 및 상기 모바일 기기의 동작 방법에 관한 것으로, 더욱 상세하게 설명하면 모바일 응용 프로그램의 핵심 코드를 보호하는 모바일 기기 및 상기 모바일 기기의 동작 방법이다.
많은 사용자들이 스마트폰 뱅킹을 이용하지만 아직 스마트폰 뱅킹의 보안은 취약하다. 스마트폰은 공용 네트워크 망에 해당하는 인터넷에 연결하므로 보안의 위험성이 크다. 인터넷 망을 통하여 침입한 해커가 스마트폰 내의 정보를 유출할 수 있고, 악성코드나 피싱 공격으로부터도 자유롭지 못하다. 또한 위변조 뱅킹 애플리케이션으로 사용자의 금융 정보가 탈취될 수 있다.
스마트폰 뱅킹을 지원하는 금융 애플리케이션뿐만 아니라 게임, SNS 애플리케이션도 보안에 취약하다.
유명 게임 애플리케이션의 위변조 애플리케이션에 삽입된 트로이 목마 바이러스로 개인정보가 유출되는 사건이 있었고, SNS 애플리케이션의 위변조 애플리케이션이 불법 과금하는 사건도 있었다.
이러한 애플리케이션의 위변조를 방지하고, 무결성을 확보하려는 애플리케이션 위변조 방지 솔루션에 관한 연구가 진행되고 있다. 주로 난독화 기법과 안티 디버깅 기능을 이용하여 리버스 엔지니어링과 위변조 위험성을 낮추는 기술이 적용되고 있다.
그러나 응용 프로그램 레벨에서 위변조 탐지용 코드를 적용하여 실행하는 기존의 위변조 탐지 기술은 애플리케이션의 구조를 분석할 수 있어 위변조 공격으로부터 안전하지 못하다. 특히, 안드로이드 모바일 시스템의 달빅 가상 머신에서 수행되는 달빅 바이트 코드를 추출하면 해당 응용 애플리케이션의 구조를 분석할 수 있다. 즉, 응용 프로그램 레벨의 위변조 탐지 기술은 우회 및 회피가 가능하다. 따라서, 응용 프로그램 레벨이 아니라 플랫폼 레벨의 위변조 탐지 기술이 필요하다.
기존의 기술들은 모바일 응용 프로그램의 핵심 코드를 난독화를 진행하여 핵심 코드를 보호하며, 인터넷 환경의 서버에 분리된 파일을 저장함으로써 난독화를 진행하는 방법이 개시되어 있다.
하지만, 인터넷 환경이 유동적으로 변하는 모바일 환경에서는 서버와 연결이 되지 않을 가능성이 존재하고 이로 인해 실행이 되지 않을 가능성이 있다.
또한, 데이터 소모량이 과다하면 실제로 적용하기 어려운 문제가 발생한다.
본 발명의 배경이 되는 기술은 한국등록특허 제10-1328012호 (2013.11.13공고)에 개시되어 있다.
따라서, 본 발명이 이루고자 하는 기술적 과제는 위변조 공격에 취약한 모바일 응용 프로그램에서 핵심 코드를 보호하기 위한 기법으로서, 핵심 코드를 메인 프로세서와 다른 코프로세서에서 실행 가능한 형태로 분리함으로써 모바일 응용 프로그램의 핵심 코드를 보호하는 모바일 기기 및 상기 모바일 기기의 동작 방법을 제공하는데 있다.
본 발명의 하나의 특징에 따르면, 모바일 기기는 모바일 응용 프로그램의 일반 코드를 실행하는 메인 프로세서, 상기 모바일 응용 프로그램의 핵심 코드를 실행하는 코프로세서, 그리고 상기 메인 프로세서 및 상기 코프로세서 사이에 연결되어 상기 메인 프로세서 및 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하고, 상기 일반 코드는 상기 메인 프로세서에서 실행 가능한 명령어로 구성되고, 상기 핵심 코드는 상기 코프로세서에서 실행 가능한 명령어로 구성된다.
본 발명의 다른 특징에 따르면, 모바일 기기의 동작 방법은 메인 프로세서, 코프로세서 및 상기 메인 프로세서와 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하는 모바일 기기의 동작 방법으로서, 상기 메인 프로세서가 상기 코프로세서에서 실행 가능한 명령어로 구성된 모바일 응용 프로그램의 핵심 코드를 호출하는 단계, 상기 코프로세서 드라이버가 상기 메인 프로세서로부터 핵심 코드 호출을 수신하여 상기 코프로세서로 전달하는 단계, 상기 코프로세서가 핵심 코드를 실행한 후, 실행 결과를 상기 코프로세서 드라이버에게 전달하는 단계, 그리고 상기 코프로세서 드라이버가 상기 실행 결과를 상기 메인 프로세서에게 전달하는 단계를 포함한다.
본 발명의 실시예에 따르면, 모바일 응용 프로그램 설치시 핵심 코드는 운영체제 이하 수준에서 구분되어 메인 프로세서와 일반 코드는 직접 접근 할 수 없는 별도의 핵심코드 저장소에 설치함으로써 핵심 코드의 노출을 방지하여 역공학 저항성을 증가시킨다.
또한, 모바일 기기의 코프로세서에서 핵심 코드를 실행함으로써 핵심코드가 모바일 기기의 메인 프로세서에 노출되지 않기 때문에 모바일 기기의 중앙 처리 장치를 이용한 동적 분석을 방지하여 역공학 저항성을 증가시킨다.
또한, 코프로세서를 이용함으로써 네트워크를 사용하지 않아도 되므로 모바일 환경에 더욱 최적화할 수 있다. 그리고 핵심 코드를 모바일 기기의 코프로세서에 맞게 개발함으로써 분리된 핵심 코드의 명령어 집합이나 구조가 변경되어 역공학 분석 저항성을 강화시킨다.
또한, 모바일 응용 프로그램의 실행 시점에 모바일 기기의 메인 프로세서와 코프로세서가 암호화된 공유 메모리를 공유하기 때문에 역공학 저항성을 증가시킨다.
또한, 모바일 응용 프로그램은 분리된 핵심 코드를 별도로 배포하는 과정이 불필요하고, 모바일 응용 프로그램의 기존 배포 과정과 다르지 않고 사용자 측면에서는 핵심 코드 분리 전과 후의 사용상의 차이를 느낄 수 없기 때문에 기술 도입에 따른 거부감이 없다.
도 1은 본 발명의 실시예에 따른 모바일 응용 프로그램의 코드 구분 예시도이다.
도 2는 본 발명의 실시예에 따른 모바일 기기의 구성을 나타낸 블록도이다.
도 3은 도 2의 메인 프로세서의 세부 구성을 도시한 블록도이다.
도 4는 도 2의 코프로세서의 세부 구성을 도시한 블록도이다.
도 5는 본 발명의 실시예에 따른 모바일 기기의 동작을 나타낸 흐름도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…모듈" 의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이하, 도면을 참조로 하여 본 발명의 실시예에 따른 모바일 기기 및 상기 모바일 기기의 동작 방법에 대하여 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 모바일 응용 프로그램의 코드 구분 예시도이다.
도 1을 참조하면, 모바일 응용 프로그램은 모바일 기기에 설치되어 실행 가능한 응용 프로그램을 의미한다. 예를들면, 스마트폰에서 실행되는 앱(app)을 포함한다. 사용자는 앱(app)을 모바일 콘텐츠를 자유롭게 사고 파는 가상의 장터인 모바일 애플리케이션 마켓에서 다운로드 받아 스마트폰 등의 모바일 기기에 설치할 수 있다.
여기서, 모바일 기기는 모바일 응용 프로그램을 설치하여 실행할 수 있는 단말기로서, 스마트폰, 스마트 패드, 휴대폰, 노트북 컴퓨터, 태블릿 PC, PDA(Personal Digital Assistant) 등이 해당된다. 특히, 스마트폰 또는 스마트 패드의 경우 응용 프로그램은 기기 상에 애플리케이션으로 제공할 수 있다.
이때, 모바일 응용 프로그램은 위변조 행위로부터 보호할 필요가 있는 핵심 코드로 구성된 핵심 코드 파일과, 핵심 코드를 제외한 일반 코드로 구성된 일반 코드 파일을 바탕으로 구성된다.
핵심 코드는 모바일 플랫폼에서 미리 정의해 둔 함수를 사용하여 설정될 수 있다. 또한, 사용자 또는 해당 응용 프로그램의 개발자나 인증 관련 관계자로부터 직접 설정받을 수도 있다.
핵심 코드는 응용 프로그램을 실행할 때 생략이 불가능하고, 반드시 한 번 이상 실행되어야 하는 부분으로 선택될 수 있다. 즉, 분기문이나 조건문 등으로 실행 순서가 여러 조건에 의해 변경되지 않는 부분들이 핵심 코드로 선택될 수 있다.
모바일 기기는 모바일 응용 프로그램의 패키징으로 인해 상대적으로 노출이 쉬운 모바일 응용 프로그램에서 이러한 핵심 코드를 보호하는데, 난독화 기법을 모바일 기기의 메인 프로세서와 코프로세서에 분산적으로 적용함으로써 역공학 난이도를 높일 수 있다. 이러한 구성에 대해 도 2 ~ 도 5를 참조하여 자세히 설명한다.
도 2는 본 발명의 실시예에 따른 모바일 기기의 구성을 나타낸 블록도이고, 도 3은 도 2의 메인 프로세서의 세부 구성을 도시한 블록도이며, 도 4는 도 2의 코프로세서의 세부 구성을 도시한 블록도이다.
먼저, 도 2를 참조하면, 모바일 기기는 시스템 온 칩(System-on-Chip)(200), 메인 프로세서(300), 코프로세서(400), 코프로세서 드라이버(500), 핵심코드 저장소(600), 일반코드 저장부(700), 동적 랜덤 액세스 메모리(DRAM, Dynamic Random Access Memory)(800), 암호화 공유 메모리(900)를 포함한다.
시스템 온 칩(200)은 메인 프로세서(300) 및 코프로세서(400)를 포함한다. 메인 프로세서(300)는 모바일 응용 프로그램 명령어에 응답하여 데이터 처리 연산을 수행한다. 메인 프로세서(300)는 모바일 응용 프로그램의 일반 코드를 실행한다. 일반 코드는 메인 프로세서(300)에서 실행 가능한 명령어로 구성된다.
도 3을 참조하면, 메인 프로세서(300)는 일반코드 실행부(301), 핵심코드 호출부(Stub)(303) 및 공유 메모리 암복호화부(305)를 포함한다.
일반코드 실행부(301)는 모바일 응용 프로그램의 일반 코드를 실행한다.
핵심코드 호출부(303)는 일반 코드를 실행하는 중에 핵심코드를 호출하는데, 호출 정보를 코프로세서 드라이버(500)에게 전달한다. 그리고 코프로세서(400)의 핵심코드 처리 결과를 코프로세서 드라이버(500)로부터 전달받는다.
공유 메모리 암복호화부(305)는 일반코드 실행부(301)가 실행한 실행 코드를 암호화된 형태로 암호화 공유 메모리(900)에 작성한다. 그리고 암호화 공유 메모리에 작성된 코프로세서(400)의 암호화된 실행 코드를 복호하여 참조한다.
다시, 도 2를 참조하면, 코프로세서(400)는 코프로세서 드라이버(500)를 통해 메인 프로세서(300)와 통신한다. 코프로세서(400)는 메인 프로세서(300)의 호출에 응답하여 소정의 연산을 실행한다.
코프로세서(400)는 모바일 응용 프로그램의 핵심 코드를 실행한다. 핵심 코드는 코프로세서(400)에서 실행 가능한 명령어로 구성된다.
도 4를 참조하면, 코프로세서(400)는 핵심코드 실행부(401), 핵심코드 응답부(403) 및 공유 메모리 암복호화부(405)를 포함한다.
핵심코드 실행부(401)는 핵심코드 저장소(600)로부터 핵심코드를 로드하여 실행한다.
핵심코드 응답부(Skeleton)(403)는 코프로세서 드라이버(500)를 통해 메인 프로세서(300)로부터 핵심코드 호출을 전달받는다. 그리고 핵심코드 실행부(401)의 핵심코드 처리 결과를 코프로세서 드라이버(500)에게 전달한다.
공유 메모리 암복호화부(405)는 암호화 공유 메모리(900)에 작성된 메인 프로세서(300)의 암호화된 실행 코드를 복호하여 참조한다. 그리고 핵심 코드를 실행하는 중에 핵심 코드의 실행 코드를 암호화된 형태로 암호화 공유 메모리(900)에 작성한다.
다시, 도 2를 참조하면, 코프로세서 드라이버(500)는 메인 프로세서(300) 및 코프로세서(400) 사이에 연결되어 메인 프로세서(300) 및 코프로세서(400) 간의 통신을 가능하게 한다.
코프로세서 드라이버(500)는 메인 프로세서(300)로부터 핵심코드 호출을 요청받으면, 코프로세서(400)에게 핵심코드 호출을 전달한다. 그리고 코프로세서(400)로부터 핵심코드 처리 결과를 수신하여 메인 프로세서(300)에게 전달한다.
핵심코드 저장소(600)는 코프로세서(400)에게만 접근이 허용되고, 핵심 코드를 저장한다. 코프로세서(400)는 모바일 응용 프로그램의 설치시, 모바일 응용 프로그램으로부터 분리된 핵심 코드를 핵심코드 저장소(600)에 저장한다.
일반코드 저장부(700)는 모바일 응용 프로그램의 일반 코드를 저장한다.
동적 랜덤 액세스 메모리(DRAM)(800)는 암호화 공유 메모리(900)를 포함한다. 암호화 공유 메모리(900)는 메인 프로세서(300)의 실행 코드 또는 코프로세서(400)의 데이터를 암호화한다. 그리고 메인 프로세서(300) 및 코프로세서(400) 간에 암호화된 데이터를 서로 공유하도록 한다.
지금까지 설명한 구성을 토대로 모바일 기기의 동작을 설명하면 다음과 같다.
도 5는 본 발명의 실시예에 따른 모바일 기기의 동작을 나타낸 흐름도이다.
도 5를 참조하면, 메인 프로세서(300)는 모바일 응용 프로그램의 일반 코드를 설치한다(S101).
코프로세서(400)는 핵심코드 저장소(600)에 모바일 응용 프로그램의 핵심 코드를 설치한다(S103).
이처럼, 모바일 기기는 코프로세서를 이용한 모바일 응용 프로그램의 설치시 일반코드 설치와 핵심코드 설치로 구분되며, 핵심코드는 일반코드와 메인 프로세서가 접근할 수 없는 별도의 핵심코드 저장소에 설치되며 코프로세서에 의해 수행된다.
이후, 메인 프로세서(300)는 일반 코드를 실행(S105)하는 중에 핵심코드 호출시 암호화된 공유 메모리(900)를 초기화한다(S107). 그리고 필요시 암호화된 공유 메모리(900)에 데이터를 작성한다(S109). 즉, 모바일 응용 프로그램 실행시 일반코드 실행 중 핵심코드 호출(Stub)시 필요에 따라 암호화 된 공유 메모리를 초기화하고 데이터를 암호화한다.
메인 프로세서(300)는 코프로세서 드라이버(500)에게 핵심코드 호출을 전달한다(S111). 그러면, 코프로세서 드라이버(500)는 핵심코드 호출 정보를 코프로세서(400)에게 전달한다(S113). 즉, 코프로세서 드라이버(500)에 핵심코드 호출 정보를 전달하여 메인 프로세서(300)는 코프로세서(400)와 통신한다.
코프로세서(400)는 핵심코드 저장소(600)로부터 핵심코드를 로드(S115)하여 실행한다(S117).
코프로세서(400)는 암호화 공유 메모리(900)에 데이터를 작성한다(S119).
코프로세서(400)는 핵심코드 실행 후, 핵심코드 처리 결과를 코프로세스 드라이버(500)에게 전달한다(S121).
그러면, 코프로세서 드라이버(500)는 처리 결과를 메인 프로세서(300)에게 전달한다(S123). 따라서, 코프로세서(400)는 코프로세서 드라이버(500)에 핵심코드 처리 결과를 전달하여 메인 프로세서(300)와 통신한다.
이상 기술한 것처럼, 일반 코드는 메인 프로세서(300)에서만 실행하고 분리된 핵심 코드는 코프로세서(400)에서 실행하여 실행 시점에 핵심 코드를 메인 프로세서(300)에 노출하지 않고, 메인 프로세서(300)와 코프로세서(400) 간의 공유 메모리(900)는 암호화하기 때문에 상대적으로 역공학이 어려워진다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
<부호의 설명>
100 : 응용 프로그램 제공 서버
101 : 일반코드
103 : 핵심코드
200 : 시스템 온 칩
300 : 메인 프로세서
301 : 일반코드 실행부
303 : 핵심코드 호출부
305 : 공유 메모리 암복호화부
400 : 코프로세서
401 : 핵심코드 실행부
403 : 핵심코드 응답부
405 : 공유 메모리 암호화부
500 : 코프로세서 드라이버
600 : 핵심코드 저장소
700 : 일반코드 저장부
800 : 동적 랜덤 액세스 메모리
900 : 암호화 공유 메모리

Claims (11)

  1. 모바일 응용 프로그램의 일반 코드를 실행하는 메인 프로세서,
    상기 모바일 응용 프로그램의 핵심 코드를 실행하는 코프로세서, 그리고
    상기 메인 프로세서 및 상기 코프로세서 사이에 연결되어 상기 메인 프로세서 및 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하고,
    상기 일반 코드는 상기 메인 프로세서에서 실행 가능한 명령어로 구성되고, 상기 핵심 코드는 상기 코프로세서에서 실행 가능한 명령어로 구성된 모바일 기기.
  2. 제1항에 있어서,
    상기 코프로세서에게만 접근이 허용되고, 상기 핵심 코드를 저장하는 핵심코드 저장소를 더 포함하고,
    상기 코프로세서는,
    상기 모바일 응용 프로그램의 설치시 상기 모바일 응용 프로그램으로부터 분리된 상기 핵심 코드를 상기 핵심코드 저장소에 저장하는 모바일 기기.
  3. 제2항에 있어서,
    상기 코프로세서 드라이버는,
    상기 메인 프로세서로부터 핵심코드 호출을 요청받으면, 상기 코프로세서에게 상기 핵심코드 호출을 전달하고, 상기 코프로세서로부터 핵심코드 처리 결과를 수신하여 상기 메인 프로세서에게 전달하는 모바일 기기.
  4. 제3항에 있어서,
    상기 코프로세서는,
    상기 코프로세서 드라이버로부터 상기 핵심코드 호출이 전달되면, 상기 핵심코드 저장소로부터 상기 핵심코드를 로드하여 실행하는 모바일 기기.
  5. 제4항에 있어서,
    데이터를 암호화하여 공유하기 위한 암호화 공유 메모리를 더 포함하고,
    상기 메인 프로세서는,
    상기 일반 코드를 실행하는 중에 상기 핵심코드 호출시 상기 일반 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하고,
    상기 코프로세서는,
    상기 암호화 공유 메모리에 작성된 암호화된 데이터를 복호하여 참조하는 모바일 기기.
  6. 제5항에 있어서,
    상기 코프로세서는,
    상기 핵심 코드를 실행하는 중에 핵심 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하고,
    상기 메인 프로세서는,
    상기 암호화 공유 메모리에 작성된 암호화된 데이터를 복호하여 참조하는 모바일 기기.
  7. 제1항에 있어서,
    상기 핵심 코드는,
    사용자에 의해 선택되거나, 모바일 플랫폼에서 미리 정의한 함수를 이용하여 선택되는 모바일 기기.
  8. 메인 프로세서, 코프로세서 및 상기 메인 프로세서와 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하는 모바일 기기의 동작 방법으로서,
    상기 메인 프로세서가 상기 코프로세서에서 실행 가능한 명령어로 구성된 모바일 응용 프로그램의 핵심 코드를 호출하는 단계,
    상기 코프로세서 드라이버가 상기 메인 프로세서로부터 핵심 코드 호출을 수신하여 상기 코프로세서로 전달하는 단계,
    상기 코프로세서가 핵심 코드를 실행한 후, 실행 결과를 상기 코프로세서 드라이버에게 전달하는 단계, 그리고
    상기 코프로세서 드라이버가 상기 실행 결과를 상기 메인 프로세서에게 전달하는 단계를 포함하는 모바일 기기의 동작 방법.
  9. 제8항에 있어서,
    상기 호출하는 단계 이전에,
    상기 코프로세서가 상기 모바일 응용 프로그램의 설치시 상기 모바일 응용 프로그램으로부터 분리된 상기 핵심 코드를 핵심코드 저장소에 저장하는 단계를 더 포함하고,
    상기 전달하는 단계는,
    상기 핵심코드 저장소로부터 상기 핵심 코드를 로드하여 실행하는 단계, 그리고
    상기 핵심 코드의 실행 결과를 상기 코프로세서 드라이버에게 전달하는 단계를 포함하는 모바일 기기의 동작 방법.
  10. 제9항에 있어서,
    상기 호출하는 단계는,
    상기 메인 프로세서가 상기 메인 프로세서에서 실행 가능한 명령어로 구성된 상기 모바일 응용 프로그램의 일반 코드를 실행하는 단계,
    상기 핵심 코드 호출이 필요하다고 판단되면, 상기 코프로세서 드라이버에게 상기 핵심 코드를 호출하는 단계를 포함하는 모바일 기기의 동작 방법.
  11. 제10항에 있어서,
    상기 메인 프로세서가 상기 일반 코드를 실행하는 중에 상기 핵심코드 호출시 상기 일반 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하는 단계,
    상기 코프로세서가 상기 핵심 코드를 실행하는 중에 상기 핵심 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하는 단계, 그리고
    상기 메인 프로세서 및 상기 코프로세서가 상기 암호화 공유 메모리를 통해 암호화된 데이터를 공유하는 단계를 더 포함하는 모바일 기기의 동작 방법.
PCT/KR2015/002207 2014-10-23 2015-03-06 모바일 기기 및 상기 모바일 기기의 동작 방법 WO2016064044A1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/105,302 US20170147798A1 (en) 2014-10-23 2015-03-06 Mobile Device And Method Of Operating Mobile Device
EP15852009.8A EP3057022B1 (en) 2014-10-23 2015-03-06 Mobile device and method for operating same
JP2016527337A JP6297149B2 (ja) 2014-10-23 2015-03-06 モバイル機器及び該モバイル機器の動作方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR20140144320 2014-10-23
KR10-2014-0144320 2014-10-23
KR1020150002944A KR101566145B1 (ko) 2014-10-23 2015-01-08 모바일 기기 및 상기 모바일 기기의 동작 방법
KR10-2015-0002944 2015-01-08

Publications (1)

Publication Number Publication Date
WO2016064044A1 true WO2016064044A1 (ko) 2016-04-28

Family

ID=54601240

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2015/002207 WO2016064044A1 (ko) 2014-10-23 2015-03-06 모바일 기기 및 상기 모바일 기기의 동작 방법

Country Status (5)

Country Link
US (1) US20170147798A1 (ko)
EP (1) EP3057022B1 (ko)
JP (1) JP6297149B2 (ko)
KR (1) KR101566145B1 (ko)
WO (1) WO2016064044A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008527905A (ja) * 2005-01-11 2008-07-24 エンキャップ エーエス セキュリティコード生成方法、セキュリティコード生成方法を用いた方法、及びセキュリティコード生成方法のためのプログラム可能な装置
KR20120002079A (ko) * 2010-06-30 2012-01-05 에스케이플래닛 주식회사 어플리케이션 저작권 보호 시스템, 어플리케이션 저작권 보호 장치 및 방법, 그리고 단말 장치 및 상기 단말 장치의 어플리케이션 저작권 보호 방법
KR101223981B1 (ko) * 2012-07-11 2013-01-21 주식회사 안랩 안전한 애플리케이션 실행을 위한 가상화 장치, 서버 및 방법
KR20140089321A (ko) * 2012-07-09 2014-07-14 주식회사 씽크풀 페어링 수행 디지털 시스템 및 그 제공방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146575A (en) * 1986-11-05 1992-09-08 International Business Machines Corp. Implementing privilege on microprocessor systems for use in software asset protection
US5977997A (en) * 1997-03-06 1999-11-02 Lsi Logic Corporation Single chip computer having integrated MPEG and graphical processors
WO2001076129A2 (en) * 2000-03-31 2001-10-11 General Dynamics Decision Systems, Inc. Scalable cryptographic engine
WO2001086432A2 (en) * 2000-05-11 2001-11-15 Netoctave, Inc. Cryptographic data processing systems, computer program products, and methods of operating same, using parallel execution units
DE10061998A1 (de) 2000-12-13 2002-07-18 Infineon Technologies Ag Kryptographieprozessor
JP4475894B2 (ja) * 2002-08-01 2010-06-09 パナソニック株式会社 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法
DE102005022019A1 (de) * 2005-05-12 2007-02-01 Giesecke & Devrient Gmbh Sichere Verarbeitung von Daten
WO2007063433A2 (en) * 2005-10-17 2007-06-07 Nxp B.V. Program executable image encryption
US7916864B2 (en) * 2006-02-08 2011-03-29 Nvidia Corporation Graphics processing unit used for cryptographic processing
US7890750B2 (en) * 2006-07-06 2011-02-15 Accenture Global Services Limited Encryption and decryption on a graphics processing unit
US8181038B2 (en) * 2007-04-11 2012-05-15 Cyberlink Corp. Systems and methods for executing encrypted programs
US8458802B2 (en) * 2011-04-02 2013-06-04 Intel Corporation Method and device for managing digital usage rights of documents
KR101328012B1 (ko) * 2013-08-12 2013-11-13 숭실대학교산학협력단 애플리케이션 코드 난독화 장치 및 그 방법
KR101350390B1 (ko) 2013-08-14 2014-01-16 숭실대학교산학협력단 코드 난독화 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008527905A (ja) * 2005-01-11 2008-07-24 エンキャップ エーエス セキュリティコード生成方法、セキュリティコード生成方法を用いた方法、及びセキュリティコード生成方法のためのプログラム可能な装置
KR20120002079A (ko) * 2010-06-30 2012-01-05 에스케이플래닛 주식회사 어플리케이션 저작권 보호 시스템, 어플리케이션 저작권 보호 장치 및 방법, 그리고 단말 장치 및 상기 단말 장치의 어플리케이션 저작권 보호 방법
KR20140089321A (ko) * 2012-07-09 2014-07-14 주식회사 씽크풀 페어링 수행 디지털 시스템 및 그 제공방법
KR101223981B1 (ko) * 2012-07-11 2013-01-21 주식회사 안랩 안전한 애플리케이션 실행을 위한 가상화 장치, 서버 및 방법

Also Published As

Publication number Publication date
EP3057022A4 (en) 2017-05-31
EP3057022A1 (en) 2016-08-17
KR101566145B1 (ko) 2015-11-06
US20170147798A1 (en) 2017-05-25
EP3057022B1 (en) 2019-08-28
JP2017501478A (ja) 2017-01-12
JP6297149B2 (ja) 2018-03-20

Similar Documents

Publication Publication Date Title
US10949247B2 (en) Systems and methods for auditing a virtual machine
WO2015053509A1 (ko) 동적 라이브러리를 보호하는 방법 및 장치
JP6918212B2 (ja) 悪意のあるアプリケーションがアプリケーションサービスを活用することを防止するためのシステム及び方法
CN108140094B (zh) 用于安全可信i/o访问控制的技术
WO2015026091A1 (ko) 공통 중간 언어 기반 프로그램을 위한 보안 제공 방법
Li et al. TEEv: Virtualizing trusted execution environments on mobile platforms
CN107851160A (zh) 用于在isa控制下进行多个共存可信执行环境的可信i/o的技术
JP2016515748A (ja) 実行時のアプリケーションメソッドを置き換えるためのシステム及び方法
WO2015023093A1 (ko) 해시를 이용한 동적코드의 무결성 검증 방법
WO2018090201A1 (zh) 一种安全的处理器芯片及终端设备
CN102737188A (zh) 检测恶意网页的方法及装置
JP2013534001A (ja) 仮想化を用いた動画コンテンツの保護
WO2016024838A1 (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
WO2018164503A1 (ko) 상황 인식 기반의 랜섬웨어 탐지
CN110874468A (zh) 应用程序安全保护方法以及相关设备
WO2016064040A1 (ko) 서명정보를 이용하여 응용 프로그램의 위변조 여부를 탐지하는 사용자 단말기 및 그것을 이용한 위변조 탐지 방법
WO2016064044A1 (ko) 모바일 기기 및 상기 모바일 기기의 동작 방법
Flynn et al. Smartphone security
WO2021172765A1 (ko) 전자 장치 및 그 제어 방법
WO2016064043A1 (ko) 사용자 단말기 및 상기 사용자 단말기의 주변기기를 이용한 핵심코드 보호 방법
Khalid et al. Hardware-Assisted Isolation Technologies: Security Architecture and Vulnerability Analysis
WO2016064042A1 (ko) 사용자 단말기 및 그것을 이용한 응용 프로그램의 핵심코드 보호 방법
WO2015156627A1 (ko) 스마트 폰의 듀얼 운영체제를 실행하는 방법
WO2024143952A1 (ko) 모바일 기기의 동적커널모듈 보호 방법 및 이를 이용한 시스템
WO2013042808A1 (ko) 동적분석 및 정적분석 방지를 통한 소프트웨어 실행파일 보호 방법, 그리고 그에 따른 소프트웨어 실행파일 보호 프로그램을 기록한 컴퓨터로 판독가능한 기록매체

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref document number: 2016527337

Country of ref document: JP

Kind code of ref document: A

REEP Request for entry into the european phase

Ref document number: 2015852009

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2015852009

Country of ref document: EP

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15852009

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15105302

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE