JP2018106260A - 難読化装置、難読化方法及び難読化プログラム - Google Patents

難読化装置、難読化方法及び難読化プログラム Download PDF

Info

Publication number
JP2018106260A
JP2018106260A JP2016249408A JP2016249408A JP2018106260A JP 2018106260 A JP2018106260 A JP 2018106260A JP 2016249408 A JP2016249408 A JP 2016249408A JP 2016249408 A JP2016249408 A JP 2016249408A JP 2018106260 A JP2018106260 A JP 2018106260A
Authority
JP
Japan
Prior art keywords
code
encryption
processing
parameter
probability
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
Application number
JP2016249408A
Other languages
English (en)
Other versions
JP6632962B2 (ja
Inventor
和英 福島
Kazuhide Fukushima
和英 福島
清本 晋作
Shinsaku Kiyomoto
晋作 清本
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/ja
Publication of JP2018106260A publication Critical patent/JP2018106260A/ja
Application granted granted Critical
Publication of JP6632962B2 publication Critical patent/JP6632962B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】解析が難しいソフトウェアの難読化装置、難読化方法及び難読化プログラムを提供すること。【解決手段】難読化装置1は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成部11と、ソフトウェアの制御フローに、平文に対して第1コード又は第2コードにより暗号化処理後に復号処理を行い、平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入部12と、を備える。【選択図】図1

Description

本発明は、ソフトウェアのソースコード及び実行プログラムを難読化する装置、方法及びプログラムに関する。
従来、ソフトウェアに対する不正な解析及び改ざんを防止するために、ソースコード及び実行プログラムを難読化する手法が提案されている。
例えば、非特許文献1では、常に真となる条件分岐、又は常に偽となる条件分岐を用いて、ソフトウェアの制御フローを難読化する手法が提案されている。
Collberg, C., Thomborson, C., and Low, D., "A Taxonomy 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. 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.
しかしながら、常に真となる条件分岐(例えば、if((n*n+n)%2)==0)及び常に偽となる条件分岐(例えば、if(n*n*n−n%6)==1)は、特徴的な形式をしているため、第三者により発見されやすい。
非特許文献2及び非特許文献3では、代数的な手法により、これらの条件分岐が常に真であるか、又は常に偽であるかを判別できることが示されている。
本発明は、解析が難しいソフトウェアの難読化装置、難読化方法及び難読化プログラムを提供することを目的とする。
本発明に係る難読化装置は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成部と、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入部と、を備える。
前記生成部は、前記確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成し、前記挿入部は、平文に対して前記第1コード、前記第2コード又は前記第3コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、前記第3コードを用いた条件分岐を挿入した場合には、当該条件分岐の双方に等価の処理を割り当ててもよい。
前記生成部は、前記パラメータをランダムに決定してもよい。
前記挿入部は、ランダムに条件分岐のコードを選択してもよい。
前記暗号化方式は、LWE型格子暗号方式であってもよい。
本発明に係る難読化方法は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータが実行する。
本発明に係る難読化プログラムは、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータに実行させる。
本発明によれば、ソフトウェアのソースコード及び実行プログラムの解析がより難しくなる。
実施形態に係る難読化装置の機能構成を示すブロック図である。 実施形態に係る難読化の第1のパターンを示す図である。 実施形態に係る難読化の第2のパターンを示す図である。 実施形態に係る難読化の第3のパターンを示す図である。
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る難読化装置1の機能構成を示すブロック図である。
難読化装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス又は通信デバイス等を備える。
制御部10は、難読化装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各種機能を実現している。制御部10は、CPUであってよい。
記憶部20は、ハードウェア群を難読化装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させる難読化プログラムを記憶する。
制御部10は、生成部11と、挿入部12とを備える。難読化装置1は、これらの機能部により、入力であるソフトウェアのソースコード又は実行プログラムを、難読化して出力する。
生成部11は、パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、この確率が第1閾値(例えば、1−1/2128)以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに確率が第2閾値(例えば、1/2128)未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する。
ここで、暗号化方式には、例えば、LWE(Learning with Error)型格子暗号が採用される。
LWE型格子暗号は、定数部分にノイズを含む連立一次方程式の解を求めるLWE問題に基づく格子暗号技術である。LWE型格子暗号は、次元n、法q、ノイズ分布χの3つのパラメータを有する。ノイズ分布χには、正規分布を用いることが一般的であるが、他の確率分布のノイズを有するLWE型の暗号方式であってもよい。
生成部11は、LWE型格子暗号における鍵生成処理、暗号化処理及び復号処理のコードを生成する。このとき、生成部11は、一般的なパラメータ設定の、例えば復号に成功する確率が1−1/2128以上のLWE型格子暗号に加え、ノイズ分布χの標準偏差σに通常よりも大きな値を設定し、高い確率で復号に失敗する、例えば成功確率が1/2128未満のLWE型格子暗号における暗号化処理及び復号処理のコードを生成する。
さらに、生成部11は、復号に成功する確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成する。この第3コードによる復号処理は、例えば1/2程度の確率で成功する。
なお、暗号化のパラメータは、確率の条件を満たす範囲でランダムに決定されてよい。
挿入部12は、入力されたソフトウェアのソースコード又は実行プログラムの制御フローに、平文に対して第1コード、第2コード又は第3コードにより暗号化処理後に復号処理を行い、元の平文が復元されたか否かを判定する条件分岐を挿入する。
条件分岐は、例えば、平文m、暗号化関数E及び復号関数Dを用いて、「if(D(E(m))==m)」のように記述できる。
ここで、第1コードからは、常に真とみなせる条件分岐(以下、恒真の分岐)が作成され、第2コードからは、常に偽とみなせる条件分岐(以下、恒偽の分岐)が作成される。また、第3コードからは、真偽が不定の条件分岐(不定の分岐)が作成される。
さらに、挿入部12は、恒真の分岐のうち偽側の処理に、及び恒偽の分岐のうち真側の処理に、それぞれダミーの処理を割り当てる。また、挿入部12は、不定の分岐の双方に記述が異なる等価の処理を割り当てる。
ここで、挿入される条件分岐は、恒真の分岐、恒偽の分岐又は不定の分岐がランダムに選択されてよい。
また、暗号化の対象とする平文mは、任意の文字列であり、ランダムに選択されてもよいし、所定のワークエリア等の値が選択されてもよい。
なお、挿入部12により条件分岐が挿入される箇所は、既存の手法により選択されてよい。
図2は、本実施形態に係る難読化の第1のパターンを示す図である。
ここでは、恒真の分岐が用いられ、条件分岐のYESの側には、元の処理Pが割り当てられ、条件分岐のNOの側には、ダミーの処理Qが割り当てられる。
条件分岐での判定は常にYESとなるため、NO側のダミーの処理Qは実行されず、難読化後の制御フローは、元の処理Pと等価である。
図3は、本実施形態に係る難読化の第2のパターンを示す図である。
ここでは、恒偽の分岐が用いられ、条件分岐のYESの側には、ダミーの処理Qが割り当てられ、条件分岐のNOの側には、元の処理Pが割り当てられる。
条件分岐での判定は常にNOとなるため、YES側のダミーの処理Qは実行されず、難読化後の制御フローは、元の処理Pと等価である。
図4は、本実施形態に係る難読化の第3のパターンを示す図である。
ここでは、不定の分岐が用いられ、条件分岐のYESの側には、元の処理Pと等価な処理P’が割り当てられ、条件分岐のNOの側にも、元の処理Pと等価な処理P’’が割り当てられる。ここで、P’及びP’’は、Pと等価な処理である。
条件分岐での判定は、YESの場合とNOの場合とがあり、P’又はP’’のいずれかの処理が実行される。
本実施形態によれば、難読化装置1は、暗号化処理及び復号処理のパラメータを調整することにより、常に真となる条件分岐、及び常に偽となる条件分岐を生成し、いずれかをソフトウェアの制御フローに挿入する。
これにより、難読化装置1は、ソフトウェアの制御フローを、実行されないダミーの処理と本来の処理とに分岐させ、解析を難しくできる。さらに、いずれのパターンの条件分岐が挿入されたのかが判別され難いため、ソフトウェアのソースコード及び実行プログラムの解析がより難しくなる。
また、難読化装置1は、確率的に真にも偽にもなり得る条件分岐挿入し、等価な処理を2つ記述することにより難読化を行える。これにより、難読化装置1は、3パターンの制御フローを選択的に組み入れ、ソフトウェアのソースコード及び実行プログラムの解析をより困難にできる。
さらに、難読化装置1は、暗号化処理及び復号処理のパラメータ、及び条件分岐のパターン(恒真、恒偽、不定)をランダムに選択することで、ソフトウェアのソースコード及び実行プログラムの解析をより困難にできる。
難読化装置1は、暗号化方式として、LWE型格子暗号を用いることで、パラメータであるノイズ分布の標準偏差σを調整して3パターンの条件分岐を適切に生成できる。
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
難読化装置1による難読化方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
1 難読化装置
10 制御部
11 生成部
12 挿入部
20 記憶部

Claims (7)

  1. パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成部と、
    ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入部と、を備える難読化装置。
  2. 前記生成部は、前記確率が第2閾値以上、第1閾値未満となる第3パラメータを設定した暗号化処理及び復号処理の第3コードを生成し、
    前記挿入部は、平文に対して前記第1コード、前記第2コード又は前記第3コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、前記第3コードを用いた条件分岐を挿入した場合には、当該条件分岐の双方に等価の処理を割り当てる請求項1に記載の難読化装置。
  3. 前記生成部は、前記パラメータをランダムに決定する請求項1又は請求項2に記載の難読化装置。
  4. 前記挿入部は、ランダムに条件分岐のコードを選択する請求項1から請求項3のいずれかに記載の難読化装置。
  5. 前記暗号化方式は、LWE型格子暗号方式である請求項1から請求項4のいずれかに記載の難読化装置。
  6. パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、
    ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータが実行する難読化方法。
  7. パラメータに応じて復号に成功する確率が可変となる暗号化方式に対して、前記確率が第1閾値以上となる第1パラメータを設定した暗号化処理及び復号処理の第1コード、並びに前記確率が第2閾値未満となる第2パラメータを設定した暗号化処理及び復号処理の第2コードを生成する生成ステップと、
    ソフトウェアの制御フローに、平文に対して前記第1コード又は前記第2コードにより暗号化処理後に復号処理を行い、前記平文が復元されたか否かを判定する条件分岐を挿入し、当該条件分岐のうち、一方にダミーの処理を割り当てる挿入ステップと、をコンピュータに実行させるための難読化プログラム。
JP2016249408A 2016-12-22 2016-12-22 難読化装置、難読化方法及び難読化プログラム Expired - Fee Related JP6632962B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016249408A JP6632962B2 (ja) 2016-12-22 2016-12-22 難読化装置、難読化方法及び難読化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016249408A JP6632962B2 (ja) 2016-12-22 2016-12-22 難読化装置、難読化方法及び難読化プログラム

Publications (2)

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

Family

ID=62787069

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016249408A Expired - Fee Related JP6632962B2 (ja) 2016-12-22 2016-12-22 難読化装置、難読化方法及び難読化プログラム

Country Status (1)

Country Link
JP (1) JP6632962B2 (ja)

Also Published As

Publication number Publication date
JP6632962B2 (ja) 2020-01-22

Similar Documents

Publication Publication Date Title
CN113765657B (zh) 一种密钥数据处理方法、装置及服务器
US10180824B2 (en) Computing device comprising a table network
US11569978B2 (en) Encrypting and decrypting information
CN111984978B (zh) 一种高扩展性密码加密存储方法
KR102397579B1 (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
CN111066077B (zh) 加密装置、加密方法、解密装置以及解密方法
US20190005233A1 (en) Secure code optimization method and system
JP2008176193A (ja) 秘匿関数計算方法及び装置、並びにプログラム
EP2960891B1 (en) Method for introducing dependence of white-box implementationon a set of strings
Gürfidan et al. Blockchain-based music wallet for copyright protection in audio files
CN105765896B (zh) 用于表格网络的迭代应用的计算设备
JP5992651B2 (ja) 暗号化方法、プログラム、および、システム
EP2286610B1 (en) Techniques for peforming symmetric cryptography
JP2020034662A (ja) Idベースハッシュ証明系構成装置、idベース暗号装置、idベースハッシュ証明系構成方法及びプログラム
JP7079711B2 (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
US20150372989A1 (en) Method for introducing dependence of white-box implementation on a set of strings
JP6499323B2 (ja) 暗号化された値での計算
KR102045843B1 (ko) 블록 암호화 처리 방법 및 장치
JP6632962B2 (ja) 難読化装置、難読化方法及び難読化プログラム
Fahrianto et al. Encrypted SMS application on Android with combination of caesar cipher and vigenere algorithm
CN112784292B (zh) 一种配置文件的处理方法和装置
KR102083415B1 (ko) 암호화 파일에 대한 복호화 장치 및 방법
JP6904417B2 (ja) 乱数算出装置、乱数算出方法、暗号装置、及び、乱数算出プログラム
US20230085577A1 (en) Secured performance of an elliptic curve cryptographic process
JP7073093B2 (ja) 設計装置、設計方法及び設計プログラム

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