KR20170108650A - 자기 보호를 이용하여 애플리케이션을 보호하는 방법 - Google Patents

자기 보호를 이용하여 애플리케이션을 보호하는 방법 Download PDF

Info

Publication number
KR20170108650A
KR20170108650A KR1020160032906A KR20160032906A KR20170108650A KR 20170108650 A KR20170108650 A KR 20170108650A KR 1020160032906 A KR1020160032906 A KR 1020160032906A KR 20160032906 A KR20160032906 A KR 20160032906A KR 20170108650 A KR20170108650 A KR 20170108650A
Authority
KR
South Korea
Prior art keywords
application
loader module
program data
data
forged
Prior art date
Application number
KR1020160032906A
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 KR1020160032906A priority Critical patent/KR20170108650A/ko
Publication of KR20170108650A publication Critical patent/KR20170108650A/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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • G06F21/126Interacting with the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 실시 예들에 따른 애플리케이션 보호 방법은, 애플리케이션에 대한 실행 요청이 있을 때, 애플리케이션이 실행되는 컴퓨팅 장치와 통신 가능한 데이터 서버에 저장된 상기 애플리케이션의 프로그램 데이터를 수신하는 단계, 로더 모듈이 상기 애플리케이션을 실행하는 운영체제(OS)의 위변조 여부를 판단하는 단계, 및 상기 OS의 위변조 여부에 따라, 상기 로더 모듈이 상기 프로그램 데이터에 대한 실행 여부를 결정하는 단계를 포함한다.

Description

자기 보호를 이용하여 애플리케이션을 보호하는 방법{METHOD OF SECURING APPLICATION USING SELF PROTECTION}
본 발명의 개념에 따른 실시 예는 애플리케이션을 보호하는 방법에 관한 것으로서, 특히 자기 보호를 이용하여 운영체제의 위변조 여부를 판단하여 애플리케이션을 보호하는 방법에 관한 것이다.
모바일 애플리케이션을 개발할 때, 상기 모바일 애플리케이션은 바이트 코드 등 인터프리터 방식으로 코딩된다. 상기 바이트 코드는 가상 머신(virtual machine)에서 동작하는 실행 프로그램을 위한 이진 표현법으로서, 단순성 때문에 제3자가 상기 바이트 코드에 의해 개발된 프로그램의 알고리즘 또는 원본 코드를 유추하기 쉽고, 따라서 제3자가 상기 바이트 코드로 코딩된 모바일 애플리케이션을 리버스 엔지니어링(reverse engineering)하는 것은 다른 방식에 비해 비교적 용이하다.
상기 리버스 엔지니어링으로부터 상기 모바일 애플리케이션을 보호하기 위해 상기 모바일 애플리케이션의 코드를 암호화할 수 있는데, 이 경우에 상기 모바일 애플리케이션을 실행하고 복호화하는 운영체제(operating system, OS)가 위조 또는 변조된다면 상기 암호화를 이용한 상기 모바일 애플리케이션의 보호가 불가능하다.
1. 공개특허공보 제10-2015-0051835호 (2015.05.13 공개) 2. 등록특허공보 제10-0842042호 (2008.06.23 등록)
본 발명이 이루고자 하는 기술적인 과제는, 자기 보호를 이용한 애플리케이션 보호 방법으로서, 애플리케이션을 실행하는 운영체제의 위조 또는 변조 여부 및 상기 애플리케이션에 대한 위험 요소 존재 여부를 판단한 후 상기 애플리케이션을 복호화함으로써 상기 애플리케이션을 리버스 엔지니어링으로부터 보호하는 애플리케이션 보호 방법을 제공하는 것이다.
본 발명의 실시 예들에 따른 애플리케이션 보호 방법은 애플리케이션에 대한 실행 요청이 있을 때, 애플리케이션이 실행되는 컴퓨팅 장치와 통신 가능한 데이터 서버에 저장된 상기 애플리케이션의 프로그램 데이터를 수신하는 단계, 로더 모듈이 상기 애플리케이션을 실행하는 운영체제(OS)의 위변조 여부를 판단하는 단계, 및 상기 OS의 위변조 여부에 따라, 상기 로더 모듈이 상기 프로그램 데이터에 대한 실행 여부를 결정하는 단계를 포함할 수 있다.
상기 실행 여부를 결정하는 단계는, 상기 OS가 위변조되지 않은 경우, 상기 로더 모듈이 상기 프로그램 데이터를 복호화하는 단계, 및 상기 OS가 복호화된 프로그램 데이터를 이용해 상기 애플리케이션을 실행하는 단계를 포함하고, 상기 프로그램 데이터는 암호화된 상태로 상기 데이터 서버에 저장될 수 있다.
상기 프로그램 데이터를 복호화하는 단계는, 상기 애플리케이션의 실행 정도에 따라, 상기 애플리케이션의 실행에 필요한 데이터만을 복호화할 수 있다.
상기 복호화 여부를 결정하는 단계는, 상기 OS가 위변조된 경우, 상기 로더 모듈이 상기 프로그램 데이터를 복호화하지 않고, 상기 OS는 상기 애플리케이션을 종료할 수 있다.
상기 로더 모듈은 상기 애플리케이션에 내장되고 상기 애플리케이션의 실행이 요청되면 가장 먼저 실행될 수 있다.
상기 로더 모듈은 상기 애플리케이션과 구별되는 다른 로더 프로그램에 내장될 수 있다.
상기 데이터 서버에 저장된 상기 프로그램 데이터의 전부 또는 일부는 상기 애플리케이션의 사용자의 의사에 관계없이 상기 애플리케이션의 공급자에 의해 업데이트될 수 있다.
본 발명의 실시 예들에 따른 애플리케이션 보호 방법은 애플리케이션에 대한 실행 요청이 있을 때, 로더 모듈이 상기 애플리케이션을 실행하는 운영체제(OS)의 위변조 여부를 판단하는 단계; 및 상기 OS의 위변조 여부에 따라, 상기 로더 모듈이 상기 애플리케이션에 포함된 프로그램 데이터에 대한 복호화 여부를 결정하는 단계를 포함하고, 상기 프로그램 데이터는 암호화 모듈에 의해 암호화될 수 있다.
상기 복호화 여부를 결정하는 단계는, 상기 OS가 위변조되지 않은 경우, 상기 로더 모듈이 상기 암호화된 프로그램 데이터를 복호화하는 단계와, 상기 OS가 복호화된 프로그램 데이터를 이용해 상기 애플리케이션을 실행하는 단계를 포함하고, 상기 OS가 위변조된 경우, 상기 로더 모듈이 상기 프로그램 데이터를 복호화하지 않고, 상기 OS는 상기 애플리케이션을 종료할 수 있다.
본 발명의 실시 예들에 따른 컴퓨터로 판독 가능한 기록 매체는 상기 애플리케이션 보호 방법을 수행할 수 있는 컴퓨터 프로그램을 저장할 수 있다.
본 발명의 실시 예에 따른 자기 보호를 이용한 애플리케이션 보호 방법은, 애플리케이션을 실행하는 운영체제의 위조 또는 변조 여부를 판단 후 상기 애플리케이션을 복호화함으로써, 리버스 엔지니어링 등의 역분석으로부터 상기 애플리케이션을 보호할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1a는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다.
도 1b는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다.
도 1c는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다.
도 1d는 본 발명의 실시 예들에 따른 컴퓨팅 시스템의 블록도이다.
도 2는 본 발명의 실시 예들에 따라 애플리케이션을 보호하는 과정을 나타내는 플로우 차트이다.
도 3은 본 발명의 실시 예들에 따라 애플리케이션을 보호하는 과정을 나타내는 플로우 차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서의 모듈(module)이라 함은 본 명세서에서 설명되는 각각의 명칭에 따른 기능과 동작을 수행할 수 있는 하드웨어를 의미할 수도 있고, 또는 특정한 기능과 동작을 수행할 수 있는 컴퓨터 프로그램 코드를 의미할 수도 있고, 또는 특정한 기능과 동작을 수행시킬 수 있는 컴퓨터 프로그램 코드가 탑재된 전자적 기록 매체, 예컨대 프로세서를 의미할 수 있다.
다시 말해, 모듈이란 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
본 명세서에서 위변조라 함은 위조(counterfeit) 및/또는 변조 (falsification)를 의미할 수 있다. 따라서, 본 명세서에서 운영체제(operating system(OS))의 위변조 여부라 함은 상기 OS가 위조 및 변조되거나, 상기 OS가 위조 또는 변조되었는지의 여부를 의미할 수 있다.
도 1a는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다. 도 1a를 참조하면, 컴퓨팅 장치(100)는 프로세서(120), 메모리(140) 및 통신 모듈(160)을 포함할 수 있다.
컴퓨팅 장치(100)는 PC(personal computer) 또는 모바일 컴퓨팅 장치를 의미할 수 있다. 모바일 컴퓨팅 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)을 의미할 수 있다.
프로세서(120)는 컴퓨팅 장치(100)에 포함된 구성 요소들(140 및 160) 중에서 적어도 하나의 작동을 제어할 수 있다. 실시 예들에 따라, 프로세서(120)는 애플리케이션 프로세서(application processor(AP)) 및 모바일 AP로 구현될 수 있으나, 이에 한정되는 것은 아니다. 프로세서(120)는 CPU(central processing unit)를 의미할 수 있다.
프로세서(120)는 메모리(140)에 저장된 운영체제(operating system(OS), 220A-1, 220A-2, 집합적으로(collectively) "220A"라 한다.) 및/또는 애플리케이션(240A-1, 240A-2, 집합적으로 "240A"라 한다.)을 실행할 수 있다. 애플리케이션 (240A)은 애플리케이션 소프트웨어를 의미하고, 애플리케이션(240A)은 웹 애플리케이션(web application) 또는 웹 앱을 포함할 수 있다. 상기 웹 애플리케이션 또는 상기 웹 앱은 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용 소프트웨어를 의미할 수 있다.
메모리(140)는 프로세서(120)의 작동에 필요한 명령들 및/또는 복수의 애플리케이션들을 저장할 수 있다. 특히, 메모리(120)는 본 발명의 실시 예들에 따른 OS(220A)와 애플리케이션(240A)을 저장할 수 있다.
실시 예들에 따라, 메모리(140)는 프로세서(120)의 작동 메모리로 작동할 수 있고, DRAM(dynamic random access memory) 또는 SRAM(static RAM)으로 구현될 수 있다. 다른 실시 예들에 따라, 메모리(140)는 불휘발성 메모리 또는 플래시-기반 메모리로 구현될 수 있다. 상기 플래시-기반 메모리는 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC (embedded MMC(eMMC)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 또는 솔리드 스테이트 드라이브(solid state drive(SSD))로 구현될 수 있다.
비록 도 1a에서는 하나의 메모리(140)가 도시되어 있으나, 도 1a의 메모리(140)는 하나 또는 그 이상의 메모리들(예컨대, 휘발성 메모리 및/또는 불휘발성 메모리)을 포함하는 집합적 의미로 이해될 수 있다. 예컨대, 메모리(140)는 화면 캡쳐 이미지가 임시로 저장되는 클립보드(clipboard)를 포함할 수 있으나 이에 한정되는 것은 아니다.
OS(220A)는 컴퓨팅 장치(100)에 포함된 하드웨어(들) 및/또는 소프트웨어(들)를 관리할 수 있다. OS(220A)는 애플리케이션(240A)의 실행을 제어할 수 있다. 여기서 (들)은 복수의 구성요소들을 의미할 수 있다.
메모리(140)로부터 프로세서(120)로 로드(load)되고, 프로세서(120)에 의해 실행되는 애플리케이션(240A)은 프로그램 데이터(245A)와 로더 모듈(265A)을 내장(또는 포함)할 수 있다.
프로그램 데이터(245A)는 애플리케이션(240A)의 실행에 필요한 데이터를 포함할 수 있다. 애플리케이션(240A)이 프로세서(120)에 의해 실행될 때, 프로세서(120)는 프로그램 데이터(245A)를 메모리(140)로부터 읽어올 수 있다.
로더 모듈(265A)은 로더 모듈(265A) 및/또는 OS(220A)가 위변조되었는지를 판단할 수 있고, 판단 결과에 기초하여 암호화된 애플리케이션(240A)의 복호화 여부를 결정할 수 있다. 로더 모듈(265A)은 애플리케이션(240A)이 실행될 때 가장 먼저 실행될 수 있다.
실시 예들에 따라, 로더 모듈(265A)은 해시 값(hash value 또는 hash code)들을 이용하여 로더 모듈(265A) 및/또는 OS(220A)의 위변조 여부를 판단할 수 있다.
실시 예들에 따라, 로더 모듈(265A)은 해시 값들을 생성하는 제1해시 함수를 이용하여 로더 모듈(265A)의 프로그램 코드에 대응하는 제1해시 값들을 생성할 수 있고, 로더 모듈(265A)은 상기 제1해시 값들과, 외부의 서버로부터 실시간으로 다운로드되고 위변조되지 않은 로더 모듈(265A)의 프로그램 코드에 대응하는 제2해쉬 값들을 비교할 수 있다.
비교 결과, 상기 제1해시 값들과 상기 제2해시 값들이 일치하는 경우, 로더 모듈(265A)은 로더 모듈(265A) 자신이 위변조되지 않았다고 판단할 수 있고, 상기 제1해시 값들과 상기 제2해시 값들이 일치하지 않는 경우, 로더 모듈(265A)은 로더 모듈(265A) 자신이 위변조되었다고 판단할 수 있다.
로더 모듈(265A)이 위변조되지 않았다고 판단된 경우, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 판단할 수 있다.
로더 모듈(265A)이 위변조되었다고 판단된 경우, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 판단하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265A)은 로더 모듈(265A)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240A)을 강제로 종료할 수 있고, 애플리케이션(240A)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 애플리케이션(240A)이 컴퓨팅 장치(100)에 다운로드(또는 인스톨) 될 때, 위변조되지 않은 애플리케이션(240A)의 프로그램 코드에 대응하는 제3해시 값들과, 해시 값(hash value)들을 생성하는 제2해시 함수(hash function)도 함께 다운로드(또는 인스톨) 될 수 있다.
상기 제1해시 함수와 상기 제2해시 함수는 동일한 해시 함수일 수 있고, 그렇지 않을 수 있다.
로더 모듈(265A)은 상기 제2해시 함수를 이용하여 애플리케이션(240A)의 상기 프로그램 코드에 대응하는 제4해시 값들을 생성할 수 있고, 로더 모듈(265A)은 상기 제3해시 값들과 상기 제4해시 값들을 비교할 수 있다.
비교 결과, 상기 제3해시 값들과 상기 제4해시 값들이 일치하는 경우, 로더 모듈(265A)은 애플리케이션(240A)이 위변조되지 않았다고 판단할 수 있고, 상기 제3해시 값들과 상기 제4해시 값들이 일치하지 않는 경우, 로더 모듈(265A)은 애플리케이션(240A)이 위변조되었다고 판단할 수 있다.
로더 모둘(265A)이 OS(220A)가 위변조되지 않았다고 판단한 경우, 로더 모듈(265A)은 암호화된 애플리케이션(240A)을 복호화(decode or decrypt)할 수 있다. 복호화된 애플리케이션(240A)은 OS(220A)의 제어에 따라 실행될 수 있다.
로더 모듈(265A)이 OS(220A)가 위변조되었다고 판단한 경우, 로더 모듈(265A)은 암호화된 애플리케이션(240A)을 복호화하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240A)을 강제로 종료할 수 있고, 애플리케이션(240A)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 로더 모듈(265A)은 애플리케이션(240A)이 개발자 모드에서 실행되는지 여부를 판단할 수 있고, OS(220A)가 모바일 장치에서 실행되는 모바일 OS가 아닌 경우, 로더 모듈(265A)은 해킹 프로그램의 실행 여부, 프로그램 데이터(245A)의 코드를 분석하는 코드 분석 툴의 실행 여부 및/또는 애플리케이션(240A)이 에뮬레이터(emulator) 상에서 실행되는지 여부를 판단할 수 있으나, 이에 한정되는 것은 아니다. 즉, 로더 모듈(265A)은 제3자에 의한 리버스 엔지니어링으로부터 애플리케이션(240A)을 보호할 수 있는 적절한 기능을 수행할 수 있다.
암호화 모듈은 애플리케이션(240A)을 실행하는데 필요한 프로그램 데이터(245A)를 동시에, 순차적으로, 또는 랜덤하게 암호화할 수 있다. 상기 암호화 모듈은 애플리케이션(240A)과 구분되는 별개의 모듈일 수 있다.
실시 예들에 따라, 상기 암호화 모듈은 프로그램 데이터(245A) 전부를 암호화하거나, 프로그램 데이터(245A) 중에서 일부만 암호화할 수 있고, 로더 모듈(265A)은 프로그램 데이터(245A) 중에서 암호화된 데이터에 대한 복호화 여부를 결정할 수 있다.
실시 예들에 따라, 로더 모듈(265A)은 상기 암호화된 데이터 전부를 한번에 복호화할 수 있고, 상기 암호화된 데이터 중에서 애플리케이션(240A)의 실행에 필요한 데이터만을 복호화할 수 있다. 예컨대, 로더 모듈(265A)은 애플리케이션(240A)의 실행 정도에 따라 복호화하는 부분을 변경할 수 있으며, 애플리케이션(240A)의 실행 정도에 따라 프로그램 데이터(245A)에 포함된 프로그램 헤더와 프로그램 테일, 프로그램 코드, 프로그램 이미지를 순서대로 복호화함으로써, 프로그램 데이터(245A)의 로딩 시간을 줄일 수 있다.
상기 암호화 모듈은 CBC(cipher block chaining) 모드 암호화 방식 또는 CTR(counter) 모드 암호화 방식을 이용할 수 있으나, 이에 한정되는 것은 아니다.
통신 모듈(160)은 컴퓨팅 장치(100) 외부의 다른 컴퓨팅 장치로 명령 및/또는 데이터를 전송할 수 있고, 상기 다른 컴퓨팅 장치로부터 명령 및/또는 데이터를 수신할 수 있다. 통신 모듈(160)은 컴퓨팅 장치(100)를 상기 다른 컴퓨팅 장치와 유선 네트워크 및/또는 무선 네트워크를 통해 연결할 수 있다.
통신 모듈(160)은 인터넷, Wi-Fi(wireless fidelity)와 같은 무선 근거리 통신망(wireless local area network(WLAN)), 블루투스(bluetooth)와 같은 무선 개인 통신망(wireless personal area network(WPAN)), 무선 USB(wireless universal serial bus), 지그비(Zigbee), NFC(near field communication), RFID(radio-frequency identification), 또는 이동 통신망 (mobile cellular network)을 통해 다른 컴퓨팅 장치와 신호들을 주고받을 수 있다.
도 1b는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다. 도 1a 및 1b를 참조하면, 도 1b에 도시된 통신 모듈(160)과 프로그램 데이터(245A) 각각의 기능과 성질은 도 1a에서 설명한 통신 모듈(160)과 프로그램 데이터(245A) 각각의 기능과 성질과 동일할 수 있다.
프로세서(120)는 메모리(140)에 저장된 OS(220A), 애플리케이션(240B-1, 240B-2, 집합적으로 "240B"라 한다.) 및/또는 로더 애플리케이션(260-1, 260-2, 집합적으로 "260"이라 한다)을 실행할 수 있다.
메모리(140)는 프로세서(120)의 작동에 필요한 명령들 및/또는 복수의 애플리케이션을 저장할 수 있다. 특히, 메모리(120)는 본 발명의 실시 예들에 따른 OS(220A), 애플리케이션(240B) 및 로더 애플리케이션(260)을 저장할 수 있다.
OS(220A)는 컴퓨팅 장치(100)에 포함된 하드웨어(들) 및/또는 소프트웨어(들)를 관리할 수 있다. OS(220A)는 애플리케이션(240B)과 로더 애플리케이션(260)의 실행을 제어할 수 있다.
메모리(140)로부터 프로세서(120)로 로드되고, 프로세서(120)에 의해 실행되는 애플리케이션(240B)은 프로그램 데이터(245A)를 내장(또는 포함)할 수 있다. 또한, 메모리(140)로부터 프로세서(120)로 로드되고, 프로세서(120)에 의해 실행되는 로더 애플리케이션(260)은 로더 모듈(265B)을 내장(또는 포함)할 수 있다.
로더 애플리케이션(260)에 포함된 로더 모듈(265B)은 로더 모듈(265B) 및/또는 OS(220A)가 위변조되었는지를 판단할 수 있고, 판단 결과에 기초하여 암호화된 애플리케이션(240B)의 복호화 여부를 결정할 수 있다. 로더 모듈(265B)은 애플리케이션(240B)이 실행될 때 가장 먼저 실행될 수 있다.
실시 예들에 따라, 로더 모듈(265B)은 해시 값(hash value 또는 hash code)들을 이용하여 로더 모듈(265B) 및/또는 OS(220A)의 위변조 여부를 판단할 수 있다.
실시 예들에 따라, 로더 모듈(265B)은 해시 값들을 생성하는 제1해시 함수를 이용하여 로더 모듈(265B)의 프로그램 코드에 대응하는 제1해시 값들을 생성할 수 있고, 로더 모듈(265A)은 상기 제1해시 값들과, 외부의 서버로부터 실시간으로 다운로드되고 위변조되지 않은 로더 모듈(265B)의 프로그램 코드에 대응하는 제2해쉬 값들을 비교할 수 있다.
비교 결과, 상기 제1해시 값들과 상기 제2해시 값들이 일치하는 경우, 로더 모듈(265B)은 로더 모듈(265B) 자신이 위변조되지 않았다고 판단할 수 있고, 상기 제1해시 값들과 상기 제2해시 값들이 일치하지 않는 경우, 로더 모듈(265B)은 로더 모듈(265B) 자신이 위변조되었다고 판단할 수 있다.
로더 모듈(265B)이 위변조되지 않았다고 판단된 경우, 로더 모듈(265B)은 OS(220A)의 위변조 여부를 판단할 수 있다.
로더 모듈(265B)이 위변조되었다고 판단된 경우, 로더 모듈(265B)은 OS(220A)의 위변조 여부를 판단하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265B)은 로더 모듈(265B)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240B)을 강제로 종료할 수 있고, 애플리케이션(240B)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 애플리케이션(240B)이 컴퓨팅 장치(100)에 다운로드(또는 인스톨) 될 때, 위변조되지 않은 애플리케이션(240B)의 프로그램 코드에 대응하는 제3해시 값들과, 해시 값(hash value)들을 생성하는 제2해시 함수(hash function)도 함께 다운로드(또는 인스톨) 될 수 있다.
상기 제1해시 함수와 상기 제2해시 함수는 동일한 해시 함수일 수 있고, 그렇지 않을 수 있다.
로더 모듈(265B)은 상기 제2해시 함수를 이용하여 애플리케이션(240B)의 상기 프로그램 코드에 대응하는 제4해시 값들을 생성할 수 있고, 로더 모듈(265B)은 상기 제3해시 값들과 상기 제4해시 값들을 비교할 수 있다.
비교 결과, 상기 제3해시 값들과 상기 제4해시 값들이 일치하는 경우, 로더 모듈(265B)은 애플리케이션(240B)이 위변조되지 않았다고 판단할 수 있고, 상기 제3해시 값들과 상기 제4해시 값들이 일치하지 않는 경우, 로더 모듈(265B)은 애플리케이션(240B)이 위변조되었다고 판단할 수 있다.
로더 모듈(265B)이 OS(220A)가 위변조되지 않았다고 판단한 경우, 로더 모듈(265B)은 암호화된 애플리케이션(240B)을 복호화할 수 있다. 복호화된 애플리케이션(240B)은 OS(220A)의 제어에 따라 실행될 수 있다.
로더 모듈(265B)이 OS(220A)가 위변조되었다고 판단한 경우, 로더 모듈(265B)은 암호화된 애플리케이션(240B)을 복호화하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265B)은 OS(220A)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240B)을 강제로 종료할 수 있고, 애플리케이션(240B)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 로더 모듈(265B)은 애플리케이션(240B)이 개발자 모드에서 실행되는지 여부를 판단할 수 있고, OS(220A)가 모바일 장치에서 실행되는 모바일 OS가 아닌 경우, 로더 모듈(265B)은 해킹 프로그램의 실행 여부, 프로그램 데이터(245A)의 코드를 분석하는 코드 분석 툴의 실행 여부 및/또는 애플리케이션(240B)이 에뮬레이터(emulator) 상에서 실행되는지 여부를 판단할 수 있으나, 이에 한정되는 것은 아니다. 즉, 로더 모듈(265B)은 제3자에 의한 리버스 엔지니어링으로부터 애플리케이션(240B)을 보호할 수 있는 적절한 기능을 수행할 수 있다.
암호화 모듈은 애플리케이션(240B)을 실행하는데 필요한 프로그램 데이터(245A)를 동시에, 순차적으로, 또는 랜덤하게 암호화할 수 있다. 상기 암호화 모듈은 애플리케이션(240B)과 구분되는 별개의 모듈일 수 있다.
실시 예들에 따라, 상기 암호화 모듈은 프로그램 데이터(245A) 전부를 암호화하거나, 프로그램 데이터(245A) 중에서 일부만 암호화할 수 있고, 로더 모듈(265A)은 프로그램 데이터(245A) 중에서 암호화된 데이터에 대한 복호화 여부를 결정할 수 있다.
실시 예들에 따라, 로더 모듈(265B)은 상기 암호화된 데이터 전부를 한번에 복호화할 수 있고, 상기 암호화된 데이터 중에서 애플리케이션(240B)의 실행에 필요한 데이터만을 복호화할 수 있다. 예컨대, 로더 모듈(265B)은 애플리케이션(240B)의 실행 정도에 따라 복호화하는 부분을 변경할 수 있으며, 애플리케이션(240B)의 실행 정도에 따라 프로그램 데이터(245A)에 포함된 프로그램 헤더와 프로그램 테일, 프로그램 코드, 프로그램 이미지를 순서대로 복호화함으로써, 프로그램 데이터(245A)의 로딩 시간을 줄일 수 있다.
도 1c는 본 발명의 실시 예들에 따른 컴퓨팅 장치의 블록도이다. 도 1a 및 1c를 참조하면, 도 1c에 도시된 메모리(140), 통신 모듈(160) 및 프로그램 데이터(245A)의 기능과 성질은 도 1a에서 설명한 메모리(140), 통신 모듈(160), 및 프로그램 데이터(245A)의 기능과 성질과 동일할 수 있다.
프로세서(120)는 메모리에 저장된 OS(220B-1, 220B-2, 집합적으로 "220B"라 한다) 및/또는 애플리케이션(240B)을 실행할 수 있다.
메모리(140)는 프로세서(120)의 작동에 필요한 명령들 및/또는 복수의 애플리케이션을 저장할 수 있다. 특히, 메모리(120)는 본 발명의 실시 예들에 따른 OS(220B) 및 애플리케이션(240B)을 저장할 수 있다.
메모리(140)로부터 프로세서(120)로 로드되고, 프로세서(120)에 의해 실행되는 애플리케이션(240B)은 프로그램 데이터(245A)를 내장(또는 포함)할 수 있다.
실시 예들에 따라, 로더 모듈(265C)은 도커(docker) 형태로 구현될 수 있다.
본 명세서에서, 상기 도커라 함은 OS(220B) 위에 도커 엔진(docker engine)을 구성하고, 상기 도커 엔진을 기반으로 컨테이너들(containers)을 구성하는 방식으로 운영되는 가상화 기반의 운영체제를 의미할 수 있다. 실시 예들에 따라, OS(220B)는 리눅스(linux)일 수 있다. 상기 도커를 설명하기 위해 "https://www.docker.com/what-docker"를 참조로서 포함한다.
로더 모듈(265C)은 로더 모듈(265C) 및/또는 OS(220B)가 위변조되었는지를 판단할 수 있고, 판단 결과에 기초하여 암호화된 애플리케이션(240B)을 복호화 여부를 결정할 수 있다. 로더 모듈(265C)은 애플리케이션(240B)의 실행이 요청된 경우, 애플리케이션(240B)보다 먼저 실행될 수 있다.
실시 예들에 따라, 로더 모듈(265C)은 해시 값(hash value 또는 hash code)들을 이용하여 로더 모듈(265A) 및/또는 OS(220B)의 위변조 여부를 판단할 수 있다.
실시 예들에 따라, 로더 모듈(265C)은 해시 값들을 생성하는 제1해시 함수를 이용하여 로더 모듈(265C)의 프로그램 코드에 대응하는 제1해시 값들을 생성할 수 있고, 로더 모듈(265C)은 상기 제1해시 값들과, 외부의 서버로부터 실시간으로 다운로드되고 위변조되지 않은 로더 모듈(265C)의 프로그램 코드에 대응하는 제2해쉬 값들을 비교할 수 있다.
비교 결과, 상기 제1해시 값들과 상기 제2해시 값들이 일치하는 경우, 로더 모듈(265C)은 로더 모듈(265C) 자신이 위변조되지 않았다고 판단할 수 있고, 상기 제1해시 값들과 상기 제2해시 값들이 일치하지 않는 경우, 로더 모듈(265C)은 로더 모듈(265C) 자신이 위변조되었다고 판단할 수 있다.
로더 모듈(265C)이 위변조되지 않았다고 판단된 경우, 로더 모듈(265C)은 OS(220B)의 위변조 여부를 판단할 수 있다.
로더 모듈(265C)이 위변조되었다고 판단된 경우, 로더 모듈(265C)은 OS(220B)의 위변조 여부를 판단하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265C)은 로더 모듈(265C)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240B)을 강제로 종료할 수 있고, 애플리케이션(240B)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 애플리케이션(240B)이 컴퓨팅 장치(100)에 다운로드(또는 인스톨) 될 때, 위변조되지 않은 애플리케이션(240B)의 프로그램 코드에 대응하는 제3해시 값들과, 해시 값(hash value)들을 생성하는 제2해시 함수(hash function)도 함께 다운로드(또는 인스톨) 될 수 있다.
상기 제1해시 함수와 상기 제2해시 함수는 동일한 해시 함수일 수 있고, 그렇지 않을 수 있다.
로더 모듈(265C)은 상기 제2해시 함수를 이용하여 애플리케이션(240B)의 프로그램 코드에 대응하는 제4해시 값들을 생성할 수 있고, 로더 모듈(265C)은 상기 제3해시 값들과 상기 제4해시 값들을 비교할 수 있다.
비교 결과, 상기 제3해시 값들과 상기 제4해시 값들이 일치하는 경우, 로더 모듈(265C)은 애플리케이션(240B)이 위변조되지 않았다고 판단할 수 있고, 상기 제3해시 값들과 상기 제4해시 값들이 일치하지 않는 경우, 로더 모듈(265C)은 애플리케이션(240B)이 위변조되었다고 판단할 수 있다.
로더 모듈(265C)이 OS(220B)가 위변조되지 않았다고 판단한 경우, 로더 모듈(265B)은 암호화된 애플리케이션(240B)을 복호화할 수 있다. 복호화된 애플리케이션(240B)은 OS(220B)의 제어에 따라 실행될 수 있다.
로더 모듈(265C)이 OS(220B)가 위변조되었다고 판단한 경우, 로더 모듈(265C)은 암호화된 애플리케이션(240B)을 복호화하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265C)은 OS(220B)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240B)을 강제로 종료할 수 있고, 애플리케이션(240B)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 로더 모듈(265C)은 애플리케이션(240A)이 개발자 모드에서 실행되는지 여부를 판단할 수 있고, OS(220B)가 모바일 장치에서 실행되는 모바일 OS가 아닌 경우, 로더 모듈(265C)은 해킹 프로그램의 실행 여부, 프로그램 데이터(245A)의 코드를 분석하는 코드 분석 툴의 실행 여부 및/또는 애플리케이션(240B)이 에뮬레이터(emulator) 상에서 실행되는지 여부를 판단할 수 있으나, 이에 한정되는 것은 아니다. 즉, 로더 모듈(265C)은 제3자에 의한 리버스 엔지니어링으로부터 애플리케이션(240B)을 보호할 수 있는 적절한 기능을 수행할 수 있다.
암호화 모듈은 애플리케이션(240B)을 실행하는데 필요한 프로그램 데이터(245A)를 동시에, 순차적으로, 또는 랜덤하게 암호화할 수 있다. 상기 암호화 모듈은 애플리케이션(240A)과 구분되는 별개의 모듈일 수 있다.
실시 예들에 따라, 상기 암호화 모듈은 프로그램 데이터(245A) 전부를 암호화하거나, 프로그램 데이터(245A) 중에서 일부만 암호화할 수 있고, 로더 모듈(265A)은 프로그램 데이터(245A) 중에서 암호화된 데이터에 대한 복호화 여부를 결정할 수 있다.
실시 예들에 따라, 로더 모듈(265C)은 상기 암호화된 데이터 전부를 한번에 복호화할 수 있고, 상기 암호화된 데이터 중에서 애플리케이션(240B)의 실행에 필요한 데이터만을 복호화할 수 있다. 예컨대, 로더 모듈(265C)은 애플리케이션(240B)의 실행 정도에 따라 복호화하는 부분을 변경할 수 있으며, 애플리케이션(240B)의 실행 정도에 따라 프로그램 데이터(245A)에 포함된 프로그램 헤더와 프로그램 테일, 프로그램 코드, 프로그램 이미지를 순서대로 복호화함으로써, 프로그램 데이터(245A)의 로딩 시간을 줄일 수 있다.
도 1d는 본 발명의 실시 예들에 따른 컴퓨팅 시스템의 블록도이다. 도 1a 및 1d를 참조하면, 컴퓨팅 시스템은 컴퓨팅 장치(100) 및 데이터 서버(300)를 포함할 수 있다.
컴퓨팅 장치(100)는 데이터 서버(300)에 저장된 데이터를 리드(read)(또는 로드) 하고, 데이터를 데이터 서버(300)에 라이트(write) 할 수 있다. 컴퓨팅 장치(100)는 애플리케이션(240C)의 실행이 요청된 경우, 데이터 서버(300)에 저장된 프로그램 데이터(245B)를 리드(또는 로드) 할 수 있다.
실시 예들에 따라, 프로그램 데이터(245B)는 암호화 모듈에 의해 암호화된 채로 데이터 서버(300)에 저장되어 있을 수도 있고, 암호화되지 않은 채로 데이터 서버(300)에 저장되어 있을 수 있다.
따라서, 프로그램 데이터(245B)가 암호화된 채로 데이터 서버(300)에 저장되어 있는 경우, 컴퓨팅 장치(100)는 암호화된 프로그램 데이터(245B)를 리드(또는 로드) 하고, 프로그램 데이터(245B)가 암호화되지 않은 채로 데이터 서버(300)에 저장되어 있는 경우, 컴퓨팅 장치(100)는 암호화되지 않은 프로그램 데이터(245B)를 리드(또는 로드) 할 수 있다.
도 1d에 도시된 프로세서(120), 메모리(140) 및 OS(220A)의 기능과 성질은 도 1a에서 설명한 프로세서(120), 메모리(140) 및 OS(220A)의 기능과 성질과 동일할 수 있다.
통신 모듈(160)은 무선 네트워크 및/또는 유선 네트워크를 통해 데이터 서버(300)와 컴퓨팅 장치(100)를 서로 연결할 수 있다.
애플리케이션(240C)의 실행이 요청된 경우, OS(220A)는 통신 모듈(160)을 통해 데이터 서버(300)에 저장된 프로그램 데이터(245B)를 리드 할 수 있다. 실시 예들에 따라, OS(220A)는 프로그램 데이터(245B) 중에서 애플리케이션(240C)의 실행에 필요한 데이터만을 리드 할 수 있고, 프로그램 데이터(245B)에 포함된 복수의 데이터(247-1~247-N, N은 4 이상의 자연수)를 전부 리드 할 수 있다.
메모리(140)로부터 프로세서(120)로 로드되고, 프로세서(120)에 의해 실행되는 애플리케이션(240C-1, 240C-2, 집합적으로 "240C"라 한다.)은 로더 모듈(265A)을 내장(또는 포함)할 수 있다.
로더 모듈(265A)은 로더 모듈(265A) 및/또는 OS(220A)가 위변조되었는지를 판단할 수 있고, 판단 결과에 기초하여 애플리케이션(240C)의 실행 여부를 결정할 수 있다. 로더 모듈(265A)은 애플리케이션(240C)의 실행이 요청된 경우, 가장 먼저 실행될 수 있다.
실시 예들에 따라, 로더 모듈(265A)은 해시 값(hash value 또는 hash code)들을 이용하여 로더 모듈(265A) 및/또는 OS(220A)의 위변조 여부를 판단할 수 있다.
실시 예들에 따라, 로더 모듈(265A)은 해시 값들을 생성하는 제1해시 함수를 이용하여 로더 모듈(265A)의 프로그램 코드에 대응하는 제1해시 값들을 생성할 수 있고, 로더 모듈(265A)은 상기 제1해시 값들과, 외부의 서버로부터 실시간으로 다운로드되고 위변조되지 않은 로더 모듈(265A)의 프로그램 코드에 대응하는 제2해쉬 값들을 비교할 수 있다.
비교 결과, 상기 제1해시 값들과 상기 제2해시 값들이 일치하는 경우, 로더 모듈(265A)은 로더 모듈(265A) 자신이 위변조되지 않았다고 판단할 수 있고, 상기 제1해시 값들과 상기 제2해시 값들이 일치하지 않는 경우, 로더 모듈(265A)은 로더 모듈(265A) 자신이 위변조되었다고 판단할 수 있다.
로더 모듈(265A)이 위변조되지 않았다고 판단된 경우, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 판단할 수 있다.
로더 모듈(265A)이 위변조되었다고 판단된 경우, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 판단하지 않을 수 있다. 실시 예들에 따라, 로더 모듈(265A)은 로더 모듈(265A)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240C)을 강제로 종료할 수 있고, 애플리케이션(240C)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 애플리케이션(240C)이 컴퓨팅 장치(100)에 다운로드(또는 인스톨) 될 때, 위변조되지 않은 애플리케이션(240C)의 프로그램 코드에 대응하는 제3해시 값들과, 해시 값(hash value)들을 생성하는 제2해시 함수도 함께 다운로드(또는 인스톨) 될 수 있다.
상기 제1해시 함수와 상기 제2해시 함수는 동일한 해시 함수일 수 있고, 그렇지 않을 수 있다.
로더 모듈(265A)은 상기 제2해시 함수를 이용하여 애플리케이션(240C)의 프로그램 코드에 대응하는 제4해시 값들을 생성할 수 있고, 로더 모듈(265A)은 상기 제3해시 값들과 상기 제4해시 값들을 비교할 수 있다.
비교 결과, 상기 제3해시 값들과 상기 제4해시 값들이 일치하는 경우, 로더 모듈(265A)은 애플리케이션(240C)이 위변조되지 않았다고 판단할 수 있고, 상기 제3해시 값들과 상기 제4해시 값들이 일치하지 않는 경우, 로더 모듈(265A)은 애플리케이션(240C)이 위변조되었다고 판단할 수 있다.
실시 예들에 따라, 프로그램 데이터(245B)가 암호화되지 않고, 로더 모듈(265A)이 OS(220A)가 위변조되지 않았다고 판단한 경우, 애플리케이션(240C)은 OS(220A)의 제어에 따라 실행될 수 있다.
실시 예들에 따라, 프로그램 데이터(245B)가 암호화되고, 로더 모듈(265A)이 OS(220A)가 위변조되지 않았다고 판단한 경우, 로더 모듈(265A)은 암호화된 애플리케이션(240B)을 복호화할 수 있다. 복호화된 애플리케이션(240C)은 OS(220A)의 제어에 따라 실행될 수 있다.
로더 모듈(265A)이 OS(220A)가 위변조되었다고 판단한 경우, 로더 모듈(265A)은 애플리케이션(240C)을 실행하지 않을 수 있다. 실시 예들에 따라, 프로그램 데이터(245B)가 암호화된 경우, 로더 모듈(265A)은 프로그램 데이터(245B)를 복호화하지 않을 수 있다.
실시 예들에 따라, 로더 모듈(265A)이 OS(220A)가 위변조되었다고 판단한 경우, 로더 모듈(265A)은 OS(220A)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240C)을 강제로 종료할 수 있고, 애플리케이션(240C)의 종료 여부를 묻는 메세지를 생성할 수 있으나, 이에 한정되는 것은 아니다.
실시 예들에 따라, 로더 모듈(265A)은 애플리케이션(240A)이 개발자 모드에서 실행되는지 여부를 판단할 수 있고, OS(220A)가 모바일 장치에서 실행되는 모바일 OS가 아닌 경우, 로더 모듈(265A)은 해킹 프로그램의 실행 여부, 프로그램 데이터(245B)의 코드를 분석하는 코드 분석 툴의 실행 여부 및/또는 애플리케이션(240C)이 에뮬레이터(emulator) 상에서 실행되는지 여부를 판단할 수 있으나, 이에 한정되는 것은 아니다. 즉, 로더 모듈(265A)은 제3자에 의한 리버스 엔지니어링으로부터 애플리케이션(240C)을 보호할 수 있는 적절한 기능을 수행할 수 있다.
암호화 모듈은 애플리케이션(240C)을 실행하는데 필요한 프로그램 데이터(245B)를 동시에, 순차적으로, 또는 랜덤하게 암호화할 수 있다. 상기 암호화 모듈은 애플리케이션(240C)과 구분되는 별개의 모듈일 수 있다.
실시 예들에 따라, 상기 암호화 모듈은 프로그램 데이터(245B) 전부를 암호화하거나, 프로그램 데이터(245B) 중에서 일부만 암호화할 수 있고, 로더 모듈(265A)은 프로그램 데이터(245B) 중에서 암호화된 데이터에 대한 복호화 여부를 결정할 수 있다.
프로그램 데이터(245B)가 암호화되고, OS(220A)가 프로그램 데이터(245B) 중에서 애플리케이션(240C)의 실행에 필요한 데이터만을 리드한 경우, 로더 모듈(265A)은 리드한 데이터 전부를 복호화할 수 있고, 프로그램 데이터(245B)가 암호화되고, OS(220A)가 프로그램 데이터(245B)에 포함된 복수의 데이터(247-1~247-N, N은 4보다 큰 자연수)를 전부 리드한 경우, 로더 모듈(265A)은 리드한 데이터 전부를 복호화하거나, 리드한 데이터 중에서 애플리케이션(240C)의 실행에 필요한 데이터만을 복호화할 수 있다.
로더 모듈(265A)은 애플리케이션(240C)의 실행 정도에 따라 복호화하는 부분을 변경할 수 있으며, 애플리케이션(240C)의 실행 정도에 따라 프로그램 데이터(245B)에 포함된 프로그램 헤더와 프로그램 테일, 프로그램 코드, 프로그램 이미지를 순서대로 복호화함으로써, 프로그램 데이터(245B)의 로딩 시간을 줄일 수 있다.
데이터 서버(300)는 프로그램 데이터(245B)를 저장 또는 포함할 수 있다. 프로그램 데이터(245B)는 복수의 데이터(247-1~247-N)를 포함할 수 있다. 실시 예들에 따라, 복수의 데이터(247-1~247-N)는 애플리케이션(240C)을 실행하기 위해 필요한 데이터의 전부일 수 있고, 애플리케이션(240C)을 실행하기 위해 필요한 데이터의 일부일 수 있다.
프로그램 데이터(245B)가 암호화된 채로 데이터 서버(300)에 저장된 경우, 복수의 데이터(247-1~247-N) 또한 암호화된 채로 데이터 서버(300)에 저장될 수 있고, 프로그램 데이터(245B)가 암호화되지 않은 채로 데이터 서버(300)에 저장된 경우, 복수의 데이터(247-1~247-N) 또한 암호화되지 않은 채로 데이터 서버(300)에 저장될 수 있다.
복수의 데이터(247-1~247-N)가 애플리케이션(240C)을 실행하기 위해 필요한 데이터의 일부일 때, 애플리케이션(240C)을 실행하기 위해 필요한 나머지 데이터는 애플리케이션(240C)에 포함되어 있거나, 데이터 서버(300)와는 다른 서버에 저장되어 있을 수 있다.
실시 예들에 따라, 데이터 서버(300)에 저장 또는 포함된 프로그램 데이터(245B)에 포함된 복수의 데이터(247-1~247-N) 중에서 일부 또는 전부는 애플리케이션(240C)의 사용자의 의사에 관계없이 애플리케이션(240C)의 공급자 또는 제3자에 의해 데이터의 내용이 변경(또는 업데이트) 될 수 있다.
예컨대, 애플리케이션(240C)이 백신 프로그램 또는 인터넷 뱅킹 보안 프로그램일 경우, 상기 공급자 또는 상기 제3자에 의해, 데이터 서버(300)에 저장 또는 포함된 백신 데이터의 업데이트 또는 인터넷 뱅킹 보안 모듈의 업데이트가 사용자의 의사에 관계없이 자동으로 수행될 수 있다.
도 2는 본 발명의 실시 예들에 따라 애플리케이션을 보호하는 과정을 나타내는 플로우 차트이다. 도 1a, 1b, 1c 및 도 2를 참조하면, 애플리케이션(240)의 실행 요청이 있을 경우(S310), 로더 모듈(265)은 OS(220)의 위변조 여부를 판단할 수 있다(S320).
OS(220)가 위변조된 경우(S330의 YES), 실시 예들에 따라, 로더 모듈(265)은 애플리케이션(240)의 실행을 종료시킬 수 있다(S335). 실시 예들에 따라, 로더 모듈(265)은 OS(220)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240)의 종료 여부를 요청하는 메세지를 생성할 수 있다.
OS(220)가 위변조되지 않은 경우(S330의 NO), 로더 모듈(265)은 애플리케이션(240)의 실행에 필요한 프로그램 데이터(245)를 복호화할 수 있다(S340). 애플리케이션(240)은 복호화된 프로그램 데이터(245)를 이용하여 실행될 수 있다(S350).
도 3은 본 발명의 실시 예들에 따라 애플리케이션을 보호하는 과정을 나타내는 플로우 차트이다. 도 1d 및 3을 참조하면, 애플리케이션(240)의 실행 요청이 있을 경우(S410), OS(220) 또는 애플리케이션(240)은 데이터 서버(300)에 저장되고 애플리케이션(240)의 실행에 필요한 암호화 프로그램 데이터(245-2)를 수신할 수 있다(S420).
로더 모듈(265)은 OS(220)의 위변조 여부를 판단할 수 있고(S430), OS(220)가 위변조된 경우(S440의 YES), 실시 예들에 따라, 로더 모듈(265)은 애플리케이션(240)을 종료시킬 수 있다(S445). 실시 예들에 따라, 로더 모듈(265)은 OS(220)의 위변조 여부를 경고하는 경고 메세지를 생성할 수 있고, 애플리케이션(240)의 종료 여부를 요청하는 메세지를 생성할 수 있다.
이와 다르게, OS(220)가 위변조되지 않은 경우(S440의 NO), 로더 모듈(265)은 애플리케이션(240)을 실행하는데 필요한 암호화 프로그램 데이터(245-2)를 복호화할 수 있다(S450). 복호화된 프로그램 데이터(245-1)를 이용하여 애플리케이션(240)은 실행될 수 있다(S460).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 컴퓨팅 장치
120: 프로세서
140: 메모리
160: 통신 모듈
220: 운영체제(OS)
240: 애플리케이션
245: 프로그램 데이터
265: 로더 모듈

Claims (10)

  1. 애플리케이션에 대한 실행 요청이 있을 때, 애플리케이션이 실행되는 컴퓨팅 장치와 통신 가능한 데이터 서버에 저장된 상기 애플리케이션의 프로그램 데이터를 수신하는 단계;
    로더 모듈이 상기 애플리케이션을 실행하는 운영체제(OS)의 위변조 여부를 판단하는 단계; 및
    상기 OS의 위변조 여부에 따라, 상기 로더 모듈이 상기 프로그램 데이터에 대한 실행 여부를 결정하는 단계를 포함하는 애플리케이션 보호 방법.
  2. 제1 항에 있어서,
    상기 로더 모듈이 상기 로더 모듈 자신의 위변조 여부를 판단하는 단계; 및
    상기 로더 모듈의 위변조 여부에 따라, 상기 OS의 위변조 판단 여부를 결정하는 단계를 더 포함하는 애플리케이션 보호 방법.
  3. 제2 항에 있어서,
    상기 실행 여부를 결정하는 단계는,
    상기 OS가 위변조되지 않은 경우, 상기 로더 모듈이 상기 프로그램 데이터를 복호화하는 단계; 및
    상기 OS가 복호화된 프로그램 데이터를 이용해 상기 애플리케이션을 실행하는 단계를 포함하고,
    상기 프로그램 데이터는 암호화된 상태로 상기 데이터 서버에 저장되는 애플리케이션 보호 방법.
  4. 제3 항에 있어서,
    상기 프로그램 데이터를 복호화하는 단계는, 상기 애플리케이션의 실행 정도에 따라, 상기 애플리케이션의 실행에 필요한 데이터만을 복호화하는 애플리케이션 보호 방법.
  5. 제4 항에 있어서,
    상기 복호화 여부를 결정하는 단계는,
    상기 OS가 위변조된 경우, 상기 로더 모듈이 상기 프로그램 데이터를 복호화하지 않고, 상기 OS는 상기 애플리케이션을 종료하는 애플리케이션 보호 방법.
  6. 제5 항에 있어서,
    상기 로더 모듈은 상기 애플리케이션에 내장되고 상기 애플리케이션의 실행이 요청되면 가장 먼저 실행되는 애플리케이션 보호 방법.
  7. 제5 항에 있어서,
    상기 데이터 서버에 저장된 상기 프로그램 데이터의 전부 또는 일부는 상기 애플리케이션의 사용자의 의사에 관계없이 상기 애플리케이션의 공급자에 의해 업데이트되는 애플리케이션 보호 방법.
  8. 애플리케이션에 대한 실행 요청이 있을 때, 로더 모듈이 상기 애플리케이션을 실행하는 운영체제(OS)의 위변조 여부를 판단하는 단계; 및
    상기 OS의 위변조 여부에 따라, 상기 로더 모듈이 상기 애플리케이션에 포함된 프로그램 데이터에 대한 복호화 여부를 결정하는 단계를 포함하고,
    상기 프로그램 데이터는 암호화 모듈에 의해 암호화된 애플리케이션 보호 방법.
  9. 제8 항에 있어서,
    상기 로더 모듈이 상기 로더 모듈 자신의 위변조 여부를 판단하는 단계; 및
    상기 로더 모듈의 위변조 여부에 따라, 상기 OS의 위변조 판단 여부를 결정하는 단계를 더 포함하는 애플리케이션 보호 방법.
  10. 제1항 내지 제9항 중에서 어느 하나의 항에 기재된 상기 애플리케이션 보호 방법을 수행할 수 있는 컴퓨터 프로그램을 저장한 컴퓨터로 판독가능한 기록 매체.
KR1020160032906A 2016-03-18 2016-03-18 자기 보호를 이용하여 애플리케이션을 보호하는 방법 KR20170108650A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160032906A KR20170108650A (ko) 2016-03-18 2016-03-18 자기 보호를 이용하여 애플리케이션을 보호하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160032906A KR20170108650A (ko) 2016-03-18 2016-03-18 자기 보호를 이용하여 애플리케이션을 보호하는 방법

Publications (1)

Publication Number Publication Date
KR20170108650A true KR20170108650A (ko) 2017-09-27

Family

ID=60036401

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160032906A KR20170108650A (ko) 2016-03-18 2016-03-18 자기 보호를 이용하여 애플리케이션을 보호하는 방법

Country Status (1)

Country Link
KR (1) KR20170108650A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101992066B1 (ko) * 2018-11-30 2019-06-21 건국대학교 산학협력단 컨테이너 관리 방법 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101992066B1 (ko) * 2018-11-30 2019-06-21 건국대학교 산학협력단 컨테이너 관리 방법 및 장치

Similar Documents

Publication Publication Date Title
CN100578473C (zh) 嵌入式系统和增加嵌入式系统安全性的方法
KR101483839B1 (ko) 가상화를 이용한 비디오 컨텐츠 보호
CN106599629B (zh) 一种安卓应用程序加固方法及装置
CN103530535A (zh) 一种Android平台应用程序保护的加脱壳方法
CN103988467A (zh) 确保软件加密技术安全的加密系统和方法
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN111163094B (zh) 网络攻击检测方法、网络攻击检测装置、电子设备和介质
CN108229190B (zh) 透明加解密的控制方法、装置、程序、存储介质和电子设备
CN108985096B (zh) 一种Android SQLite数据库安全增强、安全操作方法以及装置
KR20120110660A (ko) 메모리에서 실행되는 컴퓨터 프로그램의 변조 탐지 방법
US20210182208A1 (en) System memory context determination for integrity monitoring and related techniques
EP2856377B1 (en) Identification and execution of subsets of a plurality of instructions in a more secure execution environment
US20110145596A1 (en) Secure Data Handling In A Computer System
KR20170108650A (ko) 자기 보호를 이용하여 애플리케이션을 보호하는 방법
US12015689B2 (en) Container management for cryptanalysis attack protection
US11562072B2 (en) Data processing method for coping with ransomware, program for executing the method, and computer-readable recording medium storing the program
KR102537788B1 (ko) 서버 및 이를 이용한 어플리케이션의 무결성 판단 방법
CN109872148A (zh) 基于tui的可信数据处理方法、装置以及移动终端
CN103840935B (zh) 开放系统之函式库的加密及解密方法
CN107103254B (zh) 加密程序识别方法及装置、电子设备
KR20210083780A (ko) Dex 파일 분할 및 난독화를 통한 안드로이드 앱 보안성 향상 방법 및 시스템
JP6297149B2 (ja) モバイル機器及び該モバイル機器の動作方法
KR101556908B1 (ko) 프로그램 보호 장치
CN112688953B (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US11899776B2 (en) Electronic device and method for authenticating software based on blockchain

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application