JP2008090668A - Program obfuscation method and program - Google Patents
Program obfuscation method and program Download PDFInfo
- Publication number
- JP2008090668A JP2008090668A JP2006271852A JP2006271852A JP2008090668A JP 2008090668 A JP2008090668 A JP 2008090668A JP 2006271852 A JP2006271852 A JP 2006271852A JP 2006271852 A JP2006271852 A JP 2006271852A JP 2008090668 A JP2008090668 A JP 2008090668A
- Authority
- JP
- Japan
- Prior art keywords
- program
- control variable
- control
- blocks
- conditional
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
Images
Abstract
Description
本発明は、プログラムに含まれるアルゴリズムの解析を困難にするためのプログラム難読化方法およびプログラムに関する。 The present invention relates to a program obfuscation method and a program for making it difficult to analyze an algorithm included in the program.
一般に、ソフトウェアには、価値のあるアルゴリズムおよびコンテンツの暗号鍵等、利用者に対して秘密にすべき情報が含まれる場合がある。一方で、ソフトウェアを解析するための技術(RE:Reverse Engineering)も数多く開発されているのが現状である。このため、これらの技術によりソフトウェアが解析されると、不正な者に秘密情報が入手されるという脅威が考えられる。 In general, software may include information that should be kept secret from users, such as valuable algorithms and content encryption keys. On the other hand, many technologies (RE: Reverse Engineering) for analyzing software have been developed. For this reason, when software is analyzed by these techniques, there is a threat that secret information is obtained by unauthorized persons.
こうした脅威に対し、ソフトウェアの仕様を保ったまま、ソフトウェアの解析を困難にする難読化という技術がある。例えば、変数の符号化によるソフトウェアの難読化として、ソースコード中の変数を線形変換により符号化する方法が提案されている(例えば、非特許文献1参照。)。この方法では、単一の変数xを線形変換により、変数X(=ax+b)を符号化することで、ソフトウェアの解析を難しくすることを意図するものであり、ここでは、線形変換の際に用いる整数a,bが秘密鍵となる。また、この方法では、ソースコード中の変数の値や演算を隠蔽することを目的としている。 For such threats, there is a technique called obfuscation that makes software analysis difficult while maintaining software specifications. For example, as a software obfuscation by encoding a variable, a method of encoding a variable in a source code by linear transformation has been proposed (see, for example, Non-Patent Document 1). This method is intended to make software analysis difficult by encoding a variable X (= ax + b) by linear transformation of a single variable x, and is used here for linear transformation. The integers a and b are secret keys. In addition, this method aims at hiding the values and operations of variables in the source code.
また、元のプログラムで用いられている変数の個数、ならびに当該変数間の参照・代入関係を秘匿し、かつ、秘密鍵の候補数を多くして耐性の高いプログラムの難読化を実現する技術も開示されている(例えば、特許文献1参照。)。更に、非特許文献2には、解析困難な条件分岐を構成する方法が開示されている。また、非特許文献2には、条件式の特殊性に着目し、パターンマッチングによって、Opaque Predicateを検出するという試みについても開示されている。
しかしながら、上記の非特許文献1に開示された技術によれば、ソースコード中の変数の値や演算を秘匿することはできても、難読化前のソースコードで用いられている変数の個数、ならびに変数間における参照・代入の関係を秘匿することは不可能であった。また、秘密鍵の候補数は少なく、秘密鍵の全数探索による攻撃についても脆弱であると考えられる。
However, according to the technique disclosed in Non-Patent
また、上記の特許文献1に開示された技術においては、プログラムに含まれる整数値を符号化の対象としているため、算術演算をほとんど含まないプログラムや実数型のみの変数のみが使われているプログラムに対しては、効果が小さいという問題がある。
Further, in the technique disclosed in
更に、非特許文献2に開示された方式は、整数論に基づいて、常に真、または、常に偽となる条件文を作成しているため、こうした条件分岐を自動的に生成することは困難であり、また、生成された条件分岐が不自然な形態をなしているという問題がある。
Furthermore, since the method disclosed in
更に、非特許文献2には、常に真となる条件文として、1)7y2−1≠x2、2)3|(x3−x)、3)Σ(1+3+・・・+2x−1)=x2、4)2|x∨8|(x2−1)、5)2|round(x2/2)(ただし、round(x)はxを超えない最大の整数)の5つの条件文が例示されているが、これらの条件文が常に真となることは、以下のように証明することができる。
Furthermore, in
すなわち、上記の「7y2−1≠x2」については、背理法により、7y2−1=x2となるような、x,yが存在すると仮定し、xが偶数のとき、x2は偶数となるため、7y2は奇数となり、結局、yは奇数でなければならない。ここで、x=2m、y=2n−1と表すと(ここで、m,nは整数)、上式は、28n2−28n+6=4m2となる。しかしながら、右辺は4で割り切れるのに対し、左辺は4で割り切れない。よって不適となる。一方で、xが奇数のとき、x2も奇数となる。したがって、7y2は偶数となり、結局、y2も偶数でなければならない。ここで、x=2k−1、y=2lと表すと(ここで、k、lは整数)、上式は、28l2−1=4k2−4k+1となる。ゆえに、28l2−2=4k2−4kとなる。しかしながら、この場合も、右辺は4で割り切れるのに対し、左辺は4で割り切れない。よって不適となる。以上の考察により、すべての整数x、yに対し、7y2−1≠x2となることから、上記の「7y2−1≠x2」なる条件文は、常に真となることが証明できる。 That is, for the above “7y 2 −1 ≠ x 2 ”, it is assumed that x and y exist such that 7y 2 −1 = x 2 according to the absurd method, and when x is an even number, x 2 is an even number. because it becomes, 7y 2 will be an odd number, after all, y must be odd. Here, when x = 2m and y = 2n−1 are expressed (where m and n are integers), the above equation becomes 28n 2 −28n + 6 = 4m 2 . However, the right side is divisible by 4, while the left side is not divisible by 4. Therefore, it becomes unsuitable. On the other hand, when x is an odd number, x 2 is also an odd number. Therefore, 7y 2 becomes even, eventually, y 2 must also be an even number. Here, when x = 2k−1 and y = 2l (where k and l are integers), the above equation becomes 28l 2 −1 = 4k 2 -4k + 1. Therefore, 28l 2 −2 = 4k 2 −4k. However, in this case as well, the right side is divisible by 4, while the left side is not divisible by 4. Therefore, it becomes unsuitable. From the above consideration, for all integers x and y, 7y 2 −1 ≠ x 2 , so that the conditional statement “7y 2 −1 ≠ x 2 ” can always be proved to be true. .
次に、上記の「3|(x3−x)」については、x3−x=(x−1)x(x+1)であるので、連続する3つの整数の積は3で割り切れる。したがって、「3|(x3−x)」なる条件文は、常に真となることが証明できる。また、上記の「Σ(1+3+・・・+2x−1)=x2」については、(与式)= Σk=1 x(2k−1)=2x(x+1)/2−x=x2+x−x=x2となるため、与えられた等式は常に成立する。したがって、「Σ(1+3+・・・+2x−1)=x2」なる条件文は、常に真となることが証明できる。 Next, since “3 | (x 3 −x)” is x 3 −x = (x−1) x (x + 1), the product of three consecutive integers is divisible by 3. Therefore, it can be proved that the conditional statement “3 | (x 3 −x)” is always true. In addition, for the above-mentioned “Σ (1 + 3 +... + 2x−1) = x 2 ”, (given expression) = Σ k = 1 x (2k−1) = 2x (x + 1) / 2−x = x 2 + x since the -x = x 2, given equation always holds. Therefore, it can be proved that the conditional statement “Σ (1 + 3 +... + 2x−1) = x 2 ” is always true.
また、上記の「2|x∨8|(x2−1)」については、xが偶数のとき、x∨8も偶数となることから、2|x∨8。一方、xが奇数のとき、x2も奇数であることから、2|(x2−1)。したがって、すべてのxに対し、2|x∨8|(x2−1)が成り立つことから、「2|x∨8|(x2−1)」なる条件文は、常に真となることが証明できる。更に、上記の「2|round(x2/2)」については、xが偶数のとき、x=2mと表すと(mは整数)、round(x2/2)=2m2となり、与式が成立する。一方で、xが奇数のとき、x=2n−1と表すと(nは整数)、round(x2/2)=4n2−4nとなり、与式が成立する。したがって、「2|round(x2/2)」なる条件文は、常に真となることが証明できる。
Further, regarding the above “2 | x∨8 | (x 2 −1)”, when x is an even number, x∨8 also becomes an even number, so 2 | x∨8. On the other hand, when x is an odd number, x 2 is also an odd number, so 2 | (x 2 −1). Therefore, since 2 | x∨8 | (x 2 −1) holds for all x, the conditional statement “2 | x∨8 | (x 2 −1)” is always true. I can prove it. Furthermore, the | About "2
このように、非特許文献2に記載された条件文は、不正な攻撃者が、その条件文が常に真であるのか、あるいは、常に偽であるのかを数論により証明することができるという問題がある。
As described above, the conditional statement described in
そこで、本発明は、上述の課題に鑑みてなされたものであり、整数値に限らず、その適用範囲が広く、かつ、条件分岐の解析が困難なプログラム難読化方法およびプログラムを提供することを目的とする。 Therefore, the present invention has been made in view of the above-described problems, and provides a program obfuscation method and a program that are not limited to integer values but have a wide application range and that are difficult to analyze conditional branches. Objective.
本発明は、上記の課題を解決するために以下の事項を提案している。 The present invention proposes the following items in order to solve the above problems.
(1)本発明は、プログラムに含まれるアルゴリズムの解析を困難にするためのプログラム難読化方法であって、プログラムの制御構造を平滑化し、該プログラムの実行順序を管理する制御変数を設定する第1のステップと、前記制御変数を符号化する第2のステップと、非自明な関係式を用いて、架空の条件分岐を生成する第3のステップと、を備えたことを特徴とするプログラム難読化方法を提案している。 (1) The present invention is a program obfuscation method for making it difficult to analyze an algorithm included in a program, wherein a control variable for smoothing the control structure of the program and managing the execution order of the program is set. A program obfuscation comprising: a first step; a second step for encoding the control variable; and a third step for generating a fictitious conditional branch using a non-trivial relational expression. We propose a method to make it.
この発明によれば、プログラムの制御構造を平滑化し、プログラムの実行順序を管理する制御変数を設定して、制御変数を符号化する。そして、非自明な関係式を用いて、架空の条件分岐を生成する。したがって、これにより、整数値に限らず、制御変数についても符号化の対象とすることができる。また、不正な攻撃者にとって、条件分岐の解析が困難なプログラムを生成することができる。 According to the present invention, the control structure of the program is smoothed, the control variable for managing the execution order of the program is set, and the control variable is encoded. Then, a fictitious conditional branch is generated using a non-trivial relational expression. Therefore, not only integer values but also control variables can be encoded. Further, it is possible to generate a program that is difficult for an unauthorized attacker to analyze conditional branches.
(2)本発明は、(1)のプログラム難読化方法について、前記第1のステップが、ソースコードに含まれる連続した命令を、ブロック単位に切り出すステップと、該切り出したブロックの実行順序を制御するための制御変数を設定するステップと、前記切り出したブロックのそれぞれに、制御変数がとるべき値を割当てるステップと、switch文またはif文を用いて、前記切り出したブロックを並列に並べるステップと、前記制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加するステップと、を備えたことを特徴とするプログラム難読化方法を提案している。 (2) The present invention relates to the program obfuscation method of (1), wherein the first step is a step of cutting out consecutive instructions included in the source code in units of blocks, and the execution order of the cut out blocks is controlled. A step of setting a control variable for performing, a step of assigning a value to be taken by the control variable to each of the cut-out blocks, a step of arranging the cut-out blocks in parallel using a switch statement or an if statement, Proposing a program obfuscation method comprising: adding a process of rewriting the value of the control variable to a control variable value assigned to a block to be executed next, at the end of each cut block. ing.
この発明によれば、プログラムの制御構造を平滑化し、プログラムの実行順序を管理する制御変数を設定する方法として、ソースコードに含まれる連続した命令を、ブロック単位に切り出し、切り出したブロックの実行順序を制御するための制御変数を設定する。そして、切り出したブロックのそれぞれに、制御変数がとるべき値を割当て、switch文またはif文を用いて、切り出したブロックを並列に並べ、制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加する。 According to the present invention, as a method for setting a control variable for smoothing the control structure of a program and managing the execution order of the program, continuous instructions included in the source code are cut out in block units, and the execution order of the cut out blocks Set control variables to control Then, a value to be taken by the control variable is assigned to each of the cut out blocks, and the cut out blocks are arranged in parallel using a switch statement or an if statement, and the value of the control variable is assigned to the block to be executed next. The process of rewriting to the control variable value is added to the end of each extracted block.
(3)本発明は、(1)または(2)のプログラム難読化方法について、前記第2のステップが、符号化を施すn個(但し、nは正整数)の制御変数を任意に選択するステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成するステップと、前記生成した行列およびベクトルを変換鍵として前記n個の制御変数を線形変換して同時にm個の制御変数を符号化するステップと、を備えたことを特徴とするプログラム難読化方法を提案している。 (3) In the present invention, in the program obfuscation method of (1) or (2), the second step arbitrarily selects n control variables (where n is a positive integer) to be encoded. A step of generating an m × n matrix (where m is a positive integer satisfying m ≧ n) and an arbitrary vector of m dimensions, and the n control variables using the generated matrix and vector as a conversion key A program obfuscation method is provided, comprising the step of linearly transforming and simultaneously encoding m control variables.
この発明によれば、符号化を施すn個(但し、nは正整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。そして、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の制御変数を符号化する。 According to the present invention, n variables (where n is a positive integer) to be encoded are arbitrarily selected, an m × n matrix (where m is a positive integer satisfying m ≧ n), and an m-dimensional variable. Generate an arbitrary vector. Then, using the generated matrix and vector as a conversion key, n variables are linearly converted and m control variables are encoded simultaneously.
したがって、プログラム中のn個の制御変数を線形変換により同時にm個の制御変数に符号化するため、プログラム中で用いられている制御変数の個数を秘匿すると同時に、制御変数間の参照および代入関係も秘匿することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。 Therefore, since n control variables in the program are simultaneously encoded into m control variables by linear transformation, the number of control variables used in the program is concealed, and at the same time, the reference and substitution relationship between the control variables Can also be concealed. In addition, since the matrix and the vector are used as the conversion key, the number of key candidates can be increased. Thereby, obfuscation of highly resistant software can be realized.
(4)本発明は、(1)から(3)のプログラム難読化方法について、前記第3のステップが、架空の条件分岐として一般的な条件分岐と類似の形態で、常に真と判定される条件式あるいは、常に偽と判定される条件式を生成することを特徴とするプログラム難読化方法を提案している。 (4) According to the present invention, in the program obfuscation method of (1) to (3), the third step is always determined to be true in a form similar to a general conditional branch as a fictitious conditional branch. It proposes a program obfuscation method characterized by generating a conditional expression or a conditional expression that is always determined to be false.
この発明によれば、第3のステップが、架空の条件分岐として一般的な条件分岐と類似の形態で、常に真と判定される条件式あるいは、常に偽と判定される条件式を生成する。したがって、架空の条件分岐が、一般的な条件分岐と類似の形態、すなわち、特殊な演算を用いない形態となっているため、他の条件分岐と比較しても、不正な攻撃者に対して不自然に写ることがない。また、特殊な演算を用いない形態となっているため、ツールを用いて、自動的に条件分岐を生成することができる。 According to the present invention, the third step generates a conditional expression that is always determined to be true or a conditional expression that is always determined to be false in a form similar to a general conditional branch as an imaginary conditional branch. Therefore, the fictitious conditional branch has a form similar to that of a general conditional branch, that is, a form that does not use a special operation. It does not appear unnatural. In addition, since a special operation is not used, a conditional branch can be automatically generated using a tool.
(5)本発明は、プログラムに含まれるアルゴリズムの解析を困難にするためのプログラム難読化方法をコンピュータに実行させるためのプログラムであって、プログラムの制御構造を平滑化し、該プログラムの実行順序を管理する制御変数を設定する第1のステップと、前記制御変数を符号化する第2のステップと、非自明な関係式を用いて、架空の条件分岐を生成する第3のステップと、を備えたことを特徴とするプログラムを提案している。 (5) The present invention is a program for causing a computer to execute a program obfuscation method for making it difficult to analyze an algorithm included in the program, smoothing the control structure of the program, and changing the execution order of the program A first step of setting a control variable to be managed; a second step of encoding the control variable; and a third step of generating a fictitious conditional branch using a non-trivial relational expression. We are proposing a program characterized by that.
この発明によれば、プログラムの制御構造を平滑化し、プログラムの実行順序を管理する制御変数を設定して、制御変数を符号化する。したがって、これにより、整数値に限らず、制御変数についても符号化の対象とすることができ、こうした処理をプログラムにより自動的に実行することができる。また、不正な攻撃者にとって、条件分岐の解析が困難なプログラムを生成することができる。 According to the present invention, the control structure of the program is smoothed, the control variable for managing the execution order of the program is set, and the control variable is encoded. Therefore, not only an integer value but also a control variable can be a target of encoding, and such processing can be automatically executed by a program. Further, it is possible to generate a program that is difficult for an unauthorized attacker to analyze conditional branches.
(6)本発明は、(5)のプログラムについて、前記第1のステップが、ソースコードに含まれる連続した命令を、ブロック単位に切り出すステップと、該切り出したブロックの実行順序を制御するための制御変数を設定するステップと、前記切り出したブロックのそれぞれに、制御変数がとるべき値を割当てるステップと、switch文またはif文を用いて、前記切り出したブロックを並列に並べるステップと、前記制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加するステップと、を備えたことを特徴とするプログラムを提案している。 (6) In the present invention, for the program of (5), the first step is a step of cutting out consecutive instructions included in the source code in units of blocks, and for controlling the execution order of the cut out blocks A step of setting a control variable, a step of assigning a value to be taken by the control variable to each of the cut-out blocks, a step of arranging the cut-out blocks in parallel using a switch statement or an if statement, and the control variable And a step of adding a process of rewriting the value to the control variable value assigned to the block to be executed next to the end of each extracted block.
この発明によれば、プログラムの制御構造を平滑化し、プログラムの実行順序を管理する制御変数を設定する方法として、ソースコードに含まれる連続した命令を、ブロック単位に切り出し、切り出したブロックの実行順序を制御するための制御変数を設定する。そして、切り出したブロックのそれぞれに、制御変数がとるべき値を割当て、switch文またはif文を用いて、切り出したブロックを並列に並べ、制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加する。 According to the present invention, as a method for setting a control variable for smoothing the control structure of a program and managing the execution order of the program, continuous instructions included in the source code are cut out in block units, and the execution order of the cut out blocks Set control variables to control Then, a value to be taken by the control variable is assigned to each of the cut out blocks, and the cut out blocks are arranged in parallel using a switch statement or an if statement, and the value of the control variable is assigned to the block to be executed next. The process of rewriting to the control variable value is added to the end of each extracted block.
(7)本発明は、(5)または(6)のプログラムについて、前記第2のステップが、符号化を施すn個(但し、nは正整数)の制御変数を任意に選択するステップと、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成するステップと、前記生成した行列およびベクトルを変換鍵として前記n個の制御変数を線形変換して同時にm個の制御変数を符号化するステップと、を備えたことを特徴とするプログラムを提案している。 (7) In the present invention, in the program of (5) or (6), the second step arbitrarily selects n (n is a positive integer) control variables to be encoded; An m × n matrix (where m is a positive integer satisfying m ≧ n) and an arbitrary vector of m dimensions, and the n control variables are linearly converted using the generated matrix and vector as a conversion key. And a step of encoding m control variables at the same time.
この発明によれば、符号化を施すn個(但し、nは正整数)の変数を任意に選択し、m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成する。そして、生成した行列およびベクトルを変換鍵としてn個の変数を線形変換して同時にm個の制御変数を符号化する。 According to the present invention, n variables (where n is a positive integer) to be encoded are arbitrarily selected, an m × n matrix (where m is a positive integer satisfying m ≧ n), and an m-dimensional variable. Generate an arbitrary vector. Then, using the generated matrix and vector as a conversion key, n variables are linearly converted and m control variables are encoded simultaneously.
したがって、プログラム中のn個の制御変数を線形変換により同時にm個の制御変数に符号化するため、プログラム中で用いられている制御変数の個数を秘匿すると同時に、制御変数間の参照および代入関係も秘匿することができ、こうした処理をプログラムにより自動的に実行することができる。また、変換鍵として行列およびベクトルを用いるため鍵の候補数を多くすることができる。このことにより、耐性の高いソフトウェアの難読化を実現することができる。 Therefore, since n control variables in the program are simultaneously encoded into m control variables by linear transformation, the number of control variables used in the program is concealed, and at the same time, the reference and substitution relationship between the control variables Can be concealed, and such processing can be automatically executed by a program. In addition, since the matrix and the vector are used as the conversion key, the number of key candidates can be increased. Thereby, obfuscation of highly resistant software can be realized.
(8)本発明は、(5)から(7)のプログラムについて、前記第3のステップが、架空の条件分岐として一般的な条件分岐と類似の形態で、常に真と判定される条件式あるいは、常に偽と判定される条件式を生成することを特徴とするプログラムを提案している。 (8) According to the present invention, in the program of (5) to (7), the third step is a conditional expression that is always determined to be true in a form similar to a general conditional branch as an imaginary conditional branch or Has proposed a program characterized by generating a conditional expression that is always determined to be false.
この発明によれば、第3のステップが、架空の条件分岐として一般的な条件分岐と類似の形態で、常に真と判定される条件式あるいは、常に偽と判定される条件式を生成する。したがって、架空の条件分岐が、一般的な条件分岐と類似の形態、すなわち、特殊な演算を用いない形態となっているため、他の条件分岐と比較しても、不正な攻撃者に対して不自然に写ることがない。また、特殊な演算を用いない形態となっているため、ツールを用いて、自動的に条件分岐を生成することができる。 According to the present invention, the third step generates a conditional expression that is always determined to be true or a conditional expression that is always determined to be false in a form similar to a general conditional branch as an imaginary conditional branch. Therefore, the fictitious conditional branch has a form similar to that of a general conditional branch, that is, a form that does not use a special operation. It does not appear unnatural. In addition, since a special operation is not used, a conditional branch can be automatically generated using a tool.
本発明によれば、プログラムに制御変数を導入して、その変数を符号化の対象とすることから、直接符号化できる変数を含まないプログラムに対しても、耐性の高いソフトウェアの難読化を実現することができるという効果がある。 According to the present invention, since a control variable is introduced into a program and the variable is a target for encoding, obfuscation of highly resistant software is realized even for a program that does not include a variable that can be directly encoded. There is an effect that can be done.
また、本発明によれば、架空の条件分岐に特殊な演算を利用しないため、他の条件分岐と比較しても、不正な攻撃者に対して不自然に写ることがないという効果がある。また、本発明によれば、特殊な演算を用いない形態となっているため、ツールを用いて、自動的に条件分岐を生成することができるという効果がある。 In addition, according to the present invention, since a special operation is not used for a fictitious conditional branch, there is an effect that it is not unnaturally captured by an unauthorized attacker even when compared with other conditional branches. Further, according to the present invention, since a special operation is not used, a conditional branch can be automatically generated using a tool.
また、本発明によれば、数論を用いた構成方法とは異なり、条件文の判定部分のみで、その真偽を判定することが不可能であるといった効果がある。 In addition, according to the present invention, unlike the configuration method using number theory, there is an effect that it is impossible to determine the authenticity only by the determination part of the conditional statement.
更に、本発明の技術を用いることにより、各種サービスにおけるセキュリティを向上させることができる。具体的には、Java(登録商標)やBrew(登録商標)等のソフトウェアに関する著作権を保護するとともに、不正にプログラムの解析を試みる不正な者への情報漏えいを的確に防止できるという効果がある。 Furthermore, security in various services can be improved by using the technology of the present invention. Specifically, it protects copyrights related to software such as Java (registered trademark) and Brew (registered trademark), and can effectively prevent information leakage to unauthorized persons who attempt to analyze programs illegally. .
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
Note that the constituent elements in the present embodiment can be appropriately replaced with existing constituent elements and the like, and various variations including combinations with other existing constituent elements are possible. Therefore, the description of the present embodiment does not limit the contents of the invention described in the claims.
<処理フロー>
まず、図1および図3から図7を用いて、本発明の実施形態に係るプログラム難読化方法の一般的な処理について説明する。
<Processing flow>
First, a general process of the program obfuscation method according to the embodiment of the present invention will be described with reference to FIGS. 1 and 3 to 7.
まず、図3に示すように、ソースコード(プログラム)に含まれる連続する命令を、ブロック(図中、B1;、B2;、B3;)として切り出す(ステップS101)。次に、ブロックの実行順番を制御するための制御変数(図4に示す「int c」)を宣言する(ステップS102)。 First, as shown in FIG. 3, continuous instructions included in the source code (program) are cut out as blocks (B1 ;, B2 ;, B3; in the figure) (step S101). Next, a control variable (“int c” shown in FIG. 4) for controlling the execution order of the blocks is declared (step S102).
更に、各ブロック(図3のB1;、B2;、B3;)に、制御変数がとるべき値(図5に示すB1;に対しては「5」、B2;に対しては「9」、B3;に対しては「4」)を割り当てる(ステップS103)。 Further, in each block (B1; B2; B3; in FIG. 3), a value to be taken by the control variable (“5” for B1; shown in FIG. 5; “9” for B2; (3) is assigned to B3; (step S103).
次に、図6に示すように、switch文またはif文を用いて、各ブロックを並列に並べる(ステップS104)。なお、条件分岐命令の判定文では、制御変数の値と、ステップS103において各ブロックに割り当てられた値が等しいかどうかが判定され、制御変数の値と等しい値が割り当てられたブロックの先頭に制御が移る。 Next, as shown in FIG. 6, the blocks are arranged in parallel using a switch statement or an if statement (step S104). In the decision statement of the conditional branch instruction, it is determined whether the value of the control variable is equal to the value assigned to each block in step S103, and control is performed at the head of the block to which the value equal to the value of the control variable is assigned. Move.
更に、図7に示すように、制御変数の値を次に実行されるブロックに割り当てられた値に書き換える処理(図7に示す、ブロックB1;におけるc=9、ブロックB2;におけるc=4)を各ブロックの最後に追加する(ステップS105)。そして、制御変数を符号化する処理を行う(ステップS106)。なお、ここで、符号化された制御変数が、非自明な関係を満たすように、符号化後の制御変数の個数を符号化前の制御変数の個数よりも多くする必要がある。 Further, as shown in FIG. 7, the process of rewriting the value of the control variable to the value assigned to the block to be executed next (c = 9 in block B1; shown in FIG. 7, c = 4 in block B2;). Is added to the end of each block (step S105). And the process which encodes a control variable is performed (step S106). Here, the number of control variables after encoding needs to be larger than the number of control variables before encoding so that the encoded control variables satisfy a non-trivial relationship.
更に、非自明な関係式を用いて、架空の条件分岐を作成する(ステップS107)。ここで、非自明な関係式を用いた架空の条件分岐とは、例えば、符号化された制御変数がxx、yy、zzであり、非自明な関係式がxx^yy^zz=0であるときに、式if(xx^yy^zz==0)のように、常に真と判定される条件文、または、式if(xx^yy^zz==5)のように、常に偽となる条件文である。 Further, a fictitious conditional branch is created using a non-trivial relational expression (step S107). Here, the fictitious conditional branch using the non-trivial relational expression is, for example, that the encoded control variables are xx, yy, zz, and the non-trivial relational expression is xx ^ yy ^ zz = 0. Sometimes a conditional statement that is always determined to be true as in the expression if (xx ^ yy ^ zz == 0) or always false as in the expression if (xx ^ yy ^ zz == 5) It is a conditional statement.
<制御変数の符号化処理>
次に、図2を用いて、制御変数の符号化処理について説明する。
<Control variable encoding process>
Next, control variable encoding processing will be described with reference to FIG.
まず、プログラムの中から、難読化の対象として符号化を施すn個(nは整数数)の制御変数を任意に選択する。この操作で選ばれたn個の制御変数をx1,x2・・・,xnとする。(ステップS201)。 First, n control variables (n is an integer number) to be encoded are arbitrarily selected as obfuscation targets from the program. Let n control variables selected by this operation be x1, x2,..., Xn. (Step S201).
次に、m×n型行列A、m次元ベクトルcを任意に生成し、これらを秘密鍵とする(ステップS202)。但し、mは、m≧nなる正整数である。 Next, an m × n matrix A and an m-dimensional vector c are arbitrarily generated and set as secret keys (step S202). However, m is a positive integer such that m ≧ n.
更に、生成した行列Aおよびベクトルcを用いて以下の変換式(1)を定義する(ステップS203)。 Furthermore, the following conversion equation (1) is defined using the generated matrix A and vector c (step S203).
ここで、X1,X2,・・・,Xmは、難読化後のソフトウェアで用いられる符号化されたm個の制御変数である。 Here, X1, X2,..., Xm are encoded m control variables used in the obfuscated software.
上記した変換式をn個の制御変数x1,x2,・・・,xnに関するm本の連立方程式と見なし、それぞれの制御変数について上記連立方程式を解く。その結果、それぞれの制御変数x1,x2,・・・,xnに関して以下の(2)で示す復号式が成立する(ステップS204)。 The above conversion equations are regarded as m simultaneous equations for n control variables x1, x2,..., Xn, and the simultaneous equations are solved for each control variable. As a result, the decoding equation shown in the following (2) is established for each control variable x1, x2,..., Xn (step S204).
この復号式により、元のプログラム中のそれぞれの制御変数x1,x2,・・・,xnの値を復号化された制御変数X1,X2,・・・Xmを用いて表すことが可能になる。
この手順では、m本の連立方程式から、n個の制御変数x1,x2・・・xnの値を求める。このため、符号化された制御変数X1,X2,・・・Xmの間には、m−n個の自明でない以下の関係式(3)が成り立つことになる。
With this decryption formula, the values of the respective control variables x1, x2,..., Xn in the original program can be expressed using the decrypted control variables X1, X2,.
In this procedure, the values of n control variables x1, x2,... Xn are obtained from m simultaneous equations. Therefore, mn non-obvious relational expressions (3) are established between the encoded control variables X1, X2,... Xm.
この自明でない関係式を用いることにより、上記の復号式における各制御変数X1,X2,・・・,Xmの係数を可変とすることができる。 By using this non-obvious relational expression, the coefficients of the control variables X1, X2,..., Xm in the above decoding formula can be made variable.
次に、プログラム中で用いられている制御変数x1,x2,・・・,xnを以下の規則に従い、符号化された制御変数X1,X2,・・・Xmで置き換える(ステップS205)。具体的には、アルゴリズム中の制御変数xiに対する代入命令xi←uを、以下の演算式(4)で示されるように、制御変数X1,X2,・・・XMに対する代入命令に置き換える。 Next, the control variables x1, x2,..., Xn used in the program are replaced with encoded control variables X1, X2,... Xm according to the following rules (step S205). Specifically, the assignment instruction xi ← u for the control variable xi in the algorithm is replaced with an assignment instruction for the control variables X1, X2,... XM as shown by the following arithmetic expression (4).
この代入命令が実行されると、符号化されたm個全ての制御変数X1,X2,・・・Xmが、同時に変更される。つまり、プログラム中で参照されている制御変数xjを、ステップS204の処理で求めた復号式xj(X1,X2,・・・Xm)を用いて、制御変数X1,X2,・・・Xmの式に置き換える。 When this assignment instruction is executed, all the encoded m control variables X1, X2,... Xm are changed simultaneously. That is, the control variable xj referred to in the program is expressed by the control variables X1, X2,... Xm using the decryption formula xj (X1, X2,... Xm) obtained in step S204. Replace with
後処理として、符号化された制御変数X1,X2,・・・,Xmへの初期値を与える。また、連続する制御変数X1,X2,・・・Xmへの代入命令のマージを行う(ステップS206)。 As post-processing, initial values for the encoded control variables X1, X2,. Further, the assignment instruction to the continuous control variables X1, X2,... Xm is merged (step S206).
具体的には、上記したステップS205の処理により、プログラム中の制御変数x1,x2,・・・,xnは、全てX1,X2,・・・,Xmで置き換えられる。これらの制御変数の初期値は、自明でない関係式f1,f2,・・・fm‐nを満たす任意の整数とする。 Specifically, the control variables x1, x2,..., Xn in the program are all replaced with X1, X2,. The initial values of these control variables are arbitrary integers that satisfy non-trivial relational expressions f1, f2,... Fm-n.
また、ステップS205の処理により生成された、符号化された制御変数X1,X2,・・・Xmへの代入命令の中で、連続するものをマージする。 In addition, the consecutive assignment instructions into the encoded control variables X1, X2,... Xm generated by the processing in step S205 are merged.
プログラムの解析が十分に困難であると判定されれば、難読化処理を終了する(ステップS207の「YES」)。一方、さらなる難読化が必要であると判定されれば(ステップS207の「NO」)、ステップS201からステップS206までの処理を繰り返し実行する。 If it is determined that the program analysis is sufficiently difficult, the obfuscation process is terminated (“YES” in step S207). On the other hand, if it is determined that further obfuscation is necessary (“NO” in step S207), the processing from step S201 to step S206 is repeatedly executed.
<具体的なプログラムを例示した処理の流れ>
以下、具体的なプログラムを例示し、本実施形態に係るプログラム難読化方法の処理の流れについて、図8から図15を用いて説明する。なお、図8は、本実施形態に係るプログラム難読化方法により処理を行う元のソースコードを示している。
<Flow of processing exemplifying specific program>
Hereinafter, a specific program will be exemplified, and the processing flow of the program obfuscation method according to the present embodiment will be described with reference to FIGS. 8 to 15. FIG. 8 shows the original source code that is processed by the program obfuscation method according to the present embodiment.
まず、図8に示す処理前のソースコードについて、連続する命令を図9に示すように、「/*ブロック1*/」、「/*ブロック2*/」、「/*ブロック3*/」として分割する処理を行う。
First, with respect to the source code before processing shown in FIG. 8, as shown in FIG. 9, consecutive instructions are “/ *
次に、図10に示すように、「int c1、c2;」という制御変数の宣言を追加する処理を行う。更に、図11に示すように、「/*ブロック1*/」には、「/*c1=5;c2=3*/」、「/*ブロック2*/」には、「/*c1=9;c2=2*/」、「/*ブロック3*/」には、「/*c1=4;c2=6*/」という各ブロックにおいて、制御変数が取るべき値を割り付ける。そして、図12に示すように、if文を用いて、各ブロックを並列に並べることにより、制御構造を平坦化したソースコードを作成する。
Next, as shown in FIG. 10, a process of adding a control variable declaration “int c1, c2;” is performed. Further, as shown in FIG. 11, “/ *
そして、図13に示すように、各ブロックの末尾に、「c1=c2=3;」および「c1+=2;」、「c1=c1+c2+1;」および「c2++;」、「c1==c2;」および「c2==9;」、「c1=c2++;」および「c2――;」という制御変数の値を次に実行されるブロックに割当てられた値に書き換える処理を追加したソースコードを作成する。そして、上記の符号化処理(図2参照)を行うことにより、図14に示す制御変数c1、c2をd1、d2、d3に符号化したソースコードが得られる。 Then, as shown in FIG. 13, at the end of each block, “c1 = c2 = 3;” and “c1 + = 2;”, “c1 = c1 + c2 + 1;” and “c2 +++;”, “c1 == c2;” And source code to which processing for rewriting the values of the control variables “c2 == 9;”, “c1 = c2 +++;” and “c2—;” into values assigned to the next block to be executed is created. . Then, by performing the above encoding process (see FIG. 2), a source code in which the control variables c1 and c2 shown in FIG. 14 are encoded into d1, d2, and d3 is obtained.
更に、これに、自明でない関係式「d1^d2^d3=0」等を用いて、条件分岐を変換することにより、図15に示すソースコードが得られる。 Further, by converting a conditional branch using a non-trivial relational expression “d1 ^ d2 ^ d3 = 0” or the like, the source code shown in FIG. 15 is obtained.
以上、説明したように、本実施形態によれば、プログラムの制御構造を平滑化し、プログラムの実行順序を管理する制御変数を設定して、制御変数を符号化する。したがって、これにより、整数値に限らず、制御変数についても符号化の対象とすることができる。また、非自明な関係式を用いて架空の条件分岐を付加することによって、不正な攻撃者にとって、条件分岐の解析が困難なプログラムを生成することができる。 As described above, according to the present embodiment, the control variable of the program is smoothed, the control variable for managing the execution order of the program is set, and the control variable is encoded. Therefore, not only integer values but also control variables can be encoded. Also, by adding a fictitious conditional branch using a non-trivial relational expression, it is possible to generate a program that is difficult for an unauthorized attacker to analyze the conditional branch.
なお、説明した本実施形態は、演算装置もしくはコンピュータにより実現されるものであり、特に、コンピュータにおいては、上述のステップS101からステップS106で実行される処理およびその手順をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行することによって本発明のプログラム難読化方法を実現することができる。ここでいうコンピュータとは、OSや周辺装置等のハードウェアを含む。 The described embodiment is realized by an arithmetic device or a computer. In particular, in a computer, the processing executed in steps S101 to S106 and the procedure thereof are stored in a computer-readable recording medium. The program obfuscation method of the present invention can be realized by recording, reading the program recorded on the recording medium into a computer, and executing the program. Here, the computer includes hardware such as an OS and peripheral devices.
また、「コンピュータ」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。更に、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のシステムやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。 Further, the “computer” includes a homepage providing environment (or display environment) if a WWW (World Wide Web) system is used. Also, “computer-readable recording medium” refers to a portable medium such as a flexible disk, a magneto-optical disk, a ROM, a CD-ROM, or a storage device such as a hard disk built in a computer system. Furthermore, the program is held for a certain period of time, such as a volatile memory (RAM) in a computer system that becomes a system or a client when the program is transmitted via a network such as the Internet or a communication line such as a telephone line. Including things.
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。 The program may be transmitted from a computer system storing the program in a storage device or the like to another computer system via a transmission medium or by a transmission wave in the transmission medium. Here, the “transmission medium” for transmitting the program refers to a medium having a function of transmitting information, such as a network (communication network) such as the Internet or a communication line (communication line) such as a telephone line.
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。更に、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。 The program may be for realizing a part of the functions described above. Furthermore, what can implement | achieve the function mentioned above in combination with the program already recorded on the computer system, and what is called a difference file (difference program) may be sufficient.
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。 The embodiment of the present invention has been described in detail with reference to the drawings. However, the specific configuration is not limited to this embodiment, and includes a design and the like within a scope not departing from the gist of the present invention.
Claims (8)
プログラムの制御構造を平滑化し、該プログラムの実行順序を管理する制御変数を設定する第1のステップと、
前記制御変数を符号化する第2のステップと、
非自明な関係式を用いて、架空の条件分岐を生成する第3のステップと、
を備えたことを特徴とするプログラム難読化方法。 A program obfuscation method for making it difficult to analyze an algorithm included in a program,
A first step of smoothing a control structure of the program and setting a control variable for managing the execution order of the program;
A second step of encoding the control variable;
A third step of generating a fictitious conditional branch using a non-trivial relational expression;
A program obfuscation method characterized by comprising:
該切り出したブロックの実行順序を制御するための制御変数を設定するステップと、
前記切り出したブロックのそれぞれに、制御変数がとるべき値を割当てるステップと、
switch文またはif文を用いて、前記切り出したブロックを並列に並べるステップと、
前記制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加するステップと、
を備えたことを特徴とする請求項1に記載のプログラム難読化方法。 Cutting the continuous instructions included in the source code into blocks, wherein the first step is;
Setting a control variable for controlling the execution order of the extracted blocks;
Assigning a value to be taken by the control variable to each of the extracted blocks;
arranging the cut-out blocks in parallel using a switch statement or an if statement;
Adding a process of rewriting the value of the control variable to a control variable value assigned to a block to be executed next, at the end of each cut block;
The program obfuscation method according to claim 1, further comprising:
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成するステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の制御変数を線形変換して同時にm個の制御変数を符号化するステップと、
を備えたことを特徴とする請求項1または請求項2に記載のプログラム難読化方法。 The second step arbitrarily selecting n (n is a positive integer) control variables to be encoded; and
generating an m × n matrix (where m is a positive integer of m ≧ n) and an arbitrary vector of m dimensions;
Linearly transforming the n control variables using the generated matrix and vector as a conversion key and simultaneously encoding m control variables;
The program obfuscation method according to claim 1 or 2, further comprising:
プログラムの制御構造を平滑化し、該プログラムの実行順序を管理する制御変数を設定する第1のステップと、
前記制御変数を符号化する第2のステップと、
非自明な関係式を用いて、架空の条件分岐を生成する第3のステップと、
を備えたことを特徴とするプログラム。 A program for causing a computer to execute a program obfuscation method for making it difficult to analyze an algorithm included in the program,
A first step of smoothing a control structure of the program and setting a control variable for managing the execution order of the program;
A second step of encoding the control variable;
A third step of generating a fictitious conditional branch using a non-trivial relational expression;
A program characterized by comprising:
該切り出したブロックの実行順序を制御するための制御変数を宣言するステップと、
前記切り出したブロックのそれぞれに、制御変数がとるべき値を割当てるステップと、
switch文またはif文を用いて、前記切り出したブロックを並列に並べるステップと、
前記制御変数の値を次に実行されるブロックに割当てられた制御変数値に書き換える処理をそれぞれ切り出したブロックの最後に付加するステップと、
を備えたことを特徴とする請求項5に記載のプログラム。 Cutting the continuous instructions included in the source code into blocks, wherein the first step is;
Declaring a control variable for controlling the execution order of the extracted blocks;
Assigning a value to be taken by the control variable to each of the extracted blocks;
arranging the cut-out blocks in parallel using a switch statement or an if statement;
Adding a process of rewriting the value of the control variable to a control variable value assigned to a block to be executed next, at the end of each cut block;
The program according to claim 5, comprising:
m×nの行列(但し、mは、m≧nの正整数)およびm次元の任意のベクトルを生成するステップと、
前記生成した行列およびベクトルを変換鍵として前記n個の制御変数を線形変換して同時にm個の制御変数を符号化するステップと、
を備えたことを特徴とする請求項5または請求項6に記載のプログラム。 The second step arbitrarily selects n control variables (where n is a positive integer) to be encoded;
generating an m × n matrix (where m is a positive integer of m ≧ n) and an arbitrary vector of m dimensions;
Linearly transforming the n control variables using the generated matrix and vector as a conversion key and simultaneously encoding m control variables;
The program according to claim 5 or 6, further comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006271852A JP4917860B2 (en) | 2006-10-03 | 2006-10-03 | Program obfuscation method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006271852A JP4917860B2 (en) | 2006-10-03 | 2006-10-03 | Program obfuscation method and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008090668A true JP2008090668A (en) | 2008-04-17 |
JP4917860B2 JP4917860B2 (en) | 2012-04-18 |
Family
ID=39374731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006271852A Active JP4917860B2 (en) | 2006-10-03 | 2006-10-03 | Program obfuscation method and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4917860B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009230717A (en) * | 2008-03-25 | 2009-10-08 | Panasonic Corp | Processing apparatus, obfuscation device, program, and integrated circuit |
JP2011150560A (en) * | 2010-01-22 | 2011-08-04 | Kddi Corp | System and method for protecting software, software conversion method and program |
KR20170108111A (en) * | 2015-01-27 | 2017-09-26 | 애리스 인터프라이지즈, 인크. | Obfuscation for protection of streaming media and other data flows |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002514333A (en) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | Confusing technology to enhance software security |
JP2002333992A (en) * | 2001-05-09 | 2002-11-22 | Denso Corp | Execution order inspecting device and its program |
JP2003337629A (en) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | Program obfuscation method and device |
JP2004185064A (en) * | 2002-11-29 | 2004-07-02 | Matsushita Electric Ind Co Ltd | Device and method for making program difficult to read |
JP2005085188A (en) * | 2003-09-11 | 2005-03-31 | Fujitsu Ltd | Program protection method, program protection program, and program protection device |
JP2006079347A (en) * | 2004-09-09 | 2006-03-23 | Kddi Corp | Coding method and program therefor |
-
2006
- 2006-10-03 JP JP2006271852A patent/JP4917860B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002514333A (en) * | 1997-06-09 | 2002-05-14 | インタートラスト テクノロジーズ コーポレイション | Confusing technology to enhance software security |
JP2002333992A (en) * | 2001-05-09 | 2002-11-22 | Denso Corp | Execution order inspecting device and its program |
JP2003337629A (en) * | 2002-05-18 | 2003-11-28 | Mitsuko Miyaji | Program obfuscation method and device |
JP2004185064A (en) * | 2002-11-29 | 2004-07-02 | Matsushita Electric Ind Co Ltd | Device and method for making program difficult to read |
JP2005085188A (en) * | 2003-09-11 | 2005-03-31 | Fujitsu Ltd | Program protection method, program protection program, and program protection device |
JP2006079347A (en) * | 2004-09-09 | 2006-03-23 | Kddi Corp | Coding method and program therefor |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009230717A (en) * | 2008-03-25 | 2009-10-08 | Panasonic Corp | Processing apparatus, obfuscation device, program, and integrated circuit |
JP2011150560A (en) * | 2010-01-22 | 2011-08-04 | Kddi Corp | System and method for protecting software, software conversion method and program |
KR20170108111A (en) * | 2015-01-27 | 2017-09-26 | 애리스 인터프라이지즈, 인크. | Obfuscation for protection of streaming media and other data flows |
KR102000861B1 (en) | 2015-01-27 | 2019-07-16 | 애리스 엔터프라이지즈 엘엘씨 | Obfuscation for protection of streaming media and other data flows |
Also Published As
Publication number | Publication date |
---|---|
JP4917860B2 (en) | 2012-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Arif et al. | A novel chaotic permutation-substitution image encryption scheme based on logistic map and random substitution | |
CN105453481B (en) | Calculating equipment including table network | |
Wu et al. | AEA-NCS: An audio encryption algorithm based on a nested chaotic system | |
KR102000861B1 (en) | Obfuscation for protection of streaming media and other data flows | |
Kiya et al. | Image and model transformation with secret key for vision transformer | |
Navale et al. | A multi-analysis on privacy preservation of association rules using hybridized approach | |
JP4917860B2 (en) | Program obfuscation method and program | |
US10331896B2 (en) | Method of protecting secret data when used in a cryptographic algorithm | |
JP4667800B2 (en) | Encoding method and program thereof | |
Sharma et al. | Text security using 2d cellular automata rules | |
JP4837506B2 (en) | Program obfuscation method and program | |
Wang et al. | Color image ROI encryption algorithm based on a novel 4D hyperchaotic system | |
Zhu et al. | Obfuscate arrays by homomorphic functions | |
JP2007079916A (en) | Encoding method and its program | |
Carpentieri et al. | Data hiding using compressed archives | |
JP5149061B2 (en) | Program obfuscation apparatus, program obfuscation method, and program | |
Saračević et al. | A steganography method based on decomposition of the Catalan numbers | |
Zhu et al. | H Function based Tamper-proofing Software Watermarking Scheme. | |
JP5627444B2 (en) | Software obfuscation device, software obfuscation method and program | |
JP2007086845A (en) | Client server system, method for providing server side program for the system, its server device, and server side program | |
KR101625018B1 (en) | Data encryption apparatus and method, computing device and communication device employing the same | |
JP5149062B2 (en) | Program obfuscation apparatus, program obfuscation method, and program | |
Rafat et al. | IST: Improved steganography for HTML | |
JP5378055B2 (en) | Program obfuscation apparatus, program obfuscation method, and program | |
JP2012234248A (en) | Software obfuscation device, software obfuscation method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090708 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111011 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111018 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111216 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120117 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120127 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150203 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4917860 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |