KR20140139392A - 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치 - Google Patents

모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치 Download PDF

Info

Publication number
KR20140139392A
KR20140139392A KR1020130060000A KR20130060000A KR20140139392A KR 20140139392 A KR20140139392 A KR 20140139392A KR 1020130060000 A KR1020130060000 A KR 1020130060000A KR 20130060000 A KR20130060000 A KR 20130060000A KR 20140139392 A KR20140139392 A KR 20140139392A
Authority
KR
South Korea
Prior art keywords
class
application
classes
mobile device
generating
Prior art date
Application number
KR1020130060000A
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 KR1020130060000A priority Critical patent/KR20140139392A/ko
Priority to US14/283,456 priority patent/US20140351947A1/en
Publication of KR20140139392A publication Critical patent/KR20140139392A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Landscapes

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

Abstract

모바일 장치를 위한 애플리케이션 실행 파일 생성방법을 개시한다. 본 발명의 일 실시 예에 따른, 애플리케이션 실행 파일 생성 방법은, 상기 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 단계와, 상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 단계를 포함한다.

Description

모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치{METHOD FOR GENERATING APPLICATION EXECUTION FILE FOR MOBILE DEVICE, APPLICATION EXECUTION METHOD OF MOBILE DEVICE, DEVICE FOR GENERATING APPLICATION EXECUTION FILE AND MOBILE DEVICE}
본 발명은, 모바일 장치의 애플리케이션 실행 파일 생성 방법에 관한 것으로, 좀더 상세하게는 보안성이 강화된 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치에 관한 것이다.
모바일 서비스의 종류가 다양해지면서 모바일 장치와 서비스 제공자(Service Provider) 사이에 보안성이 높은 정보를 송수신하는 경우가 많아지고 있다. 예를 들어, 온라인 결재를 처리하는 애플리케이션은 서비스 서버에 사용자의 카드 정보를 제공할 수 있다. 또한, 서버로부터 서비스를 제공받기 위해 애플리케이션은 사용자 패스워드를 서버로 전송할 수 있다.
그러나, 지금까지 모바일 장치는 개인용 컴퓨터이 비해 상대적으로 보안의 취약성을 드러내고 있어 이러한 모바일 장치의 보안 취약성을 악용하여 해킹을 시도하는 사례가 증가하고 있다.
이처럼 모바일 장치의 보안이 취약한 근본적인 이유 중의 하나는 개인용 컴퓨터를 통해 제공되었던 웹 서비스가 빠르게 모바일 장치로 확장되고 있는 상황에서 모바일 장치의 보안 환경이 이를 뒤따르지 못하는 문제에 있다. 특히, 모바일 장치는 하드웨어 성능의 한계가 있으므로 소프트웨어의 데이터 처리량을 상대적으로 적게 할 필요가 있는 바, 모바일 장치에 설치되는 대부분의 애플리케이션은 개발이 쉽고 가벼운 프로그램 언어로 작성되고 있어 더욱 문제가 된다.
일 예로, 안드로이드 OS 용 애플리케이션은 개발이 용이하도록 대부분 자바(Java) 언어로 작성된다. 그런데, 자바 언어의 특성상 디컴파일링(Decompiling)을 통해 소스 코드를 얻는 것이 쉬운 바, 자바 언어로 작성된 애플리케이션은 보안 취약성을 갖게 된다.
도 1은 자바 언어로 작성된 애플리케이션을 해킹하여 작성된 수정 애플리케이션을 도시한 도면이다.
도 1의 실시 예처럼 것처럼 애플리케이션은 자바 언어와 같은 관리 코드(Managed code)로 작성되는 부분(11)과, C 언어와 같은 자연 코드(Native Code)로 작성되는 부분(12)을 포함할 수 있다. 안드로이드 OS에서 실행되는 대부분의 애플리케이션은 자바 언어로만 작성된다.
여기서 관리코드란 프로그램을 실행시키기 위한 메모리를 실행 프로그램이 스스로 관리하는 유형의 프로그램 언어로 작성된 소스 코드를 말한다. 예를 들어, 자바, C# 등으로 작성된 소스 코드가 해당된다. 자바의 경우 사용자의 관여 없이 가비지 컬렉터(Garbage Collector)가 메모리를 관리한다. 관리코드는 프로그램 실행을 위해 인터프리터라는 다른 프로그램을 필요로 한다. 예를 들어, 자바 가상 머신(Java Virtual Machine) 이나 닷넷 프레임워크(.Net Framework)가 이러한 인터프리터에 해당된다.
반면, 자연 코드란 프로그래머가 직접 메모리를 관리하는 코드를 입력해주어야 하는 유형의 프로그램으로 작성된 소스 코드를 말한다. 예를 들어, C, C++ 등의 프로그램 언어로 작성된 소스코드가 해당된다. 자연 코드는 별도의 실행 프로그램 없이 컴파일된 파일이 직접 컴퓨터에서 실행되는 특성이 있다.
그런데, 자바와 같은 관리 코드로 작성된 프로그램(11)은 디컴파일링해서 손쉽게 소스 코드를 얻을 수 있는 보안 취약성을 갖는다. 즉, 해커는 디컴파일링을 통해 소스 코드를 손쉽게 얻고 소스 코드에서 보안성이 요구되는 정보를 빼낼 수 있게 된다. 또한, 얻어진 소스 코드를 이용하여 변경된 코드(21)를 작성할 수도 있는데, 이렇게 변경된 코드(21)는 악성코드를 포함하여 사용자에게 2차 피해를 줄 수도 있다. 이렇게 위조 내지 변조된 애플리케이션은 블랙 마켓을 통해 유통되기도 한다.
도 2는 디컴파일링을 통해 추출된 자바 소스 코드를 도시한 도면이다.
발명자는 도 2에 도시된 것처럼 애플리케이션의 압축을 풀어 dex2jar로 dex 파일을 jar 파일로 변환하고 jar 파일을 디컴파일링함으로써, 컴파일된 자바 코드로부터 소스 코드를 손쉽게 얻음을 실험하였다. 발명자가 얻은 소스 코드에는 사용자가 암호화키를 설정하기 위한 로직을 포함하고 있었다.
이처럼 쉽게 디컴파일링이 가능하여 보안이 취약한 관리 코드(Managed code)와 달리, 자연 코드로 작성된 애플리케이션의 경우 컴파일 된 소스를 추출하기가 어려워 상대적으로 강한 보안성을 갖는다. 이런 이유로 금융 관련 애플리케이션이나 개인 정보를 취급하는 애플리케이션의 경우 개발단계에서 보안성이 요구되는 부분을 자연 코드로 재작성하는 경우가 많다. 이들 애플리케이션들의 경우 안드로이드 OS 환경에서 자바로 작성된 일부 클래스를 JNI를 이용하여 C 언어와 같은 자연 코드로 재작성하는 기법이 이용된다. 다만, 이러한 개발 과정은 하기와 같은 문제가 있다.
도 3은 자연 코드로 재작성된 애플리케이션이 안드로이드 OS 에서 구동되는 경우 문제점을 도시한 도면이다.
도 3에 도시된 것처럼 자바로 작성되어 컴파일된 애플리케이션 파일은 실행을 위한 클래스들을 포함하는 classes.dex파일(31)을 포함한다. 이때, classes.dex 파일(31)은 디컴파일을 통해 소스가 노출될 수 있으므로, 중요한 일부 클래스는 JNI를 이용해서 C 코드로 재작성된다(37). 이때, 애플리케이션의 classes.dex에서 Native Lib.가 제공하는 API를 호출하는 부분을 포함할 수 있다. 중요한 일부 클래스는 Native Lib.에서 수행하게 된다.
그러나, 이러한 코딩 방식은 애플리케이션 개발 기간을 지연시키고, 개발자의 부담을 가중시킨다. 또한, 완성된 애플리케이션에 버그의 발생 가능성을 높여 애플리케이션의 안정적인 성능을 저해한다.
따라서, 관리 코드로 작성된 애플리케이션을 자연 코드로 재작성하지 않고 보안 취약성을 해결할 수 있는 방안이 요청된다. 이때 생성된 실행 파일은 모바일 장치에서 오버헤드 없이 효과적으로 동작될 수 있어야 한다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로, 본 발명의 목적은, 관리 코드로 작성된 애플리케이션을 자연 코드로 재작성하지 않고 보안 취약성을 해결할 수 있는 애플리케이션 실행 파일 생성방법 및 애플리케이션 실행 파일 생성 장치를 제공하기 위함이다.
본 발명의 다른 목적은, 상기와 같이 생성된 실행 파일이 모바일 장치에서 오버헤드 없이 효과적으로 동작될 수 있도록 하는 모바일 장치와, 애플리케이션 실행 방법을 제공하기 위함이다.
상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른, 모바일 장치를 위한 애플리케이션 실행 파일 생성방법은, 상기 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 단계와, 상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 단계를 포함한다.
상기 암호화 단계는, 상기 애플리케이션 실행을 위한 복수의 클래스들을 컴파일 하는 단계와, 상기 컴파일 된 복수의 클래스들 중 상기 보안성이 요구되는 적어도 하나의 클래스를 상기 나머지 클래스들과 분리하여 암호화하는 단계를 포함할 수 있다.
또한, 상기 모바일 장치를 위한 애플리케이션 실행 파일 생성방법은, 상기 보안성이 요구되는 적어도 하나의 클래스에 대한 정보를 포함하는 보호 클래스 정보를 생성하여, 애플리케이션 실행 시, 상기 생성된 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성하는 단계를 더 포함할 수 있다.
또한, 상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 모바일 장치의 애플리케이션 실행 방법은, 상기 애플리케이션 실행 명령이 수신되면, 보안성이 요구되는 적어도 하나의 클래스를 식별하는 단계와, 상기 식별된 적어도 하나의 클래스를 복호화하는 단계를 포함하고, 상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 단계를 포함한다.
이때, 상기 적어도 하나의 클래스를 식별하는 단계는, 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별할 수 있다.
또한, 상기 식별된 적어도 하나의 클래스를 복호화하는 단계는, 보호 모듈(Protection Module)이 포함하는 키(key)를 이용하여 상기 식별된 적어도 하나의 클래스를 복호화할 수 있다.
또한, 상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 애플리케이션 실행 파일 생성 장치는, 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 암호화부와, 상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 실행 파일 생성부를 포함한다.
상기 암호화부는, 상기 애플리케이션 실행을 위한 복수의 클래스들을 컴파일 하는 컴파일러와, 상기 컴파일 된 복수의 클래스들 중 상기 보안성이 요구되는 적어도 하나의 클래스를 상기 나머지 클래스들과 분리하여 암호화하는 클래스 암호화부를 포함할 수 있다.
상기 실행 파일 생성부는, 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성하는 보호 모듈 생성부를 포함할 수 있다.
또한, 상기와 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 모바일 장치는, 애플리케이션 실행 명령이 수신되면, 상기 어플리케이션의 클래스들 중 보안성이 요구되는 적어도 하나의 클래스를 식별하는 클래스 식별부와, 상기 식별된 적어도 하나의 클래스를 복호화하는 복호화부와, 상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 적재부를 포함한다.
상기 클래스 식별부는, 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별할 수 있다.
상기 복호화부는, 보호 모듈(Protection Module)이 포함하는 키(key)를 이용하여 상기 식별된 적어도 하나의 클래스를 복호화 할 수 있다.
전술한 모바일 장치는, 상기 클래스 식별부, 상기 복호화부, 상기 적재부의 기능을 수행하는 인터프리터를 포함할 수 있다.
이상과 같은 본 발명의 다양한 실시 예에 따르면, 본 발명은 관리 코드로 작성된 애플리케이션을 자연 코드로 재작성하지 않고 보안 취약성을 해결할 수 있는 애플리케이션 실행 파일 생성방법 및 애플리케이션 실행 파일 생성 장치를 제공한다.
또한, 상기와 같이 생성된 실행 파일이 모바일 장치에서 오버헤드 없이 효과적으로 동작될 수 있게 된다.
도 1은 자바 언어로 작성된 애플리케이션을 해킹하여 작성된 수정 애플리케이션을 도시한 도면,
도 2는 디컴파일링을 통해 추출된 자바 소스 코드를 도시한 도면,
도 3은 이러한 애플리케이션이 안드로이드 OS 에서 구동되도록 코딩되는 경우 문제점을 도시한 도면,
도 4 및 5는 본 발명의 일 실시 예에 따른 애플리케이션 실행 파일 생성 장치의 구성을 도시한 블록도,
도 6은 암호화된 클래스를 포함하는 실행 파일을 생성하는 과정을 나타낸 모식도,
도 7및 8은 암호화된 자바 클래스를 포함하는 실행 파일을 생성하는 툴의 실행 화면을 나타낸 도면,
도 9는 본 발명의 일 실시 예에 따른 모바일 장치의 구성을 도시한 블록도이고,
도 10은 상기 모바일 장치의 동작을 나타낸 흐름도,
도 11은 보호할 클래스를 자연 코드로 작성한 실시 예의 모식도,
도 12 및 13은 본 발명의 다양한 실시 예에 따른 모바일 장치를 위한 애플리케이션 실행 파일 생성방법을 나타낸 흐름도, 그리고,
도 14 및 15는 본 발명의 다양한 실시 예에 따른 모바일 장치의 애플리케이션 실행 방법의 흐름도이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 다양한 실시 예를 설명한다.
도 4 및 5는 본 발명의 일 실시 예에 따른 애플리케이션 실행 파일 생성 장치(100)의 구성을 도시한 블록도이다.
도 4를 참조하면, 본 발명의 일 실시 예에 따른 애플리케이션 실행 파일 생성 장치(100)는, 일부 클래스를 암호화하는 암호화부(110)와, 실행 파일을 생성하는 실행파일 생성부(120)를 포함한다. 또한, 도 5를 참조하면, 암호화부(110)는 소스 코드를 컴파일하는 컴파일러(111), 일부 클래스를 암호화하는 클래스 암호화부(112)를 포함하고, 애플리케이션 생성부(120)는 보호 모듈 생성부(121)를 포함한다.
암호화부(110)는, 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 구성이다. 우선, 암호화부(110)에 포함되는 컴파일러(111)는 작성된 소스 코드를 컴파일을 수행하여 실행 파일을 생성한다. 생성된 실행 파일은 애플리케이션 실행을 위한 복수의 클래스들을 포함한다. 클래스 암호화부(112)는 생성된 복수의 클래스들 중 보안성이 요구되는 적어도 하나의 클래스에 대해 암호화를 수행한다.
클래스 암호화부(112)는 다양한 암호화 알고리즘을 이용하여 클래스의 암호화를 할 수 있다. 즉, 클래스 암호화부(112)는 대칭키 알고리즘과 공개키 알고리즘 기법 중 어느 것도 이용할 수 있다. 예를 들어, ARIA(Academy Research Institute Agency) 알고리즘, DES(Data Encryption Standard) 알고리즘, AES(Advanced Encryption Standard) 알고리즘, SEED 알고리즘, RSA(Rivest-Shamir-Adleman) 알고리즘 중 적어도 하나가 암호화에 사용될 수 있다.
ARIA(Academy Research Institute Agency) 알고리즘은, 국가 보안 기술연구소 주도로 제안된 알고리즘으로, 128비트의 블록 크기와 128/192/256 비트의 키를 갖는다. 키 크기에 따라 12/14/16의 라운드 개수를 갖는 특징이 있다. DES 알고리즘은, 미국 국방부에 의해 채택된 개인키 알고리즘으로, 64비트의 블록 크기와, 56비트의 키를 갖는다. AES 알고리즘은 DES의 취약점을 대체하기 위해 개발된 것으로 블록은 128비트의 크기를 갖고, 키는 128/192/256 비트의 가변길이를 갖는다. SEED 알고리즘은, 한국 표준 대칭키 알고리즘으로, 8/16/32비트의 데이터를 128비트의 키를 사용하여 16라운드에 걸쳐 암호화하며, 주로 공인인증서 암호화에 사용되고 있다. RSA(Rivest-Shamir-Adleman) 알고리즘은 공개키 기반의 알고리즘으로 가장 널리 사용되는 알고리즘이다. 매우 큰 소수로 된 합성수를 인수분해하는 것이 어려운 점에 착안한 것으로, 암호화 함수의 역함수를 구하기 어려운 함정함수에 기초한다.
애플리케이션 생성부(120)는 상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 구성이다. 애플리케이션 생성부(120)는 보호 모듈(Protection module) 생성부(121)를 포함하는데, 보호 모듈 생성부(121)는, 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성한다.
여기서 보호 클래스 정보란, 어떠한 클래스가 보호되어야 하는 클래스인지 식별하는 정보를 나타내는 정보를 의미한다. 보호 클래스 정보는 사용자의 입력에 의해 XML과 같은 마크업 언어로 작성될 수 있다. 애플리케이션 실행 파일 생성 장치(100)는 이렇게 작성된 보호 클래스 정보를 참조하여, 보호할 클래스를 다른 클래스들과 분리한다. 전술한 애플리케이션 실행 파일 생성 장치(100)의 각 구성이 애플리케이션 생성 툴의 기능으로 포함되는 경우, 애플리케이션 생성 툴은 전술한 각 구성의 기능을 수행한다.
생성된 보호 모듈은 실행 파일에 포함되며, 암호화된 클래스를 복호화하기 위한 키를 포함한다. 상기 복호화 키는 다시 암호화됨으로써, 보안성을 높일 수 있다.
이 밖에도 명세서에서 자세히 설명하지 않았지만, 애플리케이션 실행 파일 생성 장치(100)는 일반적인 전자 계산 장치가 갖는 구성을 포함할 수 있다. 즉, 충분한 제어 및 연산 능력을 갖는 CPU, 캐쉬 메모리, 램 메모리, 하드 디스크나 블루레이 디스크와 같은 대용량 보조 기억 장치, 터치 스크린과 같은 입출력 장치, 근거리 통신 모듈, HDMI를 포함하는 다양한 유무선 통신 모듈, 데이터 버스 등 하드웨어 구성을 포함하며, 전술한 애플리케이션 실행 파일이 동작할 수 있는 프레임워크, 운영체제를 포함한다.
또한, 전술한 애플리케이션 실행 파일 생성 장치가 동작할 수 있는 필요한 환경이 제공될 수 있다. 예를 들어, 전술한 애플리케이션 실행 파일 생성 장치가 프로그램 개발 툴로 구현되는 경우, 시스템은 애뮬레이터나 시뮬레이터를 제공할 수 있다.
하기에서는 상술한 본 발명의 실시 예를 구체화한 실시 예로, 컴파일 된 자바 소스 코드를 기초로 암호화된 클래스를 포함하는 실행 파일을 생성하는 과정을 설명한다.
도 6은 암호화된 클래스를 포함하는 실행 파일을 생성하는 과정을 나타낸 모식도이다.
최초에 작성된 소스 코드(60)는 클래스(bin/classes), 리소스(res), 애셋(assets), 라이브러리(libs)를 포함한다. 컴파일러(111)가 자바 소스 코드를 컴파일 하면, 애플리케이션 실행파일(62) 이 생성되며, 생성된 실행 파일(62)는 클래스(classes.dex)(61), 애셋(assets), 라이브러리(libraries(.so)), META-INF/를 포함한다. 반면, 본 발명에 따른 실행 파일 생성 장치(앱 생성 툴 64)는 보호 내용이 기술된 XML파일(63)을 참조하여 컴파일된 애플리케이션에서 보호할 클래스와 나머지 클래스들을 분리한 후, 별도 파일로 asset안에 추가한다. 또는 별도로 classes.dex 파일(67)을 생성할 수 있다. 그리고, 보호가 필요 없는 classes.dex(68)를 생성하여(이는 Invoker를 포함한다.) 기존의 classes.dex(61)를 대체한다. 또한, 앱 생성 툴(64)는 보호 모듈(65)을 생성하고, 보호 모듈(65)이 보호할 클래스의 리스트를 작성하여 애플리케이션에 추가한다. 보호 모듈(65)은 컴파일된 실행 파일을 달빅(Dalvik)이나 제이브이엠(JVM)과 같은 자바 가상 머신에 의해 다이나믹 로딩하기 위한 구성이다.
도 7및 8은 암호화된 자바 클래스를 포함하는 실행 파일을 생성하는 툴의 실행 화면을 나타낸 도면이다.
도 7 및 8에 도시된 것처럼 실행 파일 생성 툴은 암호화된 자바 클래스를 포함하는 실행 파일을 생성하기 위해 보호 클래스 정보가 기록된 XML 파일을 파싱한다. 파싱을 통해 보호 클래스의 식별이 끝나면, 실행 파일을 생성하기 시작하는데, 일반 클래스(normal classes)와 보호 클래스(secret classes) 디렉토리를 별도로 생성한다. 그리고, 생성된 디렉토리를 복사한다. 이어서 보호 클래스에 대해서는 암호화를 수행한다.
본 발명은 상술한 것처럼 관리 코드로 작성된 애플리케이션에서 보호해야 할 클래스를 구별하여 별도로 암호화하여 실행 파일을 생성한다. 따라서, 보안성이 요구되는 파일에 대한 디컴파일이 용이하지 않게 되어 종래의 모바일 장치 애플리케이션이 갖는 보안성 문제를 해결한다. 또한, 개발자는 자연 코드로 소스코드를 변경해야 하는 수고를 덜 수 있으며, 자연 코드로 변경하는 과정에서 발생되는 버그를 최소화할 수 있게 된다. 아울러, 후술하는 것처럼 본 발명은 동적 로딩 기법을 사용함으로써, 자바가 지원하는 리플렉션(Reflection) 기능을 사용하지 않으면서도 외부 클래스 참조가 가능하게 되므로 리플렉션 기능을 사용함에 따른 자원 오버헤드 문제가 발생하지 않는다.
이하에서는 전술한 애플리케이션 실행 파일 생성 장치(100)에 의해 생성된 애플리케이션이 설치되어 실행될 수 있는 모바일 장치(200)의 구성 및 동작을 설명한다.
도 9는 본 발명의 일 실시 예에 따른 모바일 장치의 구성을 도시한 블록도이고, 도 10은 상기 모바일 장치의 동작을 나타낸 흐름도이다.
도 9를 참조하면, 본 발명의 일 실시 예에 따른 모바일 장치(200)는 클래스 식별부(210), 복호화부(220), 적재부(230)를 포함한다.
클래스 식별부(210)는 보안성이 요구되는 클래스를 식별하는 구성이다. 즉, 클래스 식별부(210)는, 애플리케이션 실행 명령이 수신되면, 상기 어플리케이션의 클래스들 중 보안성이 요구되는 적어도 하나의 클래스를 식별한다.
클래스 식별부(210)는, 애플리케이션이 모바일 장치에 설치된 상태에서 실행 명령이 있는 경우 보호 클래스 정보를 참조하여 보안성이 요구되는 적어도 하나의 클래스를 식별한다. 클래스 식별부(210)는 전술한 보호 모듈의 일부 구성일 수 있다.
복호화부(220)는 식별된 클래스를 복호화하는 구성이다. 구체적으로 복호화부(220)는 기 저장된 키를 이용하여 식별된 클래스를 복호화한다. 상기 키는 여러 층으로 암호화되어 저장될 수 있고, 복호화부(220)는 다양한 키 전달 기술을 통해 전달된 키를 이용해 식별된 클래스를 복호화한다. 또한, 복호화된 클래스에 대해 필요한 다양한 검증을 수행할 수 있다. 예를 들어, 암호화된 클래스의 종류나 개수를 확인하는 작업을 통해 복호화가 정상적으로 이루어졌는지 검증할 수 있다. 복호화부(220) 역시 전술한 보호 모듈의 일부 구성이 될 수 있다.
적재부(230)는 상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 구성이다. 통상적으로 프로그램이 실행되면, 적재부(230)는 복호화되지 않은 즉, 보안성이 요구되지 않는 클래스부터 메모리 로딩을 시작한다. 이는 시작 클래스가 보안이 요구되지 않는 클래스 집합에 포함되어 있기 때문이다. 그러나, 프로그램이 실행되는 중에 보안성이 요구되는 클래스 즉, 복호화된 클래스의 참조가 있는 경우 적재부(230)는 복호화된 클래스를 메모리에 로딩한다.
동적 로딩은 클래스 사용이 필요한 경우 로딩을 수행하므로 메모리 공간을 효율적으로 사용하는 이점이 있을 뿐 아니라, 리플렉션(Reflection) 기능을 사용하는 경우에 비해 높은 성능을 보장한다. 즉, 리플렉션 기능을 활용하지 않고, 보안성이 요구되는 클래스를 별도로 관리하여 애플리케이션 실행시에만 복호화하여 메모리 로딩을 수행하므로 보안 취약성을 해결하면서도 리플렉션을 사용하는 경우에 문제되는 오버헤드가 발생하지 않게 된다.
명세서에서 자세히 설명하지 않았지만, 모바일 장치(200)는 일반적인 전자 계산 장치가 갖는 구성을 포함할 수 있다. 즉, 충분한 제어 및 연산 능력을 갖는 CPU, 캐쉬 메모리, 램 메모리, 하드 디스크나 블루레이 디스크와 같은 대용량 보조 기억 장치, 터치 스크린과 같은 입출력 장치, 근거리 통신 모듈, HDMI를 포함하는 다양한 유무선 통신 모듈, 데이터 버스 등 하드웨어 구성을 포함하며, 전술한 애플리케이션 실행 파일이 동작할 수 있는 프레임워크, 운영체제를 포함한다.
특히, 모바일 장치(200)는 전술한 클래스 식별부(210), 복호화부(220), 적재부(230)의 기능을 수행하는 인터프리터로 구현될 수 있다. 예를 들어, 달빅(Dalvik)이나 제이브이엠(JVM)과 같은 자바 가상 머신으로 구현 가능하다.
도 10은 본 발명의 자바 가상 머신의 동작의 실시 예를 도시한다.
도 10에서 자바 가상 머신은 자바 애플리케이션이 실행되면(S1010) Invoker를 동작시켜(S1020) 보호 모듈을 동작시킨다(S1030). 보호 모듈 또는 클래스 등에 대해 안전성 검사를 수행한 후(S1040), 검증이 통과되면 동적 로딩 모듈을 시작한다(S1070). 보호할 클래스의 복호화를 수행하고(S1080), 동적 로딩을 수행한다(S1090).
한편, 보호할 클래스를 관리 코드로 작성하지 않고, 자연 코드로 작성할 수도 있다. 도 11은 이러한 실시 예를 도시한다.
즉, 도 11은 보호할 클래스를 자연 코드로 작성한 실시 예의 모식도이다.
도 11의 (A)의 실시 예에서는 전술한 방법과 마찬가지로 보호할 클래스를 관리 코드로 작성한 것이다. 이때, 보호 모듈과, 보호할 클래스들은 메모리의 힙 영역에 저장된다. 이는 동적 로딩에 따른 것이다.
반면, 도 11의 (B)의 실시 예에서는 보호 모듈은 메모리의 텍스트 영역에 저장된다. 그러나, 보호할 클래스는 자연 언어로 작성되어 힙 영역에 할당된다. 이러한 실시 예는 보호할 클래스가 자연 코드로 작성되고 이는 다시 암호화될 수 있으므로 보안성이 한층 강화되는 장점을 갖는다.
이하에서는 본 발명의 다양한 실시 예에 따른 모바일 장치를 위한 애플리케이션 실행 파일 생성방법을 설명한다.
도 12 및 13은 본 발명의 다양한 실시 예에 따른 모바일 장치를 위한 애플리케이션 실행 파일 생성방법을 나타낸 흐름도이다.
도 12를 참조하면, 본 발명의 다양한 실시 예에 따른 모바일 장치를 위한 애플리케이션 실행 파일 생성방법은, 상기 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 단계(S1210)와, 상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 단계(S1220)를 포함한다.
도 13을 참조하면, 상기 암호화 단계는, 상기 애플리케이션 실행을 위한 복수의 클래스들을 컴파일 하는 단계(S1310)와, 상기 컴파일 된 복수의 클래스들 중 상기 보안성이 요구되는 적어도 하나의 클래스를 상기 나머지 클래스들과 분리하여 암호화하는 단계(S1320)를 포함할 수 있다. 또한, 상기 보안성이 요구되는 적어도 하나의 클래스에 대한 정보를 포함하는 보호 클래스 정보를 생성하여, 애플리케이션 실행 시, 상기 생성된 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성하는 단계(S1330)를 더 포함할 수 있다.
도 14 및 15는 본 발명의 다양한 실시 예에 따른 모바일 장치의 애플리케이션 실행 방법의 흐름도이다.
도 14 및 15를 참조하면, 본 발명의 다양한 실시 예에 따른 모바일 장치의 애플리케이션 실행 방법은, 상기 애플리케이션 실행 명령이 수신되면(S1410), 보안성이 요구되는 적어도 하나의 클래스를 식별하는 단계(S1420)와, 상기 식별된 적어도 하나의 클래스를 복호화하는 단계(S1430)를 포함하고, 상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 단계(S1440)를 포함한다.
이때, 상기 적어도 하나의 클래스를 식별하는 단계(S1420)는, 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별할 수 있다.
또한, 상기 식별된 적어도 하나의 클래스를 복호화하는 단계는, 보호 모듈(Protection Module)이 포함하는 키(key)를 이용하여 상기 식별된 적어도 하나의 클래스를 복호화할 수 있다(S1530).
한편, 전술한 모바일 장치를 위한 애플리케이션 실행 파일 생성방법 및 모바일 장치의 애플리케이션 실행 방법은 컴퓨터 상에서 판독 가능한 비일시적 기록 매체에 프로그램의 형태로 저장될 수 있다. 여기서 비일시적 판독 가능 매체란 레지스터, 캐쉬 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장이 가능하며, 전자기기에 의해 판독(reading)이 가능한 매체를 의미한다. 예를 들어, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 될 수 있다.
또한, 전술한 모바일 장치를 위한 애플리케이션 실행 파일 생성방법 및 모바일 장치의 애플리케이션 실행 방법은 임베디드 소프트웨어 형태로 하드웨어 IC칩에 내장되어 제공될 수 있고, 전술한 애플리케이션 실행 파일 생성 장치(100) 내지 모바일 장치(200)의 구성으로 포함될 수 있다.
이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100 : 애플리케이션 실행 파일 생성 장치
200 : 모바일 장치
110 : 암호화부 120 : 애플리케이션 생성부
111 : 컴파일러 112 : 클래스 암호화부
113 : 보호 모듈 생성부

Claims (14)

  1. 모바일 장치를 위한 애플리케이션 실행 파일 생성방법에 있어서,
    상기 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 단계; 및
    상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 단계;를 포함하는 애플리케이션 실행 파일 생성방법.
  2. 제1항에 있어서,
    상기 암호화 단계는,
    상기 애플리케이션 실행을 위한 복수의 클래스들을 컴파일 하는 단계; 및
    상기 컴파일 된 복수의 클래스들 중 상기 보안성이 요구되는 적어도 하나의 클래스를 상기 나머지 클래스들과 분리하여 암호화하는 단계;를 포함하는 것을 특징으로 하는 애플리케이션 실행 파일 생성방법.
  3. 제1항에 있어서,
    상기 보안성이 요구되는 적어도 하나의 클래스에 대한 정보를 포함하는 보호 클래스 정보를 생성하는 단계; 및
    상기 애플리케이션 실행 시, 상기 생성된 보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성하는 단계;를 더 포함하는 것을 특징으로 하는 애플리케이션 실행 파일 생성방법.
  4. 모바일 장치의 애플리케이션 실행 방법에 있어서,
    상기 애플리케이션 실행 명령이 수신되면, 보안성이 요구되는 적어도 하나의 클래스를 식별하는 단계;
    상기 식별된 적어도 하나의 클래스를 복호화하는 단계; 및
    상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 단계;를 포함하는 모바일 장치의 애플리케이션 실행 방법.
  5. 제4항에 있어서,
    상기 적어도 하나의 클래스를 식별하는 단계는,
    보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하는 것을 특징으로 하는 모바일 장치의 애플리케이션 실행 방법.
  6. 제4항에 있어서,
    상기 식별된 적어도 하나의 클래스를 복호화하는 단계는,
    보호 모듈(Protection Module)이 포함하는 키(key)를 이용하여 상기 식별된 적어도 하나의 클래스를 복호화 하는 것을 특징으로 하는 모바일 장치의 애플리케이션 실행 방법.
  7. 제1항에 따른 모바일 장치를 위한 애플리케이션 실행 파일 생성방법을 수행하는 프로그램 개발 툴.
  8. 모바일 장치를 위한 애플리케이션 실행 파일 생성 장치에 있어서,
    상기 애플리케이션 실행을 위한 복수의 클래스(class)들 중 보안성이 요구되는 적어도 하나의 클래스를 나머지 클래스들과 독립적으로 암호화하는 암호화부; 및
    상기 암호화된 적어도 하나의 클래스 및 상기 나머지 클래스들을 포함하는 상기 애플리케이션 실행 파일을 생성하는 실행 파일 생성부;를 포함하는 애플리케이션 실행 파일 생성 장치.
  9. 제 8항에 있어서,
    상기 암호화부는,
    상기 애플리케이션 실행을 위한 복수의 클래스들을 컴파일 하는 컴파일러; 및
    상기 컴파일 된 복수의 클래스들 중 상기 보안성이 요구되는 적어도 하나의 클래스를 상기 나머지 클래스들과 분리하여 암호화하는 클래스 암호화부;를 포함하는 것을 특징으로 하는 애플리케이션 실행 파일 생성 장치.
  10. 제8항에 있어서,
    상기 실행 파일 생성부는,
    보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하기 위한 보호 모듈(Protection Module)을 생성하는 보호 모듈 생성부;를 포함하는 것을 특징으로 하는 애플리케이션 실행 파일 생성 장치.
  11. 모바일 장치에 있어서,
    애플리케이션 실행 명령이 수신되면, 상기 어플리케이션의 클래스들 중 보안성이 요구되는 적어도 하나의 클래스를 식별하는 클래스 식별부;
    상기 식별된 적어도 하나의 클래스를 복호화하는 복호화부; 및
    상기 복호화된 적어도 하나의 클래스를 동적으로 로딩하는 적재부;를 포함하는 모바일 장치.
  12. 제11항에 있어서,
    상기 클래스 식별부는,
    보호 클래스 정보를 참조하여, 상기 보안성이 요구되는 적어도 하나의 클래스를 식별하는 것을 특징으로 하는 모바일 장치.
  13. 제11항에 있어서,
    상기 복호화부는,
    보호 모듈(Protection Module)이 포함하는 키(key)를 이용하여 상기 식별된 적어도 하나의 클래스를 복호화 하는 것을 특징으로 하는 모바일 장치.
  14. 제11항에 있어서,
    상기 모바일 장치는,
    상기 클래스 식별부, 상기 복호화부, 상기 적재부의 기능을 수행하는 인터프리터를 포함하는 것을 특징으로 하는 모바일 장치.
KR1020130060000A 2013-05-27 2013-05-27 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치 KR20140139392A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130060000A KR20140139392A (ko) 2013-05-27 2013-05-27 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
US14/283,456 US20140351947A1 (en) 2013-05-27 2014-05-21 Method of generating execution file for mobile device, method of executing application of mobile device, device to generate application execution file, and mobile device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130060000A KR20140139392A (ko) 2013-05-27 2013-05-27 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치

Publications (1)

Publication Number Publication Date
KR20140139392A true KR20140139392A (ko) 2014-12-05

Family

ID=51936341

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130060000A KR20140139392A (ko) 2013-05-27 2013-05-27 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치

Country Status (2)

Country Link
US (1) US20140351947A1 (ko)
KR (1) KR20140139392A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017026739A1 (ko) * 2015-08-10 2017-02-16 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150035249A (ko) * 2013-09-27 2015-04-06 삼성전자주식회사 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치
US9659156B1 (en) * 2014-03-20 2017-05-23 Symantec Corporation Systems and methods for protecting virtual machine program code
KR101518420B1 (ko) * 2014-11-11 2015-05-07 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
CN110806906B (zh) * 2019-10-30 2022-04-12 腾讯科技(深圳)有限公司 一种Dex分包方法、装置、设备及介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0024918D0 (en) * 2000-10-11 2000-11-22 Sealedmedia Ltd Method of providing java tamperproofing
US8892876B1 (en) * 2012-04-20 2014-11-18 Trend Micro Incorporated Secured application package files for mobile computing devices

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017026739A1 (ko) * 2015-08-10 2017-02-16 라인 가부시키가이샤 어플리케이션의 코드 난독화를 위한 시스템 및 방법
US10740443B2 (en) 2015-08-10 2020-08-11 Line Corporation System and method for code obfuscation of application

Also Published As

Publication number Publication date
US20140351947A1 (en) 2014-11-27

Similar Documents

Publication Publication Date Title
US10853270B2 (en) Cryptographic pointer address encoding
KR101471589B1 (ko) 공통중간언어 기반 프로그램을 위한 보안 제공 방법
KR102433011B1 (ko) Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체
CN104268444A (zh) 一种云OS Java源代码保护方法
CN104408337A (zh) 一种apk文件防逆向的加固方法
WO2015149214A1 (en) Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine
KR20140139392A (ko) 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치
CN111159757A (zh) 文件加密方法、解密方法及相应装置
WO2023029447A1 (zh) 模型保护方法、装置、设备、系统以及存储介质
Demsky Cross-application data provenance and policy enforcement
KR20160020294A (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
JP2007233426A (ja) アプリケーション実行装置
KR101734663B1 (ko) 안드로이드 어플리케이션의 역공학 방지 방법 및 이를 수행하는 장치
JP2019096299A (ja) 共通中間言語のための保安提供装置と方法、及び保安実行装置と方法
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN107871066B (zh) 基于安卓系统的代码编译方法及装置
KR20170069337A (ko) 애플리케이션 보호를 위한 암호화 처리 방법, 이에 의해 생성된 프로그램 및 이를 위한 장치
CN107257282A (zh) 一种基于rc4算法的代码全包加密方法
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
KR101749209B1 (ko) 애플리케이션의 정보 은닉 방법 및 장치, 및 애플리케이션 실행 방법 및 장치
KR101863325B1 (ko) 역공학 방지 방법 및 장치
KR101907846B1 (ko) 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법
CN114139117A (zh) 应用程序加固方法、装置、电子设备及存储介质
Cabiddu et al. The trusted platform agent
KR101907847B1 (ko) 의존 관계형 위변조 무결성 체크를 이용한 암호화 처리장치 및 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid