(57)【特許請求の範囲】
【請求項１】
主プロセッサ（１）と、
主タスクを実施する主プロセスを構成するための主プログラム（Ｐ１）を実行するオペレーションシステムと、
少なくとも一つの副プロセッサ（２）とを含み、
主プロセッサ（１）および副プロセッサ（２）が、少なくとも一つの電源（６）に接続されているインテリジェントＩＣであって、
前記少なくとも一つの副プロセッサ（２）が、副タスクを実施する少なくとも一つの副プロセスを構成するための少なくとも一つの副プログラム（Ｐ２）を同時に実行可能であり、主プロセッサ（１）および副プロセッサ（２）の一方が、それぞれ主プログラムおよび副プログラムによって、主プロセッサおよび副プロセッサの少なくとも他方を制御するように構成されており、
前記インテリジェントＩＣが、前記主プロセッサを介して、および／または前記主プロセッサから、前記少なくとも一つの副プロセッサを作動させる手段を含んでおり、該少なくとも一つの副プロセッサが、プロセスシグネチャが異なる一つまたは複数の副プロセスの副タスクを、連続または間欠的なスクランブルを実施するために、主プロセスの主電力消費に重ねられる一つまたは複数の副プロセスの副電力消費を前記少なくとも一つの電源に連続または間欠的に引き起こしながら、主プロセスの主タスクと同時に実行することを可能にすることを特徴とする、インテリジェントＩＣ。
【請求項２】
主プロセッサおよび副プロセッサが、二重アクセスレジスタ（５）を介して相互接続される、請求項１に記載のインテリジェントＩＣ。
【請求項３】
作動手段が、インテリジェントＩＣの主プロセッサ（１）のオペレーションシステムにより起動される、請求項１または２に記載のインテリジェントＩＣ。
【請求項４】
前記インテリジェントＩＣが、２つのプロセッサ（１、２）の少なくとも一方によりアクセス可能であって、少なくとも一部にオペレーションシステムを含む、主プロセッサ（１）専用の少なくとも一つの主メモリ（１２、１３）と、副プロセッサ（２）専用の副メモリ（２１、２２）とを含む、請求項１から３のいずれか一項に記載のインテリジェントＩＣ。
【請求項５】
前記インテリジェントＩＣが、主プロセッサと副プロセッサ間の少なくとも一つの通信バス（３、４）と、それらプロセッサのそれぞれのメモリ（１１、１２、１３、２１、２２）と、入出力回路（１４）とを有する、請求項１から４のいずれか一項に記載のインテリジェントＩＣ。
【請求項６】
主プロセッサおよび副プロセッサが物理要素を有し、物理要素のいくつかは、２つのプロセッサに共通であり、容易に認識可能な物理機能ブロックのレイアウトを避けるべく、主プロセッサの物理要素が副プロセッサの物理要素と交互配置される、請求項１から５のいずれか一項に記載のインテリジェントＩＣ。
【請求項７】
副プログラム（Ｐ２）が、主プログラム（Ｐ１）の作業スペースよりも小さい作業スペースを使用する、請求項１から６のいずれか一項に記載のインテリジェントＩＣ。
【請求項８】
前記インテリジェントＩＣが、主プロセッサ（１）と副プロセッサ（２）との間に通信手段を含む、請求項１から７のいずれか一項に記載のインテリジェントＩＣ。
【請求項９】
前記インテリジェントＩＣは、副プロセッサ（２）が動作しているか否か主プロセッサ（１）が知ることができるようにする２つのプロセッサ間の通信手段（５０、５１、Ｂ１、Ｂ２）を含む、請求項１から８のいずれか一項に記載のインテリジェントＩＣ。
【請求項１０】
２つのプロセッサ間の通信手段により、主プロセッサ（１）が、副プロセッサ（２）の認証を実施可能である、請求項８または９に記載のインテリジェントＩＣ。
【請求項１１】
副プロセッサ（２）の作動手段が、
主プロセッサ（１）と主プログラム（Ｐ１）、
割り込みシステム（１５）、
タイムカウンタ（Ｒ３）、
のうちの少なくとも一つの要素により制御される、請求項１から１０のいずれか一項に記載のインテリジェントＩＣ。
【請求項１２】
前記インテリジェントＩＣが、少なくとも２つのプロセッサを含んでおり、少なくとも一つの第一のバスが、副プロセッサの各々にＲＡＭおよびＲＯＭを接続し、第２のバスが、主プロセッサにＲＡＭ、ＲＯＭ、および不揮発性メモリを接続する、請求項１から１１のいずれか一項に記載のインテリジェントＩＣ。
【請求項１３】
前記インテリジェントＩＣが、複数のプロセッサを含んでおり、各プロセッサが、これらプロセッサ間の同一の多重化された通信バスに接続されており、ＲＡＭ、ＲＯＭ、および不揮発性メモリアレイが、当該多重化された通信バスに接続されており、該共通の多重化された通信バスへのアクセスについてのコンテンションが、調停回路（８）により管理される、請求項１から１２のいずれか一項に記載のインテリジェントＩＣ。
【発明の詳細な説明】
【０００１】
マイクロプロセッサ、マイクロコンピュータまたはインテリジェントＩＣが、メモリに記録されたプログラムの命令を、内部または外部で、マイクロプロセッサ、マイクロコンピュータまたはインテリジェントＩＣに供給されるクロック信号を参照する１つまたは複数のタイミング信号と同期して逐次実行することが既知である。インテリジェントＩＣとは、そのために特別に開発された限られた数の命令または機能の実行に特定の有限の回路を含むＩＣを意味する。
【０００２】
こうしたプログラムの実行の様々な段階を時間毎に追跡することが可能であることが分かっている。何故なら、命令の実行が、このプログラムにより予め決められたプロセスに従って、一般には、プロセッサに周期的に一定のタイミングを与えるクロック信号と同期して、逐次実行されるからである。事実、全てのプログラムは、一連の命令によって表され、この一連の命令は、予め分かっている順序で、逐次実行されなければならない。一連の命令が、所定のプロセスに従って実行されるので、各命令の最初と終わりは、完全に分かっている。当該所定のプロセスは、高度な解析手段に対して認識可能な「シグネチャ」と呼ばれるものを持っている。このプロセスのシグネチャは、たとえば、実行される命令または命令シーケンスが使用する、各種電気回路の消費電力の測定信号から得られることが知られている。従って、起動しているプログラムは、そのシグネチャが分かっているこうした一連の所定の命令から構成されるので、原則としては、プロセッサの処理装置で所定の瞬間に実行される命令シーケンスの性質を知ることが可能である。
【０００３】
このような手段により、実行される特定の命令ならびに、この命令により使用されるデータがどれなのかを決定することができる。
【０００４】
マイクロプロセッサまたはマイクロコンピュータにおけるプログラムの実行の詳細を観察できるこうした可能性は、マイクロプロセッサまたはマイクロコンピュータが高度なセキュリティ用途で用いられる場合には、重大な欠点になる。実際、悪意を持った個人は、かくしてプロセッサの連続的な状態を知り、これらの情報を利用して内部処理における幾つかの重要な結果を知ることがある。
【０００５】
たとえば、所定の作動が、内部秘密情報の認証の一部、メッセージの解読、あるいは幾つかの情報の完全性のチェックなど、所定の保護された操作の結果に応じて、異なる瞬間に発生するようなことが想像できる。また、考慮された瞬間に応じて、たとえばプロセッサに作用したり、あるいは物理的な解析により幾つかのレジスタの値を得たりし、それによって、たとえ使用されている秘密暗号キーに基づく暗号計算を用いた場合でも、秘密情報の結果または内容に関する情報を入手可能である。
【０００６】
ランダムなクロックパルスを発生する回路を備えることにより、保護されたマイクロコンピュータに第１の改良を施す装置が既知である。かくして、すぐに事象の同期化を実施することができなくなって、事象の発生の予測がしにくくなるから、解析によって事象を観察することを特に困難にさせる。
【０００７】
しかしながら、このタイプの解決方法には多くの不都合がある。
【０００８】
まず第１に、このような回路の設計は、マイクロコンピュータと同じように複雑な回路全体でランダムな機能をシミュレートできないために難しくて面倒であり、また、製造終了時にこれらの回路のスクランブル化された挙動をテストすることは、それ以上に困難である。一連のランダムなクロックパルスは、実際、回路のテストをシミュレートすることが非常に難しいが、しかし、特に内部バスおよびレジスタでの信号切り換え中は、プロセッサの論理回路全体の全挙動を制御することが、さらに難しい。
【０００９】
また、ダミーメモリの使用に基づいた新しいアーキテクチャを導入した別の装置が既知であり、マイクロプロセッサは、外界に対して全く同期しないようにダミーメモリを使用したり、あるいは使用しなかったりする。このようにして、事象およびシグネチャの観察が、特に難しくされている。
【００１０】
だが、ランダムなクロックまたはダミーメモリの使用は、たとえそれらが有効な改良を提供するものであっても、マイクロプロセッサの基本的な挙動を変えることはない。マイクロプロセッサは、相次いで送られる命令が、異なるプロセスの一部をなす場合でも、常に逐次的である。従って、不正な命令を「フィルタ処理」して、適正な命令だけを保存し、それによってマイクロプロセッサから送られる情報を利用することは、理論的に可能であるにとどまる。
【００１１】
別の不都合は、ダミーシーケンスにより割り込みされたプログラムの実行内容をバックアップして元の状態に戻さなければならないが、このようなバックアップに必要なメモリリソースが無視できないものであることにある。
【００１２】
本発明の目的の１つは、インテリジェントＩＣに上記のタイプの解析を禁止する手段を備え、より一般的には、プロセッサまたは主処理ユニットから送られる信号のあらゆる解釈を妨げることにある。このタイプのＩＣは、「ＭＵＭＩＣ（Ｍｕｌｔｉ  Ｕｎｔｒａｃｅａｂｌｅ  ＭＩＣｒｏｃｏｍｐｕｔｅｒ）」と称される。
【００１３】
この目的は、インテリジェントＩＣが、タスクを実施する主プロセスを構成するために、主プログラムを実行する主プロセッサおよびオペレーションシステムと、タスクを実施する少なくとも１つのプロセスを構成するために、少なくとも１つの副プログラムを同時に実行可能な少なくとも１つの副プロセッサと、プロセッサ間で共通な電源回路と、連続または間欠的なスクランブルを実施するために、主プロセスの電力の乱れに重ねられる電力の乱れを、連続的または間欠的に電源回路に誘導しながら、同じ電力で動作シグネチャが異なる１つまたは複数の副プロセスが、主プロセスと同時に実施されることを確実にする手段とを有することにより達せられる。
【００１４】
別の特徴によれば、主プロセッサまたは副プロセッサが、それぞれ、保護されたマイクロプロセッサまたはマイクロコンピュータである。
【００１５】
別の特徴によれば、これらの手段は、インテリジェントＩＣの主プロセッサ（１）のオペレーションシステムにより起動され、上記手段により形成される付加的な安全性が、外部からアクセス不能なＩＣの場所に配置されたオペレーションシステムの主プロセッサによる実行の結果生じる決定だけに依存するようにされている。
【００１６】
別の特徴によれば、外部からアクセス不能で、かつ２つのプロセッサの少なくとも一方によりアクセス可能な、少なくとも一部にオペレーションシステムを含む主プロセッサ専用の主メモリと、副プロセッサ専用の副メモリとを有する。
【００１７】
別の特徴によれば、プロセッサ間の少なくとも１つの通信バスと、プロセッサ用の各メモリと、入出力回路とを有する。
【００１８】
別の特徴によれば、インテリジェントＩＣは、１つまたは複数の基板上に分散された論理回路を用いて構成され、２つのプロセッサの物理的なレイアウトが、容易に認識される機能ブロックを用いずに、例えば物理的な交互配置による別個の論理的な構造により構成される。
【００１９】
別の特徴によれば、副プロセッサが、主プロセッサの動作シグネチャを最小化または無効にする副プロセスのタスクを実行する。
【００２０】
別の特徴によれば、中間の処理結果が、決してプロセスの途中で現れないように、副プロセッサが、主プロセッサにより実行される主プロセスのタスクと相関関係にある副プロセスのタスクを実行する。
【００２１】
別の特徴によれば、副プログラムが、主プログラムよりも小さい作業スペースを使用する。
【００２２】
本発明の第２の目的は、副プロセスが操作している場合だけ、主プロセスが動作可能であるようにすることにある。
【００２３】
この第２の目的は、インテリジェントＩＣが、主プロセッサと副プロセッサとの間に通信手段を有することによって達せられる。
【００２４】
別の特徴によれば、２つのプロセッサ間の通信手段により、主プロセッサは、副プロセッサが動作しているか否か知ることができる。
【００２５】
別の特徴によれば、２つのプロセス間の通信手段により、主プロセッサが、副プロセッサの認証を実施可能である。
【００２６】
別の特徴によれば、副プロセッサの認証または動作テストが、主プロセッサによる処理中に実施される。
【００２７】
別の特徴によれば、ニ次プロセッサの起動手段が、主プロセッサとその主プログラムか、割り込みシステムか、タイムカウンタか、あるいはこの３つの組み合わせにより制御される。
【００２８】
本発明の第３の目的は、副プロセスが、主プログラムとは全く異なるプログラムを実施するようにしていることにある。
【００２９】
この第３の目的は、主プロセッサにより実行される主プロセスのタスクと相関関係になく、副プロセスのタスクを実行することにより達成される。
【００３０】
別の特徴によれば、副プロセッサが、主プロセッサの動作シグネチャを最小化または無効にする副プロセスのタスクを実行する。
【００３１】
本発明の第４の目的は、副プログラムが使用するプログラムのシグネチャが、主プロセッサから送られる結果とは反対の結果を誘導することにある。
【００３２】
この第４の目的は、２つのプロセスの組み合わせが、主プロセッサの動作シグネチャを隠す副プロセッサの動作シグネチャを供給するように、副プログラムが、主プロセスと相関関係にあるプロセスを実施することで達成される。
【００３３】
別の特徴によれば、、中間の処理結果が、決してプロセスの途中で現れないように、副プロセッサが、主プロセッサのタスクと相関関係にあるタスクを実行する。
【００３４】
本発明の第５の目的は、新しい半導体技術を作り出したり、あるいは新しい製造方法を用いずに、有効と認められた回路を使用することによってオリジナルなアーキテクチャを実現することにある。
【００３５】
この第５の目的は、副プロセッサが、主プロセッサに代替し、また逆に、主プロセッサが、副プロセッサに代替することによって達成される。
【００３６】
別の特徴によれば、副プロセッサが、プロセスの同期と、各プログラムを実行する各プロセッサから送られる２つのデータ値の比較とにより、主プロセッサのタスクと相関関係にあるタスクを実行する。
【００３７】
別の特徴によれば、副プロセッサが、主プログラムから副プログラムを論理的に演繹することにより、主プロセッサのタスクと相関関係にあるタスクを実行する。
【００３８】
別の特徴によれば、インテリジェントＩＣが、少なくとも２つのプロセッサを含み、各プロセッサ（１、２）が、各プロセッサ用のＲＡＭ、ＲＯＭ、および主プロセッサ用の不揮発性メモリが接続されるバス（３、４）をそれぞれ有する。
【００３９】
別の特徴によれば、インテリジェントＩＣが、複数のプロセッサを含んでおり、各プロセッサが、当該プロセッサ間の同一の多重化通信バスに接続されており、ＲＡＭ、ＲＯＭおよび不揮発性メモリアレイが、当該多重化通信バスに接続されており、共通の多重化された通信バスのコンテンションが、調停回路（ａｒｂｉｔｒａｔｉｏｎ  ｃｉｒｃｕｉｔ）により管理される。
【００４０】
別の特徴によれば、副プロセッサが、主プロセッサにより実行されるプログラムと、相関関係にあるプログラムか、または、相関関係にないプログラムを、順序には関係なく順次実行する。
【００４１】
本発明の他の特徴および長所は、添付図に関してなされる以下の説明を読めば、いっそう明らかになるだろう。
【００４２】
本発明が目的とするインテリジェントＩＣは、ＭＵＭＩＣ（Ｍｕｌｔｉ  Ｕｎｔｒａｃｅａｂｌｅ  ＭＩＣｒｏｃｏｍｐｕｔｅｒ）と称されており、図１に関して、その論理的な構成の第１の変形実施形態を説明する。この論理的な構成は、後述するように、物理的な構成またはトポロジーのレイアウトを示すものではない。このインテリジェントＩＣは、主プロセッサ（１）および副プロセッサ（２）から構成されており、各プロセッサは、各通信バス（アドレス、データおよびコマンド）（３、４）により、各メモリ（１２、１３、２２）に接続されている。これらのメモリは、主プロセッサ（１）および副プロセッサ（２）と、たとえば不揮発性メモリＲＡＭ（１１、２１）等の作業レジスタとにより、それぞれ実行される主プログラム（Ｐ１）および副プログラム（Ｐ２）を含む。副プロセッサに接続されるメモリは、ランダムアクセス「ダミー」メモリ（ＤｕｍＲＡＭ２１）と、読み取り専用「ダミー」メモリ（ＤｕｍＲＯＭ２２）とであり、副プロセッサ（２）が、主プロセッサ（１）のタスクに重ねられるタスクを実行できるようにする。主プロセッサのオペレーションシステムは、たとえばＲＯＭ（１２）の外部からアクセス不能であるが、２つのプロセッサの少なくとも一方からはアクセス可能な部分に含まれている。各プロセッサ（１、２）は、その固有のシーケンサ（１９または２０）を有する。本発明によるＩＣはまた、入出力回路（１４）を含んでおり、この回路は、単一バスに接続されるか、または変形実施形態によって複数のバスを備えるように回路を構成する場合は、主プロセッサのバスに接続され、また、スイッチによって、あるいはスイッチがない場合は接続装置によって、外界に接続され、端末から信号を受信する。レジスタ群（Ｒ１、Ｒ２、Ｒ３）および割り込み回路（１５）は、後述する変形実施形態に対応する機能変形の１つを実施するためにこれを必要とするプロセッサに付加可能である。３つの素子（Ｒ１、Ｒ２、Ｒ３）は、割り込み発生回路（１５）に接続され、割り込み発生回路は、プロセッサ（この場合には主プロセッサ）の割り込み入力に接続される。
【００４３】
主プロセッサ（１）のオペレーションシステムは、マスター用主プロセッサとスレーブ用副プロセッサの変形実施形態の場合には一つであり、主プロセッサによりアクセス可能なＲＯＭ（１２）に配置されている。プロセッサが役割交換可能である変形実施形態で必要とされる場合、第２のオペレーションシステムまたは同じオペレーションシステムが、副プロセッサにアクセスできるようにしてもよく、たとえばアクセス権用トークン（ｊｅｔｏｎ）を交換し、プロセッサが移る前にこのアクセス権を検査する。同様に、特に役割交換の場合、すなわち図２ａの変形実施形態では、果たすべき役割のためにこれを必要とする各プロセッサに、割り込み回路を付加することもできる。
【００４４】
主プログラム（Ｐ１）は、不揮発性メモリ（１３）に含まれており、ダミーメモリの使用は、インテリジェントＩＣの少なくとも２つのプロセッサ間で同時に実行される場合があることを考慮すると、フランス公開特許出願第２７６５３６１号に記載されたものに対応する。このような場合、２つのタイプのメモリ（ダミーメモリとその他のメモリ）は、実際にはバスが多重化されていても、同じ時間中に利用される。
【００４５】
ＩＣは、また、ＩＣの少なくとも１つのバスに接続される入出力インターフェースを含み、このインターフェースは、パラレル／パラレルまたはパラレル／シリアルタイプにすることができる。変形実施形態では、主プロセッサ（１）の作業用ＲＡＭ（１１）が、副プロセッサ（２）のダミーＲＡＭ（ＤｕｍＲＡＭ２１）と統合可能であって、図５に示したような同一のダブルポートメモリを形成する。これらのダブルボートメモリ（１１−２１）は、第１のアドレスレジスタの対（１１０、２１０）を使用することにより、アドレス信号（ＡＤＤ０、ＡＤＤ１）を受信して主プロセッサ（１）または副プロセッサ（２）によるアクセスを可能にする。これらのダブルポートＲＡＭ（１１−２１）はまた、第１のデータレジスタの対（１１１、２１１）を使用しており、主プロセッサ（１）または副プロセッサ（２）によるデータ読み込みアクセスを可能にする。読み込みデータレジスタの出力は、データ信号（Ｄ０、Ｄ１）を送る増幅器（１１３、２１３）に接続される。さらに、これらのダブルポートＲＡＭ（１１−２１）はまた、第２のデータレジスタの対（１１２、２１２）を使用しており、主プロセッサ（１）または副プロセッサ（２）によるデータ書き込みアクセスを可能にする。このタイプのダブルポートメモリのアーキテクチャは、モトローラまたはテキサスインストルメンツといったベンダから入手できる。同期または非同期のダブルポートメモリは、２つの個別経路により、メモリアドレスの領域に読み込みまたは書き込みアクセスを可能にする。こうしたダブルポートメモリは、特に、異なるシステム間で同期プロセスを制御するために使用される。プロセスを同期化するためのダブルポートメモリの使用は、プロセッサが、２つの独立した経路（アドレスおよびデータ）を介して、同期または非同期で、メモリにアクセスでき、同時に使用可能なデータを共有できるという事実に基づいている。
【００４６】
２つのプロセッサ（１、２）、バス（３、４）およびメモリ（１１−２１；１２、１３、２２）は、共通の電源回路（６）により供給され、一方のプロセッサの電力利用と他方のプロセッサの電力利用との間の違いを最大限低減するようにしている。半導体技術の進歩とともに、今日では実際、面積が数ｍｍ２にすぎない２つのプロセッサを同一チップに配置し、従って、経済的に将来性のある解決方法を得ることが可能であり、第２のプロセッサの追加費用は、特にＲＡＭおよびプログラマブル不揮発性メモリ（ＮＶＭ）が占有する面積と比較して、ごくわずかになる。プロセッサを単一の独自の設計（デザイン）のブロックに統合可能な収容区分けツールを使用することが提案されている。当業者は、通常、ＲＡＭ、ＲＯＭ、プログラマブル不揮発性メモリを備えた同一基板に、２つのプロセッサをレイアウトしなければならない場合、さまざまな機能をまとめ、最適経路を探して、タイミングの制約を遵守しようとする。そのため、一定のアーキテクチャおよびレイアウトを採り入れることになるが、このレイアウトは、図７に示したものにきわめて近いものになり、２つのプロセッサ（ＣＰＵ１、ＣＰＵ２）は、互いに近傍に配置され、クロック回路（Ｈ）は、プロセッサの近傍に配置される。入出力を構成する周辺回路（１４）も同様にプロセッサに隣接しており、これは、専門用語で論理「グルー（ｇｌｕｅ）」Ｇ１と呼ばれていて、ＩＣの動作に必要な論理素子の集合である。ＲＡＭ（１１−２１）、ＲＯＭ（１２−２２）、プログラマブル不揮発性メモリＮＶＭ（１３）を構成する他の素子は、周囲全体に配置されている。本発明の特徴は、１つの機能に属するセルの物理的な場所を先験的に決定できるようにするために、論理演算子、算術演算子、ならびに制御機能が、ゲートすなわち基本セルレベルで互いに混合されていることにある。かくして各プロセッサは、図６に正方形または長方形で示した幾つかの素子に分割される。これらの素子は、円により示されてクロック回路を構成する他の素子の中に、あるいは論理「グルー」を構成する六角形の素子の中に、あるいはまた周辺回路を構成する台形の素子の中に、さらには図６に示されたようにこれらの素子の組み合わせの中にレイアウト可能である。２つのプロセッサの回路の物理的なレイアウトは、有利には、一般の場合のように容易に認識可能な物理的な機能ブロックを備えない、このような全く平凡なトポロジーを用いることにより構成される。こうしたトポロジーは、「ゲートアレイ」回路で使用され、そのマトリクスの各セルが、如何なる機能を果たすこともできる。このようにして、２つのプロセッサ（１、２）は、２つの隣接トランジスタが、プロセッサまたはそれらが結合される回路のいずれかに属することができる程度にまで、論理的な構造が分離されているにもかかわらず、物理的に交互配置される。これは、マイクロプロセッサを備えたカードの領域が関係する回路の分類が、クロック周期の観点から、それほど高い性能を必要としないことから可能になる。従って、このような回路のレイアウト方法は、装置の安全性を確保するには特に好ましい。もちろん、こうした回路を実現するには、信号を適切にルーティングして諸機能を制御するために、コンピュータ支援による自動設計が必要である。従って、各機能ブロックの消費が、完全に交互配置されて組み合わされるように設計する。
【００４７】
さらに、２つのプロセッサは、特定のリンクを介して、またはバス（３、４）に接続される通信用レジスタの集合（図２ａ  ５０、５１）によって、または他のプロセッサのバスを介して盗んだ周期によって、あるいはまた、図３に示したように２つのプロセッサ間でバスを共有する場合には調停ロジックによって、通信が可能である。
【００４８】
図２ａは、たとえば、検出回路（Ｂ１、Ｂ２）により割り込みモードで動作する２つのレジスタ（５０、５１）を用いたリンクを示しているが、チップカードで使用されるプロトコルと同様のプロトコルを用いる二重アクセスレジスタ（５）を使用してもよい。この場合、主プロセッサ（１）がマスターである。図２ａによる実施例では、第１のレジスタ（５０）が、主プロセッサ（１）のバス（３）と副プロセッサ（２）のバス（４）との間のリンクを提供し、一方で、第２のレジスタ（５１）が、反対方向のリンクを提供している。第１のレジスタ（５０）または第２のレジスタ（５１）の各々が、第１の記憶フリップフロップ（Ｂ１）または第２の記憶フリップフロップ（Ｂ２）を備えており、これらの記憶フリップフロップは、対応するレジスタに情報が送られたときに作動状態に移行する。第１のフリップフロップ（Ｂ１）の出力は、第２のプロセッサ（２）の割り込みシステムに接続され、第２のフリップフロップ（Ｂ２）の出力は、主プロセッサ（１）の割り込みシステムに接続される。レジスタのサイズは、各プロセッサからの要求および応答を収容するのに十分である。図２ｂは、ヘッダ、データ領域および誤り検知領域を備えたフレームの構造を示している。各フレームは、情報ブロック（ブロックＩ）またはＡＣＫブロック（ブロックＡ）を構成可能であり、これらの各ブロックが、双方向に伝送される。ヘッダは、２バイトで構成可能であり、第１バイトがブロック番号を、第２バイトが長さを示す。第１のレジスタ（５０）にブロックが送られると、フリップフロップが、第２のプロセッサ（２）により割り込み信号ＩＴ１として解釈さる信号を発生し、かくして第１のレジスタ（５０）宛のメッセージがあることを知らせることができる。従って、第２のプロセッサ（２）は、第１のレジスタ（５０）の内容を読み込むことによってブロックのデータを入手し、その後、同じ番号で主プロセッサ（１）宛ての第２のレジスタ（５１）に送られるＡＣＫブロック（ブロックＡ）により、ブロックの受信について肯定応答する。この方法は、本発明の範囲で必ずしも必要というわけではないが、特にブロックの連鎖を可能にするために既知である。各情報ブロックにおいて、情報領域は、それ自体が、コマンド領域およびデータ領域の２つの部分に分割可能である。かくして主プロセッサは、コマンド領域により副プロセッサに命令を送ることができる。たとえば、このリストは限定的ではないが、読み込み、書き込み、データチェック、認証といったコマンドがある。副プロセッサ（２）は、コマンドを受信すると、第２のレジスタ（５１）に送られるＡＣＫブロック（ブロックＡ）により、このコマンドの受信について肯定応答し、当該コマンドを処理してから情報ブロック（ブロックＩ）として第２のレジスタ（５１）に応答を出す。主プロセッサ（１）は、第１のレジスタ（５０）に送られたＡＣＫブロックにより、このブロックの受信について肯定応答し、以下同様に行われる。ブロックに番号付けすることにより、送受信がうまく行かなかったデータブロックを繰り返すことができる。勿論、主プロセッサおよび副プロセッサの間で情報を交換するためのプロトコルは、逆方向にも使用可能である。
【００４９】
２つのプログラム（Ｐ１、Ｐ２）は、主プロセッサ（１）および副プロセッサ（２）でそれぞれ実行されるので、２つの命令が同時に実行される。また、副プロセッサ（２）を制御するクロック位相をシフトして、命令サイクルが、各プロセッサで正確には対応しないようにすることもできる。さらに、シフトを可変かつランダムにしてもよく、これは、同様に可変である命令サイクルの重ね合わせとなって表れる。これらのシフトは、副プロセッサ（２）のシーケンサ（２０）により発生することができる。
【００５０】
有利で経済的な解決方法は、副プロセッサ（２）の「ダミー」メモリのために、超小型「ダミー」メモリ（ＤｕｍＲＡＭ２１）を使用することからなる。実際、ダミーメモリは、真に機能的な役割を１つも果たさないので、このメモリにアドレス可能なスペースを制限して、チップで占有する場所を最小化することができる。このスペースは、たとえば、ＲＡＭの１つまたは複数のラインをＲＡＭのマトリクスに単に付加することに対応する。このスペースは、固有のアドレスレジスタおよびデータレジスタを備えている。
【００５１】
副プロセッサ（２）は、常時動作させておいてもよいが、２つのプロセッサの間に通信チャンネルを配置することが好ましく、通信チャンネルは、有利には、副プロセッサ（２）を起動するために、およびまたは副プロセッサ（２）が機能およびまたは実際にタスクを実行していることを主プロセッサ（１）に知らせるために、使用可能である。プロセッサは、作動、非作動の少なくとも２つの状態を有する。たとえば作動状態は、一連の様々な操作の実行に対応し、非作動状態は、操作を１つも含まない待機ループにより実施可能である。状態から状態への移行は、プロセッサ間の通信機構により実施される。たとえば主プロセッサは、作動していない副プロセッサに割り込み信号を送ることにより、副プロセッサを起動することができる。起動機構を実施する変形実施形態では、各プロセッサが、少なくとも１つの他のプロセッサ宛の割り込みラインか、またはリセットラインを有する。実際、好ましい方法ではないが、作動状態から非作動状態へ移行する別の方法は、非作動にすべきプロセッサ宛の初期化（リセット）信号を保持し、プロセッサが作動状態に移行するときに、これを削除することから構成される。従って起動手段は、１つのプロセッサが他のプロセッサを、作動状態から非作動状態へ、またその逆に移行させることができる手段である。
【００５２】
これは、２つのプロセッサ間の認証機構か、あるいは作動レジスタテスト機構によって実施可能である。認証機構は、主プロセッサ（１）の要求により、または周期的に、あるいはまた任意に始動される。主プロセッサ（１）が、認証中に異常を検出すると、あらゆる処理を停止するか、または待機ループに入ることができる。
【００５３】
このため、割り込みモードでこのタイプの機能を使用できる。たとえば主プロセッサ（１）のレベルで検出された異常により割り込みが発生すると、主プロセッサ（１）により制御される認証を実施するために、２つのプロセッサ間で対話が開始される。この認証は、たとえば、主プロセッサ（１）のバス（３）に接続されたプログラマブル不揮発性メモリ（１３、ＮＶＭ）の秘密領域に保存されるキーに基づいて、主プロセッサ（１）によりデータを暗号化させることからなる。暗号化されたデータは、通信チャンネルにより副プロセッサ（２）に送られ、副プロセッサは、暗号を解読してから結果を主プロセッサ（１）に送り、主プロセッサが、データと解読結果とを比較する。結果が正しければ、主プロセッサ（１）が作動を続行し、正しくなければ次の認証を待つために待機ループに入る。こうした機構は、周知であり、当業者にとって特定の問題を提起しない。
【００５４】
主プロセッサ（１）はまた、副プロセッサ（２）の「ダミー」ＲＡＭ（ＤｕｍＲＡＭ２２）で作動レジスタをテストし、このレジスタが各テストで適正に変更されているかどうか確認することもできる。レジスタが変更されていない場合、上記と同様に、主プロセッサは、その作動化を保留できる。
【００５５】
変形実施形態では、副プログラム（Ｐ２）として、主プログラム（Ｐ１）の任意の部分のコピーを使用可能であり、これは、最初に無作為にアドレスを指定することにより、およびまたは主プログラムのデータとは異なるデータに対して操作することにより行われる。かくして、信頼性があるが機能面では役に立たない命令を、このプログラムが実行する保証が得られる。
【００５６】
また、中間の処理結果が、決して実行中に現れないように、主プロセッサが実行するプログラムと相関関係にあるプログラムを、副プロセッサ（２）に実行させることができる。たとえば、操作Ｆとは異なる２つの関数ｆ１、ｆ２を、Ｆ＝ｇ（ｆ１、ｆ２）となるように、２つの異なる関数を組み合わせる関数ｇによって、操作Ｆの結果を得られるように選択し、この２つの関数を各プロセッサによりそれぞれ実行させることにより、操作Ｆの結果を隠したいと仮定する。
【００５７】
チップカードのコードおよびまたはデータにエラーが入らないようにするとともに、チップカードにアタック（ｄｉｆｆｅｒｅｎｔｉａｌ  ｆａｕｌｔ  ａｎａｌｙｓｉｓ、ＤＦＡ）を実施可能にすることを防ぐために、「障害に対して弱い（ｉｎｔｏｌｅｒａｎｔｓ  ａｕｘ  ｆａｕｔｅｓ）」プログラムを設置することが提案されている。このようにエラーが入るのは、特に、電力供給およびまたはクロックを瞬時に変更するためである（ｐｏｗｅｒ／ｃｌｏｃｋ  ｇｌｉｔｃｈ）。下記の例（仮説的な通信プログラム）では、アタッカーは、通常予定される記憶領域を越えてデータを受信するために、条件付きの接続（ライン３）またはデクリメント（ライン６）の挙動を変えようとしている（ａｎｓｗｅｒ＿ａｄｄｒｅｓｓ＋ａｎｓｗｅｒ＿ｌｅｎｇｔｈ）。
【００５８】
１    ｂ＝ａｎｓｗｅｒ ａｄｄｒｅｓｓ
２    ａ＝ａｎｓｗｅｒ ｌｅｎｇｔｈ
３    ｉｆ（ａ＝＝０）ｇｏｔｏ  ８
４    ｔｒａｎｓｍｉｔ（ｂ＊）
５    ｂ＝ｂ＋１
６    ａ＝ａ−１
７    ｇｏｔｏ  ３
８    …
チップカード用のこうした「障害に対して弱い」（すなわち故障を検出可能な）プログラムは、定義上、マイクロプロセッサカードのプロセッサ（ＣＰＵ）で実行される冗長性タスクを有する。
【００５９】
デクリメントされる物理的または論理的なカウンタ、ならびに転送型アトミック命令（従来技術により既知である「ｓｗａｐ」、「ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ」）等の、ハードウェアまたはソフトウェアの「ロック」によって形成される幾つかの「同期」ポイントで、プログラムの実行に関する冗長性タスクが一致しているかどうか、１つまたは複数の主プロセスがチェックする。
【００６０】
プロセッサがアタックの兆しとしてチェックを行うと、不一致とみなされる。ハッカーによってカードのコードにエラーが入れられると、こうしたチェックが、はるかに複雑になる。上記の例では、アタッカーは、２つ（または複数個）のタスクの挙動を同じように変えなければならないが、これは実際には不可能（実行不能）であるように思われる。
【００６１】
実際、プログラムの「重要な（ｃｒｉｔｉｃａｌ）」データ全体の保護が求められる。変数に対して、この保護は、メモリへのコピーにより行うことができる。各プロセッサ（ＣＰＵ）は、このとき、当該変数の独自のコピーを有し、ダミー型ではなく実際に機能するメモリにこれを保存する。仮説的な例では、変数「ａ」（ループカウンタ）のデクリメントは、各プロセッサにより実行される下記の命令シーケンスにより保護可能である。
【００６２】
６          ａ＝ａ−１
６’        プロセッサの同期
６”        ｉｆ（ａ’！＝ａ）ｇｏｔｏ  ａｔｔａｃｋ
ここで「ａ’」は、第２のプロセッサにより使用される変数「ａ」のコピーであり、「ａ」が「ａ’」と異なる場合、プログラムは「アタック（ａｔｔａｃｋ）」と称されてカードの保護に必要な措置を取る処理ルーチンにジャンプする。
【００６３】
たとえば、アタックを検出すると「アタック」（ラベル）にジャンプし、「アタック」処理ルーチンが、マイクロプロセッサの初期化（Ｒｅｓｅｔ）およびまたは、たとえばＥＥＰＲＯＭ型のプログラマブル不揮発性メモリにおけるキーの消去など、必要な操作を実行する。
【００６４】
フロー制御、すなわちプログラムの進行の制御を、直接、保護可能であることにも留意されたい。その場合、保護された重要なデータは、プロセッサの序数カウンタである（または、プロセッサが同一コードを実行しない場合は、序数カウンタに関連付けられた別の情報である）。保護が望まれる（条件付きまたは無条件の）各ジャンプの後で、冗長性タスクは、各ジャンプが行われた方向で情報を比較しなければならない。上記の仮説的な例では、ライン３における条件付きのジャンプは、序数カウンタ、またはライン４、８における対応する情報を交換し比較することにより、保護されることができる。
【００６５】
交換および比較操作は、（上記の命令シーケンス６−６”と同様に）ソフトウェア手段で実施可能であるか、または、同期化操作の結果として発生し、有効化入力（８０）に送られる信号によって作動される図４のようなコンパレータ（８）によるハードウェア手段で実施可能である。コンパレータ（８）はまた、その別の入力（８１、８２）で、各主プロセッサ（１）および副プロセッサ（２）における各序数カウンタ（ＰＣ、ＰＣ’）の値を示す信号を受信する。
【００６６】
アタックの場合、ハードウェアコンパレータ（８）は、その出力（８３）を介して送信される信号（ａｔｔａｃｋ  ｉｎｔｅｒｒｕｐｔ）を用いて割込み処理を始動し、割り込み処理は、マイクロプロセッサの割り込み機構を介して適切な操作を行う（例：Ｒｅｓｅｔ  ｉｎｔｅｒｒｕｐｔ）。
【００６７】
これらの機構が、２つのプロセッサを備えたシステムにおけるプログラムの従来の実行に類似するかもしれないが、本発明の機構は、以下の点できわめて異なっている。
【００６８】
＊２つのプロセッサは、同じ回路により電力供給され、２つのプロセッサおよび結合される回路の様々な瞬間の消費を混合するように構成される。２つのプロセッサは、同じケイ素（シリコン）基板に配置することができる。
【００６９】
＊副プロセッサで使用される命令のシグネチャは、主プロセッサで実行される命令のシグネチャの影響を隠すことができる。
【００７０】
＊副プログラムの目的は、主プログラムとは異なるが主プログラムの機能を隠す機能を実行することにある。かくして、主プログラムと全く相関関係にないタスク、あるいは逆に、矛盾さえあるタスクを実行する副プロセスが、主プログラムを隠すことを目的として、主プログラムに相関関係にある主プログラムと並列のタスクを実施するとみなすことができる。
【００７１】
＊「ダミー」ＲＡＭのサイズは、しばしば、プログラムの通常の動作に必要なものよりもずっと小さくすることができる。
【００７２】
＊主プロセッサは、副プロセッサが認証される場合、およびまたは作動される場合のみ、安全性という意味で重要なプログラムを実行する。
【００７３】
＊「ダミー」ＲＡＭの内容は、機能的な重要性を持たないが、これはダミーＲＡＭが、メモリアレイにおける電力消費の痕跡をスクランブルする役割をするだけであるからである。
【００７４】
＊副プログラムの内容をバックアップしたり、修復することは不要である。
【００７５】
別の変形実施形態では、主プロセッサ（１）が、タイムカウンタ（ｔｉｍｅｒ）（Ｒ３）を起動し、このタイムカウンタは、ランダムジェネレータ（Ｒ１）を用いるか、あるいはプログラマブル不揮発性メモリ（１３、ＮＶＭ）の内容から初期化される。プログラマブル不揮発性メモリ（１３）は、実際、使用のたびに変更される独自の数を含むことができる。タイムカウンタ（Ｒ３）は、外部からは予測できない時間の経過後にタイムリミットに至ると、主プロセッサ（１）による副プロセッサ（２）の認証を開始する。
【００７６】
別の変形実施形態では、レジスタ（Ｒ２）は、（たとえばメモリまたはランダムジェネレータ（Ｒ１）から送られる）特定の情報をロードされた後で、割り込みを開始するために使用することができる。
【００７７】
別の変形実施形態では、ランダムジェネレータ（Ｒ１）が主プロセッサ（１）の割り込みシステム（１５）に接続されており、主プロセッサ（１）におけるプログラムの実行に対して全く同期しない不定期の割り込みを発生するようにされる。もちろん、割り込みシステムは、考慮された処理に応じてマスクすることもできるし、またマスクしなくてもよい。この場合、割り込みがマスクされると、全体の機能は、単一プロセッサでは従来通りであるが、現行の主プログラム（Ｐ１）を場合に応じて外部から観察されないように保護したいときは、この割り込みを許可し、副プロセッサ（２）の認証および起動を開始する。
【００７８】
少なくとも２つ、たとえば、ｎ個のプロセッサ間で共有される共通バスを備えた別の変形実施形態では、各プロセッサ（図３  １ａ、ｂ、．．．、１ｎ）が、共通バス（３）の第１のバスリクエストライン（３１）、第２のバスビジーライン（３２）および第３のバスポーリングライン（３３）の３タイプのラインにより、中央の調停ロジック（８）に接続される。最初の２つのタイプであるリクエストライン（３１）およびビジーライン（３２）は、それぞれ全てのプロセッサに共通の単一のラインから構成されるが、最後のタイプであるポーリングライン（３３）は、それぞれがｎ個のプロセッサ（１ａ、１ｂ、．．．１ｎ）を有する個々のライン（３３ａ、３３ｂ、．．．、３３ｎ）である。プロセッサ全体は、単一バス（３）を介してＲＡＭ、ＲＯＭ、プログラマブル不揮発性メモリ（ＮＶＭ）、および入出力回路（Ｉ／Ｏ）を共有する。
【００７９】
バス（３）の獲得を望んでいるプロセッサ（たとえば１ａ）は、バスリクエストライン（３１）に、この要望があることを示す。調停回路（８）は、所定のアルゴリズム（例：周期的な問い合わせ、バスポーリング）に従って、問い合わせを受けたプロセッサに対応するポーリングタイプのライン（３３ｂ、．．．、３３ｎ）について、他のプロセッサ（１ｂ、．．．、１ｎ）に問い合わせる。要求を行っていて問い合わせを受けた第１のプロセッサが、バスを獲得し、バスビジーライン（３２）を起動する。調停回路（８）は、バスビジーライン（３２）に伝送された信号が作動状態から非作動状態に移行することによってバス（３）が解放された場合だけ問い合わせを再開する。従って、プロセッサが同一のバスに接続され、このアクセスを時間において多重化することによりこのバスを共有することが分かる。
【００８０】
もちろん、上記の実施形態の効果を組み合わせることも可能であって、スクランブル化を連続して行うことは必要ではない。
【００８１】
かくして、主プログラム（Ｐ１）が、安全面で重要でない動作を実行する場合、本発明により実施されるスクランブルは、たとえばシングルプロセッサの操作に間欠的に戻ることで間欠的にされ、それによって、テストを目的として外界に結果を送ったり、あるいはタイムカウンタ（Ｒ３）またはランダムジェネレータの割り込みをマスクしたりする。保護された動作が実施されると、主プログラム（Ｐ１）は、副プロセッサ（２）の動作を「スクランブル」するために、この動作を許可する。
【００８２】
事実、安全性は、プロセッサが従来技術のようにランダムにタイミングを取ることから得られるのではなく、同じ電源から供給される２つのプロセッサ（１、２）によって、異なる２つのシグネチャを有するプログラム（Ｐ１、Ｐ２）を同時に実行することによって行われる。
【００８３】
主プロセッサ（１）により実行されるプログラムは、主プロセッサの操作が、セキュリティオペレーションシステムによって制御されるように構成できる。セキュリティオペレーションシステムは、機械により実行されるプログラムのタイプに応じて、実施すべきスクランブルのタイプを決定する。この場合、主プロセッサ（１）のオペレーションシステムが、副プロセッサ（２）の各種コマンド信号を適切に管理する。また、副プログラム（Ｐ２）を用いて、全体の処理時間を短くすることができる操作を含む、主プログラム（Ｐ１）に役立つ機能を実行できることは明らかである。これらの処理は、たとえば、副プログラムにより実施されるが、主プログラム（Ｐ１）によっても後で使用される計算を準備することからなる。もちろん、プロセッサが、マルチプログラミングモードで動作する場合、本発明の機構を一般化することは容易であり、その場合、アプリケーションプログラムは、主プログラムとして考慮することができる。
【００８４】
上記のランダムジェネレータおよびタイムカウンタは、実施において特定の問題を提起せず、本発明とは全く関係のない他の用途のために別々に使用される場合、当業者が既知のものである。
【００８５】
別の変形実施形態では、２つのプロセッサが、主プロセッサおよび副プロセッサの役割を交互に果たすことができるように本発明を構成可能である。これは、２つのプロセッサ間で優先権トークンを交換して、２つのうちでトークンを所有するプロセッサに、所定の瞬間におけるマスターの役割を与えることを仮定している。
【００８６】
その他の変更も同様に、本発明の考え方の一部をなす。２つのプロセッサに制限された実施形態に関して記載した変形実施形態は、複数のプロセッサを備える実施形態にも適用可能であり、これも本発明の一部をなす。かくして、発明の詳細な説明の中で読み取り専用メモリという表現は、常にＲＯＭとして理解されるべきであるが、これは、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭあるいは他のあらゆるタイプのプログラマブル不揮発性読み取り専用あるいはランダムアクセスメモリに代えることができる。
【図面の簡単な説明】
【図１】  それぞれがバスを備えた２つのプロセッサを有する、本発明のＩＣの実施形態を示す論理ブロック図である。
【図２ａ】  ＩＣの２つのプロセッサ間の通信回路の実施例を示す図である。
【図２ｂ】  ＩＣの２つのプロセッサ間の通信で使用されるフレームの構造を示す図である。
【図３】  単一バスを備えた２つのプロセッサを有する、本発明のＩＣの実施形態を示すブロック図である。
【図４】  各プロセッサから送られるデータ要素の２つの値の同期および比較による保護の実施形態を示すブロック図である。
【図５】  ＩＣのプロセッサによる各ポートを介してアクセスが可能であるダブルポートメモリの実施例を示す図である。
【図６】  本発明によるＩＣ素子の物理的なレイアウトを概略的に示す図である。
【図７】  ２つのプロセッサを備える回路素子の従来のレイアウトを示す図である。
【図１】
0004030719.tif 000002
【図２ａ】
0004030719.tif 000003
【図２ｂ】
0004030719.tif 000004
【図３】
0004030719.tif 000005
【図４】
0004030719.tif 000006
【図５】
0004030719.tif 000007
【図６】
0004030719.tif 000008
【図７】
0004030719.tif 000009