JP5643894B2 - サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 - Google Patents

サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 Download PDF

Info

Publication number
JP5643894B2
JP5643894B2 JP2013500287A JP2013500287A JP5643894B2 JP 5643894 B2 JP5643894 B2 JP 5643894B2 JP 2013500287 A JP2013500287 A JP 2013500287A JP 2013500287 A JP2013500287 A JP 2013500287A JP 5643894 B2 JP5643894 B2 JP 5643894B2
Authority
JP
Japan
Prior art keywords
operations
path
identity
expression
computer
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.)
Expired - Fee Related
Application number
JP2013500287A
Other languages
English (en)
Other versions
JP2013524305A (ja
Inventor
リエム クリフォード
リエム クリフォード
ナハス カルロス
ナハス カルロス
Original Assignee
イルデト カナダ コーポレーション
イルデト カナダ コーポレーション
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 イルデト カナダ コーポレーション, イルデト カナダ コーポレーション filed Critical イルデト カナダ コーポレーション
Publication of JP2013524305A publication Critical patent/JP2013524305A/ja
Application granted granted Critical
Publication of JP5643894B2 publication Critical patent/JP5643894B2/ja
Expired - Fee Related 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/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

本発明は一般に、不正な解析に侵されないソフトウェアに関する。本発明は特に、演算パス(Operational Paths)を偽装するソフトウェアコードの製造のためのシステムおよび方法であって、ランタイム中または逆行分析試行中のコードの分析がより困難になるような、システムおよび方法に関する。
コンピュータ技術の分野において、ソフトウェアは通常、モノリシックであるよりもむしろモジュラーの特徴を呈する。その上、所与のソフトウェアで多数の分離した個別のアルゴリズムが使用されることはよくある。このような完全に異なるアルゴリズムが組み合わされて、ソフトウェアが必要とするサービス(すなわち機能性)を提供するようにする。ある特定のサービスのために、多数の異なるアルゴリズムが利用されることはよくあることである。概して言えば、この状況におけるアルゴリズムは、タスクまたはタスク群を遂行するための計算ステップのシーケンスである。アルゴリズムのサイズは多様である。非常に大きい場合もあれば、数個の命令の群ほどに小さい場合もある。一つのアルゴリズムが、それより小さいアルゴリズムを含むこともあるし、それがさらに小さいアルゴリズムを含むこともある。このヒエラルキーの階層の数はいくつであってもよい。
かかるソフトウェアは攻撃者によって様々な方法で逆行分析されたり改ざんされたりすることがよく知られている。かかる改ざんは、多くの市販のアプリケーションにおいて望ましくなく、かかる攻撃に対抗するための暗号が作成されている。暗号作成において、サイドチャネル攻撃とは、暗号システムの物理的インプリメンテーションと関連する物理的特徴とから得られる情報に基づくターゲットソフトウェアコード内の基本アルゴリズムへの攻撃である。暴力的な攻撃を含むような直接的な侵害やアルゴリズムそのものの理論的弱点よりも、システムの物理的な特徴に基づくかかる攻撃には通常、タイミング情報、消費電力、電磁漏洩や、同様の物理的特徴などの属性(これらには限定されない)が関与している。たとえば、音声ですら、暗号システムを解読するために悪用できる情報のさらなる情報源を提供しうる。多くの場合、サイドチャネル攻撃の多くには、暗号作成が実行されるシステムの内部操作の技術的情報が、かなり必要とされる。
サイドチャネル攻撃と同様に、反復起動攻撃は、暗号システムの物理的インプリメンテーションと関連する物理的な特徴とから得られる情報に基づいてターゲットソフトウェアコード内の基本アルゴリズムを攻撃するために通常使用される技術の一種である。ただし、かかる反復起動攻撃は、ある一群の入力があったときに、ある起動から次の起動への同じ実行パスをナビゲートする特定のアプリケーションに依拠している。この特性により、アタッカーは、不明な情報がより明瞭になるまでそれを繰り返し実行することによりアプリケーションのマップを構築することができる。
具体的な攻撃技術の例としては、タイミング解析、単純電力解析(SPA)、または差分電力解析(DPA)がある。かかる例にはそれぞれ、使用されているソフトウェアコードへの深い洞察と、制御された入力でのインプリメンテーションの反復起動とが関与している。これら攻撃技術は、実行アルゴリズム情報から情報を取得する際に有用である。情報は、漏えいすると解析演繹に役立ち、システム中の特定のインプリメンテーションの正確な場所や、また、システムによってどの暗号作成アルゴリズムが使用されたか、などの項目を含む。サイドチャネル攻撃または反復起動攻撃が成功するためには、インプリメンテーションが制御された状態で動作することが期待される。
SPAおよびDPAは消費電力の変化の計算処理における攻撃に歩をすすめるが、このさらに進化した攻撃技術には、情報漏えいに焦点を絞った統計およびエラー訂正コードをも利用するものがある。たとえば、公開鍵暗号法のリベスト−シャミア−アドルマン(Rivest, Shamir and Adleman, RSA)アルゴリズム、ディフィー−ヘルマン(Diffie-Hellman)鍵共有暗号プロトコル、デジタル信号標準(Digital Signal Standard, DSS)暗号標準、デジタル暗号化標準(Digital Encryption Standard, DES)暗号標準、高度暗号化標準(Advanced Encryption Standard, AES)暗号標準、およびその他の暗号化サブシステムが、様々なタイミング技術や差分電力技術によって攻撃されてきた。サイドチャネル攻撃または反復起動攻撃に共通する問題は、追加的に質問に答えるためにシステムを継続的に再起動する必要があることである。演算が繰り返されるうちに、そのソフトウェアの所定の実行が情報の断片を漏えいし、それら情報の断片が最終的にはより完全な情報を構成し得る。
この問題の根底にあるのは、再起動の際の何らかのソフトウェアインプリメンテーション予測可能性である。サイドチャネル攻撃または反復起動攻撃は、ソフトウェアが反復可能に動作するであろうと予測するが、その反復動作から情報が抽出されうる。さらに、この同じ特性に依存する、ソフトウェアに対する別の種類の攻撃もある。たとえば、デバッギングおよび/またはエミュレーションは、反復性に依拠した攻撃の一般的な形式である。これらの場合、アタッカーはたとえば、特定の関数にブレイクポイントを設定しプログラムに踏み込んで、その演算を理解しようとするかもしれない。アタッカーは、関心のあるポイントを通過するときにプログラムを初めから再起動して、その二回目の起動で同じブレイクポイントに到達することを期待するだろう。
サイドチャネル攻撃または反復起動攻撃を阻止するための通常の公知の防御法は、情報の漏えいを減らす試みとして演算の変動量を低減するなどの対策を通常講じる。一般に、演算の変動は次のような試みによって低減できる:a) より遅いデータパス(たとえば、積除算演算)よりも実行に長くかかるように、高速データパス(たとえば、加減算演算)を冗長にする;b)システムにノイズを付加する;c)コードを等時性にして、秘密の値から独立した一定の時間量で実行されるようにする;d)物理的に外界に限定されている堅牢なCPUを使用する。
これらの試みは特定の場合においてはサイドチャネル攻撃または反復起動攻撃の効果を低減する一助となるかもしれないが、どれも、一般的なアルゴリズム構築に適用できる一般的なアプローチを提案してはいない。したがって、サイドチャネル攻撃または反復起動攻撃を防ぐ、より普遍的に有用なシステムおよび方法を提供することが望ましい。
本発明の目的は、サイドチャネル攻撃または反復起動攻撃を防ぐ従来の方法の欠点の少なくとも一つを取り除くかまたは軽減することである。
本発明は、ソフトウェアにおいて実現されるシステムおよび方法であって、タイミング、期間、および消費電力などのサイドチャネル特性または反復起動特性が、ある起動から次の起動に移行しても手続き的に非一貫的ではあるが機能的に等価になるための、数多くの多様な演算パス(Operational Paths)を提供するシステムおよび方法を提供する。なお、かかる演算パスは、メモリ設計やチップセットレイアウト(ただしこれらには限定されない)などの物理的属性に必然であることは理解されよう。これらパスは、タイミング特性や電力特性が予測可能性を回避できるようにデータフロー部分や制御フロー部分を使用して構築することができる。さらに、前記計算パス選択肢は、前記システムから発するタイミング属性および電力属性における非予測可能性量を増加させるために、多数の様々な粒度で構築される。
さらに、前記計算パス選択肢は、公知のモジュラープログラム構築実務下では依存性を有さないようなプログラムのフォーミュラ間に、かつ、かかるプログラムの変数に対して、非明瞭な依存性が存在するように、構築される。この形式は、プロテクションがかかっているシステムから情報を引き出すアタッカーの能力にさらに対抗する。
第一の態様において、本発明は、コンピュータプログラムのコンピュータソフトウェアのソースコードに具体化される計算ステップシーケンスを少なくとも1つ識別する工程と、前記少なくとも1つの計算ステップシーケンス内の式パス(expression path)に基づく代替の演算パスを作成する工程と、前記代替の演算パスを含む計算ステップの攻撃耐性シーケンスを生成する工程とを含む、コンピュータソフトウェアのソースコードの演算パスを偽装する方法を提供する。前記作成工程はさらに、複数の複製式パスを形成するために、前記少なくとも1つの計算ステップシーケンスに対応する前記式パスを複製する工程と、前記複数の複製式パス間にランダムな選択を適用する工程と、前記複数の複製式パス内の演算と等価の代替演算を取得する工程と、前記入力タイミングウィンドウの限定に従って1つ以上の恒等式(identity)を挿入することによって前記代替演算を拡張する工程と、前記1つ以上の恒等式の各々の非特殊な入力を、前記コンピュータプログラムの定数および/または変数に結合させて、1つ以上の関連するおとりを形成する工程と、前記コンピュータプログラムのユーザーが設定した基準に対応する入力タイミングウィンドウを形成する工程と、を含み、前記計算ステップの攻撃耐性シーケンスは、前記式パスと、前記代替演算と、前記1つ以上の恒等式と、前記おとりとを含む。
別の態様において、本発明は、コンピュータソフトウェアのソースコードの演算パスを偽装するシステムを提供し、前記システムは、前記コンピュータソフトのソースコードに含まれる計算工程の回路選択をランダム化するソフトウェアコードを生成するマシン実行可能なコードセグメントの一群を含み、前記マシン実行可能なコードは、コンピュータプログラムのコンピュータソフトウェアのソースコードに具体化される計算ステップシーケンスを少なくとも1つ識別する工程と、前記少なくとも1つの計算ステップシーケンス内の式パスに基づく代替の演算パスを作成する工程と、前記代替の演算パスを含む計算ステップの攻撃耐性シーケンスを生成する工程とを含む。前記作成工程はさらに、複数の複製式パスを形成するために、前記少なくとも1つの計算ステップシーケンスに対応する前記式パスを複製する工程と、前記複数の複製式パス間にランダムな選択を適用する工程と、前記複数の複製式パス内の演算と等価の代替演算を取得する工程と、前記入力タイミングウィンドウの限定に従って1つ以上の恒等式を挿入することによって前記代替演算を拡張する工程と、前記1つ以上の恒等式の各々の非特殊な入力を、前記コンピュータプログラムの定数および/または変数に結合させて、1つ以上の関連するおとりを形成する工程と、前記コンピュータプログラムのユーザーが設定した基準に対応する入力タイミングウィンドウを形成する工程と、を含み、前記計算ステップの攻撃耐性シーケンスは、前記式パスと、前記代替演算と、前記1つ以上の恒等式と、前記おとりとを含む。
さらに別の様態において、本発明は、コンピュータプログラムのコンピュータソフトウェアのソースコードに具体化される計算ステップシーケンスを少なくとも1つ識別する手段と、前記少なくとも1つの計算ステップシーケンス内の式パスに基づく代替の演算パスを作成する手段と、前記代替の演算パスを含む計算ステップの攻撃耐性シーケンスを生成する手段とを含む、コンピュータソフトウェアのソースコードの演算パスを偽装する装置を提供する。前記作成手段はさらに、複数の複製式パスを形成するために、前記少なくとも1つの計算ステップシーケンスに対応する前記式パスを複製する手段と、前記複数の複製式パス間にランダムな選択を適用する手段と、前記複数の複製式パス内の演算と等価の代替演算を取得する手段と、前記入力タイミングウィンドウの限定に従って1つ以上の恒等式を挿入することによって前記代替演算を拡張する手段と、前記1つ以上の恒等式の各々の非特殊な入力を、前記コンピュータプログラムの定数および/または変数に結合させて、1つ以上の関連するおとりを形成する手段と、前記コンピュータプログラムのユーザーが設定した基準に対応する入力タイミングウィンドウを形成する手段と、を含み、前記計算ステップの攻撃耐性シーケンスは、前記複数の複製式パスと、前記複数の複製式パスの各々の中の代替演算と、前記1つ以上の恒等式と、前記おとりとを含む。
さらに別の態様において、本発明は、コンピュータソフトウェアのソースコードの演算パスを偽装するためのコンピュータソフトウェアコードを記憶するコンピュータ読み出し可能な記憶媒体を提供し、前記コンピュータソフトウェアのコードは、コンピュータプログラムのコンピュータソフトウェアのソースコードに具体化される計算ステップシーケンスを少なくとも1つ識別する工程と、前記少なくとも1つの計算ステップシーケンス内の式パスに基づく代替の演算パスを作成する工程と、前記代替の演算パスを含む計算ステップの攻撃耐性シーケンスを生成する工程とを実行可能である。前記コンピュータソフトウェアコードの作成工程はさらに、複数の複製式パスを形成するために、前記少なくとも1つの計算ステップシーケンスに対応する前記式パスを複製する工程と、前記複数の複製式パス間にランダムな選択を適用する工程と、前記複数の複製式パス内の演算と等価の代替演算を取得する工程と、前記入力タイミングウィンドウの限定に従って1つ以上の恒等式を挿入することによって前記代替演算を拡張する工程と、前記1つ以上の恒等式の各々の非特殊な入力を、前記コンピュータプログラムの定数および/または変数に結合させて、1つ以上の関連するおとりを形成する工程と、前記コンピュータプログラムのユーザーが設定した基準に対応する入力タイミングウィンドウを形成する工程と、をさらに実行可能であり、前記計算ステップの攻撃耐性シーケンスは、前記複数の複製式パスと、前記複数の複製式パスの各々の中の代替演算と、前記1つ以上の恒等式と、前記おとりとを含む。
本発明のさらなる様態と特徴は、当業者には、添付の図面とともに本発明の特定の実施形態についての下記の記載を参照すれば明白になるであろう。
本発明の実施形態を、あくまでも例として、添付の図面を参照して説明する。
図1は、本発明が実施されうる公知のコンピュータシステムを示す。 図2は、本発明にかかるプロセスの全体を示す。 図3は、図2に示された本発明にかかるビルドタイムの攻撃耐性アルゴリズム作成の工程を示すフローチャートである。 図4は、図2に示された本発明にかかるランタイム実行を静的および動的に示した図である。 図5は、図3に示された本発明にかかるビルドタイムフローチャートに使用されたような等価物および恒等式のパレットを作成するための工程を示すフローチャートである。 図6は、本発明に準じて使用されたターゲットタイミングウィンドウ内の特定の回路パスのビルドタイム作成例を示す。 図7は、本発明に準じて使用されうるジャンプ間接パス選択の形式の演算処理パス選択の一種を示す。 図8は、本発明に準じて使用されうる関数ポインタテーブル選択の形式の演算処理パス選択の別の一種を示す。 図9は、本発明に準じて使用された可変タイミングパスのランタイム選択の一例を示す。 図10は、図9に示されたようなブロックCの典型例である、二つの異なるタイミングのデータパスからの選択の具体的なインプリメンテーションを示す。
上記のように、アルゴリズムは一般的には、タスクまたはタスク群を遂行するための計算ステップのシーケンスである。本発明では、アルゴリズムの定義は、アルゴリズムのインプリメンテーションをも包含するものとして理解されるべきである。したがって、アルゴリズムは、タスクまたはタスク群を計算装置上で行うコンピュータ命令の一群または高度なソフトウェアプログラミングであってもよい。
一般的には、本発明は、サイドチャネル攻撃または反復起動攻撃に耐性のあるアルゴリズムのインプリメンテーションを作成するために、ソースコードレベルで既存のアルゴリズムを処理する方法およびシステムを提供する。本発明によって作成されるアルゴリズムのインプリメンテーションは、挿入された、もともとサイドチャネル解析を抑制する可変タイミング演算処理パスを含む。パスの可変タイミングは、公知のタイミングのウィンドウに対して制御され(すなわち、下限の閾値および上限の閾値)、実時間制約に応じて動作をパラメータ化し制御する手段を提供する。
なお、本発明は、いかなるコンピュータシステム上でも実施されうると理解されるべきである。本発明が遂行されるコンピュータシステムの単純化された例は、図1のブロック図のように表される。このコンピュータシステム110は、表示部112、キーボード114、コンピュータ116、および外部装置118を含む。
コンピュータ116は、中央処理装置(CPU)120などの、プロセッサまたはマイクロプロセッサを一つ以上含んでもよい。CPU120は数学的演算処理を行い機能を制御して、内部メモリ122、好適にはランダムアクセスメモリ(RAM)および/または読み出し専用メモリ(ROM)、および場合によっては増設メモリ124に保存されているソフトウェアを実行する。増設メモリ124は、たとえば、ビデオゲーム装置、EPROMやPROMなどの着脱式メモリチップや、当該技術分野で公知の同様の記憶媒体のような、マスメモリストレージ、ハードディスク装置、フロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブ、プログラムカートリッジ、およびカートリッジインターフェースを含んでいてもよい。この増設メモリ124はコンピュータ116の内部に物理的に設けられてもよく、または図1に示されるように外部に設けられてもよい。
コンピュータシステム110は、コンピュータプログラムやその他の命令を読み込ませる、その他の同様な手段も含んでもよい。かかる手段は、たとえば、ソフトウェアやデータがコンピュータシステム110と外部システムとの間でやりとりされるようにするコミュニケーションインターフェース126を含むことができる。コミュニケーションインターフェース126の例としては、モデムや、イーサネットカードなどのネットワークインターフェース、シリアルまたはパラレルコミュニケーションポートなどがある。コミュニケーションインターフェース126を介してやり取りされるソフトウェアやデータは、コミュニケーションインターフェース126によって受信できる電子信号、電磁信号、光学信号、またはその他の信号の形式である。言うまでもなく、複数のインターフェースを単一のコンピュータシステム110上に設けることができる。
コンピュータ116への入力およびコンピュータ116からの出力は、入力/出力(I/O)インターフェース128によって管理されている。このI/Oインターフェース128は、表示装置112、キーボード114、外部装置118、およびコンピュータシステム110のその他のかかる部品の制御を管理する。
本発明は便宜上、これらに基づき記載される。本発明がその他のコンピュータなどの制御システム110に適用できることは、当業者には明らかであろう。かかるシステムはとしては、電話、携帯電話、テレビ、テレビのセットトップユニット、販売時点管理(POS)コンピュータ、自動銀行取引機、ラップトップコンピュータ、サーバ、個人情報端末(PDA)、および自動車など、コンピュータまたはプロセッサ制御装置を備えたあらゆる電化製品が挙げられる。
好適な実施形態において、本発明は、コンピュータシステム110上で作動する中間コンパイラプログラムとして実行される。標準的なコンパイラ技術は当該技術分野では周知であり、本明細書中では詳細に検討しない。必要な背景知識を提供する標準的な参考文献が二つあり、それは「Compilers Principles, Techniques, and Tools(コンパイラの原理、技術、およびツール)」1988年、Alfred Aho、Ravi Sethi、およびJeffrey Ullman著(ISBN 0-201-1008-6)、および「Advanced Compiler Design & Implementation(最新コンパイラ設計およびインプリメンテーション」1997年、Steven Muchnick著(ISBN 1-55860-320-4)である。
大まかには、ソフトウェアコンパイラは、フロントエンド、ミドル、バックエンドのように記載される、3つの部分に分けられる。フロントエンドは言語に依存した解析を担当し、バックエンドはコード生成の機械に依存した部分を取り扱う。必要に応じて、言語や機械から独立した最適化を行う中間部分が含まれてもよい。通常は、各コンパイラファミリが、中間部を一つだけと、各高水準言語用のフロントエンドと、各機械依存言語用のバックエンドとを有する。コンパイラファミリ中の上記部分の全ては概して共通の中間言語でコミュニケーションできるので、それらは簡単に交換できる。この中間言語は概して、コントロールフローとデータフローとが簡便に操作されるように、コントロールフローとデータフローとの両方をエクスポーズする形式である。かかる中間の形態は、フローエクスポーズドフォーム(flow-exposed form)と称することもできる。本発明の好適な実施形態において、入力されたソフトウェアの所望の領域を不正に改ざんできないようにするために操作されるのは、この中間コードである。
本発明は、静的単一代入(SSA)形式のソフトウェアコードに最も容易に適用できる。SSAは、スカラー変数を伴う解析と最適化を行うための符号表現としてソフトウェアコンパイラにより使用される、一般的で効率のよい、周知のフローエクスポーズド形式である。定数伝播、冗長計算の検出、デッドコード削除、帰納変数の削除などの用件に対応するために、SSAに基づく効果的なアルゴリズムが開発されてきた。もちろん、GNUコンパイラコレクション(Gnu CC)で提供されるように、SSA以外のフローエクスポーズド形式が意味情報の同様のレベルを提供する場合には、本発明の方法はそれらSSA以外のフローエクスポーズドフォームに適用可能である。Gnu CCソフトウェアは現在、フリーソフトウェア財団から無料で入手できる。同様に、必須のコントロールフロー情報およびデータフロー情報によってソフトウェアの形式が補強されるなら、本発明の方法がソフトウェアに、それよりも高水準または低水準の形式で適用できるであろう。この柔軟性は、以下に記載される暗号化技術の記載から明瞭になるであろう。
本発明は、あらゆるアルゴリズムに一般に適用でき、ビルドタイム・プリコンパイル・ツール(build-time pre-compilation tool)に封入できるという利点を有する。したがって、本発明は、暗号、ハッシュを含むいかなるソフトウェアアプリケーションにも適用できる。さらに、本発明は、サイドチャネル攻撃の脅威があるいかなるソフトウェアに適用してもよい。さらに、本発明のシステムおよび方法は、他の種類の攻撃にも耐えられるように、一般的にいかなるアルゴリズムに適用してもよい。これら攻撃としては、ソフトウェアの予測可能性および再現性に依拠したデバッギング攻撃およびエミュレーション攻撃などがある。たとえば、デバッギング攻撃は通常、ブレイクポイントを設定して、ある起動から次の起動に移行しても全く同じブレイクポイントに到達することを期待しながらアプリケーションを初めから繰り返し起動するという能力に依拠している。本発明の記載での明瞭性のために「サイドチャネル攻撃」という用語を全体で使用するが、本発明は反復起動攻撃や同様の攻撃に対しても有用であることはすでに明白である。
図2について、単純化された図は本発明に係る攻撃耐性アルゴリズムを作成するためのプロセス20の全体を示す。プロセス20は、元のアルゴリズム21について動的可変タイミング演算パス(Operational Paths)を設けるためのコンパイルサイクルおよびビルドサイクルを含むビルドタイム27に関して、ならびに、アルゴリズム21の攻撃耐性形式の実行およびランサイクルを含むランタイム25に関して、全体的に示されている。ビルドタイム27中、以降に詳細に記載されるように、本発明のシステムおよび方法を包含するプリコンパイルツール26にたいして、元のアルゴリズム21が適用される。概して言えば、プリコンパイルツール26は、以下のようなビルドタイムオプション22(ただしこれらには限定されない)を包含している:タイミングウィンドウ許容差;目標性能、サイズ、および/または安全レベル;および/またはランタイム制約など。かかるオプション22は、元のアルゴリズム21に基づいて攻撃耐性アルゴリズム24を作成するために本発明によって使用される。ランタイム25中、ランタイムのエントロピーソース23によって提供されるランダムネスについて、ランダムな回路選択が起こる。
ビルドタイムについての本発明のより詳細な実施形態は、図3に示される。ここに、本発明に準じて攻撃耐性アルゴリズムを作成するビルドタイム法を示すビルドタイムフローチャート30が示されている。図示のように、ビルドタイム法は、ユーザーの元のアルゴリズムとタイミング制約を構文解析し解釈することから開始する。特に、本発明の方法はステップ31で元のアルゴリズム310を取得し、さらにステップ32で、ユーザーのタイミング制約320について所与のアルゴリズム310のタイミングウィンドウを処理する。なお、かかるタイミング制約は、所与のユーザーの操作環境に応じて変動することは理解されよう。ユーザーの元のアルゴリズム310と所与のタイミング制約320とが構文解析され解釈されると、アルゴリズム310の式パス(expression path)がステップ33で複製される。
式パスを複製すると、第2のパスにおいてほぼ同じ実行を作成する入力が提供される。複製されたパスは、全く同じ演算を含んでいるわけではなく、選択肢パレットからの代替の表現を含んでいる。ランタイムにおいては、複製されたパスが同じ機能を、元のパスとは異なる演算で実行する。
次に、ステップ34でインターフェースが提供され、それにより回路セレクタ機構が挿入される。回路セレクタ機構はランタイムにおいて入手可能なエントロピーソースを使用する。エントロピーソースは、代替の回路を選択する際に使用されるランダム性を発生させるために公知の方法で作動する疑似乱数生成器(PRNG)への入力である。有効なソフトウェアベースのPRNGアルゴリズムが知られている。または、乱数を生成するために信頼できるハードウェア乱数生成器を使用し、堅牢なチャネルを介してその値を返信してもよい。PRNGのかかる詳細は、プログラミング技術分野の常識の範疇であり、本明細書でこれ以上は記載しない。
ステップ34でPRNGを使用して回路セレクタインターフェースが追加されると、本発明の方法はステップ35へ進み、タイミングウィンドウ制約を超えないでアルゴリズムの演算を代替の演算に置き換える。これは、後に記載する、等価演算350のパレットを使用することで達成される。同様に、ステップ36で、後に記載する恒等式(identity)360のパレットによってタイミングウィンドウ制約に従って恒等式を挿入することにより、アルゴリズムの演算がさらに拡張される。次に、ステップ37で、おとり用恒等式をアルゴリズムの定数および変数に結合させて、アタッカーが求める有意の情報のおとりを提供する。本発明の方法はステップ38で、ランタイムで使用される、このような攻撃耐性アルゴリズム380を生成する。
図4について、ランタイムの代替図400、401を示す概略図40が本発明に準じて提示される。ここで、本発明の静止図400を、本発明の動図401と対比する。静的には、回路セレクタ41は、一連の回路1、2、…N(Nは1より大きい整数)を表す回路41a、41b、41cで具体化した可変ランタイムパスの選択肢を有する。図示されたような回路セレクタ41は、エントロピーソース42によって提供されるランダム性に応じてランダムに一連の回路1〜Nから回路一つを選択できる。なお、一連の回路1〜Nは、等価回路の一群である。または、ランタイムの、本発明に準じた攻撃耐性アルゴリズムを構築した結果は、図401に見られるように、動的に示すこともできる。起動1が回路3に対応する実行パス41dを起動し、起動2が回路1に対応する実行パス41aを起動するという、3つの起動が示される。同様に、起動3が回路jに対応する実行パス41eを起動する。このように、アルゴリズムの各起動がそれぞれの回路(たとえば41a〜41e)を効果的にランさせることは明瞭である。さらに、各ランタイム起動時のパスは、アルゴリズムの固有のランタイムインスタンスであることが有利である。
等価演算と恒等式のパレットについて、ここでより詳細に述べる。概して言えば、所与のアルゴリズムを含む等価演算を構築するためには、公知の技術が使用できる。たとえば、Zhouらによる「Information Hiding in Software with Mixed Boolean-Arithmetic Transforms(混合ブール演算変換を伴うソフトウェアに潜む情報)」、8th International workshop on Information Security Applications (第8回情報セキュリティアプリケーション国際ワークショップ)(WISA 2007)、61〜75頁、Springer Lecture Notes in Computer Science 4867、2008に開示された、混合ブール演算(MBA)式は、全ての算術演算および論理演算のための複数の恒等式(すなわち式)を作成するために使用できる一つの技術である。これら恒等式は、対応するターゲット演算と同じ動作をする性質を有する。ただし、複数の恒等式の各々は、個別の関連するタイミング(つまり、実行遅延)を有する。
この動作の例としては、32ビットの2の補数のコンテクストにおいて、ADD(すなわち+)演算が以下に示す式を使用して等価的に実行できる。
1. ADD1(x,y) = x+y
2. ADD2(x,y) = x − ~y − 1
3. ADD3(x,y) = 2*(x|y) − (x^y)
上記式ADD1は、上記3つの等価な式のうちADD演算の最も明白なインプリメンテーションである。ただし、その他の二つのフォーミュラ、ADD2およびADD3はそれぞれ、一般的に使用されている32ビットの2の補数演算に基づいた、全く同じ動作を提供する。なお、もちろん、同様の式が、32より大きいビットサイズ用に構築できる。演算の動作は、上記に示された3つの式すべてについて同じだが、タイミング特性は異なると予想される。式ADD1は一つの算術演算を含み、式ADD2は3つの演算を含む。同様に、ADD3の演算は4つの演算を含み、そのうちの一つは、通常他の演算よりも時間がかかる乗算である。
ここで単純に数値vに定数を加えて引く恒等式の作成を考察する。
Identity(v,c) = v + c − c
上記恒等式は、数値cから独立して数値vを作成する。さらに、cは、恒等式の演算処理中、一定でありさえすればよい。したがって、cはプログラミングの意味においては変数でありうる。ここで恒等式におけるADD演算を、上記の式ADD1、2、3の一つと置き換えることを考察する。たとえば、上記恒等式におけるADD3は、下記のようになる。
Identity(v,c) = ADD3(v,c) − c
= 2*(v|c) − (v^c) − c
得られたのは、演算5つという付加的な演算オーバーヘッドを伴う、定数または変数cに依存性を有するvの一致演算である。cへの依存性は、標準的なコンパイラ最適化プラクティスに基づいて従来通りに最適化することはできない。これはMBA演算を使用するからである。これは、1)ユーザーの制御下にある任意の演算サイズおよび演算タイミング、2)定数またはプログラム変数への任意の依存性(ただし変数は式の演算処理中には一定でなければならない)、という二つの重要な特性の算術式を作成するメカニズムを示している。
本発明に準じてこれらの式をオンデマンドで作成するという目的を達成するために、全ての元の算術演算及ビット単位の演算は、等価の式を構築するためにアクセスされる。演算各々について5〜10個の式を構築する。各フォーミュラは、演算の数と、タイミング特性とによって特徴づけられる。最終的に出来上がるのは、ターゲットアルゴリズムに必要とされる各演算に対して等価である演算の大きなパレットである。演算のパレットを作成した結果、上記のADD例によって示されたような等価の式を組み合わせることによって非常に多くの恒等式を構築することができる。各恒等式は、意図する演算処理を隠すような方法で、他のプログラム定数や変数を結び付けることができる。これら恒等式は、演算タイミングについてもまた特徴づけられている。
等価演算と恒等式とのパレットは、上記の構築形式(すなわちMBA)に限定されず、数々の数学的手段を通じて到達できる。たとえば、等価演算を作成するために行列式を使用することができ、その結果新たな恒等式が得られる。また、色々なオーダーの有限環の演算を使用して、恒等式に加えてその他の等価演算を作成することができる。様々なメカニズムを使用して等価演算を作成することにおいて、非常に幅広く深い、選択肢パレットを作成する機会は無限である。
パレットの作成という点で、等価演算および恒等式のパレットを構築する一般的な方法が図5に示されている。ここに示されているパレット作成50では、公知のプログラミング言語510(たとえばC言語)から構成パスを抽出し、代替物を生成することができる。ステップ51で、所与のプログラミング言語510から全算術演算および論理演算が選択される。次にステップ52で、上記の方法(たとえば、上述したようなMBAの式など)を使用して、ステップ51で選択された各演算用に代替等価演算を構築する。ステップ53で、等価演算はそのタイミング属性(すなわち演算処理による遅延)によって特徴づけられるが、ステップ53ではまた、選択肢のパレット520へ等価演算群520aが提供される。次に、等価演算520aは、ステップ54で恒等式を構築するために使用される。
本発明では、恒等式全般と、特に所与の恒等式演算とは、多数の入力と一つの出力を有する関数である。関数への入力の一つが特別に指定されて必ず計算され出力される。関数へのその他の入力は、何らかの値を持っても持たなくてもよい。演算(たとえば32ビットの2の補数の算術演算)の有界系内で、関数の出力は、常に特定の入力を計算する。恒等式のこれらのタイプについては、Zhou et al.による「Information Hiding in Software with Mixed Boolean-Arithmetic Transforms」というタイトルの上記出版物の記載内容からよりよく理解され、また、そこにさらに記載されている。ただし、Zhou et al.はプログラム内の定数/鍵隠蔽および透かし隠蔽のために恒等式を使用することを記載しているのに対し、本発明は恒等式を使用して回路演算処理における多様なタイミングを作り出すユニークなシステムおよび方法を提供している。
さらに、Zhou et al.は、構築された式が、所与の入力の値から独立していることを示している。本発明では、これら入力は、回路演算処理の多様性を増やして、アタッカーが関連する情報を求めてプログラムにおける多数の種々異なるポイントに注目するようにするために使用される。本発明はまた、恒等式演算を利用して、回路を通る際の遅延をできるだけ増大させる能力によって、回路のタイミングを制御する。さらに、恒等式への非特殊な入力はいかなる値をとってもよいので、本発明のシステムおよび方法は、これら非特殊入力を、演算処理されている有意な値を探し求めているアタッカーに対するおとりとして、プログラム変数に結び付ける。
複数の恒等式は、ステップ55で、それら各々のタイミング属性によって特徴づけられ、恒等式群520bが生成されて選択肢パレット520に蓄積される。選択肢パレット520は、本発明に準じたシステムおよび方法での使用のために、このように得ることができる。したがって、所与の選択肢パレットを構築することは、所与のアルゴリズムの代替の演算パスを生成することの前提条件でもあるが、本発明の不可欠な部分でもあることが理解されよう。
選択肢(すなわち、演算等価式および恒等式)パレットを活用して、所与のアルゴリズムを、ターゲットタイミング特性を有するパスとして構築できる。これらの式を多様に結び付けることにより、所望の最大サイズの演算ツリーを作成するメカニズムを提供する。さらに、これら式への入力は、所与の式の演算処理中に一定でありさえすればよい。このことは、これら入力が、上記に示唆したようにアタッカーへのおとり用にプログラム中の変数と結合させることができることを意味する。これらおとりは、演算処理パスから取り込むこともでき、完全に独立したパスであろうと同じ演算処理パスであろうと構わない。これらの本発明の方法を使用して、耐逆行分析依存性が複雑に関係し合うものを作成することができる。
図6に、ターゲットタイミングウィンドウを備えた特定の回路のビルドタイム作成60を示す概略図が示されている。タイミングウィンドウ制約65と共に元の回路を作る元の式64が、自動選択を行う回路構築ツール63へ入力される。ここで、元の回路64は、演算Add、Xor、およびSubを含む。回路構築ツール63が選択肢パレット61を使用して等価式パス62を作成し、また、要求されたタイミングウィンドウ65を標的とする。ここで、選択肢パレットは、代替Add演算であるAdd1、Add2、Add3、Add4…の群と、代替Sub演算であるSub1、Sub2、Sub3、Sub4…の群と、代替Xor演算の群と、上記に記載したように生成された恒等式d1、Id2、Id3、Id4、Id5、Id6,Id7,Id8…の群とを含む。等価演算のタイミングに加えて、恒等式演算もまた選択され、挿入される。たとえば、図示されているようにId1、Id2,Id3,Id7,およびId8のようにである。これら演算は、式のパスのタイミングを変更させるが、また、他の変数や定数へのおとりの依存性が作り上げられるようにする。おとりの依存性は、破線によって示されている。恒等式演算は、それらが式パス中の、文字通りいずれのポイントにも柔軟に設定できるという興味深い性質を有する。その結果、回路セレクタ63は、細かな粒度でターゲットタイミングウィンドウに対応できる。
本発明によると、いかなるサイズの演算ツリーをも作成する能力によって、演算の所望の群のためにタイミングを多様化する多数のコードパスを作成する容量が提供される。このことと、ランタイム時に異なるパスを選択する能力とを結び付けることにより、サイドチャネル攻撃に対する耐性が提供される。さらに、異なるパスがPRNGと関連エントロピーソースとから起動されなければならないと規定すると、高度な耐改ざん性が得られる。
なお、回路構築ツール63について、演算処理パスからの選択は、本発明の意図する範囲を逸脱せずに多様なメカニズムを介して達成できるであろう。この回路選択プロセスには下記の方法(これらに限定されるわけではない)がある。
− 制御フロー条件ステートメント(たとえば、条件付き分岐など)
− ジャンプ間接テーブル(たとえば、スイッチステートメントから生じてもよい、など)
− 関数への間接コール(たとえば、テーブル中に関数ポインタを置くことから生じてもよい、など)
− ソフトウェアマルチプレクサ(たとえば、1または0による乗算により演算を効果的に選択すること、など)
これらメカニズムはよく理解されており、関連する選択方法を構築するために必要とされる構成体がよく知られているが、本発明はこれらの方法を新しいやり方で使用して、演算の可変タイミングパス用の回路セレクタを作成する。本発明において計算のブロックは、コードのアタッカーがある起動から別の起動へソフトウェアがどのように動作するのかを簡単に予測できないように、ランタイム時(すなわち実行時)にランダムに選択される。したがって、パスのランダムな選択が本発明のユニークな態様であることは容易に理解されよう。
図7について、条件付き制御フローおよびジャンプ間接テーブルの方法によって作成された構成体70のコンパイルの結果が示されている。制御フロー条件ステートメントは、二つのパスから選択する際の最も直接的な方法であり、下記のように示される。
if(cond) {
Path l ;
}
else {
Path2;
}
ただし、条件付き制御フローは、最終プログラムにおいて、ほぼ間違いなくアタッカーによって簡単に逆行分析されうる分岐命令群となるという欠点を有する。したがってジャンプ間接テーブルをさらに使用すれば効果があるだろう。ジャンプ間接テーブルは、スイッチ/ケースステートメント群からコンパイラによる最適化としてしばしば取り上げられる。
switch(cond) {
case A:
path1;
case B:
path2;
}
図8について、関数ポインタテーブルを使用してパスが選択でき、それによって間接関数コールが示される、関数ポインタ選択80が示される。いくつかの関数のポインタ(すなわち、アドレス)を使い、アレイ(すなわち、テーブル)の要素としてそれらを置くことにより、様々なパスから選択する能力を提供する。これは、たとえば以下のように、アレイの様々な要素を選択することにより簡単に行える。
a[0] = &func0();
a[1] = &func1 ();
図8に示されているように、xが0または1であるa[x]へのコールにより、func0またはfunc1がコールされる。
前述のケース(制御フロー条件ステートメント、ジャンプ間接テーブル、および関数への間接コール)の各々は、パスを選択する制御フロー法を使用している。言いかえれば、実行されるべきパスの位置へプログラムがジャンプし、選択されたパスのみが実行される。ソフトウェアマルチプレクサの場合と異なり、本発明は、両方(またはそれ以上)のパスが実行され、その後演算処理が為されると、その結果のうちの一つのみが実際には選択されるという方法を定義している。たとえば、要素が0または1である二要素テーブルを考察する。
A[0] = 0
A[1] = 1
Result = A[x] * Path1 + A[y] + Path2
If x=1 and y=0, then Path1 is chosen.
If x=0 and y=1 , then Path2 is chosen.
上記の例は、2つよりも多いパスにあてはめることができる。さらに、乗算以外の演算を使用して同様の結果を得ることもできる。これは、回路セレクタを作成するためのテーブルと算術演算との新規の使用法である。
図9について、可変タイミングパス90のランタイム選択が示される。ここでは、特定のタイミングウィンドウ93を保証するために可変タイミング演算ブロック94、95、96がどのように設定されるかを知ることができる。図9は、演算パスの3つの連続したブロックA,B,Cを示す。これらブロックの各々は、代替かつ等価のインプリメンテーションを内部に有する。
ブロックAは3つのインプリメンテーションA1、A2、A3を有する。
ブロックBは3つのインプリメンテーションB1、B2、B3を有する。
ブロックCは2つのインプリメンテーションC1、C2を有する。
インプリメンテーションの各々は、括弧内の値として示された予測タイミングを有している。回路セレクタ91が考えられうるインプリメンテーションを通じてA→B→Cの順に実行するパスを選択する。全タイミングウィンドウ[15、40]の回路を介するパスとしては、18個ありうる。もっとも早い回路はA2→B1→C1=15であり、最も遅い回路はA3→B2→C2=40である。
回路のタイミングウィンドウは、回路セレクタ91が選択するパスを限定することによってさらに制約することができる。たとえば、制約タイミングウィンドウ[25、30]は、10個のパスから回路セレクタが選択できることを示している(93の中にリストアップされている)。この小さな例に示されているように、幅広い可変タイミングパスが構築でき、一方で回路全体の制約タイミングウィンドウは維持される。これが回路の動的に多様な実行という目的を達成する。これによりソフトウェアの再起動に基づく攻撃に抵抗できる。その一方で、これにより、システム全体のリアルタイム制約にとって重要である、回路全体の一貫したパフォーマンスウィンドウが維持される。エントロピーソース92が、回路パスを選択することを含むランタイム決定の入力を提供するために必要である。これらエントロピーソースを使用して、公知のPRNG技術がシード指定されてもよい。エントロピーソースの例としては、1)日付・時刻ソース、2)プロセス識別子(PIDs)、3)入手可能なメモリのアドレス、4)ランタイムシステム状態情報、5)ハードウェアのエントロピーソース(たとえば、トラステッド・プラットフォーム・モジュール(Trusted Platform Module) (TPM))などがある(ただし、これに限定されない)。
図10は、2つの異なるタイミングのデータパスから選択するプロセス100を示す。ここで、異なるタイミングで等価の機能を行う2つの式パス(関数101および105)の具体例が示されている。パスを関数としてカプセル化することは、単なる一例である。さらに、これはインラインコードとして、または、基本ブロック内で、行うこともできる。図10は、図9のブロックCに対応する図として見てもよい。図9の関数C1(5)およびC2(10)が関数101および105にそれぞれ対応する。ソフトウェアマルチプレクサ103を介して、関数101および105が組み合わさって、示されているような演算パス102を生成する。回路選択プロセスは、プロセス104からランダムに選択されたものを用いてソフトウェアマルチプレクサによって行われる。
本発明の方法のステップは、オブジェクトコードやソースコードなど多様なフォーマットで保存されている実行可能なマシンコードの群として実施できる。かかるコードは、本明細書中では一般的に、単純化のため、アルゴリズム、代替のアルゴリズム、プログラミングコード、コンピュータプログラムなどとして記載している。実行可能なマシンコードは、外部プログラムコールや当該技術分野で公知のその他の技術によって、他のプログラムのコードと一体化でき、サブルーチンとして実行してもよいことは明らかである。
本発明の実施形態は、方法のステップでプログラムされたコンピュータプロセッサや同様の機器によって実行されてもよく、またはこれらステップを実行する手段を備えた電子システムによって実行されてもよい。同様に、コンピュータディスケット、CD−ROM、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)や、当該技術分野で公知の同様なコンピュータソフトウェア記憶手段などの電子メモリ手段が、かかる方法ステップを実行するようプログラムされてもよい。また、これらの方法ステップを表す電子信号が通信ネットワークを介して伝達されてもよい。
また、本発明がコンピュータおよびコンピュータシステムの既存の範囲に限定される必要が無いことも当業者には明白であろう。クレジットカード、デビットカード、銀行のカード、およびスマートカードは、コード化でき、本発明をそのそれぞれのアプリケーションに適用できる。本発明に準じた電子商取引システムはたとえば、ソフトウェアやパスワードを記憶するために磁気ストライプや電子回路を使用するパーキングメーター、自動販売機、公衆電話、在庫管理、レンタカーなどに適用できる。また、かかるインプリメンテーションは当業者に明瞭であり、本発明から逸脱するものではない。本発明の実施形態は、もっぱら例証のためのものである。多様な種類のソフトウェア、または数々のソフトウェアが、本発明によって強化されたセキュリティの恩恵を受けるであろうことも、同様に明白であろう。さらに、当業者によって、添付のクレームによってのみ定義される本発明の範囲を逸脱することなく、特定の実施形態に変更、変形、変種がもたらされるであろう。

Claims (30)

  1. ソースコードの演算パスを偽装する方法であって、
    コンピュータプログラムのソースコードに具体化され、計算ステップシーケンスを含む、元の式パスを識別する工程と、
    前記元の式パスを複製して複数の複製式パスを生成する工程と、
    元の式パスと前記複数の複製式パスとを含む一群の式パスから、前記コンピュータプログラムの実行中に、式パスをランダムに選択するよう構成された選択機構を生成する工程と、
    前記複製式パスのそれぞれにおける1つ以上の演算を、それぞれの式パスについて最小および最大の許容実行時間を特定するタイミングウィンドウの少なくとも一部に基づいて、前記1つ以上の演算と等価の代替演算へ置換する置換工程と、
    前記元の式パスと前記複数の複製式パスと前記選択機構とを含む、攻撃耐性のあるソースコードを生成する工程とを含む、方法。
  2. 記計算ステップシーケンスは、コンピュータ命令の一群を含む、請求項1に記載の方法。
  3. 記計算ステップシーケンスは、タスクを計算装置上で行う高度なソフトウェアプログラミングの一つを含む、請求項1に記載の方法。
  4. 記計算ステップシーケンスは、タスク群を計算装置上で行う高度なソフトウェアプログラミングの一つを含む、請求項1に記載の方法。
  5. 前記置換工程は、所定の制約オプションの少なくとも一部に基づいて、前記代替演算選択することを含み、前記所定の制約オプションは、タイミングウィンドウ許容差、目標性能、目標サイズ、目標安全レベル、およびランタイム制約のうち1つ以上を含む、請求項1に記載の方法。
  6. 前記置換工程は、等価演算のパレットから前記代替演算を選択することを含む、請求項1に記載の方法。
  7. 恒等演算のパレットから選択された1つ以上の恒等演算を挿入することにより、前記複数の式パスの少なくとも1つにおける前記代替演算の少なくとも一部を拡張する工程をさらに含み、
    前記1つ以上の恒等演算は、前記タイミングウィンドウの少なくとも一部に基づいて選択される、請求項に記載の方法。
  8. 前記等価演算のパレットと前記恒等演算のパレットとは、前記コンピュータプログラムを記載するのに用いられたコンピュータプログラミング言語に基づいて事前準備されている、請求項に記載の方法。
  9. 前記等価演算のパレットと、前記恒等演算のパレットとは、ともに選択肢のパレットを形成し、前記選択肢のパレットは、
    前記コンピュータプログラミング言語から、数学的および論理的演算のすべてを選択し、
    前記数学的および論理的演算の等価物である、事前準備された演算の一群を構築し、
    前記事前準備された演算の一群を、それらの関連タイミング属性によって特徴付け、
    前記事前準備された演算の一群に準拠した恒等式の一群を構築し、
    前記恒等式の一群を、それらの関連タイミング属性によって特徴づけることによって作成される、請求項に記載の方法。
  10. 前記1つ以上の恒等演算の各々の非特殊な入力を、前記コンピュータプログラムの少なくとも1つの定数および前記コンピュータプログラムの少なくとも1つの変数に結合させて、1つ以上の関連するおとり演算を形成する工程をさらに含む、請求項に記載の方法。
  11. 前記選択機構は、前記代替演算と、前記1つ以上の恒等演算と、前記1つ以上の関連するおとり演算とを含む、固有のパスを選択する、請求項10に記載の方法。
  12. 前記選択機構は、制御フロー条件ステートメントと、ジャンプ間接テーブルと、関数への間接コールと、ソフトウェアマルチプレクサとのうち、少なくとも1つを含む、請求項に記載の方法。
  13. 前記選択機構、エントロピーソースに基づいてランダム化されている、請求項12に記載の方法。
  14. ースコードの演算パスを偽装するシステムであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサの少なくとも1つと動作的に結合する1つ以上のメモリとを含み、
    前記1つ以上のメモリは、前記1つ以上のプロセッサの少なくとも1つにより実行される命令を格納し、
    前記命令は、前記1つ以上のプロセッサの少なくとも1つに実行されたとき、
    コンピュータプログラムのソースコードに具体化され、計算ステップシーケンスを含む、元の式パスを識別する工程と、
    前記元の式パスを複製して複数の複製式パスを生成する工程と、
    元の式パスと前記複数の複製式パスとを含む一群の式パスから、前記コンピュータプログラムの実行中に、式パスをランダムに選択するよう構成された選択機構を生成する工程と、
    前記複製式パスのそれぞれにおける1つ以上の演算を、それぞれの式パスについて最小および最大の許容実行時間を特定するタイミングウィンドウの少なくとも一部に基づいて、前記1つ以上の演算と等価の代替演算へ置換する置換工程と、
    前記元の式パスと前記複数の複製式パスと前記選択機構とを含む、攻撃耐性のあるソースコードを生成する工程と、
    を含む方法を前記プロセッサに実行させる、システム
  15. 記計算ステップシーケンスは、コンピュータ命令の一群を含む、請求項14に記載のシステム。
  16. 記計算ステップシーケンスは、タスクを計算装置上で行う高度なソフトウェアプログラミングの一つを含む、請求項14に記載のシステム。
  17. 記計算ステップシーケンスは、タスク群を計算装置上で行う高度なソフトウェアプログラミングの一つを含む、請求項14に記載のシステム。
  18. 前記置換工程は、所定の制約オプションの少なくとも一部に基づいて、前記代替演算選択することを含み、前記所定の制約オプションは、タイミングウィンドウ許容差、目標性能、目標サイズ、目標安全レベル、およびランタイム制約のうち1つ以上を含む、請求項14に記載のシステム。
  19. 前記置換工程は、等価演算のパレットから前記代替演算を選択することを含む、請求項14に記載のシステム。
  20. 前記命令は、
    恒等演算のパレットから選択された1つ以上の恒等演算を挿入することにより、前記複数の式パスの少なくとも1つにおける前記代替演算の少なくとも一部を拡張する工程を前記プロセッサに実行させる命令をさらに含み、
    前記1つ以上の恒等演算は、前記タイミングウィンドウの少なくとも一部に基づいて選択される、請求項19に記載のシステム。
  21. 前記等価演算のパレットと前記恒等演算のパレットとは、前記コンピュータプログラムを記載するのに用いられたコンピュータプログラミング言語に基づいて事前準備されている、請求項20に記載のシステム。
  22. 前記等価演算のパレットと、前記恒等演算のパレットとは、ともに選択肢のパレットを形成し、前記選択肢のパレットは、
    前記コンピュータプログラミング言語から、数学的および論理的演算のすべてを選択し、
    前記数学的および論理的演算の等価物である、事前準備された演算の一群を構築し、
    前記事前準備された演算の一群を、それらの関連タイミング属性によって特徴付け、
    前記事前準備された演算の一群に準拠した恒等式フォーミュラの一群を構築し、
    前記恒等式フォーミュラの一群を、それらの関連タイミング属性によって特徴づけることによって作成される、請求項21に記載のシステム。
  23. 前記命令は、
    前記1つ以上の恒等演算の各々の非特殊な入力を、前記コンピュータプログラムの少なくとも1つの定数および前記コンピュータプログラムの少なくとも1つの変数に結合させて、1つ以上の関連するおとり演算を形成する工程を前記プロセッサに実行させる命令をさらに含む、請求項20に記載のシステム。
  24. 前記選択機構は、前記代替演算と、前記1つ以上の恒等演算と、前記1つ以上の関連するおとり演算とを含む、固有のパスを選択する、請求項23に記載のシステム。
  25. 前記選択機構は、制御フロー条件ステートメントと、ジャンプ間接テーブルと、関数への間接コールと、ソフトウェアマルチプレクサとのうち、少なくとも1つを含む、請求項24に記載のシステム。
  26. 記選機構、エントロピーソースに基づいてランダム化されている、請求項25に記載のシステム。
  27. ースコードの演算パスを偽装するためのコンピュータで実行可能な命令を記憶したコンピュータ読み出し可能な記憶媒体であって、
    前記命令は、1つ以上のコンピュータで実行されたとき、
    コンピュータプログラムのソースコードに具体化され、計算ステップシーケンスを含む、元の式パスを識別する工程と、
    前記元の式パスを複製して複数の複製式パスを生成する工程と、
    元の式パスと前記複数の複製式パスとを含む一群の式パスから、前記コンピュータプログラムの実行中に、式パスをランダムに選択するよう構成された選択機構を生成する工程と、
    前記複製式パスのそれぞれにおける1つ以上の演算を、それぞれの式パスについて最小および最大の許容実行時間を特定するタイミングウィンドウの少なくとも一部に基づいて、前記1つ以上の演算と等価の代替演算へ置換する置換工程と、
    前記元の式パスと前記複数の複製式パスと前記選択機構とを含む、攻撃耐性のあるソースコードを生成する工程と、
    を含む方法を前記コンピュータに実行させる、コンピュータ読み出し可能な記憶媒体。
  28. 前記置換工程は、等価演算のパレットから前記代替演算を選択することを含む、請求項27に記載のコンピュータ読み出し可能な記憶媒体。
  29. 前記命令は、1つ以上のコンピュータで実行されたとき、恒等演算のパレットから選択された1つ以上の恒等演算を挿入することにより、前記複数の式パスの少なくとも1つにおける前記代替演算の少なくとも一部を拡張する工程を前記コンピュータに実行させる命令をさらに含み、
    前記1つ以上の恒等演算は、前記タイミングウィンドウの少なくとも一部に基づいて選択される、請求項28に記載のコンピュータ読み出し可能な記憶媒体。
  30. 前記命令は、1つ以上のコンピュータで実行されたとき、前記1つ以上の恒等演算の各々の非特殊な入力を、前記コンピュータプログラムの少なくとも1つの定数および前記コンピュータプログラムの少なくとも1つの変数に結合させて、1つ以上の関連するおとり演算を形成する工程を前記コンピュータに実行させる命令をさらに含む、請求項29に記載のコンピュータ読み出し可能な記憶媒体。
JP2013500287A 2010-03-25 2010-03-25 サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法 Expired - Fee Related JP5643894B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CA2010/000409 WO2011116448A1 (en) 2010-03-25 2010-03-25 System and method for dynamic, variably-timed operation paths as a resistance to side channel and repeated invocation attacks

Publications (2)

Publication Number Publication Date
JP2013524305A JP2013524305A (ja) 2013-06-17
JP5643894B2 true JP5643894B2 (ja) 2014-12-17

Family

ID=44672394

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013500287A Expired - Fee Related JP5643894B2 (ja) 2010-03-25 2010-03-25 サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法

Country Status (7)

Country Link
US (1) US20130007881A1 (ja)
EP (1) EP2550622A4 (ja)
JP (1) JP5643894B2 (ja)
KR (1) KR20140053754A (ja)
CN (1) CN102939608A (ja)
CA (1) CA2792302A1 (ja)
WO (1) WO2011116448A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2984553B1 (fr) * 2011-12-15 2015-11-06 Proton World Int Nv Procede et dispositif de detection de fautes
CN103024777B (zh) * 2012-11-15 2016-07-06 无锡赛思汇智科技有限公司 一种非入侵式的无线传感器网络调试装置及调试方法
CN105659359B (zh) 2013-07-26 2019-05-28 化工技术边界股份有限公司 连续蒸馏式三氯氢硅气化供给装置
WO2015088525A1 (en) 2013-12-12 2015-06-18 Empire Technology Development, Llc Randomization of processor subunit timing to enhance security
GB201400992D0 (en) * 2014-01-21 2014-03-05 Metaforic Ltd Method of protecting dynamic cryptographic keys
US9436603B1 (en) 2014-02-27 2016-09-06 Amazon Technologies, Inc. Detection and mitigation of timing side-channel attacks
JP2016043442A (ja) * 2014-08-21 2016-04-04 株式会社荏原製作所 研磨装置
US9405708B1 (en) 2015-02-04 2016-08-02 Amazon Technologies, Inc. Preventing attacks that rely on same-page merging by virtualization environment guests
US10311229B1 (en) 2015-05-18 2019-06-04 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring alternatives in code
US10868665B1 (en) 2015-05-18 2020-12-15 Amazon Technologies, Inc. Mitigating timing side-channel attacks by obscuring accesses to sensitive data
US10210350B2 (en) * 2015-08-10 2019-02-19 Samsung Electronics Co., Ltd. Electronic device against side channel attacks
WO2017183099A1 (ja) 2016-04-19 2017-10-26 三菱電機株式会社 中継装置
US10217498B2 (en) * 2016-09-12 2019-02-26 Qualcomm Incorporated Techniques for preventing tampering with PROM settings
US10395033B2 (en) * 2016-09-30 2019-08-27 Intel Corporation System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
SG10201701541SA (en) * 2017-02-27 2018-09-27 Huawei Int Pte Ltd Device and method for reinforcing control flow integrity of software application
US10200192B2 (en) 2017-04-19 2019-02-05 Seagate Technology Llc Secure execution environment clock frequency hopping
US10459477B2 (en) 2017-04-19 2019-10-29 Seagate Technology Llc Computing system with power variation attack countermeasures
US10270586B2 (en) 2017-04-25 2019-04-23 Seagate Technology Llc Random time generated interrupts in a cryptographic hardware pipeline circuit
US10771236B2 (en) 2017-05-03 2020-09-08 Seagate Technology Llc Defending against a side-channel information attack in a data storage device
US10511433B2 (en) 2017-05-03 2019-12-17 Seagate Technology Llc Timing attack protection in a cryptographic processing system
US10706147B1 (en) * 2017-05-19 2020-07-07 Amazon Technologies, Inc. Mitigating side-channel attacks via shared cache
CN107491058B (zh) * 2017-08-07 2019-07-09 中国科学院信息工程研究所 一种工业控制系统序列攻击检测方法及设备
US10521585B2 (en) * 2017-10-02 2019-12-31 Baidu Usa Llc Method and apparatus for detecting side-channel attack
US11308239B2 (en) 2018-03-30 2022-04-19 Seagate Technology Llc Jitter attack protection circuit
JP7079711B2 (ja) * 2018-10-17 2022-06-02 Kddi株式会社 変換装置、変換方法、変換プログラム及び難読プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4739465B2 (ja) * 1997-06-09 2011-08-03 インタートラスト テクノロジーズ コーポレイション ソフトウェアセキュリティを増強するための混乱化技術
US6463538B1 (en) * 1998-12-30 2002-10-08 Rainbow Technologies, Inc. Method of software protection using a random code generator
US7757097B2 (en) * 1999-09-03 2010-07-13 Purdue Research Foundation Method and system for tamperproofing software
US7581103B2 (en) * 2001-06-13 2009-08-25 Intertrust Technologies Corporation Software self-checking systems and methods
US7263606B2 (en) 2003-02-25 2007-08-28 Safenet, Inc. Method and apparatus for software protection via multiple-route execution
KR100568228B1 (ko) * 2003-05-20 2006-04-07 삼성전자주식회사 고유번호를 이용한 프로그램 탬퍼 방지 방법과 난독처리된 프로그램 업그레이드 방법, 상기 방법을 위한 장치
US7512936B2 (en) * 2004-12-17 2009-03-31 Sap Aktiengesellschaft Code diversification
EP1869606A1 (en) * 2005-04-07 2007-12-26 Koninklijke Philips Electronics N.V. Software protection
US20070266434A1 (en) * 2006-05-11 2007-11-15 Reifer Consultants, Inc. Protecting Applications Software Against Unauthorized Access, Reverse Engineering or Tampering
US20080126766A1 (en) * 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
EP1936532B1 (en) * 2006-12-21 2009-07-29 Telefonaktiebolaget LM Ericsson (publ) Obfuscating computer program code
WO2008088073A1 (en) * 2007-01-18 2008-07-24 Panasonic Corporation Obfuscation assisting apparatus
US8752032B2 (en) * 2007-02-23 2014-06-10 Irdeto Canada Corporation System and method of interlocking to protect software-mediated program and device behaviours
US8781111B2 (en) * 2007-07-05 2014-07-15 Broadcom Corporation System and methods for side-channel attack prevention
CN101216775A (zh) * 2008-01-03 2008-07-09 北京深思洛克数据保护中心 一种软件程序的保护方法、装置及系统
CN102713839B (zh) * 2009-10-08 2015-11-25 爱迪德技术有限公司 用于动态函数调用系统中的积极自我修改的系统和方法

Also Published As

Publication number Publication date
WO2011116448A1 (en) 2011-09-29
KR20140053754A (ko) 2014-05-08
US20130007881A1 (en) 2013-01-03
CN102939608A (zh) 2013-02-20
EP2550622A4 (en) 2013-08-28
CA2792302A1 (en) 2011-09-29
JP2013524305A (ja) 2013-06-17
EP2550622A1 (en) 2013-01-30

Similar Documents

Publication Publication Date Title
JP5643894B2 (ja) サイドチャネル攻撃および反復起動攻撃に耐える動的可変タイミング演算パスのシステムおよび方法
Wichelmann et al. Microwalk: A framework for finding side channels in binaries
Wu et al. Eliminating timing side-channel leaks using program repair
Yu et al. Data oblivious ISA extensions for side channel-resistant and high performance computing
Bayrak et al. Sleuth: Automated verification of software power analysis countermeasures
EP3201819B1 (en) Automated verification of a software system
US6842862B2 (en) Tamper resistant software encoding
Borrello et al. Constantine: Automatic side-channel resistance using efficient control and data flow linearization
CA2776913C (en) A system and method for aggressive self-modification in dynamic function call systems
Bayrak et al. Automatic application of power analysis countermeasures
JP6429785B2 (ja) 演算子のないコンパイラ
JP2004038966A (ja) セキュアな変数データ保護を提供するセキュアで不明瞭なタイプライブラリ
US11475166B2 (en) Compiling device and method
Wang et al. Mitigating power side channels during compilation
Agosta et al. The MEET approach: Securing cryptographic embedded software against side channel attacks
CN112434266A (zh) 一种shellcode控制流扁平化混淆方法
Fell et al. TAD: Time side-channel attack defense of obfuscated source code
Ammanaghatta Shivakumar et al. Enforcing fine-grained constant-time policies
KR102352066B1 (ko) 암호화 알고리즘에 사용될 때 비밀 데이터를 보호하는 방법
Zambreno et al. Flexible software protection using hardware/software codesign techniques
Pham et al. Cidpro: Custom instructions for dynamic program diversification
Backes et al. Computational soundness for Dalvik bytecode
Tan et al. Security Verification of Low-Trust Architectures
Moss et al. Automatic insertion of dpa countermeasures
WO2023156571A1 (en) Protecting software

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140212

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140502

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140513

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140610

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140711

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141031

R150 Certificate of patent or registration of utility model

Ref document number: 5643894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees