(57)【要約】本発明は、複数の一連の命令（ＩＮＳｎ）を実行することができるマイクロコントローラの機密保護対策方法に関する。前記命令は、いわゆるパイプライン方式により実行され、前記方法が、少なくとも１つの待ち時間（Ｂ）を、２つの連続する命令（ＩＮＳｎ、ＩＮＳｎ＋１）の間、および／または少なくとも１つの命令（ＩＮＳｎ）内にランダムに導入することからなることを特徴とする。本発明の方法は、ソフトウェアを追加することによってではなく、マイクロコントローラの電子回路により実行される。
2004510213.tif 000002
【特許請求の範囲】
【請求項１】
複数の一連の命令（ＩＮＳｎ）を実行することができるマイクロコントローラの機密保護対策方法であって、前記命令が、いわゆるパイプライン方法により実行され、前記方法が、２つの連続する命令（ＩＮＳｎ、ＩＮＳｎ＋１）の間、および／または少なくとも１つの命令（ＩＮＳｎ）内に、少なくとも１つの待ち時間（Ｂ）をランダムに導入することからなることを特徴とする機密保護対策方法。
【請求項２】
請求項１に記載の機密保護対策方法において、前記命令（ＩＮＳｎ）が、複数のサブステップに分割されることを特徴とする機密保護対策方法。
【請求項３】
請求項２に記載の機密保護対策方法において、前記サブステップが、
命令を入手するステップ（Ｆ）と、
命令を解読するステップ（Ｄ）と、
命令を実行するステップ（Ｅ）と、
命令の結果を書き込むステップ（Ｗ）と、
からなることを特徴とする機密保護対策方法。
【請求項４】
請求項２または３に記載の機密保護対策方法において、前記待ち時間（Ｂ）が、１つの命令（ＩＮＳｎ）の任意の２つのサブステップ間にランダムに導入されることを特徴とする機密保護対策方法。
【請求項５】
請求項１に記載の機密保護対策方法において、前記命令（ＩＮＳｎ）が、暗号アルゴリズムのサブブロックなどの複雑な論理モジュールに対応するマクロ命令であることを特徴とする機密保護対策方法。
【請求項６】
請求項１乃至５の何れかに記載の機密保護対策方法において、前記待ち時間（Ｂ）が、前記一連の命令の実行中に、数回ランダムに導入されることを特徴とする機密保護対策方法。
【請求項７】
請求項１乃至６の何れかに記載の機密保護対策方法において、前記待ち時間（Ｂ）が、保護すべき前記一連の命令に先行する論理コマンドの後に導入されることを特徴とする機密保護対策方法。
【請求項８】
請求項１乃至７の何れかに記載の機密保護対策方法において、前記方法が、マイクロコントローラの命令解読電子回路の直接責任である非ソフトウェア的な実行により実行されることを特徴とする機密保護対策方法。
【請求項９】
請求項１乃至８の何れかに記載の機密保護対策方法において、前記待ち時間（Ｂ）の導入が、１つの同じ一連の命令の実行の変動性を調整するために、電子パラメータまたはソフトウェア・パラメータにより静的および動的に調整されることを特徴とする機密保護対策方法。
【請求項１０】
請求項１乃至９の何れかに記載の機密保護対策方法において、前記方法が、パイプラインを使用するＲＩＳＣアーキテクチャを有するマイクロコントローラを備えた集積回路チップにおいて実行されることを特徴とする機密保護対策方法。
【請求項１１】
前記チップ・カード・タイプの保護デバイスであって、前記デバイスが、請求項１乃至１０の何れかに記載の対策方法を実行することができる電子部品を有することを特徴とするデバイス。
【発明の詳細な説明】
【０００１】
（技術分野）
本発明は、複数の一連のプログラム命令を実行するマイクロコントローラの機密保護対策方法に関する。
本発明は、特に、例えば、チップ・カード用のマイクロコントローラなどの保護電子部品に適用される。
【０００２】
（背景技術）
マイクロコントローラは、英語の専門用語で中央処理装置を意味するＣＰＵとも呼ばれる少なくとも１つのマイクロプロセッサを内蔵するモノリシック集積回路である。これらのマイクロコントローラは、１つのシリコン基板、または集積回路チップ上のコンピュータそのものである。
【０００３】
それ故、マイクロコントローラ・チップ・カードは、コンピュータと同じ構造を持つ保護情報担体である。すなわち、マイクロコントローラ・チップ・カードは、データを記憶することもできるし、また、情報を処理することもできる。この意味で、マイクロコントローラの役割は、カードおよびそれを携帯している人の身元を確認することであり、メッセージをコード化したり、解読したりすることであり、合法的な動作が実際に行われたことを証明する電子署名を算出することである。
【０００４】
図１は、チップ・カード用のマイクロコントローラの構造を示す略図である。チップ上に集積されているこのようなマイクロコントローラは、チップ上に記録されたデータおよびプログラムを処理することができるマイクロプロセッサまたはＣＰＵを含む。マイクロプロセッサは、データ・バスにより、異なるタイプのメモリと関連する。動作プログラムおよびアルゴリズムは、通常、ＲＯＭメモリ内に記憶されていて、一方、秘密のものであれ、秘密でないものであれ、データは、例えば、ＥＥＰＲＯＭタイプのようなプログラマブル・メモリに記憶される。ＲＡＭメモリは、種々の内部処理動作に必要な作業レジスタを含む。接点を持つチップ・カード用のコネクタからなる入出力部材は、外部の世界と会話するためのものである。
【０００５】
マイクロコントローラの動作は、クロック（ＣＬＫ）により順次行われる。マイクロコントローラは、また、電源ＶｃｃおよびアースＧＮＤを備える。
本質的には、マイクロコントローラには２つの種類がある。現時点での大部分（約９０％）のマイクロコントローラは、大型の解読エンジンにより命令が順次読み取られ、実行される（英語の専門用語の複合命令セット・コンピュータを意味する）ＣＩＳＣアーキテクチャに基づいている。しかし、現在の傾向としては、命令が並列に読み取られ、実行される（英語の専門用語の縮小命令セット・コンピュータを意味する）ＲＩＳＣアーキテクチャに基づくマイクロコントローラが、ますます盛んに使用されるようになってきている。このようなアーキテクチャは、集積回路チップ上で数台の高価な解読エンジンを必要とするが、命令のシーケンスを実行する速度は遥かに速い。より詳細に説明すると、いわゆる「パイプライン」方式を使用するＲＩＳＣアーキテクチャを使用すれば、いくつかの命令をサブステップに分割することにより、同じクロック・サイクルでいくつかの命令のステップを実行することによりいくつかの命令をインターリーブすることができる。ＲＩＳＣアーキテクチャのパイプラインの特徴については、以下に詳細に説明する。
【０００６】
それ故、マイクロコントローラによるプログラムの実行は保護されなければならない。何故なら、処理中のすべてのデータまたはいくつかのデータは、秘密データだからである。上記保護は、実行したプログラムが内蔵している数学的アルゴリズム、および／またはいわゆる機密保護対策方法により行うことができる。
機密保護対策方法は、プログラムの命令の実行中に処理されるデータを、保護部品の外部で解釈されるのを防止することからなる保護のための方法である。このような情報の漏洩は、マイクロコントローラの構造自体から起こりうるものであり、パワー・アタック、または英語の専門用語で差動パワー・アタックを意味するＤＰＡと呼ばれるものの被害を受ける恐れがある。
【０００７】
図２は、クロック・ビート数ｔに応じたチップの消費電流Ｉのグラフにより、パワー・アタックの原理を示す。
マイクロプロセッサが、あるアルゴリズムで、秘密の命令であれ、秘密でない命令であれ、一連の命令（命令１、命令２、命令３、．．．）からなるプログラムを実行した場合、マイクロプロセッサは、メモリ内の必要なデータを探し、それらを処理し、結果をメモリに書き込む。
【０００８】
従来から、使用するマイクロコントローラのアーキテクチャが何（ＣＩＳＣまたはＲＩＳＣ）であれ、一連の命令の実行は、何時でも同一で決まった同じ方法で行われる。
次に、（その電源Ｖｃｃから）マイクロコントローラの消費電流を単に読み取ることにより、パワー・アタックを行うことができ、これにより処理されている秘密データに関する情報を見ることができる。上記情報を入手するためには、同じ一連の命令を数回実行しなければならない。次に、消費電流を、同じ命令の実行中に処理したデータの消費電流と相互に関連づけることができる。それ故、マイクロコントローラの消費電流は、処理中のデータの本当の指標とすることができる。
【０００９】
例えば、不正にデータを入手しようとするものは、下記の方法を実行することができる。８バイトの秘密データ項目ｋ［ｉ］について考えてみよう。ここで、ｉは１乃至８である。アキュムレータを使用し、１乃至８のｉに対してループＡｃｃ＝ｋ［ｉ］ ｘｏｒ ｋ［ｉ＋１］を実行する。ループの終わりに、Ａｃｃ＝ｘｏｒ（Σ（ｉ＝１乃至８）ｋ［ｉ］）が得られる。消費電流Ｉが、このシーケンス（ループ）中の時間の関数である場合には、マイクロコントローラで実行したものの反映であるサイクルの形を持つ曲線が得られる。すなわち、この例の場合には、ループの８回の動作に対する８つの同じ信号が得られる。しかし、信号の各素子を比較した場合、違いを抽出することができ、それ故、ｋ［ｉ］秘密に関する情報を抽出することができる。同じループを数回実行すれば、もっと容易に観察することができる。カードの消費電流が、１つの同じ一連の動作に対して同じである場合には、探している情報を抽出することができる。
【００１０】
それ故、同じ一連の命令に対する消費電流の反復を除去することが非常に重要になる。これが機密保護対策方法の目的である。
特に、ランダムな変形を含むプログラムを使用することができるソフトウェアの分野では、このような機密保護対策方法がすでに使用されている。このようなプログラムは、ランダムにサブプログラムするための方法を使用することができる。それ故、従来、同じ一連の命令を呼出す同じタスクを数回反復して実行する場合には、異なるサブプログラムを呼出し、異なる一連の命令を実行することになる。そのため、消費電流と処理中のデータとの間を相互に関連づけることができなくなる。
【００１１】
しかし、このようなソフトウェア的な解決方法は複雑で実行するのが面倒である。実際には、いくつかのサブプログラムを書かなければならないが、そうすると開発に時間が掛かり、コード・サイズが大きくなる。
【００１２】
（発明の開示）
本発明の目的は、従来技術の欠点を解決する機密保護対策方法を提供することである。本発明は、例えば、ＲＩＳＣアーキテクチャを持つ電子部品におけるいわゆるパイプライン方式による一連の命令の実行に基づく機密保護対策方法を提案する。
【００１３】
本発明は、命令自体のレベルの各一連の命令において、ランダムで再現できない実行の原理を導入する。
本発明は、特に、一連の命令を実行することができるマイクロコントローラ用の機密保護対策方法に関する。上記命令は、いわゆるパイプライン方式により実行される。上記パイプライン方式の特徴は、２つの連続している命令の間に、および／または少なくとも１つの命令内に少なくとも１つの待ち時間をランダムに導入することである。
【００１４】
１つの特徴によると、命令は複数のサブステップに分割される。
１つの特徴によると、サブステップは、次のものからなる。すなわち、命令を入手するステップと、命令を解読するステップと、命令を実行するステップと、命令の結果を書き込むステップと、である。
１つの特徴によると、待ち時間は、１つの命令の任意の２つのサブステップの間にランダムに導入される。
【００１５】
もう１つの特徴によると、命令は、暗号アルゴリズムのサブブロックのような複雑な論理モジュールに対応するマクロ命令であっても良い。
もう１つの特徴によると、待ち時間は、一連の命令の実行中に、数回ランダムに導入される。
１つの特徴によると、待ち時間は、保護すべき一連の命令に先行するソフトウェア・コマンドの後に導入される。
１つの特徴によると、本発明の方法は、命令解読電子回路の直接責任である非ソフトウェアの埋め込みによって実行される。
もう１つの特徴によると、待ち時間の導入は、１つの同じ一連の命令の実行の変動性を調整するために、電子パラメータまたはソフトウェア・パラメータにより静的および動的に規制することができる。
【００１６】
本発明の１つの実行によると、本発明の方法は、パイプラインを含むＲＩＳＣアーキテクチャを備えるマイクロコントローラを有する集積回路チップにおいて実行される。
本発明は、チップ・カード・タイプの任意の保護デバイスに適用される。
本発明は、集積回路チップ上で、マイクロコントローラ・レベルで直接実行される機構を提案するという利点を持つ。そのため、ソフトウェアによる解決方法のように複雑にならない。
さらに、本発明の対策方法は、このような機密保護対策機構を備えた電子部品上で、保護されていてもいなくても、任意のプログラムの実行を保証する。
【００１７】
実際には、ランダムな実行、したがって、処理されているデータの保護を確実にするのは、プログラムの一連の命令ではなく、部品そのものである。このため、都合のよいことに、プログラムの電子部品との相互関連を解除することができ、このことはある種の用途の場合には非常に有益であることが分かる。それ故、異なるプログラムと一緒に使用することができ、その場合、保護のレベルは失われない。
添付の図面を参照しながら、例示的で、非制限的な下記の説明を読めば、本発明の他の利点および特徴を理解することができるだろう。
【００１８】
（発明を実施するための最良の形態）
本発明の機密保護対策方法は、ＲＩＳＣアーキテクチャを有するマイクロコントローラで一般に使用されるパイプラインで命令を処理する原理に基づいている。
ＲＩＳＣアーキテクチャは、いくつかの点でＣＩＳＣアーキテクチャとは異なる。
第１に、各命令には、特定の一意な電子サブモジュールの形で実行される１つの論理ブロックが対応している。そのため、１つの命令の解読および実行は、１回のクロック・サイクルで行うことができ、一方、ＣＩＳＣアーキテクチャの場合には、すべての命令を順次処理する１つの電子ブロックを使用している。
【００１９】
第２に、メモリ内に記憶していて、他の命令により使用されるデータから独立して、各クロック・サイクルで１つの命令を解読することができるように、データ・バスが命令バスから独立している。これにより、それらを処理しなければならない命令を解読すると同時に、メモリ内のデータにアクセスし、探すことができる。さらに、すべての命令は、命令の解読が直接行われ、遅延を起こさないように、外部データ・バスのサイズと少なくとも等しいサイズを持たなければならない。
【００２０】
ＲＩＳＣアーキテクチャを有するマイクロコントローラには、一般に次の２つのモデルがある。
非常に強力な一組の命令を使用することができるようにする、通常、パイプライン技術と呼ばれる一連の最適化された命令を使用する「スタンフォード」モデルと、
サブルーチンを高速で呼出すことができ、特にリアルタイムの用途に適している一連の命令を使用する「バークレー」モデルである。
【００２１】
本発明は、「スタンフォード」モデルで提案されているパイプライン技術に特に適用される。何故なら、本発明は、このパイプライン・アーキテクチャに依存する機密保護対策方法を提案しているからである。
パイプライン方式を使用すれば、各命令をいくつかのサブステップに分割し、これらのサブステップを並列に実行することにより、いくつかの命令の実行をインターリーブすることができる。それ故、パイプライン段階は、同時に実行される一組のサブステップと定義される。それ故、１命令あたりのクロック・サイクル数は、パイプライン段階の数に応じて分割される。
プログラム、もっと簡単にいうと、一連の命令を実行する場合、命令の直線的な実行に対するブランチ、ジャンプ、割込みおよび他の例外的な処理のような命令が発生すると、パイプラインの機能は分割されることに留意されたい。
【００２２】
図３および図４は、それぞれ、パイプラインを含むＣＩＳＣアーキテクチャおよびＲＩＳＣアーキテクチャを備えるマイクロコントローラの従来の機能を示す。
命令ＩＮＳｎは、簡単な命令であってもよいし、例えば、順列、圧縮または拡張構築、ベーシックでない数学的機能、参照テーブル等のような暗号アルゴリズムのサブブロックのような複雑な論理モジュールに対応するマクロ命令であってもよい。
命令ＩＮＳｎは、いくつかのサブステップに分割すると有利である。４つのサブステップへの分割の一例を示すが、これは例示としてのものであって、本発明を制限するためのものではない。
【００２３】
英語の頭字語「ＦＥＴＣＨ」からの「Ｆ」で示す第１のステップにおいては、メモリ内で解読すべき命令を探すことができる。このステップは、以降の段階に次に送られるこの命令をバス上に置く。
英語の頭字語「ＤＥＣＯＤＥ」からの「Ｄ」で示す第２のステップにおいては、命令が解読される。すなわち、この命令を処理することができるマイクロコントローラのサブモジュールが起動する。
英語の頭字語「ＥＸＥＣＵＴＥ」からの「Ｅ」で示す第３のステップにおいては、マイクロコントローラのサブモジュールで命令が実行される。
英語の頭字語「ＷＲＩＴＥ」からの「Ｗ」で示す最後のステップにおいては、バス上のマイクロコントローラのサブモジュールにより実行された命令の結果が書き込まれる。次に、この結果は、実行の残りの部分で使用されるか、メモリに戻される。
【００２４】
図３を見れば、ＣＩＳＣアーキテクチャを有するマイクロコントローラにより、８つのクロック・サイクル中に、２つの命令しか実行できなかったことを理解することができる。
逆に、図４に示すように、４つのサブステップを含むパイプラインの場合には、９つのクロック・サイクル中だけで、６つの命令を実行することができた。全実行時間が短縮しているが、それは、いくつかの命令のサブステップを同時に実行することができたからである。
【００２５】
しかし、このようなアーキテクチャも、パワー・アタックを受ける。それは、同じ一連の命令を数回反復すると、同じ消費電流を有するパイプラインの段階の同じ連続が何時でもできるからである。
パワー・アタックにより発生するこの問題を解決し、数回実行された同じ一連の命令に対する消費電流の再現を防止するために、命令の処理中に、待ち時間、中断Ｂをランダムに導入する。この待ち時間Ｂは、ある命令の始めのところにランダムに導入することもできるし、および／または１つの同じ命令の任意の２つのサブステップの間に導入することもできる。
ランダムな待ち時間Ｂは、また、必要な場合には、一連の命令の実行中に複数回導入することもできる。
【００２６】
図５は、本発明の対策方法の機構を示す。
ランダムな待ち時間Ｂは、各一連の命令のところで、命令の実行に干渉しないで、パイプライン段階を修正することにより消費電流の任意の再現を防止する。
本発明の方法は、マイクロコントローラの命令を解読するための電子モジュール（ハードウェア）により直接実行される非ソフトウェア的な実行により実行される。
本発明の機能は、同じ一連の命令の反復実行に多少の変動を与えるために、電子的な手段またはソフトウェア的な手段により、静的にまたは動的に調整することができる。
【００２７】
本発明の方法を実行できる１つの方法の場合には、待ち時間Ｂの導入を、例えば、保護したい一連の命令の実行の直前に、ソフトウェア的な方法で制御される始動に依存するようにすることができる。この方法を使用すれば、任意の特定の保護を必要としない一連の命令の実行速度を低減しないですむ。
それ故、本発明の方法は、一連の命令を確実にランダムに実行する。すなわち、ある実行と他の実行との間のこの一連の命令の再現が確実に防止され、同じ機能的な結果が得られる。
上記一連の命令の実行時間が過度に長くなり、そのため、パイプラインの主要な利点が失われないように折り合いをつけるだけでよい。
【図面の簡単な説明】
【図１】
マイクロコントローラを備える集積回路チップの略図である。
【図２】
保護電子部品へのパワー・アタックの方法を示すグラフである。
【図３】
命令の解読にＣＩＳＣアーキテクチャを備えた従来のマイクロコントローラの機能を示す図である。
【図４】
命令の解読にＲＩＳＣアーキテクチャを備えた従来のマイクロコントローラの機能を示す図である。
【図５】
命令の解読に本発明のＲＩＳＣアーキテクチャを備えたマイクロコントローラの機能を示す図である。
【図１】
2004510213.tif 000003
【図２】
2004510213.tif 000004
【図３】
2004510213.tif 000005
【図４】
2004510213.tif 000006
【図５】
2004510213.tif 000007
【国際公開パンフレット】
2004510213.tif 000008
2004510213.tif 000009
2004510213.tif 000010
2004510213.tif 000011
2004510213.tif 000012
2004510213.tif 000013
2004510213.tif 000014
2004510213.tif 000015
2004510213.tif 000016
2004510213.tif 000017
2004510213.tif 000018
2004510213.tif 000019
2004510213.tif 000020
2004510213.tif 000021
2004510213.tif 000022
2004510213.tif 000023
2004510213.tif 000024
2004510213.tif 000025
【国際調査報告】
2004510213.tif 000026
2004510213.tif 000027
2004510213.tif 000028
2004510213.tif 000029
2004510213.tif 000030
2004510213.tif 000031