KR20150035249A - 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 - Google Patents

어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 Download PDF

Info

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
Application number
KR20130115578A
Other languages
English (en)
Inventor
심우철
김봉선
Original Assignee
삼성전자주식회사
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR20130115578A priority Critical patent/KR20150035249A/ko
Priority to EP14182412.8A priority patent/EP2854070A1/en
Priority to US14/471,721 priority patent/US20150095653A1/en
Publication of KR20150035249A publication Critical patent/KR20150035249A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3242Cryptographic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/54Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3263Cryptographic 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

어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치{RECORDING MEDIUM STORING APPLICATION PACKAGE, METHOD AND APPARATUS OF CREATING APPLICATION PACKAGE, METHOD AND APPARATUS OF EXECUTING APPLICATION PACKAGE}
본 발명의 실시예는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치에 관한 것으로서, 보다 상세하게는 어플리케이션 패키지의 변조를 방지하고 어플리케이션 패키지의 보안성을 향상시킬 수 있는 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치에 관한 것이다.
통신 기술이 발전되고 전자 장치가 소형화됨에 따라 개인용 단말기가 일반 소비자에게 널리 보급되고 있다. 특히 최근에는 스마트폰 또는 스마트패드와 같은 개인용 휴대 단말기가 널리 보급되고 있다. 또한, 스마트폰 또는 스마트패드 위에서 작동하는 운영체제로서 안드로이드 운영체제가 많이 사용되고 있다.
이러한 환경이 갖추어짐에 따라 개인용 단말기의 플랫폼 위에서 실행될 수 있는 다양한 종류의 어플리케이션이 개발되고 있다. 예를 들어, 안드로이드 플랫폼 위에서 실행될 수 있는 다양한 종류의 안드로이드 어플리케이션이 개발되고 있다.
안드로이드 어플리케이션 시장은 점점 규모가 커지고 있다. 이에 따라 안드로이드 플랫폼이 적용된 휴대 단말기뿐만 아니라 안드로이드 플랫폼이 적용된 거치형 단말기도 소개되고 있다.
안드로이드 어플리케이션은 어플리케이션 패키지의 형태로 제작되고 배포될 수 있다. 어플리케이션 패키지는 적어도 하나 이상의 구성요소를 포함할 수 있다. 어플리케이션 패키지는 인증서(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은 본 발명의 실시예에 따른 어플리케이션 패키지 실행 장치의 구성을 나타내는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제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: 검증부

Claims (20)

  1. 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 저장하는 기록 매체에 있어서,
    상기 어플리케이션 패키지는,
    프로그램 코드가 컴파일됨으로써 생성된 실행 파일;
    상기 파일의 해시값을 포함하는 매니페스트 파일;
    상기 매니페스트 파일의 해시값을 포함하는 다이제스트 정보 파일;
    개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 해시값을 포함하는 인증서 파일;
    상기 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보; 및
    상기 실행 파일이 실행되는 데에 필요한 API(Application Programming Interface)를 포함하는 네이티브 라이브러리
    를 포함하는 어플리케이션 패키지를 저장하는 기록 매체.
  2. 제1항에 있어서,
    상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
    상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화된 어플리케이션 패키지를 저장하는 기록 매체.
  3. 제2항에 있어서,
    상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 목록에 포함된 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함하는 어플리케이션 패키지를 저장하는 기록 매체.
  4. 제1항에 있어서,
    상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함하는 어플리케이션 패키지를 저장하는 기록 매체.
  5. 제4항에 있어서,
    상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함하는 어플리케이션 패키지를 저장하는 기록 매체.
  6. 제1항에 있어서,
    상기 네이티브 라이브러리는, 상기 API가 상기 실행 파일에 의해 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 포함하는 어플리케이션 패키지를 저장하는 기록 매체.
  7. 적어도 하나 이상의 파일, 네이티브 라이브러리 및 개인키를 이용하여 전자 서명된 인증서 파일을 포함하는 어플리케이션 패키지를 준비하는 단계;
    상기 네이티브 라이브러리에, 상기 네이티브 라이브러리가 호출되었을 때 상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 로직을 삽입하는 단계;
    암호화키를 생성하고, 상기 암호화키에 대응하는 암호화키 정보를 상기 네이티브 라이브러리에 삽입하는 단계;
    상기 개인키에 대응하는 공개키를 포함하는 보안 정보를 생성하는 단계;
    상기 암호화키를 이용하여 상기 보안 정보를 암호화하는 단계; 및
    상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계
    를 포함하는 어플리케이션 패키지 생성 방법.
  8. 제7항에 있어서,
    상기 로직을 삽입하는 단계는,
    상기 어플리케이션 패키지에 포함된 상기 네이티브 라이브러리를 상기 로직이 삽입된 다른 네이티브 라이브러리로 대체하는 단계
    를 포함하는 어플리케이션 패키지 생성 방법.
  9. 제7항에 있어서,
    상기 암호화키 정보는 상기 암호화키로부터 변환된 정보 또는 상기 암호화키를 이용하여 생성된 정보를 포함하는 어플리케이션 패키지 생성 방법.
  10. 제7항에 있어서,
    상기 보안 정보를 생성하는 단계는,
    상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록 및 상기 공개키를 포함하는 상기 보안 정보를 생성하는 단계
    를 포함하는 어플리케이션 패키지 생성 방법.
  11. 제7항에 있어서,
    상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 삽입하는 단계는,
    상기 암호화된 보안 정보를 상기 어플리케이션 패키지에 추가하는 단계; 및
    상기 어플리케이션 패키지를 리패키징(repackaging)하는 단계
    를 포함하는 어플리케이션 패키지 생성 방법.
  12. 실행 파일, 네이티브 라이브러리 및 적어도 하나 이상의 파일을 포함하는 어플리케이션 패키지를 실행하는 어플리케이션 패키지 실행 방법에 있어서,
    상기 실행 파일을 실행하는 단계;
    상기 네이티브 라이브러리를 호출하는 단계; 및
    상기 파일 중에서 적어도 하나 이상의 파일의 무결성을 검증하는 단계
    를 포함하는 어플리케이션 패키지 실행 방법.
  13. 제12항에 있어서,
    상기 어플리케이션 패키지는,
    상기 파일의 제1해시값을 포함하는 매니페스트 파일;
    상기 매니페스트 파일의 제2해시값을 포함하는 다이제스트 정보 파일;
    개인키를 이용하여 전자 서명된 상기 다이제스트 정보 파일의 제3해시값을 포함하는 인증서 파일; 및
    상기 개인키에 대응하는 공개키를 포함하고, 암호화키를 이용하여 암호화된 보안 정보
    를 더 포함하고,
    상기 네이티브 라이브러리는 상기 암호화키에 대응하는 암호화키 정보를 포함하는 어플리케이션 패키지 실행 방법.
  14. 제13항에 있어서,
    상기 무결성을 검증하는 단계는,
    상기 암호화키 정보를 이용하여 상기 암호화키를 획득하는 단계;
    상기 획득된 암호화키를 이용하여 상기 암호화된 보안 정보를 복호화하는 단계;
    상기 복호화된 보안 정보에 포함된 상기 공개키를 이용하여 상기 제3해시값을 복호화하는 단계; 및
    상기 다이제스트 정보 파일을 이용하여 제4해시값을 생성하고, 상기 제4해시값과 상기 복호화된 제3해시값을 비교하는 단계
    를 포함하는 어플리케이션 패키지 실행 방법.
  15. 제14항에 있어서,
    상기 무결성을 검증하는 단계는,
    상기 매니페스트 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제2해시값을 비교하는 단계
    를 더 포함하는 어플리케이션 패키지 실행 방법.
  16. 제14항에 있어서,
    상기 무결성을 검증하는 단계는,
    상기 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계
    를 더 포함하는 어플리케이션 패키지 실행 방법.
  17. 제14항에 있어서,
    상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
    상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고,
    상기 무결성을 검증하는 단계는,
    상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 제5해시값을 생성하고, 상기 제5해시값과 상기 제1해시값을 비교하는 단계
    를 더 포함하는 어플리케이션 패키지 실행 방법.
  18. 제17항에 있어서,
    상기 무결성을 검증하는 단계는,
    상기 제5해시값을 저장하는 단계
    를 더 포함하는 어플리케이션 패키지 실행 방법.
  19. 제13항에 있어서,
    상기 무결성을 검증하는 단계는,
    이전에 상기 파일의 무결성의 검증을 수행한 결과로서 상기 파일의 저장된 해시값이 존재하는지 여부를 확인하는 단계;
    만약 상기 저장된 해시값이 존재하는 경우, 상기 파일을 이용하여 해시값을 생성하는 단계; 및
    상기 생성된 해시값과 상기 저장된 해시값을 비교하는 단계
    를 포함하는 어플리케이션 패키지 실행 방법.
  20. 제19항에 있어서,
    상기 보안 정보는, 상기 파일 중에서 상기 네이티브 라이브러리가 호출되었을 때 무결성이 검증될 대상 파일의 목록을 더 포함하고,
    상기 보안 정보에 포함된 상기 공개키 및 상기 목록은 상기 암호화키를 이용하여 암호화되고,
    상기 해시값을 생성하는 단계는,
    상기 파일 중에서 상기 목록에 포함된 파일을 이용하여 상기 해시값을 생성하는 단계
    를 포함하는 어플리케이션 패키지 실행 방법.
KR20130115578A 2013-09-27 2013-09-27 어플리케이션 패키지를 저장하는 기록 매체, 어플리케이션 패키지 생성 방법 및 장치, 어플리케이션 패키지 실행 방법 및 장치 KR20150035249A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 马维尔国际贸易有限公司 用于移动应用保护的系统和方法

Cited By (4)

* Cited by examiner, † Cited by third party
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