KR20150035249A - 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 - Google Patents
어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 Download PDFInfo
- Publication number
- KR20150035249A KR20150035249A KR20130115578A KR20130115578A KR20150035249A KR 20150035249 A KR20150035249 A KR 20150035249A KR 20130115578 A KR20130115578 A KR 20130115578A KR 20130115578 A KR20130115578 A KR 20130115578A KR 20150035249 A KR20150035249 A KR 20150035249A
- Authority
- KR
- South Korea
- Prior art keywords
- file
- hash value
- application package
- encryption key
- information
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000012795 verification Methods 0.000 claims description 18
- 238000010586 diagram Methods 0.000 description 8
- 238000013478 data encryption standard Methods 0.000 description 4
- 241000700605 Viruses Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Power Engineering (AREA)
- Quality & Reliability (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 실시예는 어플리케이션 패키지의 변조를 방지하고 어플리케이션 패키지의 보안성을 향상시킬 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치에 관한 것으로서, 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 저장하는 기록 매체에 있어서, 어플리케이션 패키지는, 프로그램 코드가 컴파일됨으로써 생성된 실행 파일, 파일의 해시값을 포함하는 매니페스트 파일, 매니페스트 파일의 해시값을 포함하는 다이제스트 정보 파일, 개인키를 이용하여 전자 서명된 다이제스트 정보 파일의 해시값을 포함하는 인증서 파일, 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보, 및 실행 파일이 실행되는 데에 필요한 API(Application Programming Interface)를 포함하는 네이티브 라이브러리를 포함하는 어플리케이션 패키지를 저장하는 기록 매체를 제공할 수 있다.
Description
본 발명의 실시예는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치에 관한 것으로서, 보다 상세하게는 어플리케이션 패키지의 변조를 방지하고 어플리케이션 패키지의 보안성을 향상시킬 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치에 관한 것이다.
통신 기술이 발전되고 전자 장치가 소형화됨에 따라 개인용 단말기가 일반 소비자에게 널리 보급되고 있다. 특히 최근에는 스마트폰 또는 스마트패드와 같은 개인용 휴대 단말기가 널리 보급되고 있다. 또한, 스마트폰 또는 스마트패드 위에서 작동하는 운영체제로서 안드로이드 운영체제가 많이 사용되고 있다.
이러한 환경이 갖추어짐에 따라 개인용 단말기의 플랫폼 위에서 실행될 수 있는 다양한 종류의 어플리케이션이 개발되고 있다. 예를 들어, 안드로이드 플랫폼 위에서 실행될 수 있는 다양한 종류의 안드로이드 어플리케이션이 개발되고 있다.
안드로이드 어플리케이션 시장은 점점 규모가 커지고 있다. 이에 따라 안드로이드 플랫폼이 적용된 휴대 단말기뿐만 아니라 안드로이드 플랫폼이 적용된 거치형 단말기도 소개되고 있다.
안드로이드 어플리케이션은 어플리케이션 패키지의 형태로 제작되고 배포될 수 있다. 어플리케이션 패키지는 적어도 하나 이상의 구성요소를 포함할 수 있다. 어플리케이션 패키지는 인증서(certificate) 파일, 다이제스트(digest) 정보 파일, 및 매니페스트 파일을 포함할 수 있다. 또한, 어플리케이션 패키지는 실행 파일 및 네이티브 라이브러리 파일을 포함할 수 있다.
그러나, Java 언어로 작성된 프로그램으로부터 컴파일된 실행 파일은 용이하게 디컴파일(decompile)될 수 있다. 따라서, 제3자가 실행 파일을 변조한 다음 어플리케이션 패키지를 리패키징(repacking)할 수 있다. 또한, 네이티브 라이브러리는 실행 파일과 독립적으로 동작할 수 있으므로 변조된 실행 파일과 네이티브 라이브러리가 재패키징된 경우, 상기 리패키징된 어플리케이션 패키지는 아무런 문제없이 설치 및 실행될 수 있다. 또한, 상기 리패키징된 어플리케이션 패키지는 아무런 문제없이 네이티브 라이브러리를 사용할 수 있다.
따라서, 변조된 어플리케이션 패키지를 통해 악성 코드가 용이하게 배포될 수 있다. 이로써 사용자의 개인 정보가 유출되는 등 보안이 위협받을 수 있다.
본 발명의 실시예는 어플리케이션 패키지의 변조를 방지할 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 변조된 어플리케이션 패키지가 실행되는 것을 방지할 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치를 제공할 수 있다.
본 발명의 실시예는 어플리케이션 패키지의 보안성을 향상시킬 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치를 제공할 수 있다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.
본 발명의 실시예에 따른 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 저장하는 기록 매체에 있어서, 상기 어플리케이션 패키지는, 프로그램 코드가 컴파일됨으로써 생성된 실행 파일, 상기 파일의 해시값을 포함하는 매니페스트 파일, 상기 매니페스트 파일의 해시값을 포함하는 다이제스트 정보 파일, 개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 해시값을 포함하는 인증서 파일, 상기 개인키에 대응하는 공개키를 포함하고 암호화키를 이용하여 암호화된 보안 정보, 및 상기 실행 파일이 실행되는 데에 필요한 API(Application Programming Interface)를 포함하는 네이티브 라이브러리를 포함할 수 있다.
또한, 상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고, 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화될 수 있다.
또한, 상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 목록에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함할 수 있다.
또한, 상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함할 수 있다.
또한, 상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함할 수 있다.
또한, 상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함할 수 있다.
본 발명의 실시예에 따른 어플리케이션 패키지 생성 방법은, 적어도 하나 이상의 파일, 네이티브 라이브러리 및 개인키를 이용하여 전자 서명된 인증서 파일을 포함하는 어플리케이션 패키지를 준비하는 단계, 상기 네이티브 라이브러리에, 상기 네이티브 라이브러리가 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 삽입하는 단계, 암호화키를 생성하고, 상기 암호화키에 대응하는 암호화키 정보를 상기 네이티브 라이브러리에 삽입하는 단계, 상기 개인키에 대응하는 공개키를 포함하는 보안 정보를 생성하는 단계, 상기 암호화키를 이용하여 상기 보안 정보를 암호화하는 단계, 및 상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계를 포함할 수 있다.
또한, 상기 로직을 삽입하는 단계는, 상기 어플리케이션 패키지에 포함된 상기 네이티브 라이브러리를 상기 로직이 삽입된 다른 네이티브 라이브러리로 대체하는 단계를 포함할 수 있다.
또한, 상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함할 수 있다.
또한, 상기 보안 정보를 생성하는 단계는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록 및 상기 공개키를 포함하는 상기 보안 정보를 생성하는 단계를 포함할 수 있다.
또한, 상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계는, 상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 추가하는 단계, 및 상기 어플리케이션 패키지를 리패키징(repackaging)하는 단계를 포함할 수 있다.
본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법은, 실행 파일, 네이티브 라이브러리 및 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 실행하는 어플리케이션 패키지 실행 방법에 있어서, 상기 실행 파일을 실행하는 단계, 상기 네이티브 라이브러리를 호출하는 단계, 및 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 단계를 포함할 수 있다.
또한, 상기 어플리케이션 패키지는, 상기 파일의 제1해시값을 포함하는 매니페스트 파일, 상기 매니페스트 파일의 제2해시값을 포함하는 다이제스트 정보 파일, 개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 제3해시값을 포함하는 인증서 파일, 및 상기 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보를 더 포함하고, 상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함할 수 있다.
또한, 상기 무결성을 검증하는 단계는, 상기 암호화키 정보를 이용하여 상기 암호화키를 획득하는 단계, 상기 획득된 암호화키를 이용하여 상기 암호화된 보안 정보를 복호화하는 단계, 상기 복호화된 보안 정보에 포함된 상기 공개키를 이용하여 상기 제3해시값을 복호화하는 단계, 및 상기 다이제스트 정보 파일을 이용하여 제4해시값을 생성하고, 상기 제4해시값과 상기 복호화된 제3해시값을 비교하는 단계를 포함할 수 있다.
또한, 상기 무결성을 검증하는 단계는, 상기 매니페스트 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제2해시값을 비교하는 단계를 더 포함할 수 있다.
또한, 상기 무결성을 검증하는 단계는, 상기 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계를 더 포함할 수 있다.
또한, 상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고, 상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고, 상기 무결성을 검증하는 단계는, 상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계를 더 포함할 수 있다.
또한, 상기 무결성을 검증하는 단계는, 상기 제5해시값을 저장하는 단계를 더 포함할 수 있다.
또한, 상기 무결성을 검증하는 단계는, 이전에 상기 파일의 무결성의 검증을 수행한 결과로서 상기 파일의 저장된 해시값이 존재하는지 여부를 확인하는 단계, 만약 상기 저장된 해시값이 존재하는 경우, 상기 파일을 이용하여 해시값을 생성하는 단계, 및 상기 생성된 해시값과 상기 저장된 해시값을 비교하는 단계를 포함할 수 있다.
또한, 상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고, 상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고, 상기 해시값을 생성하는 단계는, 상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 상기 해시값을 생성하는 단계를 포함할 수 있다.
본 발명의 실시예에 따르면 어플리케이션 패키지의 변조를 방지할 수 있다.
본 발명의 실시예에 따르면 변조된 어플리케이션 패키지가 실행되는 것을 방지할 수 있다.
본 발명의 실시예에 따르면 어플리케이션 패키지의 보안성을 향상시킬 수 있다.
도 1은 본 발명의 실시예에 따른 어플리케이션 패키지의 구성을 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따른 어플리케이션 패키지에 포함된 검증 대상 파일 목록에 대응되는 XML 코드를 나타내는 참고도이다.
도 3은 본 발명의 실시예에 따른 어플리케이션 패키지 생성 방법이 수행되는 과정을 나타내는 순서도이다.
도 4는 본 발명의 실시예에 따른 어플리케이션 패키지 생성 장치의 구성을 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법이 수행되는 과정을 나타내는 순서도이다.
도 6은 본 발명의 실시예에 따라 무결성을 검증하는 단계가 수행되는 과정을 나타내는 순서도이다.
도 7은 본 발명의 다른 실시예에 따라 무결성을 검증하는 단계가 수행되는 과정을 나타내는 순서도이다.
도 8은 본 발명의 실시예에 따른 어플리케이션 패키지 실행 장치의 구성을 나타내는 블록도이다.
도 2는 본 발명의 실시예에 따른 어플리케이션 패키지에 포함된 검증 대상 파일 목록에 대응되는 XML 코드를 나타내는 참고도이다.
도 3은 본 발명의 실시예에 따른 어플리케이션 패키지 생성 방법이 수행되는 과정을 나타내는 순서도이다.
도 4는 본 발명의 실시예에 따른 어플리케이션 패키지 생성 장치의 구성을 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법이 수행되는 과정을 나타내는 순서도이다.
도 6은 본 발명의 실시예에 따라 무결성을 검증하는 단계가 수행되는 과정을 나타내는 순서도이다.
도 7은 본 발명의 다른 실시예에 따라 무결성을 검증하는 단계가 수행되는 과정을 나타내는 순서도이다.
도 8은 본 발명의 실시예에 따른 어플리케이션 패키지 실행 장치의 구성을 나타내는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1구성요소는 본 발명의 기술적 사상 내에서 제2구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 8을 참조하여 본 발명의 실시예에 따른 어플리케이션 패키지(100)를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 어플리케이션 패키지 생성 장치(200), 어플리케이션 패키지 실행 방법 및 어플리케이션 패키지 실행 장치(300)에 대해 상세히 설명하기로 한다.
도 1은 본 발명의 실시예에 따른 어플리케이션 패키지(100)의 구성을 나타내는 블록도이다. 도 1을 참조하면, 본 발명의 실시예에 따른 어플리케이션 패키지(100)는, 실행 파일(110), 매니페스트 파일(120), 다이제스트 정보 파일(130), 인증서 파일(140), 보안 정보(150), 및 네이티브 라이브러리(160)를 포함할 수 있다. 또한, 어플리케이션 패키지(100)는 리소스(resource) 파일을 더 포함할 수 있다.
실행 파일(110)은 프로그램 코드가 컴파일됨으로써 생성될 수 있다. 실행 파일은 Java 언어로 작성된 프로그램 코드가 어플리케이션 패키지 실행 장치(300)에서 실행될 수 있도록 컴파일됨으로써 생성될 수 있다. 실행 파일(110)은 프로그램 코드가 달빅 머신(Dalvik machine)에서 실행될 수 있도록 컴파일됨으로써 생성될 수 있다. 실행 파일(110)은 달빅 머신이 실행할 수 있는 적어도 하나 이상의 명령어(instruction)를 포함할 수 있다. 실행 파일(110)은 dex 확장자를 가질 수 있다. 실행 파일(110)은 예를 들어, classes.dex와 같은 파일명을 가질 수 있다.
매니페스트 파일(120)은 어플리케이션 패키지(100)에 포함된 각각의 파일의 해시값(hash value)을 포함할 수 있다. 또한, 매니페스트 파일(120)은 어플리케이션 패키지(100)에 포함된 각각의 구성요소의 위치 정보를 포함할 수 있다. 매니페스트 파일(120)은 예를 들어, manifest.mf와 같은 파일명을 가질 수 있다.
다이제스트 정보 파일(130)은 상기 매니페스트 파일(120)의 해시값을 포함할 수 있다. 또한, 다이제스트 정보 파일(130)은 어플리케이션 패키지(100)에 포함된 각각의 리소스 파일의 SHA-1 다이제스트 정보를 포함할 수 있다. 다이제스트 정보 파일(130)은 예를 들어, cert.sf와 같은 파일명을 가질 수 있다.
인증서 파일(140)은 개인키(private key)를 이용하여 전자 서명된 상기 다이제스트 정보 파일(130)의 해시값을 포함할 수 있다. 다이제스트 정보 파일(130)의 해시값은 개발자의 개인키를 이용하여 전자 서명될 수 있다. 인증서 파일(140)은 상기 전자 서명된 해시값을 포함할 수 있다. 또한, 인증서 파일(140)은 상기 개인키에 대응하는 공개키(public key)를 더 포함할 수 있다. 인증서 파일(140)은 예를 들어, cert.rsa와 같은 파일명을 가질 수 있다.
보안 정보(150)는 상기 개인키에 대응하는 공개키를 포함하고, 암호화키(encryption key)를 이용하여 암호화될 수 있다. 보안 정보(150)는 상기 개인키에 대응하는 개발자의 공개키를 포함할 수 있다. 또한, 보안 정보(150)는 어플리케이션 패키지(100)에 포함된 파일 중에서 상기 네이티브 라이브러리(160)가 호출될 때마다 무결성(integrity)이 검증될 대상 파일의 목록을 더 포함할 수 있다.
도 2는 무결성이 검증될 대상 파일의 목록에 대응되는 XML 코드를 나타내는 참고도이다. 도 2에 나타난 XML 코드는 예를 들어, XML(extensible markup language)로 작성될 수 있다. 상기 대상 파일의 목록은 상기 XML 코드가 변환됨으로써 생성될 수 있다. 상기 XML 코드는 개발자에 의해 작성되거나 수정될 수 있다. 또한, 상기 대상 파일의 목록은 개발자에 의해 작성되거나 수정될 수 있다.
상기 목록에 포함된 각각의 파일의 무결성은 네이티브 라이브러리(160)가 호출될 때마다 검증될 수 있다. 상기 대상 파일의 목록에 포함된 파일의 개수가 많으면 많을수록 네이티브 라이브러리(160)가 호출되었을 때 무결성이 검증되는 데에 소요되는 시간이 더 길 수 있다.
도 2를 참조하면, 무결성이 검증될 대상 파일은 "Item" 태그를 이용하여 정의될 수 있다. 도 2에 나타난 실시예에서는, 어플리케이션 패키지(100)의 "libs" 디렉토리에 포함된 모든 하위 디렉토리 및 하위 파일이 상기 대상 파일로서 정의될 수 있다. 또한, 어플리케이션 패키지(100)의 "res" 디렉토리에 포함된 "values" 디렉토리에 포함된 모든 하위 디렉토리 및 하위 파일이 상기 대상 파일로서 정의될 수 있다. 또한, 어플리케이션 패키지(100)의 "assets" 디렉토리에 포함된 모든 하위 디렉토리 및 하위 파일이 상기 대상 파일로서 정의될 수 있다. 또한, 실행 파일(110)의 무결성은 네이티브 라이브러리(160)가 호출될 때마다 검증되도록 할 수 있다.
보안 정보(150)는 암호화키를 이용하여 암호화될 수 있다. 보안 정보(150)는 예를 들어, AES(Advanced Encryption Standard), DES(Data Encryption Standard), 또는 다른 암호화 알고리즘을 이용하여 암호화될 수 있다. 따라서, 보안 정보(150)에 포함된 상기 공개키 및 상기 대상 파일의 목록은 암호화될 수 있다.
네이티브 라이브러리(160)는 상기 실행 파일(110)이 실행되는 데에 필요한 API(Application Programming Interface)를 포함할 수 있다. 네이티브 라이브러리(160)는 예를 들어, C 언어 또는 C++ 언어를 이용하여 작성된 프로그램 코드가 컴파일됨으로써 생성될 수 있다. 네이티브 라이브러리(160)는 적어도 하나 이상의 명령어(instruction)를 포함할 수 있다.
또한, 네이티브 라이브러리(160)는 상기 암호화키에 대응하는 정보를 포함할 수 있다. 네이티브 라이브러리(160)는 상기 보안 정보(150)를 암호화하는 데에 이용된 암호화키에 대응하는 정보를 포함할 수 있다. 암호화키에 대응하는 정보는 예를 들어, 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함할 수 있다. 이로써, 해커(hacker) 또는 크래커(cracker)가 네이티브 라이브러리(160)를 분석함으로써 상기 암호화키를 획득하는 것이 방지될 수 있다.
또한, 네이티브 라이브러리(160)는 상기 API가 상기 실행 파일(110)에 의해 호출될 때마다 상기 대상 파일 목록에 포함된 각각의 파일의 무결성을 검증하는 로직을 포함할 수 있다. 상기 로직은 네이티브 라이브러리(160)에 포함된 API 중에서 적어도 일부의 API에 각각 포함될 수 있다.
도 3은 본 발명의 실시예에 따른 어플리케이션 패키지 생성 방법이 수행되는 과정을 나타내는 순서도이다. 도 3을 참조하면, 본 발명의 실시예에 따른 어플리케이션 패키지 생성 방법에서는 먼저, 어플리케이션 패키지를 준비하는 단계(S100)가 수행될 수 있다.
상기 준비된 어플리케이션 패키지는 개발자에 의해 제작되고 배포된 어플리케이션 패키지일 수 있다. 상기 어플리케이션 패키지는 적어도 하나 이상의 구성요소를 포함하는 패키지일 수 있다. 상기 어플리케이션 패키지는 위에서 설명된 본 발명의 실시예에 따른 어플리케이션 패키지(100)에 포함된 구성요소 중에서 일부의 구성요소를 포함하지 않을 수 있다.
상기 어플리케이션 패키지는 적어도 하나 이상의 파일을 포함할 수 있다. 상기 파일은 예를 들어, 실행 파일 또는 리소스 파일 등을 포함할 수 있다. 또한, 상기 어플리케이션 패키지는 네이티브 라이브러리를 포함할 수 있다. 또한, 상기 어플리케이션 패키지는 상기 파일의 해시값을 포함하는 매니페스트 파일을 포함할 수 있다. 또한, 상기 어플리케이션 패키지는 상기 매니패스트 파일의 해시값을 포함하는 다이제스트 정보 파일을 포함할 수 있다. 또한, 상기 어플리케이션 패키지는 인증서 파일을 포함할 수 있다. 상기 인증서 파일은 개발자의 개인키를 이용하여 전자 서명된 해시값을 포함할 수 있다. 상기 전자 서명된 해시값은 상기 다이제스트 정보 파일의 해시값일 수 있다.
다음으로, 상기 네이티브 라이브러리에 로직을 삽입하는 단계(S110)가 수행될 수 있다. 상기 로직은, 상기 네이티브 라이브러리가 호출되면 상기 어플리케이션 패키지에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직일 수 있다. 상기 로직은, 네이티브 라이브러리에 포함된 API가 어플리케이션 패키지의 실행 파일에 의해 호출되면 상기 어플리케이션 패키지에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직일 수 있다.
상기 네이티브 라이브러리에 상기 로직을 삽입하기 위하여, 상기 네이티브 라이브러리가 다시 컴파일될 수 있다. 또한, 다른 실시예에 따르면, 상기 어플리케이션 패키지에 포함된 네이티브 라이브러리는 상기 로직이 삽입된 다른 네이티브 라이브러리로 대체될 수 있다.
다음으로, 암호화키를 생성하고, 상기 암호화키에 대응하는 암호화키 정보를 상기 네이티브 라이브러리에 삽입하는 단계(S120)가 수행될 수 있다. 예를 들어, AES, DES, 또는 다른 암호화키 암호화 알고리즘에 따른 임의의 암호화키가 생성될 수 있다. 또한, 상기 생성된 암호화키에 대응하는 정보가 상기 네이티브 라이브러리에 삽입될 수 있다. 암호화키에 대응하는 정보는 예를 들어, 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함할 수 있다.
다음으로, 상기 개인키에 대응하는 공개키를 포함하는 보안 정보를 생성하는 단계(S130)가 수행될 수 있다. 상기 생성된 보안 정보는 개발자의 개인키에 대응하는 공개키를 포함할 수 있다. 또한, 상기 생성된 보안 정보는 어플리케이션 패키지에 포함된 파일 중에서 상기 네이티브 라이브러리가 호출되면 무결성이 검증될 대상 파일의 목록을 더 포함할 수 있다.
다음으로, 상기 암호화키를 이용하여 상기 보안 정보를 암호화하는 단계(S140)가 수행될 수 있다. 상기 보안 정보는 예를 들어, AES, DES, 또는 다른 암호화키 암호화 알고리즘에 따라 암호화될 수 있다.
다음으로, 상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계(S150)가 수행될 수 있다. 상기 암호화된 보안 정보는 파일로서 상기 어플리케이션 패키지에 추가될 수 있다. 상기 어플리케이션 패키지에 상기 암호화된 보안 정보를 삽입하기 위하여, 상기 어플리케이션 패키지가 리패키징(repackaging)될 수 있다.
도 4는 본 발명의 실시예에 따른 어플리케이션 패키지 생성 장치(200)의 구성을 나타내는 블록도이다. 도 4를 참조하면, 본 발명의 실시예에 따른 어플리케이션 패키지 생성 장치(200)는, 어플리케이션 패키지 로딩부(210), 라이브러리 생성부(220), 및 보안 정보 생성부(230)를 포함할 수 있다.
어플리케이션 패키지 로딩부(210)는 어플리케이션 패키지를 로드(load)할 수 있다. 상기 어플리케이션 패키지는 개발자에 의해 제작되고 배포된 어플리케이션 패키지일 수 있다. 상기 어플리케이션 패키지는 위에서 설명된 본 발명의 실시예에 따른 어플리케이션 패키지(100)에 포함된 구성요소 중에서 일부의 구성요소를 포함하지 않을 수 있다. 어플리케이션 패키지 로딩부(210)의 동작은 도 3을 참조하여 서술된 어플리케이션 패키지를 준비하는 단계(S100)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
라이브러리 생성부(220)는 상기 로드된 어플리케이션 패키지에 포함된 네이티브 라이브러리에 로직을 삽입할 수 있다. 상기 로직은, 상기 네이티브 라이브러리가 호출되면 상기 어플리케이션 패키지에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직일 수 있다.
라이브러리 생성부(220)는 상기 네이티브 라이브러리에 상기 로직을 삽입하기 위하여, 상기 네이티브 라이브러리를 다시 컴파일할 수 있다. 또한, 다른 실시예에 따르면, 라이브러리 생성부(220)는 상기 로드된 어플리케이션 패키지에 포함된 네이티브 라이브러리를 상기 로직이 삽입된 다른 네이티브 라이브러리로 대체할 수 있다.
또한, 라이브러리 생성부(220)는 암호화키를 생성할 수 있다. 라이브러리 생성부(220)는 상기 암호화키에 대응하는 정보를 상기 네이티브 라이브러리에 삽입할 수 있다. 상기 암호화키에 대응하는 정보는 예를 들어, 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함할 수 있다.
라이브러리 생성부(220)의 동작은 도 3을 참조하여 서술된 네이티브 라이브러리에 로직을 삽입하는 단계(S110) 및 암호화키에 대응하는 정보를 네이티브 라이브러리에 삽입하는 단계(S120)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
보안 정보 생성부(230)는 보안 정보를 생성할 수 있다. 상기 보안 정보는 공개키를 포함할 수 있다. 상기 공개키는, 상기 로드된 어플리케이션 패키지의 다이제스트 정보 파일의 해시값을 전자 서명하는 데에 이용된 개인키에 대응할 수 있다. 또한, 상기 보안 정보는 상기 로드된 어플리케이션 패키지에 포함된 파일 중에서 상기 네이티브 라이브러리가 호출되면 무결성이 검증될 대상 파일의 목록을 더 포함할 수 있다.
보안 정보 생성부(230)는 라이브러리 생성부(220)에 의해 생성된 암호화키를 이용하여 상기 보안 정보를 암호화할 수 있다. 또한, 보안 정보 생성부(230)는 상기 암호화된 보안 정보를 상기 로드된 어플리케이션 패키지에 삽입할 수 있다. 상기 암호화된 보안 정보는 파일로서 상기 어플리케이션 패키지에 삽입될 수 있다. 보안 정보 생성부(230)는 상기 어플리케이션 패키지에 상기 암호화된 보안 정보를 삽입하기 위하여, 상기 어플리케이션 패키지를 리패키징(repackaging)할 수 있다.
보안 정보 생성부(230)의 동작은 도 3을 참조하여 서술된 보안 정보를 생성하는 단계(S130) 내지 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계(S150)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
도 5는 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법이 수행되는 과정을 나타내는 순서도이다. 도 5를 참조하면, 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법은 먼저, 어플리케이션 패키지(100)에 포함된 실행 파일(110)을 실행하는 단계(S200)가 수행될 수 있다.
어플리케이션 패키지(100)는 실행 파일(110)을 포함할 수 있다. 실행 파일(110)은 예를 들어, classes.dex와 같은 파일명을 가질 수 있다. 실행 파일(110)은 적어도 하나 이상의 명령어를 포함할 수 있다. 따라서, 상기 실행 파일(110)에 포함된 명령어가 실행될 수 있다.
실행 파일(110)은 캐시(cache)될 수 있다. 이로써, 실행 파일(110)은 odex 파일로 변환될 수 있다. odex 파일은 적어도 하나 이상의 명령어를 포함할 수 있다. odex 파일에 포함된 명령어는 실행 파일(110)에 포함된 명령어에 대응할 수 있다. 따라서, 다른 실시예에 따르면, 상기 실행 파일(110)에 포함된 명령어에 대응하고, 상기 실행 파일(110)로부터 변환된 odex 파일에 포함된 명령어가 실행될 수 있다.
다음으로, 상기 어플리케이션 패키지(100)에 포함된 네이티브 라이브러리(160)를 호출하는 단계(S210)가 수행될 수 있다. 네이티브 라이브러리(160)는 실행 파일(110) 또는 상기 실행 파일(110)에 대응하는 odex 파일이 실행되는 데에 필요한 API를 포함할 수 있다. 따라서, 네이티브 라이브러리(160)에 포함된 상기 API가 호출될 수 있다.
다음으로, 상기 어플리케이션 패키지(100)에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 단계(S220)가 수행될 수 있다. 도 6은 본 발명의 실시예에 따라 무결성을 검증하는 단계(S220)가 수행되는 과정을 나타내는 순서도이다.
도 6을 참조하면, 무결성을 검증하는 단계(S220)에서는 먼저, 상기 네이티브 라이브러리(160)에 포함된 상기 암호화키에 대응하는 정보를 이용하여 상기 암호화키를 획득하는 단계(S221)가 수행될 수 있다.
다음으로, 상기 획득된 암호화키를 이용하여 상기 어플리케이션 패키지(100)에 포함된 상기 암호화된 보안 정보(150)를 복호화하는 단계(S222)가 수행될 수 있다. 상기 암호화키가 대칭키(symmetric key)인 경우, 보안 정보(150)는 대칭키를 이용하여 암호화되었으므로, 암호화된 보안 정보(150)는 상기 대칭키를 이용하여 복호화될 수 있다.
다음으로, 상기 복호화된 보안 정보(150)에 포함된 공개키를 이용하여 상기 어플리케이션 패키지(100)에 포함된 인증서 파일(140)에 포함된 상기 전자 서명된 해시값을 복호화하는 단계(S223)가 수행될 수 있다. 인증서 파일(140)에 포함된 다이제스트 정보 파일(130)의 해시값은 개인키를 이용하여 전자 서명되었으므로, 상기 전자 서명된 해시값은 상기 개인키에 대응하는 상기 공개키를 이용하여 복호화될 수 있다.
만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 인증서 파일(140)에 포함된 상기 전자 서명된 해시값은 상기 보안 정보(150)에 포함된 공개키를 이용하여 복호화되지 못할 수 있다.
다음으로, 상기 어플리케이션 패키지(100)에 포함된 상기 다이제스트 정보 파일(130)을 이용하여 생성된 해시값과 상기 복호화된 해시값을 비교하는 단계(S224)가 수행될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 두 개의 해시값은 서로 다를 수 있다.
다음으로, 상기 어플리케이션 패키지(100)에 포함된 상기 매니페스트 파일(120)을 이용하여 생성된 해시값과 상기 다이제스트 정보 파일(130)에 포함된 해시값을 비교하는 단계(S225)가 수행될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 두 개의 해시값은 서로 다를 수 있다.
다음으로, 상기 어플리케이션 패키지(100)에 포함된 상기 파일을 이용하여 생성된 해시값과 상기 매니페스트 파일(120)에 포함된 해시값을 비교하는 단계(S226)가 수행될 수 있다. 어플리케이션 패키지(100)에 포함된 각각의 파일을 이용하여 생성된 해시값과 상기 각각의 파일에 대응되고 상기 매니페스트 파일(120)에 포함된 해시값이 서로 비교될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 해시값들은 서로 다를 수 있다.
다른 실시예에 따르면, 상기 어플리케이션 패키지(100)에 포함된 상기 파일 중에서 상기 검증 대상 파일 목록에 포함된 파일을 이용하여 해시값이 생성될 수 있다. 상기 복호화된 보안 정보(150)는 상기 검증 대상 파일 목록을 포함할 수 있다. 상기 생성된 해시값과 상기 매니페스트 파일(120)에 포함된 해시값이 서로 비교될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 해시값들은 서로 다를 수 있다.
만약 상기 비교 결과, 상기 해시값들이 서로 동일한 경우에는 상기 어플리케이션 패키지(100)의 무결성의 검증이 완료된 것으로 판단될 수 있다.
다음으로, 상기 파일을 이용하여 생성된 상기 해시값을 저장하는 단계(S227)가 수행될 수 있다. 저장된 해시값을 이용하는 방법에 대하여는 도 7을 참조하여 설명하기로 한다.
도 7은 본 발명의 다른 실시예에 따라 무결성을 검증하는 단계(S220)가 수행되는 과정을 나타내는 순서도이다. 도 7을 참조하면, 본 발명의 다른 실시예에 따라 무결성을 검증하는 단계(S220)에서는 먼저, 이전에 상기 파일의 무결성의 검증을 수행한 결과로서 상기 파일의 저장된 해시값이 존재하는지 여부를 확인하는 단계(S321)가 수행될 수 있다.
만약 상기 네이티브 라이브러리(160)가 최초로 호출됨으로써 상기 파일의 무결성의 검증이 최초로 수행되는 경우라면, 상기 저장된 해시값은 존재하지 않는 것으로 확인될 수 있다. 만약 이전에 상기 파일의 무결성의 검증이 수행된 적이 있는 경우라면, 예를 들어, 도 6을 참조하여 서술된 해시값을 저장하는 단계(S227)가 이미 수행되었을 수 있다. 따라서, 상기 저장된 해시값이 존재하는 것으로 확인될 수 있다.
다음으로, 만약 상기 파일의 저장된 해시값이 존재하는 경우, 상기 파일을 이용하여 해시값을 생성하고, 상기 생성된 해시값과 상기 저장된 해시값을 비교하는 단계(S322)가 수행될 수 있다. 어플리케이션 패키지(100)에 포함된 각각의 파일을 이용하여 해시값이 새로이 생성될 수 있다. 상기 생성된 해시값과 상기 각각의 파일에 대응하는 상기 저장된 해시값이 서로 비교될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 해시값들은 서로 다를 수 있다.
만약 상기 파일의 저장된 해시값이 존재하지 않는 경우에는, 도 6을 참조하여 서술된 암호화키를 획득하는 단계(S221) 내지 해시값을 저장하는 단계(S227)가 수행될 수 있다.
다시 말해서, 상기 파일의 저장된 해시값이 존재하는 경우에는, 상기 저장된 해시값이 존재하지 않는 경우에 비하여 무결성의 검증이 더 간단히 수행될 수 있다. 이전에 상기 파일의 무결성의 검증을 이미 수행한 적이 있는 경우에는, 도 6을 참조하여 서술된 인증서 파일(140)에 포함된 전자 서명된 해시값을 복호화하는 단계(S223) 등이 수행되지 않고 생략될 수 있다.
상기 인증서 파일(140)에 포함된 전자 서명된 해시값을 복호화하는 단계(S223)가 수행되는 데에는 많은 시간이 소요될 수 있다. 따라서, 상기 파일의 저장된 해시값이 존재하는 경우에는, 상기 저장된 해시값이 존재하지 않는 경우에 비하여, 무결성을 검증하는 단계(S220)가 수행되는 데에 더 적은 시간이 소요될 수 있다.
다른 실시예에 따르면, 만약 상기 파일의 저장된 해시값이 존재하는 경우, 상기 파일 중에서 상기 검증 대상 파일 목록에 포함된 파일을 이용하여 해시값이 새로이 생성될 수 있다. 또한, 상기 생성된 해시값과 상기 저장된 해시값이 서로 비교될 수 있다. 만약 해커 또는 크래커에 의해 어플리케이션 패키지(100)가 변조된 경우, 상기 해시값들은 서로 다를 수 있다.
위에서 설명한 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법에 따르면, 네이티브 라이브러리(160)가 호출될 때마다 어플리케이션 패키지(100)에 포함된 파일의 무결성이 검증될 수 있다. 다시 말해서, 어플리케이션이 실행될 때마다 어플리케이션 패키지(100)에 포함된 파일의 무결성이 검증될 수 있다. 따라서, 어플리케이션 패키지(100)가 설치된 후에 해커의 공격 또는 바이러스에 의해 어플리케이션 패키지(100)가 변조되었다고 하더라도, 변조된 어플리케이션 패키지(100)의 실행이 방지될 수 있다.
또한, 본 발명의 실시예에 따른 어플리케이션 패키지 실행 방법에 따르면, 암호화된 보안 정보(150)에 포함된 공개키를 이용하여 무결성이 검증되므로 어플리케이션 패키지(100)의 변조가 방지될 수 있다. 또한, 어플리케이션 패키지(100)의 보안성이 향상될 수 있다.
도 8은 본 발명의 실시예에 따른 어플리케이션 패키지 실행 장치(300)의 구성을 나타내는 블록도이다. 도 8을 참조하면, 어플리케이션 패키지 실행 장치(300)는, 실행부(310), 호출부(320), 및 검증부(330)를 포함할 수 있다.
실행부(310)는 어플리케이션 패키지(100)에 포함된 실행 파일(110)을 실행할 수 있다. 실행부(310)의 동작은 도 5를 참조하여 서술된 실행 파일(110)을 실행하는 단계(S200)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
호출부(320)는 상기 실행 파일(110)이 실행되는 데에 필요한 네이티브 라이브러리(160)를 호출할 수 있다. 호출부(320)의 동작은 도 5를 참조하여 서술된 네이티브 라이브러리(160)를 호출하는 단계(S210)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
검증부(330)는 상기 네이티브 라이브러리(160)가 호출되면 상기 어플리케이션 패키지(100)에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증할 수 있다. 검증부(330)의 동작은 도 5 내지 도 7을 참조하여 서술된 무결성을 검증하는 단계(S220)에 대응될 수 있으므로 여기에서는 자세한 설명을 생략하기로 한다.
이상에서 설명한 본 발명의 실시예에 따르면 어플리케이션 패키지의 변조를 방지할 수 있다. 또한, 변조된 어플리케이션 패키지가 실행되는 것을 방지할 수 있다. 또한, 어플리케이션 패키지의 보안성을 향상시킬 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 어플리케이션 패키지
110: 실행 파일
120: 매니페스트 파일
130: 다이제스트 정보 파일
140: 인증서 파일
150: 보안 정보
160: 네이티브 라이브러리
200: 어플리케이션 패키지 생성 장치
210: 어플리케이션 패키지 로딩부
220: 라이브러리 생성부
230: 보안 정보 생성부
300: 어플리케이션 패키지 실행 장치
310: 실행부
320: 호출부
330: 검증부
110: 실행 파일
120: 매니페스트 파일
130: 다이제스트 정보 파일
140: 인증서 파일
150: 보안 정보
160: 네이티브 라이브러리
200: 어플리케이션 패키지 생성 장치
210: 어플리케이션 패키지 로딩부
220: 라이브러리 생성부
230: 보안 정보 생성부
300: 어플리케이션 패키지 실행 장치
310: 실행부
320: 호출부
330: 검증부
Claims (20)
- 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 저장하는 기록 매체에 있어서,
상기 어플리케이션 패키지는,
프로그램 코드가 컴파일됨으로써 생성된 실행 파일;
상기 파일의 해시값을 포함하는 매니페스트 파일;
상기 매니페스트 파일의 해시값을 포함하는 다이제스트 정보 파일;
개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 해시값을 포함하는 인증서 파일;
상기 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보; 및
상기 실행 파일이 실행되는 데에 필요한 API(Application Programming Interface)를 포함하는 네이티브 라이브러리
를 포함하는 어플리케이션 패키지를 저장하는 기록 매체. - 제1항에 있어서,
상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화된 어플리케이션 패키지를 저장하는 기록 매체. - 제2항에 있어서,
상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 목록에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함하는 어플리케이션 패키지를 저장하는 기록 매체. - 제1항에 있어서,
상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함하는 어플리케이션 패키지를 저장하는 기록 매체. - 제4항에 있어서,
상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함하는 어플리케이션 패키지를 저장하는 기록 매체. - 제1항에 있어서,
상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함하는 어플리케이션 패키지를 저장하는 기록 매체. - 적어도 하나 이상의 파일, 네이티브 라이브러리 및 개인키를 이용하여 전자 서명된 인증서 파일을 포함하는 어플리케이션 패키지를 준비하는 단계;
상기 네이티브 라이브러리에, 상기 네이티브 라이브러리가 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 삽입하는 단계;
암호화키를 생성하고, 상기 암호화키에 대응하는 암호화키 정보를 상기 네이티브 라이브러리에 삽입하는 단계;
상기 개인키에 대응하는 공개키를 포함하는 보안 정보를 생성하는 단계;
상기 암호화키를 이용하여 상기 보안 정보를 암호화하는 단계; 및
상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계
를 포함하는 어플리케이션 패키지 생성 방법. - 제7항에 있어서,
상기 로직을 삽입하는 단계는,
상기 어플리케이션 패키지에 포함된 상기 네이티브 라이브러리를 상기 로직이 삽입된 다른 네이티브 라이브러리로 대체하는 단계
를 포함하는 어플리케이션 패키지 생성 방법. - 제7항에 있어서,
상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함하는 어플리케이션 패키지 생성 방법. - 제7항에 있어서,
상기 보안 정보를 생성하는 단계는,
상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록 및 상기 공개키를 포함하는 상기 보안 정보를 생성하는 단계
를 포함하는 어플리케이션 패키지 생성 방법. - 제7항에 있어서,
상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계는,
상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 추가하는 단계; 및
상기 어플리케이션 패키지를 리패키징(repackaging)하는 단계
를 포함하는 어플리케이션 패키지 생성 방법. - 실행 파일, 네이티브 라이브러리 및 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 실행하는 어플리케이션 패키지 실행 방법에 있어서,
상기 실행 파일을 실행하는 단계;
상기 네이티브 라이브러리를 호출하는 단계; 및
상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 단계
를 포함하는 어플리케이션 패키지 실행 방법. - 제12항에 있어서,
상기 어플리케이션 패키지는,
상기 파일의 제1해시값을 포함하는 매니페스트 파일;
상기 매니페스트 파일의 제2해시값을 포함하는 다이제스트 정보 파일;
개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 제3해시값을 포함하는 인증서 파일; 및
상기 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보
를 더 포함하고,
상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함하는 어플리케이션 패키지 실행 방법. - 제13항에 있어서,
상기 무결성을 검증하는 단계는,
상기 암호화키 정보를 이용하여 상기 암호화키를 획득하는 단계;
상기 획득된 암호화키를 이용하여 상기 암호화된 보안 정보를 복호화하는 단계;
상기 복호화된 보안 정보에 포함된 상기 공개키를 이용하여 상기 제3해시값을 복호화하는 단계; 및
상기 다이제스트 정보 파일을 이용하여 제4해시값을 생성하고, 상기 제4해시값과 상기 복호화된 제3해시값을 비교하는 단계
를 포함하는 어플리케이션 패키지 실행 방법. - 제14항에 있어서,
상기 무결성을 검증하는 단계는,
상기 매니페스트 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제2해시값을 비교하는 단계
를 더 포함하는 어플리케이션 패키지 실행 방법. - 제14항에 있어서,
상기 무결성을 검증하는 단계는,
상기 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계
를 더 포함하는 어플리케이션 패키지 실행 방법. - 제14항에 있어서,
상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고,
상기 무결성을 검증하는 단계는,
상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계
를 더 포함하는 어플리케이션 패키지 실행 방법. - 제17항에 있어서,
상기 무결성을 검증하는 단계는,
상기 제5해시값을 저장하는 단계
를 더 포함하는 어플리케이션 패키지 실행 방법. - 제13항에 있어서,
상기 무결성을 검증하는 단계는,
이전에 상기 파일의 무결성의 검증을 수행한 결과로서 상기 파일의 저장된 해시값이 존재하는지 여부를 확인하는 단계;
만약 상기 저장된 해시값이 존재하는 경우, 상기 파일을 이용하여 해시값을 생성하는 단계; 및
상기 생성된 해시값과 상기 저장된 해시값을 비교하는 단계
를 포함하는 어플리케이션 패키지 실행 방법. - 제19항에 있어서,
상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고,
상기 해시값을 생성하는 단계는,
상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 상기 해시값을 생성하는 단계
를 포함하는 어플리케이션 패키지 실행 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130115578A KR20150035249A (ko) | 2013-09-27 | 2013-09-27 | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 |
EP14182412.8A EP2854070A1 (en) | 2013-09-27 | 2014-08-27 | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package |
US14/471,721 US20150095653A1 (en) | 2013-09-27 | 2014-08-28 | Method and apparatus of creating application package, method and apparatus of executing application package, and recording medium storing application package |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20130115578A KR20150035249A (ko) | 2013-09-27 | 2013-09-27 | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150035249A true KR20150035249A (ko) | 2015-04-06 |
Family
ID=51485460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20130115578A KR20150035249A (ko) | 2013-09-27 | 2013-09-27 | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20150095653A1 (ko) |
EP (1) | EP2854070A1 (ko) |
KR (1) | KR20150035249A (ko) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170022689A (ko) * | 2015-08-21 | 2017-03-02 | 주식회사 안랩 | 패키지 파일의 전달 단말과 패키지 파일의 수집 서버 및 이들을 이용하여 패키지 파일을 전달하고 수집하는 방법 |
US10205732B2 (en) | 2016-02-11 | 2019-02-12 | Line Corporation | Method, apparatus, system, and non-transitory medium for protecting a file |
KR20200055251A (ko) * | 2018-11-13 | 2020-05-21 | 네이버비즈니스플랫폼 주식회사 | 사용자 개인키를 활용한 어플리케이션 위변조 판단 방법, 동적 토큰을 활용한 어플리케이션 관련 패킷 유효성 인증 방법 및 그 시스템 |
CN111708570A (zh) * | 2020-06-12 | 2020-09-25 | 河北善理软件科技有限公司 | 安全证书的批集成方法、装置、终端 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160261412A1 (en) * | 2015-03-04 | 2016-09-08 | Avaya Inc. | Two-Step Authentication And Activation of Quad Small Form Factor Pluggable (QFSP+) Transceivers |
US10447812B2 (en) | 2015-06-05 | 2019-10-15 | Apple Inc. | On demand resources |
US9613221B1 (en) * | 2015-12-30 | 2017-04-04 | Quixey, Inc. | Signed application cards |
CN106156608B (zh) * | 2016-08-24 | 2020-04-21 | 北京双湃智安科技有限公司 | 一种禁止后台应用自启动方法及装置 |
CN107592202B (zh) * | 2017-09-20 | 2021-08-13 | 阿里巴巴(中国)有限公司 | 应用签名方法、装置、系统、计算设备及存储介质 |
JP7195796B2 (ja) * | 2018-07-23 | 2022-12-26 | キヤノン株式会社 | 情報処理装置、情報処理装置の制御方法、及び、プログラム |
CN110008719B (zh) * | 2019-03-11 | 2021-02-12 | 新华三信息安全技术有限公司 | 一种文件处理、文件检测方法及装置 |
CN109934017A (zh) * | 2019-03-12 | 2019-06-25 | 苏州科达科技股份有限公司 | 校验信息生成和文件完整性校验方法、系统、设备及介质 |
CN111510445B (zh) * | 2020-04-09 | 2022-11-18 | 杭州涂鸦信息技术有限公司 | 一种网络摄像机防盗刷方法、装置、设备、介质 |
WO2023028734A1 (en) * | 2021-08-30 | 2023-03-09 | Qualcomm Incorporated | Functional safety software image integrity verifier |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1834329A2 (en) * | 2005-01-07 | 2007-09-19 | LG Electronics Inc. | Apparatus for reproducing data, method thereof and recording medium |
US8533859B2 (en) * | 2009-04-13 | 2013-09-10 | Aventyn, Inc. | System and method for software protection and secure software distribution |
US8892876B1 (en) * | 2012-04-20 | 2014-11-18 | Trend Micro Incorporated | Secured application package files for mobile computing devices |
KR20140077539A (ko) * | 2012-12-14 | 2014-06-24 | 삼성전자주식회사 | 애플리케이션 프로그램 보호 방법 및 장치 |
KR20140139392A (ko) * | 2013-05-27 | 2014-12-05 | 삼성전자주식회사 | 모바일 장치를 위한 애플리케이션 실행 파일 생성방법, 모바일 장치의 애플리케이션 실행 방법, 애플리케이션 실행 파일 생성 장치 및 모바일 장치 |
CN104537281A (zh) * | 2013-07-17 | 2015-04-22 | 马维尔国际贸易有限公司 | 用于移动应用保护的系统和方法 |
-
2013
- 2013-09-27 KR KR20130115578A patent/KR20150035249A/ko not_active Application Discontinuation
-
2014
- 2014-08-27 EP EP14182412.8A patent/EP2854070A1/en not_active Withdrawn
- 2014-08-28 US US14/471,721 patent/US20150095653A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170022689A (ko) * | 2015-08-21 | 2017-03-02 | 주식회사 안랩 | 패키지 파일의 전달 단말과 패키지 파일의 수집 서버 및 이들을 이용하여 패키지 파일을 전달하고 수집하는 방법 |
US10205732B2 (en) | 2016-02-11 | 2019-02-12 | Line Corporation | Method, apparatus, system, and non-transitory medium for protecting a file |
KR20200055251A (ko) * | 2018-11-13 | 2020-05-21 | 네이버비즈니스플랫폼 주식회사 | 사용자 개인키를 활용한 어플리케이션 위변조 판단 방법, 동적 토큰을 활용한 어플리케이션 관련 패킷 유효성 인증 방법 및 그 시스템 |
CN111708570A (zh) * | 2020-06-12 | 2020-09-25 | 河北善理软件科技有限公司 | 安全证书的批集成方法、装置、终端 |
Also Published As
Publication number | Publication date |
---|---|
US20150095653A1 (en) | 2015-04-02 |
EP2854070A1 (en) | 2015-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150035249A (ko) | 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 | |
JP6888011B2 (ja) | 信頼できる実行環境を有するモバイル装置 | |
KR101471589B1 (ko) | 공통중간언어 기반 프로그램을 위한 보안 제공 방법 | |
US10797868B2 (en) | Shared secret establishment | |
US20170270319A1 (en) | Method and device for providing verifying application integrity | |
US20170262656A1 (en) | Method and device for providing verifying application integrity | |
CN106055936B (zh) | 可执行程序数据包加密/解密方法及装置 | |
CN104426658B (zh) | 对移动终端上的应用进行身份验证的方法及装置 | |
US20130031371A1 (en) | Software Run-Time Provenance | |
CN104866739A (zh) | 安卓系统中应用程序加密方法及系统 | |
CN104932902A (zh) | 一种生成apk文件的方法及终端 | |
EP3126973A1 (en) | Method, apparatus, and computer-readable medium for obfuscating execution of application on virtual machine | |
CN104915591A (zh) | 一种数据处理方法及电子设备 | |
EP2051181A1 (en) | Information terminal, security device, data protection method, and data protection program | |
CA2925733A1 (en) | Encryption and decryption processing method, apparatus, and device | |
JP2017538217A (ja) | アプリケーション整合性の検証を提供する方法及びデバイス | |
CN112764827B (zh) | 一种具有安全验证的Java类热加载方法 | |
JP4664055B2 (ja) | プログラム分割装置、プログラム実行装置、プログラム分割方法及びプログラム実行方法 | |
US20150026483A1 (en) | Systems and Methods for Mobile Application Protection | |
CN112115430A (zh) | 一种apk的加固方法、电子设备及存储介质 | |
CN115964681A (zh) | 目标应用程序的证书文件的生成方法 | |
CN106971105B (zh) | 一种基于iOS的应用程序遭遇假面攻击的防御方法 | |
CN107689934B (zh) | 一种保障信息安全的方法、服务器及客户端 | |
Cho et al. | A strengthened android signature management method | |
CN111522555B (zh) | apk文件的加固方法、解密方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |