(57)【要約】【課題】  ディジタルデータを操作する複数の同じ機能プロセスをマスクする方法を提供する。【解決手段】  機能プロセスを複数のステップに分割し、各ステップの終了時にプロセスを中断して少なくともひとつの中間結果を保存し、及び少なくとも２つのプロセスのステップを連続的に実行し、各ステップの終了時に、非確定的引数に従って次のステップのプロセスを選択する。【選択図】  図１
2005056413.tif 000002
【特許請求の範囲】
【請求項１】
ディジタルデータを操作する複数の同じ機能プロセスをマスクする方法において、
前記機能プロセスをステップに分割し、各ステップの終了時にプロセスを中断して少なくともひとつの中間結果を保存（６）し、
少なくとも２つのプロセスのステップを連続的に実行し、各ステップの終了時に次のステップのプロセスを非確定引数の結果に従って選択する、方法。
【請求項２】
前記非確定引数はランダム引数（８）である請求項１記載の方法。
【請求項３】
現在の引数が先行のものと同じ場合には、現在のステップに対し同じプロセスが実行され、現在の引数が先行のものと異なる場合には、現在のステップに対し別のプロセスが選択される、請求項１記載の方法。
【請求項４】
前記引数は１ビットの数値であり、その状態が先行のステップに関して機能プロセス選択の変更又は維持を条件づける、請求項１記載の方法。
【請求項５】
非確定的引数の結果に従って、実行する少なくともひとつの機能プロセスを選択する（５，９，１０，１１）手段を有する、複数のステップに分割可能で各ステップの終了時に中間結果の保存（６）のためにプロセスを中断する、同じ機能プロセスを実行するためのプロセッサ。
【請求項６】
前記引数（４，８）は単一ビットで、その状態が先行の機能プロセスの実行を他の機能プロセスにスイッチングするか維持するかを条件づける、請求項５記載のプロセッサ。
【請求項７】
請求項１記載の方法を実行する手段を有する、請求項５記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプロセッサ又は集積回路で操作されるディジタルデータに対して実行されるアルゴリズム処理に関する。本発明は、特に、安全アルゴリズムを実行する暗号又は認証応用においてディジタルデータに対して実行される処理に関する。このような応用では、アルゴリズムにより操作されオペレーションが実行されるデータは侵害つまり秘密の及び／又は計算データを発見しようとする外部攻撃から保護されなければならない。
【背景技術】
【０００２】
本発明が保護しようとする外部攻撃の例はＳＰＡ（シングルパワーアナリシス）又はＤＰＡ（ディファレンシャルパワーアナリシス）として知られる攻撃で、アルゴリズムの実行中にデータを操作する集積回路の電力消費を解析するものである。実際、集積回路（マイクロプロセッサ又はワイヤー論理のオペレータ）がデータに対して計算を実行するとき、処理及びデータはその電力消費に対する効果をもつ。
【０００３】
本発明が適用されるアルゴリズムの例はいわゆるＲＳＡアルゴリズムで、チャイニーズ余り理論（ＣＲＴ）を使用し、例えば論文"The Chinese Remainder Theorem and its application in a high-speed RSA crypt-chip" by P.J. Grossschad, Computer Security Applications 2000 ACSAC'00, 16th Annual Conference, 11-15 2000年12月 384-393頁に記載され、本明細書で参考資料とする。
【０００４】
従来、１又は複数の数の処理をマスクするために、アルゴリズム処理の前に、これらの数はランダム値と結合される。
【０００５】
この欠点は、これは処理される数を変更することにある。処理される数は処理の終了時に逆変更して、期待される結果を復元する必要がある。別の欠点はランダム数によるマスクは処理の複雑さと全計算時間を増加させる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的はアルゴリズム計算の実行をマスクする解決を提供することにある。本発明は特に実行されるアルゴリズムに独立な解決、つまり、実行される計算が何であれ、同じでかつ局部的に独立な処理に分割可能であれば、適用可能な解決を提供することにある。
【０００７】
本発明は又アルゴリズム実行の速度に悪影響を与えない解決を提供することを目的とする。
【０００８】
本発明は又実際のアルゴリズムで実行される計算の変更を必要としない解決を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するための本発明の特徴は、ディジタルデータを操作する複数の同じ機能プロセスをマスクする方法において、前記機能プロセスをステップに分割し、各ステップの終了時にプロセスを中断して少なくともひとつの中間結果を保存し、少なくとも２つのプロセスのステップを連続的に実行し、各ステップの終了時に次のステップのプロセスを非確定引数の結果に従って選択する、方法にある。
【００１０】
本発明の実施例によると、前記非確定引数はランダム引数である。
【００１１】
本発明の実施例によると、現在の引数が先行のものと同じ場合には、現在のステップに対し同じプロセスが実行され、現在の引数が先行のものと異なる場合には、現在のステップに対し別のプロセスが選択される。
【００１２】
本発明の実施例によると、前記引数は１ビットの数値であり、その状態が先行のステップに関して機能プロセス選択の変更又は維持を条件づける。
【００１３】
本発明は、又、非確定的引数の結果に従って、実行する少なくともひとつの機能プロセスを選択する手段を有する、複数のステップに分割可能で各ステップの終了時に中間結果の保存のためにプロセスを中断する、同じ機能プロセスを実行するためのプロセッサを提供する。
【００１４】
本発明の実施例によると、前記引数は単一ビットで、その状態が先行の機能プロセスの実行を他の機能プロセスにスイッチングするか維持するかを条件づける。
【発明を実施するための最良の形態】
【００１５】
本発明の特徴は機能処理の間にランダムスイッチングを提供することにある。前記処理は同じオペレーションを実行し、順番に実行される。本発明によると、機能処理は人工的に複数のステップに分割される（各ステップは、例えば、加算、乗算等の１又は複数の基本オペレーションである）。各ステップの終了時に処理を中断することが可能であり、一方、１又は複数の中間結果が保存される。各機能処理は、本発明では、相互に独立であり、つまり、本発明によりマスクされる処理は、マスクされる他の処理から発生する中間結果を必要としない。この条件は簡単に満足され、複数の関連する計算を本発明の意味で単一の機能処理に集めるように選択する。処理で操作されるデータは同じでも異なってもよい。
【００１６】
説明の明瞭化のために、本発明は２つの同じ計算（機能処理）を有する応用について記述される。各計算は２つの入力データをふくみ、出力データを提供する。しかし、本発明は一般にステップに分割される任意の数の計算に適用可能であり、入力及び出力データ及び中間結果の数が何であれ、十分な蓄積素子を提供すれば、適用可能である。同様に、本発明は処理のスイッチングを選択するためのランダムな実施に関して記述する。しかし、本発明は一般に数の非確定的な実施（例えば、擬似ランダム又は計算からの結果）、つまり、予測できない結果に対して、適用可能である。
【００１７】
図１は２つの同じ計算つまりＰＲＯＣ１とＰＲＯＣ２に適用される本発明の実施例で、各計算は２つの数Ａ１，Ｂ１及びＡ２，Ｂ２に作用する。これらの処理はｎステップに分割され、中間結果は各ステップの終了時に保存可能で、中断及び計算の再開が可能である。処理の分割は、例えば、各ステップの終了時の中断によりソフトウェア形態で書込むことにより行われる。同様の分割はワイヤード論理による機械によっても実施可能である。
【００１８】
本発明によると、プロセスＰＲＯＣ１及びＰＲＯＣ２の初期化を行うと、初期化データ（例えば、実行するステップのランク−ここではステップ１）と、計算に必要なオペランドＡ１，Ｂ１及びＡ２，Ｂ２が保存される（ブロック１，ＢＵＦＦ１及びブロック２，ＢＵＦＦ２）。保存素子は例えばダイレクトメモリーアクセス（ＤＭＡ）回路で形成され、好ましくは、その後計算の中間データ（次のステップ及び中間結果）の保存に使用される。
【００１９】
本発明によると、カウンタが初期化される（ブロック３，ｉ＝０）。次に、第１のランダム数、この例では１ビット以上がとり出される（ブロック４，Ｒｄｉ）。
【００２０】
とり出されたランダム数に従って、一方又は他方のプロセスが選択されて（ブロック５，ＳＥＬ  ＰＲＯＣ  ＥＸＥＣ）、その第１ステップが実行される。例えば、０のＲｄｉに対してはプロセスＰＲＯＣ１のステップが実行され、数値１に対してはプロセスＰＲＯＣ２のステップが実行される。このステップを実行するために、選択されたプロセスの入力データＡ１，Ｂ１又はＡ２，Ｂ２がロードされる。
【００２１】
このステップの最後に、中間結果ＲＩ及び次の（又は現在の）ステップのランクＲｇが保存され（ブロック６，ＳＴＯＲＥ）、プロセスの正しいステップでの後続の再スタートを可能とする。この保存は一方又は他方のプロセスＰＲＯＣ１又はＰＲＯＣ２毎に行われ、例えば、割り当てられた保存素子ＢＵＦＦ１又はＢＵＦＦ２を用いて行われる。次に、数ｉが歩進され（ブロック７，ｉ＝ｉ＋１）、新しいランダム数Ｒｄｉがとり出される（ブロック８）。このとり出しは次のフェーズでの計算のプロセスＰＲＯＣ１及びＰＲＯＣ２の選択のために使用される。
【００２２】
好ましくは、テスト（ブロック９，Ｒｄｉ＝Ｒｄｉ−１？）が先行のランダム数に関して実行される。２つの数が同じ場合には同じプロセスの次のステップ（ステップ１０，ＥＸＥＣ）が実行される。逆の場合には、別のプロセスにスイッチングされる。これを実行するために必要なデータが再ロードされる（ブロック１１，ＬＯＡＤ）。そのプロセスが未だ選択されていないときは前記データはその入力データＡ及びＢである。さもなくば前記データは中間結果と、アルゴリズムの正しい位置で計算を再開するためのステップランクである。
【００２３】
ステップ１０の実行の最後で、中間結果と実行が終わったプロセスステップのランクを保存し（ブロック１２，ＳＴＯＲＥ）、カウンタｉの歩進（ブロック７）にもどる。
【００２４】
各プロセスはｎステップで実行されなければならないので、ブロック１０における通過の数は２ｎ−１である。図示はしないが、別のテストをもうけて実行の終了を検出し、一方のプロセスを高速実行に導く引数の等しい確率でない分布の場合に引数の結果にかかわらず同じプロセスを常に選択する。別の実施例として、終了したプロセスの計算がランダムデータで継続される。しかし、この実施例は好ましくない、というのは、これは最後に計算結果を復元できる必要があり、一般の実行の速度を減少させる原因となるからである。
【００２５】
計算の最後で、最終結果（中間結果のように保存されている）が関連するプロセスに割り当てられた保存素子の中に与えられる。
【００２６】
従って、計算プロセスの各ステップの終了時に、ランダム引数の結果に従って、他のプロセスにスイッチングするか否かの可能性がある。２つの計算プロセスをランダムにインターレースさせることを考慮することができる。このインターレースにより実行を完全にマスクすることが可能となる。
【００２７】
ランダム引数の結果を２つのプロセスの一方に定常的に割り当てないという事実により、耐侵入システムをより強固にする。
【００２８】
数Ｒｄｉのサイズは、図示の実施例では、単一ビットである。というのはこの実施例は２つの計算を交互に提供するからである。
【００２９】
計算プロセスの数が２より大きい場合には、例えば、ひとつのプロセスから他のプロセスにスイッチングするときに、ランダム引数の結果に従ってプロセスを選択する。数Ｒｄｉのサイズはプロセスの数の関数である。
【００３０】
本発明の利点は、２つのプロセスの実行がインターレースされるという事実によりマスクが最適化されることにある。さらに、同じ機能プロセスへの応用は両方の計算に対し同じハードウェア回路の使用を可能とし、その際のデータは同じオペレーションを受ける。従って、集積回路の電力消費の検査により操作データをトレースすることはできない。というのは、本発明は現在の計算ステップと機能プロセスの間の相関をなくしているからである。
【００３１】
ひとつのプロセスから他のプロセスにスイッチングするために中間結果を保存することは欠点ではない。何故なら、中間結果は同じ計算の実行毎に異なるからである。
【００３２】
もちろん、本発明は当業者に容易な種々の変更、修飾、改良が可能である。特に、本発明の実施に必要なものは従来のもののみである。例えば、並列に実行する機能プロセスと比較すると、本発明はプロセスのスイッチングのために異なる機能プロセスの中間結果の一時保存をする。
【００３３】
上述の変更、修飾、改良は本開示の一部であり、本発明の範囲内である。従って、上述の記述は単なる実施例であり、発明を限定しない。本発明は特許請求の範囲とその均等物によってのみ限定される。
【図面の簡単な説明】
【００３４】
【図１】本発明による方法の実施例を示すフローチャートである。
【図１】
2005056413.tif 000003
【外国語明細書】
2005056413.tif 000004
2005056413.tif 000005
2005056413.tif 000006
2005056413.tif 000007
2005056413.tif 000008
2005056413.tif 000009
2005056413.tif 000010
2005056413.tif 000011
2005056413.tif 000012