(57)【特許請求の範囲】
【請求項１】
主プログラムを有するマイクロプロセッサを備え、該主プログラムは、通常動作時に、集積回路の内部または外部の電気信号と同期して、前記マイクロプロセッサにおいて、少なくとも一つの命令シーケンスを実行するように構成されている、集積回路であって、セキュリティーモード時に、主プログラムの前記少なくとも一つの命令シーケンスの実行を、前記集積回路の内部または外部の電気信号から無相関化するための少なくとも二つの手段を含み、前記少なくとも二つの無相関手段が集積回路によって選択的に起動される、集積回路。
【請求項２】
電気信号が、タイミング信号、または同期信号であることを特徴とする請求項１に記載の集積回路。
【請求項３】
少なくとも一つの無相関手段が、乱数の発生によって、配列が時間的にランダムである一連のタイミングパルスを、マイクロプロセッサへ発生させる回路を一つまたは複数含むことを特徴とする請求項１に記載の集積回路。
【請求項４】
少なくとも一つの無相関手段が、乱数発生器を含むことを特徴とする請求項３に記載の集積回路。
【請求項５】
少なくとも一つの無相関手段が、所定の長さより短いタイミングパルスを排除するためのクロック較正回路を含むことを特徴とする請求項４に記載の集積回路。
【請求項６】
少なくとも一つの無相関手段が、主プログラムに対するランダムな割込み発生システムを含むことを特徴とする請求項１に記載の集積回路。
【請求項７】
少なくとも一つの無相関手段が、主プログラムの実行中に呼び出して実行される副プログラムの実行のための手段を含み、副プログラムが複数のシーケンスのうちの一つをランダムに選択し、前記複数のシーケンスの各々が、他の全てのものと命令のセットが異なり実行時間が異なることを特徴とする請求項１に記載の集積回路。
【請求項８】
副プログラムシーケンスの様々な実行時間が、乱数発生器から提供される値によって定まることを特徴とする請求項７に記載の集積回路。
【請求項９】
副プログラムシーケンスが、主プログラムの一般動作コンテキストを復元する必要なく主プログラムに戻ることができるように、実行された最後の命令に続く少なくとも一つの次の命令を含む該コンテキストを変更しないことを特徴とする請求項７に記載の集積回路。
【請求項１０】
副プログラムシーケンスが、主プログラムのコンテキストを復元してから、主プログラムにマイクロプロセッサの制御を返すことを特徴とする請求項７に記載の集積回路。
【請求項１１】
主プログラムが、一つまたは複数の無相関手段を許可または阻止できることを特徴とする請求項１に記載の集積回路。
【請求項１２】
少なくとも１つの無相関手段が、プロセッサのタイミング信号、または同期信号の移相手段を有することを特徴とする請求項２に記載の集積回路。
【請求項１３】
移相手段が、プロセッサのタイミング信号、または同期信号をランダムに移相させることを特徴とする請求項１２に記載の集積回路。
【請求項１４】
ランダム移相手段が、プログラムの実行中に、外部クロックから部分的にまたは完全にプロセッサの動作を無相関化するために外部クロックに接続されていることを特徴とする請求項１３に記載の集積回路。
【請求項１５】
乱数発生器が、乱数値で初期設定されるフィードバック式または他の型式のカウンタを使用することを特徴とする請求項４に記載の集積回路。
【請求項１６】
カウンタのための初期設定値が不揮発性メモリから得られることを特徴とする請求項１５に記載の集積回路。
【請求項１７】
カウンタのための初期設定値がプログラムの実行中に変更されることを特徴とする請求項１６に記載の集積回路。
【請求項１８】
乱数発生器が、初期設定値で初期設定されるハッシュ関数、または暗号形式のアルゴリズムを利用することを特徴とする請求項１５に記載の集積回路。
【請求項１９】
集積回路が論理回路と接続バスとを含み、マイクロプロセッサの動作のシーケンスが、集積回路の論理回路にアクセスするのに必要な時間だけでなく、様々な論理回路を介してバスで信号を伝送する時間も考慮されていることを特徴とする請求項１に記載の集積回路。
【請求項２０】
通常動作時には、集積回路の内部または外部の電気信号と同期して、マイクロプロセッサにおいて、少なくとも一つの動作及び少なくとも一つの命令シーケンスを実行するように構成された、割り込みシーケンスを有する主プログラムを含む方法であって、
前記集積回路は、セキュリティーモード時に、主プログラムの前記少なくとも一つの命令シーケンスの実行を、前記集積回路の内部または外部の電気信号から無相関化するための少なくとも二つの手段を含み、前記少なくとも二つの無相関手段が集積回路によって選択的に起動され、前記方法は、前記少なくとも二つの無相関手段の少なくと１つによって実行される、
配列が時間的にランダムである一連のタイミングパルスからなるクロックを用いて、主プログラムの前記少なくとも一つの命令シーケンスを開始させる段階、
主プログラムに対する割込みシーケンスをランダムに開始させる段階、
主プログラムの前記少なくとも一つの命令シーケンスの実行中に、実行時間の異なる複数のシーケンスのうちの一つをランダムに選択する副プログラムを呼び出して実行する段階、あるいは
上記の段階の少なくとも二つを組み合わせた段階の少なくとも一つの段階を含むことを特徴とする方法。
【請求項２１】
少なくとも一つのプログラムによって制御されるマイクロプロセッサを備え、該少なくとも一つのプログラムは少なくとも一つのプログラム割込みを受けることができ、通常動作時には、集積回路の内部または外部の電気信号と同期して、マイクロプロセッサにおいて、少なくとも一つの命令シーケンスを実行するように構成されている、集積回路であって、セキュリティーモード時に、前記プログラムの前記少なくとも一つの命令シーケンスの実行を、前記集積回路の内部または外部の電気信号から無相関化するための少なくとも二つの手段を含み、前記少なくとも二つの無相関手段は選択的に起動され、前記プログラムが、前記無相関手段の動作を許可、変更、または阻止するための命令シーケンスを有し、許可がプログラム割込みをマスク解除することを含む、集積回路。
【請求項２２】
少なくとも一つの無相関手段が、配列が時間的にランダムであるタイミング信号または一連のクロックパルスを発生させる手段であって、前記少なくとも１つのプログラム割込みをランダムに発生させる手段あるいは実行時間の異なる複数のシーケンスのうちの一つをランダムに選択する副プログラムを呼び出して実行する手段に接続された手段を含むことを特徴とする請求項２１に記載の集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、改良型集積回路とその使用方法に関する。本発明は、特にマイクロプロセッサやマイクロコンピュータ、さらに、あらゆる保護を要するワイヤド論理回路にも実施可能である。
【０００２】
【従来の技術】
マイクロプロセッサまたはマイクロコンピュータは、内部または外部から供給される一つのクロック信号に対して基準付けされた一つまたは複数のタイミング信号と同期して、メモリに記憶させたプログラムの連続する命令を逐次に実行することが知られている。
【０００３】
これにより、プログラム実行の様々な段階をクロック信号と相関させることが可能である。なぜなら、特定の命令の実行は、それ自体、いくつかの段階に分割され、それらの段階は、連続する一個または複数のクロックパルスでタイミングが取られるからである。即ち、通常のマイクロプロセッサでは、その動作は、一般に、基準クロックを移相しながら必要な電気パルスを発生させるシーケンサ回路から発するクロック信号で周期的にタイミングが取られているからである。動作のシーケンスは、様々なレジスタ、メモリ、内部装置にアクセスするのに必要な時間だけでなく、特に、様々な論理回路を介してバスで信号を伝送する時間も考慮に入れなければならない。従って、各命令の始まりと終わりの時点が完全に分かれば、理論上、所定の時点にプロセッサの処理装置で実行される命令が何であるか知ることが可能である。なぜなら、実行されるプログラムはあらかじめ定められた一連の命令で構成されているからである。
【０００４】
例えば、プログラムの開始から、または処理装置のリセットから、あるいはまた、ある事象もしくは外部または内部の基準信号から経過した時間により、送り出されたクロックパルスの数を決定することができる。
【０００５】
このように、マイクロプロセッサまたはマイクロコンピュータでのプログラム実行を観察できるということは、マイクロプロセッサまたはマイクロコンピュータを高い安全性を要求されるアプリケーションに利用する時には、重大な不具合となり得る。なぜなら、このようにすれば、悪意を持った人間が、プロセッサが置かれている連続した状態を知り、これらの情報を利用して、いくつかの内部処理結果を知ることができるからである。
【０００６】
例えば、ある外部信号で与えられる動作は、内部機密情報のテスト、またはメッセージの解読、あるいはまた、いくつかの情報の保全性検査のように、定められたセキュリティ作業の結果に応じて様々な時点で発生する。考慮に入れられる時点に応じて、外部信号は、その結果について、あるいは情報の機密内容について、また、暗号計算の場合には、利用される暗号化秘密キーについても、情報を与えることになる。
【０００７】
一方、モデルＳＴ１６ＸＹの名称でＳＧＳ  Ｔｈｏｍｓｏｎ社が商品化したマイクロプロセッサまたはマイクロコンピュータが知られているが、それらに含まれるマイクロプロセッサには、乱数発生器が組み込まれており、例えば暗号化または暗号解読の計算に利用される乱数を得ることができる。
【０００８】
【発明が解決しようとする課題】
本発明の目的の一つは、回路に上記タイプの探索を禁止する手段を設け、さらに一般的に言えば、不正であろうとなかろうと回路の内部動作を観察できないようにすることにある。
【０００９】
【課題を解決するための手段】
この目的は、改良型集積回路が、あるプログラムの少なくとも一つの命令シーケンスの実行と、回路の内部または外部の電気信号との相関をなくする手段を有することにより、達成される。
【００１０】
別の特徴によれば、回路の電気信号は、タイミング信号か、同期信号か、あるいはステータス信号である。
【００１１】
別の特徴によれば、無相関手段は、配列が時間的にランダムである一連のクロックパルスまたはタイミングパルスを発生させる回路を一つまたは複数含む。
【００１２】
別の特徴によれば、無相関手段は、プロセッサでのプログラムシーケンスの実行から同期解除することのできる乱数発生器を含む。
【００１３】
別の特徴によれば、無相関手段は、短すぎるタイミングパルスを排除できるクロック較正回路を含む。
【００１４】
別の特徴によれば、無相関手段は、割込み乱数発生システムを含む。
【００１５】
別の特徴によれば、無相関手段は、命令と実行時間が異なりランダムに選択される二次シーケンスの実行を含む。
【００１６】
別の特徴によれば、副次処理の可変時間は、乱数発生器から提供される値によって決まる。
【００１７】
別の特徴によれば、副次処理は、主プログラムの一般動作コンテキストを復元する必要なく主プログラムに戻ることができるように、このようなコンテキストを変更しない。
【００１８】
別の特徴によれば、副次処理は、主プログラムのコンテキストを復元してから、主プログラムにプロセッサの制御を回復させる。
【００１９】
別の特徴によれば、主プログラムは、一つまたは複数の無相関手段を許可または阻止できる。
【００２０】
別の特徴によれば、回路は、プロセッサのタイミング信号、同期信号、あるいはステータス信号の移相手段を有する。
【００２１】
別の特徴によれば、これらの移相手段は、プロセッサのタイミング信号、同期信号、あるいはステータス信号のランダム移相を発生させる。
【００２２】
別の特徴によれば、ランダム移相手段は、プログラムの実行中に、外部クロックから部分的にまたは完全にプロセッサの動作を同期解除する。
【００２３】
別の特徴によれば、乱数発生器は、乱数値で初期設定されるフィードバック式または他の型式のカウンタを利用する。
【００２４】
別の特徴によれば、初期設定値は、不揮発性メモリから得られる。
【００２５】
別の特徴によれば、初期設定値は、プログラムの実行中に変更される。
【００２６】
別の特徴によれば、乱数発生器は、初期設定値で初期設定される暗号型式のアルゴリズム、またはハッシュ関数を利用する。
【００２７】
別の特徴によれば、動作のシーケンスは、様々なレジスタ、メモリ、内部装置にアクセスするのに必要な時間だけでなく、特に、様々な論理回路を介してバスで信号を伝送する時間も考慮に入れる。
【００２８】
本発明の別の目的は、該集積回路の使用方法を提案することにある。
【００２９】
この目的は、以下の方法によって、達成される。
【００３０】
ランダムパルス形のクロックを用いて、一つまたは複数の命令もしくは演算のシーケンスを開始させる、
割込みシーケンスをランダムに開始させる、
主要な一連の命令または演算の実行中に、ランダムな一連の命令または演算の処理を開始させる、あるいは
上記の可能性の少なくとも二つを組み合わせる。
【００３１】
本発明のその他の特徴と利点は、添付図面を参照して下記の説明を読めば、さらに明確になる。
【００３２】
図で説明するマイクロコンピュータは、例えば保護電源付きのＲＡＭ型、またはＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、またはフラッシュ型のＲＡＭなど、あるいはこれらのメモリの組合せのようなプログラム可能な、あるいはプログラム可能でない少なくとも一つの不揮発性メモリと直結したＲＡＭ型の汎用記憶素子を有するマイクロプロセッサを組み込んだモノリシック集積回路を意味する。
【００３３】
【発明の実施の形態】
次に、図１を用いて本発明を説明する。図１では、ＣＰＵ（１）は、内部クロック（１１）で動作する乱数発生器（２）を備えている。このようなプロセッサとしては、既述の通り、特にＳＴ１６ＸＹというマイクロコンピュータファミリが知られている。しかしながら、入力の少なくとも一つにフィードバックされる並列入出力シフトレジスタであって、乱数発生器を構成するために内部クロックでシフトのタイミングを取るシフトレジスタを利用する上記マイクロコンピュータまたはマイクロプロセッサは、マイクロプロセッサのマシンサイクルの外部シーケンスクロックを使って、レジスタの内容の読み取り命令を実行する。本発明により、擬似乱数ではなくて乱数を発生させることができ、これは、乱数発生器の内部クロックが、外部クロックの多周波数を持つことにより、外部クロックに対して、ランダムに移相されるという事実に基づいている。
【００３４】
本発明の特徴は、主プログラムを実行するマイクロプロセッサを、外部シーケンスクロックにより相関された完全同位相の動作から、無相関の動作に移すことを可能にするいくつかの要素を該マイクロプロセッサに付加することで、このような乱数発生器付きマイクロプロセッサの原理を利用することにある。このようなマイクロプロセッサでは、必要に応じて、また、選択される実施例に従い、所定の命令の実行時間は、同じ命令を数回実行した場合、同じにはならない。または、このようなマイクロプロセッサでは、たとえ、ある命令シーケンスが主プログラムで何度か実行される場合にも、実行時間は様々となる。即ち、ある命令シーケンスの実行時間がそれ自体様々であり、同一命令シーケンスの実行時間は様々となる。これは、図１の回路で得られ、ここでは、乱数発生器（２）及び内部クロック（１１）は、マイクロプロセッサまたはマイクロコンピュータの外部クロックＣＬＫＥに対して移相され、非同期化された一定の周波数の自由発振器で実現される。従来、当業者は、クロックが不規則であるようなマイクロコンピュータまたはマイクロプロセッサの動作にタイミングを合わせるようなことはしなかった。逆に、必要な電気パルスを発生させるシーケンサ回路から一般的に生成されるクロック信号に従う動作に対して周期的にタイミングが取られるように、あらゆる処置を講じ、特に、基準クロックを移相させる方法を使った。
【００３５】
これは、特に、動作のシーケンスが、様々なレジスタ、メモリ、内部装置にアクセスするのに必要な時間だけでなく、様々な論理回路を介してバスで信号を伝送する時間も考慮に入れる必要があるという事実による。本発明では、データバス（３）を介して様々な装置に乱数値を提供し、その乱数値を以下の様々な要素にロードするか、あるいはその出力（２２）に変動周期性のパルス信号を発生させるために、乱数発生器（２）を利用する。従って、本発明のマイクロプロセッサまたはマイクロコンピュータでは、ランダムに配列されたクロックパルスから、ロードと命令の実行に必要な信号を発生できる。ただし、このパルスは、プロセッサ（１）が様々な演算を実行するだけの遅延を持つように、最小のサイクル時間を維持しなければならない。マイクロプロセッサ（１）におけるクロックの役目をする信号を、較正回路（９）に送らなければならない。この較正回路の出力（９５）を多重化回路（１８）に送る。その多重化制御入力（１９）は、乱数発生器（２）、あるいは主プログラム（５）で決定される値がロードできるレジスタ（８）から一ビットないし数ビットの信号を受け取る。このレジスタ（８）に乱数値をロードする時、プロセッサに送られるクロック信号の選択はランダムに決定されるが、このレジスタ（８）に、主プログラムで決定される値をロードする時には、マイクロプロセッサのシーケンスクロックが外部クロックＣＬＫＥであるか、または無相関クロックＣＬＫ２であるかどうか決定するのは主プログラムである。同様に、レジスタ（８）の一ビットまたは数ビットが、接続線（８２）を介して、論理回路（２８）に送られ、そこで、レジスタ（８）のビット（一つまたは複数）に応じて、内部クロック信号（１１）を乱数発生器（２）に送ることが妥当であるかどうか確認することができる。従って、この乱数発生器は、外部クロックＣＬＫＥの場合でも、該信号を、接続線（２６）と論理回路（２８）を介して受け取ることで、動作することができる。後者の場合には、発生する値は、擬似乱数値となる。乱数発生器（２）は、回路（２８）を介してレジスタ（８）のビット（一つまたは複数）で妥当と確認される内部クロック（１１）を利用して動作することができ、このような場合、発生する値は、乱数値となる。乱数発生器（２）の出力（２２）に発生し、較正回路（９）で受け取られる信号１は、周期性がランダムか、あるいは擬似ランダムに変化するパルス信号に相当する。この周期性が擬似ランダムに変化するという事実は、あまり面倒なことではない。なぜなら、後でわかるように、較正回路（９）は、内部クロック信号（ＦＲＣ）を動作させて、その内部クロック信号自体、別の周波数と、外部クロック信号ＣＬＫＥに対する移相、従って、この外部クロック信号に同期化された擬似ランダムクロック信号に対する移相により、無相関を再びもたらすからである。
【００３６】
この装置には、乱数発生器（２）が乱数をロードするか、あるいは主プログラム（５）が、このプログラムで決定される値をロードするためのレジスタＲ２も含まれる。このレジスタＲ２は、較正回路（９）の出力（９５）から発する無相関クロック信号ＣＬＫ２を、入力の一つに受け取る割込みトリガ論理回路（４）により、全て、または一部、利用する。回路（４）の出力は、レジスタ（８）の一つまたは複数のビットで制御されるゲート（４８）を介して、ＣＰＵの割込み入力（１２）に送られる。このレジスタ（８）の一つまたは複数のビットは、いくつかのマイクロプロセッサ上に標準的な方法で得られる割込みのマスキング制御の役割を果たしている。プロセッサの割込み入力（１２）に割込みが示されると、例えば、オペレーティングシステムか、または副プログラムに含まれる割込み処理プログラムは、割り込まれたシーケンスの主プログラムとは異なる処理時間を取り入れる。割込みによる動作モードには、二つの段階があることを理解する必要がある。
【００３７】
第一の段階では、主プログラムと呼ばれるプログラムで制御されるマイクロプロセッサは、例えば、これらの割込みのマスク解除により、無相関の動作を許可する。
【００３８】
第二の段階では、この割込みは、動作を自動的に副プログラムに向かわせる。この演算は、主プログラムを働かせることなく行われる。
【００３９】
最後に、本発明の装置には、後でわかるように、主プログラム（５）で呼び出されるたびに異なる様々な持続時間を発生させることのできる副プログラム（６）も含まれる。従って、図１に示される実施変形例により、主プログラム（５）は、無相関クロックＣＬＫ２を用いて、一つまたは複数の命令の実行シーケンスを開始させることにより、あるいはある命令シーケンスの実行中に、ランダムに開始する割込み管理を取り入れるかどうか決定することにより、あるいは命令シーケンスの実行中に、変動する処理時間も発生させる副プログラム（６）へのジャンプを取り入れるかどうか決定することにより、あるいは決定しないことにより、あるいはまた、以上の様々な可能性を組み合わせることにより、所望の保護の度合いを実現することができる。このようにして、副プログラム（６）は、本発明の変形例において、図８に示される通り、ランダムに呼び出される複数のシーケンス（６１、６２、６３．．．６ｎ）で構成され、各シーケンス（０、１、２、または２n-1）は、各ブランチに変動する処理時間をもたらす異なる命令のグループと、マイクロプロセッサの異なる動作を利用する。これらのシーケンスは、例えば、主プログラムが副プログラムへのジャンプを行った後で、ランダムに呼び出され、副プログラムは、段階（図８の６４と６５）で、メモリ（７）から得られた乱数値Ｖを、マイクロプロセッサ（１）の二つのレジスタ、例えばＲ１０とＲ１１にロードする。副プログラムは、この値Ｖを段階的に増分し、次に、副プログラムは、段階６６において、増分されたこの値（Ｖ＋１）を不揮発性メモリＮＶＭ（７）に記憶させるよう命令する。不揮発性メモリ（７）に記憶されたこの値は、後の利用に充てられる。次に、段階６７の副プログラムは、該副プログラム（６）のシーケンス（６１、６２、６３．．．６ｎ）の中から実行すべきプログラムシーケンスを指定し得る値ｒを得るために、Ｒ１０からｎビットの上位ビット、または下位ビットを抽出する。副プログラムの各シーケンスは、異なる処理をもたらす。例えば、シーケンス（０）は、まず段階６１１では、マイクロプロセッサのレジスタＲ１１の内容をレジスタＲ１２に転送することにある。段階６１２では、Ｒ１２の内容は、桁上げ値（ＣＡＲＲＹ）で加算され、次に、段階６１３では、レジスタＲ１１の内容とレジスタＲ１２の内容とで排他的論理和が実行され、その結果がレジスタＲ１２に入れられる。段階６１４では、プロセッサがＲ１２を段階的に減分する。段階６１５では、Ｒ１２がゼロに等しいかどうか決定するために、Ｒ１２の値に対してテストを行う。Ｒ１２＝０の場合には、プロセッサは、主プログラムの実行に戻る。逆の場合には、副プログラム（６１）は、段階６１６が行なわれ、その段階でレジスタＲ１０の内容のローテーションが行われる。次の段階は、レジスタＲ１０から定められた重みのｎビットを抽出して、次に、副プログラムの値ｒで定められたシーケンスの一つにアクセスすることにある。このようにして、例えば、段階（６ｎ１）では、Ｒ１０とＲ１１の値に乗算の結果をＲ１３とＲ１４に転送するシーケンス（２n-1）にアクセスできる。段階（６ｎ２）では、このシーケンスは、Ｒ１３とＲ１４のローテーションを行い、次に、段階（６ｎ３）では、Ｒ１３の内容をＲ１１に転送する。段階（６ｎ４）では、Ｒ１１は、段階的に減分され、次に、段階（６ｎ５）では、Ｒ１１の値に対してテストを行う。このテストは、Ｒ１１の内容が３であるかどうか決定することにある。もしそうであれば、主プログラムに戻り、もしそうでなければ、このプログラムは、段階（６ｎ６）で、Ｒ１０の左回りのローテーションが行なわれ、次に、命令（６７）が実行され、副プログラムの新たなシーケンスにアクセスする。
【００４０】
副プログラムを無相関クロックまたは割込み管理と組み合わせることを検討する場合、このような組合せにおいては、より簡単な処理をもたらす副プログラムで十分である。簡略化された副プログラムは、以下の命令で構成である。
【００４１】
ＭＯＶ  Ｂ，Ｒ２は、マイクロプロセッサのレジスタＢにレジスタＲ２の内容をロードすることである。
【００４２】
ＬＯＯＰ  ＤＣＸ  Ｂは、レジスタＢを値Ａだけ段階的に減分することである。
【００４３】
ＪＮＺ  Ｂ  ＬＯＯＰは、レジスタＢの値に対してテストを行い、その値がゼロと異なる場合には、ラベルＬＯＯＰに戻ることにある。
【００４４】
このシーケンスは、主プログラムの命令に戻す命令で終了するが、その命令は、副プログラム（６）へのジャンプの前に最後の命令を実行した直後に出されたものである。主プログラム（５）のある命令は、乱数発生器（２）で提供された乱数値を、副プログラム（６）へのジャンプの前に、あらかじめレジスタＲ２にロードする。従って、副プログラムを実行すると、異なる持続時間が常に発生する。
【００４５】
持続時間の異なる副プログラムの別の実施例では、一連の命令が記憶されている副プログラム（６）に対応するプログラム記憶領域を定める。ＡＤＣ、ＳＵＢ、ＡＮＡ、ＭＯＶなどのように短いマシンサイクル数を要する命令に対して、好ましくは、異なるマシンサイクル数を要する命令を選択し、例えばＪ、ＣＡＬＬ、ＲＥＴ、ＲＳＴ、ＰＣＨＬ、ＩＮＸ等の命令を用いて実行する。それゆえ、この記憶領域には、互いにマシンサイクル数の異なる実行時間を要するいくつかの命令が入っている。主プログラム（５）には、インデックスがレジスタＲ２の内容に一致し、かつ、アドレスが記憶域（６）の第一のアドレスに一致するインデックス付きアドレスへのジャンプ命令が含まれる。従って、主プログラム（５）のこの命令を実行することにより、プロセッサ（１）は、実行時間がアドレス指定位置に応じて異なるような命令をランダムにアドレス指定する。周知のように、乱数発生器（２）は、最初に、ある変数で初期設定される。この初期変数は、不揮発性メモリ（７）に入っており、例えば、マイクロプロセッサ（１）の停止前に乱数発生器（２）で発生した最後の乱数値で構成される。従って、実行しようとするプログラムで制御されるマイクロプロセッサは、例えば、レジスタＲ２またはＲ８のローディングによるか、あるいは副プログラムの呼出しにより、このプログラム命令実行のシーケンスの無相関手段を、このプログラムを介してトリガできる。
【００４６】
図２は、本発明の簡略化した別の実施変形例を示す。この変形例では、レジスタ（８）の内容は、マルチプレクサ（１８）を制御して、外部クロックＣＬＫＥがプロセッサ（１）に送られるものか、あるいはただ単に、無相関クロックＣＬＫ２がＣＰＵ（１）で利用されるものかを決定する。このレジスタ（８）では、持続時間が異なる命令実行シーケンスを生成しながら、所定の時点にセキュリティモードの始動を決定するように作成されている主プログラム（５）のある命令の実行により、バス（３０）によるローディングが行われる。乱数発生器（２）は、バス（３１）により、不揮発性メモリ（７）と接続されており、例えば、モノリシック回路を新たに接続する際に、乱数発生器が、前の初期値とは異なる値で再初期設定されるように、発生した最後の値を記憶させることができる。このバス（３１）は、場合によっては、プロセッサ（１）で制御されることもある。別の変形例では、メモリ（７）への書込みは、ワイヤド論理で制御できる。
【００４７】
別の実施例では、図４Ａで示されるように、クロック回路の出力に可変移相回路（４５）を設けることができる。この移相回路は、例えば、回路（１１）から発する信号ＦＲＣ、あるいは回路（９）の出力（９５）から提供される再較正信号ＦＲＣでタイミングを取るシフトレジスタＤ１〜Ｄ５で構成され、分周器（４５２）で分周される信号Ｉ（出力（２２）から供給される）を移相する。移相回路（４５）の出力は、マルチプレクサ（４５１）ＭＵＸで構成され、このマルチプレクサにより、直接的には乱数発生器（２）から、また、間接的にはバス（３）を介して主プログラム（５）か、または副プログラム（６）からロードされるレジスタＲＭの内容に応じて、シフトレジスタの出力信号Ｑ１、Ｑ２、．．．．Ｑ５のいずれか一つを抽出することができる。この場合、出力で送り出されるクロックＳの前縁は、シフトレジスタの中央段で供給される中央パルスに対して、乱数によって定まる値だけ遅れるか、または進み、その分だけ、実行中のプログラムの命令の実行シーケンスを遅らせるか、または進ませる。
【００４８】
別の実施例では、乱数発生器と移相回路は、とくに重要ないくつかの周期の間、常時利用できるが、このような段階の間、プロセッサは、ランダムなタイミングに合わせられる。なぜなら、各クロックパルスを隔てる時間間隔は様々であって、標準的なプロセッサの場合のように一定ではないからである。
【００４９】
プロセッサで実行されるプログラムは、実際のセキュリティオペレーティングシステムでプロセッサ（１）の動作が制御されるように編成可能であり、このオペレーティングシステムで、プロセッサが実行するプログラムの種類に応じて利用すべきスクランブルのタイプが決まる。このような場合、乱数発生器、較正装置、移相回路の割込みや制御、および主プログラムと副プログラムの開始により生じる様々な信号を、適切に管理するのは、このオペレーティングシステムである。副プログラムは、該副プログラム専用の時間を利用し、特に主プログラムに役立ち得る処理を実行することにより、単純な時間のひきのばしとは別の役目を実現するために利用できる。従って、このような処理は、例えば、後で主プログラムで利用される計算の準備として構成できる。もちろん、プロセッサがマルチプログラミングとして機能し、それらのアプリケーションプログラムが、いずれも主プログラムと見なせる時には、本発明のメカニズムを容易に一般化することができる。上記の乱数発生器とクロック移相回路は、個々の実施上の問題を有するものではなく、本発明とは関係しない他の用途にも使用されるものであり、当業者には周知である。
【００５０】
割込みを利用しない本発明の第五の簡略化実施例も実現することができる。主プログラムを保護することが必要な時には、主プログラムはそれ自体、様々なシーケンスをスクランブルするように、該主プログラムで選択される時点か、または開始時点か、あるいは処理中に、ランダムな長さの処理を生成する副プログラムを始動させる。
【００５１】
次に、本発明を実施し得る様々な回路を、その他の図を参照して説明する。図７Ａと図７Ｂに示される乱数発生器は、例えば、それぞれ、二つの入力を有する排他的論理和ゲーム（２３）と、それに接続されたＤタイプのフリップフロップ（２４）であって、その出力（Ｑ）が次のセルの排他的論理和ゲートの二つの入力の一つに接続されているものから成るセルのグループ（Ｂ０〜Ｂ７）で構成される。排他的論理和ゲートの第二の入力は、初期化ローディングできるよう、バス（３）から到来するデータ入力信号を受け取る。セル（Ｂ０）と（Ｂ３）は、最後のセル（Ｂ７）からのフィードバック信号（２５）を受け取る。最後のセル（Ｂ７）の出力（２２）は、ランダムに変わる周期性を持ったパルス信号（Ｉ）を送出する出力でもある。次に、この信号（Ｉ）は、図３Ａに示される較正回路（９）で使用される。図３Ｂは、図３Ａの較正回路（９）の入力信号と出力信号のシーケンスを示している。この較正回路は、三つの入力を有するＮＡＮＤゲート二つ（９１、９１）から成り、それぞれ一つの入力に、乱数発生器（２）の出力（２２）からの信号Ｉを受け取る。第一のＮＡＮＤゲート（９１）は、ＪＫタイプのフリップフロップ（９３）の出力（Ｑ２）を受け取るが、一方、別のゲート（９０）は、このフリップフロップ（９３）の反転出力（ＮＱ２）を受け取る。フリップフロップ（９３）は、そのクロック入力にクロック信号ＦＲＣを受け取り、回路内の内部クロックを形成する。この内部クロックは、例えば、図６に示される回路で発生させる。フリップフロップ（９３）のＪとＫの入力は、「１」の論理レベルを表す供給電圧に接続される。内部クロック信号ＦＲＣは、インバータ（９２）により、ＮＡＮＤゲート（９０、９１）の各第三の入力にそれぞれ送られる。第一のＮＡＮＤゲート（９０）の出力は、第二の論理フリップフロップ（９４）の「１」セット入力に送られ、第二のＮＡＮＤゲート（９１）の出力は、第二のフリップフロップ（９４）のゼロリセット入力に送られる。第二のフリップフロップ（９４）は、そのクロック入力と入力（Ｊ）が、「１」のレベルを表す供給電圧に接続され、また、その入力（Ｋ）は、ゼロのレベルを表す供給電圧に接続されている。第二のフリップフロップ（９４）の出力（Ｑ１）は、接続線（９５）により供給される信号ＣＬＫ２をマルチプレクサ（１８）に送る。内部クロックＦＲＣは、図６の回路で規定される最小パルス幅Ｔｍを有する周期パルス信号を接続線（１１１）に送る。回路（１１）は、例えば、一連の（この場合、五つ）インバータ（１１１〜１１５）で構成されており、これらのインバータはそれぞれ、定められた伝播時間、例えば１０ナノ秒の伝播時間を持つことから、出力ＦＲＣにおいて、５０ナノ秒のパルスを得ることができる。この出力ＦＲＣは、第一のインバータ（１１１）の入力に接続線（１１６）によりフィードバックされ、また、第一のインバータ（１１１）の入力には、抵抗（１１７）を介して、５ボルトの供給電圧も供給される。パルス幅は、５０ナノ秒に選択されるが、インバータのゲート数を変えて、Ｔｍ値を変化させることは言うまでもない。図３Ｂに示されるように、このＴｍ値は、図３Ａの論理回路（９）で使用され、ランダムに変わる周期性を持ったパルス信号（Ｉ）から、パルス信号ＣＬＫ２を発生させる。ただし、このパルス信号ＣＬＫ２は、互いに幅の異なるパルスが最小値Ｔｍを有し、かつ、その周期性も異なっており、外部クロックＣＬＫＥに対して非同期化されている。なぜなら、内部クロックは、集積回路に電圧を印加すると直ちに動作し、該クロックの初期周期性が外部クロックの周期性と異なる場合には、スタート時に、クロックが同期化される可能性は全くないからである。較正装置（９）の信号は、内部サイクルを実行するために、プロセッサに必要な最小時間Ｔｍの少なくとも二倍に等しい周期を有している。信号ＣＬＫ２の各前縁は、少なくともＴｍ値だけ互いに離れているが、前縁の位置の前縁の正確な持続時間は予測不可能である。
【００５２】
実施変形例がどのようなものであれ、主プログラムは、変形例に応じて、乱数発生器か、ランダムクロックか、副プログラムか、ランダム割込みか、あるいはこれら少なくとも二つの装置の組合せによって定まる予測不能なシーケンスに従って実行される。主プログラムがセキュリティの面で重要でない機能を実行する時には、プログラムは、例えば外部クロックＣＬＫＥに依存して、その結果を外部に与えるか、あるいはまた、処理時間を最適化するように無相関割込みをマスクすることができる。セキュリティ機能を使うと直ちに、主プログラム（５）は、様々な動作信号を「スクランブル」するように、ランダムクロックまたは無相関割込みまたは双方を有効とすることにより、特に主プログラムに対してクロックを同期解除することにより、または副プログラムを呼出すことにより、ランダムモードでの動作を可能とする。
【００５３】
乱数発生器（２）として、例えば、異なる周期を有するフィードバック式カウンタを使用することができる。このカウンタは、不揮発性メモリ（７）に記憶させた「種」（情報）により、初期設定される。プロセッサが始動する時、カウンタは、初期値として記憶させた値を考慮に入れる。計算中、または計算の終了時に、不揮発性メモリ（７）を、種の役目を果たす新たな値で更新して、次の初期設定の時に、カウンタを初期設定する。割込み発生回路（４）は、例えば、発生した数が、プログラムのいくつかのデータと同等であるような特徴をいくつか有する時に、上記の割込みパルスを発生できるように構成されている。この回路（４）はまた、一つまたは複数のカウンタの一ビットないし数ビットの値を取ることもできる。図５に示されるように、暗号アルゴリズム（６９）を利用して、あるいは上記の「種」（情報）で初期設定されるハッシュ関数を利用して、非常に優れた乱数発生器を実現することも可能である。このような場合、乱数発生器は、プロセッサ（１）で実行されるアルゴリズムを使用するプログラムの形式を取る。例えば、不揮発性メモリ（７）に記憶した変数、また他方ではバッファレジスタ（４１）に記憶させる結果を生成するためのキーを受け取って暗号アルゴリズムを使用するプログラムの形式を取る。次に、バッファレジスタに記憶させた結果は、ソフトウェアまたはハードウェアのデコーダ装置（４２）で処理されて、無相関クロック信号ＣＬＫ２、あるいは、プロセッサ（１）向けの割込み信号を発生させる。この乱数発生器は、上記の様々な乱数を発生させるために使用される。この乱数発生器を実現する別の仕方は、「ノイズ」と呼ばれるダイオードの端子に発生する電圧を増幅し、ノイズパルスがあまりにも急激に動作を妨害することのないように、低域フィルタに通して信号を成形することにある。
【００５４】
クロック移相回路では、上記のものとは別の可能性が存在する。例えば、プロセッサのクロックの１０倍の大きさのクロックで制御されるシフトレジスタがある。このレジスタが１０個のフリップフロップから成っている場合には、十の入力と一つの出力を有するマルチプレクサを用いてプロセッサで選択できる位相の互いに異なる十個のパルスが使える。マルチプレクサの出力は、前述の通り、プロセッサの内部クロック信号を出すために使用される。
【００５５】
別の実施例は、上記の乱数発生器と同一タイプの回路を使用して、カウンタの様々な段階からパルスを抽出することにある。このような場合、プロセッサは、時間的にランダムに配列されたパルスによりタイミングが取られる。
【００５６】
別の実施例は、乱数発生器の信号を利用して、シフトレジスタから、これらのパルスを抽出することにある。このようなメカニズムに精巧するために、きわめて多数の組合せが可能であるが、本発明の原理は常に適用される。
【００５７】
図１の実施変形例は、最も完成されたものである。マイクロプロセッサタイプまたはマイクロコンピュータタイプのモノリシック回路は、図に示される要素の一つまたは複数、あるいは任意の組合せが組み込まれることは、言うまでもない。
【００５８】
従って、変形例により、このモノリシック回路には、マイクロプロセッサ、乱数発生器、内部クロック（ＦＲＣ）、および無相関クロックを形成する較正回路が組み込まれる。
【００５９】
別の変形例では、モノリシック回路には、マイクロプロセッサ、乱数発生器、割込み発生回路が組み込まれる。
【００６０】
別の変形例では、モノリシック回路には、マイクロプロセッサ、副プログラム、および無相関、較正クロック回路が組み込まれる。
【００６１】
別の変形例では、モノリシック回路には、マイクロプロセッサ、無相関、較正クロック回路、および割込み回路が組み込まれる。
【００６２】
モノリシック回路のその他の変形例では、マイクロプロセッサの代わりに、マイクロコンピュータを用いる。
【００６３】
モノリシック集積回路のその他の変形例では、マイックロプロセッサの代わりに組合せ論理を用いることにより、特定の用途に対して、限られた数の命令を実行することができる。このような場合に、同一の安定化メカニズムが集積回路に用いられることは言うまでもない。
【００６４】
当業者に理解できるその他の変形例も、本発明の範囲に属している。
【図面の簡単な説明】
【図１】本発明の第一の実施例の電子回路の基本図を示す。
【図２】本発明の簡略化した第二の実施変形例を示す。
【図３Ａ】較正回路の実施例を示す。
【図３Ｂ】較正回路のシーケンス論理図を示す。
【図４Ａ】移相回路の実施論理回路図を示す。
【図４Ｂ】上記回路の信号シーケンスの図を示す。
【図５】本発明の第三の実施変形例を示す。
【図６】内部クロックの実施論理回路図を示す。
【図７Ａ】乱数発生器の実施論理図を示す。
【図７Ｂ】乱数発生器の各セルの実施論理図を示す。
【図８】ランダムに選んだ副プログラムシーケンスの一例を概略的に示す。
【図１】
0003713515.tif 000002
【図６】
0003713515.tif 000003
【図２】
0003713515.tif 000004
【図５】
0003713515.tif 000005
【図３Ａ】
0003713515.tif 000006
【図３Ｂ】
0003713515.tif 000007
【図４Ａ】
0003713515.tif 000008
【図４Ｂ】
0003713515.tif 000009
【図７Ａ】
0003713515.tif 000010
【図７Ｂ】
0003713515.tif 000011
【図８】
0003713515.tif 000012