KR101284676B1 - 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 - Google Patents
암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 Download PDFInfo
- Publication number
- KR101284676B1 KR101284676B1 KR1020120020519A KR20120020519A KR101284676B1 KR 101284676 B1 KR101284676 B1 KR 101284676B1 KR 1020120020519 A KR1020120020519 A KR 1020120020519A KR 20120020519 A KR20120020519 A KR 20120020519A KR 101284676 B1 KR101284676 B1 KR 101284676B1
- Authority
- KR
- South Korea
- Prior art keywords
- file
- encryption
- odex
- app
- dalvik
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000002265 prevention Effects 0.000 claims abstract description 19
- 238000005457 optimization Methods 0.000 claims abstract description 14
- 239000000284 extract Substances 0.000 claims abstract description 5
- 238000012795 verification Methods 0.000 abstract description 2
- 238000011835 investigation Methods 0.000 abstract 1
- 238000005516 engineering process Methods 0.000 description 8
- 238000011161 development Methods 0.000 description 3
- 238000011900 installation process Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/603—Digital right managament [DRM]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법에 대한 것으로서, 보다 상세하게는 암호기술을 사용하여 앱을 암호화된 상태로 배포하고, 실행시에 합법 사용자만이 암호화된 앱을 복호화하여 실행이 가능하도록 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법에 관한 것이다.
본 발명은 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성하는 단계와, 상기 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장하는 단계와, 비용을 지불한 정당한 사용자만이 앱을 실행하면 복호화 모듈을 통해서 상기 odex 파일을 복호화하는 단계를 포함하여 구성되는 것을 특징으로 한다.
본 발명은 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성하는 단계와, 상기 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장하는 단계와, 비용을 지불한 정당한 사용자만이 앱을 실행하면 복호화 모듈을 통해서 상기 odex 파일을 복호화하는 단계를 포함하여 구성되는 것을 특징으로 한다.
Description
본 발명은 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법에 대한 것으로서, 보다 상세하게는 암호기술을 사용하여 앱을 암호화된 상태로 배포하고, 실행시에 합법 사용자만이 암호화된 앱을 복호화하여 실행이 가능하도록 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법에 관한 것이다.
본 발명은 문화체육관광부 및 한국저작권위원회의 2011년도 저작권기술개발사업의 연구결과로 수행되었다.
최근 스마트폰의 보급이 급속히 확대되면서 “앱”이라 불리는 스마트폰의 응용프로그램 또한 급격히 증가하고 있는 추세이다.
미국방언협회(American Dialect Society)가 2010년 올해의 단어로 “앱(app)”을 선정하였고 2011년 3월 기준 애플 아이폰(Apple's iPhone) 앱의 개수는 35만개 이상이며, 구글 안드로이드(Google's Android) 앱의 개수 또한 25만개가 넘었다.특히 안드로이드의 경우 증가폭이 더욱 급속하게 늘어나는 추세이다.
앱과 같은 디지털 정보의 경우 정보의 손실 없이 원본과 동일한 복제본을 무제한적으로 생성하는 것이 가능하여 적절한 앱 불법 복제 방지 기술의 부재로 인해 현재 앱 불법 복제가 성행하고 있다.
2010년 하반기에 적발된 불법 스마트폰 앱의 개수는 2만 2661점에 달하며, 게임의 경우도 3741점이 넘었다. 대부분의 경우가 저작권이 있는 콘텐츠를 허가 없이 사용하거나 불법으로 유통시킨 사례이다.안드로이드에서는 라이선스 관리를 위한 모듈을 제공하고 있기는 하지만 이를 우회할 수 있는 기법이 나온 상태이며, 온라인 기반 유통환경에서 저작권자가 불법 복제 또는 저작권 침해 사실을 확인하더라도 이에 대한 법적 대응이 쉽지 않다.
현재는 기존의 앱 불법 복제 방지 기술들은 DRM(Digital Rights Management)을 기반으로 하는 경우가 대부분이다.
그러나 DRM은 기술간 호환성이 결여된 폐쇄성을 특성으로 하고 있어 일부 사업자에 의한 독점시장구축 수단으로도 악용되고 있다.
한편 안드로이드 마켓의 경우 현재 유료 앱의 비율은 전체 앱의 약 40%를 차지하고 있다.
그러나 유료 앱을 정당한 지불없이 받을 수 있는 앱이 존재하며 웹상에서도 블로그나 웹페이지를 통해서도 받을 수 있는 경로는 굉장히 많다.
구글에서는 안드로이드 유료 앱의 라이센스 관리를 위하여 LVL(License Verification library)를 제공하고 있으나 이를 우회할 수 있는 기법이 나온 상태이며, 온라인 기반 유통환경에서 저작권자가 불법복제 또는 저작권 침해 사실은 확인하더라도 이에 대한 법적대응이 쉽지 않다.
이외에도 다른 종래 기술로서 한국공개특허 제2011-0038152호는 소스 자료로부터 포렌식 마킹 이미지 데이터를 생성하는 시스템 및 방법에 관한 것으로, 생성된 포렌식 마크는 소스 이미지 데이터의 복사물마다 변경되는 포렌식 마킹 파라미터와 선택된 포렌식 마킹 기술을 사용하여 복사물과 복사물 사이에서 변경되는 것에 대하여 기재되어 있다.
따라서 저작권 보호 기술 개발을 통하여 앱의 보안성을 향상시키고 올바른 유통문화를 형성할 수 있는 새로운 시스템 및 방법의 개발이 필요하게 되었다.
상술한 문제점을 해결하기 위하여, 본 발명은 안드로이드 앱 복제 방지 시스템은 루팅이 쉽고 비교적 불법 앱 다운로드를 쉽게 할 수 있는 안드로이드 환경에서 불법 다운로드를 막을 수 있는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법을 제공하는 데 목적이 있다.
본 발명은 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성하는 단계와, 상기 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장하는 단계와, 정당한 사용자만이 앱을 실행하면 복호화 모듈을 통해서 상기 odex 파일을 복호화하는 단계를 포함하여 구성된다.
본 발명은 상기 달빅가상머신 내 암호화/복호화 모듈이 optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행하기 위해, ‘classes.dex- 복호화- Optimaiztion/Verifycation - odex - 암호화’의 실행 순서를 거쳐 dex 파일과 odex 파일의 checksum 검사와 offset 수정하는 단계를 더 포함하여 구성된다.
본 발명은 상기 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수가 Apk 파일로부터 classes.dex 파일을 얻게되는 단계를 더 포함하여 구성된다.
본 발명은 상기 복호화된 classes.dex 파일을 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성하는 단계를 더 포함하여 구성된다.
본 발명은 상기 생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화 하는 단계를 더 포함하여 구성된다.
본 발명은 상기 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행하는 단계를 더 포함하여 구성된다.
본 발명은 Apk 파일로부터 암호화된 classes.dex을 추출하여 복호화 모듈을 통해 odex 파일을 생성하는 달빅가상머신(Dalvik VM)과, 상기 odex 파일을 저장하고, 암호화를 수행한 후 모바일 디바이스에 저장하는 암호화 모듈과, 정당한 사용자만이 앱을 실행하면 상기 odex 파일을 복호화하는 복호화 모듈을 포함하여 구성된다.
상기 달빅가상머신 내 암호화/복호화 모듈은 optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행하기 위해, ‘classes.dex- 복호화 - Optimaiztion/Verifycation - odex - 암호화’의 실행 순서를 거쳐 dex 파일과 odex 파일의 checksum 검사와 offset 수정한다.
상기 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수가 Apk 파일로부터 classes.dex 파일을 얻게된다.
상기 복호화된 classes.dex 파일은 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성한다.
상기 생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화 하고, 상기 생성된 odex 파일은 /data/dalvik-cache에 data@app@[filename]@classes.dex라는 형태로 저장한다.
상기 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행하고, 상기 dex 파일을 호출하는 부분은 dalvik/analysis/vm/dexprepare.c 내의 dvmOpenCachedDexFile() 함수이며, 상기 odex파일은 암호화된 상태로 저장되어 있기 때문에 이 부분에 추가되어 있는 복호화 모듈을 통해 복호화를 수행한 후 odex 파일을 리턴하여 App 실행에 사용된다.
본 발명에 따르면 암호화된 앱은 일반 앱과 달리 odex 파일로 저장시 암호화된 상태로 저장하게 되기 때문에 비용을 지불한 정당한 사용자만이 실행이 가능하다.
본 발명에 따르면 저작권 보호 기술 개발을 통하여 앱의 보안성을 향상시키고 올바른 유통문화를 형성할 수 있다.
도1은 본 발명에 따른 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템의 전체 흐름을 나타내는 도면.
도2는 본 발명에 따른 (a), (c)는 암호화된 Apk File 설치 흐름도,
(b) odex File Format을 나타내는 도면.
도3은 본 발명에 따른 암호화된 Apk File 설치 과정을 보여주는 도면.
도4는 본 발명에 따른 수정된 Dalvik VM 디렉토리 및 메소드를 보여주는 도면.
도5는 본 발명에 따른 암호화된 Odex File을 통한 App 실행 과정을 보여주는 도면.
도2는 본 발명에 따른 (a), (c)는 암호화된 Apk File 설치 흐름도,
(b) odex File Format을 나타내는 도면.
도3은 본 발명에 따른 암호화된 Apk File 설치 과정을 보여주는 도면.
도4는 본 발명에 따른 수정된 Dalvik VM 디렉토리 및 메소드를 보여주는 도면.
도5는 본 발명에 따른 암호화된 Odex File을 통한 App 실행 과정을 보여주는 도면.
이하 본 발명의 실시를 위한 구체적인 내용을 도면을 참고하여 자세히 설명한다.
도1에서 보는 바와 같이 서버(100)에는 가입 서비스모듈(12)과 인증 서비스 모듈(14)을 포함하는 가입/인증 서비스 모듈(10)과 RSA, AES 키를 사용하는 모듈(20)이 포함되고, 인증 및 다운로드 모듈(30)과 암호화 모듈(40)을 포함하는 디바이스(200)가 더 포함된다.
여기에서 AES(Advanced Encryption Standard)는 미 연방 표준 128비트 블록 암호로, 128/192/256비트의 비밀키를 사용하며, 각각의 키에 따라 10/12/14라운드를 사용한다.
AES는 지금까지 알려진 블록 암호 알고리즘에 대한 공격 방법들에 대해 안전하도록 설계되었고, 구현시 속도와 구현의 편의성 면에서 효율적이므로 본 발명에서는 어플리케이션 암호화에 AES 알고리즘을 사용하도록 한다.
그리고 해당 어플리케이션을 암호화한 AES 비밀키의 보안을 위해 공개키 암호화 알고리즘인 RSA를 사용한다. RSA는 1024비트 이상의 큰 정수를 기반으로 한 모
듈로 연산에 의해 수행되며, 큰 정수 계수의 소인수 분해가 매우 어렵기 때문에 높은 보안성을 유지한다. 따라서 RSA로 AES 비밀키를 암호화 한다면, 상대적으로 낮은 보안성을 가지는 AES의 단점을 보완할 수 있다.
또한 상기 인증 및 다운로드 모듈(30)은 가입요청모듈(32)과 인증요청모듈(34)과 다운로드모듈(36)을 더 포함할 수도 있다.
즉 본 발명의 일실시예에 따른 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템은 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성하는 달빅가상머신(Dalvik VM)과, 상기 odex 파일을 저장하고, 암호화를 수행한 후 모바일 디바이스에 저장하는 암호화 모듈과, 정당한 사용자만이 앱을 실행하면 상기 odex 파일을 복호화하는 복호화 모듈로 크게 나뉘어 구성된다.
구체적으로 살펴보면, 도2(a)는 서버로부터 암호화된 Apk 파일을 다운로드 받아 설치하는 과정이다.
일반 Apk 파일은 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 classes.dex 파일을 추출하여 optimize 와 verifiy 수행후 odex 파일을 생성하여 모바일 디바이
스에 저장하는 것으로 설치과정이 종료된다.
도2(b)는 Apk 파일로부터 암호화된 classes.dex을 추출하여 복호화하는 과정을 나타낸 흐름도이다.
암호화된 부분은 Apk 파일 내의 classes.dex 파일이며, classes.dex 파일 중에서도 헤더부분을 제외한 나머지 부분이 실질적으로 암호화 되어 있다.
Dalvik VM에 추가한 복호화 모듈을 통해 이 부분을 복호화하며 복호화된 classes.dex 파일은 optimize와 verify후 일련의 과정을 거쳐 odex 파일을 생성한다.
도2(c)에서 보는 바와 같이 생성된 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장되며, 저장이 끝나면 모든 설치과정이 종료된다.
암호화된 앱은 일반 앱과 달리 odex 파일로 저장시 암호화된 상태로 저장하게 되기 때문에 비용을 지불한 정당한 사용자만이 실행이 가능하다.
사용자가 앱을 실행하기 위해 해당 아이콘을 클릭하면 odex 파일이 복호화되는 과정을 거쳐 앱을 사용할 수 있게 된다.
도3에서 보는 바와 같이 암호화된 App을 설치하기 위해서는 Dalvik VM 내 암호화/복호화 모듈이 추가 되어야 한다.
여기서 가장 중요한 부분은 optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행해야 한다는 점이다. ‘classes.dex- 복호화 - Optimaiztion/Verifycation - odex - 암호화’의 실행순서를 거쳐야만 dex 파일과 odex 파일의 checksum 검사와 offset 수정과정을 에러없이 통과할
수 있게 된다.
도3은 실제로 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 수정된 부분을 나타낸다.
도4는 본 발명에 따른 수정된 Dalvik VM 디렉토리 및 메소드를 보여준다.
본 발명에 따른 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수는 Apk 파일로부터 classes.dex 파일을 얻게되는 부분이다.
상기 함수는 dalvik/libdex/ZipArchive.c 에 존재하며, 얻게된 classes.dex 파일을 복호화하기 위하여 복호화 모듈을 이곳에 삽입한다.
또한 본 발명에 따라 복호화된 classes.dex 파일은 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성하게 된다.
생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 완전한 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화 한다.
본 발명에 따라 생성된 odex 파일은 /data/dalvik-cache에data@app@[filename]@classes.dex라는 형태로 저장된다.
도5에서 보는 바와 같이 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행하게 된다.
본 발명에 따라 dex 파일을 호출하는 부분은 dalvik/analysis/vm/dexprepare.c 내의 dvmOpenCachedDexFile() 함수이며, odex파일은 암호화된 상태로 저장되어 있기 때문에 이 부분에 추가되어 있는 복호화 모듈을 통해 복호화를 수행한 후 odex 파일을 리턴하여 App 실행에 사용된다.
이하 본 발명의 일실시예에 따른 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법에 대하여 자세히 설명한다.
먼저 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성한다.
그리고 상기 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장한다.
계속하여 정당한 사용자만이 앱을 실행하면 복호화 모듈을 통해서 상기 odex 파일을 복호화한다.
또한 상기 달빅가상머신 내 암호화/복호화 모듈이 optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행하기 위해, ‘classes.dex- 복호화 - Optimaiztion/Verifycation - odex - 암호화’의 실행 순서를 거쳐 dex 파일과 odex 파일의 checksum 검사와 offset 수정한다.
또한 상기 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수가 Apk 파일로부터 classes.dex 파일을 얻게된다.
여기에서 상기 복호화된 classes.dex 파일을 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성한다.
그리고 상기 생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화하고, 상기 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행한다.
100 : 서버
10 : 가입/인증 서비스 모듈
12 : 가입 서비스모듈
14 : 인증 서비스 모듈
20 : RSA, AES 키를 사용하는 모듈
30 : 인증 및 다운로드 모듈
40 : 암호화 모듈
200 : 디바이스
10 : 가입/인증 서비스 모듈
12 : 가입 서비스모듈
14 : 인증 서비스 모듈
20 : RSA, AES 키를 사용하는 모듈
30 : 인증 및 다운로드 모듈
40 : 암호화 모듈
200 : 디바이스
Claims (12)
- 달빅가상머신(Dalvik VM)에서 Apk 파일로부터 암호화된 classes.dex을 추출하여 상기 달빅가상머신에 추가한 복호화 모듈을 통해 odex 파일을 생성하는 단계와;
상기 odex 파일을 저장하기 이전에 삽입한 암호화 모듈을 통해 암호화를 수행한 후 모바일 디바이스에 저장하는 단계와;
비용을 지불한 정당한 사용자만이 앱을 실행하면 복호화 모듈을 통해서 상기 odex 파일을 복호화하는 단계;
를 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - 제1항에 있어서,
상기 달빅가상머신 내 암호화/복호화 모듈이 optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행하기 위해, ‘classes.dex- 복호화 - Optimaiztion/Verifycation - odex - 암호화’의 실행 순서를 거쳐 dex 파일과 odex 파일의 checksum 검사와 offset 수정하는 단계;
를 더 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - 제1항에 있어서,
상기 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수가 Apk 파일로부터 classes.dex 파일을 얻게되는 단계;
를 더 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - 제2항에 있어서,
상기 복호화된 classes.dex 파일을 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성하는 단계;
를 더 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - 제4항에 있어서,
상기 생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화 하는 단계;
를 더 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - 제1항에 있어서,
상기 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행하는 단계;
를 더 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지 방법. - Apk 파일로부터 암호화된 classes.dex을 추출하여, 복호화 모듈을 통해 odex 파일을 생성하는 달빅가상머신(Dalvik VM)과;
상기 odex 파일을 저장하고, 암호화를 수행한 후 모바일 디바이스에 저장하는 암호화 모듈과;
비용을 지불한 정당한 사용자만이 앱을 실행하면 상기 odex 파일을 복호화하는 복호화 모듈;
을 포함하여 구성되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템. - 제7항에 있어서,
상기 달빅가상머신 내 암호화/복호화 모듈은,
optimization과 verifycation 이전과 이후에 암호화와 복호화를 수행하기 위해, ‘classes.dex- 복호화 - Optimaiztion/Verifycation - odex - 암호화’의 실행 순서를 거쳐 dex 파일과 odex 파일의 checksum 검사와 offset 수정하는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템. - 제7항에 있어서,
상기 안드로이드 소스내의 dalvik 디렉토리에서 암호화/복호화 모듈을 사용하기 위해 dalvik/dexopt/Optmain.c에서 호출되는 dexZipExtractEntrytoFile() 함수가 Apk 파일로부터 classes.dex 파일을 얻게되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템. - 제8항에 있어서,
상기 복호화된 classes.dex 파일은 dalvik/vm/dexprepare.c의 dexContinueoptimization() 이라는 함수에서 odex 파일로 변환하여 생성하는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템. - 제10항에 있어서,
상기 생성된 odex 파일을 암호화된 상태로 저장하기 위해 optimaze와 verify, offset조정, dexoptHeader가 쓰여져 odex 파일이 생성된 이후 암호화 모듈을 삽입하여 odex파일을 암호화 하고, 상기 생성된 odex 파일은 /data/dalvik-cache에 data@app@[filename]@classes.dex라는 형태로 저장하는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템. - 제7항에 있어서,
상기 사용자가 App을 실행하기 위해 해당 App의 아이콘을 클릭하게 되면 /data/dalvik-cache 내에 있는 classes.dex 파일을 이용하여 App을 실행하고, 상기 dex 파일을 호출하는 부분은 dalvik/analysis/vm/dexprepare.c 내의 dvmOpenCachedDexFile() 함수이며, 상기 odex파일은 암호화된 상태로 저장되어 있기 때문에 이 부분에 추가되어 있는 복호화 모듈을 통해 복호화를 수행한 후 odex 파일을 리턴하여 App 실행에 사용되는 것을 특징으로 하는 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020519A KR101284676B1 (ko) | 2012-02-28 | 2012-02-28 | 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120020519A KR101284676B1 (ko) | 2012-02-28 | 2012-02-28 | 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101284676B1 true KR101284676B1 (ko) | 2013-08-23 |
Family
ID=49219499
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120020519A KR101284676B1 (ko) | 2012-02-28 | 2012-02-28 | 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101284676B1 (ko) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886230A (zh) * | 2014-02-24 | 2014-06-25 | 四川长虹电器股份有限公司 | android***的软件版权保护方法及其*** |
CN104408337A (zh) * | 2014-11-18 | 2015-03-11 | 刘鹏 | 一种apk文件防逆向的加固方法 |
CN104462883A (zh) * | 2014-11-09 | 2015-03-25 | 刘鹏 | 一种apk文件加固的方法 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
CN104484585A (zh) * | 2014-11-26 | 2015-04-01 | 北京奇虎科技有限公司 | 一种应用程序安装包的处理方法、装置及移动设备 |
KR101532763B1 (ko) * | 2013-12-26 | 2015-07-02 | 주식회사 엔젠소프트 | 어플리케이션 불법복제 방지 시스템 및 방법 |
KR101604892B1 (ko) | 2013-11-05 | 2016-03-25 | 단국대학교 산학협력단 | 안드로이드 기반 어플리케이션의 부정사용 방지 방법 및 장치 |
KR101614189B1 (ko) * | 2013-12-11 | 2016-04-20 | 단국대학교 산학협력단 | 어플리케이션 불법 유포를 방지하는 방법과 이를 위한 장치 |
CN106681736A (zh) * | 2016-12-30 | 2017-05-17 | 深圳Tcl数字技术有限公司 | Linux***业务在Android***实现的方法及装置 |
CN107391223A (zh) * | 2017-03-30 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种文件处理方法及装置 |
KR20180051618A (ko) * | 2015-10-16 | 2018-05-16 | 제말토 에스에이 | 애플리케이션을 관리하는 방법 |
KR20180100779A (ko) | 2017-03-02 | 2018-09-12 | 브이피 주식회사 | 안드로이드용 어플리케이션의 멀티 실행 파일을 위한 암호화 방법 |
CN109145619A (zh) * | 2018-08-13 | 2019-01-04 | 中金金融认证中心有限公司 | 一种Android应用程序资源加固方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100951866B1 (ko) * | 2007-12-04 | 2010-04-12 | 주식회사 텔레칩스 | 가상머신 기반의 모바일 어플리케이션 보호 시스템 및 방법 |
KR20120006664A (ko) * | 2010-07-13 | 2012-01-19 | (주)앵글스톤테크놀러지 | 달빅(Dalvik) 가상머신(Virtual Machine: VM)이 탑재된 단말기에서 자바 클래스 로딩 방법 |
KR20120120686A (ko) * | 2011-04-25 | 2012-11-02 | 삼성전자주식회사 | 휴대용 단말기에서 어플리케이션 패키지를 처리하기 위한 장치 및 방법 |
-
2012
- 2012-02-28 KR KR1020120020519A patent/KR101284676B1/ko active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100951866B1 (ko) * | 2007-12-04 | 2010-04-12 | 주식회사 텔레칩스 | 가상머신 기반의 모바일 어플리케이션 보호 시스템 및 방법 |
KR20120006664A (ko) * | 2010-07-13 | 2012-01-19 | (주)앵글스톤테크놀러지 | 달빅(Dalvik) 가상머신(Virtual Machine: VM)이 탑재된 단말기에서 자바 클래스 로딩 방법 |
KR20120120686A (ko) * | 2011-04-25 | 2012-11-02 | 삼성전자주식회사 | 휴대용 단말기에서 어플리케이션 패키지를 처리하기 위한 장치 및 방법 |
Non-Patent Citations (1)
Title |
---|
논문(2009.11) * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101604892B1 (ko) | 2013-11-05 | 2016-03-25 | 단국대학교 산학협력단 | 안드로이드 기반 어플리케이션의 부정사용 방지 방법 및 장치 |
KR101614189B1 (ko) * | 2013-12-11 | 2016-04-20 | 단국대학교 산학협력단 | 어플리케이션 불법 유포를 방지하는 방법과 이를 위한 장치 |
KR101532763B1 (ko) * | 2013-12-26 | 2015-07-02 | 주식회사 엔젠소프트 | 어플리케이션 불법복제 방지 시스템 및 방법 |
CN103886230A (zh) * | 2014-02-24 | 2014-06-25 | 四川长虹电器股份有限公司 | android***的软件版权保护方法及其*** |
CN104462883A (zh) * | 2014-11-09 | 2015-03-25 | 刘鹏 | 一种apk文件加固的方法 |
CN104408337A (zh) * | 2014-11-18 | 2015-03-11 | 刘鹏 | 一种apk文件防逆向的加固方法 |
CN104484585A (zh) * | 2014-11-26 | 2015-04-01 | 北京奇虎科技有限公司 | 一种应用程序安装包的处理方法、装置及移动设备 |
CN104462879A (zh) * | 2014-11-28 | 2015-03-25 | 北京奇虎科技有限公司 | 应用程序免Root运行控制方法与装置 |
KR20180051618A (ko) * | 2015-10-16 | 2018-05-16 | 제말토 에스에이 | 애플리케이션을 관리하는 방법 |
KR102026279B1 (ko) | 2015-10-16 | 2019-09-27 | 제말토 에스에이 | 애플리케이션을 관리하는 방법 |
CN106681736A (zh) * | 2016-12-30 | 2017-05-17 | 深圳Tcl数字技术有限公司 | Linux***业务在Android***实现的方法及装置 |
KR20180100779A (ko) | 2017-03-02 | 2018-09-12 | 브이피 주식회사 | 안드로이드용 어플리케이션의 멀티 실행 파일을 위한 암호화 방법 |
CN107391223A (zh) * | 2017-03-30 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种文件处理方法及装置 |
CN107391223B (zh) * | 2017-03-30 | 2021-03-19 | 创新先进技术有限公司 | 一种文件处理方法及装置 |
CN109145619A (zh) * | 2018-08-13 | 2019-01-04 | 中金金融认证中心有限公司 | 一种Android应用程序资源加固方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101284676B1 (ko) | 암호화 기반 사용자 인증 및 안드로이드 앱 불법복제 방지시스템 및 그 방법 | |
JP4916512B2 (ja) | コンテンツ保護システム間のデジタルコンテンツの複写 | |
JP5237375B2 (ja) | 著作権オブジェクトのバックアップのための装置および方法 | |
US7480802B2 (en) | License-based cryptographic technique, particularly suited for use in a digital rights management system, for controlling access and use of bore resistant software objects in a client computer | |
US6801999B1 (en) | Passive and active software objects containing bore resistant watermarking | |
JP4304220B2 (ja) | 自己保護文書が記録されたコンピュータ読み取り可能な記録媒体及び自己保護文書を使用する方法 | |
CN101872404B (zh) | 一种保护Java软件程序的方法 | |
US20040039932A1 (en) | Apparatus, system and method for securing digital documents in a digital appliance | |
US20080005033A1 (en) | Secure device licensing | |
EP2065828B1 (en) | Media storage structures for storing content, devices for using such structures, systems for distributing such structures | |
CN102236757A (zh) | 一种适用于Android***的软件保护方法及*** | |
CN102087605A (zh) | 一种基于android平台应用安装控制方法及*** | |
JP2005284525A (ja) | コンテンツ流通システム、暗号化装置、コンテンツ提供装置、コンテンツ再生装置、ライセンス情報提供装置、暗号化方法、コンテンツ提供方法、コンテンツ再生方法、ライセンス情報提供方法、情報処理プログラム、及び記憶媒体 | |
JP2009075720A (ja) | 情報処理装置及び情報処理プログラム | |
CN101923616A (zh) | 版权保护中的服务提供装置、用户终端及版权保护方法 | |
KR20090014575A (ko) | Drm 에이전트의 공유장치 및 방법 | |
KR101579696B1 (ko) | 암호 기법 프로토콜의 개시 값들을 난독화하는 시스템 및 방법 | |
Bahaa-Eldin et al. | A comprehensive software copy protection and digital rights management platform | |
CN103532712A (zh) | 数字媒体文件保护方法、***及客户端 | |
KR101415786B1 (ko) | 온라인 실행 코드 기술과 암호화 기반 불법 복제 방지 시스템 및 그 방법 | |
KR100973333B1 (ko) | 시간에 기반한 저작물 불법 사용 방지 시스템 및 방법 | |
Lau et al. | PlaySafe: a digital rights management system for media content consumption | |
KR20060096404A (ko) | 멀티미디어 전송시스템의 저작권 보호 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160701 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170703 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20180702 Year of fee payment: 6 |