KR101604892B1 - Method and devices for fraud prevention of android-based applications - Google Patents
Method and devices for fraud prevention of android-based applications Download PDFInfo
- Publication number
- KR101604892B1 KR101604892B1 KR1020130133844A KR20130133844A KR101604892B1 KR 101604892 B1 KR101604892 B1 KR 101604892B1 KR 1020130133844 A KR1020130133844 A KR 1020130133844A KR 20130133844 A KR20130133844 A KR 20130133844A KR 101604892 B1 KR101604892 B1 KR 101604892B1
- Authority
- KR
- South Korea
- Prior art keywords
- application
- app
- stub
- encrypted
- file
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
앱 부정사용 방지를 위한 앱 업로드 방법과 이에 대응하는 앱 암호화 서버, 그리고 앱 실행 방법과 이에 대한 사용자 단말이 개시된다. 앱 업로드 방법은, 앱에서 원본 실행파일을 제거하고 스텁 실행파일을 삽입하여 스텁 앱을 생성하고, 암호화 서버에 저장하는 스텁 앱 저장 단계와, 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 암호화 서버에 저장하는 암호화 앱 저장 단계와, 스텁 앱을 앱스토어에 업로드하는 단계를 포함하여 구성된다. 앱 실행 방법은, 앱스토어에 저장된 스텁 앱을 사용자 단말에 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 단계와, 사용자 단말에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하는 단계와, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 단계를 포함하여 구성된다.An application upload method for preventing illegal use of an application, an application encryption server corresponding thereto, and an application execution method and a user terminal for the application are disclosed. The method of uploading an app includes a stub application storing step of removing the original executable file from the app, creating a stub app by inserting the stub executable file and storing the stub app in the encryption server, generating an encrypted app by encrypting the original executable file, And a step of uploading the stub application to the app store. A method of executing an application includes the steps of: installing a stub execution file and resource files by downloading a stub application stored in an app store to a user terminal; generating a decryption application by decrypting the encrypted application stored in the user terminal; And overwriting the original executable file with the stub executable file.
Description
본 발명은 어플리케이션(application) 부정사용을 방지하기 위한 기술에 관한 것으로, 더 상세하게는 안드로이드 환경에서 수행되는 어플리케이션의 업로드 단계에서의 암호화와, 다운로드 및 실행 단계에서의 복호화 기술에 관한 것이다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a technique for preventing illegal use of an application, and more particularly, to encryption in an application uploading step performed in an Android environment and decoding technology in a downloading and executing step.
최근 스마트폰의 급속한 보급 확대로 "앱"이라는 스마트폰 응용프로그램 시장 또한 거대한 시장으로 부각되는 추세이다. 2010년 미국방언협회(American Dialect Society)는 올해의 단어로 "앱"을 선정할 정도로 스마트폰과 앱은 빠르게 우리 생활 깊숙이 자리잡아 가고 있다.With the recent rapid expansion of smartphones, the smartphone application market, called "app", is also emerging as a huge market. In 2010, the American Dialect Society selected "apps" for the word of the year, and smartphones and apps are rapidly becoming a part of our lives.
전 세계적으로 2012년 3월 기준 750,000개(유효앱 580,000개)의 어플리케이션이 등록되고 있으며, 국내는 2012년 3월 기준 스마트폰 이용자가 30,000,000명을 돌파할 것으로 추정되고 있다(이 중 아이폰 이용자는 약 4,000,000명이다).Globally, as of March 2012, 750,000 apps (580,000 effective apps) are registered, and domestic smartphone users are estimated to exceed 30,000,000 by March 2012. Of these, iPhone users 4,000,000).
2012년 10월 안드로이드 기반 어플리케이션 마켓에서 사용한 앱 개수는 700,000개로 아이폰 앱스토어의 사용 가능한 앱의 수를 따라잡았다. 앱을 불법 복제하여 임의로 변조한 뒤 마켓에 등록한 불법 복제 앱의 수도 지난 2012년 9월말 약 170,000건으로 2012년 6월말에 비교하여 6배 증가하였다.In October 2012, the number of apps used in the Android-based app market surpassed the number of apps available in the iPhone App Store, reaching 700,000. The number of pirated apps registered in the market after illegally duplicating and tampering with apps has increased to about 170,000 at the end of September 2012 compared to 6 times at the end of June 2012.
앱 불법 복제 문제는 iOS보다 특히 안드로이드 운영체제의 경우가 더 심각하며, 이로 인해 앱에 대한 지적재산권 문제가 심각하게 발생하고 있다. 안드로이드가 최고 인기 스마트폰용 플랫폼인 동시에 해킹 공격도 가장 많이 받는 것으로 나타나고 있다.The problem of app piracy is more serious in the Android operating system than in iOS, which causes serious intellectual property problems with the app. Android is the most popular platform for smartphones, and the hacking attack is also seen as the most.
보안업체 에프시큐어(F-Secure) 보고서에 따르면 지난해 발생한 악성코드 공격의 79%가 안드로이드를 겨냥했던 것으로 조사되기도 하였다. 이는 2011년 66.7%보다 12.3%p 늘어난 것으로 안드로이드 공격은 2010년만 해도 11.25%에 불과했던 것이 2년 만에 크게 확산된 것이다.According to F-Secure, a security firm, 79 percent of malicious code attacks last year were aimed at Android. This was 12.3% p increase from 66.7% in 2011, and the Android attack was only 11.25%
애플사 아이폰의 경우 아이폰을 해킹해야만 불법 복제 앱을 사용하는 것이 가능하지만, 안드로이드 기반 휴대단말의 경우 불법 복제 앱을 복사하는 것만으로도 사용 가능하다. 안드로이드 플랫폼은 불법 복제가 용이하여 쉽게 모든 소스에서 응용프로그램을 설치할 수 있다.In the case of Apple iPhone, it is possible to use pirated apps only by hacking the iPhone, but for Android-based mobile phones, copying illegal copy apps is also possible. The Android platform is easy to pirate, so you can easily install applications from any source.
한편, 일반적인 컴퓨팅 장치에서의 어플리케이션에 대하여 데이터 전송 시, 타인의 불법적인 방법에 의해 데이터가 손실되거나 변경되는 것을 방지하기 위한 기술로서 데이터를 쉽게 조작할 수 없도록 다른 형태로 변환하여 전송하고 데이터를 수신하는 쪽에서는 이를 원래의 형태대로 복원하는 방법이 연구되어 왔다.On the other hand, as a technique for preventing data from being lost or changed by an illegal method of others when data is transmitted to an application in a general computing device, it is converted into another form so that data can not be easily manipulated, A method of restoring it to its original form has been studied.
이를 암호화 및 복호화라고 하며, 암호화 방식은 크게 대칭형 암호화 방식의 비밀키 암호화 기법(Symmetric Key Cryptography)과 비대칭형 암호화 방식의 공개키 암호화 기법(Asymmetric Key Cryptography)으로 나뉘어진다.This is called encryption and decryption. Encryption schemes are divided into symmetric key cryptography (symmetric key cryptography) and asymmetric key cryptography (asymmetric key cryptography).
스마트폰 어플리케이션 분야(특히 안드로이드 기반 어플리케이션)에서는 앞서 살펴본 대로 최근 앱 마켓의 성장과 함께 앱 불법 복제 및 사용에 의한 피해도 급격히 증가하고 있다. 불법 복제된 앱 실행을 차단하여, 앱 저작권 침해에 따른 피해를 줄이기 위해 Google의 LVL(License Verification Library), SKT의 ARM(Application DRM) 등의 라이브러리가 제공되었지만 안드로이드 앱은 안드로이드 운영체제의 개방성으로 인하여 역컴파일에 의한 변조 및 재패키징이 용이하기 때문에 라이브러리 수준의 불법 실행 차단 기술들이 우회될 가능성이 높다고 할 수 있다.In the field of smartphone applications (especially Android-based applications), as has been pointed out earlier, the recent growth in the app market and the damage caused by piracy and use of apps are increasing rapidly. In order to prevent illegal duplication of apps and to reduce damage due to infringement of the copyright of the app, Google's libraries such as License Verification Library (LVL) and SKT's ARM (Application DRM) have been provided. However, Because it is easy to modify and repackage by compilation, it is highly likely that library-level illegal execution blocking technologies will be bypassed.
위와 같은 기존의 앱 불법 복제 방지 기술들은 DRM(Digital Rights Management)을 기반으로 하는 경우가 대부분이다. DRM 기반 기술들의 경우 타 기기와의 호환성이 결여된 폐쇄성으로 인해, 일부 사업자에 의한 독점시장 구축 수단으로 악용되고 있는 현실이다.Such existing anti-piracy technologies are often based on DRM (Digital Rights Management). DRM-based technologies are abused as a means of building monopoly markets by some operators due to the lack of compatibility with other devices.
안드로이드 기반 어플리케이션의 저작권 문제가 심각한 이유는 앱 설치 파일인 APK(Android PacKage) 파일을 안드로이드 단말기에서 PC로 쉽게 추출할 수 있고, 추출된 APK 파일은 안드로이드 역분석(Reverse Engineering) 도구들에 의해 비교적 쉽게 디컴파일 및 디버깅이 가능하고 변조 할 수 있다. 악성 어플리케이션 사용자들은 이러한 방식으로 어플리케이션의 소스를 복원하여 결제 인증과정을 우회하거나 광고를 삭제하고 더 나아가 악성코드를 삽입하는 등의 행위를 한 뒤, APK 파일을 재패키징한다. 재패키징된 APK 파일을 다시 마켓에 올려 판매하거나 웹 하드를 통해 퍼트리는 형태를 보이기도 한다.The reason for the serious copyright problem of Android based application is that it can easily extract APK (Android PacKage) file from the Android terminal to the PC and extracted APK file is relatively easy by the reverse engineering tools of Android It can be decompiled, debugged, and tampered with. In this way, malicious application users can restore the source of the application, bypass the payment authentication process, delete the advertisement, further insert malicious code, and repackage the APK file. The repackaged APK file is put on the market again and sold or it spreads through the web hard.
이를 개선하기 위하여, Google은 앱 개발자들에게 코드 난독화 도구인 ProGuard를 사용할 것을 권유하였다. 하지만 이는 앱을 역분석하는데 소요되는 시간은 지연시켰으나 완전히 차단하지는 못하였다.To improve this, Google encouraged app developers to use ProGuard, a code obfuscation tool. However, this delayed the time it took to reverse the app, but it did not completely block it.
암호화 기반의 앱 역분석 방지 기법은 꾸준히 연구되었으나 암복호화에 사용된 키가 노출되면 그 기법 또한 무력화될 수 있다. 더구나 하나의 스마트폰을 통해 구매한 앱들이 동일한 키로 암호화되므로 일단 키가 노출되고 나면, 해당 스마트폰의 모든 앱들이 복호화되어 불법 복제될 수 있다. 따라서, 서버에서 생성한 비밀키를 스마트폰에 저장하여 관리하는 추가적인 키 관리 기술을 필요로 하게 된다.Encryption - based application decompression prevention techniques have been studied steadily, but if the key used for encryption decryption is exposed, the technique can also be disabled. Moreover, since apps purchased through one smartphone are encrypted with the same key, once the key is exposed, all the apps on the smartphone can be decrypted and pirated. Accordingly, an additional key management technology for storing and managing the secret key generated by the server in the smartphone is required.
이를 위하여 MTM(Mobile Trusted Module)을 통한 안전한 저장소(Secure Storage)를 사용한 개인키 관리방법이 있지만, 커널과 하드웨어의 수정 및 지원이 필요하기 때문에 적용상 한계점이 존재하고 암복호화 키를 관리하는 방법 외에 앱의 생성, 설치 및 실행 과정에서의 별도의 앱 관리 방법도 필요한 실정이다.For this, there is a private key management method using Secure Storage through MTM (Mobile Trusted Module). However, since there is a limitation in application and management method of encryption decryption key, There is also a need for a separate method of managing an app during the creation, installation, and execution of the app.
최근 안드로이드 기반 어플리케이션의 소스코드 부정사용 방지를 위한 저작권 보호기술 개발 및 표준화에 대한 요구가 증가되고 있는 것도 이 때문이다.This is why there is a growing demand for the development and standardization of copyright protection technology to prevent illegal use of the source code of Android-based applications.
본 발명의 목적은 안드로이드 기반 앱의 부정사용 방지를 위하여 앱을 암호화하여 업로드할 때, 중요한 소스코드를 제거한 채 업로드하는 방법을 제공하는 것에 있다.It is an object of the present invention to provide a method of encrypting and uploading an app to prevent illegal use of an Android-based app, without uploading important source code.
또한, 본 발명의 다른 목적은 안드로이드 기반 앱의 부정사용 방지를 위하여 앱을 다운로드하여 실행할 때, 비로소 별도로 관리된 암호화된 앱을 복호화하여 사용하고 실행이 종료되면 복호화된 앱은 부정사용되지 않도록 접근권한 변경 내지 다른 스텁 앱으로 대체시킬 수 있도록 하는 앱 실행 방법을 제공하는 것에 있다.It is another object of the present invention to provide a method and system for decrypting and decrypting an encrypted application separately managed when the application is downloaded and executed in order to prevent illegal use of the Android-based application, To be changed or replaced with another stub application.
또한, 본 발명의 또 다른 목적은 상기 업로드 방법과 실행 방법을 수행할 수 있는 앱 암호화 서버와 사용자 단말을 제공하는 것에 있다.It is still another object of the present invention to provide an application encryption server and a user terminal capable of performing the uploading method and the execution method.
상술한 본 발명의 목적을 달성하기 위한 일 측면에 따른 앱 업로드 방법은, 앱(app.) 부정사용 방지를 위한 앱 업로드 방법에 있어서, 앱을 앱스토어(app. store)에 등록하는 이벤트가 트리거(trigger)가 되어, 앱에서 원본 실행파일을 제거하고 스텁(stub) 실행파일을 삽입하여 스텁 앱(stub app.)을 생성하고, 스텁 앱을 앱 암호화 서버에 저장하는 스텁 앱 저장 단계와, 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 암호화 앱을 앱 암호화 서버에 저장하는 암호화 앱 저장 단계와, 스텁 앱을 앱스토어에 업로드하는 단계를 포함하여 구성될 수 있다.According to one aspect of the present invention, there is provided an app upload method for preventing unauthorized use of an app, the method comprising: an event registering an app in an app store, a stub application saving step of removing the original executable file from the app and generating a stub app by inserting a stub executable file and storing the stub app in the app encryption server; An encrypted application storing step of encrypting the executable file to generate an encrypted app, and storing the encrypted app in the app encrypting server, and a step of uploading the stub app to the app store.
여기에서, 상기 스텁 앱 및 상기 암호화 앱은 안드로이드 패키지(APK, Android PacKage) 파일 형식일 수 있다.Here, the stub application and the encryption application may be an Android package (APK, Android PacKage) file format.
여기에서, 스텁 앱은 원본 실행파일을 제외한 나머지 리소스(resource) 파일들이 설치되도록 패키징될 수 있다.Here, the stub application can be packaged so that the resource files other than the original executable file are installed.
여기에서, 앱 업로드 방법은, 암호화 앱 저장 단계 이전에, 앱에 포함된 매니페스트(manifest) 파일에 인텐트 필터(intent filter)를 추가하여 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가 단계를 더 포함하여 구성될 수 있다.Here, the app upload method further includes an intent filter adding step of adding an intent filter to the manifest file included in the application before the encrypted application storing step to give an execution flag to the encrypted app And the like.
상술한 본 발명의 목적을 달성하기 위한 다른 측면에 따른 앱 실행 방법은, 앱 부정사용 방지를 위한 앱 실행 방법에 있어서, 앱을 앱스토어(app. store)로부터 내려받는 이벤트가 트리거가 되어, 앱스토어에 저장된 스텁 앱을 사용자 단말에 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 단계와, 스텁 앱을 실행하는 이벤트가 트리거가 되어, 사용자 단말에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하는 단계와, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기(overwrite) 하는 단계를 포함하여 구성될 수 있다.According to another aspect of the present invention, there is provided an application execution method for preventing an unauthorized use of an application, the event being downloaded from an app store, Installing a stub execution file and resource files by downloading a stub application stored in a store to a user terminal, generating a decryption application by decoding an encrypted application stored in the user terminal as an event triggered by the stub application, , And overwriting the original executable file included in the decryption application with the stub executable file.
여기에서, 상기 복호화 앱을 생성하는 단계는, 사용자 단말에 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱(launcher app.)이 앱 암호화 서버로부터 암호화 앱을 다운로드하여 사용자 단말에 저장하는 단계를 선(先) 수행할 수 있다.Here, the step of generating the decryption application may include the step of, when the encrypted application stored in the user terminal does not exist, the launcher application downloading the encrypted application from the application encryption server and storing the encrypted application in the user terminal Can be performed.
여기에서, 상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식일 수 있다.Here, the stub application and the encryption application may be in APK file format.
여기에서, 앱 실행 방법은, 덮어쓰기 하는 단계 이전에, 스텁 앱을 백업하는 단계를 더 포함하여 구성될 수 있다.Here, the method of executing the application may further include a step of backing up the stub application before the overwriting step.
나아가, 앱 실행 방법은, 앱의 실행이 종료되는 이벤트가 트리거가 되어, 백업한 스텁 앱에 포함된 스텁 실행파일을 원본 실행파일에 덮어쓰기 하는 단계를 더 포함하여 구성될 수 있다.Furthermore, the method of executing an application may further include a step of overwriting the stub executable file included in the backed-up stub application with an event that the execution of the app is terminated as a trigger, to the original executable file.
여기에서, 앱 실행 방법은, 덮어쓰기 하는 단계 이후에, 런처 앱이 사용자 단말로 앱 실행 인텐트를 전송하고, 사용자 단말은 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 단계를 더 포함하여 구성될 수 있다.Here, the method of executing an application may further include a step in which the launcher application transmits an application execution intent to the user terminal after the step of overwriting, and the user terminal determines an application to be executed based on the application execution intent .
여기에서, 앱 실행방법은, 덮어쓰기 하는 단계 이후에, 복호화 앱에 대한 다른 그룹(other group)의 권한을 축소 변경하는 단계를 더 포함하여 구성될 수 있다.Here, the method of executing an application may further include a step of reducing the rights of the other group to the decrypted application after the step of overwriting.
상술한 본 발명의 목적을 달성하기 위한 또 다른 측면에 따른 앱 암호화 서버는, 앱 부정사용 방지를 위한 안드로이드 앱 암호화 서버에 있어서, 앱을 앱스토어에 등록하는 이벤트가 트리거가 되어, 앱에서 원본 실행파일을 제거하고 스텁 실행파일을 삽입하여 스텁 앱을 생성하고, 스텁 앱을 저장하는 스텁 앱 저장부와, 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 암호화 앱을 저장하는 암호화 앱 저장부와, 스텁 앱을 앱스토어에 업로드하는 앱 업로드부를 포함하여 구성될 수 있다.According to another aspect of the present invention, there is provided an application encryption server for preventing an unauthorized use of an application, wherein an event for registering an application in an app store is a trigger, A stub application storage unit for storing a stub application by creating a stub application by removing a file and inserting a stub execution file, an encrypted application storage unit for creating an encrypted application by encrypting the original execution file, and storing the encrypted application, And an app upload unit for uploading the stub app to the app store.
여기에서, 상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식일 수 있다.Here, the stub application and the encryption application may be in APK file format.
여기에서, 상기 스텁 앱은, 원본 실행파일을 제외한 나머지 리소스 파일들이 설치되도록 패키징될 수 있다.Here, the stub application may be packaged so that the resource files other than the original executable file are installed.
여기에서, 앱 암호화 서버는, 앱에 포함된 매니페스트 파일에 인텐트 필터를 추가하여 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가부를 더 포함하여 구성될 수 있다.Here, the application encryption server may further include an intent filter adding unit that adds an intent filter to the manifest file included in the application to give an execution flag to the encrypted application.
상술한 본 발명의 목적을 달성하기 위한 또 다른 측면에 따른 앱 사용자 단말은, 앱 부정사용을 방지하는 사용자 단말에 있어서, 앱을 앱스토어로부터 내려받는 이벤트가 트리거가 되어, 앱스토어에 저장된 스텁 앱을 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 스텁 앱 다운로드부와, 앱을 암호화한 암호화 앱을 저장하는 암호화 앱 다운로드부와, 스텁 앱을 실행하는 이벤트가 트리거가 되어, 암호화 앱 다운로드부에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하고, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 복호화 앱 저장부를 포함하여 구성될 수 있다.According to another aspect of the present invention, there is provided a user terminal for preventing an unauthorized use of an application, comprising: an event receiving an application from an app store as a trigger; a stub application A stub application download unit for downloading the stub execution file and the resource files, an encrypted application download unit for storing the encrypted application in which the application is encrypted, and an event for executing the stub application as a trigger, And a decryption application storage unit for decrypting the encrypted application to generate a decrypted application, and overwriting the original execution file included in the decrypted application with the stub execution file.
여기에서, 상기 암호화 앱 다운로드부는, 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱(launcher app.)이 암호화 서버로부터 암호화 앱을 다운로드하여 저장할 수 있다.Here, if the encrypted application does not exist, the encryption application downloading unit may download and store the encrypted application from the encryption server by the launcher app.
여기에서, 상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식일 수 있다.Here, the stub application and the encryption application may be in APK file format.
여기에서, 사용자 단말은, 스텁 앱 다운로드부에 저장된 스텁 앱을 백업하는 스텁 앱 백업부를 더 포함하여 구성될 수 있다.Here, the user terminal may further comprise a stub application backup unit for backing up the stub application stored in the stub application downloading unit.
나아가, 상기 스텁 앱 다운로드부는, 앱의 실행이 종료되는 이벤트가 트리거가 되어, 백업한 스텁 앱에 포함된 스텁 실행파일을 원본 실행파일에 덮어쓰기 할 수 있다.Furthermore, the stub application downloading unit can trigger the event that the execution of the application is terminated, and overwrite the stub execution file included in the backed-up stub application with the original execution file.
여기에서, 사용자 단말은, 런처 앱이 전송한 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 앱 실행 결정부를 더 포함하여 구성될 수 있다.Here, the user terminal may further include an application execution determining unit that determines an application to be executed based on the tent of the application execution intent transmitted by the launcher application.
나아가, 사용자 단말은, 복호화 앱에 대한 다른 그룹(other group)의 권한을 축소 변경하는 앱 권한 관리부를 더 포함하여 구성될 수 있다.Further, the user terminal may further include an appending authority managing unit for reducing and changing the privileges of the other group to the decrypted app.
상기와 같은 본 발명에 따른 앱 업로드 방법과 앱 암호화 서버를 사용하면, 앱의 저장 및 전송과정에서 불법 유출될 가능성을 줄일 수 있고, 암호화된 앱이 유출되더라도 사용자 단말의 복호화 메커니즘이 유출되지 않는 한 그 피해를 최소화할 수 있다는 장점이 있다.Using the above-described app upload method and the app encryption server according to the present invention can reduce the possibility of illegal outflow in the process of storing and transmitting an application, and even if an encrypted application is leaked, the decryption mechanism of the user terminal is not leaked The damage can be minimized.
또한, 상기와 같은 본 발명에 따른 앱 실행 방법과 사용자 단말을 사용하면, 복호화된 앱은 필요할 때, 즉 앱 실행 중에만 저장하고 앱의 실행이 없을 때, 즉 종료되었을 때에는 복호화 앱을 스텁 앱으로 대체함으로써 복호화 앱이 유출될 가능성을 획기적으로 줄일 수 있다는 장점이 있다.Also, using the above-described method of executing an application and the user terminal according to the present invention, the decrypted application is stored only when it is needed, that is, while the application is running, and when the application is not running, It is possible to drastically reduce the possibility of the decryption application being leaked.
이는 또한, 최초 한 번 저장된 암호화 앱을 계속하여 사용할 수 있어, 복호화 앱을 필요할 때마다 생성할 수 있으므로 암호화 앱의 저장과 전송에 추가적인 기술과 자원을 필요로 하지 않는다는 장점이 있는 것이다. 나아가, 안드로이드 앱에 원본 실행파일을 그대로 내재한 채로 전송 및 저장하는 경우에 있어서의 불법 유출의 위험을 극복한 것이다.It also has the advantage of not requiring additional skills and resources to store and transfer cryptographic apps, as it can continue to use the first encrypted stored app, creating a decrypted app whenever needed. Furthermore, it overcame the risk of illegal spillage when transmitting and storing the original executable file intact in the Android app.
도 1은 본 발명의 일 실시예에 따른 앱 업로드 방법과 그 세부 단계를 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 앱 업로드 방법의 일례를 설명하기 위한 예시도이다.
도 3은 본 발명의 일 실시예에 따른 앱 실행 방법과 그 세부 단계를 설명하기 위한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 앱스토어로부터 사용자 단말로 앱을 다운로드 및 설치하는 과정의 일례를 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 앱 암호화 서버로부터 사용자 단말로 암호화 앱을 다운로드하는 과정의 일례를 설명하기 위한 예시도이다.
도 6은 본 발명의 일 실시예에 따른 스텁 앱, 암호화 앱 및 Optimized DEX 파일이 저장된 디렉토리의 구조 일례를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따른 암호화 앱을 복호화하여 복호화 앱을 생성하는 과정의 일례를 설명하기 위한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 복호화 앱을 스텁 앱에 대체하는 과정의 일례를 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시예에 따른 복호화 앱과 ODEX 파일의 접근권한을 변경하고 앱 실행 인텐트를 전송하는 과정의 일례를 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시예에 따른 앱 실행 종료를 감지하여 백업된 스텁 앱을 복호화 앱에 대체하는 과정의 일례를 설명하기 위한 예시도이다.
도 11은 본 발명의 일 실시예에 따른 앱 암호화 서버와 그 구성요소를 설명하기 위한 블록도이다.
도 12는 본 발명의 일 실시예에 따른 원본 실행파일의 일례인 DEX 파일의 구조를 설명하기 위한 예시도이다.
도 13은 본 발명의 일 실시예에 따른 사용자 단말과 그 구성요소를 설명하기 위한 블록도이다.1 is a flowchart illustrating an application upload method and its detailed steps according to an embodiment of the present invention.
2 is an exemplary diagram illustrating an example of an app upload method according to an embodiment of the present invention.
3 is a flowchart illustrating an application execution method and its detailed steps according to an embodiment of the present invention.
4 is an exemplary diagram illustrating an example of a process of downloading and installing an app from an app store to a user terminal according to an embodiment of the present invention.
5 is an exemplary diagram illustrating an example of a process of downloading a cryptographic application from an app encryption server to a user terminal according to an embodiment of the present invention.
FIG. 6 is an exemplary view illustrating an example of a structure of a directory storing a stub application, an encrypted application, and an optimized DEX file according to an embodiment of the present invention.
7 is an exemplary diagram illustrating an example of a process of decrypting a cryptographic application to generate a decrypted app according to an embodiment of the present invention.
8 is an exemplary diagram for explaining an example of a process of replacing a decrypted application with a stub application according to an embodiment of the present invention.
9 is an exemplary diagram for explaining an example of a process of changing an access right of a decrypted app and an ODEX file and transmitting an app execution intent according to an embodiment of the present invention.
FIG. 10 is an exemplary diagram for explaining an example of a process of replacing a backed-up stub application with a decryption application by detecting an application execution end according to an embodiment of the present invention.
11 is a block diagram for explaining an application encryption server and its components according to an embodiment of the present invention.
12 is an exemplary diagram illustrating a structure of a DEX file, which is an example of a source executable file according to an embodiment of the present invention.
13 is a block diagram illustrating a user terminal and its components according to an embodiment of the present invention.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. The terms first, second, A, B, etc. may be used to describe various elements, but the elements should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.
먼저, 본 출원에서 사용되는 용어를 간략히 설명하면 다음과 같다.First, the terms used in the present application will be briefly described as follows.
APK(Android Application Package)는 구글(Google)의 안드로이드 운영체제(Android Operating System) 상에서 어플리케이션이나 미들웨어를 설치(installation)하고 컨텐츠를 배포(distribution)하기 위하여 사용되는 파일형태(file format)이다. 즉, APK 파일은 윈도 운영체제(windows operating system)에서의 MSI(MicroSoft Installer) 파일과 유사하다.APK (Android Application Package) is a file format used to install and distribute applications and middleware on Google's Android Operating System. That is, the APK file is similar to an MSI (MicroSoft Installer) file in the Windows operating system.
APK 파일(예를 들어, sample.apk)을 만들기 위한 프로그램이 구동되면, 모든 구성부분이 되는 파일들이 하나의 APK 파일로 패키징된다. APK 파일은 프로그램의 실행코드(예를 들어, sample.dex), 리소스(resources), 매니페스트 파일(manifest file) 등을 모두 포함하고 있다.When a program for creating an APK file (for example, sample.apk) is started, all the constituent parts are packaged into one APK file. The APK file contains all of the program's executable code (for example, sample.dex), resources, and manifest files.
또한 상기 사용된 용어로서 매니페스트 파일을 설명하면 다음과 같다. 하나의 어플리케이션(application) 안에는 여러 개의 소프트웨어 컴포넌트(software components)들이 존재하게 된다. 특정한 소프트웨어 컴포넌트를 시작하기 위해서는 어플리케이션 안에 해당 소프트웨어 컴포넌트가 존재하는지를 먼저 파악해야 하는데, 매니페스트 파일은 어플리케이션 내에 존재하는 소프트웨어 컴포넌트들의 목록을 가지고 있어, 이들을 매니페스트 파일 하나로 관리할 수 있게끔 한 것이다.The manifest file will be described as follows. There are several software components in an application. To start a specific software component, it is first necessary to know whether the corresponding software component exists in the application. The manifest file has a list of software components existing in the application so that they can be managed as one manifest file.
즉 소프트웨어 패키징(software packaging)에 있어서, 컨텐츠의 배포 목록을 파일 형태로 만들어 놓은 것이 매니페스트 파일이라고 볼 수 있으며, 배포되는 파일들의 정보를 단순히 열거하고 있다.That is, in software packaging, a distribution list of contents is made into a file, which can be regarded as a manifest file, and simply lists the information of the distributed files.
인텐트 필터는 앱 컴포넌트가 받고자 하는 인텐트가 무엇인지를 정하는 수단이다. 인텐트에는 명시적 인텐트와 묵시적 인텐트가 있을 수 있는데, 어플리케이션이나 컴퓨팅 장치가 명시적 인텐트를 전송하는 경우에는 클래스 이름이 설정되어 있으므로 어떤 어플리케이션을 실행할 지가 명확하다. 그러나 묵시적 인텐트의 경우에는 클래스 이름 대신 액션 이름이 설정되고, 액션 이름만으로는 어떤 앱 컴포넌트를 실행할지가 명확하지 않을 수 있다. 따라서 앱 컴포넌트는 인텐트 필터를 가질 수 있고, 안드로이드는 인텐트 필터를 이용하여 어떤 앱 컴포넌트에 묵시적 인텐트를 전달할지를 결정할 수 있게 된다.An intent filter is a means of determining what intents an app component wants to receive. An intent can have an explicit tent and an implicit tent. When an application or computing device sends an explicit tent, the class name is set so it is clear which application to run. However, in the case of an implied tent, an action name is set instead of a class name, and it may not be obvious which application component to run by just the action name. Thus, an app component can have an intent filter, and Android can use an intent filter to determine which app component to deliver an implicit tent.
묵시적 인텐트를 이용하여 앱 컴포넌트를 실행하는 과정을 예로 들면 다음과 같다. 첫째, 한 앱 컴포넌트가 액션 값이 A인 묵시적 인텐트를 안드로이드에 보낸다. 둘째, 안드로이드는 액션 값이 A인 인텐트 필터를 갖는 앱 컴포넌트를 찾는다. 셋째, 액션 값이 일치하는 인텐트 필터를 갖는 앱 컴포넌트가 1개 발견되면, 안드로이드는 그것을 실행하고 묵시적 인텐트를 전달한다. 만약 앱 컴포넌트가 2개 이상 발견되면, 안드로이드는 사용자에게 어떤 것을 실행할 것인지를 물을 수 있다. 하나도 발견되지 않는 경우는 사용자 단말에 관련 메시지를 디스플레이 하는 등의 방법을 사용할 수 있다.The following is an example of the process of running an app component using an implicit tent. First, an app component sends an implied tent with an action value of A to Android. Second, Android looks for an app component that has an intent filter with an action value of A. Third, once an app component with an intent filter with the matching action value is found, Android executes it and delivers an implicit tent. If two or more app components are found, Android can ask the user what to do. If none is found, a method of displaying a related message in the user terminal can be used.
플래그란, 기(旗). 표지(標識) 등을 의미하는 것으로, 프로그램 실행 중에 특정 상태가 성립했는지의 여부를 식별하기 위하여 조사되는 데이터의 항목, 즉 식별 또는 표시를 목적으로 하여 데이터에 붙여지는 표시기(indicator)이며, 보통은 1비트가 사용된다. 사용중 표시, 기입 금지 표시, 인터럽트 조건 발생 표시 등이 이용된다.A flag is a flag. Sign, or the like, and is an indicator of data to be inspected in order to discriminate whether or not a specific state is established during execution of a program, that is, an indicator attached to data for the purpose of identification or display, 1 bit is used. In-use display, write inhibit display, and interrupt condition occurrence display are used.
앱스토어는 어플리케이션 스토어(Application Store)의 준말로, 모바일 어플리케이션(휴대폰에 탑재되는 일정관리, 주소록, 알람, 계산기, 게임, 동영상, 인터넷접속, 음악재생, 내비게이션, 워드, 엑셀 등의 컨텐츠 응용프로그램)을 자유롭게 사고 팔 수 있는 온라인상의 모바일 컨텐츠(소프트웨어) 장터를 의미한다. 주로 스마트폰에 탑재할 수 있는 어플리케이션의 온라인 마켓으로 볼 수 있다. 구글의 안드로이드 앱스토어, 이동 통신 사업자들의 온라인 앱스토어, 주요 통신사들과 제조업체가 모두 참여하고 있는 일종의 앱 도매시장인 수퍼앱스토어(Wholesale App Community, WAC) 등이 이에 속한다.The App Store is a bundle of application stores. It contains mobile applications (such as calendar applications, address books, alarms, calculators, games, videos, Internet access, music playback, navigation, (Mobile phone) market where mobile content (software) can be bought and sold freely. It can be seen as an online market for applications that can be installed on smartphones. These include Google's Android app store, an online app store for mobile operators, and the Wholesale App Community (WAC), a wholesale market for apps that all major carriers and manufacturers are participating in.
스텁 앱이란, 원본 앱으로부터 주요 실행파일을 제거하고, 단순히 앱의 리소스를 설치하는 기능만을 가진 앱을 말한다. 더미 앱(dummy app.)이라고도 한다.A stub app is an app that has the ability to remove key executables from the original app and simply install the app's resources. Also called a dummy app.
본 출원에서 사용하는 용어로서 다른 그룹(other group)이란, 운영 체제 상에서 파일 혹은 디렉토리의 권한(permission) 관리를 할 때, 파일 혹은 디렉토리 소유자가 속한 그룹 외의 그룹을 일컫는 말이다. 유닉스 계열(리눅스 포함)에서의 권한 관리를 예로 들면, "ls ?" 명령어(Solaris, HP-UX 등 유닉스의 종류에 따라 syntax가 다를 수 있음)를 이용하여 현재 경로의 디렉토리와 파일의 상세 내역을 확인할 수 있다. 위 명령어 입력으로 "-rwxr--r-- 1 sarangir sarangir 658 Jun 22 2012 .zshrc"와 같은 결과를 얻었다면, 앞 10자리의 텍스트가 권한과 관련된 내용이다.As used in this application, the term "other group" refers to a group other than the group to which the file or directory owner belongs when managing the permissions of a file or directory on the operating system. For example, in the UNIX family (including Linux), "ls?" You can check the details of directories and files in the current path by using commands (syntax may vary depending on the type of Unix such as Solaris and HP-UX). If you get the results like "-rwxr -r-- 1 sarangir sarangir 658 Jun 22 2012 .zshrc" with the above command, the text of the first 10 digits is related to authority.
즉, 앞 10자리 중 첫째 "-"은 .zshrc가 일반 파일임을, 그 다음 "rwx"은 .zshrc 파일 소유자의 권한이 읽기, 쓰기 및 실행임을, 그 다음 "r--"은 소유자가 속한 그룹의 권한이 읽기임을, 그 다음 "r--"은 소유자가 속한 그룹 외의 그룹의 권한이 읽기임을 의미하는 것이다. "r"은 조회(read), "w"는 쓰기(write), "x"는 실행(execute)을 각각 의미한다. 이는 다시 숫자로 표현이 가능한데 "r"은 4, "w"는 2, "x"는 1로 표현할 수 있다. 따라서 .zshrc 파일의 권한 구성을 숫자로 표현하면 744가 된다.That is, the first "-" in the first 10 digits indicates that .zshrc is a regular file, then "rwx" is the permissions of the owner of the .zshrc file to read, write, and execute, then "r--" Is read, and then "r--" means that the authority of the group other than the group to which the owner belongs is read. "r" means read, "w" means write, and "x" means execute. It can be expressed as a number again, where "r" is 4, "w" is 2, and "x" is 1. Therefore, the permission configuration of the .zshrc file is expressed as a number.
본 발명에서 사용하는 용어로서 이벤트(event)란, 프로그램이 반응하도록 사용자가 생성시키는 동작 또는 일(사건)의 발생을 포함한다. 키보드의 키나 스마트폰의 터치패드를 누르는 것이 대표적이다. 마우스 버튼을 클릭하는 것, 마우스를 이동하는 것 등도 포함한다. 특정한 프로그램이 종료되거나 기능을 수행하는 중에 다른 특정한 프로그램을 호출하는 것, 동일한 프로그램 내에서 특정 프로시저 콜(procedure call)이나 펑션 콜(function call)도 이에 포함될 수 있다.The term " event " as used in the present invention includes an occurrence of an operation or an event that a user generates to cause a program to respond. It is typical to press a key on a keyboard or a touchpad on a smartphone. Clicking a mouse button, moving the mouse, and the like. It is also possible to call another specific program while a specific program is terminated or performing a function, and a specific procedure call or function call may be included in the same program.
즉, 이벤트가 트리거가 된다는 말은 어떠한 동작이나 사건의 발단을 일으키게 하는 것을 의미하는 것이지 특정한 동작이나 사건 자체가 수행되는 것을 의미하지는 않는다. 구체적인 예를 들어보면, 데이터 전송이라는 동작이 있는 경우, 두 노드 간에 식별 정보 및 기타 정보를 교환하도록 하기 위해 인접 노드 간에 데이터 연결 제어 지령 및 반응을 주고받는 것을 의미하는 것이지, 데이터 전송 자체가 이루어진다는 것은 아니다.
In other words, the fact that an event becomes a trigger means to cause the start of an action or an event, not to mean that a specific action or event itself is performed. For example, if there is an operation called data transmission, it means to send and receive data link control commands and responses between adjacent nodes in order to exchange identification information and other information between two nodes. It is not.
안드로이드 어플리케이션 소스코드 부정사용 방지를 위한 메커니즘을 앱 암호화 서버와 사용자 단말 측면에서 전체적으로 나타내면 다음과 같은 순서로 진행될 수 있다.The mechanism for preventing malicious use of the Android application source code can be represented in the following order as a whole in terms of the application encryption server and the user terminal.
1. 사용자 단말에 시스템 권한의 런처 앱이 내장되어 있음.1. System launcher app is built in user terminal.
2. 개발된 앱을 앱 암호화 서버 및 앱스토어에 등록.2. Register the developed app in the app encryption server and app store.
3. 사용자 단말에서 앱 다운로드.3. Download apps from your device.
4. 다운로드된 앱의 첫 실행시 추가 진행사항(원본 실행파일 설치).4. Added progress on first launch of downloaded app (install original executable).
5. 앱의 실행 및 종료.
5. Launch and exit the app.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments according to the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.
도 1은 본 발명의 일 실시예에 따른 앱 업로드 방법과 그 세부 단계를 설명하기 위한 흐름도이고, 도 2는 앱 업로드 방법의 일례를 설명하기 위한 예시도이다.FIG. 1 is a flowchart for explaining an application uploading method and detailed steps according to an embodiment of the present invention. FIG. 2 is an exemplary view for explaining an example of an application uploading method.
도 1 내지 도 2를 참조하면, 앱 업로드 방법은, 앱 부정사용 방지를 위한 앱 업로드 방법에 있어서, 앱을 앱스토어(200)에 등록하는 이벤트가 트리거가 되어(S110), 앱에서 원본 실행파일을 제거하고(S120) 스텁 실행파일을 삽입하여(S150) 스텁 앱을 생성하고, 스텁 앱을 암호화 서버에 저장하는 스텁 앱 저장 단계(S160)와, 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 암호화 앱을 암호화 서버에 저장하는 암호화 앱 저장 단계(S140)와, 스텁 앱을 앱스토어(200)에 업로드하는 단계(S170)를 포함하여 구성될 수 있다.Referring to FIGS. 1 and 2, in an application upload method for preventing an unauthorized use of an application, an event for registering an application in the
스텁 앱 및 암호화 앱은 안드로이드 패키지 파일 형식일 수 있고, 스텁 앱은 원본 실행파일을 제외한 나머지 리소스 파일들이 설치되도록 패키징될 수 있다.Stub apps and crypto apps can be in Android package file format, and stub apps can be packaged so that the rest of the resource files are installed except for the original executable.
또한 앱 업로드 방법은, 암호화 앱 저장 단계(S140) 이전에, 앱에 포함된 매니페스트 파일에 인텐트 필터를 추가하여 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가 단계(S130)를 더 포함할 수 있다.The method of uploading an application may further include an intent filter adding step (S130) of adding an intent filter to the manifest file included in the application before the encrypted application storing step (S140) to give an execution flag to the encrypted app have.
개발자는 개발된 앱을 앱 암호화 서버(100) 내지 앱스토어(200)에 등록할 수 있다(S110). 등록하는 과정은 주로 앱스토어(200)가 제공하는 개발자 인터페이스를 통해 이루어질 수 있겠지만, 이에 한정되는 것은 아니다. 즉 앱을 앱스토어(200)에 등록하는 것은 다양한 이벤트 형태를 가질 수 있다. 또한 개발자 입장에서는 개발된 앱을 먼저 앱 암호화 서버(100)에 등록하고, 암호화 서버로부터 스텁 앱을 되돌려받아 다시 이를 앱스토어(200)에 등록하는 2단계 인터페이스를 사용할 수도 있지만, 앱스토어(200)에 등록하면, 앱스토어(200)와 앱 암호화 서버(100)를 연결하는 인터페이스를 통해 위 2단계의 과정이 한 차례의 인터페이스만으로 이루어질 수도 있다.The developer can register the developed application in the
앱 암호화 서버(100)와 앱스토어(200)는 논리적으로는 구분 가능한 개념이지만, 물리적으로는 하나의 장치에 구현되어 있을 수도 있다. 아래의 설명에서는 안드로이드 운영체제 상의 앱 개발과 관련하여 위 2단계 인터페이스를 사용하는 경우로 예를 들어 설명하고자 한다.Although the
도 2를 참조하여 보면, ① 개발자는 자신이 만든 앱의 APK 파일을 앱 암호화 서버(100)에 전송할 수 있다. ② 앱 암호화 서버(100)는 개발자의 APK 파일을 복사하여 2개의 APK 파일을 소지할 수 있다. ③ 그 중 하나의 APK 파일 내부의 원본 DEX(실행파일) 파일을 제거하고, ④ 앱 암호화 서버(100)에서 준비한 스텁 DEX 파일을 삽입하여 스텁 APK를 만들 수 있다. 원본 DEX 파일이 스텁 DEX로 대체된 스텁 APK 파일은 단순히 앱의 리소스를 설치하는 기능만을 가진 앱을 사용자 단말(300)기에 생성할 수 있다. ⑤ 앱 암호화 서버(100)에서 만들어진 스텁 APK 파일을 개발자에게 돌려줄 수 있다.Referring to FIG. 2, (1) the developer can transmit the APK file of the app created by the developer to the
ⓐ ②에서 복사한 다른 APK 파일 내부의 매니패스트 파일을 수정한다. 이 때 매니패스트 파일의 수정은 단순히 런처 앱과의 통신을 위한 인텐트 필터를 추가하는 작업이다. ⓑ ④를 통해 원본 DEX 파일을 제외한 나머지 리소스를 설치할 수 있는 스텁 APK가 만들어졌으므로, ⓐ의 작업을 끝낸 APK 파일 내부의 리소스를 제거할 수 있다. ⓒ ⓑ를 통해 만들어진 APK 파일을 암호화할 수 있다. 암호화 종류에는 제약이 없으나 암호화 별로 키 관리 기능을 추가하기 위해 상기의 메커니즘을 수정 가능하다.Ⓐ Modify the manifest file in the other APK file copied in ②. At this time, modification of manifest file is simply adding intent filter for communication with launcher app. Ⓑ Since the stub APK that can install the remaining resources except the original DEX file is created through ④, the resources inside the APK file that finished the operation of ⓐ can be removed. You can encrypt the APK file created through ⓒ. There is no restriction on the type of encryption, but the above mechanism can be modified to add a key management function for each encryption.
암호화 종류에는 크게 비밀키(Private Key) 방식과 공개키(Public Key) 방식이 있다. 비밀키(Private Key) 암호화 기법은 동일한 키로 암호화와 복호화를 수행하는 방법으로 보안 유지와 키 관리에 어려움이 있으나 알고리즘이 간단해 암호화 속도가 빠르고 용량이 작아 경제적이다.The encryption types include a private key method and a public key method. Private Key Encryption is a method of encrypting and decrypting with the same key. It is difficult to maintain security and key management, but it is simple because of its algorithm, its encryption speed is fast, its capacity is small, and it is economical.
즉, 하나의 비밀키로 암호화 및 복호화를 해야 하므로 비밀 통신을 하는 당사자들만이 키를 안전하게 공유해야 한다. 그래서 이 방법을 비밀키 암호 시스템(Secret Key Cryptosystem)이라고도 한다. 대표적인 알고리즘으로 DES(Data Encryption Standard)와, DES의 단점을 일부 보완한 Triple DES와 AES(Advanced Encryption Standard) 등이 있다.That is, since the secret key must be encrypted and decrypted with one secret key, only the parties having secret communication must securely share the key. This method is also called a secret key cryptosystem. DES (Data Encryption Standard), Triple DES and Advanced Encryption Standard (AES), which partially complement the disadvantages of DES, are examples of typical algorithms.
공개키(Public Key) 암호화 기법은 공개되는 공개키와 본인만 사용하는 비밀키(Private Key)로 구성되는 것으로 공개키와 비밀키를 별도로 관리하기 때문에 키 관리가 용이하며 암호화와 사용자 인증이 동시에 이뤄진다는 특징이 있다. 이는 전자 문서의 디지털서명, 부인봉쇄에 사용된다. 그러나 알고리즘이 복잡해 속도가 느리다는 단점을 가지고 있다.Public Key Encryption consists of a public key and a private key that is used only by the user. Since the public key and secret key are separately managed, key management is easy and both encryption and user authentication are performed at the same time . It is used for digital signature and non-repudiation of electronic documents. However, it has a disadvantage that the algorithm is complicated and slow.
즉, 각 사용자 주체마다 두 개의 키가 존재하여, 각 사용자마다 키쌍(Key Pair)인 공개키(Public Key)와 개인키(Private Key)를 유지해야 한다. 대표적인 알고리즘으로는 RSA(Rivest Shamir Adleman), ECC(Elliptic Curve Cryptosystem) 등이 있다.That is, there are two keys for each user, and each user must maintain a public key (a public key) and a private key (a key pair). Representative algorithms include Rivest Shamir Adleman (RSA), and Elliptic Curve Cryptosystem (ECC).
스텁 APK를 생성하는 과정을 더욱 상세히 설명하면 다음과 같다.The process of generating the stub APK will be described in more detail as follows.
사용자 단말(300)에 우선적으로 설치될 스텁 APK 파일은 내부에 실제 소스코드인 DEX 파일 대신, 더미(dummy) DEX 파일이 대체되어 존재하고 있으며, 리소스 파일 또한 보유하고 있다. 따라서 스텁 APK 파일의 역할은 실제 암호화되어 차후 다운로드될 암호화 APK 파일 대신 사용자 단말(300)에 리소스를 설치하는 것이다.The stub APK file to be preferentially installed in the
이러한 스텁 APK 파일을 생성할 때, 다음과 같은 과정을 거칠 수 있다. 원본 APK 파일의 압축 해제, 원본 소스코드가 담긴 DEX 파일의 제거, 아무런 역할도 하지 않는 더미 DEX 파일 생성(dx 툴을 사용할 수 있다), 더미 DEX 파일을 포함하여 APK 재패키징(aapt 툴을 사용할 수 있다), 스텁 APK 파일 signing이다.When you generate these stub APK files, you can go through the following steps. Unpack the original APK file, remove the DEX file containing the original source code, create a dummy DEX file that does nothing (use the dx tool), APK repackage (including the dummy DEX file) ), Stub APK file signing.
위와 같이 더미 DEX 파일을 이용하여 스텁 APK 파일을 생성한 뒤 사용자 단말(300)에 설치 가능한 이유는 달빅(Dalvik) 검증기가 어플리케이션을 설치할 때 단순히 DEX 파일의 구조적 문제점의 유무와 그 내부의 시그니처(signature) 및 Alder32 첵섬(checksum) 값만을 확인하기 때문이다.The reason why the stub APK file can be created using the dummy DEX file and installed in the
추가로, 본 발명을 위한 스텁 APK 및 암호화 APK를 생성하는 과정에서 개발자의 소스코드(DEX 파일)를 디컴파일(decompile)하거나 수정하지 않으므로, 위의 과정으로 인한 앱 동작시 에러가 발생할 확률은 없다.
Further, since the source code (DEX file) of the developer is not decompiled or modified in the process of generating the stub APK and the encryption APK for the present invention, there is no probability that an error occurs during the operation of the app due to the above process .
도 3은 본 발명의 일 실시예에 따른 앱 실행 방법과 그 세부 단계를 설명하기 위한 흐름도이다. 도 4는 앱스토어(200)로부터 사용자 단말(300)로 앱을 다운로드 및 설치하는 과정을, 도 5는 앱 암호화 서버(100)로부터 사용자 단말(300)로 암호화 앱을 다운로드하는 과정을, 도 6은 스텁 앱, 암호화 앱 및 Optimized DEX 파일이 저장된 디렉토리의 구조를, 도 7은 암호화 앱을 복호화하여 복호화 앱을 생성하는 과정을, 도 8은 복호화 앱을 스텁 앱에 대체하는 과정을, 도 9는 복호화 앱과 ODEX 파일의 접근권한을 변경하고 앱 실행 인텐트를 전송하는 과정을 각각 설명하기 위한 예시도이다. 도 10은 앱 실행 종료를 감지하여 백업된 스텁 앱을 복호화 앱에 대체하는 과정의 일례를 설명하기 위한 예시도이다.3 is a flowchart illustrating an application execution method and its detailed steps according to an embodiment of the present invention. FIG. 4 shows a process of downloading and installing an application from the
도 3 내지 도 10를 참조하면, 앱 실행 방법은, 앱 부정사용 방지를 위한 앱 실행 방법에 있어서, 앱을 앱스토어(200)로부터 내려받는 이벤트가 트리거가 되어(S310), 앱스토어(200)에 저장된 스텁 앱을 사용자 단말(300)에 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 단계(S315)와, 스텁 앱을 실행하는 이벤트가 트리거가 되어(S320), 사용자 단말(300)에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하는 단계(S335)와, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 단계(S345)를 포함하여 구성될 수 있다.Referring to FIGS. 3 to 10, in the method of executing an application for preventing illegal use of an application, an event for downloading an application from the
복호화 앱을 생성하는 단계(S335)는, 사용자 단말(300)에 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱이 암호화 서버로부터 암호화 앱을 다운로드하여 사용자 단말(300)에 저장하는 단계(S330)를 선(先) 수행할 수 있다. 여기서 스텁 앱 및 암호화 앱은 APK 파일 형식일 수 있다.If the encrypted application stored in the
앱 실행 방법은, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 단계(S345) 이전에, 스텁 앱을 백업하는 단계(S340)를 더 포함하여 구성될 수 있고, 앱의 실행이 종료되는 이벤트가 트리거가 되어(S360), 백업한 스텁 앱에 포함된 스텁 실행파일을 원본 실행파일에 덮어쓰기 하는 단계(S365)를 더 포함하여 구성될 수 있다.The method of executing an application may further include a step (S340) of backing up a stub application (S340) before a step (S345) of overwriting a source executable file included in a decryption application with a stub executable file. (S365) overwriting the stub executable file included in the backed-up stub application with the original executable file by triggering the termination event (S360).
또한 앱 실행 방법은, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 단계(S345) 이후에, 런처 앱이 사용자 단말(300)로 앱 실행 인텐트를 전송하고, 사용자 단말(300)은 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 단계(S350)를 더 포함할 수 있고, 덮어쓰기 하는 단계(S345) 이후에, 복호화 앱에 대한 다른 그룹의 권한을 축소 변경하는 단계(S355)를 더 포함하여 구성될 수 있다.In addition, after the step S345 of overwriting the original executable file included in the decryption application with the stub executable file, the launcher application transmits an app execution intent to the
사용자 단말(300)에는 시스템 권한의 런처 앱이 미리 내장되어 있을 수 있다. 암호화 앱 관리 및 앱 암호화 서버(100)와의 통신을 위한 시스템 권한의 런처 앱이 사용자 단말(300)에 내장되어 있을 수 있다. 런처 앱은 암호화 앱을 복호화하는 기능 및 앱 암호화 서버(100)와 통신 등을 수행할 수 있다.The launcher application of the system privilege may be built in the
앞서 참조한 도 1 내지 도 2의 상술한 설명과 도 3 내지 도 4를 참조하여 보면, 개발자는 앱 암호화 서버(100)에서 돌려받은 스텁 APK 파일을 원하는 마켓(구글 플레이스토어, SKT 티스토어 등)에 판매를 위해 등록할 수 있다. 따라서 이 경우 사용자가 마켓에서 해당 앱을 구매하면 사실상 어플리케이션의 리소스를 설치하고 아무런 동작도 하지 않는 스텁 앱을 구매하는 것이다.Referring to FIGS. 1 and 2, and referring to FIGS. 3 and 4, the developer can download the stub APK file returned from the
다운로드된 앱의 첫 실행시에는 추가로 진행할 단계가 있다. 다운로드된 앱(스텁 앱)이 설치된 후 사용자가 앱을 실행시키면 스텁 DEX가 삽입된 스텁 앱이 아닌 원본 DEX가 삽입되어 있는 원본 APK 파일이 필요하다. 다운로드된 스텁 앱을 처음 실행하는 때에 원본 APK 파일은 리소스가 제거되어 재패키징된 암호화 APK 파일로 앱 암호화 서버(100)에 존재하고 있는 상태이다. 따라서 사용자가 앱을 처음 실행시킬 때, 단말기에 내장되어 있는 런처 앱이 앱 암호화 서버(100)에서 암호화 APK 파일을 다운로드하여 "/data/data/런처" 디렉토리에 저장할 수 있다. 해당 디렉토리는 런처 앱의 개인공간이므로 시스템 권한의 디렉토리다.There are additional steps to be performed when the downloaded app is first run. After the downloaded app (stub app) is installed, if you run the app, you need the original APK file with the original DEX inserted, not the stub app with stub DEX inserted. When the downloaded stub application is executed for the first time, the original APK file exists in the
암호화 APK 파일은 단 한번만 다운로드하면 되므로, 이후의 앱을 매번 실행시킬 때는 위의 과정이 불필요하다. 또한 암호화 APK 파일은 리소스가 제거된 APK 파일이므로 앱을 처음 실행시킬 때 다운로드할 암호화 APK의 크기는 원본 APK 파일에 비해 비약적으로 작아 충분히 수용할 수 있는 오버헤드가 발생한다(임의의 게임 앱의 경우 원본 앱의 APK 파일 크기는 54MB이며, 이 앱의 암호화 APK 파일의 크기는 리소스를 제거하여 4MB에 불과했다).You need to download the encrypted APK file only once, so you do not have to do the above steps to run the next app each time. In addition, since the encrypted APK file is an APK file whose resources are removed, the size of the encrypted APK to download when launching the app for the first time is considerably smaller than that of the original APK file, which causes enough overhead to be accommodated The original app's APK file size is 54MB, and the size of the encrypted APK file for this app was only 4MB, removing the resources.)
다만, 다운로드된 앱의 첫 실행시가 아닌 경우에도 위의 과정을 수행해야 할 필요가 있을 수 있다. 여러 가지 이유로 한번 다운로드되었던 암호화 APK 파일이 손상되었거나 존재하지 않는 경우가 발생한다면, 다운로드된 앱의 첫 실행시 위의 과정을 수행한 것처럼 같은 과정을 수행할 수 있다. 따라서 다운로드된 스텁 앱을 실행시키는 이벤트가 발생했다면, 암호화 APK 파일이 사용자 단말(300)에 저장되어 있는지, 손상되지 않은 유효한 상태로 존재하는지 등을 확인하는 과정이 필요하다.However, it may be necessary to perform the above process even if it is not the first time the downloaded app is run. If the encrypted APK file that was once downloaded for various reasons is corrupted or does not exist, you can perform the same process as if you performed the above process during the first execution of the downloaded app. Accordingly, if an event for executing the downloaded stub application occurs, it is necessary to check whether the encrypted APK file is stored in the
도 6을 참조하여 보면, 앱 실행을 요청한 시점에 복호화 과정을 위한 디렉토리별 파일의 상황을 알 수 있다. 현재 사용자 단말(300)에는 스텁 앱이 설치되어 있는 상태이기 때문에, 현재 설치된 앱들의 APK를 보관하는 "/data/app" 디렉토리에는 스텁 APK가 존재할 수 있다. 그리고 현재 설치된 앱들의 DEX 파일을 최적화하여 보관하는 "/data/dalvik-cache"에는 스텁 DEX를 최적화한 ODEX 파일이 존재할 수 있다. 마지막으로 "/data/data/런처"에는 도 5에서 보는 것처럼 다운로드 받아 저장한 암호화 APK가 있을 수 있다.Referring to FIG. 6, the status of a file for each directory for a decryption process can be known at the time of requesting execution of an app. Since the stub app is currently installed in the
도 7을 참조하여 스텁 APK 파일 백업 및 암호화 APK 파일의 복호화를 설명하면 다음과 같다. ① "/data/app" 디렉토리에 있는 스텁 APK 파일을 복호화된 APK 파일로 교체해야 앱이 실행될 것이므로 "/data/data/런처" 디렉토리에 스텁 APK 파일을 백업할 수 있다. ② 그 후 "/data/data/런처" 디렉토리에 다운받았던 암호화 APK 파일을 런처 앱이 복호화 하여 "복호화 APK"로 저장한다.Referring to FIG. 7, the stub APK file backup and the decryption of the encrypted APK file will be described as follows. ① You need to replace the stub APK file in the "/ data / app" directory with the decrypted APK file so that the app will run. You can back up the stub APK file in the "/ data / data / launcher" directory. ② Then the launcher app decrypts the downloaded encrypted APK file in the "/ data / data / launcher" directory and stores it as "decryption APK".
도 8을 참조하여 "/data/app"의 스텁 APK를 복호화 APK로 교체하는 과정을 설명하면 다음과 같다. ③ "/data/data/런처"의 복호화 APK 파일로 "/data/app"에 스텁 APK 파일을 대체한다. 이 모든 진행사항은 런처 앱이 시스템 소유의 앱이기 때문에 가능하며, ③의 과정 직후 "/data/data/런처"의 복호화 APK를 삭제한다.Referring to FIG. 8, a process of replacing the stub APK of "/ data / app " with the decryption APK will be described. ③ Replace stub APK file in "/ data / app" with decrypted APK file of "/ data / data / launcher". All of this can be done because the launcher app is an app owned by the system, and the decryption APK of "/ data / data / launcher" is deleted immediately after step ③.
도 9를 참조하여 복호화 APK 파일과 ODEX 파일의 권한 변경 및 앱 실행 인텐트를 전송하는 과정을 설명하면 다음과 같다. ④ 새로 덮어씌운 "/data/app" 디렉토리의 복호화 APK 파일을 통해 새로운 ODEX(Optimized DEX)를 기술해야 하므로 "/data/dalvik-cache" 의 ODEX 파일의 권한을 666으로 수정한다. ⑤ 앱 실행을 위한 모든 준비가 완료되었으므로 런처 앱은 복호화 앱에게 앱 실행 인텐트를 날린다. ⑥ 마지막으로, 앱이 실행되는 동안에 복호화되어 "/data/app"에 존재하는 복호화 APK를 파일 관리자 앱을 통해 추출하는 것을 방지하기 위해 "/data/app" 디렉토리의 복호화 APK 파일의 권한에서 다른 그룹(others group)의 권한을 없앤다. 예를 들어, 644에서 640으로 변경할 수 있다.Referring to FIG. 9, a description will be made of a process of transmitting a decryption APK file and an ODEX file with permission change and app execution intent. ④ Modify the ODEX file permissions of "/ data / dalvik-cache" to 666 because you need to write new ODEX (Optimized DEX) through the decrypted APK file of the newly overwritten "/ data / app" directory. ⑤ Since all preparations for the execution of the app are completed, the launcher app sends the app execution tent to the decryption app. ⑥ Finally, to prevent the decryption APK, which is decrypted while the app is running, from being extracted from the "/ data / app" through the file manager app, the decryption APK file in the "/ data / (others group). For example, you can change from 644 to 640.
도 10을 참조하여 앱의 종료 과정을 설명하면 다음과 같다. ① 액티비티 스택 모니터링 기법을 통하여 런처 앱의 권한(시스템 권한)으로 현재 실행중인 앱을 실시간으로 확인한다. 이 기법을 통하여 대상 앱이 종료하는 때를 알 수 있다. ② 앱이 종료됨을 감지하면 도 7에서 "/data/data/런처"에 백업해 두었던 스텁 APK 파일로 "/data/app" 디렉토리의 복호화 APK를 대체할 수 있다. ③ 도 9에서 변경했던 권한을 640에서 644로 다시 복구시킬 수 있다.The process of terminating the app will now be described with reference to FIG. (1) Through the activity stack monitoring technique, the currently running app is checked in real time by the privilege of the launcher app (system privilege). Through this technique, you can know when the target app is terminated. (2) If it detects that the app is terminated, it can replace the decryption APK in the "/ data / app" directory with the stub APK file that was backed up in "/ data / data / launcher" ③ The authority changed in Fig. 9 can be restored from 640 to 644 again.
시스템 권한의 런처 앱을 사용하여 안드로이드 운영체제 상에서 앱 설치 및 실행의 특징을 더욱 상세히 설명하면 다음과 같다.Here are some of the features of installing and running apps on the Android operating system using the system privileged launcher app.
앱이 실행될 때, 운영 체제의 시스템 권한이나 최고관리자(administrator or root) 권한으로 실행되지 않고 단순히 응용프로그램(application) 권한으로 실행되면, 안드로이드 운영체제의 보안정책 중 하나인 샌드박스(sandbox)는 모든 프로그램을 격리하여 임의의 한 프로그램이 다른 프로그램의 영역을 접근할 수 없도록 보호한다. 따라서 위와 같은 안드로이드 보안정책에 차단되어 다른 프로세스를 제어하거나 모니터링할 수 없다.When the app is launched, it will not run with the operating system's system privilege or administrator or root privileges, but simply run as application, and sandbox, one of Android OS's security policies, To protect one program from accessing another program area. Therefore, you can not control or monitor other processes by blocking the above Android security policy.
하지만 본 발명은 안드로이드 운영체제의 보안정책에 의하여 암호화 앱이 다운로드 및 설치, 실행이 차단되는 것을 회피할 수 있다. 즉, 스텁 앱의 실행으로 암호화 앱이 다운로드, 설치, 실행될 수 있도록 런처 앱을 활용하는 방법을 제안하는 것이다. 시스템 권한의 런처 앱을 통해 비로소 보호 대상 프로그램을 모니터링 하거나 암·복호화할 수 있다.However, according to the security policy of the Android operating system, the present invention can prevent the encrypted application from being downloaded, installed and executed. In other words, it suggests a way to utilize the launcher app so that the crypto app can be downloaded, installed and run by running the stub app. System-authorized launcher apps allow you to monitor, lock, and decrypt protected programs.
사용자 단말(300)에 내장된 런처 앱을 활용함으로써 얻어지는 장점으로 다음과 같은 것들이 있다. 런처 앱을 사용하지 않고 위와 같이 스텁 앱의 실행으로 암호화 앱이 다운로드, 설치, 실행될 수 있도록 하려면, 안드로이드 플랫폼, 즉 OS커널을 수정하지 않으면 안된다. 즉, 런처 앱을 사용하는 것은 OS 커널을 수정하지 않는 방법이다.Advantages obtained by utilizing the launcher app built in the
이는 곧 모든 안드로이드 플랫폼 버전에 관계없이 기술이 적용 가능하다는 장점을 의미할 수 있다. 또한 단말기 제조사에 본 기술을 적용할 경우 플랫폼을 수정하여 재빌드할 필요가 없고 단지 런처 앱만을 탑재하여 단말기를 출시하면 되기 때문에 호환성 또한 우수할 수 있다.
This means that the technology can be applied regardless of the version of the Android platform. In addition, if this technology is applied to the terminal manufacturer, it is not necessary to modify the platform and rebuild the terminal.
도 11은 본 발명의 일 실시예에 따른 앱 암호화 서버(100)와 그 구성요소를 설명하기 위한 블록도이고, 도 12은 원본 실행파일의 일례인 DEX 파일의 구조를 설명하기 위한 예시도이다.FIG. 11 is a block diagram for explaining an
도 11 내지 도 12를 참조하면, 앱 암호화 서버(100)는, 앱 부정사용 방지를 위한 안드로이드 앱 암호화 서버(100)에 있어서, 앱을 앱스토어(200)에 등록하는 이벤트가 트리거가 되어, 앱에서 원본 실행파일을 제거하고 스텁 실행파일을 삽입하여 스텁 앱을 생성하고, 스텁 앱을 저장하는 스텁 앱 저장부(110)와, 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 암호화 앱을 저장하는 암호화 앱 저장부(120)와, 스텁 앱을 앱스토어(200)에 업로드하는 앱 업로드부(130)를 포함하여 구성될 수 있다.11 to 12, in the Android
스텁 앱 및 암호화 앱은 APK 파일 형식일 수 있고, 스텁 앱은 원본 실행파일을 제외한 나머지 리소스 파일들이 설치되도록 패키징될 수 있다. 또한 앱 암호화 서버(100)는, 앱에 포함된 매니페스트 파일에 인텐트 필터를 추가하여 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가부(140)를 더 포함하여 구성될 수 있다.Stub apps and crypto apps can be in APK file format, and stub apps can be packaged so that the rest of the resource files are installed except for the original executable. The
앱 암호화 서버(100)와 그 구성요소인 스텁 앱 저장부(110), 암호화 앱 저장부(120), 앱 업로드부(130), 인텐트 필터 추가부(140)는 이와 대응되는 앱 업로드 방법에 관한 방법 청구항의 설명에서 이미 설명한 바 있으므로, 중복하여 설명하지는 않는다.The
다만, 앱 암호화 서버(100)와 그 구성요소들은 논리적으로 구분 가능한 요소일 뿐, 물리적인 위치가 서로 다름을 의미하지는 않는다. 즉, 예를 들면, 스텁 앱 저장부(110)와 암호화 앱 저장부(120)는 실제로는 같은 물리적 위치에 있을 수 있으며, 앱 암호화 서버(100)와 앱스토어(200)도 같은 서버 내에 구성될 수 있다. 또한 앱 업로드부(130)나 인텐트 필터 추가부(140)가 앱스토어(200)에 위치하는 구성도 가능할 수 있다.However, the
도 12를 참조하여 안드로이드 운영 체제에서의 DEX 파일의 구조와 부분 암호화에 대한 또 다른 실시예를 설명하면 다음과 같다. 본 발명에서는 앱 암호화 서버(100)에서 개발자가 등록한 앱에 암호화 기술을 적용할 때, 오버헤드를 낮추기 위해 DEX 파일을 파싱(parsing)하여 DEX 파일 내부의 중요 메소드들이 담긴 data 섹션만을 암호화할 수 있다. DEX 파일은 도 12와 같은 구조로 되어 있으며, 소스코드는 data 섹션에 포함될 수 있다.
Another embodiment of the structure and partial encryption of the DEX file in the Android operating system will be described with reference to FIG. In the present invention, when the encryption technology is applied to the application registered by the developer in the
도 13은 본 발명의 일 실시예에 따른 사용자 단말(300)과 그 구성요소를 설명하기 위한 블록도이다.13 is a block diagram illustrating a
도 13을 참조하면, 사용자 단말(300)은, 앱 부정사용을 방지하는 사용자 단말(300)에 있어서, 앱을 앱스토어(200)로부터 내려받는 이벤트가 트리거가 되어, 앱스토어(200)에 저장된 스텁 앱을 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 스텁 앱 다운로드부(310)와, 앱을 암호화한 암호화 앱을 저장하는 암호화 앱 다운로드부(320)와, 스텁 앱을 실행하는 이벤트가 트리거가 되어, 암호화 앱 다운로드부(320)에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하고, 복호화 앱에 포함된 원본 실행파일을 스텁 실행파일에 덮어쓰기 하는 복호화 앱 저장부(330)를 포함하여 구성될 수 있다.13, in the
암호화 앱 다운로드부(320)는, 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱이 앱 암호화 서버(100)로부터 암호화 앱을 다운로드하여 저장할 수 있다.When the stored encrypted application does not exist, the encryption
스텁 앱 및 암호화 앱은 APK 파일 형식일 수 있고, 사용자 단말(300)은, 스텁 앱 다운로드부(310)에 저장된 스텁 앱을 백업하는 스텁 앱 백업부(360)를 더 포함하여 구성될 수 있다. 나아가, 스텁 앱 다운로드부(310)는, 앱의 실행이 종료되는 이벤트가 트리거가 되어, 백업한 스텁 앱에 포함된 스텁 실행파일을 상기 원본 실행파일에 덮어쓰기 할 수 있다.The stub application and the encryption application may be in the APK file format. The
사용자 단말(300)은, 런처 앱이 전송한 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 앱 실행 결정부(340)를 더 포함하여 구성될 수 있고, 복호화 앱에 대한 다른 그룹(other group)의 권한을 축소 변경하는 앱 권한 관리부(350)를 더 포함하여 구성될 수 있다.The
사용자 단말(300)과 그 구성요소인 스텁 앱 다운로드부(310), 암호화 앱 다운로드부(320), 복호화 앱 저장부(330), 앱 실행 결정부(340), 앱 권한 관리부(350), 스텁 앱 백업부(360)는 이와 대응되는 앱 실행 방법에 관한 방법 청구항의 설명에서 이미 설명한 바 있으므로, 중복하여 설명하지는 않는다.The
다만, 사용자 단말(300)과 그 구성요소들은 논리적으로 구분 가능한 요소일 뿐, 물리적인 위치가 서로 다름을 의미하지는 않는다. 즉, 예를 들면, 사용자 단말(300)의 각 구성요소들은 실제로는 서로 같은 물리적 위치에 있는 구성도 가능할 수 있다.
However, the
비록 몇몇의 측면들은 장치의 관점에서 설명되었지만, 이러한 측면들은 상응하는 방법의 설명을 나타내는 것이 명확하며, 여기서 방법의 단계는 장치에 대응한다. 특정 구현 요구들에 따르면, 발명의 실시예들은 하드웨어 또는 소프트웨어에서 구현될 수 있다. 본 발명의 실시예들은 프로그램 코드, 방법들 중 하나의 수행을 위해 동작하는 프로그램 코드를 가지는 컴퓨터 프로그램 제품으로서 수행될 수 있다.Although some aspects have been described in terms of apparatus, it is clear that these aspects represent a description of the corresponding method, wherein the steps of the method correspond to the apparatus. According to certain implementation requirements, embodiments of the invention may be implemented in hardware or software. Embodiments of the present invention may be implemented as program code, a computer program product having program code that is operative for performing one of the methods.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The foregoing description is merely illustrative of the technical idea of the present invention, and various changes and modifications may be made by those skilled in the art without departing from the essential characteristics of the present invention. Therefore, the embodiments disclosed in the present invention are intended to illustrate rather than limit the scope of the present invention, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be construed according to the following claims, and all technical ideas within the scope of equivalents should be construed as falling within the scope of the present invention.
100: 앱 암호화 서버 110: 스텁 앱 저장부
120: 암호화 앱 저장부 130: 앱 업로드부
140: 인텐트 필터 추가부 200: 앱스토어
300: 사용자 단말 310: 스텁 앱 다운로드부
320: 암호화 앱 다운로드부 330: 복호화 앱 저장부
340: 앱 실행 결정부 350: 앱 권한 관리부
360: 스텁 앱 백업부100: App-encryption server 110: stub application storage unit
120: Encrypted App Storing Unit 130: App Upload Unit
140: Intent filter adding unit 200: App store
300: user terminal 310: stub application downloading unit
320: Encrypted application download unit 330: Decrypted application storage unit
340: App execution decision unit 350: App authority management unit
360: stub app backup unit
Claims (22)
상기 앱을 앱스토어(app. store)에 등록하는 이벤트가 트리거(trigger)가 되어, 상기 앱에서 원본 실행파일을 제거하고 스텁(stub) 실행파일을 삽입하여 스텁 앱(stub app.)을 생성하고, 상기 스텁 앱을 앱 암호화 서버에 저장하는 스텁 앱 저장 단계;
상기 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 상기 암호화 앱을 상기 앱 암호화 서버에 저장하는 암호화 앱 저장 단계; 및
상기 스텁 앱을 상기 앱스토어에 업로드하는 단계를 포함하는 앱 업로드 방법.App (app.) In an application upload method for preventing illegal use,
An event registering the app in an app store is triggered and the app removes the original executable file and inserts a stub executable file to create a stub app. A stub application storing step of storing the stub application in an application encryption server;
Encrypting the original executable file to generate an encrypted application, and storing the encrypted application in the application encryption server; And
And uploading the stub app to the app store.
상기 스텁 앱 및 상기 암호화 앱은 안드로이드 패키지(APK, Android PacKage) 파일 형식인 것을 특징으로 하는 앱 업로드 방법.The method according to claim 1,
Wherein the stub application and the encryption application are an Android package (APK) file format.
상기 스텁 앱은
상기 원본 실행파일을 제외한 나머지 리소스(resource) 파일들이 설치되도록 패키징되는 것을 특징으로 하는 앱 업로드 방법.The method according to claim 1,
The stub app
And the other resource files except for the original executable file are installed.
상기 암호화 앱 저장 단계 이전에,
상기 앱에 포함된 매니페스트(manifest) 파일에 인텐트 필터(intent filter)를 추가하여 상기 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가 단계를 더 포함하는 것을 특징으로 하는 앱 업로드 방법.The method according to claim 1,
Before the encrypted application storage step,
Further comprising an intent filter adding step of adding an intent filter to a manifest file included in the app to give an execution flag to the encrypted app.
상기 앱을 앱스토어로부터 내려받는 이벤트가 트리거가 되어, 상기 앱스토어에 저장된 스텁 앱을 사용자 단말에 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 단계;
상기 스텁 앱을 실행하는 이벤트가 트리거가 되어, 상기 사용자 단말에 저장된 암호화 앱을 복호화하여 복호화 앱을 생성하는 단계; 및
상기 복호화 앱에 포함된 원본 실행파일을 상기 스텁 실행파일에 덮어쓰기(overwrite) 하는 단계를 포함하는 앱 실행 방법.In an application execution method for preventing illegal use of an application,
Installing a stub executable file and resource files by downloading a stub application stored in the app store to an user terminal as an event for downloading the application from an app store as a trigger;
Generating a decryption application by decrypting the encrypted application stored in the user terminal as an event triggering the stub application; And
And overwriting the original executable file included in the decryption application with the stub executable file.
상기 복호화 앱을 생성하는 단계는,
상기 사용자 단말에 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱(launcher app.)이 앱 암호화 서버로부터 상기 암호화 앱을 다운로드하여 상기 사용자 단말에 저장하는 단계를 선(先) 수행하는 것을 특징으로 하는 앱 실행 방법.The method of claim 5,
Wherein the step of generating the decryption application comprises:
And a step of downloading the encrypted application from the application encryption server and storing the encrypted application in the user terminal when the encrypted application stored in the user terminal does not exist How to do it.
상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식인 것을 특징으로 하는 앱 실행 방법.The method of claim 5,
Wherein the stub application and the encryption application are APK file format.
상기 덮어쓰기 하는 단계 이전에,
상기 스텁 앱을 백업하는 단계를 더 포함하는 것을 특징으로 하는 앱 실행 방법.The method of claim 5,
Before the overwriting step,
Further comprising the step of backing up the stub application.
상기 앱의 실행이 종료되는 이벤트가 트리거가 되어, 상기 스텁 앱에 포함된 스텁 실행파일을 상기 원본 실행파일에 덮어쓰기 하는 단계를 더 포함하는 것을 특징으로 하는 앱 실행 방법.The method of claim 8,
Further comprising overwriting the stub executable file included in the stub app to the original executable file when an event that execution of the app is terminated becomes a trigger.
상기 덮어쓰기 하는 단계 이후에,
런처 앱이 상기 사용자 단말로 앱 실행 인텐트를 전송하고, 상기 사용자 단말은 상기 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 단계를 더 포함하는 것을 특징으로 하는 앱 실행 방법.The method of claim 5,
After the overwriting step,
The launcher application transmits an app execution intent to the user terminal, and the user terminal determines an app to be executed based on the app execution intent.
상기 덮어쓰기 하는 단계 이후에,
상기 복호화 앱에 대한 다른 그룹(other group)의 권한을 축소 변경하는 단계를 더 포함하는 것을 특징으로 하는 앱 실행 방법.The method of claim 5,
After the overwriting step,
And reducing the rights of another group of the decryption application to the decryption application.
상기 앱을 앱스토어에 등록하는 이벤트가 트리거가 되어, 상기 앱에서 원본 실행파일을 제거하고 스텁 실행파일을 삽입하여 스텁 앱을 생성하고, 상기 스텁 앱을 저장하는 스텁 앱 저장부;
상기 원본 실행파일을 암호화하여 암호화 앱을 생성하고, 상기 암호화 앱을 저장하는 암호화 앱 저장부; 및
상기 스텁 앱을 상기 앱스토어에 업로드하는 앱 업로드부를 포함하는 앱 암호화 서버.An Android app encryption server for preventing the illegal use of an app,
A stub application storage unit for storing the stub application by removing a source executable file from an event of registering the application in the application store as a trigger, inserting a stub executable file to generate a stub application, and storing the stub application;
An encrypted application storage unit for encrypting the original executable file to generate an encrypted application and storing the encrypted application; And
And an app upload unit for uploading the stub app to the app store.
상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식인 것을 특징으로 하는 앱 암호화 서버.The method of claim 12,
Wherein the stub application and the encryption application are APK file format.
상기 스텁 앱은
상기 원본 실행파일을 제외한 나머지 리소스 파일들이 설치되도록 패키징되는 것을 특징으로 하는 앱 암호화 서버.The method of claim 12,
The stub app
And the resource files except for the source executable file are packaged to be installed.
상기 앱에 포함된 매니페스트 파일에 인텐트 필터를 추가하여 상기 암호화 앱에 실행 플래그를 부여하는 인텐트 필터 추가부를 더 포함하는 것을 특징으로 하는 앱 암호화 서버.The method of claim 12,
Further comprising an intent filter adding unit for adding an intent filter to the manifest file included in the app to give an execution flag to the encrypted app.
상기 앱을 앱스토어로부터 내려받는 이벤트가 트리거가 되어, 상기 앱스토어에 저장된 스텁 앱을 다운로드하여 스텁 실행파일 및 리소스 파일들을 설치하는 스텁 앱 다운로드부; 및
상기 앱을 암호화한 암호화 앱을 저장하는 암호화 앱 다운로드부; 및
상기 스텁 앱을 실행하는 이벤트가 트리거가 되어, 상기 암호화 앱 다운로드부에 저장된 상기 암호화 앱을 복호화하여 복호화 앱을 생성하고, 상기 복호화 앱에 포함된 원본 실행파일을 상기 스텁 실행파일에 덮어쓰기 하는 복호화 앱 저장부를 포함하는 사용자 단말.A user terminal for preventing illegal use of an application,
A stub application downloading unit for downloading the stub application stored in the app store and installing the stub execution file and the resource files in response to an event that receives the application downloaded from the app store as a trigger; And
An encrypted application download unit for storing an encrypted application encrypted with the application; And
An event for executing the stub application is triggered to generate a decryption application by decrypting the encrypted application stored in the encrypted application downloading unit and to overwrite the original execution file included in the decrypted application with the stub execution file A user terminal comprising an app store.
상기 암호화 앱 다운로드부는,
상기 저장된 암호화 앱이 존재하지 않을 경우, 런처 앱(launcher app.)이 앱 암호화 서버로부터 상기 암호화 앱을 다운로드하여 저장하는 것을 특징으로 하는 사용자 단말.18. The method of claim 16,
The encrypted-
And when the stored encrypted application does not exist, a launcher app downloads and stores the encrypted application from the application encryption server.
상기 스텁 앱 및 상기 암호화 앱은 APK 파일 형식인 것을 특징으로 하는 사용자 단말.18. The method of claim 16,
Wherein the stub application and the encryption application are in an APK file format.
상기 스텁 앱 다운로드부에 저장된 상기 스텁 앱을 백업하는 스텁 앱 백업부를 더 포함하는 것을 특징으로 하는 사용자 단말.18. The method of claim 16,
And a stub application backup unit for backing up the stub application stored in the stub application downloading unit.
상기 스텁 앱 다운로드부는,
상기 앱의 실행이 종료되는 이벤트가 트리거가 되어, 상기 스텁 앱에 포함된 스텁 실행파일을 상기 원본 실행파일에 덮어쓰기 하는 것을 특징으로 하는 사용자 단말.The method of claim 19,
The stub-
Wherein the event that the execution of the application is terminated becomes a trigger, and the stub execution file included in the stub application is overwritten on the original executable file.
런처 앱이 전송한 앱 실행 인텐트에 기반하여 실행될 앱을 결정하는 앱 실행 결정부를 더 포함하는 것을 특징으로 하는 사용자 단말.18. The method of claim 16,
Further comprising an app execution determining unit that determines an app to be executed based on an app execution intent transmitted by the launcher app.
상기 복호화 앱에 대한 다른 그룹(other group)의 권한을 축소 변경하는 앱 권한 관리부를 더 포함하는 것을 특징으로 하는 사용자 단말.18. The method of claim 16,
Further comprising: an appending authority managing unit for reducing and changing an authority of another group for the decryption application.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020130133844A KR101604892B1 (en) | 2013-11-05 | 2013-11-05 | Method and devices for fraud prevention of android-based applications |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020130133844A KR101604892B1 (en) | 2013-11-05 | 2013-11-05 | Method and devices for fraud prevention of android-based applications |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20150051835A KR20150051835A (en) | 2015-05-13 |
| KR101604892B1 true KR101604892B1 (en) | 2016-03-25 |
Family
ID=53389205
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020130133844A Active KR101604892B1 (en) | 2013-11-05 | 2013-11-05 | Method and devices for fraud prevention of android-based applications |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101604892B1 (en) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101673369B1 (en) * | 2015-06-16 | 2016-11-08 | 주식회사 엔에스에이치씨 | Security providing method of improving security of application in mobile device through integrity verification performed in mobile device |
| KR101716110B1 (en) * | 2015-11-04 | 2017-03-15 | 충북대학교 산학협력단 | System and Method of Validating Application by Monitoring Signature |
| KR102295484B1 (en) * | 2019-11-25 | 2021-08-30 | 순천향대학교 산학협력단 | Apparatus and method for verifying security threats in SSL communication on Android platform |
| KR102739853B1 (en) * | 2022-02-08 | 2024-12-10 | 네이버클라우드 주식회사 | Method and system for protecting file using class dispersion and sequential memory loading |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101284676B1 (en) | 2012-02-28 | 2013-08-23 | 건국대학교 산학협력단 | Cryptography-based copy protection system and method for android apps |
-
2013
- 2013-11-05 KR KR1020130133844A patent/KR101604892B1/en active Active
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101284676B1 (en) | 2012-02-28 | 2013-08-23 | 건국대학교 산학협력단 | Cryptography-based copy protection system and method for android apps |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20150051835A (en) | 2015-05-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5670578B2 (en) | Method and apparatus including architecture for protecting sensitive code and data | |
| US8555089B2 (en) | Program execution apparatus, control method, control program, and integrated circuit | |
| JP4702957B2 (en) | Tamper resistant virtual machine | |
| US9489520B2 (en) | Decryption and encryption of application data | |
| EP2264639B1 (en) | Securing executable code integrity using auto-derivative key | |
| EP3103048B1 (en) | Content item encryption on mobile devices | |
| WO2004006075A1 (en) | Open type general-purpose attack-resistant cpu, and application system thereof | |
| EP2828759A1 (en) | Method and system for process working set isolation | |
| EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
| EP2340631A1 (en) | Method and system for controling code execution on a computing device using recursive security protocol | |
| WO2011044710A1 (en) | Software license embedded in shell code | |
| CN104486355A (en) | Method and device for preventing codes from being maliciously tampered with | |
| US8656190B2 (en) | One time settable tamper resistant software repository | |
| US9256731B2 (en) | System, information processing apparatus, secure module, and verification method | |
| CN108229144A (en) | A kind of verification method of application program, terminal device and storage medium | |
| WO2016206393A1 (en) | Method and apparatus for managing application and method and apparatus for implementing read-write operation | |
| KR101604892B1 (en) | Method and devices for fraud prevention of android-based applications | |
| US8479014B1 (en) | Symmetric key based secure microprocessor and its applications | |
| KR101638257B1 (en) | Method for protecting source code of application and apparatus for performing the method | |
| CN115221477A (en) | Authorization method, license making method, chip device and storage medium | |
| KR101711024B1 (en) | Method for accessing temper-proof device and apparatus enabling of the method | |
| JP2009169868A (en) | Storage area access device and storage area access method | |
| Bove | Secure Services for Standard RISC-V Architectures | |
| KR20140011021A (en) | Method for preventing unauthorized copying of the android platform-based applications and inserting digital watermarking in order to track the first clone | |
| CN115437673A (en) | Vehicle-mounted MCU upgrade method, vehicle-mounted MCU upgrade system and server group |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20131105 |
|
| A201 | Request for examination | ||
| PA0201 | Request for examination |
Patent event code: PA02012R01D Patent event date: 20140904 Comment text: Request for Examination of Application Patent event code: PA02011R01I Patent event date: 20131105 Comment text: Patent Application |
|
| PG1501 | Laying open of application | ||
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20150831 Patent event code: PE09021S01D |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20160311 |
|
| PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20160314 Patent event code: PR07011E01D |
|
| PR1002 | Payment of registration fee |
Payment date: 20160314 End annual number: 3 Start annual number: 1 |
|
| PG1601 | Publication of registration | ||
| FPAY | Annual fee payment |
Payment date: 20190107 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
Payment date: 20190107 Start annual number: 4 End annual number: 4 |
|
| FPAY | Annual fee payment |
Payment date: 20200102 Year of fee payment: 5 |
|
| PR1001 | Payment of annual fee |
Payment date: 20200102 Start annual number: 5 End annual number: 5 |
|
| PR1001 | Payment of annual fee |
Payment date: 20201228 Start annual number: 6 End annual number: 6 |
|
| PR1001 | Payment of annual fee |
Payment date: 20211227 Start annual number: 7 End annual number: 7 |
|
| PR1001 | Payment of annual fee |
Payment date: 20240307 Start annual number: 9 End annual number: 9 |
|
| PR1001 | Payment of annual fee |
Payment date: 20250312 Start annual number: 10 End annual number: 10 |