JP7285850B2 - コンパイルデバイス及び方法 - Google Patents
コンパイルデバイス及び方法 Download PDFInfo
- Publication number
- JP7285850B2 JP7285850B2 JP2020544783A JP2020544783A JP7285850B2 JP 7285850 B2 JP7285850 B2 JP 7285850B2 JP 2020544783 A JP2020544783 A JP 2020544783A JP 2020544783 A JP2020544783 A JP 2020544783A JP 7285850 B2 JP7285850 B2 JP 7285850B2
- Authority
- JP
- Japan
- Prior art keywords
- protection
- security
- dataflow graph
- encoding
- performance
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 67
- 230000004224 protection Effects 0.000 claims description 106
- 230000015654 memory Effects 0.000 claims description 79
- 238000004590 computer program Methods 0.000 claims description 67
- 230000009466 transformation Effects 0.000 claims description 37
- 238000000844 transformation Methods 0.000 claims description 33
- 230000001681 protective effect Effects 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims 1
- 230000001052 transient effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 33
- 238000004422 calculation algorithm Methods 0.000 description 27
- 238000003860 storage Methods 0.000 description 20
- 238000005457 optimization Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000002441 reversible effect Effects 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 9
- 238000011156 evaluation Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 108091026890 Coding region Proteins 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 241001074639 Eucalyptus albens Species 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 241000473391 Archosargus rhomboidalis Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005415 magnetization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000005295 random walk Methods 0.000 description 1
- 238000002922 simulated annealing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/629—Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Description
- コンピュータプログラム表現を受信するように構成された入力インターフェースと、
- プロセッサ回路とを備え、前記プロセッサ回路は、
- コンピュータプログラム表現からデータフローグラフの表現を取得することと、
- データフローグラフの部分に保護変換を割当てることであって、保護変換が、利用可能な保護変換のリストから選択される、割当てること、
- データフローグラフ(200)及び割当てられた保護変換に対するパフォーマンスレベル及びセキュリティーレベルを特定すること、及び、
- パフォーマンスレベル及びセキュリティーレベルが、セキュリティーターゲット及び/又はパフォーマンスターゲットを満たしている場合、保護変換を割当てることを終了すること、を繰り返し行うことと、
- 少なくともセキュリティーターゲット及び/又はパフォーマンスターゲットを満たすデータフローグラフ及び割当てられた保護変換からコンピュータプログラム表現のコンパイル結果を取得することと、
を行うように構成されている。
- 平文を暗号文に暗号化するために使用される公開鍵
- 暗号化された領域において演算(例えば乗算)を実施するために使用される評価鍵
- ユーザーが出力を暗号解読することを可能にする秘密鍵
が関与する。
- 公開鍵は、データを生成することを担当するソフトウェア/ハードウェア要素にディストリビューションされ得る。この鍵に対して保護は要求されない。
- 評価鍵は、データを処理することを担当するソフトウェア/ハードウェアコンポーネントにディストリビューションされ得る。この鍵に対して保護は要求されない。一実施形態において、この鍵は、暗号解読が実現可能であるように、生成されるノイズが十分小さい限り使用される。
- 秘密鍵は、入力データを暗号解読することを担当するソフトウェアに結び付けられたセキュア要素に配備され得る。
- 秘密変数の異なる値に対して、及び、任意選択的に入力値の異なる値に対してコンピュータプログラムの複数回の実行を実現すること、観測可能なものの値、例えば、コンピュータプログラムの実行中に入力変数に依存するコンピュータプログラムの少なくとも1つの変数、例えば、実行を通して変数により引き受けられる値のシーケンスを記録すること、及び/又は、少なくとも1つの変数に対して実施される演算の演算時間、及び/又は、推定された電力消費などを記録すること。例えば、秘密値は、秘密鍵、又は秘密鍵の一部、例えば最初のバイトである。例えば、入力値は、秘密鍵を使用して暗号化される入力メッセージである。幾つかの変数が秘密鍵と相関する場合、それらの変数は、秘密鍵に関する情報を漏らし、これは望ましくないことである。
- 割当てられた保護変換を伴わない秘密変数と観測可能なもの、例えば記録された値又は演算時間などとの間の相関を演算すること。
- 関連するセキュリティーレベルがセキュリティーターゲットを達成するように選択されたデータフローグラフの部分に、初期保護変換を割当てること(311)であって、例えば、保護変換が、閾値より上のセキュリティーレベルをもつように選択され、又は、保護変換が、最高の(最良の)セキュリティーレベル変換であるように選択される、割当てること(311)と、
- パフォーマンスレベルが特定されること(312)と、
- 特定されたパフォーマンスレベルがパフォーマンスターゲット313未満である場合、1つ又は複数の割当てられた保護変換がより低い関連するセキュリティーレベルを伴う保護変換に変更されること(314)とを有する。次に、本方法は、ターゲットに到達するまで繰り返される。
- 関連するセキュリティーレベルがセキュリティーターゲット未満であるように選択されたデータフローグラフの部分に初期保護変換を割当てること(321)であって、例えば、保護変換が、閾値未満のセキュリティーレベルをもつように選択され、又は、保護変換が、最低の(最悪の)セキュリティーレベル変換であるように選択される、割当てること(321)と、
- パフォーマンスレベルが特定されること(322)と、
- 特定されたパフォーマンスレベルがパフォーマンスターゲット323より上である場合、1つ又は複数の割当てられた保護変換が、より高い関連するセキュリティーレベルを伴う保護変換に変更されること(324)と、
を有する。次に、ターゲットに到達するまで、本方法が繰り返される。ターゲットに到達した場合、本方法が終了とされる(325)。コンパイルは、パフォーマンスレベルが依然としてパフォーマンスターゲットより上であった保護変換の最後の集合を使用して実施される。
- 変数の符号化、及び、復号された変数に対する演算の平文実行。この状況では、ほとんどの場合、変数が符号化されるが、変数が演算される直前及び直後に復号される。符号化は、例えば、状態、例えばソルト値を含む、ランダムな全単射演算であり得る。符号化は、マスキング演算、例えば、ランダム値を加算、例えばXORをすることであってもよい。
- 変数の符号化、及び、符号化された変数に対する符号化された演算実行。この状況において、変数は符号化されるが、更に、符号化された形態において演算される。それは、演算を実施するために参照テーブル又は多項式などを要求するので、これは、概してより高価な演算である。
- 変数及び/又は演算に適用される準同形暗号化。
- 定時間実行演算。この場合、変数は符号化されることを必要としないが、それらに対して実施される演算は、それらの値に対して独立している。これは、演算が常に最悪時の時間をかけて実施することを意味する。
(i)保護されるプログラム(例えばcプログラム、又は中間プログラム表現、例えばデータフローグラフ)
(ii)保護されたプログラムのための1つ又は複数のパフォーマンス目標
(iii)プログラムの異なる部分におけるターゲットセキュリティーレベル
(iv)セキュリティー/パフォーマンス特性を伴う符号化及び保護の利用可能なタイプを含むリスト
・タイプ:機密性、完全性、可用性
・攻撃:ホワイトボックス、サイドチャネルタイム、サイドチャネル電力
・労力:高い、中程度、ベストエフォート
を含む。
- セキュリティーに対する最適化の場合:
・最良のタイプの符号化/保護を各プログラム部分に割当て、パフォーマンス(メモリ/CPU)を推定する。
・(パフォーマンスがパフォーマンス目標より悪い)間、{より簡単な符号化/保護をより低いセキュリティーニーズを伴うプログラム部分に適用する}
・結果として得られる保護が要求されるものより低い場合、コンパイラシステムは、状況からプログラマーに警報を出すように警告をトリガーしなければならない。
- パフォーマンスに対する最適化の場合:
・最も実行性のあるタイプの符号化又は保護を各プログラム部分に割当て、パフォーマンス(メモリ/CPU)を推定する。
・(パフォーマンスがパフォーマンス目標より良い)間、{より高いセキュリティーニーズを伴うネットワークにより安全な符号化を適用する}
・結果として得られる保護が、要求されるものより低い場合、コンパイラシステムは、状況からプログラマーに警報を出すように警告をトリガーしなければならない。
・機密性のために、各変数が2つのラベルに割当てられ、第1のものが、使用される符号化のタイプを規定し、第2のものが、符号化領域を規定する。
・完全性のために、プログラム部分は、完全性チェックを判定する拡張されたブロックである。
・可用性のために、高い可用性を要望するプログラム部分はn回反復される。コピーの各々が、それらを無効化する攻撃者のタスクを困難にするように、プログラムの異なる位置に配置される。
・ホワイトボックス攻撃に対して、攻撃者が変数を理解することができないように符号化されるように変数が表記されなければならない。
・サイドチャネルタイミング攻撃に対して、サイドチャネルタイミング攻撃を受けやすいプログラム部分及び変数は、定時間において実行されるようにマーキングされなければならず、又は、大きい実行に依存したタイミングノイズが追加される。定時間は、演算及びメモリアクセスが定時間でなければならないことを意味する。実行に依存したタイミングノイズのために、プログラム部分は、ランダムなデータに依存して大きい時間変動性を導入するブロックを伴って拡張される。
・サイドチャネル電力攻撃に対して、異なる電力要求を伴う命令は、定電力消費を伴う仮想化された演算により置換される。
- 符号化の場合:
・コンパイルが1つのデバイスに対するものである場合、データがそのデバイスを通して符号化されることを特定する。
・コンパイルが複数のデバイスに対するものである場合、連続したデバイスの入力/出力データインターフェースが同じ符号化を使用しなければならないことを特定する。任意選択的に、デバイス生成データにおける対称暗号化アルゴリズム(例えばAES)、及び、デバイス消費データにおける対応した符号化された対称暗号解読アルゴリズム(例えばAES)の符号化された実装を含むことによりコードを拡張する。
- (F)HEの場合:
・コンパイルが1つのデバイスに対するものである場合、入力データが暗号化されなければならないこと、及び、デバイスを通した演算が暗号化された領域において実施されなければならないことを特定する。ノイズが過度に増えた場合、データを暗号解読するために使用される秘密鍵を記憶したセキュア要素との通信を関与させ、及び、場合によっては、別のネットワークに割当てられた公開鍵を使用して、更に再度それを暗号化する。
・コンパイルが異なるデバイスに対するものである場合、データは暗号化されなければならず、演算は暗号化された領域において実施されなければならない。暗号解読は、受信デバイスにおいて行われるのみである。
- 可用性保護が要求される場合:
・コンパイルがマルチコアCPUに対するものである場合、異なるコアに反復されたプログラム部分の各々の実行を割当てる。
・コンパイルがマルチデバイスシステムに対するものである場合、反復されるプログラム部分の各々の実行を、異なるデバイスに割当てる。
- サイドチャネル電力保護の場合、プログラムが実行されるプロセッサにおける異なる命令の電力消費を分析し、それらの命令を定電力消費の参照テーブルに変換する。
- 定時間を使用したサイドチャネルタイム保護の場合、プログラムが実行されるプロセッサにおける異なる命令、及びメモリアクセスに対する時間要求を分析し、それらの命令を定時間アクセスの参照テーブルに変換する。
1.保護され得る変数を検出する
2.ステートメントを組み合わせる
3.n個の符号化を適用し、ステートメントを参照テーブルに変換する
1.vが、参照テーブルに変換され得るステートメントにおいて使用されること、
2.vが、符号化を明らかにすることなく符号化され得ること、
を満たす場合に、変数vが保護され得る。
(1)input1=ファイ(a,b);
(2)input2=c;
(3)出力=g(input1,input2);
を考慮する。
function f(b,c) {
(1) a = g(b,c);
(2) x = h(c);
(3) d = y(a);
(4) e = x;
(5) z = i(d,e);
(6) return z;
}
・変数dは、(符号化を安全に統合し得る)参照テーブルに変換され得るステートメント(3)の左側にある。
・変数dは、(復号を安全に統合し得る)参照テーブルに変換され得るステートメント(5)の右側において使用される。
(1)a=b+c//b及びcは4ビットのレンジをもち、aは5ビットのレンジをもつ。
(2)f=d*a//d及びeは4ビットのレンジをもち、fは8ビットのレンジをもつ。
(3)h=a-f//aは5ビットのレンジをもち、fは8ビットのレンジをもち、hは13ビットのレンジをもつ。
- n=0:任意の数の符号化が使用され得る。典型的には、各変数を保護するために、異なる符号化が使用される。
- n=1:プログラム全体において(変数サイズごとに)同じ符号化が使用される。
- n=2:プログラム全体において(変数サイズごとに)2つの異なる符号化が使用され得る。
- n=…:…
1.現在のマシンにおいてコンパイルされた後に、平文プログラムに対するメモリパフォーマンスを取得する。
2.入力ペナルティーに基づいて、コンパイラシステムは、入力パラメータに従って、保護されたプログラムにおいて可能にされるメモリの絶対的な増加を取得し得る。
3.メモリの絶対的な増加に基づいて、コンパイラシステムは、次に、メモリ制約内においてプログラムに適合した要求される符号化を演算し得る。
まず、導入され得る様々なサイズの符号化の最大数を特定する。これは、例えばプログラムの中間表現においてプログラムをスキャンすること、及びコピーファイネットワークをサイズに基づいてグループに分類すること、及び、例えば、それらをカウントすることにより行われ得る。コピーファイネットワークは、コピー又はファイステートメントのみにより構成されたプログラムグラフ表現のサブネットワークである。これは、コピーファイネットワークにおけるすべての変数が同じレンジをもつこと、及び、コピーファイネットワークにおいて、データに対してどのような操作も実施されないことを意味する。
- コンピュータプログラム表現を受信すること(610)と、
- コンピュータプログラム表現からデータフローグラフ200表現を取得すること(620)と、
- データフローグラフの部分に保護変換を割当てること(630)であって、保護変換が、利用可能な保護変換のリストから選択される、割当てること(630)、
- データフローグラフ200及び割当てられた保護変換に対するパフォーマンスレベル及びセキュリティーレベルを特定すること(640)、及び、
- パフォーマンスレベル及びセキュリティーレベルが、セキュリティーターゲット及び/又はパフォーマンスターゲットを満たしている場合、保護変換を割当てることを終了することであって、例えば、方法600は、割当てること(630)に向かう、又は、取得すること(660)に向かう条件分岐650を含む、終了すること、を繰り返し行うことと、
- 少なくともセキュリティーターゲット及び/又はパフォーマンスターゲットを満たすデータフローグラフ及び割当てられた保護変換からコンピュータプログラム表現のコンパイル結果を取得すること(660)と、
を有する。
100 コンパイルデバイス
110 入力インターフェース
120 ストレージ
130 パース部
132 データフローパーサー
134 符号化分析器
140 オプティマイザー部
142 パフォーマンス分析器
144 セキュリティー分析器
145 組合せ部
150 コンパイルユニット
160 プロセッサ回路
161 メモリ
200 データフローグラフ
210 コピーファイサブグラフ
212~216 コピー又はファイノード
220、230 ノード
222~226 ノード
232~236 ノード
241、242 コピーファイネットワーク
243 データ操作ブロック
244 符号化
245 コピーファイネットワークにおけるエレメント
410 ノード
420 データ生成器(例えばセンサー)
422 符号化及び暗号化(公開鍵:pubK)
430 ソフトウェア
432 アルゴリズム
433 アルゴリズム
440 ハードウェア
450 クラウド
460 ソフトウェア(セキュア環境)
462 暗号解読及び復号
470 ハードウェア
472 セキュア要素(秘密鍵:pk)
481~483 符号化
1000 コンピュータ可読媒体
1010 書き込み可能部分
1020 コンピュータプログラム
1110 集積回路
1120 処理ユニット
1122 メモリ
1124 専用集積回路
1126 通信要素
1130 相互接続体
1140 プロセッサシステム
Claims (13)
- コンピュータプログラムのセキュリティーを改善する保護変換の選択のためのコンパイルデバイスであって、前記コンパイルデバイスが、
コンピュータプログラム表現を受信する入力インターフェースと、
プロセッサ回路とを備え、前記プロセッサ回路が、
前記コンピュータプログラム表現からデータフローグラフの表現を取得することと、
前記データフローグラフの部分に前記保護変換を割当てることであって、前記保護変換が、利用可能な前記保護変換のリストから選択される、割当てること、
前記データフローグラフ及び割当てられた前記保護変換に対するパフォーマンスレベル及びセキュリティーレベルを特定すること、及び
前記パフォーマンスレベル及び前記セキュリティーレベルがセキュリティーターゲット及び/又はパフォーマンスターゲットを満たしている場合、前記保護変換を前記割当てることを終了すること、を繰り返し行うことと、
少なくとも前記セキュリティーターゲット及び/又は前記パフォーマンスターゲットを満たす前記データフローグラフ及び割当てられた前記保護変換から前記コンピュータプログラム表現のコンパイル結果を取得することと、
を行う、コンパイルデバイス。 - 利用可能な前記保護変換の前記リストにおける前記保護変換が、関連するセキュリティーレベルをもち、
前記コンパイルデバイスは、前記関連するセキュリティーレベルが前記セキュリティーターゲットを達成するように選択された前記データフローグラフの部分に初期保護変換を割当て、特定された前記パフォーマンスレベルが前記パフォーマンスターゲット未満である場合、1つ又は複数の割当てられた前記保護変換が、より低い関連するセキュリティーレベルを伴う前記保護変換に変更され、及び/又は、
前記コンパイルデバイスは、前記関連するセキュリティーレベルが前記セキュリティーターゲット未満であるように選択された前記データフローグラフの部分に初期保護変換を割当て、特定された前記パフォーマンスレベルが前記パフォーマンスターゲットより上である場合、1つ又は複数の割当てられた前記保護変換が、より高い関連するセキュリティーレベルを伴う前記保護変換に変更される、
請求項1に記載のコンパイルデバイス。 - 利用可能な前記保護変換が、エッジに対する1つ又は複数の変数保護、及び/又は、前記データフローグラフのノードに対する演算保護を含む、
請求項1又は2に記載のコンパイルデバイス。 - 前記プロセッサ回路が、前記データフローグラフにおける1つ又は複数のエッジ及び/又はノードに対する1つ又は複数の前記セキュリティーターゲットを取得し、前記セキュリティーターゲットが、前記データフローグラフにおける1つ又は複数の前記エッジ及び/又は前記ノードに対して取得された前記セキュリティーターゲットから取得される、
請求項1から3のいずれか一項に記載のコンパイルデバイス。 - 前記保護変換が、
変数の符号化及び復号された前記変数に対する平文の演算実行と、
変数の符号化及び符号化された前記変数に対する符号化された演算実行と、
変数及び/又は演算に適用される準同形暗号化と、
定時間実行演算と、
のうちの1つ又は複数を含む、
請求項1から4のいずれか一項に記載のコンパイルデバイス。 - 前記データフローグラフの部分が、複数の符号化領域のうちの前記符号化領域に割当てられ、同じ前記符号化領域に割当てられた前記データフローグラフの部分が、同じ前記保護変換に割当てられる、
請求項1から5のいずれか一項に記載のコンパイルデバイス。 - 前記セキュリティーターゲットが、
機密性と完全性とを含むセキュリティータイプ、
ホワイトボックス、サイドチャネルタイム、サイドチャネル電力を含む攻撃タイプ、及び/又は、
高い、中程度、ベストエフォートを含む攻撃労力、
に対するターゲットを含む、
請求項1から6のいずれか一項に記載のコンパイルデバイス。 - 前記パフォーマンスレベルが、前記データフローグラフにおける複数の種類の演算の数をカウントすることと、前記データフローグラフにおける複数の種類の前記演算が、割当てられた前記保護変換に従って、符号化された演算により置換されたときの想定されるコストを取得することとにより特定される、
請求項1から7のいずれか一項に記載のコンパイルデバイス。 - 前記セキュリティーターゲットが、入力変数と秘密変数とを示し、
前記セキュリティーレベルが、
前記入力変数及び前記秘密変数の異なる値に対する前記コンピュータプログラムの複数回の実行を実現すること、前記コンピュータプログラムの実行中に前記入力変数に依存する前記コンピュータプログラムの少なくとも1つの変数の値を記録すること、並びに/又は、前記少なくとも1つの変数に対して実施される演算の演算時間を記録することと、
割当てられた前記保護変換を伴わない前記秘密変数と記録された前記値又は前記演算時間との間の相関を演算することと、
により推定される、
請求項1から8のいずれか一項に記載のコンパイルデバイス。 - 前記プロセッサ回路が、前記保護変換を適用する前に演算を組み合わせる、
請求項1から9のいずれか一項に記載のコンパイルデバイス。 - 前記データフローグラフにおける演算ノードが、関連する符号化メモリ要求を含み、
前記プロセッサ回路が、最小の関連する前記符号化メモリ要求から最大まで、前記演算ノードに対して異なる符号化を導入し、最大メモリ量が割当てられるまで符号化された前記演算ノードにメモリを割当てる、
請求項1から10のいずれか一項に記載のコンパイルデバイス。 - 入力インターフェースと、プロセッサ回路とを備え、コンピュータプログラムのセキュリティーを改善する保護変換の選択のためのコンパイルデバイスで行われるコンパイル方法であって、前記コンパイル方法が、
前記入力インターフェースが、コンピュータプログラム表現を受信するステップと、
前記プロセッサ回路が、前記コンピュータプログラム表現からデータフローグラフの表現を取得するステップと、
前記プロセッサ回路が、前記データフローグラフの部分に前記保護変換を割当てるステップであって、前記保護変換が、利用可能な前記保護変換のリストから選択される、割当てるステップ、
前記プロセッサ回路が、前記データフローグラフ及び割当てられた前記保護変換に対するパフォーマンスレベル及びセキュリティーレベルを特定するステップ、及び、
前記プロセッサ回路が、前記パフォーマンスレベル及び前記セキュリティーレベルがセキュリティーターゲット及び/又はパフォーマンスターゲットを満たしている場合、前記保護変換を前記割当てるステップを終了するステップ、を繰り返し行うステップと、
前記プロセッサ回路が、少なくとも前記セキュリティーターゲット及び/又は前記パフォーマンスターゲットを満たす前記データフローグラフ及び割当てられた前記保護変換から、前記コンピュータプログラム表現のコンパイル結果を取得するステップと、
を有する、コンパイル方法。 - 請求項12に記載の方法を実施することをコンパイルデバイスにさせる命令を表す一時的な、又は非一時的なデータを含む、コンピュータ可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP18159169.4 | 2018-02-28 | ||
EP18159169.4A EP3534253A1 (en) | 2018-02-28 | 2018-02-28 | Compiling device and method |
PCT/EP2019/054133 WO2019166288A1 (en) | 2018-02-28 | 2019-02-20 | Compiling device and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021515314A JP2021515314A (ja) | 2021-06-17 |
JP7285850B2 true JP7285850B2 (ja) | 2023-06-02 |
Family
ID=61526604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020544783A Active JP7285850B2 (ja) | 2018-02-28 | 2019-02-20 | コンパイルデバイス及び方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11475166B2 (ja) |
EP (2) | EP3534253A1 (ja) |
JP (1) | JP7285850B2 (ja) |
CN (1) | CN111819542A (ja) |
WO (1) | WO2019166288A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3913509A1 (en) * | 2020-05-22 | 2021-11-24 | Thales Dis France Sa | Method to secure computer code |
EP4012593A1 (en) * | 2020-12-09 | 2022-06-15 | Thales DIS France SA | Neural network cryptography coprocessor providing countermeasture against side-channel analysis |
EP4315140A1 (en) * | 2021-03-26 | 2024-02-07 | Verimatrix UL Ltd | Input driven execution randomization |
CN113076090B (zh) * | 2021-04-23 | 2022-07-05 | 中国人民解放军国防科技大学 | 一种面向边信道安全防护的循环语句执行方法及装置 |
IT202100012488A1 (it) * | 2021-05-14 | 2022-11-14 | Torino Politecnico | Metodo di configurazione di reti neurali e metodo di elaborazione di file binari |
US20230005096A1 (en) * | 2021-06-23 | 2023-01-05 | Nvidia Corporation | Memory allocation using graphs |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012032900A (ja) | 2010-07-29 | 2012-02-16 | Kddi Corp | ソフトウェアの不正配布検出装置、ソフトウェアの不正配布検出方法およびプログラム |
US20140245271A1 (en) | 2013-02-28 | 2014-08-28 | Microsoft Corporation | Compiler Based Obfuscation |
US20170024585A1 (en) | 2014-03-31 | 2017-01-26 | Irdeto B.V. | Secured electronics device |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6594761B1 (en) | 1999-06-09 | 2003-07-15 | Cloakware Corporation | Tamper resistant software encoding |
US6779114B1 (en) * | 1999-08-19 | 2004-08-17 | Cloakware Corporation | Tamper resistant software-control flow encoding |
AU2003242768A1 (en) * | 2002-08-02 | 2004-02-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Optimised code generation |
US7584354B2 (en) * | 2003-01-31 | 2009-09-01 | Intel Corporation | Implementing portable content protection to secure secrets |
US7366914B2 (en) * | 2003-08-29 | 2008-04-29 | Intel Corporation | Source code transformation based on program operators |
US20070266434A1 (en) * | 2006-05-11 | 2007-11-15 | Reifer Consultants, Inc. | Protecting Applications Software Against Unauthorized Access, Reverse Engineering or Tampering |
EP1936532B1 (en) * | 2006-12-21 | 2009-07-29 | Telefonaktiebolaget LM Ericsson (publ) | Obfuscating computer program code |
US8752032B2 (en) * | 2007-02-23 | 2014-06-10 | Irdeto Canada Corporation | System and method of interlocking to protect software-mediated program and device behaviours |
US8990930B2 (en) | 2009-02-06 | 2015-03-24 | Microsoft Corporation | Code property analysis for security mitigations |
US20140130153A1 (en) * | 2012-11-08 | 2014-05-08 | International Business Machines Corporation | Sound and effective data-flow analysis in the presence of aliasing |
US20160306973A1 (en) | 2013-12-05 | 2016-10-20 | Koninklijke Philips N.V. | A computing device for iterative appilcation of table networks |
US10261889B2 (en) * | 2014-06-25 | 2019-04-16 | Microsoft Technology Licensing, Llc | Techniques for edit-and-continue and enhanced optimized debugging on optimized code |
EP3566159B1 (en) | 2017-01-05 | 2020-10-21 | Koninklijke Philips N.V. | Compiling device and method |
EP3502935A1 (en) | 2017-12-20 | 2019-06-26 | Koninklijke Philips N.V. | Compiling device and method |
-
2018
- 2018-02-28 EP EP18159169.4A patent/EP3534253A1/en not_active Withdrawn
-
2019
- 2019-02-20 CN CN201980015732.9A patent/CN111819542A/zh active Pending
- 2019-02-20 EP EP19704829.1A patent/EP3759590B1/en active Active
- 2019-02-20 WO PCT/EP2019/054133 patent/WO2019166288A1/en unknown
- 2019-02-20 JP JP2020544783A patent/JP7285850B2/ja active Active
- 2019-02-20 US US16/976,511 patent/US11475166B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012032900A (ja) | 2010-07-29 | 2012-02-16 | Kddi Corp | ソフトウェアの不正配布検出装置、ソフトウェアの不正配布検出方法およびプログラム |
US20140245271A1 (en) | 2013-02-28 | 2014-08-28 | Microsoft Corporation | Compiler Based Obfuscation |
JP2016511905A (ja) | 2013-02-28 | 2016-04-21 | マイクロソフト テクノロジー ライセンシング,エルエルシー | コンパイラベースの難読化 |
US20170024585A1 (en) | 2014-03-31 | 2017-01-26 | Irdeto B.V. | Secured electronics device |
Non-Patent Citations (1)
Title |
---|
坂本 憲昭 Noriaki SAKAMOTO,耐タンパー技術のためのアルゴリズム難読化の一提案 Scrambling Programs for Tamper Resistant Software,情報処理学会研究報告 Vol.98 No.108 IPSJ SIG Notes,日本,社団法人情報処理学会 Informaiton Processing Socie,1998年11月27日,第98巻,p.25-30. |
Also Published As
Publication number | Publication date |
---|---|
CN111819542A (zh) | 2020-10-23 |
US20210049289A1 (en) | 2021-02-18 |
US11475166B2 (en) | 2022-10-18 |
WO2019166288A1 (en) | 2019-09-06 |
EP3534253A1 (en) | 2019-09-04 |
JP2021515314A (ja) | 2021-06-17 |
EP3759590B1 (en) | 2021-07-21 |
EP3759590A1 (en) | 2021-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7285850B2 (ja) | コンパイルデバイス及び方法 | |
JP5643894B2 (ja) | サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 | |
US10180824B2 (en) | Computing device comprising a table network | |
JP5851074B2 (ja) | 関数の計算のためのルックアップテーブルを記憶した計算装置 | |
JP7132926B2 (ja) | コンパイルデバイス及びコンパイル方法 | |
US9594769B2 (en) | Computing device configured with a table network | |
Wang et al. | Mitigating power side channels during compilation | |
EP3729306B1 (en) | Compiling device and method | |
US11227033B2 (en) | Efficient obfuscation of program control flow | |
Agosta et al. | The MEET approach: Securing cryptographic embedded software against side channel attacks | |
JP2019523492A (ja) | 難読化算術を実行するためのデバイス及び方法 | |
WO2017137507A1 (en) | Secure code optimization method and system | |
EP3818458B1 (en) | A compiler device with masking function | |
Seuschek et al. | Side-channel leakage aware instruction scheduling | |
JP2017509942A (ja) | 暗号アルゴリズムで使用されるときに秘密データを保護する方法 | |
JP7079711B2 (ja) | 変換装置、変換方法、変換プログラム及び難読プログラム | |
US11210135B2 (en) | Lightweight dispatcher for program control flow flattening | |
CN116226881A (zh) | 一种基于编译型语言的源码加密方法 | |
CN108021790B (zh) | 文件保护方法、装置、计算设备及计算机存储介质 | |
CN105095698A (zh) | 基于最近执行的程序代码的程序代码模糊处理 | |
Banescu | Characterizing the strength of software obfuscation against automated attacks | |
Kosky | Software Executable Fingerprinting: Literature Review and a Case Study | |
Breuer | An Obfuscating Compiler |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220216 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230307 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230411 |
|
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: 20230424 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230523 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7285850 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |