KR102663589B1 - 서버 및 서버의 제어 방법 - Google Patents

서버 및 서버의 제어 방법 Download PDF

Info

Publication number
KR102663589B1
KR102663589B1 KR1020180129323A KR20180129323A KR102663589B1 KR 102663589 B1 KR102663589 B1 KR 102663589B1 KR 1020180129323 A KR1020180129323 A KR 1020180129323A KR 20180129323 A KR20180129323 A KR 20180129323A KR 102663589 B1 KR102663589 B1 KR 102663589B1
Authority
KR
South Korea
Prior art keywords
obfuscation
software
server
application
electronic device
Prior art date
Application number
KR1020180129323A
Other languages
English (en)
Other versions
KR20200047187A (ko
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 KR1020180129323A priority Critical patent/KR102663589B1/ko
Priority to PCT/KR2019/009322 priority patent/WO2020085623A1/ko
Publication of KR20200047187A publication Critical patent/KR20200047187A/ko
Application granted granted Critical
Publication of KR102663589B1 publication Critical patent/KR102663589B1/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/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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2125Just-in-time application of countermeasures, e.g., on-the-fly decryption, just-in-time obfuscation or de-obfuscation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

서버의 제어 방법이 개시된다. 본 제어 방법은, 전자 장치로부터 소프트웨어를 수신하는 단계, 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하는 단계, 벤치마크 포인트가 삽입된 소프트웨어를 전자 장치로 전송하는 단계, 전자 장치로부터 소프트웨어의 기설정된 부분이 실행된 실행 프로파일 정보를 수신하는 단계 및 실행 프로파일 정보에 기초하여 소프트웨어에 대한 난독화(obfuscation)를 수행하는 단계를 포함한다.

Description

서버 및 서버의 제어 방법{SERVER AND CONTROLLING METHOD THEREOF}
본 개시는 서버 및 서버의 제어 방법에 관한 것으로, 보다 구체적으로는, 소프트웨어에 대한 난독화를 수행하는 서버 및 서버의 제어 방법에 관한 것이다.
개발 및 배포가 완료된 소프트웨어라도 역공학(Reverse Engineering) 방법을 통해 얼마든지 사람이 이해할 수 있는 언어로 변환할 수 있다. 따라서, 역공학을 통해 소프트웨어의 무단 복제나 중요 데이터(예를 들어, Key, DRM Contents) 유출 등의 피해가 발생할 수 있다.
이러한 피해를 막기 위해, 난독화(Obfuscation)가 이용될 수 있다. 난독화는 해커 등의 공격자가 소프트웨어의 내부 구조를 분석하기 어렵게 만들거나 프로그램 코드를 읽기 어렵게 만들어 역공학을 통한 공격을 막는 기술을 의미한다.
난독화에는 각종 기법들이 있는데, 다양한 기법을 중첩해서 적용할수록 공격자의 분석이 어려워지고 보안 강도는 높아지지만, 프로그램의 성능 오버헤드도 함께 높아져 사용성이 떨어지게 된다.
따라서, 소프트웨어의 사용성을 높이면서도 공격자의 분석을 어렵게 할 수 있는 적절한 트레이드 오프가 난독화 방법에 요구된다.
이를 위해, 종래에는 소프트웨어 개발자나 난독화 업체의 엔지니어가 수동으로 적절하게 소프트웨어에 대한 난독화를 수행하였다. 그러나, 이 경우, 적절히 트레이드 오프된 하나의 난독화 방법이 사용자에게 배포되는 해당 소프트웨어 모두에 동일하게 적용되므로, 공격자가 한번만 공격에 성공하면 배포된 모든 해당 소프트웨어에 대한 난독화가 무력화될 수 있어 문제가 된다.
본 개시는 상술한 문제점에 따른 것으로, 본 개시의 목적은, 소프트웨어에 대한 사용자의 사용성을 높이면서도 공격자의 분석을 어렵게 할 수 있는 난독화 방법을 제공함에 있다.
본 개시의 다른 목적은, 소프트웨어에 대한 난독화를 자동으로 적절하게 수행할 수 있는 서버 및 서버의 제어 방법을 제공함에 있다.
본 개시의 또 다른 목적은, 하나의 공격 방법으로 소프트웨어에 대한 난독화가 무력화되는 것을 막을 수 있는 난독화 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따른 서버의 제어 방법은, 서버의 제어 방법은, 전자 장치로부터 소프트웨어를 수신하는 단계, 상기 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하는 단계, 상기 벤치마크 포인트가 삽입된 소프트웨어를 상기 전자 장치로 전송하는 단계, 상기 전자 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하는 단계 및 상기 실행 프로파일 정보에 기초하여 상기 소프트웨어 대한 난독화(obfuscation)를 수행하는 단계를 포함한다.
또한, 상기 삽입하는 단계는, 상기 소프트웨어를 구성하는 프로그램 블록의 입구(entry) 및 출구(exit)에 상기 벤치마크 포인트를 삽입하는 단계를 포함할 수 있다.
또한, 상기 실행 프로파일 정보는, 상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 소프트웨어를 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 기간에 관한 정보를 포함할 수 있다.
또한, 상기 난독화를 수행하는 단계는, 상기 실행 프로파일 정보에 기초하여 상기 소프트웨어를 구성하는 프로그램 블록의 난독화 레벨을 판단하는 단계;를 포함하고, 상기 판단된 난독화 레벨에 기초하여 상기 프로그램 블록에 대한 난독화를 수행할 수 있다.
또한, 상기 난독화 레벨을 판단하는 단계는, 상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 프로그램 블록이 실행된 횟수가 적을수록 또는 실행된 기간이 짧을수록 상기 프로그램 블록의 난독화 레벨을 높게 판단할 수 있다.
또한, 상기 난독화를 수행하는 단계는, 상기 난독화 레벨에 따라 복수의 난독화 기법 중 상기 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하거나 또는 상기 난독화 레벨에 따라 상기 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 상기 난독화를 수행할 수 있다.
또한, 상기 복수의 난독화 기법은, 데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함할 수 있다.
또한, 상기 전자 장치의 사용자에 의해 지정된 상기 소프트웨어의 난독화 레벨에 관한 정보를 상기 전자 장치로부터 수신하는 단계를 더 포함하고, 상기 난독화를 수행하는 단계는, 상기 실행 프로파일 정보 및 상기 수신된 난독화 레벨에 관한 정보에 기초하여 상기 난독화를 수행할 수 있다.
또한, 상기 난독화를 수행하는 단계는, 상기 벤치마크 포인트가 삽입된 소프트웨어에 대해 난독화를 수행할 수 있다.
또한, 상기 난독화된 소프트웨어를 상기 전자 장치로 전송하는 단계, 상기 전자 장치가 배포 서버로 업로드한 상기 난독화된 소프트웨어가 사용자 단말 장치로 다운로드되어 실행되면, 상기 사용자 단말 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하는 단계, 상기 사용자 단말 장치로부터 수신된 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 재 수행하는 단계 및 상기 난독화가 재 수행된 소프트웨어를 상기 사용자 단말 장치로 전송하는 단계를 더 포함할 수 있다.
한편, 본 개시의 일 실시 예에 따른 서버는, 통신부 및 전자 장치로부터 소프트웨어가 수신되면, 상기 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하고, 상기 벤치마크 포인트가 삽입된 소프트웨어를 상기 전자 장치로 전송하도록 상기 통신부를 제어하며, 상기 전자 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보가 수신되면, 상기 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 수행하는 프로세서를 포함한다.
또한, 상기 프로세서는, 상기 소프트웨어를 구성하는 프로그램 블록의 입구(entry) 및 출구(exit)에 상기 벤치마크 포인트를 삽입할 수 있다.
또한, 상기 실행 프로파일 정보는, 상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 소프트웨어를 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 기간에 관한 정보를 포함할 수 있다.
또한, 상기 프로세서는, 상기 실행 프로파일 정보에 기초하여 상기 소프트웨어를 구성하는 프로그램 블록의 난독화 레벨을 판단하고, 상기 판단된 난독화 레벨에 기초하여 상기 프로그램 블록에 대한 난독화를 수행할 수 있다.
또한, 상기 프로세서는, 상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 프로그램 블록이 실행된 횟수가 적을수록 또는 실행된 시간이 짧을수록 상기 프로그램 블록의 난독화 레벨을 높게 판단할 수 있다.
또한, 상기 프로세서는, 상기 난독화 레벨에 따라 복수의 난독화 기법 중 상기 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하거나 또는 상기 난독화 레벨에 따라 상기 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 상기 난독화를 수행할 수 있다.
또한, 상기 복수의 난독화 기법은, 데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함할 수 있다.
또한, 상기 프로세서는, 상기 전자 장치의 사용자에 의해 지정된 상기 소프트웨어의 난독화 레벨에 관한 정보가 상기 전자 장치로부터 수신되면, 상기 실행 프로파일 정보 및 상기 수신된 난독화 레벨에 관한 정보에 기초하여 상기 난독화를 수행할 수 있다.
또한, 상기 프로세서는, 상기 벤치마크 포인트가 삽입된 소프트웨어에 대해 난독화를 수행할 수 있다.
또한, 상기 프로세서는, 상기 난독화된 소프트웨어를 상기 전자 장치로 전송하도록 상기 통신부를 제어하고, 상기 전자 장치가 배포 서버로 업로드한 상기 난독화된 소프트웨어가 사용자 단말 장치로 다운로드되어 실행되면, 상기 사용자 단말 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하며, 상기 사용자 단말 장치로부터 수신된 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 재 수행하고, 상기 난독화가 재 수행된 소프트웨어를 상기 사용자 단말 장치로 전송하도록 상기 통신부를 제어할 수 있다.
이상 설명한 바와 같이 본 개시의 다양한 실시 예에 따르면, 소프트웨어에 대한 사용자의 사용성을 높이면서도 공격자의 분석을 어렵게 할 수 있다. 또한, 소프트웨어에 대한 난독화가 자동으로 적절하게 수행될 수 있다. 또한, 하나의 공격 방법으로 소프트웨어에 대한 난독화가 무력화되는 것을 막을 수 있다.
도 1은 본 개시의 일 실시 예에 따른 난독화 시스템의 구성도,
도 2는 본 개시의 일 실시 예에 따른 서버의 블럭도,
도 3a 및 도 3b는 벤치마크 포인트를 삽입하는 본 개시의 일 실시 예를 설명하기 위한 도면,
도 4는 전자 장치가 서버로 실행 프로파일 정보를 전송하는 본 개시의 일 실시 예를 설명하기 위한 도면,
도 5는 난독화 레벨에 따라 난독화를 수행하는 본 개시의 일 실시 예를 설명하기 위한 도면,
도 6a 및 도 6b는 본 개시의 일 실시 예에 따른 난독화 기법들을 설명하기 위한 도면,
도 7은 본 개시의 일 실시 예에 따른 서버의 제어 방법의 흐름도, 및
도 8은 본 개시의 일 실시 예에 따른 난독화 방법의 절차도이다.
이하, 본 개시의 다양한 실시 예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 개시에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시 예의 다양한 변경(modifications), 균등물(equivalents), 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 개시에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 개시에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 개시에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 개시에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된) 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
한편, 본 개시의 다양한 예들에 따른 난독화 방법이 적용되는 소프트웨어는 애플리케이션, 펌웨어, 미들웨어 등 개발자에 의해 컴퓨터 프로그램으로 구현되어 사용자에게 배포될 수 있는 각종 소프트웨어를 포함할 수 있다. 이하에서는, 설명의 편의를 위해 애플리케이션 즉, 응용 소프트웨어를 예로 들어 설명한다.
도 1은 본 개시의 일 실시 예에 따른 난독화 시스템의 구성도이다. 도 1에 따르면, 난독화 시스템(10)은 난독화 서버(100), 전자 장치(200), 배포 서버(300) 및 사용자 단말(400)을 포함한다.
전자 장치(200)는 PC(Personal Computer), 워크 스테이션, 스마트폰, 태블릿, 스마트 TV 등과 같이, 소프트웨어 개발에 이용되거나 개발된 소프트웨어가 사용될 수 있는 각종 장치를 포함한다. 예를 들어, 개발자가 스마트폰에서 사용될 애플리케이션을 개발하는 경우, 전자 장치(200)는 애플리케이션 개발을 위한 PC 및 애플리케이션이 사용되는 스마트 폰을 포함할 수 있다.
전자 장치(200)는 애플리케이션을 난독화 서버(100)로 전송할 수 있다. 예를 들어, 전자 장치(200)는 전자 장치(200)의 사용자(예를 들어, 개발자)의 조작에 따라 난독화 서버(100)에 접속할 수 있다. 이때, 난독화 서버(100)는 난독화 서비스 웹페이지를 전자 장치(200)로 제공할 수 있고, 애플리케이션 개발자는 개발한 애플리케이션을 난독화 서비스 웹페이지를 통해 전자 장치(200)로 전송할 수 있다
이때 난독화 서버(100)로 전송되는 애플리케이션은, 개발이 완료되어 특정 기능을 수행할 수는 있으나 난독화가 수행되기 전인 상태로, 이와 같이, 난독화 전 상태의 애플리케이션을 이하에서는 "플레인(Plain) 애플리케이션"이라 하기로 한다.
한편, 전자 장치(200)는 난독화 서버(100)로부터 벤치마크 포인트가 삽입된 애플리케이션(이하, "프로파일 애플리케이션"이라 한다.)을 수신할 수 있다. 여기서, 벤치마크 포인트는 애플리케이션이 실행되는 동안 애플리케이션의 기설정된 부분이 실행된 프로파일 정보를 획득하기 위해 난독화 서버(100)가 애플리케이션에 삽입하는 측정 기준점이다. 이때, 애플리케이션의 기설정된 부분은 애플리케이션을 구성하는 프로그램 블록일 수 있다.
따라서, 애플리케이션 개발자가 애플리케이션의 사용 시나리오에 따라 전자 장치(200)상에서 프로파일 애플리케이션을 실행하면, 전자 장치(200)는 애플리케이션을 구성하는 프로그램 블록이 실행된 실행 프로파일 정보를 획득할 수 있다. 이와 같이 획득된 실행 프로파일 정보는 전자 장치(200)에 저장될 수 있다. 여기서, 실행 프로파일 정보는, 프로파일 애플리케이션이 실행되는 동안 애플리케이션을 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 시간에 관한 정보를 포함할 수 있다.
전자 장치(200)는 위와 같이 획득된 실행 프로파일 정보를 난독화 서버(100)로 전송하고, 전송된 실행 프로파일 정보에 기초하여 난독화가 수행된 애플리케이션을 난독화 서버(200)로부터 수신할 수 있다. 이와 같이, 난독화가 수행된 애플리케이션을 이하에서는 "난독화된 애플리케이션"이라 하기로 한다.
이때, 전자 장치(200)는 실행 프로파일 정보를 기설정된 주기로 난독화 서버(100)에 전송할 수 있다. 예를 들어, 전자 장치(200)는 애플리케이션이 종료될 때 애플리케이션이 실행되는 동안 획득된 실행 프로파일 정보를 난독화 서버(100)로 전송할 수 있다. 그러나, 실시 예가 이에 한정되는 것은 아니며, 가령, 전자 장치(200)는 기설정된 시간 주기마다 또는 기설정된 횟수만큼 애플리케이션이 실행/종료를 거듭한 후에 또는 기설정된 양의 실행 프로파일 정보가 저장된 후에 저장된 실행 프로파일 정보를 전송할 수도 있다.
한편, 전자 장치(200)는 난독화된 애플리케이션이 난독화 서버(100)로부터 수신되면, 자동으로 또는 개발자의 조작 내지 명령에 따라, 난독화된 애플리케이션을 배포 서버(400)에 업로드할 수 있다. 이때, 난독화된 애플리케이션을 업로드할 수 있는 전자 장치(200)는 개발자가 애플리케이션 개발을 위해 이용한 장치에 한정되지 않을 수 있다.
한편, 실시 예에에 따라 난독화된 애플리케이션은 난독화 서버(100)로부터 직접 배포 서버(400)에 업로드될 수도 있다.
배포 서버(400)는 애플리케이션을 사용자 단말(300)로 배포한다. 특히, 배포 서버(400)는 전자 장치(200)로부터 애플리케이션이 수신되면 이를 저장하고, 사용자 단말(300)로부터 특정 애플리케이션에 대한 다운로드 요청이 있는 경우, 다운로드가 요청된 애플리케이션을 사용자 단말(300)로 전송할 수 있다.
예를 들어, 배포 서버(400)는, 업로드되는 애플리케이션이 안드로이드 OS 기반의 애플리케이션인 경우라면 플레이 스토어TM 서비스 제공 서버일수 있고, iOS 기반의 애플리케이션인 경우라면 앱 스토어TM 제공 서버일 수 있으나, 이에 한정되는 것은 아니다.
이에 따라, 애플리케이션을 사용하고자 하는 사용자는, 사용자 단말(300)을 통해 배포 서버(400)에 접속하여 해당 애플리케이션을 다운로드함으로써, 개발자가 개발한 애플리케이션을 사용할 수 있게 된다. 이때, 사용자 단말(300)을 통해 다운로드되는 애플리케이션은 난독화된 애플리케이션이 된다.
사용자 단말(300)은 애플리케이션을 다운로드하여 사용하는 사용자의 단말 장치로, PC(Personal Computer), 스마트폰, 스마트 TV, 태블릿 등과 같은 다양한 종류의 장치를 포함할 수 있다. 사용자는 사용자 단말(300)을 통해 배포 서버(400)에 접속하여 배포 서버(400)가 제공하는 웹페이지를 통해 원하는 애플리케이션을 다운로드할 수 있다.
특히, 사용자는 사용자 단말(300)을 통해 상술한 난독화된 애플리케이션을 다운로드하고, 다운로드된 애플리케이션을 사용자 단말(300) 상에서 실행시킬 수 있다. 이에 따라, 사용자 단말(300)상에서 애플리케이션이 실행되면, 사용자 단말(300)은 애플리케이션을 구성하는 프로그램 블록이 실행된 실행 프로파일 정보를 획득할 수 있다.
구체적으로, 본 개시의 일 실시 예에 따르면, 난독화 서버(100)는 전자 장치(200)로부터 획득된 실행 프로파일 정보에 기초하여 프로파일 애플리케이션에 대해 난독화를 수행한다. 프로파일 애플리케이션은 벤치마크 포인트가 삽입된 애플리케이션이므로, 난독화된 애플리케이션 역시 삽입된 벤치마크 포인트를 그대로 포함한다. 따라서, 사용자 단말(300)은 난독화된 애플리케이션이 실행되는 동안 애플리케이션을 구성하는 복수의 프로그램 블록 각각이 실행된 실행 프로파일 정보를 획득할 수 있다.
한편, 본 개시의 다른 일 실시 예에 따르면, 난독화 서버(100)는 전자 장치(200)로부터 획득된 실행 프로파일 정보에 기초하여 플레인 애플리케이션에 대해 난독화를 수행할 수도 있다. 이 경우 난독화 서버(100)는 난독화된 애플리케이션의 기설정된 부분에 벤치마크 포인트를 삽입하여 전자 장치(200)로 전송하고, 전자 장치(200)는 벤치마크 포인트가 삽입되어 있는 난독화된 애플리케이션을 배포 서버(400)에 업로드하게 된다. 따라서, 사용자 단말(300)은 난독화된 애플리케이션이 실행되는 동안 애플리케이션을 구성하는 복수의 프로그램 블록 각각이 실행된 실행 프로파일 정보를 획득할 수 있다.
이와 같이, 획득된 실행 프로파일 정보는 사용자 단말(300)에 저장될 수 있다.
이에 따라, 사용자 단말(300)은 획득된 실행 프로파일 정보를 난독화 서버(100)로 전송하고, 전송된 실행 프로파일 정보에 기초하여 난독화가 재 수행된 애플리케이션을 난독화 서버(200)로부터 수신할 수 있다.
이때, 사용자 단말(300)은 기설정된 주기로 실행 프로파일 정보를 난독화 서버(100)에 전송할 수 있다. 예를 들어, 사용자 단말(300)은 애플리케이션이 종료될 때 애플리케이션이 실행되는 동안 획득된 실행 프로파일 정보를 난독화 서버(100)로 전송할 수 있다.
그러나, 실시 예가 이에 한정되는 것은 아니며, 가령, 사용자 단말(300)은 기설정된 시간 주기마다 또는 기설정된 횟수만큼 애플리케이션이 실행/종료를 거듭한 후에 또는 기설정된 양의 실행 프로파일 정보가 저장된 후에 저장된 실행 프로파일 정보를 전송할 수도 있다.
난독화 서버(100)는 소프트웨어 난독화 서비스를 제공한다. 구체적으로, 난독화 서버(100)는 난독화 서버(100)에 접속한 전자 장치(200)나 사용자 단말(300)로 웹페이지를 제공하여 본 개시의 다양한 실시 예들에 따른 난독화 서비스를 제공할 수 있다.
이를 위해, 난독화 서버(100)는 전자 장치(200) 또는 사용자 단말(300)로부터 수신되는 실행 프로파일 정보에 기초하여 애플리케이션에 대한 난독화를 수행할 수 있다.
구체적으로, 난독화 서버(100)는 전자 장치(200)로부터 플레인 애플리케이션이 수신되면, 수신된 애플리케이션에 프로그램 블록 단위로 벤치마크 포인트를 삽입하여 프로파일 애플리케이션을 생성할 수 있다. 이에 따라, 난독화 서버(100)는 생성된 프로파일 애플리케이션을 전자 장치(200)로 전송하고, 프로파일 애플리케이션이 실행되어 획득된 실행 프로파일 정보를 전자 장치(200)로부터 수신할 수 있다.
이때, 난독화 서버(100)가 전자 장치(200)로부터 수신하는 실행 프로파일 정보는, 애플리케이션 개발자가, 애플리케이션 테스트를 위해, 기정의된 애플리케이션 사용 시나리오에 따라 프로파일 애플리케이션을 실행 및 사용하여 획득된 실행 프로파일 정보일 수 있다. 여기서, 기정의된 애플리케이션 사용 시나리오는, 사용자가 애플리케이션을 사용하는 방법이나 순서 등을 예상하여 개발자가 마련한 각종 사용 시나리오를 의미한다.
한편, 난독화 서버(100)는 전자 장치(200)로부터 실행 프로파일 정보가 획득되면, 획득된 실행 프로파일 정보에 기초하여 프로파일 애플리케이션에 대한 난독화를 수행할 수 있다.
구체적으로, 난독화 서버(100)는 실행 프로파일 정보에 기초하여 애플리케이션을 구성하는 프로그램 블록의 난독화 레벨을 판단하고, 판단된 난독화 레벨에 따라 프로그램 블록을 난독화하여 애플리케이션에 대한 난독화를 수행할 수 있다.
예를 들어, 난독화 서버(100)는 난독화 레벨에 따라 복수의 난독화 기법 중 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하거나 또는 난독화 레벨에 따라 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 난독화를 수행할 수 있다.
이에 따라, 난독화 서버(100)는 난독화된 애플리케이션을 전자 장치(200)로 전송하며, 전자 장치(200)는 난독화된 애플리케이션을 배포 서버(400)로 업로드할 수 있다. 또는 실시 예에 따라 난독화 서버(100)는 배포 서버(400)로 직접 난독화된 애플리케이션을 전송할 수도 있다. 이와 같이, 배포 서버(400)로 업로드된 난독화된 애플리케이션은 복수의 사용자에게 배포되어 사용될 수 있다.
한편, 난독화 서버(100)는 난독화된 애플리케이션이 실행되어 획득된 실행 프로파일 정보를 사용자 단말(300)로부터 수신할 수 있다. 이때, 난독화 서버(100)가 사용자 단말(300)로부터 수신하는 실행 프로파일 정보는, 배포 서버(400)를 통해 사용자 단말(300)로 다운로드된 애플리케이션이 사용자 단말(300)의 사용자에 의해 실제로 사용되어 획득된 실행 프로파일 정보이다.
이에 따라, 난독화 서버(100)는 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 애플리케이션을 업데이트할 수 있다. 구체적으로, 난독화 서버(100)는 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 사용자 단말(300)에서 사용되는 애플리케이션에 대한 난독화를 재수행하고, 난독화가 재수행된 애플리케이션을 사용자 단말(300)로 전송할 수 있다.
이때에도, 난독화 서버(100)는 실행 프로파일 정보에 기초하여 애플리케이션을 구성하는 프로그램 블록의 난독화 레벨을 판단하고, 판단된 난독화 레벨에 따라 복수의 난독화 기법 중 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하거나 또는 판단된 난독화 레벨에 따라 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 난독화를 수행하게 됨은 물론이다.
상술한 본 개시의 실시 예에 따르면, 난독화 서버(100)는 전자 장치(200) 또는 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 자동으로 적절하게 애플리케이션을 난독화할 수 있다. 또한, 난독화 서버(100)는 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 애플리케이션에 대한 난독화를 동적으로 재수행함으로써, 하나의 공격 방법으로 소프트웨어에 대한 난독화가 무력화되는 것을 막을 수 있다.
이하에서 도 2 내지 도 6을 통해 본 개시의 다양한 실시 예들에 따른 난독화 서버(100)의 구성 및 동작을 설명한다. 도 2 내지 도 6을 설명함에 있어 전술한 것과 중복되는 내용은 설명을 생략한다.
도 2는 본 개시의 일 실시 예에 따른 난독화 서버의 블럭도이다. 도 2에 따르면, 서버(100)는 통신부(110) 및 프로세서(120)를 포함한다.
통신부(110)는 외부 장치와 통신을 수행한다. 특히, 통신부(110)는 각종 유, 무선 네트워크를 통해 전자 장치(200) 또는 사용자 단말(300)과 통신을 수행할 수 있다. 이를 위해, 통신부(110)는 각종 통신 방식에 따른 유선 및 무선 통신 모듈을 포함할 수 있다. 구체적으로, 통신부(110)는 HDMI(High-Definition Multimedia Interface), USB(Universal Serial Bus), IEEE(Institute of Electrical and Eletronics Engineers) 1394, RS-232, RS-422, RS-485, Ethernet 등과 같은 통신 규격에 따른 유선 통신 모듈(미도시) 중 적어도 하나를 포함할 수 있다. 또한, 통신부(110)는 무선랜 통신 모듈(미도시)이나 이동 통신 모듈(미도시)과 같은 무선 통신 모듈(미도시)을 포함할 수도 있다. 여기서, 무선랜 통신 모듈(미도시)은 와이파이(WiFi), IEEE, 와이브로(WiBro) 등과 같은 무선 통신 프로토콜에 따라 외부 네트워크에 연결되어 통신을 수행하는 모듈이고, 무선 통신 모듈은 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evoloution) 등과 같은 다양한 이동 통신 규격에 따라 이동 통신망에 접속하여 통신을 수행하는 모듈이다.
프로세서(120)는 서버(100)의 전반적인 동작을 제어한다. 특히, 프로세서(120)는 서버(100)의 동작을 제어하여 본 개시의 다양한 실시 예들에 따른 소프트웨어 난독화 서비스를 제공할 수 있다.
이를 위해, 프로세서(120)는 중앙처리장치(central processing unit(CPU)), controller, 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함할 수 있다.
프로세서(120)는 전자 장치(200)로부터 플레인 애플리케이션이 수신되면, 수신된 플레인 애플리케이션의 기설정된 부분에 벤치마크 포인트를 삽입할 수 있다. 즉, 프로세서(120)는 프로파일 애플리케이션을 생성할 수 있다.
이때, 기설정된 부부분은 플레인 애플리케이션의 프로그램 블록일 수 있다. 여기서, 프로그램 블록은 애플리케이션을 구성하는 프로그램의 베이직 블록(basic block) 또는 함수 블록(function block)일 수 있으나, 이에 한정되는 것은 아니다.
예를 들어, 프로세서(120)는 애플리케이션을 구성하는 프로그램의 베이직 블록(basic block)에 벤치마크 포인트를 삽입하여 프로파일 애플리케이션을 생성할 수 있다.
이때, 베이직 블록은 어떤 프로그램 중 순차적으로 실행되는 명령 문자와 식으로서, 하나의 입구(entry) 및 하나의 출구(exit)만을 가지며, 중간에 레이블이 없고, 무조건 점프하는 명령문도 포함되지 않는 것을 의미한다.
따라서, 본 개시의 일 실시 예에 따르면, 프로세서(120)는 플레인 애플리케이션을 구성하는 복수의 베이직 블록 각각의 입구 및 출구에 벤치 마크 포인트를 삽입할 수 있다.
한편, 프로세서(120)는 애플리케이션을 구성하는 프로그램의 함수 블록(function block)에 벤치마크 포인트를 삽입할 수 있다. 여기서, 함수 블록은 적어도 하나 이상의 베이직 블록을 포함하여 구성되는 함수 단위의 프로그램 블록일 수 있다.
따라서, 본 개시의 다른 일 실시 예에 따르면, 프로세서(120)는 플레인 애플리케이션을 구성하는 복수의 함수 블록 각각의 입구 및 출구에 벤치 마크 포인트를 삽입하여 프로파일 애플리케이션을 생성할 수도 있다.
이와 같이, 베이직 블록 또는 함수 블록의 입구 및 출구에 벤치마크 포인트가 삽입되므로, 프로파일 애플리케이션이 실행되는 동안, 애플리케이션의 복수의 베이직 블록 각각이 실행된 횟수 또는 기간에 관한 정보 또는 애플리게이션의 복수의 함수 블록 각각이 실행된 횟수 또는 기간에 관한 정보가 실행 프로파일 정보로 획득될 수 있다.
도 3a 및 도 3b는 본 개시의 일 실시 예에 따라 애플리케이션에 벤치마크 포인트가 삽입되는 내용을 설명하기 위한 도면이다.
도 3a는 애플리케이션에 포함된 복수의 베이직 블록에 벤치마크 포인트가 삽입되는 일 예를 도시하고 있다. 즉, 프로세서(120)는 도 3a와 같은 순서도를 갖는 플레인 애플리케이션(500)이 전자 장치(200)로부터 수신되면, 수신된 플레인 애플리케이션(500)을 분석하여 베이직 블록 단위로 베이직 블록의 입구 및 출구에 각각 벤치마크 포인트(310)를 삽입할 수 있다.
도 3b는 베이직 블록 A( )의 입구 및 출구에 벤치마크 포인트가 삽입되는 구체적인 실시 예를 도시하고 있다. 도 3b에 도시된 바와 같이, 본 개시의 일 실시 예에 따르면, 프로세서(120)는 플레인 애플리케이션에 포함된 베이직 블록 A( )의 입구에 enter A( )(310-1)와 같은 벤치마크 포인트를, 출구에 exit A( )(310-2)와 같은 벤치마크 포인트를 삽입할 수 있다.
이러한 벤치마크 포인트는 삽입된 지점의 실행 횟수 또는 실행 기간을 측정하기 위한 측정 포인트에 불과하며, 애플리케이션의 기능이나 실행에는 아무런 영향을 미치지 못한다. 즉, 플레인 애플리케이션과 프로파일 애플리케이션은 실행시 성능(performance)에는 차이가 없다고 보아도 무방하다.
이에 따라, 이후에 전자 장치(200)나 사용자 단말(300)에서 애플리케이션이 실행되면, 애플리케이션이 실행되는 동안 베이직 블록 A( )가 실행된 횟수 또는 기간에 관한 정보가 전자 장치(200)나 사용자 단말(300)에 의해 획득될 수 있다.
한편, 위와 같이, 프로파일 애플리케이션이 생성되면, 프로세서(120)는 생성된 프로파일 애플리케이션을 전자 장치(200)로 전송하고, 전자 장치(200)로부터 애플리케이션이 실행되는 동안 획득된 실행 프로파일 정보를 수신할 수 있다.
구체적으로, 애플리케이션 개발자는 전자 장치(200)를 통해 프로파일 애플리케이션이 수신되면, 수신된 프로파일 애플리케이션을 일반적인 사용자의 사용 시나리오에 따라 사용하여 테스트할 수 있다.
도 4는 전자 장치(200-1, 200-2)가 획득된 실행 프로파일 정보를 서버(100)로 전송하는 본 개시의 일 실시 예를 설명하기 위한 도면이다. 도 4에서는 스마트 폰(200-2) 용 애플리케이션이 개발되는 경우를 상정하였다.
구체적으로, 도 4에 도시된 바와 같이, 서버(100)가 프로파일 애플리케이션을 PC(200-1)로 전송하면, 애플리케이션 개발자는 PC(200-1)를 통해 수신된 프로파일 애플리케이션을 스마트 폰(200-2)에 다운로드하여 사용 시나리오에 따라 사용하고, 이에 따라, 전자 장치(200-1, 200-2)는 실행 프로파일 정보를 획득할 수 있다.
이때, 전자 장치(200-1, 200-2)가 획득하는 실행 프로파일 정보는, 프로파일 애플리케이션이 실행되는 동안 애플리케이션을 구성하는 프로그램의 프로그램 블록이 실행된 횟수나 기간에 관한 정보를 포함할 수 있다.
예를 들어, 베이직 블록 단위로 벤치마크 포인트가 삽입된 프로파일 애플리케이션이 스마트 폰(200-2)에서 개발자에 의해 사용되면, 애플리케이션을 구성하는 복수의 베이직 블록 각각이 실행된 횟수에 관한 정보가 획득될 수 있다.
가령, 애플리케이션이 A( ), B( ), C( ), D( )와 같은 4개의 베이직 블록으로 구성되는 경우, 프로파일 애플리케이션에는 베이직 블록 A( ), B( ), C( ), D( ) 각각의 입구 및 출구에 벤치마크 포인트가 삽입되어 있으므로, 스마트 폰(200-2)에서 프로프파일 애플리케이션이 사용되면, 스마트 폰(200-2)은 벤치마크 포인트를 통해 프로파일 애플리케이션이 실행되는 동안 베이직 블록 A( ), B( ), C( ), D( ) 각각이 실행된 횟수에 관한 정보를 획득할 수 있다.
한편, 스마트 폰(200-2)은, 프로파일 애플리케이션이 스마트 폰(200-2)에서 개발자에 의해 사용되는 동안, 복수의 베이직 블록 각각이 실행된 기간에 관한 정보를 획득할 수도 있다.
이와 같이, 실행 프로파일 정보 즉, 애플리케이션을 구성하는 복수의 베이직 블록 각각이 실행된 횟수 또는 기간에 관한 정보가 획득되면, 스마트 폰(200-2)은 PC(200-1)로 획득된 실행 프로파일 정보를 전송하고, PC(200-1)는 획득된 실행 프로파일 정보를 서버(100)로 전송할 수 있다. 한편, 실시 예에 따라, 스마트 폰(200-2)이 직접 서버(100)로 실행 프로파일 정보를 전송할 수도 있다.
이에 따라, 전자 장치(200-1, 200-2)로부터 실행 프로파일 정보(200-1)가 수신되면, 서버(100)의 프로세서(120)는 수신된 실행 프로파일 정보에 기초하여 애플리케이션에 대한 난독화를 수행할 수 있다.
구체적으로, 프로세서(120)는 전자 장치(200)로부터 수신한 실행 프로파일 정보에 기초하여 애플리케이션을 구성하는 프로그램 블록의 난독화 레벨을 판단하고, 판단된 난독화 레벨에 기초하여 해당 프로그램 블록을 난독화함으로써 애플리케이션에 대한 난독화를 수행할 수 있다.
예를 들어, 프로세서(120)는 프로파일 애플리케이션이 실행되는 동안 프로그램 블록의 실행된 횟수가 적을수록 해당 프로그램 블록의 난독화 레벨을 높게 판단할 수 있다. 또는, 프로세서(120)는 프로파일 애플리케이션이 실행되는 동안 프로그램 블록의 실행된 시간이 짧을수록 해당 프로그램 블록의 난독화 레벨을 높게 판단할 수 있다.
이에 따라, 프로세서(120)는 판단된 난독화 레벨에 따라 복수의 난독화 기법 중 해당 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하여 난독화를 수행할 수 있다. 이때, 복수의 난독회 기법은, 데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함할 수 있다. 또는, 프로세서(120)는 판단된 난독화 레벨에 따라 해당 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 난독화를 수행할 수 있다.
예를 들어, 프로세서(120)는 난독화 레벨이 높을수록 더 많은 개수의 난독화 기법을 중첩하여 적용하거나, 난독화 레벨이 높을수록 동일한 난독화 기법의 적용 강도를 강하게 하여 난독화를 수행할 수 있다.
프로그램 블록에 더 많은 개수의 난독화 기법을 중첩하여 적용할수록 그리고, 프로그램 블록에 적용되는 난독화 기법을 더 강하게 적용할수록, 공격자의 공격으로부터는 안전해지지만 성능 퍼포먼스가 낮아져 사용자의 사용성은 나빠지게 된다. 따라서, 적절한 트레이드 오프가 필요한데, 본 개시의 일 실시 예에 따르면, 프로세서(120)는 실행된 횟수가 적거나 실행된 시간이 짧은 프로그램 블록에 대해 난독화 레벨을 높게 판단하고, 높은 난독화 레벨의 프로그램 블록에 더 많은 개수의 난독화 기법을 중첩 적용하거나 동일한 난독화 기법이라도 높은 강도로 난독화 기법을 적용하므로, 사용성을 유지하면서도 적절하게 애플리케이션을 난독화할 수 있게 된다.
즉, 사용자가 애플리케이션을 사용하는 동안 적은 횟수로 실행되거나 짧은 실행 시간을 갖는 프로그램 블록은 높은 레벨로 난독화를 하더라도 애플리케이션의 사용성에 미치는 영향이 적으므로 높은 레벨로 난독화를 하고, 많은 횟수로 실행되거나 긴 실행 시간을 갖는 프로그램 블록은 사용성에 미치는 영향이 크므로 낮은 레벨로 난독화를 함으로써, 사용성을 유지하면서도 적절하게 애플리케이션을 난독화할 수 있게 된다.
도 5는 난독화 레벨에 따라 난독화를 수행하는 본 개시의 일 실시 예를 설명하기 위한 도면이다. 도 5의 예에서는 애플리케이션을 구성하는 함수 블록들이 3가지 난독화 레벨로 나뉘어지는 경우를 도시하였다. 그러나, 이에 한정되는 것은 아니고, 실시 예에 따라, 애플리케이션을 구성하는 함수 블록들이 3개 미만 또는 4개 이상의 난독화 레벨로 구분되거나 애플리케이션을 구성하는 베이직 블록이 다양한 개수의 난독화 레벨로 나뉠수 있음은 물론이다.
도 5에 도시된 바와 같이, 프로세서(120)는 전자 장치(200)로부터 수신된 실행 프로파일 정보에 기초하여 애플리케이션을 구성하는 함수 블록들을, 로우 퍼포먼스 함수(510), 노말 퍼포먼스 함수(520) 및 헤비 퍼포먼스 함수(530)과 같이 3개의 레벨로 구분할 수 있다.
구체적으로, 로우 퍼포먼스 함수(510)는 애플리케이션이 실행되어 사용되는 동안 상대적으로 적은 빈도로 호출되거나 또는 상대적으로 적은 시간 동안 호출된 함수이므로, 프로세서(120)는 해당 함수 블록들을 상대적으로 높은 난독화 레벨로 판단할 수 있다. 또한, 헤비 퍼포먼스 함수(530)는 애플리케이션이 실행되어 사용되는 동안 상대적으로 높은 빈도로 호출되거나 또는 상대적으로 긴 시간 동안 호출된 함수이므로, 프로세서(120)는 해당 함수 블록들을 상대적으로 낮은 난독화 레벨로 판단할 수 있다. 한편, 노멀 퍼포먼스 함수(520)는 로우 퍼포먼스 함수(510)와 헤비 퍼포먼스 함수(530) 사이의 빈도로 또는 로우 퍼포먼스 함수(510)와 헤비 퍼포먼스 함수(530) 사이의 기간 동안 호출된 함수들이므로, 프로세서(120)는 해당 함수 블록들을 로우 퍼포먼스 함수(510)와 헤비 퍼포먼스 함수(530) 사이의 중간 레벨로 판단할 수 있다.
이에 따라, 프로세서(120)는 로우 퍼포먼스 함수(510)에 가장 많은 개수의 난독화 기법을 적용하고, 노멀 퍼포먼스 함수(520) 및 헤비 퍼포먼스 함수(530) 순으로 점점 적은 개수의 난독화 기법을 적용하여 애플리케이션에 대한 난독화를 수행할 수 있다. 예를 들어, 데이터 난독화, 제어 난독화 및 구획 난독화와 같은 3가지 난독화 기법이 이용되는 경우, 프로세서(120)는 로우 퍼포먼스 함수 블록(510)에는 3가지 난독화 기법을 모두 적용하고, 노멀 퍼포먼스 함수 블록(520)에는 데이터 난독화와 제어 난독화의 2가지 기법을 적용하고, 헤비 퍼포먼스 함수 블록(530)에는 데이터 난독화 기법만 적용하여 애플리케이션에 대한 난독화를 수행할 수 있다.
한편, 실시 예에 따라 하나의 난독화 기법인 제어 난독화 기법만 이용되는 경우라고 하더라도, 프로세서(120)는 로우 퍼포먼스 함수 블록(510)에는 가장 높은 적용 강도로 즉, 가장 복잡하게 제어 난독화를 수행하고, 노멀 퍼포먼스 함수 블록(520)에는 로우 퍼포먼스 함수(510) 보다 낮은 강도로 제어 난독화를 수행하며, 헤비 퍼포먼스 함수 블록(530)에는 가장 낮은 강도로 제어 난독화를 수행할 수 있다.
그러나, 실시 예가 이에 한정되는 것은 아니며, 프로세서(120)는 난독화 기법의 개수와 난독화 적용 강도를 조합하여 높은 난독화 레벨의 프로그램 블록일수록 더 복잡하게 난독화를 수행할수도 있음은 물론이다.
한편, 본 개시의 다양한 실시 예들에 따라 애플리케이션을 난독화하는데 이용될 수 있는 난독화 기법들을 간단히 소개하면 아래와 같다.
데이터 난독화는 프로그램이 처리하고 있는 변수들, 즉 데이터를 담을 변수를 나누거나 합치거나 읽기 어렵게 하는 방향의 모든 기술을 말한다. 도 6a는 데이터 난독화 기법의 일 예를 도시하고 있다.
제어 난독화는 제어를 어지럽게하여 프로그램을 읽기 어렵게 만드는 방법이다. 예를 들어, 프로그램의 문장이 묶이는 단위를 조절하거나 또는 프로그램이 실행되는 순서를 바꾸거나 또는 무의미한 결과를 산출하거나 실행되지 않는 코드를 일부러 집어 넣어 프로그램을 읽기 어렵게 만드는 등의 방법이 이용된다. 도 6b는 제어 난독화 기법의 일 예를 도시하고 있다.
구획 난독화는 구획 난독화는 프로그램에 큰 영향을 끼치지 않는 세부적인 요소들을 변화시키거나 제거하여서, 원래 코드를 복원하려는 사람들이 성공했다고 할지라도, 프로그램의 내용의 상당 부분을 훼손시켜 복원할 수 있도록 막는 방법을 말한다. 구체적인 방법으로는 형식 변화(formatting change), 주석 제거(remove comments), 식별자 손상(scramble identifiers)의 방법이 있다.
집합(aggregation) 난독화는, 순서(ordering)을 이용해서 코드를 난독화하는 것을 말한다. 대표적인 기법으로는 자료 순서 변환(array transformation)이 있다. 첫째 방법인 분할과 접힘(splitting & folding)과정은 불명확성(potency)를 증대 시키며, 둘째 방법인 병합과 평탄화(merging & flattening)과정은 불명확성(potency)를 감소시킨다.
예방 난독화는 이미 알려진 역난독화 방법을 알고 그 방법을 봉쇄하는 것을 말한다.
코드/데이터 암호화는 프로그램 코드나 데이터를 다양한 방법으로 암호화하여 프로그램을 읽기 어렵게 만드는 방법을 말한다.
상술한 난독화 기법들에 대한 보다 구체적인 내용은 본 개시의 요지와 무관하므로, 이하 설명을 생략한다.
한편, 본 개시의 일 실시 예에 따르면, 프로세서(120)는 전자 장치(200)로부터 수신된 실행 프로파일 정보에 기초하여 난독화를 수행할 때, 벤치마크 포인트가 삽입되어 있는 프로파일 애플리케이션을 난독화할 수 있다. 또는, 실시 예에 따라 프로세서(120)는 프로파일 애플리케이션에 대응되는 플레인 애플리케이션을 난독화하고, 난독화된 플레인 애플리케이션에 벤치마크 포인트를 삽입할 수도 있다.
이상에서는 프로세서(120)가 전자 장치(200)로부터 수신된 실행 프로파일 정보에 기초하여 애플리케이션에 대한 난독화를 수행하는 예를 설명하였으나, 실시 예가 이에 한정되는 것은 아니다.
즉, 본 개시의 다른 일 실시 예에 따르면, 프로세서(120)는 전술한 실행 프로파일 정보에 더하여, 개발자에 의해 지정된 애플리케이션의 난독화 레벨에 관한 정보에 기초하여 난독화를 수행할 수도 있다.
구체적으로, 전자 장치(200)의 사용자 즉, 개발자는 애플리케이션을 구성하는 프로그램 블록에 대한 난독화 레벨을 지정하고, 지정된 난독화 레벨에 관한 정보를 서버(100)로 제공할 수 있다. 예를 들어, 개발자는 전자 장치(200)를 통해 서버(100)가 제공하는 웹페이지에 접속하여 애플리케이션을 구성하는 프로그램 블록들에 대한 난독화 레벨을 지정할 수 있다. 즉, 개발자는 실행 프로파일 정보에 따를 경우 난독화 레벨이 높은 프로그램 블록이라고 하더라도 필요에 따라 낮은 난독화 레벨을 지정할 수 있고, 그 반대도 마찬가지이다.
이 경우, 프로세서(120)는 개발자가 난독화 레벨을 지정한 프로그램 블록에 대하여는, 실행 프로파일 정보를 고려하지 않고, 지정된 난독화 레벨에 기초하여 난독화를 수행하고, 나머지 프로그램 블록에 대하여는 전술한 바와 같이, 실행 프로파일 정보에 기초하여 난독화를 수행할 수 있다.
이상과 같이 애플리케이션에 대한 난독화가 완료되면, 프로세서(120)는 난독화된 애플리케이션을 전자 장치(200)로 전송하도록 통신부(110)를 제어할 수 있다. 이에 따라, 개발자는 난독화된 애플리케이션을 배포 서버(400)에 업로드할 수 있다. 실시 예에 따라 프로세서(120)는 직접 난독화된 애플리케이션을 배포 서버(400)로 전송하도록 통신부(110)를 제어할 수도 있을 것이다.
한편, 사용자 단말(300)의 사용자는 배포 서버(400)로부터 난독화된 애플리케이션을 다운로드하여 사용할 수 있다. 이때, 다운로드된 난독화된 애플리케이션은, 전술한 바와 같이, 벤치마크 포인트가 삽입되어 있으므로, 사용자 단말(300)은 사용자가 애플리케이션을 사용함에 따라 실행 프로파일 정보를 획득 및 저장할 수 있다. 이에 따라, 사용자 단말(300)은 기설정된 주기마다 획득된 실행 프로파일 정보를 서버(100)로 전송할 수 있다.
이와 같이, 사용자 단말(300)로부터 실행 프로파일 정보가 수신되면, 서버(100)의 프로세서(120)는 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 애플리케이션에 대한 난독화를 재수행하고, 난독화가 재수행된 애플리케이션을 사용자 단말(300)로 전송함으로써, 사용자 단말(300)에서 사용되는 애플리케이션을 동적으로 업데이트할 수 있다.
예를 들어, 프로세서(120)는 사용자 단말(300)로부터 수신된 실행 프로파일에 기초하여 프로파일 애플리케이션에 대한 난독화를 재수행한 후 난독화가 재수행된 애플리케이션을 사용자 단말(300)로 전송할 수 있다. 또한, 프로세서(120)는 사용자 단말(300)로부터 수신된 실행 프로파일에 기초하여 플레인 애플리케이션에 대한 난독화를 재수행하고 벤치마크 포인트를 삽입한 후 난독화가 재수행된 애플리케이션을 사용자 단말(300)로 전송할 수도 있다. 또한, 프로세서(120)는 사용자 단말(300)로부터 수신된 실행 프로파일에 기초하여 난독화된 애플리케이션에 난독화를 재수행하고, 난독화가 재수행된 애플리케이션을 사용자 단말(300)로 전송할 수도 있다.
이때, 프로세서(120)가 사용자 단말(300)로부터 수신된 실행 프로파일 정보에 기초하여 난독화를 재수행하는 구체적인 내용은, 전자 장치(200)로부터 수신된 실행 프로파일 정보에 기초하여 프로세서(120)가 수행하는 난독화와 동일하므로, 중복되는 설명은 생략한다.
한편, 도 2의 도면에는 도시하지 않았지만, 서버(100)는 저장부(미도시)를 더 포함할 수 있다. 저장부(미도시)는 서버(100)를 제어하는 명령어, 제어 명령어 코드, 제어 데이터, 또는 사용자 데이터를 저장할 수 있다. 예를 들면, 저장부(미도시)는 어플리케이션(application), OS(operating system), 미들웨어(middleware), 디바이스 드라이버(device driver)를 포함할 수 있다.
특히, 저장부(미도시)는 전자 장치(200)나 사용자 단말(300)로부터 수신되는 전술한 각종 애플리케이션이나 실행 프로파일 정보를 저장할 수 있다. 또한, 저장부(미도시)는 전술한 바와 같이 프로세서(120)가 생성하거나 획득하는 각종 애플리케이션이나 정보를 저장할 수 있다. 또한, 실시 예에 따라 저장부(미도시)는 전술한 프로세서(120)의 동작을 수행하기 위한 각종 프로그램 모듈을 저장할 수 있다.
따라서, 프로세서(120)는 저장부(미도시)에 저장된 각종 프로그램 모듈이나 애플리케이션, 실행 프로파일 정보를 읽어 전술한 다양한 실시 예들에 따른 동작을 수행할 수 있다.
이를 위해, 저장부(미도시)는 휘발성 메모리(volatile memory) 또는 불휘발성(non-volatile memory) 중 하나 또는 그 이상을 포함할 수 있다. 휘발성 메모리는 DRAM(dynamic random access memory), SRAM(static RAM), SDRAM(synchronous DRAM), PRAM(phase-change RAM), MRAM(magnetic RAM), RRAM(resistive RAM), FeRAM(ferroelectric RAM) 등을 포함할 수 있다. 불휘발성 메모리는 ROM(read only memory), PROM(programmable ROM), EPROM(electrically programmable ROM), EEPROM(electrically erasable programmable ROM), 플레시 메모리(flash memory) 등을 포함할 수 있다. 또한, 저장부(미도시)는 하드 디스크 드라이브(HDD, hard disk drive), 솔리드 스테이트 디스크(SSD, solid state disk), eMMC(embedded multi media card), UFS(universal flash storage)와 같은 불휘발성 매체(medium)를 포함할 수 있다.
도 7은 본 개시의 일 실시 예에 따른 서버(100)의 제어 방법의 흐름도이다. 도 7을 설명함에 있어 전술한 것과 중복되는 것은 설명을 생략한다. 도 7에 따르면, 서버(100)는 전자 장치(200)로부터 소프트웨어를 수신한다(710).
이에 따라, 서버(100)는 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하고, 벤치마크 포인트가 삽입된 소프트웨어를 전자 장치(200)로 전송한다(S720). 예를 들어, 서버(100)는 소프트웨어를 구성하는 프로그램 블록의 입구(entry) 및 출구(exit)에 벤치마크 포인트를 삽입할 수 있다.
한편, 서버(100)는 전자 장치(200)로부터 소프트웨어의 기설정된 부분이 실행된 실행 프로파일 정보를 수신한다(S730). 이때, 실행 프로파일 정보는, 벤치마크 포인트가 삽입된 소프트웨어가 전자 장치(200)에서 실행되는 동안 소프트웨어를 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 기간에 관한 정보를 포함할 수 있다.
이에 따라, 서버(100)는 실행 프로파일 정보에 기초하여 소프트웨어 대한 난독화(obfuscation)를 수행한다(S740).
구체적으로, 서버(100)는 실행 프로파일 정보에 기초하여 소프트웨어를 구성하는 프로그램 블록의 난독화 레벨을 판단하고, 판단된 난독화 레벨에 기초하여 프로그램 블록에 대한 난독화를 수행할 수 있다.
이때, 서버(100)는 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 프로그램 블록이 실행된 횟수가 적을수록 또는 실행된 기간이 짧을수록 프로그램 블록의 난독화 레벨을 높게 판단할 수 있다.
또한, 서버(100)는 난독화 레벨에 따라 복수의 난독화 기법 중 프로그램 블록에 적용되는 난독화 기법의 개수를 달리하거나 또는 난독화 레벨에 따라 프로그램 블록에 적용되는 동일한 난독화 기법의 적용 강도를 달리하여 난독화를 수행할 수 있다.
이때, 서버(100)는 벤치마크 포인트가 삽입된 소프트웨어에 대해 난독화를 수행할 수 있다. 또는 서버(100)는 플레인 소프트웨어에 대해 난독화를 수행하고, 난독화된 소프트웨어에 벤치마크 포인트를 삽입할 수도 있다.
여기서, 복수의 난독화 기법은, 데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함할 수 있다.
한편, 본 개시의 다른 일 실시 예에 따르면, 서버(100)는 전자 장치(200)의 사용자에 의해 지정된 소프트웨어의 난독화 레벨에 관한 정보를 전자 장치(200)로부터 수신하고, 전자 장치(200)로부터 수신한 실행 프로파일 정보 및 난독화 레벨에 관한 정보에 기초하여 난독화를 수행할 수 있다.
한편, 서버(100)는 난독화된 애플리케이션을 전자 장치(200)로 전송할 수 있다. 이에 따라, 전자 장치(200)가 배포 서버(400)로 업로드한 난독화된 소프트웨어가 사용자 단말 장치(300)로 다운로드되어 실행되면, 서버(100)는 사용자 단말 장치(300)로부터 소프트웨어의 기설정된 부분이 실행된 실행 프로파일 정보를 수신할 수 있다.
이에 따라, 서버(100)는 사용자 단말 장치(300)로부터 수신된 실행 프로파일 정보에 기초하여 소프트웨어에 대한 난독화를 재 수행하고, 난독화가 재 수행된 소프트웨어를 사용자 단말 장치(300)로 전송할 수 있다.
도 8은 본 개시의 일 실시 예에 따른 난독화 방법의 절차도이다. 도 8을 설명함에 있어 전술한 것과 중복되는 것은 설명을 생략한다. 도 8에 따르면 애플리케이션 개발자는 전자 장치(200)를 통해 서버(100)로 소프트웨어를 전송한다(S805). 이에 따라, 서버(100)는 소프트웨어에 벤치마크 포인트를 삽입하고(S810), 벤치마크 포인트가 삽입된 소프트웨어를 전자 장치(200)로 전송한다(S815).
개발자는 벤치마크 포인트가 삽입된 소프트웨어를 실행/사용하고(S820), 소프트웨어가 실행되는 동안 획득되는 실행 프로파일 정보를 서버(100)로 전송한다(S825).
서버(100)는 전자 장치(200)로부터 수신된 실행 프로파일 정보에 기초하여 소프트웨어를 난독화하고(S830), 난독화된 소프트웨어를 전자 장치(200)로 전송한다(S835). 이에 따라, 개발자는 난독화된 소프트웨어를 배포 서버(400)에 업로드할 수 있다(S840).
한편, 개발자가 개발한 소프트웨어를 사용하고자하는 사용자는 사용자 단말(300)을 이용하여 난독화된 소프트웨어를 배포 서버(400)로부터 다운로드한다(S845). 사용자가 다운로드한 소프트웨어가 사용자 단말(300) 상에서 실행/사용되면(S850), 사용자 단말(300)로 실행 프로파일 정보가 획득되며, 사용자 단말(300)은 기설정된 주기로 실행 프로파일 정보를 서버(100)에 전송할 수 있다(S855).
서버(100)는 사용자 단말(300)로부터 수신한 실행 프로파일 정보에 기초하여 소프트웨어에 대한 난독화를 재수행하고(S860), 난독화가 재수행된 소프트웨어를 사용자 단말(300)로 전송할 수 있다(S865).
이에 따라, 사용자별로 소프트웨어의 사용성을 최소한으로 해치면서 최적화된 난독화가 이루어질 수 있다.
한편, 상술한 본 개시의 실시 예들에서, 전자 장치(200), 서버(100), 배포 서버(400), 사용자 단말(300) 사이에 송, 수신되는 소프트웨어는 소스 코드가 아닌 바이너리 실행 파일 형태일 수 있다. 예를 들어, 소프트웨어가 안드로이드 기반인 경우, 전자 장치(200), 서버(100), 배포 서버(400), 사용자 단말(300)들 간에는 안드로이드 응용 프로그램 패키지(Android appliaction package, APK) 포맷의 파일이 송, 수신될 수 있으나, 이에 한정되는 것은 아니다.
이상 설명한 바와 같이 본 개시의 다양한 실시 예에 따르면, 소프트웨어에 대한 사용자의 사용성을 높이면서도 공격자의 분석을 어렵게 할 수 있다. 또한, 소프트웨어에 대한 난독화가 자동으로 적절하게 수행될 수 있다. 또한, 하나의 공격 방법으로 소프트웨어에 대한 난독화가 무력화되는 것을 막을 수 있다.
한편, 본 개시의 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 여기서, 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 서버(100)를 포함할 수 있다. 상기 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 상기 프로세서의 제어하에 다른 구성요소들을 이용하여 상기 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
일 실시 예에 따르면, 본 개시에 개시된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시 예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상의 설명은 본 개시의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 개시의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 또한, 본 개시에 따른 실시 예들은 본 개시의 기술 사상을 한정하기 위한 것이 아니라 설명하기 한 것이고, 이러한 실시 예에 의하여 본 개시의 기술 사상의 범위가 한정되는 것은 아니다. 따라서, 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 난독화 서버                     200: 전자 장치
300: 사용자 단말 400: 배포 서버
110: 통신부 120: 프로세서

Claims (20)

  1. 서버의 제어 방법에 있어서,
    전자 장치로부터 소프트웨어를 수신하는 단계;
    상기 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하는 단계;
    상기 벤치마크 포인트가 삽입된 소프트웨어를 상기 전자 장치로 전송하는 단계;
    상기 전자 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하는 단계; 및
    상기 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화(obfuscation)를 수행하는 단계;를 포함하며,
    상기 소프트웨어에 대한 난독화(obfuscation)를 수행하는 단계는,
    상기 실행 프로파일 정보에 기초하여 상기 소프트웨어를 구성하는 함수 블록들을, 로우 퍼포먼스 함수, 노말 퍼포먼스 함수 및 헤비 퍼포먼스 함수를 포함하는 3개의 레벨로 구분하고,
    상기 로우 퍼포먼스 함수에 복수의 난독화 기법 중 가장 많은 개수의 난독화 기법을 적용하고, 상기 노말 퍼포먼스 함수 및 상기 헤비 퍼포먼스 함수 순으로 점점 적은 개수의 난독화 기법을 적용하여 상기 소프트웨어에 대한 난독화를 수행하며,
    하나의 난독화 기법만 이용되는 경우, 상기 로우 퍼포먼스 함수 블록에는 가장 높은 적용 강도로 난독화를 수행하고, 상기 노말 퍼포먼스 함수 블록에는 상기 로우 퍼포먼스 함수 보다 낮은 강도로 난독화를 수행하며, 상기 헤비 퍼포먼스 함수 블록에는 가장 낮은 강도로 난독화를 수행하는 제어 방법.
  2. 제 1 항에 있어서,
    상기 삽입하는 단계는,
    상기 소프트웨어를 구성하는 프로그램 블록의 입구(entry) 및 출구(exit)에 상기 벤치마크 포인트를 삽입하는 단계;를 포함하는 것을 특징으로 하는 제어 방법.
  3. 제 1 항에 있어서,
    상기 실행 프로파일 정보는,
    상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 소프트웨어를 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 기간에 관한 정보를 포함하는 것을 특징으로 하는 제어 방법.
  4. 삭제
  5. 제 3 항에 있어서,
    상기 난독화 레벨을 판단하는 단계는,
    상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 프로그램 블록이 실행된 횟수가 적을수록 또는 실행된 기간이 짧을수록 상기 프로그램 블록의 난독화 레벨을 높게 판단하는 것을 특징으로 하는 제어 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 복수의 난독화 기법은,
    데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함하는 것을 특징으로 하는 제어 방법.
  8. 제 1 항에 있어서,
    상기 전자 장치의 사용자에 의해 지정된 상기 소프트웨어의 난독화 레벨에 관한 정보를 상기 전자 장치로부터 수신하는 단계;를 더 포함하고,
    상기 난독화를 수행하는 단계는,
    상기 실행 프로파일 정보 및 상기 수신된 난독화 레벨에 관한 정보에 기초하여 상기 난독화를 수행하는 것을 특징으로 하는 제어 방법.
  9. 제 1 항에 있어서,
    상기 난독화를 수행하는 단계는,
    상기 벤치마크 포인트가 삽입된 소프트웨어에 대해 난독화를 수행하는 것을 특징으로 하는 제어 방법.
  10. 제 1 항에 있어서,
    상기 난독화된 소프트웨어를 상기 전자 장치로 전송하는 단계;
    상기 전자 장치가 배포 서버로 업로드한 상기 난독화된 소프트웨어가 사용자 단말 장치로 다운로드되어 실행되면, 상기 사용자 단말 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하는 단계;
    상기 사용자 단말 장치로부터 수신된 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 재 수행하는 단계; 및
    상기 난독화가 재 수행된 소프트웨어를 상기 사용자 단말 장치로 전송하는 단계;를 더 포함하는 것을 특징으로 하는 제어 방법.
  11. 서버에 있어서,
    통신부; 및
    전자 장치로부터 소프트웨어가 수신되면, 상기 소프트웨어의 기설정된 부분에 벤치마크 포인트를 삽입하고, 상기 벤치마크 포인트가 삽입된 소프트웨어를 상기 전자 장치로 전송하도록 상기 통신부를 제어하며, 상기 전자 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보가 수신되면, 상기 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 수행하는 프로세서;를 포함하며,
    상기 프로세서는,
    상기 실행 프로파일 정보에 기초하여 상기 소프트웨어를 구성하는 함수 블록들을, 로우 퍼포먼스 함수, 노말 퍼포먼스 함수 및 헤비 퍼포먼스 함수를 포함하는 3개의 레벨로 구분하고,
    상기 로우 퍼포먼스 함수에 복수의 난독화 기법 중 가장 많은 개수의 난독화 기법을 적용하고, 상기 노말 퍼포먼스 함수 및 상기 헤비 퍼포먼스 함수 순으로 점점 적은 개수의 난독화 기법을 적용하여 상기 소프트웨어에 대한 난독화를 수행하며,
    하나의 난독화 기법만 이용되는 경우, 상기 로우 퍼포먼스 함수 블록에는 가장 높은 적용 강도로 난독화를 수행하고, 상기 노말 퍼포먼스 함수 블록에는 상기 로우 퍼포먼스 함수 보다 낮은 강도로 난독화를 수행하며, 상기 헤비 퍼포먼스 함수 블록에는 가장 낮은 강도로 난독화를 수행하는 서버.
  12. 제 11 항에 있어서,
    상기 프로세서는,
    상기 소프트웨어를 구성하는 프로그램 블록의 입구(entry) 및 출구(exit)에 상기 벤치마크 포인트를 삽입하는 것을 특징으로 하는 서버.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 실행 프로파일 정보는,
    상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 소프트웨어를 구성하는 복수의 프로그램 블록 각각이 실행된 횟수 또는 기간에 관한 정보를 포함하는 것을 특징으로 하는 서버.
  14. 삭제
  15. ◈청구항 15은(는) 설정등록료 납부시 포기되었습니다.◈
    제 13 항에 있어서,
    상기 프로세서는,
    상기 벤치마크 포인트가 삽입된 소프트웨어가 실행되는 동안 상기 프로그램 블록이 실행된 횟수가 적을수록 또는 실행된 시간이 짧을수록 상기 프로그램 블록의 난독화 레벨을 높게 판단하는 것을 특징으로 하는 서버.
  16. 삭제
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 복수의 난독화 기법은,
    데이터 난독화, 제어 난독화, 구획(Layout) 난독화, 집합 난독화, 예방 난독화 및 코드/데이터 암호화 중 적어도 2개 이상을 포함하는 것을 특징으로 하는 서버.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 프로세서는,
    상기 전자 장치의 사용자에 의해 지정된 상기 소프트웨어의 난독화 레벨에 관한 정보가 상기 전자 장치로부터 수신되면, 상기 실행 프로파일 정보 및 상기 수신된 난독화 레벨에 관한 정보에 기초하여 상기 난독화를 수행하는 것을 특징으로 하는 서버.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 프로세서는,
    상기 벤치마크 포인트가 삽입된 소프트웨어에 대해 난독화를 수행하는 것을 특징으로 하는 서버.
  20. ◈청구항 20은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 프로세서는,
    상기 난독화된 소프트웨어를 상기 전자 장치로 전송하도록 상기 통신부를 제어하고, 상기 전자 장치가 배포 서버로 업로드한 상기 난독화된 소프트웨어가 사용자 단말 장치로 다운로드되어 실행되면, 상기 사용자 단말 장치로부터 상기 소프트웨어의 상기 기설정된 부분이 실행된 실행 프로파일 정보를 수신하며, 상기 사용자 단말 장치로부터 수신된 실행 프로파일 정보에 기초하여 상기 소프트웨어에 대한 난독화를 재 수행하고, 상기 난독화가 재 수행된 소프트웨어를 상기 사용자 단말 장치로 전송하도록 상기 통신부를 제어하는 것을 특징으로 하는 서버.
KR1020180129323A 2018-10-26 2018-10-26 서버 및 서버의 제어 방법 KR102663589B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180129323A KR102663589B1 (ko) 2018-10-26 2018-10-26 서버 및 서버의 제어 방법
PCT/KR2019/009322 WO2020085623A1 (ko) 2018-10-26 2019-07-26 서버 및 서버의 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180129323A KR102663589B1 (ko) 2018-10-26 2018-10-26 서버 및 서버의 제어 방법

Publications (2)

Publication Number Publication Date
KR20200047187A KR20200047187A (ko) 2020-05-07
KR102663589B1 true KR102663589B1 (ko) 2024-05-09

Family

ID=70330336

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180129323A KR102663589B1 (ko) 2018-10-26 2018-10-26 서버 및 서버의 제어 방법

Country Status (2)

Country Link
KR (1) KR102663589B1 (ko)
WO (1) WO2020085623A1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180196958A1 (en) * 2016-04-22 2018-07-12 International Business Machines Corporation Automatic Audit Logging of Events in Software Applications Performing Regulatory Workloads

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999001815A1 (en) * 1997-06-09 1999-01-14 Intertrust, Incorporated Obfuscation techniques for enhancing software security
JP5496880B2 (ja) * 2007-05-22 2014-05-21 イルデト・コーポレート・ビー・ヴイ データセキュリティ
US10102398B2 (en) * 2009-06-01 2018-10-16 Ab Initio Technology Llc Generating obfuscated data
US9116712B2 (en) * 2013-02-28 2015-08-25 Microsoft Technology Licensing, Llc Compile based obfuscation

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180196958A1 (en) * 2016-04-22 2018-07-12 International Business Machines Corporation Automatic Audit Logging of Events in Software Applications Performing Regulatory Workloads

Also Published As

Publication number Publication date
WO2020085623A1 (ko) 2020-04-30
KR20200047187A (ko) 2020-05-07

Similar Documents

Publication Publication Date Title
US20160203087A1 (en) Method for providing security for common intermediate language-based program
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
US9992678B2 (en) Network locking or card locking method and device for a mobile terminal, terminal, SIM card, storage media
EP3035228B1 (en) Code integrity protection by computing target addresses from checksums
WO2011134207A1 (zh) 软件保护方法
KR101695639B1 (ko) 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템
US8904492B2 (en) Method of controlling information processing system, computer-readable recording medium storing program for controlling apparatus
US9256756B2 (en) Method of encryption and decryption for shared library in open operating system
CN108134673A (zh) 一种生成白盒库文件的方法及装置
CN107526947A (zh) 一种嵌入式软件激活控制方法
US11308238B2 (en) Server and method for identifying integrity of application
EP2937803B1 (en) Control flow flattening for code obfuscation where the next block calculation needs run-time information
CN105812313A (zh) 恢复会话的方法和服务器、生成会话凭证的方法和装置
CN107292132B (zh) 用于安卓系统的共享对象文件的加载方法与装置
US20180013551A1 (en) Apparatus for obfuscating and restoring program execution code and method thereof
KR101557455B1 (ko) 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법
KR102663589B1 (ko) 서버 및 서버의 제어 방법
CN110855656B (zh) 可实现应用服务器防护的插件流量代理方法、装置及系统
KR101667774B1 (ko) 스크립트 프로그램을 위한 보안 제공 장치 및 방법
KR101863325B1 (ko) 역공학 방지 방법 및 장치
KR20220005933A (ko) 클라우드 서버 및 이의 제어 방법
CN103530169A (zh) 虚拟机文件保护方法和用户终端
CN111885063B (zh) 开源系统访问管控方法、装置、设备及存储介质
KR102145324B1 (ko) 라이브러리 인젝션을 통한 취약점 분석 방법 및 서버
CN113177222A (zh) 一种动态库处理方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant