KR20090032701A - 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 - Google Patents

하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 Download PDF

Info

Publication number
KR20090032701A
KR20090032701A KR1020070098147A KR20070098147A KR20090032701A KR 20090032701 A KR20090032701 A KR 20090032701A KR 1020070098147 A KR1020070098147 A KR 1020070098147A KR 20070098147 A KR20070098147 A KR 20070098147A KR 20090032701 A KR20090032701 A KR 20090032701A
Authority
KR
South Korea
Prior art keywords
software
value
hardware
variable
variable value
Prior art date
Application number
KR1020070098147A
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 KR1020070098147A priority Critical patent/KR20090032701A/ko
Publication of KR20090032701A publication Critical patent/KR20090032701A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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]
    • 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/602Providing cryptographic facilities or services
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명은 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체에 관한 것이다.
본 발명은 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 보호하기 위한 방법에 있어서, (a) 상기 특정 하드웨어 장치의 하드웨어 고유번호(HID)를 검출하는 하드웨어 고유번호 검출 단계; (b) 상기 하드웨어 고유번호(HID)를 해쉬함수(Hash Function)에 적용하여 해쉬함수 값(H)을 생성하는 해쉬함수 값 생성 단계; (c) 상기 소프트웨어에 대한 소스코드(Source Code) 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 생성하는 변수 값 암호화 단계; 및 (d) 상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 소프트웨어 난독화 단계를 포함하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법을 제공한다.
본 발명에 의하면, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 되고, 공격자에 의한 소프트웨어 내부 변수 값 연분석을 막을 수 있게 되어, 소프트웨어에 대한 불법 복제 및 불법 이용을 방지하고, 아울러 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 효과가 있다.
소프트웨어, 보호, 하드웨어 고유번호, 해쉬함수

Description

하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체{Method and Storage Medium for Protecting Software with Hardware ID}
본 발명은 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체에 관한 것이다. 더욱 상세하게는, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 되고, 공격자에 의한 소프트웨어 내부 변수 값 연분석을 막을 수 있게 되어, 소프트웨어에 대한 불법 복제 및 불법 이용을 방지하고, 아울러 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 효과가 있는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체에 관한 것이다.
요즘은, 가정, 학교 및 회사 등 모든 곳에서 컴퓨터, 핸드셋(Handset), 셋탑박스(Settop Box) 및 게임기 등을 포함한 수많은 디지털 장치 또는 하드웨어 장치를 이용하고 있으며, 이러한 디지털 장치 또는 하드웨어 장치의 보급 및 이용과 함께, 여러가지 용도 및 목적을 가진 수많은 소프트웨어(Software)가 사용자들에 의 해서 이용되고 있다. 이러한 소프트웨어(Software)를 응용프로그램 또는 애플리케이션(Application)이라고 한다.
하드웨어 장치 및 소프트웨어의 보급에 따라, 소프트웨어를 불법적으로 복제하고 이용하고자하는 악의적인 사용자 또한 증가하고 있으며, 불법적인 복제 및 이용의 기술 또한 발전해가고 있는 상황이다. 특히 심각한 것은, 소프트웨어 내부 변수 값을 연분석 하여, 소프트웨어에 탑재되어 있는 불법 복제 방지 알고리즘 및 장치를 무력화시켜서 불법적으로 복제하거나 이용하는 것이다.
이러한 소프트웨어의 불법 복제 및 불법 이용에 대한 방지 기술에는 소프트웨어 불법 복제 및 불법 이용 방지용 하드웨어 장치를 추가로 이용하여 사용자 또는 사용자의 하드웨어 장치를 인증하는 절차를 수행함으로써, 악의적이고 불법적인 사용자를 사전에 막는 방법이 있다.
하지만, 이러한 종래의 소프트웨어 불법 복제 및 불법 이용 방지 기술은 추가적인 하드웨어 장치를 요구함으로써, 소프트웨어를 보호하는 데 드는 비용을 증가시키는 문제점이 있다.
또한, 이러한 종래의 소프트웨어 불법 복제 및 불법 이용 방지 기술에서는, 악의적인 사용자가 정상적인 사용자에 대한 정보 및 정상적인 사용자의 하드웨어 장치에 대한 정보만 습득하게 되면, 해당 소프트웨어를 아무 문제없이 불법적으로 복제하거나 이용할 수 있는 문제점이 발생한다.
이러한 문제점을 해결하기 위한 본 발명의 목적은, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 하여, 소프트웨어의 불법 이용을 방지하는 데 있다.
본 발명의 다른 목적은, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 소프트웨어 내부 변수 값을 역분석하여 소프트웨어를 불법 복제하거나 불법 이용하려는 공격을 막는 데 있다.
본 발명의 또 다른 목적은, 소프트웨어 보호를 위해서 하드웨어 고유 번호 및 해쉬함수를 이용한 소프트웨어적인 방법을 이용함으로써, 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 데 있다.
이러한 목적을 달성하기 위한 본 발명의 한 측면에 따르면, 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 보호하기 위한 방법에 있어서, (a) 상기 특정 하드웨어 장치의 하드웨어 고유번호(HID)를 검출하는 하드웨어 고유번호 검출 단계; (b) 상기 하드웨어 고유번호(HID)를 해쉬함수(Hash Function)에 적용하여 해쉬함수 값(H)을 생성하는 해쉬함수 값 생성 단계; (c) 상기 소프트웨어에 대한 소스코드(Source Code) 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 생성하는 변수 값 암호화 단계; 및 (d) 상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 소프트웨어 난독화 단계를 포함하는 것을 특징으로 하는 하드웨 어 고유번호에 기반한 소프트웨어 보호 방법을 제공한다.
이러한 목적을 달성하기 위한 본 발명의 다른 한 측면에 따르면, 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 기록한 저장매체에 있어서, 상기 특정 하드웨어의 하드웨어 고유번호(HID)를 검출하는 기능; 상기 하드웨어 고유번호를 해쉬함수(HaS1h Function)에 적용하여 해쉬함수 값(H)을 구하는 기능; 상기 소프트웨어에 대한 프로그램의 소스코드 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 구하는 기능; 및 상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 기능을 구현하는 프로그램 및 정보를 기록한 컴퓨터로 읽을 수 있는 저장매체를 제공한다.
이상에서 설명한 바와 같이 본 발명에 의하면, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 되고, 공격자에 의한 소프트웨어 내부 변수 값 연분석을 막을 수 있게 되어, 소프트웨어에 대한 불법 복제 및 불법 이용을 방지하는 효과가 있다.
또한 본 발명을 이용하면, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함에 있어서, 소프트웨어적인 방법을 이용함으로써, 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 효과가 있다.
이하, 본 발명의 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 우선 각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 당업자에게 자명하거나 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
도 1은 본 발명에 실시예에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 방법에 대한 흐름도이다.
도 1을 참조하면, 본 발명에 따른 하드웨어 고유번호에 기반한 소프트웨어(110) 보호 방법은 하드웨어 고유번호 검출 단계(S100), 해쉬함수 값 생성 단계(S102), 변수 값 암호화 단계(S104) 및 소프트웨어 난독화 단계(S106)를 포함하여 수행된다.
하드웨어 고유번호 검출 단계(S100)는 특정 하드웨어 장치의 하드웨어 고유번호(Hardware ID: HID)를 검출하는 단계이다.
해쉬함수 값 생성 단계(S102)는 하드웨어 고유번호(HID)를 해쉬함수(Hash Function)에 적용하여 해쉬함수 값(H)을 생성하는 단계이고, 하기 수학식 1을 이용하여 구할 수 있다.
Figure 112007070182111-PAT00001
HID : 특정 하드웨어 장치로부터 수집한 하드웨어 고유번호(Hardward ID)
Hash(): 암호학적인 일방향 해쉬함수
H : 해쉬함수 값
이러한 해쉬함수 값 생성 단계(S102)에서의 해쉬함수 값(H)은 하드웨어 고유번호(HID)를 암호학적인 일방향 해쉬함수에 대입하여 얻어진 값으로서, 하드웨어 고유번호(HID) 및 적어도 하나 이상의 임의의 변수(Xi)를 추가로 대입하여 생성될 수 있으며, 아래의 수학식 2를 이용하여 구해질 수 있다.
Figure 112007070182111-PAT00002
HID : 특정 하드웨어 장치로부터 수집한 하드웨어 고유번호(Hardward ID)
Xi : 임의로 생성된 변수(i=1, 2, ...)
Hash(): 암호학적인 일방향 해쉬함수
H : 해쉬함수 값
변수 값 암호화 단계(S104)는 소프트웨어(110)에 대한 소스코드(Source Code) 상의 변수 값(Value)과 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 변수 값에 대한 암호 변수 값(S)을 생성하는 단계이며, 암호 변수 값(S)은 하기 수학식 3을 이용하여 구해질 수 있다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
Figure 112007070182111-PAT00003
H : 해쉬함수 값
Value : 소스코드 상에 있는 바꾸고자 하는 변수 값
S : 암호 변수 값
소프트웨어 난독화 단계(S106)는 암호 변수 값(S)을 소스코드에 적용하여 소프트웨어(110)를 난독화시키는 단계이다.
전술한 변수 값 암호화 단계(S104) 이후, 암호 변수 값(S)을 해쉬함수 값(H)과 임의의 연산 방법으로 연산하여 변수 값(Value)에 대한 2차 암호 변수 값(S2)을 생성하는 변수값 2차 암호화 단계를 추가로 포함할 수 있으며, 하기 수학식 4를 이 용하여 구할 수 있다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
Figure 112007070182111-PAT00004
H : 해쉬함수 값
S : 암호 변수 값
S2 : 2차 암호 변수 값
이러한 변수값 2차 암호화 단계 추가시에는, 변수값 2차 암호화 단계 이후, 2차 암호 변수 값(S2)을 다시 암호 변수 값(S)으로 설정하여 전술한 소프트웨어 난독화 단계(S106)를 수행하면 된다.
소스코드상에 있는 변수값(Value)을 암호화된 암호 변수 값(S)으로 바꾸고자 함에 있어서, 소프트웨어(110) 난독화 정도에 따라 변수 값을 암호화하는 과정을 반복 수행함으로써 암호화 1차 암호 변수 값(S1=S), 2차 암호 변수 값(S2), 3차 암호 변수 값(S3) 및 고차 암호 변수 값을 구할 수도 있다. 이렇게 구해질 수 있는 암 호 변수 값을 일반화하면 하기 수학식 5와 같다. 즉, 위에서 언급한 수학식 3을 일반화한 것이다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
Figure 112007070182111-PAT00005
H : 해쉬함수 값
Si : i차 암호 변수 값 (단, S1 = S = 암호 변수 값, i=1, 2, 3, ...)
Sn : n차 암호 변수 값
이렇게 n차례 암호화 과정을 반복수행한 이후 구해진 n차 암호 변수 값(Sn)을 다시 암호 변수 값(S)으로 설정하여 전술한 소프트웨어 난독화 단계(S106)를 수행하면 된다.
전술한 소프트웨어 난독화 단계(S106)는 암호 변수 값(S)이 적용된 소스코드를 컴파일(Compile) 및 링킹(Linking)하여 소프트웨어 모듈 1, 소프트웨어 모듈 2 및 소프트웨어 모듈 3가 포함된 해당 소프트웨어(110)를 난독화시키는 단계이다. 즉, 전술한 소프트웨어 난독화 단계(S106)는 암호 변수 값(S)이 적용된 소스코드에 대한 컴파일 및 링킹을 수행하여 소프트웨어를 난독화함으로써, 소프트웨어(110)의 불법 복제 및 불법 이용을 방지할 수 있게 해준다.
요약하면, 본 발명에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 기능은 하드웨어 고유번호를 이용하여서 가능하며, 또한 하드웨어 고유번호를 이용하여 소스코드 상의 변수를 임의의(Random) 암호화된 암호 변수 값으로 바꾸어 적용함으로써 수행되는 것이다.
하드웨어 고유번호는 해당 소프트웨어(110)가 실행될 때 특정 하드웨어 장치로부터 직접 얻어지는 값으로 소스코드 상에 나타나지 않기 때문에, 해당 소프트웨어(110)를 불법적으로 이용하거나 복제하려는 공격자가 알 수가 없는 정보이다.
또한, 소스코드 상에 있는 변수 값(Value)과 이러한 변수 값(Value)을 하드웨어 고유 번호, 임의의 변수(Xi) 및 해쉬함수(Hash Function)를 이용하여 임의(Random)로 얻은 암호 변수 값(S)과는 연관성이 없으므로, 공격자가 소스코드 상에 있는 변수 값(Value)을 알아내기가 어렵게 되어, 공격자가 소프트웨어(110) 내부 변수 값을 역분석하여 소프트웨어(110)를 불법 복제하거나 불법 이용하는 것을 방지할 수 있게 되는 것이다.
한편, 본 발명에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 기능은 소프트웨어의 불법 복제 및 불법이용을 방지하기 위한 별도의 하드웨어 장치를 이용하지 않고 수행되므로, 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감할 수 있다.
본 발명에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 기능을 구비한 소프트웨어를 온라인(On-Line) 방식 또는 오프라인(Off-Line) 방식으로 실행할 수 있는 특정 하드웨어 장치는 컴퓨터, 핸드셋(Handset), 셋탑박스(Settop Box) 및 게임기를 포함하는 디지털 장치 중 하나가 된다.
도 2는 본 발명에 실시예에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 방법을 예시한 도면이다.
도 2는 2개의 하드웨어 장치(210 및 220)가 상기 도 1을 참조하여 전술한 하드웨어 고유번호에 기반한 소프트웨어 보호 방법이 적용하여 난독화된 소프트웨어 모듈 1(301), 난독화된 소프트웨어 모듈 2(302) 및 난독화된 소프트웨어 모듈 3(303)이 포함된 난독화된 소프트웨어(200)를 실행하고자 한 상황에 대하여 예시한 도면이며, 해당 소프트웨어(200)를 실행하고자 하는 2개의 하드웨어 장치는 소프트웨어 모듈 1(301), 소프트웨어 모듈 2(302) 및 소프트웨어 모듈 3(303)이 포함된 해당 소프트웨어(200)의 정상적인 실행이 가능한 특정 하드웨어 장치(210)와 해당 소프트웨어(200)를 불법적으로 이용하고자 하는 불법 하드웨어 장치(220)가 있다. 후자인 불법 하드웨어 장치(220)는 해당 소프트웨어(200)에 대한 불법 이용 및 불법 복제가 불가능해야 한다.
먼저, 소프트웨어 모듈 1(301), 소프트웨어 모듈 2(302) 및 소프트웨어 모듈 3(303)이 포함된 해당 소프트웨어(200)를 난독화하는 과정에서 하드웨어 고유번호로써 HID 1을 적용하였기 때문에, HID 1을 하드웨어 고유번호로 가진 특정 하드웨어 장치(210)는 해당 소프트웨어(200)를 정상적으로 실행하여 이용할 수 있게 된 다.
하지만, 해당 소프트웨어(200)를 난독화하는 과정에서 적용한 HID 1에 해당하지 않는 하드웨어 고유번호인 HID 2를 가진 불법 하드웨어 장치(220)는 해당 소프트웨어(200)를 정상적으로 실행하여 이용할 수 없으며, 복제할 수도 없게 된다.
이것은 하드웨어 고유번호가 해당 소프트웨어가 실행될 때 특정 하드웨어 장치로부터 직접 얻어지는 값이므로 소스코드 상에 나타나지 않는 특성과 소스코드 상에 있는 변수 값(Value)과 이러한 변수 값(Value)을 하드웨어 고유 번호, 임의의 변수(Xi) 및 해쉬함수(Hash Function)를 이용하여 임의(Random)로 얻은 암호 변수 값(S)과는 연관성이 없다는 특성으로 인하여, 해당 소프트웨어(200)를 공격자인 불법 하드웨어 장치(220)가 소스코드 상에 있는 변수 값(Value)을 알아내기가 어렵게 되어, 공격자인 불법 하드웨어 장치(220)가 소프트웨어(200) 내부 변수 값을 역분석하여 소프트웨어(200)를 불법 복제하거나 불법 이용하는 것을 방지할 수 있게 되는 것이다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석 되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
이상 설명한 바와 같이, 본 발명은 소프트웨어 보호 기술 분야에 적용되어, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 되고, 공격자에 의한 소프트웨어 내부 변수 값 연분석을 막을 수 있게 되어, 소프트웨어에 대한 불법 복제 및 불법 이용을 방지하고, 아울러 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 효과가 있는 매우 유용한 발명이다.
도 1은 본 발명에 실시예에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 방법에 대한 흐름도,
도 2는 본 발명에 실시예에 따른 하드웨어 고유번호에 기반한 소프트웨어 보호 방법을 예시한 도면이다.
< 도면의 주요 부분에 대한 부호의 설명 >
110: 소프트웨어(Software)
210: 특정 하드웨어 장치
220: 불법 하드웨어 장치

Claims (8)

  1. 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 보호하기 위한 방법에 있어서,
    (a) 상기 특정 하드웨어 장치의 하드웨어 고유번호(HID)를 검출하는 하드웨어 고유번호 검출 단계;
    (b) 상기 하드웨어 고유번호(HID)를 해쉬함수(Hash Function)에 적용하여 해쉬함수 값(H)을 생성하는 해쉬함수 값 생성 단계;
    (c) 상기 소프트웨어에 대한 소스코드(Source Code) 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 생성하는 변수 값 암호화 단계; 및
    (d) 상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 소프트웨어 난독화 단계
    를 포함하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  2. 제 1항에 있어서,
    상기 (b)단계에서의 상기 해쉬함수 값(H)은,
    상기 하드웨어 고유번호(HID)를 상기 해쉬함수에 대입하여 얻어진 값으로서, 상기 하드웨어 고유번호(HID) 및 적어도 하나 이상의 임의의 변수(Xi)를 추가로 대입하여 생성되는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  3. 제 1항에 있어서,
    상기 (c)단계 이후,
    상기 암호 변수 값(S)을 상기 해쉬함수 값(H)과 상기 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 2차 암호 변수 값(S2)을 생성하는 변수값 2차 암호화 단계를 추가로 포함하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  4. 제 3항에 있어서,
    상기 임의의 연산 방법은,
    문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나 인 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  5. 제 3항에 있어서,
    상기 변수값 2차 암호화 단계 이후,
    상기 2차 암호 변수 값(S2)을 상기 암호 변수 값(S)으로 설정하여 상기 (d)단계를 수행하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  6. 제 1항 또는 제 5항에 있어서,
    상기 (d)단계는,
    상기 암호 변수 값(S)이 적용된 상기 소스코드에 대한 컴파일(Compile) 및 링킹(Linking)을 수행하여 상기 소프트웨어를 난독화하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  7. 제 1항에 있어서,
    상기 특정 하드웨어 장치는,
    상기 소프트웨어를 실행할 수 있는 컴퓨터, 핸드셋(Handset), 셋탑박 스(Settop Box) 및 게임기를 포함하는 디지털 장치 중 하나인 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
  8. 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 기록한 저장매체에 있어서,
    상기 특정 하드웨어의 하드웨어 고유번호(HID)를 검출하는 기능;
    상기 하드웨어 고유번호를 해쉬함수(HaS1h Function)에 적용하여 해쉬함수 값(H)을 구하는 기능;
    상기 소프트웨어에 대한 프로그램의 소스코드 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 구하는 기능; 및
    상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 기능
    을 구현하는 프로그램 및 정보를 기록한 컴퓨터로 읽을 수 있는 저장매체.
KR1020070098147A 2007-09-28 2007-09-28 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 KR20090032701A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070098147A KR20090032701A (ko) 2007-09-28 2007-09-28 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070098147A KR20090032701A (ko) 2007-09-28 2007-09-28 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체

Publications (1)

Publication Number Publication Date
KR20090032701A true KR20090032701A (ko) 2009-04-01

Family

ID=40759464

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070098147A KR20090032701A (ko) 2007-09-28 2007-09-28 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체

Country Status (1)

Country Link
KR (1) KR20090032701A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120032477A (ko) * 2009-05-06 2012-04-05 어데토 캐나다 코포레이션 화이트박스 암호화를 사용하는 연동 바이너리 보호 방법
CN103886229A (zh) * 2014-03-10 2014-06-25 珠海市君天电子科技有限公司 一种提取pe文件特征的方法及装置
KR102228040B1 (ko) * 2020-03-02 2021-03-15 군산대학교산학협력단 데이터 암호화 백업 방법 및 데이터 복원 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120032477A (ko) * 2009-05-06 2012-04-05 어데토 캐나다 코포레이션 화이트박스 암호화를 사용하는 연동 바이너리 보호 방법
CN103886229A (zh) * 2014-03-10 2014-06-25 珠海市君天电子科技有限公司 一种提取pe文件特征的方法及装置
KR102228040B1 (ko) * 2020-03-02 2021-03-15 군산대학교산학협력단 데이터 암호화 백업 방법 및 데이터 복원 방법

Similar Documents

Publication Publication Date Title
Collberg et al. Watermarking, tamper-proofing, and obfuscation-tools for software protection
US7549147B2 (en) Security framework for protecting rights in computer software
US7366914B2 (en) Source code transformation based on program operators
US7555780B2 (en) Information security method and system
AU2017262658B2 (en) Method and apparatus for dynamic executable verification
US20040115860A1 (en) Method to manufacture a phase change memory
CN106650341A (zh) 基于smali流程混淆技术的Android应用加固方法
US11475166B2 (en) Compiling device and method
Chen et al. Leveraging information asymmetry to transform android apps into self-defending code against repackaging attacks
Kohnhäuser et al. PUF-based software protection for low-end embedded devices
US20120079462A1 (en) Systems and methods of source software code obfuscation
CN115473678A (zh) 一种基于sgx与智能合约的可控数据共享方法
Ceccato et al. Codebender: Remote software protection using orthogonal replacement
Cappaert et al. Self-encrypting code to protect against analysis and tampering
Zhu et al. Protection against indirect overflow attacks on pointers
KR20090032701A (ko) 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체
US20150262084A1 (en) Methods for defending static and dynamic reverse engineering of software license control and devices thereof
Lee et al. Classification and analysis of security techniques for the user terminal area in the internet banking service
Gautam et al. A novel software protection approach for code obfuscation to enhance software security
Zhu et al. Obfuscate arrays by homomorphic functions
Lee et al. Tamper resistant software by integrity-based encryption
Valdez et al. Software disengineering: Program hiding architecture and experiments
Plasmans White-box cryptography for digital content protection
JP2005266887A (ja) プログラム難読化装置、プログラム配布システム、コンピュータプログラム
Verslype et al. A flexible and open DRM framework

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application