A Technique for Protecting Android Applications using Executable Code Encryption and Integrity Verification

실행코드 암호화 및 무결성 검증을 적용한 안드로이드앱 보호 기법

  • 심형준 (단국대학교 소프트웨어보안) ;
  • 조상욱 (단국대학교 소프트웨어보안) ;
  • 정윤식 (단국대학교 컴퓨터학과) ;
  • 이찬희 (단국대학교 컴퓨터학과) ;
  • 한상철 (건국대학교 컴퓨터공학과) ;
  • 조성제 (단국대학교 컴퓨터학과)
  • Received : 2014.06.20
  • Accepted : 2014.06.27
  • Published : 2014.06.30

Abstract

In this paper, we propose a method for protecting Android applications against reverse engineering attacks. In this method, the server encrypts the original executable code (DEX) included in an APK file, inserts into the APK file a stub code that decrypts the encrypted DEX later at run-time, and distributes the modified APK file. The stub code includes an integrity validation code to detect attacks on itself. When a user installs and executes the APK file, the stub code verifies the integrity of itself, decrypts the encrypted DEX, and loads it dynamically to execute. Since the original DEX is distributed as an encrypted one, we can effectively protect the intellectual property. Further, by verifying the integrity of the stub code, we can prevent malicious users from bypassing our method. We applied the method to 15 Android apps, and evaluated its effectiveness. We confirmed that 13 out of them operates normally.

본 논문에서는 안드로이드 애플리케이션(앱)을 역공학 공격으로부터 방어하는 기법을 제안한다. 이 기법에서 서버는 안드로이드 패키지 파일인 APK 내에 있는 원본 실행코드(DEX)를 암호화하고, 실행 시 이를 복호화 할 수 있는 스텁(stub) 코드를 APK에 삽입하여 배포한다. 스텁 코드는 자신에 대한 공격을 탐지하기 위해 무결성 검증 코드를 포함한다. 사용자가 해당 APK를 설치·실행할 때, 스텁 코드는 자체의 무결성을 검증한 후, 암호화된 원본 실행코드를 복호화하고, 이를 동적 로딩(dynamic loading)하여 실행한다. 앱의 원본 실행코드는 암호화되어 배포되므로 지적재산권을 효과적으로 보호할 수 있다. 또한, 스텁 코드에 대해 무결성을 검증하므로, 제안 기법의 우회 가능성을 차단한다. 우리는 15개의 안드로이드 앱에 제안 기법을 적용하여 그 유효성을 평가하였다. 실험 결과, 13개의 앱이 정상적으로 동작함을 확인하였다.

Keywords

Acknowledgement

본 연구는 미래창조과학부가 지원한 2014년 정보통신·방송(ICT) 연구개발사업과 문화체육관광부 및 한국저작권위원회의 2014년도 저작권 기술개발사업의 연구결과로 수행되었음