JP6632962B2 - Obfuscation device, obfuscation method and obfuscation program - Google Patents

Obfuscation device, obfuscation method and obfuscation program Download PDF

Info

Publication number
JP6632962B2
JP6632962B2 JP2016249408A JP2016249408A JP6632962B2 JP 6632962 B2 JP6632962 B2 JP 6632962B2 JP 2016249408 A JP2016249408 A JP 2016249408A JP 2016249408 A JP2016249408 A JP 2016249408A JP 6632962 B2 JP6632962 B2 JP 6632962B2
Authority
JP
Japan
Prior art keywords
code
encryption
obfuscation
decryption
parameter
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.)
Expired - Fee Related
Application number
JP2016249408A
Other languages
Japanese (ja)
Other versions
JP2018106260A (en
Inventor
和英 福島
和英 福島
清本 晋作
晋作 清本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
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 KDDI Corp filed Critical KDDI Corp
Priority to JP2016249408A priority Critical patent/JP6632962B2/en
Publication of JP2018106260A publication Critical patent/JP2018106260A/en
Application granted granted Critical
Publication of JP6632962B2 publication Critical patent/JP6632962B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ソフトウェアのソースコード及び実行プログラムを難読化する装置、方法及びプログラムに関する。   The present invention relates to an apparatus, a method and a program for obfuscating software source code and an execution program.

従来、ソフトウェアに対する不正な解析及び改ざんを防止するために、ソースコード及び実行プログラムを難読化する手法が提案されている。
例えば、非特許文献1では、常に真となる条件分岐、又は常に偽となる条件分岐を用いて、ソフトウェアの制御フローを難読化する手法が提案されている。
2. Description of the Related Art Conventionally, a method of obfuscating a source code and an execution program to prevent illegal analysis and tampering of software has been proposed.
For example, Non-Patent Document 1 proposes a technique for obfuscating a software control flow using a conditional branch that is always true or a conditional branch that is always false.

Collberg, C., Thomborson, C., and Low, D., “A Taxonomy of Obfuscating Transformations,” Technical Report 148, Department of Computer Science The University of Auckland, 1997.See Collberg, C.I. Thomborson, C .; , And Low, D.C. , “A Taxonomi of Obfuscating Transformations,” Technical Report 148, Department of Computer Science The University of Auckland, 1997. Preda, M. D., Madou, M., Bosschere, K. D., and Giacobazzi, R., “Opaque Predicates Detection by Abstract Interpretation,” Proc. of the 11th International Conference Algebraic Methodology and Software Technology (AMAST 2006), Lecture Notes in Computer Science 4019, pp. 81−95, 2006.Preda, M .; D. , Madou, M .; , Bosschere, K .; D. , And Giacobazzi, R.A. , “Opaque Predicates Detection by Abstract Interpretation,” Proc. of the 11th International Conference Algebraic Methodology and Software Technology (AMAST 2006), Lectur Notes in Computer Science 4019. 81-95, 2006. Ming, J., Xu, D., Wang, L., and Wu, D., “LOOP: Logic−Oriented Opaque Predicate Detection in Obfuscated Binary Code,” Proc. of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS 2015), pp. 757−768, 2015.Ming, J.M. Xu, D .; Wang, L .; , And Wu, D.A. , "LOOP: Logic-Oriented Opaque Predictate Detection in Obfuscated Binary Code," Proc. of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS 2015), pp. 146-315. 757-768, 2015.

しかしながら、常に真となる条件分岐(例えば、if((n*n+n)%2)==0)及び常に偽となる条件分岐(例えば、if(n*n*n−n%6)==1)は、特徴的な形式をしているため、第三者により発見されやすい。
非特許文献2及び非特許文献3では、代数的な手法により、これらの条件分岐が常に真であるか、又は常に偽であるかを判別できることが示されている。
However, a conditional branch that is always true (for example, if ((n * n + n)% 2) == 0) and a conditional branch that is always false (for example, if (n * n * n-n% 6) == 1) ) Has a characteristic format and is easily found by third parties.
Non-Patent Literature 2 and Non-Patent Literature 3 show that it is possible to determine whether these conditional branches are always true or always false by an algebraic method.

本発明は、解析が難しいソフトウェアの難読化装置、難読化方法及び難読化プログラムを提供することを目的とする。   An object of the present invention is to provide an obfuscation device, an obfuscation method, and an obfuscation program for software that are difficult to analyze.

本発明に係る難読化装置は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成部と、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入部と、を備える。   The obfuscation device according to the present invention provides an encryption method and a decryption process in which a first parameter whose probability is equal to or more than a first threshold is set for an encryption method in which the probability of successful decryption is variable according to the parameter. A first code, and a generating unit that generates a second code of an encryption process and a decryption process in which a second parameter is set such that the probability is less than a second threshold value. An insertion unit that performs a decryption process after the encryption process using one code or the second code, inserts a conditional branch that determines whether the plaintext has been restored, and assigns a dummy process to one of the conditional branches. , Is provided.

前記生成部は、前記確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成し、前記挿入部は、平文に対して前記第1コード、前記第2コード又は前記第3コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、前記第3コードを用いた条件分岐を挿入した場合には、当該条件分岐の双方に等価の処理を割り当ててもよい。   The generation unit generates a third code of an encryption process and a decryption process in which the third parameter is set such that the probability is equal to or more than a second threshold and less than a first threshold, and the insertion unit generates the third code for the plaintext. A decryption process is performed after the encryption process using one code, the second code, or the third code, a conditional branch that determines whether the plaintext has been restored is inserted, and a conditional branch that uses the third code is inserted. In this case, an equivalent process may be assigned to both of the conditional branches.

前記生成部は、前記パラメータをランダムに決定してもよい。   The generator may determine the parameter at random.

前記挿入部は、ランダムに条件分岐のコードを選択してもよい。   The insertion unit may randomly select a conditional branch code.

前記暗号化方式は、LWE型格子暗号方式であってもよい。   The encryption method may be an LWE type lattice encryption method.

本発明に係る難読化方法は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータが実行する。   An obfuscation method according to the present invention provides an encryption method and a decryption process in which a first parameter whose probability is equal to or more than a first threshold is set for an encryption method in which the probability of successful decryption is variable according to the parameter. Generating a second code of an encryption process and a decryption process in which a first code is set and a second parameter in which the probability is smaller than a second threshold value; and a control flow of software includes: Performing a decryption process after the encryption process using one code or the second code, inserting a conditional branch for determining whether the plaintext has been restored, and assigning a dummy process to one of the conditional branches; The computer runs.

本発明に係る難読化プログラムは、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータに実行させる。   An obfuscation program according to the present invention provides an encryption method and a decryption processing in which, for an encryption method in which the probability of successful decryption according to a parameter is variable, a first parameter in which the probability is equal to or greater than a first threshold is set. Generating a second code of an encryption process and a decryption process in which a first code is set, and a second parameter in which the probability is smaller than a second threshold value; and Performing a decryption process after the encryption process using one code or the second code, inserting a conditional branch for determining whether the plaintext has been restored, and assigning a dummy process to one of the conditional branches; Is executed by the computer.

本発明によれば、ソフトウェアのソースコード及び実行プログラムの解析がより難しくなる。   According to the present invention, it becomes more difficult to analyze software source codes and execution programs.

実施形態に係る難読化装置の機能構成を示すブロック図である。It is a block diagram showing the functional composition of the obfuscation device concerning an embodiment. 実施形態に係る難読化の第1のパターンを示す図である。It is a figure showing the 1st pattern of obfuscation concerning an embodiment. 実施形態に係る難読化の第2のパターンを示す図である。It is a figure showing the 2nd pattern of obfuscation concerning an embodiment. 実施形態に係る難読化の第3のパターンを示す図である。It is a figure showing the 3rd pattern of obfuscation concerning an embodiment.

以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る難読化装置1の機能構成を示すブロック図である。
難読化装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス又は通信デバイス等を備える。
Hereinafter, an example of an embodiment of the present invention will be described.
FIG. 1 is a block diagram illustrating a functional configuration of the obfuscation apparatus 1 according to the present embodiment.
The obfuscation device 1 is an information processing device (computer) such as a server device or a personal computer, and includes, in addition to the control unit 10 and the storage unit 20, an input / output device or a communication device for various data.

制御部10は、難読化装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部10は、CPUであってよい。   The control unit 10 is a part that controls the entire obfuscation device 1 and realizes various functions in the present embodiment by appropriately reading and executing various programs stored in the storage unit 20. The control unit 10 may be a CPU.

記憶部20は、ハードウェア群を難読化装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させる難読化プログラムを記憶する。   The storage unit 20 is a storage area for various programs and various data for causing the hardware group to function as the obfuscator 1, and may be a ROM, a RAM, a flash memory, a hard disk (HDD), or the like. Specifically, the storage unit 20 stores an obfuscation program that causes the control unit 10 to execute each function of the present embodiment.

制御部10は、生成部11と、挿入部12とを備える。難読化装置1は、これらの機能部により、入力であるソフトウェアのソースコード又は実行プログラムを、難読化して出力する。   The control unit 10 includes a generation unit 11 and an insertion unit 12. The obfuscation apparatus 1 obfuscates the input source code or execution program of the software by these functional units and outputs it.

生成部11は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、この確率が第1閾値(例えば、1−1/2128)以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに確率が第2閾値(例えば、1/2128)未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する。 The generation unit 11 sets a first parameter whose probability is equal to or more than a first threshold (for example, 1-1 / 2 128 ) for an encryption method in which the probability of successful decryption is variable according to the parameter. A first code for encryption processing and decryption processing, and a second code for encryption processing and decryption processing in which a second parameter whose probability is less than a second threshold value (for example, 128 128 ) are generated.

ここで、暗号化方式には、例えば、LWE(Learning with Error)型格子暗号が採用される。
LWE型格子暗号は、定数部分にノイズを含む連立一次方程式の解を求めるLWE問題に基づく格子暗号技術である。LWE型格子暗号は、次元n、法q、ノイズ分布χの3つのパラメータを有する。ノイズ分布χには、正規分布を用いることが一般的であるが、他の確率分布のノイズを有するLWE型の暗号方式であってもよい。
Here, as the encryption method, for example, LWE (learning with error) type lattice encryption is adopted.
The LWE-type lattice encryption is a lattice encryption technique based on the LWE problem for finding a solution of a system of linear equations including noise in a constant part. The LWE-type lattice encryption has three parameters of dimension n, modulus q, and noise distribution χ. In general, a normal distribution is used for the noise distribution χ, but an LWE type encryption method having noise of another probability distribution may be used.

生成部11は、LWE型格子暗号における鍵生成処理、暗号化処理及び復号処理のコードを生成する。このとき、生成部11は、一般的なパラメータ設定の、例えば復号に成功する確率が1−1/2128以上のLWE型格子暗号に加え、ノイズ分布χの標準偏差σに通常よりも大きな値を設定し、高い確率で復号に失敗する、例えば成功確率が1/2128未満のLWE型格子暗号における暗号化処理及び復号処理のコードを生成する。
さらに、生成部11は、復号に成功する確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成する。この第3コードによる復号処理は、例えば1/2程度の確率で成功する。
なお、暗号化のパラメータは、確率の条件を満たす範囲でランダムに決定されてよい。
The generation unit 11 generates codes for key generation processing, encryption processing, and decryption processing in LWE-type lattice encryption. At this time, the generation unit 11 sets the standard deviation σ of the noise distribution χ to a value larger than the normal value in addition to the general parameter setting, for example, the LWE-type lattice encryption in which the probability of successful decryption is 1-1 / 2 128 or more. set, fails to decode with high probability, for example, the success probability generate code for encryption processing and decryption processing in LWE grating cryptographic less than 1/2 128.
Further, the generation unit 11 generates a third code of the encryption processing and the decryption processing in which the third parameter is set such that the probability of successful decryption is equal to or more than the second threshold and less than the first threshold. The decoding process using the third code succeeds with a probability of, for example, about 1/2.
Note that the encryption parameters may be determined randomly within a range that satisfies the probability condition.

挿入部12は、入力されたソフトウェアのソースコード又は実行プログラムの制御フローに、平文に対して第1コード、第2コード又は第3コードにより暗号化処理後に復号処理を行い、元の平文が復元されたか否かを判定する条件分岐を挿入する。
条件分岐は、例えば、平文m、暗号化関数E及び復号関数Dを用いて、「if(D(E(m))==m)」のように記述できる。
ここで、第1コードからは、常に真とみなせる条件分岐(以下、恒真の分岐)が作成され、第2コードからは、常に偽とみなせる条件分岐(以下、恒偽の分岐)が作成される。また、第3コードからは、真偽が不定の条件分岐(不定の分岐)が作成される。
The insertion unit 12 performs a decryption process on the input source code of the software or the control flow of the execution program after encrypting the plaintext with the first code, the second code, or the third code, and restores the original plaintext. A conditional branch for determining whether or not the operation has been performed is inserted.
The conditional branch can be described as “if (D (E (m)) == m)” using plaintext m, encryption function E, and decryption function D, for example.
Here, a conditional branch that can always be regarded as true (hereinafter, a true and true branch) is created from the first code, and a conditional branch that can always be regarded as false (hereinafter, a true / false branch) is created from the second code. You. From the third code, a conditional branch (undefined branch) whose truth is uncertain is created.

さらに、挿入部12は、恒真の分岐のうち偽側の処理に、及び恒偽の分岐のうち真側の処理に、それぞれダミーの処理を割り当てる。また、挿入部12は、不定の分岐の双方に記述が異なる等価の処理を割り当てる。   Further, the insertion unit 12 assigns a dummy process to a process on the false side of the true / false branch and a process on the true side of the true / false branch. Further, the insertion unit 12 assigns an equivalent process having a different description to both of the undefined branches.

ここで、挿入される条件分岐は、恒真の分岐、恒偽の分岐又は不定の分岐がランダムに選択されてよい。
また、暗号化の対象とする平文mは、任意の文字列であり、ランダムに選択されてもよいし、所定のワークエリア等の値が選択されてもよい。
なお、挿入部12により条件分岐が挿入される箇所は、既存の手法により選択されてよい。
Here, as the conditional branch to be inserted, a true branch, a false branch, or an undefined branch may be randomly selected.
Further, the plaintext m to be encrypted is an arbitrary character string, and may be selected at random, or a value such as a predetermined work area may be selected.
The location where the conditional branch is inserted by the insertion unit 12 may be selected by an existing method.

図2は、本実施形態に係る難読化の第1のパターンを示す図である。
ここでは、恒真の分岐が用いられ、条件分岐のYESの側には、元の処理Pが割り当てられ、条件分岐のNOの側には、ダミーの処理Qが割り当てられる。
条件分岐での判定は常にYESとなるため、NO側のダミーの処理Qは実行されず、難読化後の制御フローは、元の処理Pと等価である。
FIG. 2 is a diagram showing a first pattern of obfuscation according to the present embodiment.
Here, a true branch is used, the original process P is assigned to the YES side of the conditional branch, and the dummy process Q is assigned to the NO side of the conditional branch.
Since the determination in the conditional branch is always YES, the dummy process Q on the NO side is not executed, and the control flow after obfuscation is equivalent to the original process P.

図3は、本実施形態に係る難読化の第2のパターンを示す図である。
ここでは、恒偽の分岐が用いられ、条件分岐のYESの側には、ダミーの処理Qが割り当てられ、条件分岐のNOの側には、元の処理Pが割り当てられる。
条件分岐での判定は常にNOとなるため、YES側のダミーの処理Qは実行されず、難読化後の制御フローは、元の処理Pと等価である。
FIG. 3 is a diagram showing a second pattern of obfuscation according to the present embodiment.
Here, a false branch is used, a dummy process Q is assigned to the YES side of the conditional branch, and the original process P is assigned to the NO side of the conditional branch.
Since the determination in the conditional branch is always NO, the dummy process Q on the YES side is not executed, and the control flow after obfuscation is equivalent to the original process P.

図4は、本実施形態に係る難読化の第3のパターンを示す図である。
ここでは、不定の分岐が用いられ、条件分岐のYESの側には、元の処理Pと等価な処理P’が割り当てられ、条件分岐のNOの側にも、元の処理Pと等価な処理P’’が割り当てられる。ここで、P’及びP’’は、Pと等価な処理である。
条件分岐での判定は、YESの場合とNOの場合とがあり、P’又はP’’のいずれかの処理が実行される。
FIG. 4 is a diagram showing a third pattern of obfuscation according to the present embodiment.
Here, an indefinite branch is used, a process P ′ equivalent to the original process P is assigned to the YES side of the conditional branch, and a process P equivalent to the original process P is also assigned to the NO side of the conditional branch. P '' is assigned. Here, P ′ and P ″ are processes equivalent to P.
The determination in the conditional branch may be YES or NO, and either P ′ or P ″ processing is executed.

本実施形態によれば、難読化装置1は、暗号化処理及び復号処理のパラメータを調整することにより、常に真となる条件分岐、及び常に偽となる条件分岐を生成し、いずれかをソフトウェアの制御フローに挿入する。
これにより、難読化装置1は、ソフトウェアの制御フローを、実行されないダミーの処理と本来の処理とに分岐させ、解析を難しくできる。さらに、いずれのパターンの条件分岐が挿入されたのかが判別され難いため、ソフトウェアのソースコード及び実行プログラムの解析がより難しくなる。
According to the present embodiment, the obfuscation apparatus 1 generates a condition branch that is always true and a condition branch that is always false by adjusting the parameters of the encryption process and the decryption process, and converts any one of the software Insert into control flow.
Thereby, the obfuscation apparatus 1 can divide the control flow of the software into the dummy processing that is not executed and the original processing, thereby making the analysis difficult. Further, since it is difficult to determine which pattern of the conditional branch is inserted, it becomes more difficult to analyze the software source code and the execution program.

また、難読化装置1は、確率的に真にも偽にもなり得る条件分岐挿入し、等価な処理を2つ記述することにより難読化を行える。これにより、難読化装置1は、3パターンの制御フローを選択的に組み入れ、ソフトウェアのソースコード及び実行プログラムの解析をより困難にできる。   Further, the obfuscation apparatus 1 can perform obfuscation by inserting conditional branches that can be stochastically true or false and describing two equivalent processes. Thus, the obfuscation apparatus 1 selectively incorporates three patterns of control flows, and makes it more difficult to analyze software source codes and execution programs.

さらに、難読化装置1は、暗号化処理及び復号処理のパラメータ、及び条件分岐のパターン(恒真、恒偽、不定)をランダムに選択することで、ソフトウェアのソースコード及び実行プログラムの解析をより困難にできる。   Furthermore, the obfuscation apparatus 1 randomly analyzes the parameters of the encryption process and the decryption process, and the pattern of the conditional branch (true, false, indefinite) to analyze the software source code and the execution program more. Can be difficult.

難読化装置1は、暗号化方式として、LWE型格子暗号を用いることで、パラメータであるノイズ分布の標準偏差σを調整して3パターンの条件分岐を適切に生成できる。   The obfuscation apparatus 1 can appropriately generate three patterns of conditional branches by adjusting the standard deviation σ of the noise distribution, which is a parameter, by using the LWE-type lattice encryption as the encryption method.

以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。   The embodiments of the present invention have been described above, but the present invention is not limited to the above-described embodiments. Further, the effects described in the present embodiment merely enumerate the most preferable effects resulting from the present invention, and the effects according to the present invention are not limited to those described in the present embodiment.

難読化装置1による難読化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。   The obfuscation method by the obfuscation device 1 is realized by software. When realized by software, a program constituting the software is installed in an information processing device (computer). Further, these programs may be recorded on a removable medium such as a CD-ROM and distributed to the user, or may be distributed by being downloaded to the user's computer via a network. Furthermore, these programs may be provided to a user's computer as a Web service via a network without being downloaded.

1 難読化装置
10 制御部
11 生成部
12 挿入部
20 記憶部
DESCRIPTION OF SYMBOLS 1 Obfuscator 10 Control part 11 Generating part 12 Insertion part 20 Storage part

Claims (7)

パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成部と、
ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入部と、を備える難読化装置。
For an encryption method in which the probability of successful decryption according to the parameter is variable, the first code of the encryption and decryption processes that sets the first parameter in which the probability is equal to or greater than a first threshold, and the probability is A generation unit configured to generate a second code of an encryption process and a decryption process in which a second parameter that is smaller than a second threshold is set;
In the software control flow, a decryption process is performed on the plaintext after the encryption process using the first code or the second code, and a conditional branch for determining whether the plaintext has been restored is inserted. An obfuscation device comprising: an insertion unit that assigns a dummy process to one of them.
前記生成部は、前記確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成し、
前記挿入部は、平文に対して前記第1コード、前記第2コード又は前記第3コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、前記第3コードを用いた条件分岐を挿入した場合には、当該条件分岐の双方に等価の処理を割り当てる請求項1に記載の難読化装置。
The generation unit generates a third code of an encryption process and a decryption process in which a third parameter in which the probability is equal to or more than a second threshold and less than a first threshold is set,
The insertion unit performs a decryption process on the plaintext after the encryption process using the first code, the second code, or the third code, and inserts a conditional branch that determines whether the plaintext has been restored, The obfuscation apparatus according to claim 1, wherein when a conditional branch using the third code is inserted, an equivalent process is assigned to both of the conditional branches.
前記生成部は、前記パラメータをランダムに決定する請求項1又は請求項2に記載の難読化装置。   The obfuscation device according to claim 1, wherein the generation unit determines the parameter at random. 前記挿入部は、ランダムに条件分岐のコードを選択する請求項1から請求項3のいずれかに記載の難読化装置。   The obfuscation device according to claim 1, wherein the insertion unit randomly selects a code of a conditional branch. 前記暗号化方式は、LWE型格子暗号方式である請求項1から請求項4のいずれかに記載の難読化装置。   5. The obfuscation device according to claim 1, wherein the encryption system is an LWE-type lattice encryption system. パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、
ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータが実行する難読化方法。
For an encryption method in which the probability of successful decryption according to the parameter is variable, the first code of the encryption and decryption processes that sets the first parameter in which the probability is equal to or greater than a first threshold, and the probability is A generation step of generating a second code of an encryption process and a decryption process in which a second parameter that is less than a second threshold is set;
In the software control flow, a decryption process is performed on the plaintext after the encryption process using the first code or the second code, and a conditional branch for determining whether the plaintext has been restored is inserted. An obfuscation method in which a computer executes an insertion step of assigning a dummy process to one of them.
パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、
ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータに実行させるための難読化プログラム。
For an encryption method in which the probability of successful decryption according to the parameter is variable, the first code of the encryption and decryption processes that sets the first parameter in which the probability is equal to or greater than a first threshold, and the probability is A generation step of generating a second code of an encryption process and a decryption process in which a second parameter that is less than a second threshold is set;
In the software control flow, a decryption process is performed on the plaintext after the encryption process using the first code or the second code, and a conditional branch for determining whether the plaintext has been restored is inserted. An obfuscation program for causing a computer to execute an insertion step of assigning a dummy process to one of them.
JP2016249408A 2016-12-22 2016-12-22 Obfuscation device, obfuscation method and obfuscation program Expired - Fee Related JP6632962B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016249408A JP6632962B2 (en) 2016-12-22 2016-12-22 Obfuscation device, obfuscation method and obfuscation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016249408A JP6632962B2 (en) 2016-12-22 2016-12-22 Obfuscation device, obfuscation method and obfuscation program

Publications (2)

Publication Number Publication Date
JP2018106260A JP2018106260A (en) 2018-07-05
JP6632962B2 true JP6632962B2 (en) 2020-01-22

Family

ID=62787069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016249408A Expired - Fee Related JP6632962B2 (en) 2016-12-22 2016-12-22 Obfuscation device, obfuscation method and obfuscation program

Country Status (1)

Country Link
JP (1) JP6632962B2 (en)

Also Published As

Publication number Publication date
JP2018106260A (en) 2018-07-05

Similar Documents

Publication Publication Date Title
JP5726385B2 (en) Program verification apparatus, program verification method, and program verification program
US10795990B2 (en) Secure code optimization method and system
JP5861018B1 (en) Computing device configured by table network
CN111819542B (en) Compiling apparatus and method
CN111066077B (en) Encryption device, encryption method, decryption device, and decryption method
CN107077540B (en) Method and system for providing cloud-based application security services
EP3729306B1 (en) Compiling device and method
CN105765896B (en) Computing device for iterative application of a table network
Gürfidan et al. Blockchain-based music wallet for copyright protection in audio files
CN111373464B9 (en) Encryption device, encryption method, decryption device, and decryption method
WO2016063512A1 (en) Mac tag list generating apparatus, mac tag list verifying apparatus, mac tag list generating method, mac tag list verifying method and program recording medium
EP2286610B1 (en) Techniques for peforming symmetric cryptography
JP7079711B2 (en) Converter, conversion method, converter and obfuscation program
JP6632962B2 (en) Obfuscation device, obfuscation method and obfuscation program
KR102045843B1 (en) Method and apparatus for block encryption algorithm
KR101440680B1 (en) Homomorphic Encryption and Decryption Method using Chinese Remainder Theorem and apparatus using the same
KR102083415B1 (en) Apparatus and method for decrypting encrypted files
JP2011123229A (en) Program code encryption device and program
KR101219191B1 (en) Apparatus for protecting key information in volatile memory and method thereof
JP6904417B2 (en) Random number calculation device, random number calculation method, encryption device, and random number calculation program
KR102177920B1 (en) Apparatus and method for packing original source code
JP2005266887A (en) Program encryption apparatus, program distribution system and computer program
KR102522109B1 (en) Apparatus for cryptanalysis using generative adversarial networks and mehtod thereof
JP6212377B2 (en) Arithmetic device, arithmetic method and computer program
Mohsen et al. Theoretical foundation for code obfuscation security: A Kolmogorov complexity approach

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181221

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191025

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: 20191126

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191211

R150 Certificate of patent or registration of utility model

Ref document number: 6632962

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees