KR20090032701A - 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 - Google Patents
하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를위한 저장매체 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000012152 algorithmic method Methods 0.000 abstract 1
- 230000002265 prevention Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation 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
본 발명은 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체에 관한 것이다. 더욱 상세하게는, 소프트웨어의 소스코드 상의 변수 값을 특정 하드웨어 고유 번호 및 해쉬함수를 이용하여 해당 소프트웨어를 난독화함으로써, 특정 하드웨어 고유번호를 가진 하드웨어 장치만이 소프트웨어를 정상적으로 실행할 수 있게 되고, 공격자에 의한 소프트웨어 내부 변수 값 연분석을 막을 수 있게 되어, 소프트웨어에 대한 불법 복제 및 불법 이용을 방지하고, 아울러 소프트웨어 보호를 위한 추가적인 하드웨어 장치 구비에 따른 비용을 절감하는 효과가 있는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법 및 그를 위한 저장매체에 관한 것이다.
요즘은, 가정, 학교 및 회사 등 모든 곳에서 컴퓨터, 핸드셋(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을 이용하여 구할 수 있다.
HID : 특정 하드웨어 장치로부터 수집한 하드웨어 고유번호(Hardward ID)
Hash(): 암호학적인 일방향 해쉬함수
H : 해쉬함수 값
이러한 해쉬함수 값 생성 단계(S102)에서의 해쉬함수 값(H)은 하드웨어 고유번호(HID)를 암호학적인 일방향 해쉬함수에 대입하여 얻어진 값으로서, 하드웨어 고유번호(HID) 및 적어도 하나 이상의 임의의 변수(Xi)를 추가로 대입하여 생성될 수 있으며, 아래의 수학식 2를 이용하여 구해질 수 있다.
HID : 특정 하드웨어 장치로부터 수집한 하드웨어 고유번호(Hardward ID)
Xi : 임의로 생성된 변수(i=1, 2, ...)
Hash(): 암호학적인 일방향 해쉬함수
H : 해쉬함수 값
변수 값 암호화 단계(S104)는 소프트웨어(110)에 대한 소스코드(Source Code) 상의 변수 값(Value)과 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 변수 값에 대한 암호 변수 값(S)을 생성하는 단계이며, 암호 변수 값(S)은 하기 수학식 3을 이용하여 구해질 수 있다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
H : 해쉬함수 값
Value : 소스코드 상에 있는 바꾸고자 하는 변수 값
S : 암호 변수 값
소프트웨어 난독화 단계(S106)는 암호 변수 값(S)을 소스코드에 적용하여 소프트웨어(110)를 난독화시키는 단계이다.
전술한 변수 값 암호화 단계(S104) 이후, 암호 변수 값(S)을 해쉬함수 값(H)과 임의의 연산 방법으로 연산하여 변수 값(Value)에 대한 2차 암호 변수 값(S2)을 생성하는 변수값 2차 암호화 단계를 추가로 포함할 수 있으며, 하기 수학식 4를 이 용하여 구할 수 있다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
H : 해쉬함수 값
S : 암호 변수 값
S2 : 2차 암호 변수 값
이러한 변수값 2차 암호화 단계 추가시에는, 변수값 2차 암호화 단계 이후, 2차 암호 변수 값(S2)을 다시 암호 변수 값(S)으로 설정하여 전술한 소프트웨어 난독화 단계(S106)를 수행하면 된다.
소스코드상에 있는 변수값(Value)을 암호화된 암호 변수 값(S)으로 바꾸고자 함에 있어서, 소프트웨어(110) 난독화 정도에 따라 변수 값을 암호화하는 과정을 반복 수행함으로써 암호화 1차 암호 변수 값(S1=S), 2차 암호 변수 값(S2), 3차 암호 변수 값(S3) 및 고차 암호 변수 값을 구할 수도 있다. 이렇게 구해질 수 있는 암 호 변수 값을 일반화하면 하기 수학식 5와 같다. 즉, 위에서 언급한 수학식 3을 일반화한 것이다. 여기서, 임의의 연산 방법은 문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나이다.
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)
- 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 보호하기 위한 방법에 있어서,(a) 상기 특정 하드웨어 장치의 하드웨어 고유번호(HID)를 검출하는 하드웨어 고유번호 검출 단계;(b) 상기 하드웨어 고유번호(HID)를 해쉬함수(Hash Function)에 적용하여 해쉬함수 값(H)을 생성하는 해쉬함수 값 생성 단계;(c) 상기 소프트웨어에 대한 소스코드(Source Code) 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 생성하는 변수 값 암호화 단계; 및(d) 상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 소프트웨어 난독화 단계를 포함하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 1항에 있어서,상기 (b)단계에서의 상기 해쉬함수 값(H)은,상기 하드웨어 고유번호(HID)를 상기 해쉬함수에 대입하여 얻어진 값으로서, 상기 하드웨어 고유번호(HID) 및 적어도 하나 이상의 임의의 변수(Xi)를 추가로 대입하여 생성되는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 1항에 있어서,상기 (c)단계 이후,상기 암호 변수 값(S)을 상기 해쉬함수 값(H)과 상기 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 2차 암호 변수 값(S2)을 생성하는 변수값 2차 암호화 단계를 추가로 포함하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 3항에 있어서,상기 임의의 연산 방법은,문자열이 쉽게 드러나지 않도록 문자열을 변환하는 문자열 변화 연산 방법 및 특정 변수의 값이 쉽게 드러나지 않게 하기 위해 특정 변수의 값을 여러 변수의 조합으로 바꾸는 변수 분할 연산 방법을 포함하는 프로그램 난독화 연산 방법 중 하나 인 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 3항에 있어서,상기 변수값 2차 암호화 단계 이후,상기 2차 암호 변수 값(S2)을 상기 암호 변수 값(S)으로 설정하여 상기 (d)단계를 수행하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 1항 또는 제 5항에 있어서,상기 (d)단계는,상기 암호 변수 값(S)이 적용된 상기 소스코드에 대한 컴파일(Compile) 및 링킹(Linking)을 수행하여 상기 소프트웨어를 난독화하는 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 제 1항에 있어서,상기 특정 하드웨어 장치는,상기 소프트웨어를 실행할 수 있는 컴퓨터, 핸드셋(Handset), 셋탑박 스(Settop Box) 및 게임기를 포함하는 디지털 장치 중 하나인 것을 특징으로 하는 하드웨어 고유번호에 기반한 소프트웨어 보호 방법.
- 특정 하드웨어 장치에 의해서 실행되는 소프트웨어를 기록한 저장매체에 있어서,상기 특정 하드웨어의 하드웨어 고유번호(HID)를 검출하는 기능;상기 하드웨어 고유번호를 해쉬함수(HaS1h Function)에 적용하여 해쉬함수 값(H)을 구하는 기능;상기 소프트웨어에 대한 프로그램의 소스코드 상의 변수 값(Value)과 상기 해쉬함수 값(H)을 임의의 연산 방법으로 연산하여 상기 변수 값에 대한 암호 변수 값(S)을 구하는 기능; 및상기 암호 변수 값(S)을 상기 소스코드에 적용하여 상기 소프트웨어를 난독화시키는 기능을 구현하는 프로그램 및 정보를 기록한 컴퓨터로 읽을 수 있는 저장매체.
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)
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 | 군산대학교산학협력단 | 데이터 암호화 백업 방법 및 데이터 복원 방법 |
-
2007
- 2007-09-28 KR KR1020070098147A patent/KR20090032701A/ko not_active Application Discontinuation
Cited By (3)
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 | |
US7555780B2 (en) | Information security method and system | |
CA3023939C (en) | Method and apparatus for dynamic executable verification | |
US20050050355A1 (en) | Securing distributable content against hostile attacks | |
US20040115860A1 (en) | Method to manufacture a phase change memory | |
Cappaert et al. | Towards tamper resistant code encryption: Practice and experience | |
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 |