JP2020064461A - 変換装置、変換方法、変換プログラム及び難読プログラム - Google Patents

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

Info

Publication number
JP2020064461A
JP2020064461A JP2018196028A JP2018196028A JP2020064461A JP 2020064461 A JP2020064461 A JP 2020064461A JP 2018196028 A JP2018196028 A JP 2018196028A JP 2018196028 A JP2018196028 A JP 2018196028A JP 2020064461 A JP2020064461 A JP 2020064461A
Authority
JP
Japan
Prior art keywords
instruction block
program
instruction
conversion
designation
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
JP2018196028A
Other languages
English (en)
Other versions
JP7079711B2 (ja
Inventor
和英 福島
Kazuhide Fukushima
和英 福島
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 JP2018196028A priority Critical patent/JP7079711B2/ja
Publication of JP2020064461A publication Critical patent/JP2020064461A/ja
Application granted granted Critical
Publication of JP7079711B2 publication Critical patent/JP7079711B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる変換装置、変換方法、変換プログラム及び難読プログラムを提供すること。【解決手段】変換装置1は、処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定部11と、指定された第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の命令ブロックを生成する生成部12と、乱数により第1の命令ブロック又は第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入部13と、を備える。【選択図】図1

Description

本発明は、ソフトウェアに用いられる秘密情報の解読を困難にする技術に関する。
近年、センサ及びウェアラブル端末等の普及に伴い、これらの端末に対する攻撃の影響も増大している。例えば、室内の温度センサが送信するデータが改ざんされ、空調が間接的に操作されることで、健康被害が発生するおそれがある。端末が送信するデータの改ざんを防止するためには、暗号学的な手段により、データの正当性を証明するとともに、暗号処理に用いる秘密鍵を安全に端末に実装する必要がある。
一方で、端末におけるサイドチャネル情報(消費電力、処理時間、熱、音、漏れ電磁波、メモリ又はキャッシュのデータ等)を用いて、端末の秘密鍵を推定する方法がある。サイドチャネル攻撃としては、例えば、暗号処理を繰り返し行い、鍵に対する演算の消費電力の統計データを取得し鍵を推定する電力差分攻撃(Differentila Power Analysis (DPA))及び相関電力解析(Correlation Power Analysis (CPA))等が挙げられる。
また、プログラムに対し、一時的な障害を引き起こすことで、通常とは異なる出力又は内部状態を解析し、鍵を推定する故障利用攻撃も知られている。
また、秘密情報を用いた処理等が実装されたソフトウェアを難読化する従来の手法は、大別すると、下記の4つに分類できる(例えば、非特許文献1参照)。
・Control Flow Obfuscation(制御フローの難読化): 冗長な条件分岐又は冗長な関数呼び出し等の追加により、処理の流れを分かり難くする手法。
・Opaque Predicate(解析困難な条件式の利用): 常に真(又は偽)となる条件式(例えば、「(x*x+x)%2=0」)を利用することで、解読を難しくする手法。
・Data Encoding(データの符号化): データを関係式により変換し、解析を難しくする手法。
・Breaking Abstraction(抽象化の破壊による難読化): オブジェクト指向言語におけるカプセル化構造を破壊することで、解析を難しくする手法。
Collberg, C., Thomborson, C., Low, D.: A Taxonomy of Obfuscating Transformations. Tech. rep., The University of Auckland (1997). Wang, C., Davidson, J., Hill, J., Knight, J.: Protection of Software−based Survivability Mechanisms. In: 2001 International Conference on Dependable Systems and Networks. pp. 193−202 (July 2001).
しかしながら、従来の難読化手法では、前述のサイドチャネル攻撃又は故障利用攻撃への対策として、次の課題が存在する。
Control Flow Obfuscationでは、静的な制御フローの変更を行うため、攻撃者がプログラムを入手できる場合には、攻撃対象の命令ブロックの処理タイミングが特定されてしまう。例えば、非特許文献2では、プログラムの制御フローの構造を命令ブロックが並列に並ぶ構造に変換し、新たに導入する制御変数により、各命令ブロックの実行順序を制御する方法が提案されている。ところが、制御変数の値については、静的な代入命令により更新される。このため、攻撃対象の命令は、毎回同一のタイミングで実行され、サイドチャネル攻撃が可能となる。
Opaque Predicateでは、条件分岐の結果は静的に定まるため、攻撃者がプログラムを入手できる場合には、サイドチャネル攻撃が可能となる。
Data Encodingでは、変換に用いるためのデータがサイドチャネル攻撃により推測され、結果として秘密情報の解読が可能となる。
Breaking Abstractionは、オブジェクト指向言語に特化した方式であり、アセンブラ及び機械語には適用できない。このため、攻撃対策としての適用範囲が大幅に制限される。
このように、従来の手法では、プログラム中の特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性が十分でなく、安全性に課題があった。
本発明は、特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる変換装置、変換方法、変換プログラム及び難読プログラムを提供することを目的とする。
本発明に係る変換装置は、処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定部と、指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成部と、乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入部と、を備える。
前記生成部は、前記第2の命令ブロックを構成する少なくとも一部のコードの入力を受け付けてもよい。
前記生成部は、前記第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、前記第2の命令ブロックを生成してもよい。
前記挿入部は、第2のテンプレートを用いて、分岐数に応じた前記条件分岐コードを挿入してもよい。
前記指定部は、複数の前記第1の命令ブロックの指定を受け付けてもよい。
本発明に係る変換方法は、処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータが実行する。
本発明に係る変換プログラムは、処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータに実行させるためのものである。
本発明に係る難読プログラムは、秘密情報を用いた処理を実行するためのプログラムであって、第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックと、乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードと、を備える。
本発明によれば、特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる。
実施形態に係る変換装置の機能構成を示すブロック図である。 実施形態に係るプログラムの変換方法を示す概念図である。 実施形態に係る変換方法による変換前後のプログラムのソースコードを例示する図である。
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る変換装置1の機能構成を示すブロック図である。
変換装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
制御部10は、変換装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
記憶部20は、ハードウェア群を変換装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(変換プログラム)、及びこのプログラムで用いられるテンプレート等を記憶する。
制御部10は、指定部11と、生成部12と、挿入部13とを備える。制御部10は、これらの機能部により、処理対象プログラムに動的な分岐を付加し、秘密情報を用いた特定の処理の実行タイミングがランダムに変化する難読プログラムに変換することで、サイドチャネル攻撃又は故障利用攻撃等に耐性を持たせる。
指定部11は、処理対象プログラムに含まれる、秘密情報を用いた特定の処理より前の1又は複数の命令ブロック(第1の命令ブロック)の指定を受け付ける。
複数の第1の命令ブロックが指定された場合、それぞれに対して、生成部12及び挿入部13により動的な分岐処理が付加される。
生成部12は、指定された第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する。
このとき、生成部12は、第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、第2の命令ブロックを生成する。具体的には、例えば、プログラムが利用しない変数又はレジスタに対する値の読み出し又は書き込みを行うコード、あるいは、Opaque Predicateを用いて実質的な意味を持たない分岐処理を行うコード等が追加されてよい。
また、生成部12は、第2の命令ブロックを構成する少なくとも一部のコードの入力を受け付けてもよい。
挿入部13は、乱数により第1の命令ブロック又は第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを、処理対象プログラムに挿入する。
このとき、挿入部13は、第2のテンプレートを用いて、分岐数に応じた条件分岐コードを挿入する。なお、分岐数は、予め所定の数が設定されていてもよいし、指定部11が入力を受け付けてもよい。あるいは、挿入部13が分岐数をランダムに決定してもよい。
図2は、本実施形態に係るプログラムの変換方法を示す概念図である。
処理対象プログラムには、秘密情報である秘密鍵を用いる命令ブロックが存在している。変換装置1は、動的な分岐を挿入する箇所として、第1の命令ブロックAの指定を受け付ける。
変換装置1は、指定された命令ブロックAと同一の処理結果が得られる、すなわち等価な3つの命令ブロックA´、A´´、A´´´を新たに生成する。オリジナルの命令ブロックA、及び生成された命令ブロックA´、A´´、A´´´は、全て実行クロック数が異なる。
次に、変換装置1は、プログラム内で生成された乱数、又は新たに生成する乱数に基づいて、これらの命令ブロックA、A´、A´´、A´´´のいずれかをランダムに実行する条件分岐を挿入する。
この動的な条件分岐により、プログラムの実行の度に実行クロック数が変化し得るため、秘密鍵を用いる命令ブロックの実行タイミングが一定せず、特定されなくなる。
図3は、本実施形態に係る変換方法による変換前後のプログラムのソースコードを例示する図である。
この例では、変換前の処理対象プログラムで指定された「B[0]=K10;」という命令ブロックが、3分岐のコードに変換されている。
変換後のコードでは、乱数Randの下位2ビット(Rand & 0x3)の値(0〜3)により、3種類の命令ブロックのいずれかがランダムに実行される。
具体的には、値が0の場合は、元の命令ブロックが実行され、値が1の場合は、冗長な代入処理である「B[11]=0x10;」が追加される。また、値が2又は3の場合は、乱数Randとの排他的論理和(演算記号:^)を2回実行するという冗長な処理が追加されており、各命令ブロックの実行クロック数は、それぞれ異なっている。
実行クロック数が異なる命令ブロックは、これらには限られず、プログラムが利用しない変数又はレジスタに対する値の読み出し又は書き込みを行う処理、あるいは、Opaque Predicateを用いて実質的な意味を持たない分岐処理等、様々なダミーの命令が適宜追加されてよい。
ただし、クロック数を増やすために導入するダミーの命令は、コンパイラの最適化機能等により除去されないものが選ばれる。
このように生成される冗長な処理、及びif文等の分岐処理のコードは、記憶部20に予めテンプレートとして記憶され、適宜読み出して利用される。
なお、この例では、0〜3の乱数を用いた3分岐への変換例を示したが、各命令ブロックが同確率で実行されるように、同じ0〜3の乱数を用いた4分岐に変換されてもよい。さらに、乱数の桁数を増やして5分岐以上の分岐処理が採用されてもよい。
本実施形態によれば、変換装置1は、処理対象のプログラムに制御フローの難読化を適用し、さらに、動的な条件分岐を用いることで、鍵を用いた暗号化又は復号処理等、サイドチャネル攻撃又は故障利用攻撃の対象となる特定の処理が実行されるタイミングを、プログラムの実行毎に変える。このとき、変換装置1は、特定の処理の前に、乱数に基づく動的な条件分岐を挿入し、プログラムの実行毎にランダムな命令ブロックが実行されるようにする。変換装置1は、各命令ブロックに、等価であり、かつ、実行クロック数が異なる命令列を割り当てることで、プログラム全体の機能を保ちつつ、攻撃対象となる特定の処理が実行されるタイミングを実行毎に変えることができる。
この結果、変換装置1は、特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる。
変換装置1は、命令ブロックを構成する少なくとも一部のコードの入力を受け付けることにより、実行クロック数が異なる等価な命令ブロックを容易に生成できる。
また、変換装置1は、第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、第2の命令ブロックを生成することで、ユーザの手間を削減して、自動的に難読プログラムを生成できる。
変換装置1は、第2のテンプレートを用いて、分岐数に応じた条件分岐コードを挿入するので、状況に応じて、適切な分岐数の動的な条件分岐をプログラムに挿入し、サイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる。
変換装置1は、複数の第1の命令ブロックの指定を受け付け、動的な条件分岐を複数箇所に適用することで、攻撃対象となる特定の処理が実行されるタイミングのばらつきをさらに大きくできるので、この結果、サイドチャネル攻撃又は故障利用攻撃等への耐性をさらに向上できる。
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
変換装置1による変換方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD−ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
1 変換装置
10 制御部
11 指定部
12 生成部
13 挿入部
20 記憶部

Claims (8)

  1. 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定部と、
    指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成部と、
    乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入部と、を備える変換装置。
  2. 前記生成部は、前記第2の命令ブロックを構成する少なくとも一部のコードの入力を受け付ける請求項1に記載の変換装置。
  3. 前記生成部は、前記第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、前記第2の命令ブロックを生成する請求項1又は請求項2に記載の変換装置。
  4. 前記挿入部は、第2のテンプレートを用いて、分岐数に応じた前記条件分岐コードを挿入する請求項1から請求項3のいずれかに記載の変換装置。
  5. 前記指定部は、複数の前記第1の命令ブロックの指定を受け付ける請求項1から請求項4のいずれかに記載の変換装置。
  6. 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、
    指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、
    乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータが実行する変換方法。
  7. 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、
    指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、
    乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータに実行させるための変換プログラム。
  8. 秘密情報を用いた処理を実行するためのプログラムであって、
    第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックと、
    乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードと、を備える前記秘密情報の難読プログラム。
JP2018196028A 2018-10-17 2018-10-17 変換装置、変換方法、変換プログラム及び難読プログラム Active JP7079711B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018196028A JP7079711B2 (ja) 2018-10-17 2018-10-17 変換装置、変換方法、変換プログラム及び難読プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018196028A JP7079711B2 (ja) 2018-10-17 2018-10-17 変換装置、変換方法、変換プログラム及び難読プログラム

Publications (2)

Publication Number Publication Date
JP2020064461A true JP2020064461A (ja) 2020-04-23
JP7079711B2 JP7079711B2 (ja) 2022-06-02

Family

ID=70388332

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018196028A Active JP7079711B2 (ja) 2018-10-17 2018-10-17 変換装置、変換方法、変換プログラム及び難読プログラム

Country Status (1)

Country Link
JP (1) JP7079711B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672236A (zh) * 2021-08-31 2021-11-19 中电科申泰信息科技有限公司 一种增强处理器安全性的指令随机生成执行方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100710539B1 (ko) * 2003-11-26 2007-04-24 에스케이 주식회사 가수분해 효소를 이용한 (s)-인돌린-2-카르복실산 및이의 메틸 에스테르 화합물의 제조방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006001365A1 (ja) * 2004-06-28 2006-01-05 Matsushita Electric Industrial Co., Ltd. プログラム生成装置、プログラムテスト装置、プログラム実行装置、及び情報処理システム
JP2013524305A (ja) * 2010-03-25 2013-06-17 イルデト カナダ コーポレーション サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006001365A1 (ja) * 2004-06-28 2006-01-05 Matsushita Electric Industrial Co., Ltd. プログラム生成装置、プログラムテスト装置、プログラム実行装置、及び情報処理システム
JP2013524305A (ja) * 2010-03-25 2013-06-17 イルデト カナダ コーポレーション サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113672236A (zh) * 2021-08-31 2021-11-19 中电科申泰信息科技有限公司 一种增强处理器安全性的指令随机生成执行方法

Also Published As

Publication number Publication date
JP7079711B2 (ja) 2022-06-02

Similar Documents

Publication Publication Date Title
Wichelmann et al. Microwalk: A framework for finding side channels in binaries
US8918768B2 (en) Methods and apparatus for correlation protected processing of data operations
Chen et al. A modified chaos-based joint compression and encryption scheme
JP5861018B1 (ja) テーブルネットワークによって構成されたコンピューティングデバイス
US9274976B2 (en) Code tampering protection for insecure environments
JP5892887B2 (ja) サイドチャネル攻撃に対抗する方法
KR102413846B1 (ko) Sbox를 이용하는 암호화 프로세스를 고차 부채널 공격으로부터 보호하기 위한 방법
US8976960B2 (en) Methods and apparatus for correlation protected processing of cryptographic operations
WO2019114122A1 (zh) 登录信息的加密方法、装置、电子设备及介质
CN1989726A (zh) 用于执行加密计算的方法和装置
US11475166B2 (en) Compiling device and method
EP3477889B1 (en) Using white-box in a leakage-resilient primitive
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
JP7079711B2 (ja) 変換装置、変換方法、変換プログラム及び難読プログラム
EP3891925B1 (en) A computation device using shared shares
CN113673002A (zh) 一种基于指针加密机制和risc-v协处理器的内存溢出防御方法
US11914870B2 (en) Side-channel-attack-resistant memory access on embedded central processing units
Martinasek et al. Crucial pitfall of DPA Contest V4. 2 implementation
US20210367755A1 (en) Devices and methods for protecting cryptographic programs
Luo et al. Compiler-assisted threshold implementation against power analysis attacks
Nishinaga et al. Implementation of µNaCl on 32-bit ARM Cortex-M0
US10055194B2 (en) Operation based on two operands
EP3391264A1 (en) Calculating device and method
JP4804981B2 (ja) データ変換装置及びデータ変換プログラム
Shiba et al. Cubicle: A family of space‐hard ciphers for IoT

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220523

R150 Certificate of patent or registration of utility model

Ref document number: 7079711

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150