JP2017537401A - 複数の異なりかつ独立した分岐を用いて機密計算を実行する方法 - Google Patents

複数の異なりかつ独立した分岐を用いて機密計算を実行する方法 Download PDF

Info

Publication number
JP2017537401A
JP2017537401A JP2017528414A JP2017528414A JP2017537401A JP 2017537401 A JP2017537401 A JP 2017537401A JP 2017528414 A JP2017528414 A JP 2017528414A JP 2017528414 A JP2017528414 A JP 2017528414A JP 2017537401 A JP2017537401 A JP 2017537401A
Authority
JP
Japan
Prior art keywords
processing unit
branch
branches
unit time
identifier
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
JP2017528414A
Other languages
English (en)
Other versions
JP6339295B2 (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 JP2017537401A publication Critical patent/JP2017537401A/ja
Application granted granted Critical
Publication of JP6339295B2 publication Critical patent/JP6339295B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本発明の方法は、複数の異なりかつ独立した分岐(SB1,SB2)を用いて処理ユニットにより機密計算を実行する方法であって、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記方法は、機密計算の各実行に:少なくとも分岐の数と同じ数の多数の識別子を生成するステップと;各識別子を固有の分岐に関連付けるステップと;識別子のランダム配置を生成する(S1,S2)ステップであって、配置中での各識別子の出現回数が最短分岐中の中央処理ユニット時間単位の数と少なくとも等しいステップと;各識別子をランダム配置に処理(S3)することにより、識別子の値に従って各連続中央処理ユニット時間単位で実行する分岐を連続的に決定するステップと;ランダム配置の各識別子のために、識別子の値に従って決定された分岐用の中央処理ユニット時間単位を実行する(S11,S21)ステップと;を備える。【選択図】図1

Description

本発明は、各分岐が実行のために所定数の処理ユニット時間単位を必要とする複数の異なりかつ独立した分岐を用いて機密計算を実行する方法に関する。
機密計算に、いくつかの異なりかつ独立した分岐を使用することは、サイドチャネル分析や故障攻撃に対する対策を実装する埋設デバイスにおいては一般的な方法であり、物理的な漏洩や弱点を習得する必要のあるソフトウェア又はハードウェア設計においては備えられている。本発明では、対策自身が漏洩しないことを保証することにより対策を強化することができる。
本発明は、現在の実装では一般的な状況である2つの分岐が使用される時に特に適用される。本発明は、また、前記方法を実装したデバイスにも関連する。
機密計算例えば暗号論理計算中のサイドチャネル攻撃や故障攻撃によりデバイスから秘密を取り出すことは良く知られている。
このような攻撃には、タイミング測定、消費電力測定、電磁気放射測定、故障注入、等が使用される。
物理攻撃に対しては特にメモリフットプリントと実行時間に関して最小のインパクトを伴った効率的な方法を見出すことが常に望ましい。
これらの攻撃に対抗するために、保全デバイス中には埋設ソフトウェア対策が実装されている。
これらのソフトウェア対策は主として以下の1つ又はいくつかの方法に基づいている。
−機密値からの信号を相関させないように機密データを乱数によってマスクする;
−ソフトウェアコードのどの分岐を取らなければならないかを知る可能性を取り消すために機密処理をマスクする;
−実行の正確性を保証するいくつかの余分のコードを追加する。通常、機密性の高い操作又は一貫性のある制御を伴う一貫した余分のコードを再実行する。
−攻撃の状況に対応する実行ループの場合に実行を非同期にするための余分なコードを追加する;
−計算を2倍にする;
−逆操作を行う;
−いくつかの偽の操作を追加する。
一般的に、このような対策の実装は、RAM/ROMフットプリントと実行時間の点で高価となる。
本発明による機密計算では、計算は2つの異なりかつ独立した分岐によって構成される。一般に、機密分岐の一つが最初に実行され、次いで二番目が実行される。
実行される計算のブール又は算術特性に応じて、サイドチャネル攻撃を回避し、中間結果の一貫性をクロスチェックするために、例えば、DES(相補M、相補K)の相補に等しいDES(M,K)計算の場合には、このような機密計算の処理をマスクする必要が確かに存在する。
したがって、さらなる代替的かつ有利な解決方法が当該技術分野で望ましいであろう。
本発明は上述した悪意の攻撃を回避又は少なくともより困難化させることを目的とする。
本発明は、最も広い意味で、複数の異なりかつ独立した分岐を用いて処理ユニットにより機密計算を実行する方法であって、
各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記方法は、機密計算の各実行に:
−少なくとも分岐の数と同じ数の多数の識別子を生成するステップと;
−各識別子を固有の分岐に関連付けるステップと;
−識別子のランダム配置を生成するステップであって、配置中での各識別子の出現回数が最短分岐中の中央処理ユニット時間単位の数と少なくとも等しいステップと;
−各識別子をランダム配置に処理することにより、識別子の値に従って各連続中央処理ユニット時間単位で実行する分岐を連続的に決定するステップと;
−ランダム配置の各識別子のために、識別子の値に従って決定された前記分岐用の中央処理ユニット時間単位を実行するステップ、として定義される。
従って、本発明の方法は、悪意の攻撃のリスクを削減するのに資する。少なくとも、攻撃はより複雑で、悪意の攻撃者のために実行される。機密計算の各実行でランダムに識別子を生成することにより、特に、分岐の異なるシーケンスに常に供される中央処理ユニットの処理サイクルにおいて、処理時間単位のシーケンスを持つことができる。
各時間単位の終了時及び各分岐毎にループの中間結果を格納するためにメモリが使用される。各分岐のリバースエンジニアリングは、その実現が他の分岐ユニットと混在するため、より困難となる。
RAMフットプリントの点では、本発明の実現は、各分岐の直接的な実行よりも少しコストがかかるが、実装を安全にするためには全く同じである。ROMフットプリントの点では、本発明の実現は単純で有利である。何故なら例えば、一時レジスタやループインデックスのようないくつかの変数は複数の分岐で共有できるからである。
さらに、注目すべきは、本発明は最適なコードフットプリントで構築することが容易なことである。実際、分岐ユニットのコードは本発明によって変更されず、どんな変更が呼び出され分割されるかである。
各分岐とそのユニットとを適格化するインデックスを含むバッファから分岐ユニットの連続を構成するわずかな命令で、正確性を保証しながら、それを利用することは容易である。
本発明は、各実行において、異なりかつ予測不可能な分岐のランダムな順序実行を得ることを可能とする。本発明は識別子の値に応じて分岐を選択し、好ましくは、各分岐が完全に動作するよう制御することにより、構築によって保証されるランダムな種である各分岐の識別子の存在から平衡したマスタ乱数を構築し、わずかな余分のコードを使ってこの目標に到達したものである。
本発明は、独立し、異なる分岐の実行を高効率で完全に混合する可能性を開くものである。この対策の品質はフットプリントと機能の点でさらに高度である。
好ましい実施例によると、識別子を生成するステップは、識別子が値とその補数値とを備え、ランダム配置を生成するステップは、最初に識別子として値のシーケンスを生成し、次いで、このシーケンスをシーケンスの補数値によって完成させる。
ランダム配列のこの特定の構造は、生成されるランダムシーケンスのサイズを小さくすることができる。また、各分岐に供されるサイクル数を同一となるよう保証する。
この実施例の第1の実装において、シーケンスは、以前に生成されたシーケンス内に2つの値のうちの1つの補数値を挿入することにより完成する。
代表的には、補数値は2つの値の1つがここで挿入される。これは本発明の目標に到達するために簡単な方法で最終配列を構成することを可能としている。
この実施例の第2の実装において、シーケンスは、値のシーケンスの最後に補数値のシーケンスを追加することにより完成する。
この方法では、最初に値に対応する第1セットの分岐の、次いで補数値に対応する第2セットの分岐の実行が行なわれる。
好ましい適用として、機密計算は、暗号論理アルゴリズムの異なりかつ独立した分岐を備える。
本発明は、特に、機密データを操り、性能に関して最適化される必要があるアルゴリズムを保護するよう適合される。
特に興味深い適用として、機密計算は、複数の分岐の少なくとも1つの実行の正確性を保証するための対策再実行又は余分なコードの実行である。
そのような対策は、暗号アルゴリズムでしばしば使用される。しかし、現在の実装では、それらは攻撃の場合に一般的に漏洩する。本発明をいくつかの独立し、異なる分岐を用いる対策に適用することにより、そのような漏洩を防止することができる。
有利な特徴によれば、分岐の1つが異なる長さであって、前記方法は、平衡するために最短の分岐を追加の処理ユニット時間単位で補完させる予備ステップを含む。
このような予備的なステップにより、全ての分岐での全ループセットに本発明の適用を可能とするCPUサイクルに関して、各分岐で同一長を有することが可能となる。
特定の特徴によれば、前記方法が、さらに、実行処理ユニット時間単位の数をカウントするステップを含む。
このような特徴は、各分岐において時間ユニット数の和に対応する数の時間ユニットが到達したことを機密計算の終了時にチェックすることを可能とする。
その他の本発明の特徴によれば、前記方法が、さらに、各分岐に対し、独立に実行処理ユニット時間単位の数をカウントするステップを含む。
この特徴は、各分岐を独立して追跡することを可能とする。
コードの一部を飛ばすことを可能にするフォールト攻撃を検出できれば便利である。これは、分岐が実行されるたびに、いくつかの異なるトレーサをインクリメントすることにより行うことができる。すべての分岐の実行後に時間の正確な数を検出することは容易である。コードの一部をジャンプするのに成功したどんなフォールト攻撃であっても検出される。
好ましい実施例では、機密計算を実行する方法において、前記機密計算は、2つの異なりかつ独立した分岐を用い、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記方法が:
−ビットの連続として乱数を生成するステップであって、乱数のビットの数は、最短の分岐中の処理ユニット時間単位の数に少なくとも等しいステップと;
−生成された乱数の補数ビットを使用して乱数の長さを倍増してマスタ乱数を作成するステップと;
−マスタ乱数をビット順に処理し、前記分岐のいずれが各連続処理ユニット時間単位を実行するかを前記マスタ乱数の各ビットの0又は1の値に従って順に決定するステップであって、各値は前記2つの分岐の1つに関連付けられているステップと;
−マスタ乱数の各ビット毎に、前記ビット値に従って決定された前記分岐のために処理ユニット時間単位を実行するステップと;を備える。
この実施例は、機密計算に2つの分岐のみを使用している共通の状況に対応している。配列として使用されるマスタランダムの構成はオリジナルで、非常に有利である。何故なら最短分岐における時間ユニットの数のサイズの半分のサイズの乱数を生成を必要とするだけで、両方の分岐では必要とされる時間単位のすべてのセットが処理されることが保証されるからである。
有利な実施例では、両方の分岐が同一数の処理ユニット時間単位を必要とし、生成された乱数が1つの分岐中の処理ユニット時間単位の数と等しい。
この実施例は、分岐が同一サイズのケースに対応する。
有利な特徴によると、さらに、マスタ乱数中の走査されたビットの数をカウントするステップを含む。
この特徴は、すべての機密計算の実行を追跡する非常にシンプルな方法である。
本発明はまたデバイスに関する複数の異なりかつ独立した分岐を使用して機密計算を実行する処理ユニットを備えたデバイスであって、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、デバイスはさらに分岐の数と少なくとも同一数の多数の識別子を生成する識別子ジェネレータを備え、各識別子は固有の分岐に関連付けられ、処理ユニットは識別子のランダム配列を計算可能であって、配列中の各識別子の出現回数は最短の分岐中の中央処理ユニット時間単位の数と少なくとも等しく、
処理ユニットは、各識別子をランダム配列に処理し、識別子の値に従って各連続中央処理ユニット時間単位で実行する分岐を連続的に決定し、ランダム配列の各識別子に対し、識別子の値に従って決定した分岐のために中央処理ユニット時間単位を実行する。
本発明を実施することのできるデバイスは、機密計算のいくつかの実行中に攻撃者によって相関が行なわれないので、攻撃に対する大きな保護が与えられる。
実行されたコードのリバースエンジニアリングも古典的なアプローチに比し困難である。さらに、仮にコードが読み出しのためにアクセスが可能であったとしても、最終的な実行が何であるかは明らかとならない。
好ましい実施例では、デバイスは、2つの異なる分岐を使用して機密計算を実行する処理ユニットを含み、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、デバイスはさらにビットの連続として乱数を発生させる乱数発生器を含み又は乱数発生器に接続され、乱数中のビット数は最短の分岐中の処理ユニット時間単位の数の少なくとも等しく、
処理ユニットは所定の乱数の補数を計算することができ、
処理ユニットはビット毎に乱数と発生された乱数の連続する補数ビットとの連続ビットをビット順に処理し、ビットとその補数とは連続してマスタ乱数を形成し、各走査されたビットの0又は1の値に従って各連続処理ユニット時間単位によって分岐のどちらを実行するかをマスタ乱数の各ビットについて順次決定し、ビットの値に従って決定された分岐に処理ユニット時間単位を実行する。
この実施例は、2つの独立し、かつ異なる分岐がアルゴリズム中で使用されている共通のケースに対応している。
前述の目的および関連する目的を達成するために、1つ又は複数の実施形態は以下で十分に説明され、特に特許請求の範囲において指摘される特徴を備える。
以下の詳細を説明と添付図面には、詳細に特定の例示的な態様が述べられており、実施形態の原理が採用されているほんのわずかな種々の方法が示されている。
本発明の方法を示すフローチャートである。 本発明のデバイスを示す概略図である。
本発明のより完全な理解のために、添付図面を参照して本発明を詳細に説明する。詳細な説明では、本発明が実施される際の本発明の好適と考えられる実施例、即ち、機密計算が2つの独立し、かつ異なる分岐で行なわれている状況が図示されて説明される。本実施例は当業者による本発明の実施を可能とするよう十分に詳細に説明される。
もちろん、フォーム又は詳細の種々の変更や変形は本発明の範囲から逸脱することなく容易に行うことができることは理解されるべきである。特に、特許請求の範囲での参照符号は、特許請求の範囲に規定された本発明の範囲を限定するように解釈してはならない。「含む(comprising)」という表現は他の要素やステップが含まれるのを排除するものではない。「1つ(a又はan)」という表現は複数を排除するものではない。分かりやくすするために、本発明の理解に有用な要素とステップのみを図面に示し、説明する。
図1は、2つの異なり、かつ独立の分岐SB1,SB2を使用して機密計算を実行する本発明の方法を概略的に示したものである。図1に示す例では、分岐は処理単位サイクル数と同じ数である所定数Lを必要とする。2つの分岐が同じサイクル数を必要としないときには、短い分岐は同じサイクル数になるように非特定の操作を行って終了することが好ましい。さもなければ図1において、Lは最短分岐が必要とするサイクル数である。最長分岐の残りのサイクルは、本発明の実行方法が終了した後に行なわれる。
このような機密計算の一例は、暗号論理アルゴリズムであって、その構造は、2つの異なり、かつ独立した分岐によって構成されており、代表的にはRIPEMD160ハッシュアルゴリズム、等がある。また実行の正確さを保証するために同等の余分なコードを返すか実行する対策もあり、代表的には、DES/〜DESアルゴリズム、MixAES暗号化/解読化,Key Sheduling of Masked Data, then Mask,等がある。各分岐は同一データでは動作しないので異なっており、一方の分岐での計算は他方の分岐では使用されないので独立している。
ここでは、分岐の独立性が必要であることに注意すべきである。独立していないと、2つの分岐は互いに依存し、本発明で要請される実行の完全な配列が不可能となる。事実、本発明では、2番目の分岐が実行される前に分岐の1つを完全に実行する可能性がなければならない。従って分岐間の依存は排除される。
第1ステップS1で、長さLの乱数Rが生成される。第2ステップS2で、乱数R(L)はその補数ビットにより完成する。図1にはCOMPL(R(L))として示してある。このようにして、長さ2Lを持つマスタ乱数M_Rが得られる。
次いで、マスタ乱数M_Rの連続する各ビットiが図1に概略的に示すように順次処理される。ステップS3でビット1から始めてビット2Lまで、現在のビットM_R(2L)iが0と等しいか否かがチェックされる。等しい場合(ケースY)には、ステップS11で、第1分岐SB1の動作を行う処理ユニットサイクルループが使用される。そして、、マスタ乱数のビットの指標(インデックス)がステップS12で増加する。等しくない場合(ケースN)には、ステップS21で、第2分岐SB2の動作を行う処理ユニットサークルループが使用される。
そしてマスタ乱数のビットの指標がステップS22で増加する。マスタ乱数M_Rはその構造から0と1とが等しく含まれているため、2つの分岐が均等に選択されることを保証する。
ステップ4で、iの値が2Lの値に達したかが判定される。達していれば(ケースY)、機密計算の実行は終了する。達していない場合(ケースN)、ステップS3に戻り、i番目のビット値がチェックされる。
図2は、本発明のデバイスDを概略的に示したもので、処理ユニットPUを含んでいる。この処理ユニットPUは、中央処理ユニットCPU又はハードウェアコプロセッサとすることができ、典型的には暗号プロセッサタイプの1つである。
本発明を適用するために、処理ユニット1は2つの異なる分岐を用いて機密計算を実行するよう意図されており、各分岐は実行されるべき所定数の処理ユニットサイクルを必要とする。
デバイスDは、さらに乱数発生器RNGを含んでいる。本発明の他の変形例では、デバイスDは乱数発生器RNGを自身には含まず、必要時に乱数を取得する発生器RNGに接続されていてもよい。このため、図中RNGは点線で示されている。
機密計算の実行が起動されると、処理ユニットPUは要請REQを乱数発生器RNGに送る。乱数発生器RNGは連続したビットとして乱数R(L)を発生し、乱数R(L)のビット数は、最短分岐中の処理ユニットサイクル数(L)に少なくとも等しい。乱数R(L)は次いで、処理ユニットPUに伝送される。
処理ユニットPUは連続したLビットを有する乱数R(L)のビットの補数により所定の乱数の2の補数をCOMP(R(L))として計算することができる。この連続したビットと補数とにより前述のマスタ乱数M_R(2L)を形成する。
次いで、処理ユニットPUは、ビット順に、マスタ乱数M_R(2L)の連続ビットを処理し、前述した本発明の方法の原理に従って、順にいずれの分岐SP1又はSP2が各連続処理ユニットサイクルにより実行するのかを各走査ビットの0又は1の値に従って順次決定する。
マスタ乱数M_R(2L)の各ビット毎に、ビット値に従って決定された分岐の処理ユニットサイクルを実行する。
2つの分岐を有する機密計算の場合、各分岐は16ループで構成され、以下に対策の擬似コードの例を示す。
// 16ビットの乱数
Val_16Bits<=Random Value of 16 bits
// Val_16ビットと補数ビット値Val_16ビットの連結により構成される32ビット。この構造はすべての反復が実行されることを保証する。
MasterRNG_32Bits <= Val_16Bits | 〜(Val_16Bits)
(このステップで‘〜’演算子は値の2の補数を計算し、‘|’は2つの変数の連結を表わす)
bLoopTreatment_1=bLoopTreatment_2=0
For Loop = 0 to (16+16)
-if Bit(MasterRNG_32Bits) == 1
-Execute sensitive branch 1(in random order)
-Increment (bLoopTreatment_1,1)
-if Bit(MasterRNG_32Bits) == 0
-Execute sensitive branch 2(in random order)
-Increment (bLoopTreatment_2,1)
-go to next bit of MasterRNG_32Bits
//一貫性を制御する
-All bits of MasterRNG should be treated:
if not ErrorDetected()
-Loop == 32 ?
if not ErrorDetected()
-bLoopTreatment_1 == 16 ?
if not ErrorDetected()
-bLoopTreatment_2 == 16 ?
if not ErrorDetected()
機密計算の各実行時に、マスタRNGの乱数値を取上げることにより、機密第1分岐と機密第2分岐の実行の順序は推測することは出来ない。マスタ乱数の構成により、すべての機密計算が実行される。同数のCPUサイクルを必要とするよう分岐が平衡していると、効果的に取上げられた分岐は偵察されることはない。各機密分岐で異なる実行カウンタをインクリメントすることにより、正確性を保証するための複数のテストを簡単に実行できる。
これらのテストには、マスタ乱数のすべてのビットが取扱われたかのテスト、グローバルループインデックスが各分岐に必要とされるCPUサイクルの合計であったかのテスト、各分岐カウンタが必要とされるCPUサイクルであったかのテスト、等が含まれる。
次に、複数の分岐についての一般化の例を以下に示す。本発明の方法によると、分岐の数として少なくとも多数の識別子が生成される。これらの識別子は、それぞれ分岐の1つに関連付けられる。
好ましくは、可能な限り識別子は値と補数値として構成される。分岐の数が奇数の時は、完了していない識別子が作成されるか、偽の計算で分岐が追加される。
例えば4分岐の場合、識別子は、00, 01, 10, 11である。
分岐は次のように関連付けられる:
A=>00,B=>01,C=>10,D=>11
次いで、本発明の方法は、各識別子の出現数が最短の分岐の中央処理ユニット時間単位と同じである2つの第1の識別子00,01のシーケンスをランダムに決定するステップを含む。
そして、補数シーケンスを計算する。この補数シーケンスは、第1のシーケンスに加えられるか又は第1のシーケンスに織り込まれる。次いで補完されたシーケンスが計算される。
この補完されたシーケンスは第1のシーケンスの最後に追加されるか、又は第1のシーケンスに織り込まれる。同等な方法では、すべての識別子を最短の分岐での時間ユニットの出現数と同じだけパックする。好ましくは、分岐はすべてが同一長となるよう前もって完成させるのが良い。例えば、すべての分岐で3CPU時間単位のときは:00 00 00 01 01 01 10 10 10 11 11 11となる。次にランダム列が行なわれる。
例えば、4, 0, 10, 6, 5, 8, 11, 2, 3, 7, 1, 9で、これを識別子のパックに適用する。即ち(00 00 00 01 01 01 10 10 10 11 11 11)に適用すると、(01 00 11 10 01 10 11 00 01 10 00 11)となり、これが本発明におけるマスタ乱数となる。
次に、識別子はマスタ乱数から読み出され、処理ユニットは対応する分岐でCPU時間単位を実行する。マスタ乱数(01 00 11 10 01 10 11 00 01 10 00 11)から、次のような分岐のシーケンスが得られる:BADCBCDABCAD。
好ましい実施例では、2つの分岐が使用されており、生成される識別子は最もシンプルな0,1である。
結論として、本発明は機密処理の少なくとも2つの分岐での正確で完全な実行を予測不可能な方法で保証するソフトウェアでの対策に関するものである。
事実、この対策を講じることにより、どの分岐が先験的に行なわれるかを知る可能性はなく、デバイスを例えば、サイドチャネル搾取により覗き見ることによりどの分岐が実効的に行なわれているかを知る可能性もない。この対策は、すべての機密処理、即ち、すべての分岐が実効的に実行されていることを保証する。またこの対策は、いくつかの機密分岐の実行を完全に混在させる可能性を開く。
開示した実施例中での個々の素子の位置や配列は本発明の範囲から逸脱することなく変更可能であることに理解すべきである。
従って、上述した詳細な説明は、本発明の範囲を制限するものではなく、本発明の範囲は添付の請求の範囲によってのみ規定されるものであり、請求の範囲が資格を有する均等物の全範囲をカバーするように適切に解釈されなければならない。

Claims (14)

  1. 複数の異なりかつ独立した分岐(SB1,SB2)を用いて処理ユニットにより機密計算を実行する方法であって、
    各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記方法は、機密計算の各実行に:
    −少なくとも分岐の数と同じ数の多数の識別子を生成するステップと;
    −各識別子を固有の分岐に関連付けるステップと;
    −識別子のランダム配置を生成する(S1,S2)ステップであって、前記配置中での各識別子の出現回数が最短分岐中の中央処理ユニット時間単位の数と少なくとも等しいステップと;
    −各識別子を前記ランダム配置に処理(S3)することにより、識別子の値に従って各連続中央処理ユニット時間単位で実行する分岐を連続的に決定するステップと;
    −前記ランダム配置の各識別子のために、前記識別子の値に従って決定された前記分岐用の中央処理ユニット時間単位を実行する(S11,S21)ステップと;を備えることを特徴とする方法。
  2. −識別子を生成するステップは、前記識別子が値とその補数値とを備え、
    −ランダム配置を生成するステップは、最初に識別子として値のシーケンスを生成し(S1)、次いで、このシーケンスを前記シーケンスの補数値によって完成させる(S2)ことを特徴とする請求項1に記載の機密計算を実行する方法。
  3. 前記シーケンスは、以前に生成されたシーケンス内に2つの値のうちの1つの補数値を挿入することにより完成することを特徴とする請求項2に記載の機密計算を実行する方法。
  4. 前記シーケンスは、値のシーケンスの最後に補数値のシーケンスを追加することにより完成することを特徴とする請求項2に記載の機密計算を実行する方法。
  5. 前記機密計算は、暗号論理アルゴリズムの異なりかつ独立した分岐を備えることを特徴とする請求項1乃至4のいずれかに記載の方法。
  6. 前記機密計算は、前記複数の分岐の少なくとも1つの実行の正確性を保証するための対策再実行又は余分なコードの実行であることを特徴とする請求項1乃至5のいずれかに記載の方法。
  7. 前記分岐の1つが異なる長さであって、前記方法は、平衡するために最短の分岐を追加の処理ユニット時間単位で補完させる予備ステップを含むことを特徴とする請求項1乃至6のいずれかに記載の方法。
  8. 前記方法が、さらに、実行処理ユニット時間単位の数をカウントするステップを含むことを特徴とする請求項1乃至7のいずれかに記載の方法。
  9. 前記方法が、さらに、前記各分岐に対し、独立に実行処理ユニット時間単位の数をカウントするステップを含むことを特徴とする請求項1乃至8のいずれかに記載の方法。
  10. 請求項1乃至9のいずれかに従って機密計算を実行する方法において、
    前記機密計算は、2つの異なりかつ独立した分岐(SB1,SB2)を用い、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記方法が:
    −ビットの連続として乱数(R(L))を生成するステップであって、前記乱数(R(L))のビットの数は、最短の分岐中の処理ユニット時間単位の数に少なくとも等しいステップと;
    −前記生成された乱数(R(L))の補数ビット(COMP(R(L))を使用して前記乱数(R(L))の長さを倍増してマスタ乱数(M_R(2L))を作成するステップと;
    −前記マスタ乱数(M_R(2L))をビット順に処理し、前記分岐(SB1、SB2)のいずれが各連続処理ユニット時間単位を実行するかを前記マスタ乱数(M_R(2L))の各ビットの0又は1の値に従って順に決定するステップであって、各値は前記2つの分岐の1つに関連付けられているステップと;
    −前記マスタ乱数の各ビット毎に、前記ビット値に従って決定された前記分岐(SB1又はSB2)のために処理ユニット時間単位を実行する(S11,S21)ステップと;
    を備えることを特徴とする方法。
  11. 両方の分岐が同一数の処理ユニット時間単位を必要とし、前記生成された乱数(M_R(2L))が1つの分岐中の処理ユニット時間単位の数と等しいことを特徴とする請求項8に記載の方法。
  12. さらに、前記マスタ乱数(M_R(2L))中の走査されたビットの数をカウントするステップを含むことを特徴とする請求項8又は9に記載の方法。
  13. 複数の異なりかつ独立した分岐を使用して機密計算を実行する処理ユニット(PU)を備えたデバイス(D)であって、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記デバイス(D)はさらに分岐の数と少なくとも同一数の多数の識別子を生成する識別子ジェネレータを備え、各識別子は固有の分岐に関連付けられ、前記処理ユニット(PU)は識別子のランダム配列を計算可能であって、前記配列中の各識別子の出現回数は最短の分岐中の中央処理ユニット時間単位の数と少なくとも等しく、
    前記処理ユニット(PU)は、各識別子をランダム配列に処理し、前記識別子の値に従って各連続中央処理ユニット時間単位で実行する前記分岐を連続的に決定し、前記ランダム配列の各識別子に対し、前記識別子の値に従って決定した分岐のために中央処理ユニット時間単位を実行することを特徴とするデバイス(D)。
  14. 前記デバイス(D)は、2つの異なる分岐(SB1,SB2)を使用して機密計算を実行する処理ユニット(PU)を含み、各分岐は実行されるべき所定数の処理ユニット時間単位を必要とし、前記デバイスはさらにビットの連続として乱数(R(L))を発生させる乱数発生器(RNG)を含み又は前記乱数発生器(RNG)に接続され、前記乱数(R(L))中のビット数は最短の分岐中の処理ユニット時間単位の数の少なくとも等しく、
    前記処理ユニット(PU)は所定の乱数(R(L))の補数を計算することができ、
    前記処理ユニット(PU)はビット毎に前記乱数(R(L))と前記発生された乱数(R(L))の連続する補数ビットとの連続ビットをビット順に処理し、ビットとその補数とは連続してマスタ乱数(M_R(2L))を形成し、各走査されたビットの0又は1の値に従って各連続処理ユニット時間単位によって前記分岐(SB1,SB2)のどちらを実行するかを前記マスタ乱数(M_R(2L))の各ビットについて順次決定し、ビットの値に従って決定された分岐に処理ユニット時間単位を実行することを特徴とする請求項13に記載のデバイス(D)。
JP2017528414A 2014-12-10 2015-11-24 複数の異なりかつ独立した分岐を用いて機密計算を実行する方法 Active JP6339295B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14306987.0 2014-12-10
EP14306987.0A EP3032416A1 (en) 2014-12-10 2014-12-10 Method to execute a sensitive computation using multiple different and independent branches
PCT/EP2015/077552 WO2016091581A1 (en) 2014-12-10 2015-11-24 Method to execute a sensitive computation using multiple different and independent branches

Publications (2)

Publication Number Publication Date
JP2017537401A true JP2017537401A (ja) 2017-12-14
JP6339295B2 JP6339295B2 (ja) 2018-06-06

Family

ID=52396370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017528414A Active JP6339295B2 (ja) 2014-12-10 2015-11-24 複数の異なりかつ独立した分岐を用いて機密計算を実行する方法

Country Status (6)

Country Link
US (1) US10545759B2 (ja)
EP (2) EP3032416A1 (ja)
JP (1) JP6339295B2 (ja)
KR (1) KR101889243B1 (ja)
CN (1) CN107003903B (ja)
WO (1) WO2016091581A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113268329B (zh) * 2021-05-31 2023-09-01 北京奇艺世纪科技有限公司 一种请求调度方法、装置及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002261753A (ja) * 2001-03-06 2002-09-13 Hitachi Ltd 耐タンパー暗号処理方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100265674B1 (ko) 1995-06-07 2000-09-15 데니스 피셸 인코드된 데이타 스트림에 대한 에러 검출 및 정정시스템
WO1999063696A1 (en) * 1998-06-03 1999-12-09 Cryptography Research, Inc. Using unpredictable information to minimize leakage from smartcards and other cryptosystems
DE19837808A1 (de) * 1998-08-20 2000-02-24 Orga Kartensysteme Gmbh Verfahren zur Ausführung eines Verschlüsselungsprogramms zur Verschlüsselung von Daten in einem mikroprozessorgestützten, tragbaren Datenträger
US7248698B2 (en) * 2001-04-06 2007-07-24 Interdigital Technology Corporation System for generating pseudorandom sequences
US7401208B2 (en) * 2003-04-25 2008-07-15 International Business Machines Corporation Method and apparatus for randomizing instruction thread interleaving in a multi-thread processor
US9104477B2 (en) * 2011-05-05 2015-08-11 Alcatel Lucent Scheduling in MapReduce-like systems for fast completion time
US8918768B2 (en) * 2012-12-06 2014-12-23 Apple Inc. Methods and apparatus for correlation protected processing of data operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002261753A (ja) * 2001-03-06 2002-09-13 Hitachi Ltd 耐タンパー暗号処理方法

Also Published As

Publication number Publication date
EP3230859A1 (en) 2017-10-18
KR101889243B1 (ko) 2018-09-20
EP3230859B1 (en) 2019-07-17
CN107003903B (zh) 2021-02-26
EP3032416A1 (en) 2016-06-15
US10545759B2 (en) 2020-01-28
KR20170085066A (ko) 2017-07-21
CN107003903A (zh) 2017-08-01
JP6339295B2 (ja) 2018-06-06
US20170344376A1 (en) 2017-11-30
WO2016091581A1 (en) 2016-06-16

Similar Documents

Publication Publication Date Title
US11362802B2 (en) Cryptographic device arranged to compute a target block cipher
US9871651B2 (en) Differential power analysis countermeasures
CN106487498B (zh) 电子电路对边信道攻击的抵抗的检验
JP5861018B1 (ja) テーブルネットワークによって構成されたコンピューティングデバイス
US10897344B2 (en) Performing cryptographic data processing operations in a manner resistant to external monitoring attacks
Patranabis et al. Fault tolerant infective countermeasure for AES
Rass et al. On the security of a universal cryptocomputer: the chosen instruction attack
JP6339295B2 (ja) 複数の異なりかつ独立した分岐を用いて機密計算を実行する方法
JP2004310752A (ja) データ処理装置における誤り検出
US20180069694A1 (en) Software protection against differential fault analysis
Lipton et al. Provably secure virus detection: Using the observer effect against malware
Henricksen et al. Side-channel analysis of the K2 stream cipher
Böhl et al. A collision resistant deterministic random bit generator with fault attack detection possibilities
Akdemir et al. Non-linear error detection for finite state machines
Zhu et al. Temperature-Triggered Hardware Trojan Based Algebraic Fault Analysis of SKINNY-64-64 Lightweight Block Cipher.
US20230093306A1 (en) Protection of cryptographic substitution-permutation networks from fault injection attacks
Stecklina et al. Intrinsic code attestation by instruction chaining for embedded devices
WO2018007113A1 (en) Secure loading of secret data to non-protected hardware registers
Patrick Software Protection Against Fault and Side Channel Attacks
Oswald et al. Side-channel analysis and its relevance to fault attacks
van Dijk et al. A high-performance threshold implementation of a baseking variant on an arm architecture
Zikas et al. Provably Secure Virus Detection: Using The Observer Effect Against Malware
Malagón et al. Bitslice software implementation of KeeLoq as a side-channel countermeasure
Tunstall Secure cryptographic algorithm implementation on embedded platforms

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170526

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180329

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180509

R150 Certificate of patent or registration of utility model

Ref document number: 6339295

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