KR20160144921A - Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 - Google Patents

Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 Download PDF

Info

Publication number
KR20160144921A
KR20160144921A KR1020160069723A KR20160069723A KR20160144921A KR 20160144921 A KR20160144921 A KR 20160144921A KR 1020160069723 A KR1020160069723 A KR 1020160069723A KR 20160069723 A KR20160069723 A KR 20160069723A KR 20160144921 A KR20160144921 A KR 20160144921A
Authority
KR
South Korea
Prior art keywords
version
module
genuine
software protection
protection scheme
Prior art date
Application number
KR1020160069723A
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 톰슨 라이센싱
Publication of KR20160144921A publication Critical patent/KR20160144921A/ko

Links

Images

Classifications

    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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/101Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities
    • G06F21/1015Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by binding digital rights to specific entities to users
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • 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/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Virology (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 것이 개시된다. 애플리케이션 제공자 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고(S20); 탈옥한 디바이스 상에서 실행되도록 의도된 애플리케이션(330)의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고(S22); 탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)을 획득하고(S24); 탈옥 검출 기능(310), 모듈(320)의 제1 버전 및 모듈(330)의 제2 버전을 포함하고, 인터페이스(113)에 의해 출력되는(S26) 애플리케이션 패키지(300)를 생성한다(S25). 모듈 제공자 디바이스, 애플리케이션 패키지, 및 애플리케이션 패키지를 저장하는 저장 서포트(130)가 또한 제공된다.

Description

IOS 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법{DEVICE AND METHOD FOR PROTECTION OF IOS SOFTWARE MODULES}
본 개시내용은 일반적으로 소프트웨어 보호에 관한 것으로, 특히, iOS상에서 구동될 소프트웨어의 보호에 관한 것이다.
본 섹션은 후술되고 그리고/또는 아래에 주장되는 본 개시내용의 다양한 양태들에 관련될 수 있는 기술분야의 다양한 양태들에 대해 독자를 소개하려는 것이다. 본 개시내용은 본 개시내용의 다양한 양태들의 더 양호한 이해를 촉진하기 위해 독자에게 배경 정보를 제공하는데 있어서 도움이 되는 것으로 여겨진다. 이에 따라, 이들 서술들이 이러한 관점에서 읽혀지고, 종래 기술을 인정하는 것이 아니라는 것으로 이해되어야 한다.
iOS 애플리케이션들은 소스로부터 iOS 애플리케이션들이 설치될 iOS 디바이스까지 암호화된 분포에 의해 분해 공학(reverse engineering)에 대해 보호된다. iOS 디바이스 상에 설치되면, iOS 자체는 프로세스들의 격리 및 권한들의 분리를 사용하여 동적 분석에 대해 애플리케이션들을 보호한다.
그러나, 보호는 탈옥(jailbroken)하지 않은 iOS 디바이스들에만 적용된다. "Hacking and Securing iOS Applications"에서 Jonathan Zdziarski이 설명하는 바와 같이, 탈옥한 디바이스(jailbroken device)로부터 애플리케이션의 코드를 덤프하기 위해 GNU 디버거(gdb)를 사용하는 것이 용이하다. 탈옥한 디바이스는 탈옥하지 않은 디바이스 상에서 이용가능하지 않은 증가된 권한들을 획득하기 위해 변경되었다.
따라서, iOS에 의해 제공된 보호에 의존하는 것은 충분하지 않다. 그러나, iOS가 설명된 애플리케이션들내에서 임의의 코드 변경을 허용하지 않기 때문에, 사용될 수 있는 유일한 소프트웨어 보호 메커니즘들은 무결성 확인 및 제어 흐름 그래프(CFG) 평면화이고, 이들 양자는 일반적으로 함께 사용된다. 이들 소프트웨어 보호 메커니즘들은, iOS에 의해 제공된 암호화가 약하고, 애플리케이션이 정적 분석을 사용하는 분해 공학에 또한 취약하기 때문에 종종 필요하다.
그 후, 다시, CFG 평면화는 동적 공격들이 아닌 정적 공격들에 대해 유일하게 효율적이고, Wurster 등은 "A Generic Attack on Checksumming-Based Software Tamper Resistance"에 설명한 바와 같이, 2개의 코드 섹션들을 병렬로 구동함으로써 무결성 확인을 우회하는 것이 가능하다는 것을 나타내었다.
iOS 애플리케이션들의 보호에 관한 종래의 문제점들 중 적어도 일부를 극복하는 솔루션을 갖는 것이 소망된다는 것이 이해될 것이다. 본 원리들은 이러한 솔루션을 제공한다.
제1 양태에서, 본 원리들은 운영 시스템을 갖고 정품(genuine) 또는 탈옥한 실행 디바이스에 의해 실행되도록 의도된 모듈을 보호하는 애플리케이션 제공자 디바이스에 관한 것이다. 애플리케이션 제공자 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고, 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고, 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 획득하며, 탈옥 검출 기능, 모듈의 제1 버전 및 모듈의 제2 버전을 포함하는 애플리케이션 패키지를 생성하도록 구성된 프로세싱 유닛을 포함한다. 애플리케이션 제공자 디바이스는 애플리케이션 패키지를 출력하도록 구성된 인터페이스를 또한 포함한다.
제1 양태의 다양한 실시예들은 다음을 포함한다:
ㆍ 프로세싱 유닛이 모듈의 제1 버전을 보호하기 위해 제1 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함할 수 있다.
ㆍ 프로세싱 유닛이 모듈의 제2 버전을 보호하기 위해 제2 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제2 소프트웨어 보호 기법은 동적 암호화일 수 있다.
제2 양태에서, 본 원리들은 운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스에 의해 실행되도록 의도된 모듈을 보호하는 방법에 관한 것이다. 애플리케이션 제공자 디바이스에서의 방법은, 프로세싱 유닛이, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전을 획득하는 단계 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 프로세싱 유닛이, 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전을 획득하는 단계 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 프로세싱 유닛이, 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 획득하는 단계; 프로세싱 유닛이, 탈옥 검출 기능, 모듈의 제1 버전 및 모듈의 제2 버전을 포함하는 애플리케이션 패키지를 생성하는 단계; 및 인터페이스가 애플리케이션 패키지를 출력하는 단계를 포함한다.
제2 양태의 다양한 실시예들은 다음을 포함한다:
ㆍ 프로세싱 유닛이 모듈의 제1 버전을 보호하기 위해 제1 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함할 수 있다.
ㆍ 프로세싱 유닛이 모듈의 제2 버전을 보호하기 위해 제2 소프트웨어 보호 기법을 사용하도록 더 구성된다. 제2 소프트웨어 보호 기법은 동적 암호화일 수 있다.
제3 양태에서, 본 원리들은 프로세서에 의해 실행가능한 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램에 관한 것이고, 프로그램 코드는 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 포함한다.
제4 양태에서, 본 원리들은 비일시적 컴퓨터 판독가능 매체상에 저장되고, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈의 제1 버전 - 제1 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -; 탈옥한 디바이스 상에서 실행되도록 의도된 모듈의 제2 버전 - 제2 버전은 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 실행 디바이스가 정품인 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥한 경우에 모듈의 제2 버전을 호출하도록 구성된 탈옥 검출 기능을 포함하는, 컴퓨터 프로그램 제품에 관한 것이다.
제5 양태에서, 본 원리들은 운영 시스템을 갖는 실행 디바이스에 관한 것이고, 실행 디바이스는 정품 실행 디바이스 상에서 실행되도록 의도되고 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현하는 모듈의 제1 버전, 탈옥한 디바이스 상에서 실행되도록 의도되고 정품 디바이스 상에서 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현하는 모듈의 제2 버전, 및 탈옥 기능을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하도록 구성된 탈옥 검출 기능을 저장하는 메모리, 및 실행 디바이스가 정품 또는 탈옥하였는지를 결정하기 위해 탈옥 검출 기능을 실행하고, 실행 디바이스가 정품이라는 것이 결정된 경우에 모듈의 제1 버전을 호출하며, 실행 디바이스가 탈옥하였다는 것이 결정된 경우에 모듈의 제2 버전을 호출하도록 구성된 프로세싱 유닛을 포함한다.
이제, 본 원리들의 바람직한 특징들이 첨부한 도면들을 참조하여 제한하지 않는 예로서 설명될 것이다.
도 1은 본 원리들을 구현하는 시스템(100)을 예시한다.
도 2는 본 원리들에 따른 보호된 모듈을 생성하는 방법을 예시한다.
도 3은 본 원리들에 따른 애플리케이션 패키지를 예시한다.
도면들에 도시된 엘리먼트들이 하드웨어, 소프트웨어, 또는 이들의 조합의 다양한 형태들로 구현될 수 있다는 것이 이해되어야 한다. 바람직하게는, 이들 엘리먼트들은 프로세서, 메모리, 및 입/출력 인터페이스들을 포함할 수 있는 하나 이상의 적절하게 프로그래밍된 범용 디바이스들상에서 하드웨어와 소프트웨어의 조합으로 구현된다. 여기서, 어구 "결합된"은 직접 연결되거나 하나 이상의 중간 컴포넌트를 통해 간접 연결되는 것을 의미하기 위해 정의된다. 이러한 중간 컴포넌트들은 하드웨어 및 소프트웨어 기반 컴포넌트들 양자를 포함할 수 있다.
본 설명은 본 개시내용의 원리들을 예시한다. 따라서, 본 기술분야의 통상의 기술자가 본 명세서에 명확하게 설명되거나 도시되지 않더라도, 본 개시내용의 원리들을 실시하고 그 범주내에 포함되는 다양한 배치형태들을 고안할 수 있다는 것이 이해될 것이다.
본 명세서에서 인용되는 모든 예들 및 조건부 언어는 기술을 발전시키는데 발명자에 의해 기여된 본 개시내용의 원리들 및 개념들을 이해하는데 있어서 독자를 보조하기 위한 교육적인 목적으로 의도되고, 이러한 구체적으로 인용된 예들 및 조건들에 제한되지 않는 것으로 해석되어야 한다.
더욱이, 본 개시내용의 원리들, 양태들 및 실시예들을 인용하는 본 명세서에서 모든 서술들, 뿐만 아니라 그것의 특정한 예들은 그것의 구조적 및 기능적 등가물들 모두를 포함하는 것으로 의도된다. 추가로, 이러한 등가물들이 현재 공지되어 있는 등가물들 뿐만 아니라 장래에 개발될 등가물들, 즉, 구조에 관계없이 동일한 기능을 수행하는 개발되는 임의의 엘리먼트들을 포함한다는 것이 의도된다.
따라서, 예를 들어, 본 명세서에 제공된 블록도들이 본 개시내용의 원리들을 실시하는 예시적인 회로의 개념도들을 나타낸다는 것이 본 기술분야의 통상의 기술자에 의해 이해될 것이다. 유사하게, 임의의 플로우차트들, 흐름도들, 상태 천이도들, 의사코드 등이 컴퓨터 판독가능 매체에서 실질적으로 표현될 수 있어서, 컴퓨터 또는 프로세서가 명시적으로 도시되든 안 되든, 이러한 컴퓨터 또는 프로세서에 의해 실행될 수 있는 다양한 프로세스들을 나타낸다는 것이 이해될 것이다.
도면들에 도시된 다양한 엘리먼트들의 기능들은 전용 하드웨어 뿐만 아니라 적절한 소프트웨어와 관련하여 소프트웨어를 실행할 수 있는 하드웨어의 사용을 통해 제공될 수 있다. 프로세서에 의해 제공될 때, 기능들은 단일의 전용 프로세서에 의해, 단일의 공유 프로세서에 의해, 또는 그 일부가 공유될 수 있는 복수의 개별 프로세서들에 의해 제공될 수 있다. 더욱이, 용어 "프로세서" 또는 "제어기"의 명시적인 사용이 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 지칭하는 것으로 해석되어서는 안 되고, 디지털 신호 프로세서(DSP), 소프트웨어를 저장하기 위한 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 및 비휘발성 스토리지를 제한없이 함축적으로 포함할 수 있다.
종래의 그리고/또는 통상적인 다른 하드웨어가 또한 포함될 수 있다. 유사하게, 도면들에 도시된 임의의 스위치들은 단지 개념적이다. 이들의 기능들은 프로그램 로직의 동작을 통해, 전용 로직을 통해, 프로그램 제어와 전용 로직의 상호작용을 통해, 또는 심지어 수동으로 실행될 수 있고, 특정한 기법이 문맥으로부터 더욱 구체적으로 이해되는 바와 같이 구현자에 의해 선택가능하다.
본 개시내용의 청구항들에서, 특정한 기능을 수행하는 수단으로서 표현된 임의의 엘리먼트는 예를 들어, a) 그 기능을 수행하는 회로 엘리먼트들의 조합 또는 b) 기능을 수행하기 위해 소프트웨어를 실행하는 적절한 회로와 조합된 펌웨어, 마이크로코드 등을 포함하는 임의의 형태의 소프트웨어를 포함하는 그 기능을 수행하는 임의의 방식을 포함하는 것으로 의도된다. 이러한 청구항들에 정의된 바와 같은 본 개시내용은 다양한 인용된 수단들에 의해 제공된 기능들이 청구항들이 요구하는 방식으로 조합되고 종합된다는 사실에 상주한다. 따라서, 이들 기능들을 제공할 수 있는 임의의 수단들이 본 명세서에 나타낸 바와 동등하다는 것이 간주된다.
설명에서, 모듈에 대해 참조가 이루어진다. 이러한 모듈은 실행가능한 코드를 포함하고, 공유 라이브러리, 실행파일(executable) 또는 라이브러리의 일부, 또는 심지어 전체 애플리케이션일 수 있다.
본 원리들의 방법 및 디바이스들은 모듈의 2개의 버전: 탈옥하지 않은 디바이스들(이하, "정품 디바이스들"로 칭함) 상에서 실행될 일 버전, 및 탈옥한 디바이스들상에서 실행될 일 버전을 포함하는 애플리케이션 패키지를 제공한다. 각각의 버전은 동일한 기능을 구현하지만, 상이한 소프트웨어 보호 메커니즘들을 사용하여 보호된다(그러나, 일부 소프트웨어 보호 메커니즘들이 버전들 양자에 의해 공유될 수 있다는 것이 이해될 것이다).
도 1은 본 원리들을 구현하는 시스템(100)을 예시한다. 시스템(100)은 iOS 모듈을 생성하여, iOS 모듈을 실행하도록 구성된 iOS 디바이스(120)에 직접적으로 또는 간접적으로 제공하도록 구성된 애플리케이션 제공자(110)를 포함한다. 애플리케이션 제공자(110)와 iOS 디바이스(120)는 적어도 하나의 하드웨어 프로세싱 유닛("프로세서")(111, 121), 메모리(112, 122), 및 다른 디바이스와 통신하도록 구성된 적어도 하나의 통신 인터페이스(113, 123)를 포함한다. 통상의 기술자는 예시된 디바이스들이 명확화를 이유로 매우 단순화되어 있다는 것을 이해할 것이고; 이와 같이, 내부 연결부들 및 전원들과 같은 특징부들이 예시되지 않는다. 이하 더 설명하는 바와 같이, 비일시적 저장 매체(130)가 iOS 모듈을 저장한다.
도 2는 본 원리들에 따른 보호된 모듈을 생성하는 방법을 예시한다. 단계(S20)에서, 장치 제공자는 정품 디바이스들상에서 실행될 모듈의 버전을 획득하고, 단계(S21)에서, 탈옥한 디바이스들상에서 실행될 모듈의 버전을 획득한다. 각각의 버전은 단지 그 자체를 지칭하고(즉, 다른 버전을 지칭하지 않음), 탈옥한 디바이스 또는 정품 디바이스에 의해 실행되도록 의도되는지에 따라 특정한 소프트웨어 보호 메커니즘들을 사용하여 보호된다.
정품 디바이스들상에서, 사용자 모듈들(즉, 사용자에 의해 다운로딩된 모듈들)은 넌-루트(non-root)로 구동한다. 디버깅 공격들은 디폴트 암호화를 적용하고, 애플리케이션에 대한 격리(샌드박싱(sandboxing)를 프로세싱하며, 넌-루트 애플리케이션들로부터 디버거들의 부착을 금지하는 운영 시스템들에 의해 카운터된다. iOS가 동적 공격들에 대한 보호를 제공하기 때문에, 정품 디바이스들 자체에 대한 버전의 코드에서, 예를 들어, CFG 평면화를 사용하여 정적 분석에 대한 보호를 제공하는 것이 애플리케이션 제공자(110)에 대해 충분할 수 있다. 또한, 무결성 확인이 모듈을 보호하기 위해 사용될 수 있다.
탈옥한 디바이스들 상에서, 디버깅 또는 동적 공격들이 iOS에 의해 방지되지 않지만, 동시에, 탈옥에 의해 작성된 해제된(broken) 샌드박스 격리와 같은 iOS의 변경된 시스템 권한들이 동적 코드 암호화(셀프-변경 코드) 및 안티-디버깅과 같은, 저레벨 소프트웨어 보호 메커니즘들의 사용을 인에이블한다. 이것은 애플리케이션 제공자가 탈옥한 디바이스들에 대한 버전에서 이러한 소프트웨어 보호 메커니즘들을 포함하는 것을 가능하게 한다. 따라서, 탈옥한 디바이스의 버전은 예를 들어, 동적 암호화 및 무결성 확인을 사용하여 동적 공격들에 대해 보호될 수 있다.
단계(S22)에서, 애플리케이션 제공자(110)는 정품 디바이스들에 대한 보호된 버전을 획득하기 위해 정품 iOS에 의해 허용된 적어도 하나의 소프트웨어 보호 기법을 정품 디바이스들에 대한 버전에 적용하고, 단계(S23)에서, 애플리케이션 제공자(110)는 탈옥한 디바이스들에 대한 보호된 버전을 획득하기 위해 탈옥한 iOS에 특정된(즉, 탈옥한 iOS에 의해 허용되지만 정품 iOS에 의해서는 허용되지 않는) 적어도 하나의 소프트웨어 보호 기법을 탈옥한 디바이스들에 적용한다. 단계들(S20 및 S21)에서 획득된 버전들이 획득될 때의 이들의 소프트웨어 보호 방법들을 사용하여 이미 보호되는 것이 또한 가능하다.
그 후, 애플리케이션 제공자(110)는 단계(S24)에서, 탈옥 검출 기능을 생성한다. 탈옥 검출 기능은 탈옥 검출 기능이 실행되는 디바이스가 정품 디바이스 또는 탈옥한 디바이스인지를 결정할 수 있다. 포킹(forking)이 정품 디바이스들에 대해 허용되지 않기 때문에, 탈옥 검출 기능은 성공적으로 포크되었는지를 확인하기 위해 예를 들어, fork()를 사용할 수 있고 리턴된 프로세스 id를 확인할 수 있고, 이 경우에, 디바이스가 탈옥하였다는 것이 결정될 수 있다. 유사하게, 널 인수를 갖는 system()을 호출하는 것은 탈옥한 디바이스에 대해 1을 리턴하고, 정품 디바이스에 대해 0을 리턴하며, 이는 또한 탈옥의 결정을 인에이블할 수 있다. 다른 탈옥 검출 기능들이 Zdziarski에 의한 "Hacking and Securing iOS Applications"에 설명되어 있다. 탈옥 검출 기능이 탈옥을 검출하는 복수의 상이한 방법들을 사용하는 것이 바람직하다.
검출이 이러한 버전의 실행 동안 또한 수행되도록 탈옥 검출 기능이 정품 디바이스들에 대한 버전의 코드에 또한 삽입되는 것이 바람직하다. 정품 버전 내부의 탈옥 검출 기능들이 무결성 확인에 의해 바람직하게 보호되고, 실행 디바이스가 탈옥한다는 것이 결정되는 경우에 실행 흐름을 변경하도록 구성된다. 정품 버전으로의 탈옥 검출 기능들의 삽입은 정품 버전을 보호하는 시점에 또는 그 이전에 수행될 수 있다.
그 후, 애플리케이션 제공자(110)는 단계(S25)에서, 탈옥 검출 기능, 정품 디바이스들상에서 사용을 위한 버전, 및 탈옥한 디바이스 상에서 사용을 위한 버전을 포함하는 애플리케이션 패키지를 생성하고, 여기서, 탈옥 검출 기능은 실행 디바이스의 탈옥 상태 - 즉, 정품 또는 탈옥함 - 에 따라 적절한 버전을 호출한다. 단계(S26)에서, 애플리케이션 제공자(110)는 iOS 디바이스(120) 또는 중간저장소(store)(미도시)에 애플리케이션 패키지를 직접적으로 출력한다.
도 3은 실행 디바이스의 탈옥 상태를 결정한 후, 애플리케이션의 정품 버전(320) 또는 탈옥한 버전(330)을 호출하도록 구성된 탈옥 검출 기능(310)을 포함하는 본 원리들에 따라 애플리케이션 패키지(300)를 예시한다. 정품 버전의 코드는 설명한 바와 같이, 복수의 탈옥 검출 기능들(325)을 포함한다.
도 3에서, 애플리케이션 패키지(300)는 3개의 모듈들: 탈옥 검출 기능(310) 및 모듈의 2개의 버전들(320, 330)을 갖는 것으로 도시되어 있다. 3개의 모듈들이 어느 버전을 실행할지 결정하는 탈옥 검출 기능(310)에 실행 동안 도달하는 단일 애플리케이션의 일부일 수 있다는 것이 이해될 것이다.
변형으로, 애플리케이션 패키지는 3개의 애플리케이션을 포함하고, 여기서, 각각의 애플리케이션은 탈옥 검출 기능과 2개의 버전 중 하나를 포함한다. 탈옥 검출 기능을 포함하는 애플리케이션은 실행될 제1 애플리케이션이고, 디바이스가 탈옥하였는지 여부의 결정의 결과에 따라 다른 2개의 애플리케이션 중 하나를 호출한다.
따라서, 본 원리들이 적어도 특정한 경우들에서, 종래의 보호 방법들을 개선시킬 수 있는 iOS 소프트웨어 모듈들의 소프트웨어 보호를 위한 솔루션을 제공한다는 것이 이해될 것이다. 특히, 실시예에 따라, 본 원리들은 동일한 애플리케이션 패키지를 정품 디바이스들 및 탈옥한 디바이스들에 분포시키는 것을 가능하게 할 수 있다.
본 원리들은 이것이 본 원리가 가장 관심이 있는 사용을 제공할 수 있다고 여겨지기 때문에 iOS와의 사용에 대해 설명되었다. 그러나, 본 원리들은 특히, 메모리 페이지들에서 쓰기 권한을 제한하는 경우에, 안드로이드와 같은 다른 (보안) 운영 시스템들을 위해 사용될 수 있다는 것이 이해될 것이다.
설명 및 (적절하게는) 청구범위와 도면들에 개시된 각각의 특징들은 독립적으로 또는 임의의 적절한 조합으로 제공될 수 있다. 하드웨어에서 구현되는 것으로 설명된 특징들은 소프트웨어에서 또한 구현될 수 있고, 이 반대의 경우도 가능하다. 청구항들에서 나타나는 참조부호들은 단지 예시이며, 청구항들의 범위를 제한하는 효과를 갖지 않는다.

Claims (13)

  1. 운영 시스템을 갖고 정품(genuine) 또는 탈옥한(jailbroken) 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 애플리케이션 제공자 디바이스(110)로서, 상기 애플리케이션 제공자 디바이스는,
    정품 실행 디바이스 상에서 실행되도록 의도된 상기 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 - 을 획득하고;
    탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 - 을 획득하고;
    상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(jailbreak detection function)(310)을 획득하며;
    상기 탈옥 검출 기능(310), 상기 모듈(320)의 상기 제1 버전, 및 상기 모듈(330)의 상기 제2 버전을 포함하는 애플리케이션 패키지(300)를 생성하도록 구성된
    프로세싱 유닛(111); 및
    상기 애플리케이션 패키지를 출력하도록 구성된 인터페이스(113)
    를 포함하는, 애플리케이션 제공자 디바이스(110).
  2. 제1항에 있어서, 상기 프로세싱 유닛(111)은 상기 모듈(320)의 상기 제1 버전을 보호하기 위해 상기 제1 소프트웨어 보호 기법을 사용하도록 더 구성되는, 애플리케이션 제공자 디바이스(110).
  3. 제2항에 있어서, 상기 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화(flattening) 및 상기 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함하는, 애플리케이션 제공자 디바이스(110).
  4. 제1항에 있어서, 상기 프로세싱 유닛(111)은 상기 모듈(320)의 상기 제2 버전을 보호하기 위해 상기 제2 소프트웨어 보호 기법을 사용하도록 더 구성되는, 애플리케이션 제공자 디바이스(110).
  5. 제4항에 있어서, 상기 제2 소프트웨어 보호 기법은 동적 암호화(dynamic ciphering)인, 애플리케이션 제공자 디바이스(110).
  6. 운영 시스템을 갖고 정품 또는 탈옥한 실행 디바이스(120)에 의해 실행되도록 의도된 모듈을 보호하는 방법으로서, 상기 방법은 애플리케이션 제공자 디바이스에서:
    프로세싱 유닛(111)이, 정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전을 획득하는 단계(S20) - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
    상기 프로세싱 유닛(111)이, 탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전을 획득하는 단계(S22) - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -;
    상기 프로세싱 유닛(111)이, 상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)을 획득하는 단계(S24);
    상기 프로세싱 유닛(111)이, 상기 탈옥 검출 기능(310), 상기 모듈(320)의 상기 제1 버전, 및 상기 모듈(330)의 상기 제2 버전을 포함하는 애플리케이션 패키지(300)를 생성하는 단계(S25); 및
    인터페이스(113)가, 상기 애플리케이션 패키지를 출력하는 단계(S26)
    를 포함하는, 방법.
  7. 제6항에 있어서, 상기 프로세싱 유닛(111)이, 상기 모듈(320)의 상기 제1 버전을 보호하기 위해 상기 제1 소프트웨어 보호 기법을 사용하는 단계(S21)를 더 포함하는, 방법.
  8. 제7항에 있어서, 상기 제1 소프트웨어 보호 기법은 제어 흐름 그래프 평면화 및 상기 실행 디바이스가 정품이라는 검증 중 적어도 하나를 포함하는, 방법.
  9. 제6항에 있어서, 상기 프로세싱 유닛(111)이, 상기 모듈(320)의 상기 제2 버전을 보호하기 위해 상기 제2 소프트웨어 보호 기법을 사용하는 단계(S23)를 더 포함하는, 방법.
  10. 제9항에 있어서, 상기 제2 소프트웨어 보호 기법은 동적 암호화인, 방법.
  11. 프로세서에 의해 실행가능한 프로그램 코드 명령어들을 포함하는 컴퓨터 프로그램으로서, 상기 프로그램 코드는:
    정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
    탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및
    탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)
    을 포함하는, 컴퓨터 프로그램.
  12. 비일시적 컴퓨터 판독가능 매체상에 저장되는 컴퓨터 프로그램 제품으로서,
    정품 실행 디바이스 상에서 실행되도록 의도된 모듈(320)의 제1 버전 - 상기 제1 버전은 상기 정품 디바이스 상에서 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현함 -;
    탈옥한 디바이스 상에서 실행되도록 의도된 상기 모듈(330)의 제2 버전 - 상기 제2 버전은 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현함 -; 및
    탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하고, 상기 실행 디바이스가 정품인 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥한 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된 탈옥 검출 기능(310)
    을 포함하는, 컴퓨터 프로그램 제품.
  13. 운영 시스템을 갖는 실행 디바이스(120)로서,
    정품 실행 디바이스 상에서 실행되도록 의도되고 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용된 제1 소프트웨어 보호 기법을 구현하는 모듈(320)의 제1 버전, 탈옥한 디바이스 상에서 실행되도록 의도되고 상기 정품 디바이스 상에서 상기 운영 시스템에 의해 허용되지 않은 제2 소프트웨어 보호 기법을 구현하는 상기 모듈(330)의 제2 버전, 및 탈옥 기능(310)을 실행하는 디바이스가 정품 또는 탈옥하였는지를 결정하도록 구성된 탈옥 검출 기능(310)을 저장하는 메모리(122); 및
    상기 실행 디바이스가 정품 또는 탈옥하였는지를 결정하기 위해 상기 탈옥 검출 기능(310)을 실행하며;
    상기 실행 디바이스가 정품이라는 것이 결정된 경우에 상기 모듈의 상기 제1 버전을 호출하고, 상기 실행 디바이스가 탈옥하였다는 것이 결정된 경우에 상기 모듈의 상기 제2 버전을 호출하도록 구성된
    프로세싱 유닛(121)
    을 포함하는, 실행 디바이스(120).
KR1020160069723A 2015-06-09 2016-06-03 Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법 KR20160144921A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP15305876.3 2015-06-09
EP15305876.3A EP3104291A1 (en) 2015-06-09 2015-06-09 Device and method for protection of ios software modules

Publications (1)

Publication Number Publication Date
KR20160144921A true KR20160144921A (ko) 2016-12-19

Family

ID=53442696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160069723A KR20160144921A (ko) 2015-06-09 2016-06-03 Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법

Country Status (7)

Country Link
US (1) US20160364569A1 (ko)
EP (2) EP3104291A1 (ko)
JP (1) JP2017004528A (ko)
KR (1) KR20160144921A (ko)
CN (1) CN106250728A (ko)
ES (1) ES2668991T3 (ko)
PL (1) PL3104292T3 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021311A (ko) 2020-08-13 2022-02-22 주식회사 안랩 응용프로그램인터페이스 보호 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107133169B (zh) * 2017-04-26 2021-03-23 腾讯科技(深圳)有限公司 应用测试包生成方法及生成装置
JP6381837B1 (ja) 2018-01-17 2018-08-29 株式会社Cygames 通信を行うためのシステム、プログラム、方法及びサーバ
CN108334775B (zh) * 2018-01-23 2022-09-23 创新先进技术有限公司 一种越狱插件检测方法及装置
CN112784264B (zh) * 2021-01-18 2024-04-02 北京洛塔信息技术有限公司 越狱状态检测方法、装置、设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9881151B2 (en) * 2011-08-31 2018-01-30 Lenovo (Singapore) Pte. Ltd. Providing selective system privileges on an information handling device
US9787681B2 (en) * 2012-01-06 2017-10-10 Optio Labs, Inc. Systems and methods for enforcing access control policies on privileged accesses for mobile devices
US8826169B1 (en) * 2012-06-04 2014-09-02 Amazon Technologies, Inc. Hiding content of a digital content item
US9619653B2 (en) * 2012-07-31 2017-04-11 Adobe Systems Incorporated System and method for detecting a security compromise on a device
US8862892B2 (en) * 2012-07-31 2014-10-14 Adobe Systems Incorporated System and method for detecting a security compromise on a device
US20140173733A1 (en) * 2012-12-17 2014-06-19 Fixmo, Inc. Exploit detection and reporting of a device using server chaining
EP3005209B1 (en) * 2013-05-30 2021-02-17 JScrambler S.A. Web application protection
US9910724B2 (en) * 2013-09-13 2018-03-06 Airwatch Llc Fast and accurate identification of message-based API calls in application binaries
CN103561176B (zh) * 2013-11-07 2015-08-19 腾讯科技(深圳)有限公司 一种终端设备的通话记录获取方法、装置及终端设备
EP2913773A1 (en) * 2014-02-27 2015-09-02 Thomson Licensing Run-time Continuous Address Space Layout Randomization of flattened Control Flow Graph
US9516491B2 (en) * 2015-02-27 2016-12-06 T-Mobile Usa, Inc. Remote device modification

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220021311A (ko) 2020-08-13 2022-02-22 주식회사 안랩 응용프로그램인터페이스 보호 방법

Also Published As

Publication number Publication date
PL3104292T3 (pl) 2018-08-31
ES2668991T3 (es) 2018-05-23
EP3104292B1 (en) 2018-04-18
EP3104292A1 (en) 2016-12-14
EP3104291A1 (en) 2016-12-14
CN106250728A (zh) 2016-12-21
US20160364569A1 (en) 2016-12-15
JP2017004528A (ja) 2017-01-05

Similar Documents

Publication Publication Date Title
KR20160144921A (ko) Ios 소프트웨어 모듈들의 보호를 위한 디바이스 및 방법
US9280644B2 (en) Methods for restricting resources used by a program based on entitlements
US10445396B2 (en) Device, method, and graphical user interface for extending functionality of a host application to another application
CA3023939C (en) Method and apparatus for dynamic executable verification
CN107077562B (zh) 用于动态控制代码执行的计算机实现的方法和系统
US20110321016A1 (en) Injection context based static analysis of computer software applications
US10013553B2 (en) Protecting software application
US20170024230A1 (en) Method, apparatus, and computer-readable medium for ofuscating execution of an application on a virtual machine
CN105930694B (zh) 用于模糊虚拟机的灵活指令集
CN107430650B (zh) 保护计算机程序以抵御逆向工程
Zhang et al. IntPatch: Automatically fix integer-overflow-to-buffer-overflow vulnerability at compile-time
KR20130093710A (ko) 암 코어 기반의 프로세서를 위한 외부 공격 방어 장치 및 이를 이용한 방법
GB2527323A (en) Runtime protection of web services
US20160171213A1 (en) Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer
US10120987B2 (en) Device and method for executing protected iOS software modules
Fleischer et al. Memory corruption attacks within Android TEEs: a case study based on OP-TEE
CN104537281A (zh) 用于移动应用保护的系统和方法
KR20180015723A (ko) 보안 구역과 하위 보안 구역 사이의 전이를 위한 장치 및 방법
KR101628101B1 (ko) 시그니처 탐지를 위한 침입 차단 시스템 장비
KR20180093529A (ko) 바이트코드와 네이티브코드 간의 상호 의존성에 기반한 어플리케이션 위변조 방지 방법 및 장치
JP2007041777A (ja) 言語処理方法
CN115982672A (zh) 越狱检测应用程序生成方法、检测方法、设备及存储介质
CN111240699A (zh) 软件产品处理方法和装置、源码解释器
CN116028945A (zh) 防止执行注入的恶意代码的保护