KR101566145B1 - 모바일 기기 및 상기 모바일 기기의 동작 방법 - Google Patents
모바일 기기 및 상기 모바일 기기의 동작 방법 Download PDFInfo
- Publication number
- KR101566145B1 KR101566145B1 KR1020150002944A KR20150002944A KR101566145B1 KR 101566145 B1 KR101566145 B1 KR 101566145B1 KR 1020150002944 A KR1020150002944 A KR 1020150002944A KR 20150002944 A KR20150002944 A KR 20150002944A KR 101566145 B1 KR101566145 B1 KR 101566145B1
- Authority
- KR
- South Korea
- Prior art keywords
- coprocessor
- core code
- code
- main processor
- core
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000004891 communication Methods 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 12
- 230000006870 function Effects 0.000 claims description 4
- 238000011017 operating method Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/72—Protecting 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
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는 본 발명의 실시예에 따른 모바일 기기의 동작을 나타낸 흐름도이다.
도 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 : 암호화 공유 메모리
103 : 핵심코드 200 : 시스템 온 칩
300 : 메인 프로세서 301 : 일반코드 실행부
303 : 핵심코드 호출부 305 : 공유 메모리 암복호화부
400 : 코프로세서 401 : 핵심코드 실행부
403 : 핵심코드 응답부 405 : 공유 메모리 암호화부
500 : 코프로세서 드라이버 600 : 핵심코드 저장소
700 : 일반코드 저장부 800 : 동적 랜덤 액세스 메모리
900 : 암호화 공유 메모리
Claims (11)
- 모바일 응용 프로그램의 일반 코드를 실행하는 메인 프로세서,
상기 모바일 응용 프로그램의 핵심 코드를 실행하는 코프로세서,
상기 메인 프로세서 및 상기 코프로세서 사이에 연결되어 상기 메인 프로세서 및 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버, 그리고
상기 코프로세서에게만 접근이 허용되고, 상기 핵심 코드를 저장하는 핵심코드 저장소를 포함하고,
상기 일반 코드는 상기 메인 프로세서에서 실행 가능한 명령어로 구성되며,
상기 코프로세서는,
상기 모바일 응용 프로그램의 설치시 상기 모바일 응용 프로그램으로부터 분리된 상기 핵심 코드를 상기 핵심코드 저장소에 저장하는 모바일 기기. - 삭제
- 제1항에 있어서,
상기 코프로세서 드라이버는,
상기 메인 프로세서로부터 핵심코드 호출을 요청받으면, 상기 코프로세서에게 상기 핵심코드 호출을 전달하고, 상기 코프로세서로부터 핵심코드 처리 결과를 수신하여 상기 메인 프로세서에게 전달하는 모바일 기기. - 제3항에 있어서,
상기 코프로세서는,
상기 코프로세서 드라이버로부터 상기 핵심코드 호출이 전달되면, 상기 핵심코드 저장소로부터 상기 핵심코드를 로드하여 실행하는 모바일 기기. - 제4항에 있어서,
데이터를 암호화하여 공유하기 위한 암호화 공유 메모리를 더 포함하고,
상기 메인 프로세서는,
상기 일반 코드를 실행하는 중에 상기 핵심코드 호출시 상기 일반 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하고,
상기 코프로세서는,
상기 암호화 공유 메모리에 작성된 암호화된 데이터를 복호하여 참조하는 모바일 기기. - 제5항에 있어서,
상기 코프로세서는,
상기 핵심 코드를 실행하는 중에 핵심 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하고,
상기 메인 프로세서는,
상기 암호화 공유 메모리에 작성된 암호화된 데이터를 복호하여 참조하는 모바일 기기. - 제1항에 있어서,
상기 핵심 코드는,
사용자에 의해 선택되거나, 모바일 플랫폼에서 미리 정의한 함수를 이용하여 선택되는 모바일 기기. - 메인 프로세서, 코프로세서 및 상기 메인 프로세서와 상기 코프로세서 간의 통신을 가능하게 하는 코프로세서 드라이버를 포함하는 모바일 기기의 동작 방법으로서,
상기 코프로세서가 상기 모바일 응용 프로그램의 설치시 상기 모바일 응용 프로그램으로부터 분리된 상기 핵심 코드를 핵심코드 저장소에 저장하는 단계,
상기 메인 프로세서가 상기 코프로세서에서 실행 가능한 명령어로 구성된 모바일 응용 프로그램의 핵심 코드를 호출하는 단계,
상기 코프로세서 드라이버가 상기 메인 프로세서로부터 핵심 코드 호출을 수신하여 상기 코프로세서로 전달하는 단계,
상기 코프로세서가 상기 핵심코드 저장소로부터 상기 핵심 코드를 로드하여 실행한 후, 실행 결과를 상기 코프로세서 드라이버에게 전달하는 단계, 그리고
상기 코프로세서 드라이버가 상기 실행 결과를 상기 메인 프로세서에게 전달하는 단계를 포함하는 모바일 기기의 동작 방법. - 삭제
- 제8항에 있어서,
상기 호출하는 단계는,
상기 메인 프로세서가 상기 메인 프로세서에서 실행 가능한 명령어로 구성된 상기 모바일 응용 프로그램의 일반 코드를 실행하는 단계,
상기 핵심 코드 호출이 필요하다고 판단되면, 상기 코프로세서 드라이버에게 상기 핵심 코드를 호출하는 단계를 포함하는 모바일 기기의 동작 방법. - 제10항에 있어서,
상기 메인 프로세서가 상기 일반 코드를 실행하는 중에 상기 핵심코드 호출시 상기 일반 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하는 단계,
상기 코프로세서가 상기 핵심 코드를 실행하는 중에 상기 핵심 코드의 데이터를 암호화된 형태로 상기 암호화 공유 메모리에 작성하는 단계, 그리고
상기 메인 프로세서 및 상기 코프로세서가 상기 암호화 공유 메모리를 통해 암호화된 데이터를 공유하는 단계를 더 포함하는 모바일 기기의 동작 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016527337A JP6297149B2 (ja) | 2014-10-23 | 2015-03-06 | モバイル機器及び該モバイル機器の動作方法 |
PCT/KR2015/002207 WO2016064044A1 (ko) | 2014-10-23 | 2015-03-06 | 모바일 기기 및 상기 모바일 기기의 동작 방법 |
EP15852009.8A EP3057022B1 (en) | 2014-10-23 | 2015-03-06 | Mobile device and method for operating same |
US15/105,302 US20170147798A1 (en) | 2014-10-23 | 2015-03-06 | Mobile Device And Method Of Operating Mobile Device |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140144320 | 2014-10-23 | ||
KR20140144320 | 2014-10-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101566145B1 true KR101566145B1 (ko) | 2015-11-06 |
Family
ID=54601240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150002944A KR101566145B1 (ko) | 2014-10-23 | 2015-01-08 | 모바일 기기 및 상기 모바일 기기의 동작 방법 |
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)
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 (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040039928A1 (en) | 2000-12-13 | 2004-02-26 | Astrid Elbe | Cryptographic processor |
KR101328012B1 (ko) | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
KR101350390B1 (ko) | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | 코드 난독화 장치 및 그 방법 |
Family Cites Families (15)
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 |
GB2367404A (en) * | 2000-03-31 | 2002-04-03 | Gen Dynamics Decisions Systems | Scalable cryptographic engine |
AU2001266572A1 (en) * | 2000-05-11 | 2001-11-20 | Hanna, Michael | Cryptographic data processing systems, computer programs, and methods of operating same |
JP4475894B2 (ja) * | 2002-08-01 | 2010-06-09 | パナソニック株式会社 | 暗号化データを復号して実行用メモリ空間に配置する装置、およびその方法 |
NO20050152D0 (no) * | 2005-01-11 | 2005-01-11 | Dnb Nor Bank Asa | Fremgangsmate ved frembringelse av sikkerhetskode og programmbar anordning for denne |
DE102005022019A1 (de) * | 2005-05-12 | 2007-02-01 | Giesecke & Devrient Gmbh | Sichere Verarbeitung von Daten |
JP2009512087A (ja) * | 2005-10-17 | 2009-03-19 | エヌエックスピー ビー ヴィ | プログラム実行可能イメージの暗号化 |
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 |
KR20120002079A (ko) * | 2010-06-30 | 2012-01-05 | 에스케이플래닛 주식회사 | 어플리케이션 저작권 보호 시스템, 어플리케이션 저작권 보호 장치 및 방법, 그리고 단말 장치 및 상기 단말 장치의 어플리케이션 저작권 보호 방법 |
US8458802B2 (en) * | 2011-04-02 | 2013-06-04 | Intel Corporation | Method and device for managing digital usage rights of documents |
KR20140007250A (ko) * | 2012-07-09 | 2014-01-17 | 주식회사 씽크풀 | 페어링 수행 디지털 시스템 및 그 제공방법 |
KR101223981B1 (ko) * | 2012-07-11 | 2013-01-21 | 주식회사 안랩 | 안전한 애플리케이션 실행을 위한 가상화 장치, 서버 및 방법 |
-
2015
- 2015-01-08 KR KR1020150002944A patent/KR101566145B1/ko active IP Right Grant
- 2015-03-06 EP EP15852009.8A patent/EP3057022B1/en active Active
- 2015-03-06 JP JP2016527337A patent/JP6297149B2/ja active Active
- 2015-03-06 WO PCT/KR2015/002207 patent/WO2016064044A1/ko active Application Filing
- 2015-03-06 US US15/105,302 patent/US20170147798A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040039928A1 (en) | 2000-12-13 | 2004-02-26 | Astrid Elbe | Cryptographic processor |
KR101328012B1 (ko) | 2013-08-12 | 2013-11-13 | 숭실대학교산학협력단 | 애플리케이션 코드 난독화 장치 및 그 방법 |
KR101350390B1 (ko) | 2013-08-14 | 2014-01-16 | 숭실대학교산학협력단 | 코드 난독화 장치 및 그 방법 |
Also Published As
Publication number | Publication date |
---|---|
EP3057022A4 (en) | 2017-05-31 |
WO2016064044A1 (ko) | 2016-04-28 |
EP3057022A1 (en) | 2016-08-17 |
EP3057022B1 (en) | 2019-08-28 |
JP2017501478A (ja) | 2017-01-12 |
US20170147798A1 (en) | 2017-05-25 |
JP6297149B2 (ja) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Do et al. | Is the data on your wearable device secure? An Android Wear smartwatch case study | |
KR102073433B1 (ko) | 하드웨어 보호 애플리케이션에 대한 시스템 서비스 요청 상호작용을 용이하게 하는 기법 | |
US8769305B2 (en) | Secure execution of unsecured apps on a device | |
Strackx et al. | Efficient isolation of trusted subsystems in embedded systems | |
Backes et al. | Appguard–fine-grained policy enforcement for untrusted android applications | |
US9756048B2 (en) | System and methods for executing encrypted managed programs | |
EP2795829B1 (en) | Cryptographic system and methodology for securing software cryptography | |
US20210224378A1 (en) | Securing Virtual-Machine Software Applications | |
CN102737188A (zh) | 检测恶意网页的方法及装置 | |
Ciardo et al. | SMART: Simulation and Markovian analyzer for reliability and timing | |
Bauman et al. | Sgxelide: enabling enclave code secrecy via self-modification | |
WO2012128860A1 (en) | Secure execution of unsecured apps on a device | |
Shewale et al. | Analysis of android vulnerabilities and modern exploitation techniques | |
Haupert et al. | Honey, i shrunk your app security: The state of android app hardening | |
CN110874468A (zh) | 应用程序安全保护方法以及相关设备 | |
Alepis et al. | Hey doc, is this normal?: Exploring android permissions in the post marshmallow era | |
CN108595950A (zh) | 一种结合远程认证的sgx安全增强方法 | |
Fedler et al. | Native code execution control for attack mitigation on android | |
Athanasopoulos et al. | Nacldroid: Native code isolation for android applications | |
Zhang et al. | SoftME: A Software‐Based Memory Protection Approach for TEE System to Resist Physical Attacks | |
WO2016206393A1 (zh) | 管理应用的方法和装置、实现读写操作的方法和装置 | |
Wu et al. | An overview of mobile malware and solutions | |
JP5575950B2 (ja) | 無線端末装置およびシステム保護方法 | |
US10771249B2 (en) | Apparatus and method for providing secure execution environment for mobile cloud | |
KR101566145B1 (ko) | 모바일 기기 및 상기 모바일 기기의 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20181017 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191014 Year of fee payment: 5 |