JP2018501578A - プログラム実行の隠蔽 - Google Patents

プログラム実行の隠蔽 Download PDF

Info

Publication number
JP2018501578A
JP2018501578A JP2017533532A JP2017533532A JP2018501578A JP 2018501578 A JP2018501578 A JP 2018501578A JP 2017533532 A JP2017533532 A JP 2017533532A JP 2017533532 A JP2017533532 A JP 2017533532A JP 2018501578 A JP2018501578 A JP 2018501578A
Authority
JP
Japan
Prior art keywords
variable
action
expression
representation
condition
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
JP2017533532A
Other languages
English (en)
Other versions
JP6303073B2 (ja
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
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 Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of JP2018501578A publication Critical patent/JP2018501578A/ja
Application granted granted Critical
Publication of JP6303073B2 publication Critical patent/JP6303073B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/16Obfuscation or hiding, e.g. involving white box

Abstract

プログラムの変数の集合に対する変更を隠蔽するシステムが提供される。値表現手段(902)は、変数v1,v2,...,vnのうちの変数viの値wiであって、wは集合Wの要素である、値wiを、表現riにより表現し、ここで、ri=E(wi,σi)であり、riは、表現の集合Ω(wi)={E(wi,s)|s∈Σ}の要素であり、σiは、集合Σの要素であって、wiの表現riに冗長性を提供する状態変数であり、Eは、W×Σから予め定められた集合への1対1の暗号化写像である。アクション表現手段(903)は、更新された表現を得るために、Vの部分集合V’内の変数の値に対するアクションを、V’に対するアクションと、V\V’に対するアクションと、により表現する。V’に対するアクションは、変数の集合内の各変数vjの表現rjを変更する。

Description

本発明は、プログラム実行の詳細の隠蔽に関する。より詳細には、本発明は、条件付き演算の隠蔽に関する。より詳細には、本発明は、条件付き演算を含むプログラムにおけるプログラムフロー及びデータフローの隠蔽に関する。
演算子の機能を明らかにする該演算子を使用するのではなく暗号化された値を使用する演算は、テーブル駆動手法を用いて実現され得る。プログラムコード、すなわち、その演算は、ルックアップテーブルを使用することにより、隠蔽され得る。これらのテーブルを暗号化されたデータに適用することは、隠蔽された演算の結果である暗号化された結果を与える。しかしながら、比較(<、=、...)のような演算子を認識することは、これらの命令が、数の点で制限され、通常は、制御フローの変化をもたらす結果となり、それらの結果が、暗号化されたブーリアン型であるので、かなり容易である。この暗号化されたブーリアンが、例えばif−then構造又はif−then−else構造の場合において、条件付き演算を保護する場合、攻撃者は、演算の制御フローから演算の側面を認識できるであろう。さらに、攻撃者は、比較された暗号化された値に関する順序を生成できるであろう。最終的に、これは、暗号化を破ることにつながるおそれがある。
ソフトウェアプログラムにおいて、比較を実行することがしばしば必要である。例えば、所定の閾値に達したかどうか又は何らかの入力が予め定められた値に等しいかどうかをチェックするために、比較が実行される。難読化プログラムにおいて、このような比較は、攻撃者がこの符号化を破るのを助けることがある。
特許文献1は、暗号化関数を有するソフトウェアにより使用されるキーの暗号化セキュリティを高めることに関する方法及びシステムを開示している。これは、ソフトウェアの数学的複雑さを増大させることにより、行われる。ソフトウェアにより使用されるコンポーネント及び関数が、最初に決定され、これらのコンポーネントと関数とこれらの間で交換されるデータとを使用して、ソフトウェアは、解析に対する耐性が高められる。解析耐性を高める際に使用されるこれらの方法は、3つの一般タイプにグループ化される。すなわち、コンポーネント間で交換される情報を調整するタイプと、いくつかのコンポーネントを、異なるが関連するコンポーネントで置換するタイプと、コンポーネント間のデータフローを調整するタイプと、である。
米国特許第7809135号明細書
プログラムの実行中にプログラムから情報が漏洩するのを防止する改善された方法及びシステムを有することは、有利であろう。
この問題に対処するために、第1の態様において、プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽するシステムが提供される。本システムは、
変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wを、表現rにより表現する値表現手段であって、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、値表現手段と、
Vの部分集合V’の値に対するアクションを、V’に対するアクションと、
Figure 2018501578
に対するアクションと、により表現するアクション表現手段と、
を有し、
V’に対するアクションは、
Figure 2018501578
であるように、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更し、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、
Figure 2018501578
に対するアクションは、
Figure 2018501578
であるように、
Figure 2018501578
内の各変数vの表現rを、σの変更された値σ’に応じて変更する。
本システムを使用すると、これらの変数のうちどの変数がプログラム内で実際に変更されたかを攻撃者が発見することが難しくなる。なぜならば、変化していない変数の表現も、状態変数σを変更することにより、変更されるからである。
例えば、アクションは、条件が成立する場合の変数の集合Vに対するアクションと、条件が成立しない場合の変数の集合Vに対するアクションと、を定義しているif文を含み、変数の集合Vは、V及びVの和集合(合併)であり、したがって、V=V∪Vであり、アクション表現手段は、条件が成立するかどうかに応じて、変数の集合V’として変数の集合V又は変数の集合Vを使用するよう構成される。これは、条件と、条件付きコードセグメントのどの分岐が選択されたかと、に関する情報の漏洩を防ぐのに役立つ。アクション表現手段は、上述したように、V’に対するアクションと、
Figure 2018501578
に対するアクションと、により、部分集合V’に対するアクションを表現したときの選択された集合V’を使用することができる。
変数の集合V及び変数の集合Vは、これらのアクションの両方により影響が及ぼされる変数の積集合(共通部分)Vを有することができ、したがって、V=V∩Vであり、アクションは、条件が成立する場合には、関数fに従って、条件が成立しない場合には、関数
Figure 2018501578
に従って、集合Vの各変数vを変更し、アクション表現手段は、入力に応じて条件が成立するかどうかに基づいて、
w’=f(w)及び
Figure 2018501578
であるか、又は、
Figure 2018501578
及びσ’=f(h(w,σ))であるか、
のいずれかであるように、集合Vの各変数vの表現
Figure 2018501578
を決定するよう構成され、hは、W×ΣからWへの写像である。
この特徴を使用すると、fが変数wに実際に適用されたか又は
Figure 2018501578
が変数wに適用されたかを攻撃者が発見することが難しくなる。
アクション表現手段は、表現r及び条件に関する入力に対応する表現r’のルックアップを、表現r及び条件に関する入力のタプルを、対応する表現r’にマッピングしている少なくとも1つのルックアップテーブルを使用して生じさせるよう構成され得る。入力は、例えば、(任意的に暗号化される)ブーリアン変数を含み得る。代替的に、入力は、条件を定義する述語において現れる変数を含んでもよい。この述語及び実際のアクションは、少なくとも1つのルックアップテーブルにおいて隠蔽され得る。
特定の例において、|Σ|=|W|であり、アクション表現手段(103)は、条件bを判定する1つ以上の入力変数を特定するよう構成され、
アクション表現手段(103)は、
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、少なくとも1つの表現rであって、rは集合V内の変数vのrに等しい、少なくとも1つの表現rと、1つ以上の入力変数と、に基づいて、隠蔽されたスワップ演算を実行するスワップユニット(305)であって、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、
Figure 2018501578
は、
Figure 2018501578
とは異なり、r’’は表現である、スワップユニット(305)、及び/又は
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、表現r’’’と、1つ以上の入力変数と、に基づいて、隠蔽されたスワップ演算を実行するスワップユニット(306)であって、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、
Figure 2018501578
は、
Figure 2018501578
とは異なり、r’は、更新された表現r’である、スワップユニット(306)
を有する。
これらのスワップ演算はそれぞれ、表現r’を計算するときの前処理ステップ及び/又は後処理ステップとして使用され得、したがって、実際の関数f及び/又は関数gの隠蔽された実装を単純化することができる。これらのスワップユニットのうちの1つのスワップユニットのみが使用される場合、アクション前後のw及びσの役割が入れ替えられ得る。これは、本システムの残りの部分においてこれを考慮することにより、例えば、符号化
Figure 2018501578
が変化したことを想定している適切なプログラムコードによって処理され得る。
アクション表現手段は、
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、表現r’’に基づいて表現r’’’を得るための関数を計算する関数評価ユニットをさらに有することができ、fは、W上で定義された写像であり、gは、W上で定義された写像である。
このように、関数f及び関数gは、前に実行されたスワップ演算に応じて、表現r’’のw側又はσ側に適用され得、したがって、条件が成立するかどうかにかかわらず、f及びgの隠蔽された実装は同じにすることができる。後に実行され得るスワップ演算は、条件に応じて、最初のスワップ演算により実行されたスワップ演算を元に戻すために、w側とσ側とを再度交換する。
特定の例において、
Figure 2018501578
である。これは、これら2つのスワップ演算が、同一の暗号符号化を用いることを意味する。したがって、同じ符号及び/又はテーブルが、両方のスワップ演算に再使用され得る。
一例において、w及びσの全ての値、並びに、{1,2,3,...,n}内の少なくとも1つのmについて、h(w,σ)=σである。これは、単純化された且つ/又はより対称的な実装を提供することができる。
一例において、V’に対するアクションは、w’=f(w)及びσ’=σであるように、変数の集合V’内の各変数vの表現rを変更するよう構成され、
Figure 2018501578
に対するアクションは、w’=w及びσ’=f(h(w,σ))であるように、
Figure 2018501578
内の各変数vの表現rを変更するよう構成され、
i=1,2,...,nについて、fは、W上で定義された関数であり、
Figure 2018501578
内の各変数vについて、hは、W×Σの要素をWへ写像する関数である。
これは、表現に対してどのような変更を行うかの一例である。
請求項2又は3記載のシステムは、第1の複数のネストされた条件を伴うネストされた条件付き演算を、第2の複数の条件を伴う機能的に等価な一連のネストされていない条件付き演算に表現する、ネストされた条件表現手段をさらに有する。
本システムは、第1の複数のネストされた条件を伴うネストされた条件付き演算を、第2の複数の条件を伴う機能的に等価な一連のネストされていない条件付き演算に変換する変換ユニットをさらに有することができる。これは、情報漏洩の防止を向上させるのに役立つ。なぜならば、ネストされていない条件付き演算の各々が、例えば、第1の生成ユニット及び第2の生成ユニットにより生成されたコードにより評価され、したがって、条件付き演算において現れる全ての式が、評価され、表現r’に影響を及ぼし得るからである。より少ない分岐はスキップされる。
例えば、変換ユニットは、ネストされた条件付き演算のそれぞれの条件分岐のそれぞれの式であって、それぞれの式は、特定の変数に割り当てられる代替値に関連付けられる、それぞれの式を、補助式の項に組み合わせ、このステップを繰り返して、項が異なる様式で組み合わされる複数の補助式が生成されるように、それぞれの条件分岐のそれぞれの式を、補助式の項に組み合わせ、補助式を評価し、それらの結果を記憶するためのコードを生成し、組み合わされた条件であって、組み合わされた条件は、条件の観点から関連しない分岐に対応する項が相殺するような、複数の条件の組合せである、組み合わされた条件に応じて、補助式の結果を組み合わせるためのコードを生成するよう構成され得る。このようなシステムを使用して、ネストされたif文を、ネストされていない一連のif文にフラット化することにより、ネストされたif文を隠蔽することができる。異なる条件分岐において現れる式を組み合わせ、次いで、条件の観点から関連しない式が相殺するように補助式を組み合わせることにより、これらの式の多くが、プログラムにおいて評価され、暗号化された結果に影響を及ぼし得、暗号化された結果に対応する復号化された値w’にどの式が実際に影響を及ぼすかを解析することが難しくなる。
アクション表現手段は、一連のネストされていない条件付き演算のうちの少なくとも1つの条件付き演算と、第2の複数の条件のうちの対応する条件と、を特定するよう構成され得、アクション表現手段は、特定された条件付き演算をアクションとして、特定された対応する条件をif文の条件として、使用するよう構成される。このような組合せは、特に、条件付きコード片において何が生じるかの良好な隠蔽を提供する。さらに、特定ユニットは、一連のネストされていない条件付き演算の各条件付き演算と、第2の複数の条件の各対応する条件と、を特定するよう構成され得、第1の生成ユニット及び第2の生成ユニットは、各特定された条件付き演算及び各対応する条件を処理するよう構成される。
別の態様において、プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽する方法が提供される。本方法は、
変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wを、表現rにより表現するステップであって、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
i=1,2,...,nについて、更新された表現
Figure 2018501578
を得るために、Vの部分集合V’の値に対するアクションを、V’に対するアクションと、
Figure 2018501578
に対するアクションと、により表現するステップであって、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
を含み、
V’に対するアクションは、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更するよう構成され、
Figure 2018501578
に対するアクションは、
Figure 2018501578
内の各変数vの表現rを、σの変更された値σ’に応じて変更するよう構成される。
別の態様に従うと、条件付き演算を隠蔽するシステムが提供される。本システムは、
値wであって、wは集合Wの要素である、値wを、表現rにより表現する表現ユニットであって、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、表現ユニットと、
条件に関する入力に基づいて、表現rから、値w’の表現r’を導出する導出ユニットであって、w’は集合Wの要素であり、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、入力に応じて条件が成立するかどうかに基づいて、w’がf(w)に関連付けられるか、又は、σ’がf(h(w,σ))に関連付けられるか、のいずれかであり、fは、W上で定義された非自明写像であり、hは、W×ΣからWへの写像である、導出ユニットと、
を有する。
表現ユニットは、値wの冗長表現である表現rを提供する。すなわち、wのいかなる単一の値も、多くの異なる表現rを有することができる。なぜならば、rは、Ω(w)の任意の要素とすることができるからである。これは、rの変更が、必ずしもwの変更を意味するとは限らないことを意味する。なぜならば、rは、同じ値のwについて、Ω(w)の異なる要素に単に変更されることがあるからである。このような表現は、条件付き演算、例えば、条件bが成立する場合にはwをw’=f(w)に更新すること、が隠蔽されることを可能にする。すなわち、条件が実際に成立する場合には、表現rは、f(w)の表現、すなわち、集合Ω’(f(w))のメンバーである表現r’になるように更新される。一方、条件が成立しない場合には、表現rは、やはり更新されるが、同じ値wの異なる表現、すなわち、集合Ω’(w)の(異なる)メンバーに更新される。後者の場合、関数fは、集合Ω’(w)の特定のメンバーを選択するために使用されるので、fに基づく同じ関数が、条件が成立するか否かにかからわず、表現rに対して実行及び適用される演算に影響を及ぼす。したがって、関数fにより提供される任意のエントロピー効果は、条件が成立するかどうかにかかわらず、表現w’において広げられる。すなわち、攻撃者が、値r又は条件bを変更し、結果r’に対するその何らかの影響を見るときでさえも、プログラム及びその変数に関する情報を抽出することがやはり難しくなる。さらに、関数fが値wに適用されたか否かを悪意のある観察者が発見することも難しくなる。
決定ユニットは、入力に応じて条件が成立するかどうかに基づいて、w’がf(w)に関連付けられるとともにσ’が
Figure 2018501578
に関連付けられるか、又は、w’が
Figure 2018501578
に関連付けられるとともにσ’がf(h(w,σ))に関連付けられるか、のいずれかであるように、表現
Figure 2018501578
を決定するよう構成され得、gは、W上で定義された(非自明)写像である。これは、例えば、else部を有するif文(例えば、if b then w=f(w) else w=g(w))の隠蔽された実装を作成するのに特に有用である。関数f及び関数gの両方が、最終結果r’に影響を及ぼすが、これらの関数のうちの一方の関数のみが、w部分、すなわち、表現r’の選択元の集合Ω’に影響を及ぼす。他方の関数は、Ω’のどの要素が選択されるかに影響を及ぼすに過ぎない。したがって、(条件bにより決定される、)関数f及び関数gのうちの一方の関数のみが、表現r’の基礎となる復号化された値w’を決定する。
導出ユニットは、表現r及び条件に関する入力に対応する表現r’を、表現r及び入力のタプルを対応する表現r’にマッピングしている少なくとも1つのルックアップテーブルを使用して、ルックアップするよう構成され得る。ルックアップテーブルによる実装は、入力変数及び関数fから条件を計算することに伴う何らかの情報の漏洩を防止することを可能にする。さらに、条件に依存するif文又はジャンプ命令を回避することができる。
例えば、|Σ|=|W|である。導出ユニットは、条件bを判定する1つ以上の変数を特定するよう構成され得、
導出ユニットは、
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、表現rと、1つ以上の変数と、に基づいて、隠蔽されたスワップ演算を実行し、ここで、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、
Figure 2018501578
は、
Figure 2018501578
とは異なり、r’’は表現であり、且つ/又は
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、表現r’’’と、1つ以上の変数と、に基づいて、隠蔽されたスワップ演算を実行し、ここで、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、
Figure 2018501578
は、
Figure 2018501578
とは異なる、スワップユニット
を有することができる。
これらのスワップ演算はそれぞれ、表現r’を計算するときの前処理ステップ及び/又は後処理ステップとして使用され得、したがって、実際の関数f及び/又は関数gの隠蔽された実装を単純化することができる。
導出ユニットは、
Figure 2018501578
であるp∈W及びq∈Wについて、
Figure 2018501578
であるように、表現r’’に基づいて表現r’’’を得るための関数を計算する関数評価ユニットをさらに有することができ、gは、W上で定義された写像である。
このように、関数f及び関数gは、前に実行されたスワップ演算に応じて、表現r’’のw側又はσ側に適用され得、したがって、条件が成立するかどうかにかかわらず、f及びgの隠蔽された実装は同じにすることができる。
例えば、w及びσの全ての値について、h(w,σ)=σである。この例において、条件が真でないときには、表現のσ側は、表現のw側により影響が及ぼされない。これは、このスキームの対称性を向上させる。
決定ユニットは、条件に基づいて、w’=f(w)及びσ’=σ、又は、w’=w及びσ’=f(h(w,σ))のいずれかであるように、表現
Figure 2018501578
を決定するよう構成され得る。これは、例えば、else部を有さないif文(例えば、if b then w=f(w))の隠蔽された実装を作成するのに使用され得る。
本発明の別の態様に従うと、演算を条件付きで実行する方法が提供される。本方法は、
値wであって、wは集合Wの要素である、値wを、表現rにより表現するステップであって、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
条件に関する入力に基づいて、表現rから、値w’の表現r’を導出するステップであって、w’は集合Wの要素であり、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、入力に応じて条件が成立するかどうかに基づいて、w’がf(w)に関連付けられるか、又は、σ’がf(h(w,σ))に関連付けられるか、のいずれかであり、fは、W上で定義された非自明写像であり、hは、W×ΣからWへの写像である、ステップと、
を含む。
本発明の別の態様に従うと、演算を条件付きで実行するためのコンピュータコードを作成するシステムが提供される。本システムは、
条件と、変数wに対して実行される条件付き演算fであって、条件が成立する場合、w’=f(w)であるように変数w’が計算されるように実行される条件付き演算fと、を特定する特定ユニットであって、w’は集合Wの要素であり、fは、W上で定義された写像である、特定ユニットと、
第1のコンピュータコードを生成する第1の生成ユニットであって、第1のコンピュータコードは、実行されたときに、変数wであって、wは集合Wの要素である、変数wを、表現rにより表現するよう構成され、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、第1の生成ユニットと、
第2のコンピュータコードを生成する第2の生成ユニットであって、第2のコンピュータコードは、実行されたときに、条件に関する入力に基づいて、値w’の表現r’を決定するよう構成され、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、第2の生成ユニットと、
を有し、
入力に応じて条件が成立する場合、w’=f(w)であり、入力に応じて条件が成立しない場合、σ’=f(h(w,σ))であり、hは、W×ΣからWへの写像である。
このようなシステムを使用して、プレーンの(隠蔽されていない)演算を、隠蔽コードに変換することができる。例えば、本システムは、隠蔽コードを生成するコンパイラの一部として実装され得る。例えば、生成されるコンピュータコードは、マシンコード、擬似コード、又は仮想マシンコードを含み得る。
別の態様に従うと、演算を条件付きで実行するためのマシンコードを作成する方法が提供される。本方法は、
条件と、変数wに対して実行される条件付き演算fであって、条件が成立する場合、w’=f(w)であるように変数w’が計算されるように実行される条件付き演算fと、を特定するステップであって、w’は集合Wの要素であり、fは、W上で定義された写像である、ステップと、
第1のコンピュータコードを生成するステップであって、第1のコンピュータコードは、実行されたときに、変数wであって、wは集合Wの要素である、変数wを、表現rにより表現するよう構成され、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
第2のコンピュータコードを生成するステップであって、第2のコンピュータコードは、実行されたときに、条件に関する入力に基づいて、値w’の表現r’を決定するよう構成され、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
を含み、
入力に応じて条件が成立する場合、w’=f(w)であり、入力に応じて条件が成立しない場合、σ’=f(h(w,σ))であり、hは、W×ΣからWへの写像である。
別の態様に従うと、プロセッサに上記の方法のうちの1つ以上の方法を実行させる命令を含むコンピュータプログラム製品が提供される。
本発明の上述した実施形態、実装、及び/又は態様のうちの2つ以上が、有用とみなされる何らかの形で組み合わされてもよいことが、当業者には理解されよう。
当業者であれば、本説明に基づいて、これらのシステムの説明された変更形態及び変形形態に対応する、これらの方法及び/又はコンピュータプログラム製品の変更形態及び変形形態を実施できるであろう。
本発明のこれらの態様及び他の態様が、以下で説明される実施形態から明らかであり、以下で説明される実施形態を参照すると明瞭になるであろう。
条件に応じて変換を実行するシステムのブロック図。 条件付き演算を隠蔽するシステムのブロック図。 条件付き演算を隠蔽する導出ユニットのブロック図。 条件付き演算を隠蔽する方法のフローチャート。 演算を条件付きで実行するためのマシンコードを作成するシステムのブロック図。 演算を条件付きで実行するためのマシンコードを作成する別のシステムのブロック図。 ネストされた条件付き演算を変換する方法のフローチャート。 隠蔽された演算を条件付きで実行するためのマシンコードを作成する方法のフローチャート。 変数の集合に対する変更を隠蔽するシステムのブロック図。 変数の集合に対する変更を隠蔽する方法のブロック図。
以下において、データ値の暗号化をどのように改善させ、プログラムの内部動作をどのように隠蔽するかの説明が与えられる。このような技術は、例えば、セキュアな仮想マシンを作成するために適用され得る。また、他の種類のシステムが、本明細書で開示される技術を使用して、情報漏洩に対して保護され得る。本文書を通じて、隠蔽という用語は、例えばリバースエンジニアリングにより、プログラムの機能を発見することが難しいということを示すために、使用される。難読化が、どのような機能的演算がプログラムコードにおいて実行されるかを発見することが難しいということを示すために使用される別の用語である。
図1は、条件付き演算を実行するよう構成される変換ユニット101を有するシステムを示している。すなわち、変換ユニット101は、値w及び条件bを受信し、bに応じたw’を出力する。条件bが真である場合、変換ユニットは、w’=f(w)を出力する。条件bが偽である場合、変換ユニット101は、
Figure 2018501578
を出力する。ここで、f及びgは、異なる関数である。代替の構成において、変換ユニット101は、条件自体の代わりにいくつかの変数(図示せず)を受信するよう構成され、変換ユニット101は、最初に、これらの変数に基づいて、条件bが真であるかどうかを判定するための式を評価する。その後に、変換ユニット101は、w’=f(w)(条件が真である場合)又は
Figure 2018501578
(条件が偽である場合)を出力する。以下において、w及びw’並びに必要に応じてbの値が暗号化される実施形態が開示される。
図2は、条件付き変換を隠蔽された形で実行するシステムを示している。このシステムは、値wの暗号化表現を特定する表現ユニット102を有する。例えば、wの値は、表現ユニット102の入力105で提供され、表現ユニット102は、wの値を暗号化して、wの暗号化された表現rを生成するよう構成される。代替的に、表現ユニット102は、入力値101として表現rを受信し、表現rを導出ユニット103に転送するよう構成されてもよい。いずれの場合においても、値wとその暗号化表現rとの間の例示的な関係は、以下のように説明され得る。
Wが、符号化されるべきオペランド(演算の入力値)の集合を表すとする。状態の有限集合Σと、Wの濃度とΣの濃度との積に等しい濃度を有する有限集合Vと、を定義する。W×Σの要素が、秘密符号化関数(secret encoding function)
Figure 2018501578
により、1対1の形でVに写像される。要素w∈Wの符号化された代表元(representatives)は、集合
Figure 2018501578
のメンバーである。
したがって、各要素w∈Wの代表元の数は、Σの濃度に等しい。結果として、Vからのシンボルを伝達するデータパスは、Wからのシンボルを伝達するデータパスに等しい(Σの濃度=1)か、又は、Wからのシンボルを伝達するデータパスより広い(Σの濃度>1)か、である。すなわち、Σの濃度が、1より大きいときは、wの任意の特定の値を表現することができるより多くの値が存在する。なぜならば、表現
Figure 2018501578
は、wだけでなく、必ずしも何らかの意味を有するわけではない、ランダムに選択され得る状態変数σにも依存するからである。この状態変数σは、wの値を暗号化し、wに対して実行される任意の演算を隠蔽するために、単に導入される。好ましくは、W=Σである、すなわち、少なくとも、Wの濃度は、Σの濃度に等しい。しかしながら、これは限定ではない。
符号化される(又は隠蔽される)関数f:W→Wについて検討する。
Figure 2018501578
及びσ∈Σについて、
Figure 2018501578
であるような、F:V→Vを構築する。したがって、Fは、wの代表元をf(w)の代表元に写像する。一般的な定義は、
Figure 2018501578
であり得る。
この例において、f(w)の代表元
Figure 2018501578
は、関数
Figure 2018501578
により、部分的に決定される。すなわち、f(w)の代表元に関連付けられる状態値は、値wと、関係
Figure 2018501578
を使用してwの代表元に関連付けられる状態σと、の両方に依存し得る。特定の例において、gは、
Figure 2018501578
であるように、σのみに依存する。しかしながら、以下は、この特定の例に限定されるものではない。
したがって、式1において定義される値表現
Figure 2018501578
及び演算f(w)の符号化は、さらに、何らかの写像
Figure 2018501578
を使用して隠蔽される。この写像
Figure 2018501578
は、プログラム内で発生する演算ごとに異なり得る。したがって、それぞれの演算fを伴う複数の命令は、それぞれの関係
Figure 2018501578
を伴う対応する複数の命令を導入する。演算fを伴う複数の命令の実行順序は、関係
Figure 2018501578
を伴う複数の命令に対する実行の順序を生じさせ得る。実際、演算fにより構成される計算の他に、
Figure 2018501578
を計算するための新たな計算が発生する。この後者の計算は、以下では、σ計算又はσ軌道(trajectory)と呼ばれる。同様に、暗号化関数
Figure 2018501578
は、一連のそれぞれの暗号化関数
Figure 2018501578
を導入することにより、プログラム内の演算ごとに異なり得、したがって、任意の値wの表現は、各演算後に異なり得る。このような場合、式1は、以下の式1aに一般化される:
Figure 2018501578
命令の記述に関して、式1の対称性の一般化が利用され得る。関数q:W×Σ→W、関係q:W×Σ→Σについて検討する。式1は、以下の式2に一般化され得る:
Figure 2018501578
このような場合、式1におけるf(w)のおそらく部分的な情報が、q又はqの一部として渡され得る。2つの観測がなされ得る。最初の観測は、特定の例において、q及びqは暗号化であり得、
Figure 2018501578
「のみ」が、値を組み合わせることである。2番目の観測は、値としてのw及び状態としてのσの役割が、小さくなる(diminishing)として確認され得ることである。これは、f(w)又はw、
Figure 2018501578
又はσを決定することができるのに十分である。
プログラムフローを分かりにくくするために、ジャンプ演算が、排除され、上述した表現に関して代替の演算で置換され得る。しかしながら、現代のプロセッサアーキテクチャのif変換機能の場合とは異なり、このif変換は、犠牲の大きいパイプライン分裂(costly pipeline disruption)を防止するためではなく、制御フローにおける観測可能な変更を除去するために、行われる。このように、制御フローの解析は、プログラム内でなされるいかなる選択も明らかにしない。さらに、「if Boolean b is true, then operation F else operation G」等の条件付きプログラムを符号化するとき、条件(「if Boolean b is true」)の結果にかかわらず、両方の分岐(「operation F(演算F)」及び「operation G(演算G)」)が、
Figure 2018501578
に寄与することが、本明細書で開示される技術により、確実にされ得る。そうすることにより、プログラム全体にわたる条件の統計学的な広がり(statistical spread)が実現され得る。例えば、
・wの展開が、条件の結果に対応する分岐により決定され、
・σの展開が、条件の結果に対応しない分岐により決定される。
w及びσの両方が、同時に計算され得る、且つ/又は、
Figure 2018501578
により、不可分に結び付けられ得る。結果として生じたデータを解析することによっては、進んだ分岐、条件の値のいずれも判別することができない。条件の結果に基づく、従来技術において実装されるであろうジャンプ演算は、排除され得るので、プログラムの制御フローから情報を抽出するのは難しくなる。値
Figure 2018501578
は、if−then−else構文の両方の分岐に依存するようにされ得る。情報理論の観点からは、w及びσのエントロピーは、非常に良好に広がる。
例えば、図1の変換ユニット101により実行される変換のプログラム表現は、以下であり得る:
Figure 2018501578
図2に示される例示的な実施形態において、導出ユニット103は、上述したように、値wの暗号化された表現rと、条件b104に関する入力情報と、を受信する。この入力情報は、ブーリアン変数又は暗号化されたブーリアン変数であり得る。代替的に、この入力情報は、条件を定義する述語において、例えば変換ユニット101により組み合わされ得る1つ以上の変数を含んでもよい。
図1の上記の条件付きプログラムは、上述したように状態変数を使用して冗長性を導入することにより、再プログラムされ得、ここで、
Figure 2018501578
は、オペランドwの表現であり、r’は、結果w’の表現であり、したがって、σ及びσ’のいくつかの値について、
Figure 2018501578
である。導出ユニット103の出力は、以下のようにまとめられ得る:
Figure 2018501578
演算
Figure 2018501578
及び演算
Figure 2018501578
はそれぞれ、ルックアップテーブルの形態で実装され得る。しかしながら、if文及び導出ユニット103内部の対応する条件付きジャンプ演算の実行を回避するために、bと表現rとの組合せを、r’の対応する値に直接的にマッピングするルックアップテーブルにより、導出ユニット103を実装することが可能である。ここで、bは、暗号化されたブーリアン変数であり得る。さらに、bは、1つ以上の入力変数で置換され得、ここで、条件bは、1つ以上の入力変数の関数である。このような場合、1つ以上の入力変数と表現rとの組合せが、ルックアップテーブルにより、r’の対応する値にマッピングされ得る。このような場合、条件bを定義する関数は、ルックアップテーブルにおいてf及びgとともに符号化され得る。ルックアップテーブルの代わりに、ルックアップテーブルのネットワークが使用されてもよい。ルックアップテーブルのネットワークとして関数を実装する方法は、それ自体当分野において既知である。
上記から分かるように、演算f及び演算gの両方が、条件(「if b」)の結果にかかわらず、表現r’に影響を及ぼす。したがって、f及びgの両方が、r’の「エントロピー」に寄与し、これらの条件付き演算から情報を抽出するのを難しくする。
図3は、導出ユニット103の例示的な実装を示している。この特定の実装において、if文(又は条件付きジャンプ演算)は、スワップ演算305及びスワップ演算306の2つのスワップ演算で置換されている。このようなスワップ演算は、例えば、ルックアップテーブルの形態で実装され得る。以下の3つのラインのそれぞれのラインにおいて記述される演算は、例えば、それぞれのルックアップテーブルにより実装され得る。
入力:b及びr、ここで、
Figure 2018501578
ライン1:
Figure 2018501578
ライン2:
Figure 2018501578
ライン3:
Figure 2018501578
出力:r’’’、ここで、
Figure 2018501578
又は
Figure 2018501578
上記のコードフラグメントのライン1は、表現
Figure 2018501578
の値(w)部分と状態(σ)部分とを、条件b(符号104)に基づいて、条件付きで交換するスワップ演算305の機能を明らかにするものである。上記のコードフラグメントのライン2は、ブロック307において関数f及び関数gが表現r’にどのように適用されるかを明らかにするものである。ライン3は、再度、表現
Figure 2018501578
の値(w)部分と状態(σ)部分とを、条件b(符号104)に基づいて、条件付きで交換するスワップ演算306の機能を明らかにするものである。
ライン1の後、r’は、bに応じて、
Figure 2018501578
又は
Figure 2018501578
のいずれかであり得ることに留意されたい。ライン2において、シンボルp及びシンボルqは、
Figure 2018501578
であるように定義される。ライン2において、関数fは、bが真である場合、wに実効的に適用される。一方、bが真でない場合、関数gが、wに実効的に適用されるが、ライン1の先行するスワップ演算に起因して、wは、表現r’の「状態」の部分、すなわち、「σ」部分になっている。したがって、r’の「w」部分と「σ」部分とを交換するために、追加のスワップ演算が、ライン3において提供される。ライン3において、シンボルu及びシンボルvは、
Figure 2018501578
であるように定義される。すなわち、u=f(p)及び
Figure 2018501578
である。ライン3において、bが真でない場合、表現r’’の「状態」すなわち「σ」部分において得られた所望の値が、表現r’’’の「w」部分に移される。
ライン1及びライン3はそれぞれ、スワップ関数を表す。このようなスワップ関数は、ルックアップテーブルとして実装され得、ルックアップテーブルにおいて、適切な値が、b及び表現r(又はr’’)の値に基づいて、ルックアップされる。
Figure 2018501578
及び
Figure 2018501578
であるように
Figure 2018501578

Figure 2018501578

Figure 2018501578
、及び
Figure 2018501578
を選択することにより、ライン1及びライン3の両方について同じルックアップテーブルを使用することが可能である。r及びbの値をr’’’の対応する値に直接的にマッピングする単一のルックアップテーブルにおいてライン1〜ライン3の結果を符号化することも可能である。
図2を参照すると、このコードフラグメントに対応する隠蔽された演算を実行する導出ユニット103はまた、以下のように出力を決定するよう構成され得る:
入力:条件b及び表現r、ここで、
Figure 2018501578
Figure 2018501578
ここで、hは、W×ΣからWへの写像である。この場合、スワップ演算は使用されない。また、この実装は、W≠Σである場合又はWの濃度がΣの濃度と異なる場合に適している。if節の両方の分岐をルックアップテーブルの形態で実装し、条件bに応じて、これらのルックアップテーブルのうちの1つのルックアップテーブルを適用することが可能である。関数f及び関数gは、条件bにかかわらず、結果r’に影響を及ぼすことになる。代替的に、r及びb(又はbを判定する変数)のタプルを対応する表現r’にマッピングする1つのルックアップテーブルが実装されてもよい。
特別なケースは、プログラムの隠蔽されていないバージョンにおいてelse分岐が存在しない場合、すなわち、プログラム
Figure 2018501578
を考慮する場合である。この場合、前述の例の関数
Figure 2018501578
は、恒等式(identity)に等しい。すなわち、決定ユニット103は、条件に基づいて、
w’=f(w)及びσ’=σ(条件が真である場合)であるか、又は
w’=w及びσ’=f(h(w,σ))(条件が偽である場合)であるか、
のいずれかであるように、表現
Figure 2018501578
を決定するよう構成される。これは、本質的にセキュリティリスクをもたらさない。なぜならば、何らかの展開が常に存在し、関数fを、暗号化されたドメインのw又は状態σのいずれかに適用することにより、エントロピーの広がりが維持されるからである。しかしながら、この状況は、さらに、影響が及ぼされない変数についてダミー演算を挿入することによって両方の分岐をバランスさせることにより、改善され得る。条件に応じて、異なる変数に影響が及ぼされ得る場合、何らかのif文をバランスさせることにより、プログラムをさらに隠蔽することを目的とする演算「Balance」について検討する。
Figure 2018501578
上記について、例えば、Balance(x:=x+1,y:=f(5))は、x:=x+1;Dummy(y)を意味する。ここで、Dummy(y)は、変数に対する任意の演算であって、該変数を変更しない任意の演算を表すことができる。例えば、Dummy(y)は、y:=y*1、y:=y+0、
Figure 2018501578
のうちのいずれか1つを意味し得る。本開示に鑑みれば、他のダミー演算も、当業者には明らかであろう。
すなわち、複数の分岐であって、各分岐が条件に応じて条件付きで実行される、複数の分岐を含む条件付きコードセグメントが、
・条件分岐のうちの少なくとも1つの分岐において変更される変数であって、条件分岐のうちの少なくとも1つの他の分岐においては変更されない変数を判別し、
・その判別された変数についてダミー演算を作成し、
・そのダミー演算を、条件分岐のうちの上記少なくとも1つの他の分岐に含める
ことにより、バランスされ得る。上記の3つのステップは、条件分岐に関わる各変数について繰り返され得る。
図4は、演算を条件付きで実行する方法を示している。ステップ401において、値wであって、wは集合Wの要素である、値wが、表現rにより表現され、ここで、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への暗号化写像である。この表現rは、例えば、受信され得る。代替的に、この表現は、状態変数σを乱数として決定し、
Figure 2018501578
を計算又はルックアップすることにより、入力値wから生成されることもある。
ステップ402において、値w’の表現r’が決定され、ここで、w’は、集合Wの要素であり、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。例えば、r’の値は、条件bを判定する1つ以上の入力変数及び表現rに基づいて、ルックアップテーブルにおいてルックアップされる。任意的に、上記で説明されたように、スワップ演算、関数演算、及び別のスワップ演算を伴う一連のテーブルルックアップが、実行される。これらのテーブルは、条件bに応じて、w’がf(w)に関連付けられるか、又は、σ’がf(h(w,σ))に関連付けられるか、のいずれかであるように、設計される。ここで、fは、W上で定義された写像であり、hは、W×ΣからWへの写像である。
特定の例において、上記の方法は、条件に基づいて、例えば条件が真である場合、
Figure 2018501578
であるように、fを、暗号化された表現
Figure 2018501578
の「w」部分に適用する。そうでなければ、例えば条件が偽である場合、
Figure 2018501578
であるように、fは、
Figure 2018501578
の「σ」部分に適用される。この方法のさらなる変形例が、図1〜図3を参照して上述したように、提供され得る。例えば、「else」分岐を伴う変形例は、条件に基づいて、
Figure 2018501578
又は
Figure 2018501578
のいずれかであるように、なされ得る。
図5は、演算を条件付きで実行するためのマシンコードを作成するシステムを示している。このシステムは、条件と、変数wに対して実行される条件付き演算fであって、条件が成立する場合、w’=f(w)であるように変数w’が計算されるように実行される条件付き演算fと、を特定する特定ユニット501を有し、ここで、w’は、集合Wの要素であり、fは、W上で定義された写像である。例えば、特定ユニット501は、条件及び条件付き演算を特定するためにコンピュータプログラムの式を抽出する、コンパイラのパーサモジュール(図示せず)に接続され得る。
特定ユニット501は、特定された条件及び条件付き演算に関する情報を、マシンコードを生成する第1の生成ユニット502に提供することができる。生成されたマシンコードは、実行されたときに、変数wであって、wは集合Wの要素である、変数wを、表現rにより表現し、ここで、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。例えば、マシンコードは、実際の入力値w及び乱数σから、表現rを生成することができる。代替的に、第1の生成ユニット502により生成されたマシンコードは、実行されたときに、表現が記憶されているメモリ位置を参照することもできるし、別のソフトウェアコンポーネント又は入力デバイスから、表現rを受信することもできる。
このシステムは、第2の生成ユニット503をさらに有する。第2の生成ユニット503は、表現rと条件に関する入力とに基づいて、w’の表現r’を決定するためのマシンコードを生成する。ここで、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。条件が成立する場合、w’=f(w)であり、条件が成立しない場合、σ’=f(h(w,σ))であり、ここで、hは、W×ΣからWへの写像である。第2の生成ユニット503は、関数を実装するために使用され得る上述したルックアップテーブルのうちの1つ以上のルックアップテーブルを生成するテーブル生成器(図示せず)を有することができる。このシステムは、上述した計算又はテーブルルックアップを実行するために必要なマシンコードを生成するように拡張され得る。
図6は、演算を条件付きで実行するためのマシンコードを生成するシステムのさらなる実施形態を示している。図5におけるアイテムと同様のアイテムには、同じ参照符号が付与されており、それらのアイテムは、再度詳細に説明される必要はない。このシステムは、複数の条件を伴うネストされた条件付き演算を、一連のネストされていない条件付き演算に変換する変換ユニット601を有する。詳細には、対応する条件を伴う一連のネストされていない条件付き演算は、出力値が同一であるという点で、ネストされた条件付き演算と等価である。さらに、対応する条件を伴うネストされていない条件付き演算は、特定ユニット501並びにコード生成ユニット502及びコード生成ユニット503により処理され得る。
図7は、複数の条件を伴うネストされた条件付き演算を、一連のネストされていない条件付き演算に変換する例示的な方法を示している。図6の変換ユニット601が、図7に示される方法を実行するよう構成され得る。
ステップ701において、ネストされた条件付き演算のそれぞれの条件分岐のそれぞれの式が、補助式の項に変換される。これらのそれぞれの式は、条件に応じて、特定の変数に割り当てられる代替値に関連付けられる。すなわち、これらの式は、生成されたコードの同じ変数に割り当てられるように定められるが、この変数にどの式が最終的に割り当てられることになるかを条件が決定する。ステップ702において、ステップ701が繰り返される必要があると判定された場合、フローはステップ701に戻り、項が異なる様式で組み合わされる複数の補助式が生成される。ステップ702において、各条件付き演算が、補助項の特定の組合せに等価であるように、十分な補助式が生成されていると判定された場合、この方法は、ステップ703に進む。ステップ703において、補助式を評価し、これらの補助式の結果を記憶するためのコードが、生成される。このステップは、複数の条件のうちの少なくとも1つの条件の組合せを評価するためのコードを生成することを含み得る。次いで、ステップ704において、組み合わされた条件に応じて、補助式の結果を組み合わせるためのコードが、生成され、ここで、組み合わされた条件は、条件の観点から関連しない分岐に対応する項が相殺するような、複数の条件の組合せである。
再度、条件付きコードセグメント「if b then F else G fi」について検討する。このような文の条件分岐F及び条件分岐Gは、複数の式、例えば、例えば「F;F」と表記される一連の演算を含み、ループ、再帰、又は、追加のif文等の追加の条件付きコードセグメントを含み得る。後者の状況は、ネストされたブーリアンガード付き選択を提示する。プログラムPを、
Figure 2018501578
として定義する。
ここで、4つの代替(F、G、H、及びJ)が存在し、これらの4つのうちの1つのみが実行されるべきである。上述した技術が、P及びPに適用されるとき、bに依存するメイン分岐は、依然として、隠蔽技術により必ずしも完全にはカバーされない。
これに対処する1つの方法は、ネストされたif文を、一連のネストされていないif文で置換し、この一連のネストされていないif文を実行するプロセスにおいて各分岐(F、G、H、J)の式が全て評価されるようにこれを行うことである。
このようにプログラムを変換するために、ダミー演算を挿入することにより、式が、最初にバランスされ得る。
プログラムがもはやネストされたif節を含まないようにプログラムをフラット化するために、体系立てられた方法が適用され得る。
上記で確認したように、提案する方法は、プログラム、特にif節の分岐のペアが、エントロピー的に完全にバランスされる場合に、暗号論的に最良に機能する。分岐が、(無条件の)割り当てと1つ以上のネストされたif節との両方を含む場合、以下のように、if節の各分岐においてこのような割り当てのコピーを分配することにより、これらをフラット化することができる:

Figure 2018501578

Figure 2018501578
変数xに関して好ましくはバランスされている以下のネストされたif節について検討する:
Figure 2018501578
上記において、exp、exp、exp、及びexpは、xに依存する式である。
p:=exp+expi+1及びq:=exp−expi+1を補助変数として導入すると、このプログラムは、以下のように変換され得る:
Figure 2018501578
ここでは、2つの第2レベルのif節の後の続きの部分が、同一になったので、このプログラムは、以下に「フラット化」され得る:
プログラム1:
Figure 2018501578
又は、乗法形式の変形例を使用すると:
Figure 2018501578
結果として生じる2つのif文は、上記の暗号化された表現
Figure 2018501578
についての技術を使用して実装され得る。例えば、上記のプログラム1の最初のif文に関して、表現rは、入力変数xを表現するために使用され得、表現r及び表現rは、p及びqを表現するために使用され得る。さらなる表現が、プログラム1の2番目のif文の出力xを表現するために使用され得る。
if文が、より深いレベルまでネストされている場合、同様の技術を適用して、それらのif文を、一連の順次のif文に変換することができる。例えば、if文が2回ネストされている以下の例示的なプログラムについて検討する:
Figure 2018501578
この例示的なプログラムは、一連のネストされていないif文に変換され得る。そうするために、2ステップアプローチが採用され得る。最初に、1回ネストされているif文の場合と同様に、第3レベルのif節からの続きの部分が、補助変数p:=exp+expi+1及び補助変数q:=exp−expi+1を導入することにより、統一化され得る。これが、以下のコードにおいて、より詳細に示される:
Figure 2018501578
このプログラムをフラット化して、ネストされたif節を含まない以下のコードを得ることができる:
Figure 2018501578
2回ネストされたif節を含むプログラムを順次のネストされていないif節を含むプログラムに変換する上記の変換手順が、任意の式exp〜式expに関して、上記のフォーマットを有する任意のプログラムに適用され得る。
図8は、演算を条件付きで実行するためのコンピュータコードを作成する方法を示している。ステップ801は、条件と、変数wに対して実行される条件付き演算fであって、条件が成立する場合、w’=f(w)であるように変数w’が計算されるように実行される条件付き演算fと、を特定することを含み、ここで、w’は、集合Wの要素であり、fは、W上で定義された写像である。ステップ802は、第1のコンピュータコードを生成することを含み、ここで、第1のコンピュータコードは、実行されたときに、変数wであって、wは集合Wの要素である、変数wを、表現rにより表現するよう構成され、ここで、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。ステップ803は、第2のコンピュータコードを生成することを含み、ここで、第2のコンピュータコードは、実行されたときに、条件に関する入力に基づいて、値w’の表現r’を決定するよう構成され、ここで、r’は、表現の集合
Figure 2018501578
の要素であり、
Figure 2018501578
であり、σ’は、集合Σの要素であって、w’の表現r’に冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、入力に応じて条件が成立する場合、w’=f(w)であり、入力に応じて条件が成立しない場合、σ’=f(h(w,σ))であり、hは、W×ΣからWへの写像である。
プログラム内のジャンプの除去を用いて、伴われる値又は制御フローの解析を禁じることができる。条件の観点から関連しない分岐があっても、if文の全ての分岐においてなされる演算を計算して、これらの計算の結果を1つのデータ要素に組み合わせることは、この目標に到達するのを助けることができる。
ジャンプが抑制されるテーブル駆動マシンのシステムを作成して、プログラムの制御フローにおける変更を除去することができ、ここで、ブーリアンガード付き選択の場合における
Figure 2018501578
の形態の符号化が、進まない分岐に沿って多くてもσだけ、且つ、進む分岐に沿って少なくともwだけ、展開する。
図9は、プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽するシステムを示している。このシステムは、変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wを、表現rにより表現する値表現手段902を有し、ここで、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。この値表現手段902は、上記で開示された技術を使用して実装され得る。値表現手段902は、指定されるように、変数v,v,...,vの全てを、それぞれの表現w,w,...,wにより表現するよう構成され得る。σ,σ,...,σの値は、例えば、ランダムに選択され得る。値表現手段902は、基礎となる値wに基づいて、表現rを計算するよう構成され得る。値表現手段902はまた、別のデバイスから又はこのシステムの別のコンポーネントから、表現rを受信するよう構成され得る。nは正の整数である。すなわち、一般に、変数の集合Vは、少なくとも1つの変数を含む。
このシステムは、i=1,2,...,nについて、更新された表現
Figure 2018501578
を得るために、Vの部分集合V’内の変数の値に対するアクションを、V’に対するアクションと、
Figure 2018501578
に対するアクションと、により表現するアクション表現手段903をさらに有することができ、ここで、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。
Figure 2018501578
は、
Figure 2018501578
に等しくてよい。代替的に、
Figure 2018501578
は、
Figure 2018501578
とは異なる暗号化写像であってもよい。したがって、表現を変更するときに、暗号化写像を変更することが可能である。
さらに、アクション表現手段は、V’に対するアクションと、
Figure 2018501578
に対するアクションと、を実行するよう構成され得る。代替的に、アクション表現手段は、実行されたときにこれらのアクションを実行するプログラムコードを生成することにより、これらのアクションを単に表現するよう構成されてもよい。後者の場合、アクション表現手段903は、部分集合V’内の変数の値に対するアクションを定義しているプログラムコードを(例えばパーサにより)特定し、このプログラムコードを、V’に対するアクションと、
Figure 2018501578
に対するアクションと、を定義するプログラムコードに変換するよう構成され得る。
V’に対するアクションは、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更するよう構成され、
Figure 2018501578
に対するアクションは、
Figure 2018501578
内の各変数vの表現rを、状態変数σの変更された値σ’に応じて変更するよう構成される。詳細には、
Figure 2018501578
内の各変数vの表現rが、同じ値のwを表現する表現に変更される。変数の集合V’内の各変数vの表現rが、同じ値のσ(又は任意的に異なる値のσ)を保ちながら、変数vの変更された値w’に応じて変更され得る。
アクションは、条件が成立する場合の変数の集合Vに対するアクションと、条件が成立しない場合の変数の集合Vに対するアクションと、を定義しているif文を含み得、ここで、V及びVの両方が、Vの部分集合である。すなわち、変数の集合Vは、V及びVの和集合(合併)を含み、したがって、V∪V⊂Vである。アクション表現手段903は、条件が成立する場合には、変数の集合V’として変数の集合Vを使用するよう構成され得る。これは、アクション表現手段903が、変数の集合V内の各変数vの表現rを、変数vの変更された値w’に応じて変更することにより、Vに対するアクションを実行し、
Figure 2018501578
内の各変数vの表現rを、状態変数σの変更された値σ’に応じて変更することにより、
Figure 2018501578
に対するアクションを実行することを意味する。
さらに、アクション表現手段903は、条件が成立しない場合には、変数の集合V’として変数の集合Vを使用するよう構成され得る。これは、アクション表現手段903が、変数の集合V内の各変数vの表現rを、変数vの変更された値w’に応じて変更することにより、Vに対するアクションを実行し、
Figure 2018501578
内の各変数vの表現rを、状態変数σの変更された値σ’に応じて変更することにより、
Figure 2018501578
に対するアクションを実行することを意味する。
変数のうちの一部は、条件が成立するか否かにかかわらず、条件付きコードセグメントにより変更され得る。そのような場合、変数の集合V及び変数の集合Vは、積集合(共通部分)Vを有し、V=V∩Vである。アクションは、条件が成立する場合には、関数fに従って、条件が成立しない場合には、関数
Figure 2018501578
に従って、集合Vの各変数vの値を変更する。アクション表現手段903は、条件が成立する場合には、w’=f(w)及び
Figure 2018501578
であるように、また、条件が成立しない場合には、
Figure 2018501578
及びσ’=f(h(w,σ))であるように、集合Vの各変更された変数vの表現
Figure 2018501578
を決定するアクションにより、これらのアクションを表現するよう構成される。ここで、hは、W×ΣからWへの写像である。
アクション表現手段903は、ルックアップ演算により実装され得る。このために、1つ以上のルックアップテーブルが、準備され、このシステムのメモリに記憶され得る。条件が成立するかどうかは、このシステムにより明示的に判定される必要がない。そうではなく、条件を判定する値の入力が受信され得る。1つ以上のルックアップテーブルは、これらの入力値とともに表現を、対応する変更された表現にマッピングすることができる。したがって、アクション表現手段903は、表現r及び条件に関する入力に対応する表現r’のルックアップを、表現r及び条件に関する入力のタプルを、対応する表現r’にマッピングしている少なくとも1つのルックアップテーブルを使用して生じさせるよう構成され得る。
アクション表現手段903はまた、図3を参照して上述した1つ以上のスワップ演算により実装され得る。アクション表現手段903は、条件bを判定する1つ以上の入力変数を特定するよう構成され得、変数の集合V={v,v,...,v}内の変数の各変数について、上述した第1のスワップユニット305、関数評価ユニット307、及び/又は第2のスワップユニット306を含み得る。
上述した値表現手段902及びアクション表現手段903は、上述した変換ユニット601に動作可能に接続され得る。変換ユニット601は、第1の複数のネストされた条件を伴うネストされた条件付き演算を、第2の複数の条件を伴う機能的に等価な一連のネストされていない条件付き演算により表現する。例えば、一連のネストされていない条件付き演算は、変換ユニット601がネストされた条件付き演算を処理することにより、生成され得る。結果として生じたネストされていない条件付き演算の各々が、上記の方法で、アクション表現手段903により、個々に表現され得る。
図10は、プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽する方法を示している。ステップ1001において、変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wが、表現rにより表現され、ここで、wは、集合Wの要素であり、
Figure 2018501578
であり、rは、表現の集合
Figure 2018501578
の要素であり、σは、集合Σの要素であって、wの表現rに冗長性を提供する状態変数であり、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像である。ステップ1002において、i=1,2,...,nについて、更新された表現
Figure 2018501578
を得るために、Vの部分集合V’の値に対するアクションが、V’に対するアクションと、
Figure 2018501578
に対するアクションと、により表現され、ここで、
Figure 2018501578
は、W×Σから予め定められた集合への1対1の暗号化写像であり、V’に対するアクションは、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更するよう構成され、
Figure 2018501578
に対するアクションは、
Figure 2018501578
内の各変数vの表現rを、σの変更された値σ’に応じて変更するよう構成される。
本発明は、本発明を実施するよう適合されているコンピュータプログラム、特にキャリア上又はキャリア内のコンピュータプログラムにも適用される。コンピュータプログラム製品に関する一実施形態は、本明細書に記載の方法のうちの少なくとも1つの方法の各処理ステップに対応するコンピュータ実行可能な命令を含む。これらの命令は、サブルーチンに細分割され得る、且つ/又は、静的又は動的にリンクされ得る1つ以上のファイルに記憶され得る。コンピュータプログラム製品に関する別の実施形態は、本明細書に記載のシステム及び/又は製品のうちの少なくとも1つの各ユニットに対応するコンピュータ実行可能な命令を含む。これらの命令は、サブルーチンに細分割され得る、且つ/又は、静的又は動的にリンクされ得る1つ以上のファイルに記憶され得る。
コンピュータプログラムのキャリアは、プログラムを運ぶことができる任意のエンティティ又はデバイスとすることができる。例えば、キャリアは、例えば、CD ROM若しくは半導体ROMといったROM等の記憶媒体、又は磁気記録媒体を含み得る。さらに、キャリアは、電気ケーブル、光ケーブル、無線、又は他の手段を介して伝達され得る電気信号又は光信号等の伝送可能なキャリアであってもよい。プログラムが、そのような信号内に具現化される場合、キャリアは、そのようなケーブル、又は、他のデバイス若しくは手段により構成され得る。代替的に、キャリアは、プログラムが組み込まれる集積回路であって、当該の方法を実行する又当該の方法の実行の際に使用されるよう適合されている集積回路であってもよい。
上述した実施形態は、本発明を限定しているのではなく例示していること、及び、当業者であれば、請求項の範囲から逸脱することなく多くの代替実施形態を設計できること、に留意されたい。請求項において、括弧内に配置されるいかなる参照符号も、請求項を限定するものとして解釈されるべきではない。動詞「備える、有する、含む」及びその活用形の使用は、請求項に記載されている要素又はステップ以外の要素又はステップの存在を排除するものではない。要素に先行する品詞「a」又は「an」は、複数のそのような要素の存在を排除するものではない。本発明は、複数の異なる要素を有するハードウェアを用いて、適切にプログラムされたコンピュータを用いて、実施され得る。複数の手段を列挙する、デバイスの請求項において、これらの手段のうちの一部は、1つの同じアイテムのハードウェアにより具現化されることもある。所定の手段が相互に異なる従属請求項に記載されているという単なる事実は、これらの手段の組合せが有利に使用され得ないことを示すものではない。

Claims (14)

  1. プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽するシステムであって、
    前記変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wを、表現rにより表現する値表現手段であって、
    Figure 2018501578
    であり、rは、表現の集合
    Figure 2018501578
    の要素であり、σは、集合Σの要素であって、wの前記表現rに冗長性を提供する状態変数であり、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像である、値表現手段と、
    i=1,2,...,nについて、更新された表現
    Figure 2018501578
    を得るために、Vの部分集合V’内の変数の値に対するアクションを、V’に対するアクションと、
    Figure 2018501578
    に対するアクションと、により表現するアクション表現手段であって、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像である、アクション表現手段と、
    を有し、
    V’に対する前記アクションは、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更するよう構成され、
    Figure 2018501578
    に対する前記アクションは、
    Figure 2018501578
    内の各変数vの表現rを、状態変数σの変更された値σ’に応じて変更するよう構成される、システム。
  2. 前記部分集合V’内の前記変数の前記値に対する前記アクションは、条件が成立する場合の変数の集合Vに対するアクションと、前記条件が成立しない場合の変数の集合Vに対するアクションと、を定義しているif文を含み、前記変数の集合Vは、前記変数の集合Vの部分集合であり、前記変数の集合Vも、前記変数の集合Vの部分集合であり、前記アクション表現手段は、前記条件が成立する場合には、前記変数の集合V’として前記変数の集合Vを使用し、前記条件が成立しない場合には、前記変数の集合V’として前記変数の集合Vを使用するよう構成される、請求項1記載のシステム。
  3. 前記変数の集合V及び前記変数の集合Vは、前記変数の集合Vに対する前記アクション及び前記変数の集合Vに対する前記アクションの両方により影響が及ぼされる変数の積集合Vを有し、したがって、V=V∩Vであり、前記アクションは、前記条件が成立する場合には、関数fに従って、前記条件が成立しない場合には、関数
    Figure 2018501578
    に従って、集合Vの各変数vを変更し、前記アクション表現手段は、前記条件が成立するかどうかに基づいて、
    w’=f(w)及び
    Figure 2018501578
    であるか、又は、
    Figure 2018501578
    及びσ’=f(h(w,σ))であるか、
    のいずれかであるように、前記集合Vの各変数vの表現
    Figure 2018501578
    を決定するよう構成され、hは、W×ΣからWへの写像である、請求項2記載のシステム。
  4. 前記アクション表現手段は、前記表現r及び条件に関する入力に対応する前記表現r’のルックアップを、前記表現r及び前記条件に関する前記入力のタプルを、対応する前記表現r’にマッピングしている少なくとも1つのルックアップテーブルを使用して生じさせるよう構成される、請求項1記載のシステム。
  5. |Σ|=|W|であり、前記アクション表現手段は、条件bを判定する1つ以上の入力変数を特定するよう構成され、
    前記アクション表現手段は、
    Figure 2018501578
    であるp∈W及びq∈Wについて、
    Figure 2018501578
    であるように、少なくとも1つの表現rであって、rは前記集合V内の変数vのrに等しい、少なくとも1つの表現rと、前記1つ以上の入力変数と、に基づいて、隠蔽されたスワップ演算を実行する第1のスワップユニットであって、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像であり、
    Figure 2018501578
    は、
    Figure 2018501578
    とは異なり、r’’は表現である、第1のスワップユニット、及び/又は
    Figure 2018501578
    であるp∈W及びq∈Wについて、
    Figure 2018501578
    であるように、表現r’’’と、前記の1つ以上の変数と、に基づいて、隠蔽されたスワップ演算を実行する第2のスワップユニットであって、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像であり、
    Figure 2018501578
    は、
    Figure 2018501578
    とは異なり、r’は、前記更新された表現r’である、第2のスワップユニット
    を有する、請求項1記載のシステム。
  6. 前記アクション表現手段は、
    Figure 2018501578
    であるp∈W及びq∈Wについて、
    Figure 2018501578
    であるように、前記表現r’’に基づいて表現r’’’を得るための関数を計算する関数評価ユニットを有し、fは、W上で定義された写像であり、gは、W上で定義された写像である、請求項5記載のシステム。
  7. Figure 2018501578
    及び
    Figure 2018501578
    である、請求項5又は6記載のシステム。
  8. w及びσの全ての値、並びに、{1,2,3,...,n}内のmの少なくとも1つの値について、h(w,σ)=σである、請求項3記載のシステム。
  9. V’に対する前記アクションは、w’=f(w)及びσ’=σであるように、前記変数の集合V’内の各変数vの表現rを変更するよう構成され、
    Figure 2018501578
    に対する前記アクションは、w’=w及びσ’=f(h(w,σ))であるように、
    Figure 2018501578
    内の各変数vの表現rを変更するよう構成され、
    i=1,2,...,nについて、fは、W上で定義された関数であり、
    Figure 2018501578
    内の各変数vについて、hは、W×Σの要素をWへ写像する関数である、請求項1記載のシステム。
  10. 第1の複数のネストされた条件を伴うネストされた条件付き演算を、第2の複数の条件を伴う機能的に等価な一連のネストされていない条件付き演算により表現する変換ユニットをさらに有する、請求項2又は3記載のシステム。
  11. 前記変換ユニットは、
    前記ネストされた条件付き演算のそれぞれの条件分岐のそれぞれの式であって、前記それぞれの式は、特定の変数に割り当てられる代替値に関連付けられる、それぞれの式を、補助式の項に組み合わせ、
    上記のステップを繰り返して、項が異なる様式で組み合わされる複数の補助式が生成されるように、それぞれの条件分岐のそれぞれの式を、補助式の項に組み合わせ、
    前記補助式を評価し、それらの結果を記憶するためのコードを生成し、
    組み合わされた条件であって、前記組み合わされた条件は、前記条件の観点から関連しない分岐に対応する項が相殺するような、前記複数の条件の組合せである、組み合わされた条件に応じて、前記補助式の前記結果を組み合わせるためのコードを生成する
    よう構成される、請求項10記載のシステム。
  12. 前記アクション表現手段は、前記一連のネストされていない条件付き演算のうちの少なくとも1つの条件付き演算と、前記第2の複数の条件のうちの対応する条件と、を特定するよう構成され、前記アクション表現手段は、前記の特定された条件付き演算をアクションとして、前記の特定された対応する条件を前記if文の条件として、使用するよう構成される、請求項10記載のシステム。
  13. プログラムの変数の集合V={v,v,...,v}に対する変更を隠蔽する方法であって、
    前記変数v,v,...,vのうちの変数vの値wであって、wは集合Wの要素である、値wを、表現rにより表現するステップであって、
    Figure 2018501578
    であり、rは、表現の集合
    Figure 2018501578
    の要素であり、σは、集合Σの要素であって、wの前記表現rに冗長性を提供する状態変数であり、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
    i=1,2,...,nについて、更新された表現
    Figure 2018501578
    を得るために、Vの部分集合V’の値に対するアクションを、V’に対するアクションと、
    Figure 2018501578
    に対するアクションと、により表現するステップであって、
    Figure 2018501578
    は、W×Σから予め定められた集合への1対1の暗号化写像である、ステップと、
    を含み、
    V’に対する前記アクションは、変数の集合V’内の各変数vの表現rを、変数vの変更された値w’に応じて変更するよう構成され、
    Figure 2018501578
    に対する前記アクションは、
    Figure 2018501578
    内の各変数vの表現rを、σの変更された値σ’に応じて変更するよう構成される、方法。
  14. プロセッサに請求項13記載の方法を実行させる命令を含むコンピュータプログラム。
JP2017533532A 2014-12-22 2015-12-08 プログラム実行の隠蔽 Active JP6303073B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14199750 2014-12-22
EP14199750.2 2014-12-22
PCT/EP2015/078894 WO2016102180A1 (en) 2014-12-22 2015-12-08 Hiding of a program execution

Publications (2)

Publication Number Publication Date
JP2018501578A true JP2018501578A (ja) 2018-01-18
JP6303073B2 JP6303073B2 (ja) 2018-03-28

Family

ID=52272903

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017533532A Active JP6303073B2 (ja) 2014-12-22 2015-12-08 プログラム実行の隠蔽

Country Status (6)

Country Link
US (1) US10685096B2 (ja)
EP (1) EP3238113B1 (ja)
JP (1) JP6303073B2 (ja)
CN (1) CN107113160B (ja)
RU (1) RU2715021C2 (ja)
WO (1) WO2016102180A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL2015599B1 (en) * 2015-10-12 2017-05-02 Koninklijke Philips Nv A cryptographic device and an encoding device.

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269398A (ja) * 2007-04-23 2008-11-06 Fuji Xerox Co Ltd プログラム難読化装置及びプログラム
US20100115287A1 (en) * 2008-10-31 2010-05-06 Apple Inc. System and method for obfuscating constants in a computer program
US20100199354A1 (en) * 2006-12-21 2010-08-05 Johan Eker Obfuscating Computer Program Code
JP2011018119A (ja) * 2009-07-07 2011-01-27 Fuji Xerox Co Ltd プログラム難読化装置及びプログラム
US20130036473A1 (en) * 2011-08-01 2013-02-07 Apple Inc. System and method for branch function based obfuscation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6594761B1 (en) 1999-06-09 2003-07-15 Cloakware Corporation Tamper resistant software encoding
CA2327911A1 (en) 2000-12-08 2002-06-08 Cloakware Corporation Obscuring functions in computer software
US7383443B2 (en) 2002-06-27 2008-06-03 Microsoft Corporation System and method for obfuscating code using instruction replacement scheme
US7620987B2 (en) * 2005-08-12 2009-11-17 Microsoft Corporation Obfuscating computer code to prevent an attack
EP2107489A3 (en) * 2006-12-21 2009-11-04 Telefonaktiebolaget L M Ericsson (PUBL) Obfuscating computer program code
US20110035601A1 (en) 2007-12-21 2011-02-10 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
JP5229166B2 (ja) 2009-09-03 2013-07-03 富士通株式会社 通信方法、中継装置、端末装置および基地局
US8386803B2 (en) * 2009-11-18 2013-02-26 Apple Inc. System and method for data obfuscation based on discrete logarithm properties
US8665270B2 (en) * 2010-12-16 2014-03-04 Csi Ricerca & Ambiente Srl Method of determining implicit hidden features of phenomena which can be represented by a point distribution in a space
US8971526B2 (en) 2011-07-26 2015-03-03 Crocus-Technology Sa Method of counter-measuring against side-channel attacks
CN104025104B (zh) 2012-01-09 2018-05-29 皇家飞利浦有限公司 具有密钥驱动的混淆的虚拟机设备和方法
US8756435B2 (en) * 2012-03-02 2014-06-17 Apple Inc. Obfuscation of control flow of software
JP2016505891A (ja) 2012-12-21 2016-02-25 コーニンクレッカ フィリップス エヌ ヴェKoninklijke Philips N.V. テーブルネットワークを有する計算装置
US9594769B2 (en) 2012-12-21 2017-03-14 Koninklijke Philips N.V. Computing device configured with a table network
KR20140097927A (ko) 2013-01-30 2014-08-07 삼성전자주식회사 소프트웨어의 보안을 높이는 방법
CN104123503B (zh) * 2014-06-25 2017-02-15 中国人民解放军国防科学技术大学 Sat问题求解外包过程中的cnf公式数据保护方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100199354A1 (en) * 2006-12-21 2010-08-05 Johan Eker Obfuscating Computer Program Code
JP2008269398A (ja) * 2007-04-23 2008-11-06 Fuji Xerox Co Ltd プログラム難読化装置及びプログラム
US20100115287A1 (en) * 2008-10-31 2010-05-06 Apple Inc. System and method for obfuscating constants in a computer program
JP2011018119A (ja) * 2009-07-07 2011-01-27 Fuji Xerox Co Ltd プログラム難読化装置及びプログラム
US20130036473A1 (en) * 2011-08-01 2013-02-07 Apple Inc. System and method for branch function based obfuscation

Also Published As

Publication number Publication date
RU2017126073A (ru) 2019-01-24
WO2016102180A1 (en) 2016-06-30
RU2715021C2 (ru) 2020-02-21
RU2017126073A3 (ja) 2019-07-17
EP3238113A1 (en) 2017-11-01
JP6303073B2 (ja) 2018-03-28
EP3238113B1 (en) 2018-09-26
US20180357396A1 (en) 2018-12-13
CN107113160A (zh) 2017-08-29
BR112017013083A2 (pt) 2018-01-02
CN107113160B (zh) 2020-05-15
US10685096B2 (en) 2020-06-16

Similar Documents

Publication Publication Date Title
JP5861018B1 (ja) テーブルネットワークによって構成されたコンピューティングデバイス
RU2676454C2 (ru) Вычислительное устройство, содержащее сеть таблиц
JP7132926B2 (ja) コンパイルデバイス及びコンパイル方法
US11119741B2 (en) Compiling device and method
US20190287427A1 (en) Device and method for performing obfuscated arithmetic
CN111819542A (zh) 编译设备和方法
RU2680761C1 (ru) Безопасные преобразования данных
JP7371034B2 (ja) マスク関数を用いるコンパイラデバイス
WO2015082212A1 (en) A computing device for iterative application of table networks
JP6303073B2 (ja) プログラム実行の隠蔽
EP2947590B1 (en) Program code obfuscation based upon recently executed program code
JP6522860B2 (ja) 計算装置及び方法
BR112017013083B1 (pt) Sistema para ocultar uma alteração e método para ocultar uma alteração

Legal Events

Date Code Title Description
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180122

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180305

R150 Certificate of patent or registration of utility model

Ref document number: 6303073

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250