Click here to load reader

(Robust Anti Reverse Engineering Technique for Protecting ...kiise.or.kr/e_journal/2015/9/JOK/pdf/04.pdf · PDF file 그림 3 자바소스의 컴파일 및 실행과정 Fig. 3 Compilation

  • View
    1

  • Download
    0

Embed Size (px)

Text of (Robust Anti Reverse Engineering Technique for Protecting...

  • ISSN 2383-630X(Print) / ISSN 2383-6296(Online)

    Journal of KIISE, Vol. 42, No. 9, pp. 1100-1108, 2015. 9

    http://dx.doi.org/10.5626/JOK.2015.42.9.1100

    ††

    학생회원

    정 회 원

    :

    :

    동의대학교 전산정보부

    [email protected]

    동의대학교 컴퓨터공학과 교수(Dong-Eui Univ.)

    [email protected]

    (Corresponding author임)

    심사완료 : 2015년 7월 16일

    (Accepted 16 July 2015)

    CopyrightⒸ2015 한국정보과학회ː개인 목적이나 교육 목적인 경우, 이 저작물

    의 전체 또는 일부에 대한 복사본 혹은 디지털 사본의 제작을 허가합니다. 이 때,

    사본은 상업적 수단으로 사용할 수 없으며 첫 페이지에 본 문구와 출처를 반드시

    명시해야 합니다. 이 외의 목적으로 복제, 배포, 출판, 전송 등 모든 유형의 사용행위

    를 하는 경우에 대하여는 사전에 허가를 얻고 비용을 지불해야 합니다.

    정보과학회논문지 제42권 제9호(2015. 9)

    논문접수 : 2015년 1월 5일

    (Received 5 January 2015)

    논문수정 : 2015년 7월 13일

    (Revised 13 July 2015)

    AES 알고리즘을 사용하여 안드로이드 어플리케이션을 보호하기 위한

    견고한 역공학 방지기법 (Robust Anti Reverse Engineering Technique for Protecting

    Android Applications using the AES Algorithm)

    김 정 현 이 강 승 ††

    (JungHyun Kim) (Kang Seung Lee)

    요 약 안드로이드 운영체제의 실행파일인 classes.dex파일은 Java 바이트코드 형식이므로 누구나 쉽

    게 역공학으로 소스코드를 분석하고 수정이 가능하다. 이러한 특징 때문에 많은 어플리케이션들이 불법 복

    제되어 유통됨에 따라 피해가 증가하고 있다. 이러한 문제를 해결하기 위해 본 논문은 classes.dex파일을

    AES 암호화 알고리즘으로 암호화하여 배포하고, 암호화된 어플리케이션을 복호화하여 실행하는 어플리케

    이션 불법복제를 방지하는 기법을 제안한다. 암호화 및 복호화에 사용되는 Key는 랜덤한 값인 Salt값를

    기반으로 조합하여 Hash함수에 대입하여 얻어진 Hash값을 Key로 사용하여 역공학 공격으로부터 견고함

    을 더했다. 실험을 통해 제안한 기법이 어플리케이션의 불법복제를 방지하는데 효과적이고, 역공학 공격을

    불가능하게 하여 어플리케이션의 원천기술 보호와 리패키징으로 인한 악성코드의 전파도 방지할 수 있음

    을 보였다.

    키워드: 안드로이드, 암호화, 불법복제, AES 알고리즘, 역공학

    Abstract Classes.dex, which is the executable file for android operation system, has Java bite

    code format, so that anyone can analyze and modify its source codes by using reverse engineering.

    Due to this characteristic, many android applications using classes.dex as executable file have been

    illegally copied and distributed, causing damage to the developers and software industry. To tackle

    such ill-intended behavior, this paper proposes a technique to encrypt classes.dex file using an

    AES(Advanced Encryption Standard) encryption algorithm and decrypts the applications encrypted in

    such a manner in order to prevent reverse engineering of the applications. To reinforce the file against

    reverse engineering attack, hash values that are obtained from substituting a hash equation through

    the combination of salt values, are used for the keys for encrypting and decrypting classes.dex. The

    experiments demonstrated that the proposed technique is effective in preventing the illegal duplication

    of classes.dex-based android applications and reverse engineering attack. As a result, the proposed

    technique can protect the source of an application and also prevent the spreading of malicious codes

    due to repackaging attack.

    Keywords: android, encryption, illegal copy, AES algorithm, reverse engineering

  • AES 알고리즘을 사용하여 안드로이드 어플리케이션을 보호하기 위한 견고한 역공학 방지기법 1101

    1. 서 론

    최근 반도체 집적도의 증가와 무선이동통신의 속도향

    상 덕분에 이동 중에도 스마트폰을 이용해 언제 어디서

    나 빠른 인터넷을 즐길 수 있고, PC처럼 스마트폰에서

    사용자가 사용하고 싶은 어플리케이션을 설치하여 사용

    할 수 있는 편리함 때문에 스마트폰은 빠르게 보급되었

    다. 스마트폰의 운영체제로 구글의 안드로이드와 애플의

    iOS가 주를 이루고 있는데, 가트너의 보고서에 따르면

    2013년 2분기 안드로이드는 79.0%의 점유율, iOS는

    14.2%의 점유율을 보이고 있다[1]. 이 두 운영체제가

    93.2%의 점유율로 모든 스마트폰 운영체제 시장을 잠식

    하고 있다고 해도 과언이 아니다.

    가장 많은 점유율을 가지고 있는 안드로이드의 경우

    마켓을 통해 구매한 어플리케이션을 스마트폰과 PC를

    연결하여 어플리케이션을 쉽게 빼내서 유포할 수 있다.

    이렇게 불법 복제된 어플리케이션은 인터넷을 통해 유

    포되고 정당한 지불을 하지 않은 사용자도 인터넷을 통

    해 얻은 어플리케이션을 자신의 안드로이드 스마트폰에

    설치하여 사용할 수 있다.

    이러한 행태 때문에 많은 개발자와 개발사들이 많은

    자본과 시간을 투자해 힘들게 개발한 어플리케이션이

    불법 복제되어 유통되어 많은 피해를 입게 되며, 불법

    복제된 어플리케이션에 역공학(Reverse engineering)을

    하여 원래 소스코드를 탈취하여 원천기술을 빼돌리거나

    기존 소스코드에 악성코드를 추가하여 리패키징(Repac-

    kaging) 후, 재배포해 사용자들의 개인정보 탈취 및

    DDOS 공격에 사용될 좀비 디바이스로 만들어 더 큰

    피해가 발생되고 있다[2]. 구글은 유료 어플리케이션 보

    호를 위해 LVL[3]을 제공하고 있지만, 이 역시 역공학

    후에 얻어진 소스코드에서 LVL을 인증하는 코드를 삭

    제하면 쉽게 우회할 수 있다. 그리고 구글에서 어플리케

    이션을 마켓에 등록하기 전에 소스코드에 난독화(Ob-

    fuscation) 도구인 Proguard[4]을 적용할 것을 권장하고

    있으나, 이 역시 역공학 후에 얻어진 소스코드의 분석시

    간만 늘릴 뿐, 완벽한 보안은 되지 않는다. 이러한 안드

    로이드 어플리케이션의 낮은 보안성 때문에 유명 어플

    리케이션을 사칭하는 악성코드 어플리케이션으로 인해

    많은 피해사례가 증가하고 있다. 이에, 기존의 어플리케

    이션 라이선스 보호 방법, 불법 복제된 어플리케이션의

    역공학 공격으로부터 안전하게 보호할 수 있는 더 효율

    적이고 적용 가능한 어플리케이션 불법복제 방지기법이

    요구된다.

    본 논문은 마켓에 등록된 어플리케이션의 패키지 파

    일인 APK파일에 포함된 어플리케이션 실행 파일인

    DEX파일을 AES 암호화 알고리즘으로 암호화하여 사

    용하는 방법을 연구하여 어플리케이션이 유출되더라도

    역공학 공격으로부터 보호할 수 있는 기법을 제안하고,

    제안한 기법에 대해 실험 및 평가하였다.

    본 논문의 구성은 다음과 같다. 2장에서 역공학 방지

    기법과 관련된 배경연구에 대해 알아보고 그에 대한 특

    징과 장점, 단점을 분석한다. 3장에서 AES 알고리즘을

    사용한 어플리케이션 불법 복제 방지 시스템을 제안한

    다. 4장에서는 제안한 어플리케이션 불법 복제 방지 시

    스템의 실험 결과와 성능을 평가하며, 끝으로 5장에서

    결론을 맺는다.

    2. 배경 및 관련연구

    2.1 안드로이드 어플리케이션 보호기법

    2.1.1 LVL(License Verification Library)

    구글은 LVL을 사용하여 사용자가 어플리케이션을 사

    용할 수 있는 권한이 있는지를 인증하는 기능을 가지는

    라이브러리로 무료로 지원되며, 라이센스 검증을 위한

    서버를 구글에서 제공한다[3]. 개발자 및 개발사가 어플

    리케이션을 개발할 때 구글에서 제공하는 LVL을 활용

    하여 코드를 추가하면, 사용자가 어플리케이션을 실행할

    때 “마켓 라이센스 서버”에 저장된 구매 기록에 기반

    해서 정상적으로 구매한 사용자인지 확인해주는 방식이

    다. 마켓 어플리케이션의 라이센싱 서비스는, 네트워크

    통신이 가능할 때 “마켓 라이센스 서버”와 통신하여 사

    용자 정보와 사용자 단말기에 설치된 어플리케이션에

    대한 정보를 송신하고, “마켓 라이센스 서버”는 사용자

    의 구매 이력을 조회해 이를 확인하여 라이센스 상태를

    라이센싱 서비스로 전송하게 된다. LVL이 적용된 어플

Search related