KR101408388B1 - Watermarking apparatus and method for protecting software property right - Google Patents
Watermarking apparatus and method for protecting software property right Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000001131 transforming effect Effects 0.000 claims abstract description 5
- 230000014509 gene expression Effects 0.000 claims description 8
- 230000001419 dependent effect Effects 0.000 abstract 6
- 238000010586 diagram Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 5
- 239000000306 component Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 239000008358 core component Substances 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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]
- G06F21/16—Program or content traceability, e.g. by watermarking
-
- 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]
- G06F21/106—Enforcing content protection by specific content processing
- G06F21/1063—Personalisation
Abstract
Description
본 발명의 실시예들은 소프트웨어 저작권 보호를 위한 워터마킹 장치 및 방법에 관한 것이다. 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
그리고, 도 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
도 3은 본 발명의 일 실시예에 따른 비트열 생성부(110)의 동작(비트열 생성 과정)의 세부적인 과정을 도시한 도면이다. 이하, 도 3을 참조하여 단계(S210)의 세부과정을 상세하게 설명한다. FIG. 3 is a diagram illustrating a detailed process of an operation (bit stream generating process) of the bit
단계(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
일례로서, 원 비트열이 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
계속하여, 단계(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
보다 상세하게, 비트열 생성부(110)는 확장 비트열과 대응되는 숫자를 n개의 연립합동식들로 분해하고, n개의 연립합동식들 각각에 포함된 나머지 숫자를 이용하여 n개의 비트열들을 생성할 수 있다. More specifically, the
중국인의 나머지 정리(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 .
여기서, 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
여기서, 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(=)개이다. 또한, 원 비트열과 대응되는 숫자는 r개의 서로소인 자연수의 곱 보다 작은 것으로 가정한다. The number of the above-mentioned simultaneous equations is r C 2 (= ). 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
여기서, 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 >
이와 같이, 본 발명의 일 실시예에 따른 비트열 생성부(110)는 중국인의 나머지 정리를 이용하여 워터마크로 사용할 n개의 비트열을 생성함으로써 워터마크의 일부가 훼손되더라도 오류정정기법을 통하여 용이하게 워터마크를 복구할 수 있는 장점이 있다.As described above, the
다시, 도 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
여기서, 명령어의 의존성은 명령어의 실행의 선후관계를 의미한다. 예를 들어, "명령어 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
도 4를 참조하면, 노드 7은 반드시 노드 3의 이후에 위치하고, 노드 3은 반드시 노드 1 및 노드 2의 이후에 위치하여야 한다. 또한, 노드 6은 반드시 노드 5의 이후에 위치하여야 한다. 그리고, 이러한 관계를 제외하고 각 노드는 다양한 위치에 존재할 수 있으며, 이에 따라 2 이상의 의존성 그래프가 생성될 수 있다. Referring to FIG. 4,
계속하여, 단계(S230)에서, 베이직 블록 변형부(130)는 2 이상 의존성 그래프들 중에서 비트열 생성부(110)에서 생성된 비트열과 대응되는 순번의 의존성 그래프를 선택하고, 선택된 의존성 그래프 내에서의 명령어들의 실행순서에 따라 베이직 블록 내의 명령어들의 실행순서를 재배치하여 베이직 블록을 변형한다. 이와 같은 베이직 블록의 변형은 n개의 베이직 블록들 각각에 대해 수행된다.Then, in step S230, the basic
일례로서, 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
이에 따라, 상기 선택된 의존성 그래프의 순번(즉, 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
여기서 더미 명령어는 베이직 블록 내의 명령어들에 따른 실행에 영향을 주지 않는 명령어를 의미한다. 예를 들어, 더미 명령어는 특정 비트에 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
이 경우, 더미 명령어가 삽입되는 위치는 더미 명령어가 삽입된 이후 해당 더미 명령어의 위치 변경이 가능한 경우의 수가 가장 적은 위치일 수 있다. 예를 들어, 도 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
이와 같이 더미 명령어가 삽입되면, 추후 워터마크를 추출하고자 하는 경우, 시스템은 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.
상기 생성되는 비트열의 개수 및 상기 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).
상기 비트열 생성부는 원 비트열을 구성하는 다수의 비트들 각각을 확장하여 상기 원 비트열보다 큰 확장 비트열을 생성하고, 상기 확장 비트열을 이용하여 상기 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.
상기 비트열 생성부는 그레이 코드를 이용하여 상기 다수의 비트들 각각을 확장하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치. The method of claim 3,
Wherein the bit string generating unit expands each of the plurality of bits using a gray code.
상기 비트열 생성부는 중국인의 나머지 정리에 기초하여 상기 확장 비트열과 대응되는 숫자를 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.
상기 워터마킹 장치는
상기 다수의 명령어들 중 일부의 명령어들과 하나 이상의 더미 명령어 사이의 의존성 관계를 생성하고, 상기 생성된 의존성 관계에 따라 상기 하나 이상의 더미 명령어를 상기 대응되는 베이직 블록에 삽입하는 더미 명령어 삽입부;를 더 포함하는 것을 특징으로 하는 소프트웨어의 저작권 보호를 위한 워터마킹 장치. 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.
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)
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 |
-
2013
- 2013-03-22 KR KR1020130030844A patent/KR101408388B1/en active IP Right Grant
Patent Citations (2)
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 |