$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

리플렉션과 문자열 암호화를 이용한 안드로이드 API 난독화 도구
An Android API Obfuscation Tool using Reflection and String Encryption 원문보기

정보처리학회논문지. KIPS transactions on computer and communication systems 컴퓨터 및 통신 시스템, v.4 no.1, 2015년, pp.23 - 30  

이주혁 (한라대학교 정보통신방송공학부) ,  박희완 (한라대학교 정보통신방송공학부)

초록
AI-Helper 아이콘AI-Helper

자바 리플렉션은 프로그램 구성 요소들을 조사하여 호출 및 조작할 수 있는 자바 언어의 기능이다. 이를 이용하면 보다 많은 호출 단계를 거치는 구조로 변형되기에 난독화 효과를 얻을 수 있다. 그러나 이를 이용할 때, 프로그램 자체의 구성 요소 이름이 문자열 형태로 노출된다. 본 논문에서는 안드로이드 애플리케이션에서 리플렉션을 적용하여 난독화하고, 이때 노출되는 문자열들을 비즈네르 암호화 알고리즘으로 은닉하여 정적분석을 방해하는 기법 및 도구를 제시한다. 실험 결과 소스 코드의 전체적인 복잡도를 증가시키는 데 효과가 있었다. 또한 서버와 로컬 기반의 두 가지 복호화 방법을 제공하는데, 이는 애플리케이션의 실행속도에 영향을 미치기 때문에 API의 중요도에 따라 선택할 수 있다.

Abstract AI-Helper 아이콘AI-Helper

Reflection is a feature of the Java programming language that can examine and manipulate components of program itself. If you use the reflection, you can get an obfuscation effect of Java source because it converts sources into complicated structures. However, when using it, strings of components na...

주제어

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

제안 방법

  • 본 논문에서는 안드로이드 애플리케이션의 보안 취약성을 보완하기 위해서 리플렉션을 이용하여 복잡도를 높이고, 이때 노출되는 문자열들을 암호화하여 정적분석을 방해하는 기법을 제안하였고 이를 수행하는 도구를 구현하였다.
  • 본 논문에서는 안드로이드에서 악용될 수 있는 위험 API군[4]에 리플렉션을 적용하고, 이때 노출되는 문자열들을 비즈네르(Vigenère) 암호화[5]를 하여 은닉하는 기법과 구현을 제안한다. 2절에서는 관련연구로 기존의 리플렉션이 사용된 연구와 정적 분석 방해 기법에 대해 살펴본다.
  • 3절에서는 본 논문에서 제안하는 정적 분석을 방해하는 소스 변환 기법과 도구를 설명하고, 4절에서는 위험 API군을 기반으로 표본 애플리케이션을 제작하여 본 논문에서 제안하는 기법을 적용 전후로 디컴파일 후 정적분석을 시행한다. 시행방법은 두 가지로 자바 디컴파일러인 jd-gui[6]로 직접 변형된구조를 확인하고, 자바 언어의 정적 분석 도구인 Codepro Analytix[7]를 활용하여 수치적인 소스 복잡도를 알아본다. 마지막으로 5절에서는 결론과 향후 연구에 대해 논의한다.

이론/모형

  • dex 파일을 추출하고, 이를 dex2jar[17]로 컴파일하고 jd-gui를 이용하여 변환된 문자열들을 직접 분석한다. 그리고 정량적인 측정을 위해 정적 분석 도구인 Codepro Analytix를 이용하여 수치적인 코드 복잡도를 측정한다. 두 번째는 변환 도구의 성능이 검증이 잘 되었다고 할지라도 스마트폰이라는 환경 특성상 애플리케이션의 실행 속도에 크게 영향을 미치면 실활용에 무리가 있다.
본문요약 정보가 도움이 되었나요?

질의응답

핵심어 질문 논문에서 추출한 답변
비즈네르 암호의 특징은 무엇인가? 비즈네르 암호(Vigenère cipher)란 1586년 프랑스 외교관비즈네르(Blaise de Vigenère)에 의해 발표된 다중 대체 암호이다. 시저 암호(Caesar Cipher)를 기반으로 평문의 길이만큼 암호키를 계속 더해 여러 가지 문자에 대응하도록 통계적 정보를 없앤 것이 특징이다.
암호화 기법은 무엇인가? 암호화는 소스 전체가 아닌 특정 부분을 암호화 알고리즘을 사용하여 변환하는 기법이다. 이 경우 역공학으로 원본 소스를 얻었다 할지라도 분석이 어려운 장점이 있다.
안드로이드 애플리케이션이 보안에 취약한 이유는 무엇인가? 그런데 안드로이드 애플리케이션은 보안에 취약하다는 문제를 갖고 있다. 모바일 단말기에서 확장자가 apk인 파일 형태로 쉽게 추출할 수 있으며, PC에서 압축해제 프로그램으로 쉽게 내용을 확인할 수 있다. 또한 자바언어로 작성된 후 컴파일하여 달빅(Dalvik) 코드로 변환되고 가상 머신(Virtual Machine)에서 실행되기 때문에 디컴파일이 쉽게 되는 특성을 갖는다. 이는 단말기에서 추출한 apk파일의 압축을 해제하고 classes.dex 파일을 얻은 후 디컴파일하면 쉽게 자바 소스 파일로 복원하여 살펴볼 수 있다. 이는 애플리케이션에 악의적인 코드를 추가하고, 새로 서명하여 리패키징 후 배포하는 것도 가능하다.
질의응답 정보가 도움이 되었나요?

참고문헌 (18)

  1. Smartphone OS Market Share, Q1 2014, http://www.idc.com/prodserv/smartphone-os-market-share.jsp/. 

  2. Google Play Hits 1 Million Apps, http://mashable.com/2013/07/24/google-play-1-million/. 

  3. Using Java Reflection, http://www.oracle.com/technetwork/articles/java/javareflection-1536171.html/. 

  4. W. T. Sim, J. M. Kim, J. C. Ryou, and B. N. Noh, "Android Application Analysis Method for Malicious Activity Detection," Journal of KIISC, Vol.21, No.1, pp.213-219, 2011. 

  5. Vigenere cipher, http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher/. 

  6. jd-gui, https://code.google.com/p/innlab/. 

  7. Codepro Analytix, https://developers.google.com/java-dev-tools/codepro/doc/. 

  8. S. Y. Cho and T. Y. Kim, "Dynamically Reconfigurable Object Replication Management System Using Reflection approach in Java," Journal of KIISE, Vol.26, No.1(A), pp.373-375, 1999. 

  9. J. M. Choi, "A Toolkit for Context-aware Systems using Java Reflection and Method Overloading," Journal of KIISE, Vol.39, No.1, pp.12-23, 2012. 

  10. W. C. Lee and K. K. Lee, "Java Reflections in Action: A Case Study of Android Apps," Proceedings of KIISE, Vol.39, No.2(A), pp.277-279, 2012. 

  11. J. H. Lee and H. W. Park, "Design and Implementation of An Auto-Conversion Tool for Android API Obfuscation Based on Java Reflection", Proceedings of KIPS, Vol.21, No.1, pp.487-490, 2014. 

  12. Proguard, http://developer.android.com/tools/help/proguard.html. 

  13. H. S. Ahn, "A study on the Java Decompilation-Preventive Method by Obfuscating Algorithm," Journal of KIPS, Vol.14, No.1, pp.1458-1458, 2007. 

  14. E. M. Kim and K. S. Han, "A Study on the Code Obfuscation Techniques for Java Source Code," Journal of KIISE, Vol.35, No.2(A), pp.307-308, 2008. 

  15. C. H. Lee, Y. U. Park, J. H. Lim, H. G. Kim, C. H. Lee, S. J. Cho and J. S. Yang, "Access Control Mechanism Preventing Application Piracy of the Android Platform," Proceedings of KIISE, Vol.18, No.10, pp.692-700, 2012. 

  16. Apache Commons Codec, http://commons.apache.org/proper/commons-codec/. 

  17. dex2jar, http://code.google.com/p/dex2jar/. 

  18. Benchbee, http://www.benchbee.co.kr/. 

저자의 다른 논문 :

관련 콘텐츠

오픈액세스(OA) 유형

BRONZE

출판사/학술단체 등이 한시적으로 특별한 프로모션 또는 일정기간 경과 후 접근을 허용하여, 출판사/학술단체 등의 사이트에서 이용 가능한 논문

이 논문과 함께 이용한 콘텐츠

저작권 관리 안내
섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로