KR101408388B1 - Watermarking apparatus and method for protecting software property right - Google Patents

Watermarking apparatus and method for protecting software property right Download PDF

Info

Publication number
KR101408388B1
KR101408388B1 KR1020130030844A KR20130030844A KR101408388B1 KR 101408388 B1 KR101408388 B1 KR 101408388B1 KR 1020130030844 A KR1020130030844 A KR 1020130030844A KR 20130030844 A KR20130030844 A KR 20130030844A KR 101408388 B1 KR101408388 B1 KR 101408388B1
Authority
KR
South Korea
Prior art keywords
instructions
basic block
dependency
watermarking
watermark
Prior art date
Application number
KR1020130030844A
Other languages
Korean (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 서울대학교산학협력단
Application granted granted Critical
Publication of KR101408388B1 publication Critical patent/KR101408388B1/en

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/16Program or content traceability, e.g. by watermarking
    • 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/106Enforcing content protection by specific content processing
    • G06F21/1063Personalisation

Abstract

Disclosed are a watermarking device and a method to protect software copyright. The disclosed watermarking device includes: a bit line generating part generating a bit line used as a watermark; a dependent graph generating part generating two or more dependent graphs by reallocating the execution command orders based on a dependent relationship established between the partial commands of the commands in regard to a basic block forming an execution code of the software including the commands; and a basic block transforming part transforming the basic block by selecting a dependent graph of a turn corresponding to the generating bit line among the dependent graphs, and reallocating the execution order of the commands in the basic block. The turn of the selected dependent graph is used as the watermark.

Description

소프트웨어 저작권 보호를 위한 워터마킹 장치 및 방법{WATERMARKING APPARATUS AND METHOD FOR PROTECTING SOFTWARE PROPERTY RIGHT}BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a watermarking apparatus and a watermarking apparatus,

본 발명의 실시예들은 소프트웨어 저작권 보호를 위한 워터마킹 장치 및 방법에 관한 것이다. Embodiments of the present invention are directed to a watermarking apparatus and method for software copyright protection.

소프트웨어 워터마킹 기술은 프로그램의 소스 코드 또는 실행 코드를 대상으로, 원본 프로그램의 기능을 변형시키지 않으면서 특정 정보(워터마크)를 보이지 않게 삽입 및 추출하는 기술이다. 소프트웨어 워터마킹 장치 또는 소프트웨어는 원본 프로그램에 정보를 삽입하는 삽입기와 이 프로그램으로부터 원래의 정보를 추출하는 추출기로 나눌 수 있다.Software watermarking technology is a technology for inserting and extracting specific information (watermark) invisibly without changing the function of the original program, with respect to the source code or executable code of the program. A software watermarking device or software can be divided into an inserter for inserting information into the original program and an extractor for extracting original information from the program.

한편, 워터마킹 기술은 통상 정적 워터마킹과 동적 워터마킹의 두 종류로 나누어 볼 수 있다. 동적 워터마킹은 프로그램 실행 중의 상태를 통해 정보를 삽입 및 추출하는 방법이며 정적 워터마킹은 프로그램을 실행하지 않고 프로그램 실행 파일의 코드를 분석하여 정보를 삽입 및 추출하는 방법이다. On the other hand, the watermarking technique can be generally divided into two types, static watermarking and dynamic watermarking. Dynamic watermarking is a method of inserting and extracting information through a state during program execution. Static watermarking is a method of inserting and extracting information by analyzing code of a program executable file without executing a program.

소프트웨어 워터마킹 기술의 평가 요소는 견고성 또는 은닉성(Robustness, Resilience, Stealthness), 데이터 레이트(data-rate), 효율성 등으로 구분해 볼 수 있다. 견고성은 난독화, 최적화, 역공학 등을 통한 공격으로 얼마나 쉽게 파괴 혹은 분석되는지를 나타내며, 데이터 레이트는 해당 프로그램에 얼마나 많은 정보를 삽입할 수 있는지 나타내고, 효율성은 삽입 후 프로그램의 코드 크기와 실행 시간이 얼마나 증가하는지를 의미한다.The evaluation factors of software watermarking technology can be divided into robustness, resilience, stealthness, data-rate, and efficiency. Robustness indicates how easily it is destroyed or analyzed by attack through obfuscation, optimization, reverse engineering, etc. Data rate shows how much information can be inserted into the program. Efficiency shows the code size of the program after execution and execution time And how much it increases.

일반적으로 동적 워터마킹 방법은 견고성이 높지만 효율성이 매우 낮아 실용성이 떨어지고, 실제로는 정적 워터마킹 방법이 많이 사용된다. 그러나, 정적 워터마킹 방법은 효율성은 높지만 난독화, 최적화 등의 코드 변형을 통해 쉽게 파괴되는 문제점이 있다.Generally, the dynamic watermarking method has high robustness, but its efficiency is very low and practicality is lowered. Actually, a static watermarking method is used in many cases. However, the static watermarking method has high efficiency, but is easily destroyed through code modification such as obfuscation and optimization.

본 발명의 목적은 오류 정정(error-correction)이 가능한 회복력(resilience)있고 신뢰성 있는 워터마킹 기법을 이용한 워터마킹 장치 및 방법을 제공하는 것이다. It is an object of the present invention to provide a watermarking apparatus and method using a resilience and reliable watermarking technique capable of error-correction.

또한 본 발명의 다른 목적은 프로그램 코드, 프로그램의 크기 및 프로그램의 수행속도에 영향을 미치지 않는 워터마크의 삽입이 가능한 워터마킹 장치를 제공한다.Another object of the present invention is to provide a watermarking apparatus capable of inserting a watermark which does not affect the program code, the size of the program, and the execution speed of the program.

상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 소프트웨어의 저작권 보호를 위한 워터마킹 장치에 있어서, 워터마크로 사용되는 비트열을 생성하는 비트열 생성부; 상기 소프트웨어의 실행코드를 구성하며 다수의 명령어들을 포함하는 베이직 블록에 대하여, 상기 명령어들 중 적어도 일부의 명령어들 사이에 성립되는 의존성 관계에 기초하여 상기 명령어들의 실행순서를 재배치하여 2 이상의 의존성 그래프들을 생성하는 의존성 그래프 생성부; 및 상기 2 이상 의존성 그래프들 중에서 상기 생성된 비트열과 대응되는 순번의 의존성 그래프를 선택하고, 상기 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 상기 베이직 블록 내의 명령어들의 실행순서를 재배치하여 상기 베이직 블록을 변형하는 베이직 블록 변형부;를 포함하되, 상기 선택된 의존성 그래프의 순번이 상기 워터마크로 사용되는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치가 제공된다. To achieve the above object, according to a preferred embodiment of the present invention, there is provided a watermarking apparatus for copyright protection of software, comprising: a bit stream generating unit for generating a bit stream used as a watermark; For a basic block comprising executable code of the software and comprising a plurality of instructions, relocating the execution order of the instructions based on a dependency relationship established between instructions of at least some of the instructions, A dependency graph generating unit for generating a dependency graph; Selecting a dependency graph of the sequence number corresponding to the generated bit stream from among the two or more dependency graphs and rearranging the execution order of the instructions in the basic block according to the execution order of the instructions in the selected dependency graph, Wherein a number of the selected dependency graph is used as the watermark, wherein the number of the selected dependency graph is used as the watermark.

상기 생성되는 비트열의 개수 및 상기 2 이상의 의존성 그래프들이 생성되는 베이직 블록의 개수 및 상기 변형되는 베이직 블록의 개수는 n(2 이상의 정수임)개일 수 있다. The number of the generated basic bit blocks and the number of the basic blocks to be generated may be n (an integer of 2 or more).

상기 비트열 생성부는 원 비트열을 구성하는 다수의 비트들 각각을 확장하여 상기 원 비트열보다 큰 확장 비트열을 생성하고, 상기 확장 비트열을 이용하여 상기 n개의 비트열들을 생성할 수 있다. The bitstream generator may generate the n bitstreams using the extended bitstream by expanding each of the plurality of bits constituting the original bitstream to generate an extended bitstream larger than the original bitstream.

상기 비트열 생성부는 그레이 코드를 이용하여 상기 다수의 비트들 각각을 확장할 수 있다. The bitstream generator may extend each of the plurality of bits using a gray code.

상기 비트열 생성부는 중국인의 나머지 정리에 기초하여 상기 확장 비트열과 대응되는 숫자를 n개의 연립합동식들로 분해하고, 상기 n개의 연립합동식들 각각에 포함된 나머지 숫자를 이용하여 상기 n개의 비트열들을 생성할 수 있다. Wherein the bit string generating unit decomposes the number corresponding to the extended bit string into n algebraic joint expressions based on the remaining theorems of the Chinese and generates the n bits using the remaining digits included in each of the n algebraic joint expressions, Columns.

상기 워터마킹 장치는 상기 다수의 명령어들 중 일부의 명령어들과 하나 이상의 더미 명령어 사이의 의존성 관계를 생성하고, 상기 생성된 의존성 관계에 따라 상기 하나 이상의 더미 명령어를 상기 베이직 블록에 삽입하는 더미 명령어 삽입부;를 더 포함할 수 있다. The watermarking apparatus includes a dummy instruction insertion unit for generating a dependency relation between the instructions of some of the plurality of instructions and one or more dummy instructions and inserting the one or more dummy instructions into the basic block in accordance with the generated dependency relation, And < / RTI >

또한, 본 발명의 다른 실시예에 따르면, 소프트웨어의 저작권 보호를 위한 워터마킹 방법에 있어서, 워터마크로 사용되는 비트열을 생성하는 단계; 상기 소프트웨어의 실행코드를 구성하며 다수의 명령어들을 포함하는 베이직 블록에 대하여, 상기 명령어들 중 적어도 일부의 명령어들 사이에 성립되는 의존성 관계에 기초하여 상기 명령어들의 실행순서를 재배치하여 2 이상의 의존성 그래프들을 생성하는 단계; 및 상기 2 이상 의존성 그래프들 중에서 상기 생성된 비트열과 대응되는 순번의 의존성 그래프를 선택하고, 상기 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 상기 베이직 블록 내의 명령어들의 실행순서를 재배치하여 상기 베이직 블록을 변형하는 단계;를 포함하되, 상기 선택된 의존성 그래프의 순번이 상기 워터마크로 사용되는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 방법이 제공된다. According to another embodiment of the present invention, there is provided a watermarking method for copyright protection of software, comprising the steps of: generating a bit stream to be used as a watermark; For a basic block comprising executable code of the software and comprising a plurality of instructions, relocating the execution order of the instructions based on a dependency relationship established between instructions of at least some of the instructions, ; Selecting a dependency graph of the sequence number corresponding to the generated bit stream from among the two or more dependency graphs and rearranging the execution order of the instructions in the basic block according to the execution order of the instructions in the selected dependency graph, Wherein the order of the selected dependency graph is used as the watermark, and a method of watermarking for copyright protection of software is provided.

본 발명에 따르면 워터마크의 일부가 훼손되더라도 오류정정기법을 통하여 용이하게 워터마크를 복구할 수 있는 장점이 있다.According to the present invention, even if a part of the watermark is damaged, the watermark can be easily recovered through an error correction technique.

또한, 본 발명에 따르면 스테가노그래피(Steganography) 형태로 워터마킹을 수행하는바, 대상 프로그램 코드에 영향을 주지 않으며, 프로그램의 크기를 증가 시키지 않고, 프로그램의 수행속도를 저하시키지 않는 장점이 있다. In addition, according to the present invention, watermarking is performed in the form of steganography, which does not affect the target program code and does not increase the size of the program and does not lower the program execution speed.

또한, 본 발명에 따르면 스테가노그래피 형태로 워터마킹을 수행하는바, 워터마킹의 수행시간을 최소화할 수 있는 장점이 있다. In addition, according to the present invention, watermarking is performed in staganographic form, which has the advantage of minimizing the time required for watermarking.

또한, 본 발명에 따르면, 워터마킹의 수행이 프로그램 로직과는 무관하므로, 코드 최적화와 코드 난독화 공격에도 삽입된 워터마크가 쉽게 변조되지 않는 장점이 있다.Further, according to the present invention, since the performance of watermarking is independent of the program logic, there is an advantage that watermarks embedded in code optimization and code obfuscation attacks are not easily modulated.

도 1은 본 발명의 일 실시예에 따른 소프트웨어의 저작권 보호를 위한 워터마킹 장치의 개략적인 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 소프트웨어의 저작권 보호를 위한 워터마킹 방법의 개략적인 구성을 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 비트열 생성부의 동작(비트열 생성 과정)의 세부적인 과정을 도시한 도면이다.
도 4는 본 발명의 일 실시예에 따른 의존성 그래프의 일례들을 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라서, 더미 명령어를 삽입하는 개념을 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 워터마킹의 수행을 위한 안드로이드 프레임워크의 일례를 도시한 도면이다.
1 is a diagram showing a schematic configuration of a watermarking apparatus for copyright protection of software according to an embodiment of the present invention.
2 is a diagram showing a schematic configuration of a watermarking method for copyright protection of software according to an embodiment of the present invention.
FIG. 3 is a diagram illustrating a detailed procedure of an operation (bit stream generation process) of the bit stream generation unit according to an embodiment of the present invention.
4 is a diagram illustrating an example of a dependency graph according to an embodiment of the present invention.
5 is a diagram illustrating a concept of inserting a dummy instruction in accordance with an embodiment of the present invention.
6 is a diagram illustrating an example of an Android framework for performing watermarking according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.

이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일 실시예에 따른 소프트웨어의 저작권 보호를 위한 워터마킹 장치의 개략적인 구성을 도시한 도면이다. 1 is a diagram showing a schematic configuration of a watermarking apparatus for copyright protection of software according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 워터마킹 장치(100)는 비트열 생성부(110), 의존성 그래프 생성부(120), 베이직 블록 변형부(130) 및 더미 명령어 삽입부(140)를 포함할 수 있다. Referring to FIG. 1, a watermarking apparatus 100 according to an embodiment of the present invention includes a bit stream generating unit 110, a dependency graph generating unit 120, a basic block transforming unit 130, 140).

그리고, 도 2는 본 발명의 일 실시예에 따른 소프트웨어의 저작권 보호를 위한 워터마킹 방법의 개략적인 구성을 도시한 도면이다. 2 is a diagram showing a schematic configuration of a watermarking method for copyright protection of software according to an embodiment of the present invention.

이하, 도 1 및 도 2를 참조하여 각 구성요소 별 기능 및 각 단계에서 수행되는 과정을 상세하게 설명하기로 한다. Hereinafter, the function of each component and the process performed in each step will be described in detail with reference to FIG. 1 and FIG.

먼저, 단계(S210)에서, 비트열 생성부(110)는 워터마크로 사용되는 비트열을 생성한다. 이 때, 워터마크로 사용되는 비트열의 개수는 n(2 이상의 정수)개일 수 있다. First, in step S210, the bit stream generation unit 110 generates a bit stream to be used as a watermark. At this time, the number of bit strings used as a watermark may be n (an integer of 2 or more).

도 3은 본 발명의 일 실시예에 따른 비트열 생성부(110)의 동작(비트열 생성 과정)의 세부적인 과정을 도시한 도면이다. 이하, 도 3을 참조하여 단계(S210)의 세부과정을 상세하게 설명한다. FIG. 3 is a diagram illustrating a detailed process of an operation (bit stream generating process) of the bit stream generating unit 110 according to an embodiment of the present invention. Hereinafter, the detailed procedure of step S210 will be described in detail with reference to FIG.

단계(S211)에서는 워터마크를 위한 최초의 비트열을 암호화하고, 단계(S212)에서는 암호화된 비트열을 일정한 크기로 분할한다. 그리고, 단계(S213)에서는 분할된 하나의 비트열(이하, "원 비트열"이라 칭함)에 대하여, 원 비트열을 구성하는 다수의 비트들 각각을 확장하여 원 비트열보다 큰 확장 비트열을 생성한다. In step S211, the first bit string for the watermark is encrypted. In step S212, the encrypted bit string is divided into a predetermined size. In step S213, each of the plurality of bits constituting the original bit string is extended to one divided bit string (hereinafter referred to as "one bit string"), .

본 발명의 일 실시예에 따르면, 단계(S213)에서, 비트열 생성부(110)는 그레이 코드를 이용하여 원 비트열을 구성하는 다수의 비트들 각각을 확장하여 확장 비트열을 생성할 수 있다. According to an embodiment of the present invention, in step S213, the bitstream generation unit 110 may generate an extended bitstream by extending each of a plurality of bits constituting an original bitstream using gray codes .

일례로서, 원 비트열이 6개의 비트들(010011)로 구성되어 있고, 그레이 코드가 3개의 비트열(000, 001, 011, 010, 110, 111, 101, 100)로 구성되어 는 경우, 비트열 생성부(110)는 원 비트열의 각 비트와 동일한 최상위 비트(MSB)를 가지는 4개의 그레이 코드들 중 어느 하나를 랜덤하게 선택하고, 이를 각 비트와 치환하여 확장 비트열을 생성할 수 있다. 예를 들어, 원 비트열(010011)은 확장 비트열(001110010011111101)로 확장될 수 있다. As an example, when the original bit string is composed of six bits 010011 and the gray code is composed of three bit strings (000, 001, 011, 010, 110, 111, 101, 100) The column generating unit 110 may randomly select any one of four gray codes having the same MSB as each bit of the original bit string and generate an extended bit string by replacing each bit with each bit. For example, the original bit string 010011 can be extended to the extended bit string (001110010011111101).

계속하여, 단계(S214)에서는 확장된 비트열을 이용하여 n개의 비트열들을 생성한다. Subsequently, in step S214, n bit strings are generated using the extended bit string.

본 발명의 일 실시예에 따르면, 단계(S214)에서, 비트열 생성부(110)는 중국인의 나머지 정리에 기초하여 n개의 비트열들을 생성할 수 있다. According to an embodiment of the present invention, in step S214, the bitstream generation unit 110 may generate n bitstreams based on the rest of the Chinese theorem.

보다 상세하게, 비트열 생성부(110)는 확장 비트열과 대응되는 숫자를 n개의 연립합동식들로 분해하고, n개의 연립합동식들 각각에 포함된 나머지 숫자를 이용하여 n개의 비트열들을 생성할 수 있다. More specifically, the bitstream generator 110 decomposes the number corresponding to the extended bitstream into n algebraic joints, generates n bitstreams using the remaining digits contained in each of the n algebraic joints can do.

중국인의 나머지 정리(CRT: Chinese Reminder Theorem)란 "p1 내지 pr이 서로소인 r개의 자연수이고, b1 내지 br가 임의의 r개의 자연수라고 할 때, 아래의 수학식 1과 같이 표현되는 특정 정수(W)에 대한 r개의 연립합동식은 법 p1 내지 법 pr에 관하여 유일한 해를 가진다"로 정의된다.
The Chinese Reminder Theorem (CRT) means that "p 1 to p r are natural numbers of r numbers that are relatively small, and b 1 to b r are natural numbers of r ratios, The r algebraic equations for a particular integer (W) have a unique solution with respect to the law p 1 to the law p r .

Figure 112013024975465-pat00001
Figure 112013024975465-pat00001

여기서, p1 내지 pr이 연립합동식의 몫이고, b1 내지 br이 연립합동식의 나머지이다. Where p 1 to p r are the quotient of the algebraic combination, and b 1 to b r are the remainder of the algebraic combination.

한편, 본 발명의 일 실시예에 따르면, 비트열 생성부(110)는 일반화된 중국인의 나머지 정리(Generalized CRT)를 이용하여 원 비트열로부터 n개의 비트열들을 생성할 수 있다. 이 경우, n개의 연립합동식들 각각은 아래의 수학식 2와 같이 표현되며, n개의 비트열들은 각 연립합동식의 나머지 숫자와 각각 대응되는 2진수일 수 있다.Meanwhile, according to an embodiment of the present invention, the bitstream generator 110 may generate n bitstreams from an original bitstream using the generalized Chinese generalized CRT. In this case, each of the n algebraic joint expressions may be expressed as Equation (2) below, and the n bit strings may be a binary number corresponding to the remaining digits of each algebraic joint expression.

Figure 112013024975465-pat00002
Figure 112013024975465-pat00002

여기서, W는 원 비트열과 대응되는 숫자, xk는 k번째 연립합동식의 나머지 숫자(즉, k번재 비트열), pik 및 pjk는 r개의 서로소인 자연수(p1 내지 pr) 중 k번째 연립합동식의 몫을 구성하기 위한 2개의 자연수를 의미한다. 일례로서, 첫번째 연립합동식의 경우 pik 및 pjk는 각각 p1 및 p2일 수 있고, 두번째 연립합동식의 경우 pik 및 pjk는 p1 및 p3일 수 있다. Here, W is a number corresponding to the original bit string, x k is the remaining number of the kth algebraic combination (that is, k-th bit stream), p ik and p jk are the numbers of r natural numbers p 1 to p r It means two natural numbers for constructing the quotient of the kth algebraic conjunction. As an example, in the case of the first joint simultaneous expression p ik and p jk is a p 1 and p 2 may be, in the case of the second joint simultaneous expression p ik jk and p each may be p 1 and p 3.

그리고, 상기한 연립합동식의 개수는 rC2(=

Figure 112013024975465-pat00003
)개이다. 또한, 원 비트열과 대응되는 숫자는 r개의 서로소인 자연수의 곱 보다 작은 것으로 가정한다. The number of the above-mentioned simultaneous equations is r C 2 (=
Figure 112013024975465-pat00003
). In addition, it is assumed that the number corresponding to the original bit string is smaller than the product of r natural numbers of two numbers.

또한, 본 발명의 다른 실시예에 따르면, 비트열 생성부(110)는 상기 수학식 2를 통해 도출되는 나머지 숫자를 변형하여 n개의 비트열을 생성할 수 있다. 즉, 비트열 생성부(110)는 아래의 수학식 3을 이용하여 n개의 비트열을 생성할 수 있다.
Also, according to another embodiment of the present invention, the bit stream generator 110 may generate n bit streams by modifying the remaining digits derived from Equation (2). That is, the bit stream generator 110 can generate n bit streams using Equation (3) below.

Figure 112013024975465-pat00004
Figure 112013024975465-pat00004

여기서, wk는 k번째 비트열을 의미한다. Here, w k denotes a k-th bit stream.

예를 들어, 원 비트열과 대응되는 숫자가 17이고, 3개의 서로소인 자연수가 2, 3, 5인 경우, 비트열 생성부는 아래의 표 1에 도시된 바와 같이 3개의 비트열(w1, w2, w3)을 생성할 수 있다.
For example, in the case where the number corresponding to the original bit string is 17, and the three independent natural numbers are 2, 3, and 5, the bit string generator generates three bit strings w1, w2, w3 < / RTI >

Figure 112013024975465-pat00005
Figure 112013024975465-pat00005

이와 같이, 본 발명의 일 실시예에 따른 비트열 생성부(110)는 중국인의 나머지 정리를 이용하여 워터마크로 사용할 n개의 비트열을 생성함으로써 워터마크의 일부가 훼손되더라도 오류정정기법을 통하여 용이하게 워터마크를 복구할 수 있는 장점이 있다.As described above, the bitstream generation unit 110 according to an embodiment of the present invention generates n bit strings to be used as a watermark by using the rest of the Chinese theorems, so that even if a part of the watermark is corrupted, There is an advantage of recovering the watermark.

다시, 도 2를 참조하여, 본 발명의 일 실시예에 따른 소프트웨어의 저작권 보호를 위한 워터마킹 방법을 상세하게 설명한다. Referring again to FIG. 2, a watermarking method for copyright protection of software according to an embodiment of the present invention will be described in detail.

단계(S220)에서, 의존성 그래프 생성부(120)는 소프트웨어의 실행코드를 구성하며 다수의 명령어들을 포함하는 베이직 블록에 대하여, 명령어들 중 적어도 일부의 명령어들 사이에 성립되는 의존성 관계에 기초하여 명령어들의 실행순서를 재배치하여 2 이상의 의존성 그래프들을 생성한다. 이와 같은 의존성 그래프들의 생성은 n개의 베이직 블록들 각각에 대해 수행된다. In step S220, the dependency graph generation unit 120 constitutes executable code of the software and, for a basic block including a plurality of instructions, generates a dependency graph based on a dependency relationship established between at least some of the instructions. To generate two or more dependency graphs. The generation of such dependency graphs is performed for each of the n basic blocks.

여기서, 명령어의 의존성은 명령어의 실행의 선후관계를 의미한다. 예를 들어, "명령어 A는 명령어 B가 수행된 이후에 수행"되어야 하는 경우, 명령어 A 및 명령어 B는 의존성을 가진다. 이와 같은 의존성 그래프들의 생성은 n개의 베이직 블록들 각각에 대해 수행된다. Here, the dependency of the instruction means the precedence relation of execution of the instruction. For example, if command A must be performed after command B has been executed, then command A and command B have dependencies. The generation of such dependency graphs is performed for each of the n basic blocks.

일례로서, 특정 베이직 블록 내에 포함된 명령어들(노드들)의 개수가 7개이고, 7개들 명령어들 사이에 도 4의 (a)에 도시된 바와 같은 의존성 관계가 성립되는 경우, 의존성 그래프 생성부(120)는 도 4의 (b) 내지 (d)에 도시된 의존성 그래프를 생성할 수 있으며, 이 외에도 하나 이상의 의존성 그래프를 더 생성할 수 있다. As an example, when the number of instructions (nodes) included in a specific basic block is seven and a dependency relationship as shown in FIG. 4A is established between seven instructions, the dependency graph generator 120 may generate the dependency graph shown in Figs. 4 (b) to 4 (d), and may further generate one or more dependency graphs.

도 4를 참조하면, 노드 7은 반드시 노드 3의 이후에 위치하고, 노드 3은 반드시 노드 1 및 노드 2의 이후에 위치하여야 한다. 또한, 노드 6은 반드시 노드 5의 이후에 위치하여야 한다. 그리고, 이러한 관계를 제외하고 각 노드는 다양한 위치에 존재할 수 있으며, 이에 따라 2 이상의 의존성 그래프가 생성될 수 있다. Referring to FIG. 4, node 7 is necessarily located after node 3, and node 3 must be located after node 1 and node 2. In addition, node 6 must be located after node 5. And, except for this relationship, each node can be in various locations, and thus two or more dependency graphs can be generated.

계속하여, 단계(S230)에서, 베이직 블록 변형부(130)는 2 이상 의존성 그래프들 중에서 비트열 생성부(110)에서 생성된 비트열과 대응되는 순번의 의존성 그래프를 선택하고, 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 베이직 블록 내의 명령어들의 실행순서를 재배치하여 베이직 블록을 변형한다. 이와 같은 베이직 블록의 변형은 n개의 베이직 블록들 각각에 대해 수행된다.Then, in step S230, the basic block transforming unit 130 selects a dependency graph of the sequence corresponding to the bit string generated by the bit sequence generator 110 from among the two or more dependency graphs, Rearranges the execution order of the instructions in the basic block according to the order of execution of the instructions of the basic block. This modification of the basic block is performed for each of the n basic blocks.

일례로서, k번째 비트열과 대응되는 숫자가 12인 경우, 베이직 블록 변형부(130)는 k번째 베이직 블록에 대한 2 이상의 의존성 그래프들 중 12번째 의존성 그래프를 선택한 후, 12번째 의존성 그래프 내에서의 명령어들의 실행순서에 따라 k번째 베이직 블록에 포함된 명령어들의 실행순서를 재배치하여 k번째 베이직 블록을 변형한다. As an example, if the number corresponding to the k-th bit stream is 12, the basic block transformer 130 selects the 12-th dependency graph among the 2 or more dependency graphs for the k-th basic block, According to the execution order of the instructions, the execution order of the instructions included in the k-th basic block is rearranged to transform the k-th basic block.

이에 따라, 상기 선택된 의존성 그래프의 순번(즉, 12번)이 소프트웨어에 대한 워터마크로 사용될 수 있다. 즉, 추후 워터마크를 추출하고자 하는 경우, 시스템은 n개의 베이직 블록들 각각에 포함된 명령어들의 배치순서가 상기한 선택된 의존성 그래프 내의 명령어들의 실행순서와 동일한지 여부를 확인하고, 동일한 경우, 워터마크가 삽입된 정상적인 소프트웨어로 확인한다. Accordingly, the order of the selected dependency graph (i.e., number 12) can be used as a watermark for the software. That is, if it is desired to extract a watermark at a later time, the system checks whether the order of the instructions included in each of the n basic blocks is the same as the order of execution of the instructions in the selected dependency graph, Is confirmed with the inserted normal software.

다음으로, 단계(S240)에서, 더미 명령어 삽입부(140)는 베이직 블록에 포함된 다수의 명령어들 중 일부의 명령어들과 하나 이상의 더미 명령어 사이의 의존성 관계를 생성하고, 생성된 의존성 관계에 따라 하나 이상의 더미 명령어를 베이직 블록에 삽입한다. 이와 같은 더미 명령어의 삽입 역시 n개의 베이직 블록들 각각에 대해 수행된다.Next, in step S240, the dummy instruction insertion section 140 generates a dependency relation between the instructions of some of the plurality of instructions included in the basic block and one or more dummy instructions, Insert one or more dummy instructions into the basic block. This insertion of the dummy instruction is also performed for each of the n basic blocks.

여기서 더미 명령어는 베이직 블록 내의 명령어들에 따른 실행에 영향을 주지 않는 명령어를 의미한다. 예를 들어, 더미 명령어는 특정 비트에 1의 값을 더한 후 1의 값을 빼도록 하는 명령어일 수 있다(즉, 더미 명령어의 수행에 의해 특정 비트값은 변화하지 않음). Here, the dummy instruction means an instruction which does not affect the execution according to the instructions in the basic block. For example, the dummy instruction may be a command that adds a value of 1 to a specific bit and subtracts a value of 1 (i.e., the specific bit value does not change by the execution of the dummy instruction).

도 5는 더미 명령어를 삽입하는 개념을 도시한 도면이다. 도 5를 참조하면, 더미 명령어 삽입부(140)는 도 5의 (a)에 도시된 바와 같이 더미 명령어 E1과 명령어 5, 명령어 2 및 명령어 6 사이의 의존성 관계를 설정할 수 있다. 이 때, 해당 베이직 블록에 대해 선택된 의존성 그래프가 도 5의 (b)와 같은 경우, 더미 명령어 삽입부(140)는 도 5의 (c)에 도시된 바와 같이 새롭게 결정된 더미 명령어들의 의존 관계에 따라, 해당 더미 명령어들을 베이직 블록 내에 삽입할 수 있다. 5 is a diagram showing a concept of inserting a dummy command. Referring to FIG. 5, the dummy instruction insertion unit 140 may set a dependency relation between the dummy instruction E1 and the instruction word 5, the instruction word 2 and the instruction word 6 as shown in FIG. 5A. In this case, if the dependency graph selected for the corresponding basic block is as shown in FIG. 5B, the dummy command inserter 140 inserts the dependency graph in accordance with the dependency of newly determined dummy commands as shown in FIG. 5C , The corresponding dummy instructions can be inserted into the basic block.

이 경우, 더미 명령어가 삽입되는 위치는 더미 명령어가 삽입된 이후 해당 더미 명령어의 위치 변경이 가능한 경우의 수가 가장 적은 위치일 수 있다. 예를 들어, 도 5의 (c)에 있어서, 더미 명령어 E1은 명령어 5와 명령어 2 간의 의존성 관계로 인해 해당 위치를 제외하고는 다른 위치에 존재할 수 없으며, 더미 명령어 E2 역시 명령어 3, 명령어 7, 명령어 4 및 명령어 6과의 의존성 관계로 인해 해당 위치를 제외하고는 다른 위치에 존재할 수 없다. In this case, the position where the dummy command is inserted may be the position where the number of cases in which the position of the dummy command can be changed after the dummy command is inserted is the smallest number. For example, in FIG. 5C, the dummy command E1 can not exist at a different position except for the corresponding position due to the dependency relation between the command 5 and the command 2. The dummy command E2 is also the command 3, the command 7, Due to the dependency relationship between command 4 and command 6, it can not exist at other positions except the corresponding position.

이와 같이 더미 명령어가 삽입되면, 추후 워터마크를 추출하고자 하는 경우, 시스템은 n개의 베이직 블록들 각각에 삽입된 더미 명령어의 위치를 확인하고, 각 더미 명령어의 위치가 최초로 삽입된 위치와 동일한지 여부를 확인하고, 동일한 경우, 워터마크가 삽입된 정상적인 소프트웨어로 확인한다. When the dummy command is inserted and the watermark is to be extracted later, the system checks the position of the dummy command inserted in each of the n basic blocks and determines whether the position of each dummy command is the same as the first inserted position And if it is the same, it is confirmed by the normal software in which the watermark is inserted.

한편, 불법 복제를 위해 삽입된 워터마크를 제거하고자 더미 명령어의 위치를 임의로 변경하는 경우가 발생할 수 있다. 이 경우, 더미 명령어들에 대해 선정된 의존성 관계로 인해, 더미 명령어의 위치가 변경되면 해당 베이직 블록이 실행되지 못하게 될 수 있으며, 이에 따라 불법 복제된 소프트웨어의 실행을 차단할 수 있다(이를 위해, 앞서 설명한 바와 같이 더미 명령어가 삽입된 이후 해당 더미 명령어의 위치 변경이 가능한 경우의 수가 가장 적은 위치에 해당 더미 명령어를 삽입한다). On the other hand, there may occur a case where the position of the dummy command is arbitrarily changed in order to remove the embedded watermark for illegal copying. In this case, due to the dependency relationship selected for the dummy instructions, if the position of the dummy instruction is changed, the corresponding basic block may not be executed, thereby blocking the execution of the illegally copied software After the dummy command is inserted, the dummy command is inserted at the position where the position of the dummy command can be changed most.

이와 같이, 본 발명에 따르면 스테가노그래피(Steganography) 형태로 워터마킹이 수행되는바, 대상 소프트웨어의 프로그램 코드에 영향을 주지 않으며, 프로그램의 크기를 증가 시키지 않고, 프로그램의 수행속도를 저하시키지 않으며, 워터마킹의 수행시간을 최소화할 수 있는 장점이 있다. 또한, 워터마킹의 수행이 프로그램 로직과는 무관하므로, 코드 최적화와 코드 난독화 공격에도 삽입된 워터마크가 쉽게 변조되지 않는 장점이 있다.As described above, according to the present invention, watermarking is performed in the form of steganography, which does not affect the program code of the target software, does not increase the size of the program, does not deteriorate the program execution speed, There is an advantage that the execution time of the watermarking can be minimized. In addition, since the performance of watermarking is independent of the program logic, there is an advantage that watermark embedded in code optimization and code obfuscation attacks can not be easily modulated.

도 6은 본 발명의 일 실시예에 따른 워터마킹의 수행을 위한 안드로이드 프레임워크의 일례를 도시한 도면이다. 6 is a diagram illustrating an example of an Android framework for performing watermarking according to an embodiment of the present invention.

도 6에 도시된 안드로이드 프레임워크는 저전력 워터마킹 프레임워크(이하 프레임워크)를 기반으로 구현된 것으로서, 안드로이드 앱 실행 파일의 구조를 추상화하고 API를 제공함으로써 워터마킹 알고리즘을 효율적으로 적용하고 테스트하기 위한 환경을 구성할 수 있다. The Android framework shown in FIG. 6 is implemented based on a low-power watermarking framework (hereinafter referred to as a framework). The Android framework abstracts the structure of an Android application executable file and provides an API to efficiently apply and test a watermarking algorithm. The environment can be configured.

도 6을 참조하면, 안드로이드 프레임워크는 앱 실행 파일을 조작하는 코어 컴포넌트와 컴포넌트를 보조하는 유틸리티, 사용자 입출력을 관리하는 UI 컴포넌트, APK 패키징 등을 위한 라이브러리로 구성된다. Referring to FIG. 6, the Android framework includes a core component for manipulating an application executable file, a utility for assisting the component, a UI component for managing user input / output, and a library for APK packaging.

코어 컴포넌트는 파일 구조를 분석하는 Dex parser, 메시지를 삽입하기 위한 Watermarking Engine, Dex 파일 재구성을 위한 Dex rebuilder 등으로 구성되고, UI 컴포넌트는 프레임워크의 주 작업 대상인 그래프, 달빅 명령어 등을 사용자를 위한 형태로 출력하는 기능을 수행한다.The core component consists of a Dex parser for analyzing the file structure, a Watermarking Engine for inserting a message, and a Dex rebuilder for reconstructing a Dex file. The UI component includes a graph for the main task of the framework, As shown in FIG.

이러한 안드로이드 프레임워크를 통해 워터마킹을 수행하는 과정은, 앱 실행 파일의 파싱 및 구조 분석, 워터마크 및 포렌식마크 삽입, 앱 실행 파일을 재구성하는 단계로 구성된다. 파싱 단계에서는 APK 파일에서 Dex 파일을 추출하여 구성 요소별 타입과 특성을 분석하고 명령어를 파싱한다. The process of performing watermarking through the Android framework includes parsing and structure analysis of the app executable file, inserting watermark and forensic mark, and reconstructing the app executable file. In the parsing step, the Dex file is extracted from the APK file, and the types and characteristics of each component are analyzed and the instruction is parsed.

본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.Embodiments of the present invention may be implemented in the form of program instructions that can be executed on various computer means and recorded on a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Examples of program instructions, such as magneto-optical and ROM, RAM, flash memory and the like, can be executed by a computer using an interpreter or the like, as well as machine code, Includes a high-level language code. The hardware devices described above may be configured to operate as one or more software modules to perform operations of one embodiment of the present invention, and vice versa.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.As described above, the present invention has been described with reference to particular embodiments, such as specific elements, and limited embodiments and drawings. However, it should be understood that the present invention is not limited to the above- Various modifications and variations may be made thereto by those skilled in the art to which the present invention pertains. Accordingly, the spirit of the present invention should not be construed as being limited to the embodiments described, and all of the equivalents or equivalents of the claims, as well as the following claims, belong to the scope of the present invention .

Claims (7)

다수의 베이직 블록을 포함하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치에 있어서,
워터마크로 사용되는 비트열을 생성하는 비트열 생성부;
상기 생성된 비트열과 대응되는 베이직 블록에 대하여, 상기 대응되는 베이직 블록에 포함된 다수의 명령어들 중 적어도 일부의 명령어들 사이에 성립되는 의존성 관계에 기초하여, 상기 명령어들의 실행순서를 재배치하여 2 이상의 의존성 그래프들을 생성하는 의존성 그래프 생성부; 및
상기 2 이상 의존성 그래프들 중 상기 생성된 비트열의 숫자와 동일한 순번의 의존성 그래프를 선택하고, 상기 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 상기 대응되는 베이직 블록 내의 명령어들의 실행순서를 재배치하여 상기 대응되는 베이직 블록을 변형하는 베이직 블록 변형부;를 포함하되,
상기 선택된 의존성 그래프의 순번이 상기 워터마크로 사용되는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
A watermarking apparatus for copyright protection of software including a plurality of basic blocks,
A bit stream generating unit for generating a bit stream used as a watermark;
Rearranging the execution order of the instructions based on the dependency relation established between at least some of the plurality of instructions included in the corresponding basic block for the basic block corresponding to the generated bit string, A dependency graph generation unit for generating dependency graphs; And
Selecting dependency graphs of the same sequence number as the number of the generated bitstreams from the two or more dependency graphs and rearranging the execution order of the instructions in the corresponding basic block according to the order of execution of the instructions in the selected dependency graph, And a basic block transformer for transforming the corresponding basic block,
And the order of the selected dependency graph is used as the watermark.
제1항에 있어서,
상기 생성되는 비트열의 개수 및 상기 2 이상의 의존성 그래프들이 생성되는 베이직 블록의 개수 및 상기 변형되는 베이직 블록의 개수는 n(2 이상의 정수임)개인 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
The method according to claim 1,
Wherein the number of the generated basic bit blocks and the number of the basic blocks to be modified are n (an integer of 2 or more).
제2항에 있어서,
상기 비트열 생성부는 원 비트열을 구성하는 다수의 비트들 각각을 확장하여 상기 원 비트열보다 큰 확장 비트열을 생성하고, 상기 확장 비트열을 이용하여 상기 n개의 비트열들을 생성하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
3. The method of claim 2,
Wherein the bitstream generator generates each of the plurality of bits constituting the original bitstream to generate an extended bitstream larger than the original bitstream and generates the n bitstreams using the extended bitstream, A watermarking device for copyright protection of software.
제3항에 있어서,
상기 비트열 생성부는 그레이 코드를 이용하여 상기 다수의 비트들 각각을 확장하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
The method of claim 3,
Wherein the bit string generating unit expands each of the plurality of bits using a gray code.
제3항에 있어서,
상기 비트열 생성부는 중국인의 나머지 정리에 기초하여 상기 확장 비트열과 대응되는 숫자를 n개의 연립합동식들로 분해하고, 상기 n개의 연립합동식들 각각에 포함된 나머지 숫자를 이용하여 상기 n개의 비트열들을 생성하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
The method of claim 3,
Wherein the bit string generating unit decomposes the number corresponding to the extended bit string into n algebraic joint expressions based on the remaining theorems of the Chinese and generates the n bits using the remaining digits included in each of the n algebraic joint expressions, Wherein the watermarking unit generates the watermarked watermarked watermark.
제1항에 있어서,
상기 워터마킹 장치는
상기 다수의 명령어들 중 일부의 명령어들과 하나 이상의 더미 명령어 사이의 의존성 관계를 생성하고, 상기 생성된 의존성 관계에 따라 상기 하나 이상의 더미 명령어를 상기 대응되는 베이직 블록에 삽입하는 더미 명령어 삽입부;를 더 포함하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치.
The method according to claim 1,
The watermarking apparatus
A dummy instruction word inserter for generating a dependency relation between the instructions of the plurality of instructions and one or more dummy instruction words and inserting the one or more dummy instruction words into the corresponding basic block according to the generated dependency relation Wherein the watermarking apparatus further comprises a watermarking apparatus for copyright protection of the software.
다수의 베이직 블록을 포함하는 소프트웨어의 저작권 보호를 위한 워터마킹 방법에 있어서,
워터마크로 사용되는 비트열을 생성하는 단계;
상기 생성된 비트열과 대응되는 베이직 블록에 대하여, 상기 대응되는 베이직 블록에 포함된 다수의 명령어들 중 적어도 일부의 명령어들 사이에 성립되는 의존성 관계에 기초하여, 상기 명령어들의 실행순서를 재배치하여 2 이상의 의존성 그래프들을 생성하는 단계;
상기 2 이상 의존성 그래프들 중에서 상기 생성된 비트열의 숫자와 동일한 순번의 의존성 그래프를 선택하고, 상기 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 상기 대응되는 베이직 블록 내의 명령어들의 실행순서를 재배치하여 상기 대응되는 베이직 블록을 변형하는 단계;를 포함하되,
상기 선택된 의존성 그래프의 순번이 상기 워터마크로 사용되는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 방법.
A watermarking method for copyright protection of software including a plurality of basic blocks,
Generating a bit stream to be used as a watermark;
Rearranging the execution order of the instructions based on the dependency relation established between at least some of the plurality of instructions included in the corresponding basic block for the basic block corresponding to the generated bit string, Generating dependency graphs;
Selecting a dependency graph having the same sequence number as the number of the generated bit strings among the two or more dependency graphs and rearranging the execution order of the instructions in the corresponding basic block according to the execution order of the instructions in the selected dependency graph, Modifying a corresponding basic block,
And the order of the selected dependency graph is used as the watermark.
KR1020130030844A 2013-01-29 2013-03-22 Watermarking apparatus and method for protecting software property right KR101408388B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20130009905 2013-01-29
KR1020130009905 2013-01-29

Publications (1)

Publication Number Publication Date
KR101408388B1 true KR101408388B1 (en) 2014-06-17

Family

ID=51133151

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130030844A KR101408388B1 (en) 2013-01-29 2013-03-22 Watermarking apparatus and method for protecting software property right

Country Status (1)

Country Link
KR (1) KR101408388B1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006215827A (en) 2005-02-03 2006-08-17 Mitsubishi Electric Corp Program execution device and method, and program for program execution method, and program code compression device and method, and program for program code compression method
KR20120070664A (en) * 2010-12-22 2012-07-02 한국전자통신연구원 System for tracking illegal distributeur and preventing distribution of illegal content and method thereof

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006215827A (en) 2005-02-03 2006-08-17 Mitsubishi Electric Corp Program execution device and method, and program for program execution method, and program code compression device and method, and program for program code compression method
KR20120070664A (en) * 2010-12-22 2012-07-02 한국전자통신연구원 System for tracking illegal distributeur and preventing distribution of illegal content and method thereof

Similar Documents

Publication Publication Date Title
Jain et al. Zero overhead watermarking technique for FPGA designs
CN108363911B (en) Python script obfuscating and watermarking method and device
Collberg et al. Error-correcting graphs for software watermarking
CN102341806A (en) Software protection
US8141162B2 (en) Method and system for hiding information in the instruction processing pipeline
CN111512307B (en) Compiling apparatus and method
CN111819542A (en) Compiling apparatus and method
US8661559B2 (en) Software control flow watermarking
US9607133B1 (en) Method and apparatus for watermarking binary computer code
KR101408388B1 (en) Watermarking apparatus and method for protecting software property right
Jeon et al. A robust steganography-based software watermarking
CN111382398B (en) Method, device and equipment for information processing, hidden information analysis and embedding
Chionis et al. A dynamic watermarking model for embedding reducible permutation graphs into software
Chroni et al. Efficient encoding of watermark numbers as reducible permutation graphs
Hamilton et al. An evaluation of the resilience of static java bytecode watermarks against distortive attacks
Chionis et al. Evaluating the WaterRpg software watermarking model on Java application programs
CN103714271A (en) Contradictory construction method of Java-software watermark-embedding dummy method
Van Le et al. Cryptanalysis of UCLA watermarking schemes for intellectual property protection
CN110147238B (en) Program compiling method, device and system
Lim A performance comparison on characteristics of static and dynamic software watermarking methods
JP2003050640A (en) Method for preventing copy of software
KR101810765B1 (en) Static Software Watermarking Method by Encoding Constant
KR20130101955A (en) Watermarking apparatus for protecting software intellectual property rights and apparatus of extracting watermark
Zhang et al. Hiding new words in a PDF document
JP2009064092A (en) Software configuration management device, method and program

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
FPAY Annual fee payment

Payment date: 20170410

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180409

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 6

R401 Registration of restoration