JP2020064461A - 変換装置、変換方法、変換プログラム及び難読プログラム - Google Patents
変換装置、変換方法、変換プログラム及び難読プログラム Download PDFInfo
- 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
Links
Images
Abstract
Description
また、プログラムに対し、一時的な障害を引き起こすことで、通常とは異なる出力又は内部状態を解析し、鍵を推定する故障利用攻撃も知られている。
・Control Flow Obfuscation(制御フローの難読化): 冗長な条件分岐又は冗長な関数呼び出し等の追加により、処理の流れを分かり難くする手法。
・Opaque Predicate(解析困難な条件式の利用): 常に真(又は偽)となる条件式(例えば、「(x*x+x)%2=0」)を利用することで、解読を難しくする手法。
・Data Encoding(データの符号化): データを関係式により変換し、解析を難しくする手法。
・Breaking Abstraction(抽象化の破壊による難読化): オブジェクト指向言語におけるカプセル化構造を破壊することで、解析を難しくする手法。
Control Flow Obfuscationでは、静的な制御フローの変更を行うため、攻撃者がプログラムを入手できる場合には、攻撃対象の命令ブロックの処理タイミングが特定されてしまう。例えば、非特許文献2では、プログラムの制御フローの構造を命令ブロックが並列に並ぶ構造に変換し、新たに導入する制御変数により、各命令ブロックの実行順序を制御する方法が提案されている。ところが、制御変数の値については、静的な代入命令により更新される。このため、攻撃対象の命令は、毎回同一のタイミングで実行され、サイドチャネル攻撃が可能となる。
Data Encodingでは、変換に用いるためのデータがサイドチャネル攻撃により推測され、結果として秘密情報の解読が可能となる。
Breaking Abstractionは、オブジェクト指向言語に特化した方式であり、アセンブラ及び機械語には適用できない。このため、攻撃対策としての適用範囲が大幅に制限される。
図1は、本実施形態に係る変換装置1の機能構成を示すブロック図である。
変換装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
複数の第1の命令ブロックが指定された場合、それぞれに対して、生成部12及び挿入部13により動的な分岐処理が付加される。
このとき、生成部12は、第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、第2の命令ブロックを生成する。具体的には、例えば、プログラムが利用しない変数又はレジスタに対する値の読み出し又は書き込みを行うコード、あるいは、Opaque Predicateを用いて実質的な意味を持たない分岐処理を行うコード等が追加されてよい。
また、生成部12は、第2の命令ブロックを構成する少なくとも一部のコードの入力を受け付けてもよい。
このとき、挿入部13は、第2のテンプレートを用いて、分岐数に応じた条件分岐コードを挿入する。なお、分岐数は、予め所定の数が設定されていてもよいし、指定部11が入力を受け付けてもよい。あるいは、挿入部13が分岐数をランダムに決定してもよい。
処理対象プログラムには、秘密情報である秘密鍵を用いる命令ブロックが存在している。変換装置1は、動的な分岐を挿入する箇所として、第1の命令ブロックAの指定を受け付ける。
この動的な条件分岐により、プログラムの実行の度に実行クロック数が変化し得るため、秘密鍵を用いる命令ブロックの実行タイミングが一定せず、特定されなくなる。
この例では、変換前の処理対象プログラムで指定された「B[0]=K10;」という命令ブロックが、3分岐のコードに変換されている。
具体的には、値が0の場合は、元の命令ブロックが実行され、値が1の場合は、冗長な代入処理である「B[11]=0x10;」が追加される。また、値が2又は3の場合は、乱数Randとの排他的論理和(演算記号:^)を2回実行するという冗長な処理が追加されており、各命令ブロックの実行クロック数は、それぞれ異なっている。
ただし、クロック数を増やすために導入するダミーの命令は、コンパイラの最適化機能等により除去されないものが選ばれる。
なお、この例では、0〜3の乱数を用いた3分岐への変換例を示したが、各命令ブロックが同確率で実行されるように、同じ0〜3の乱数を用いた4分岐に変換されてもよい。さらに、乱数の桁数を増やして5分岐以上の分岐処理が採用されてもよい。
この結果、変換装置1は、特定の処理の実行タイミングを狙ったサイドチャネル攻撃又は故障利用攻撃等への耐性を向上できる。
また、変換装置1は、第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、第2の命令ブロックを生成することで、ユーザの手間を削減して、自動的に難読プログラムを生成できる。
10 制御部
11 指定部
12 生成部
13 挿入部
20 記憶部
Claims (8)
- 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定部と、
指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成部と、
乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入部と、を備える変換装置。 - 前記生成部は、前記第2の命令ブロックを構成する少なくとも一部のコードの入力を受け付ける請求項1に記載の変換装置。
- 前記生成部は、前記第1の命令ブロックを等価なまま変換するための冗長コードを含む第1のテンプレートを用いて、前記第2の命令ブロックを生成する請求項1又は請求項2に記載の変換装置。
- 前記挿入部は、第2のテンプレートを用いて、分岐数に応じた前記条件分岐コードを挿入する請求項1から請求項3のいずれかに記載の変換装置。
- 前記指定部は、複数の前記第1の命令ブロックの指定を受け付ける請求項1から請求項4のいずれかに記載の変換装置。
- 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、
指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、
乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータが実行する変換方法。 - 処理対象プログラムに含まれる第1の命令ブロックの指定を受け付ける指定ステップと、
指定された前記第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックを生成する生成ステップと、
乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードを挿入する挿入ステップと、をコンピュータに実行させるための変換プログラム。 - 秘密情報を用いた処理を実行するためのプログラムであって、
第1の命令ブロックと等価かつ実行クロック数が異なる1又は複数の第2の命令ブロックと、
乱数により前記第1の命令ブロック又は前記第2の命令ブロックのいずれかに動的に分岐する条件分岐コードと、を備える前記秘密情報の難読プログラム。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113672236A (zh) * | 2021-08-31 | 2021-11-19 | 中电科申泰信息科技有限公司 | 一种增强处理器安全性的指令随机生成执行方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100710539B1 (ko) * | 2003-11-26 | 2007-04-24 | 에스케이 주식회사 | 가수분해 효소를 이용한 (s)-인돌린-2-카르복실산 및이의 메틸 에스테르 화합물의 제조방법 |
Citations (2)
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 | イルデト カナダ コーポレーション | サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 |
-
2018
- 2018-10-17 JP JP2018196028A patent/JP7079711B2/ja active Active
Patent Citations (2)
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)
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 |