(57)【特許請求の範囲】
【請求項１】
データ処理のための装置において、
データ値を格納することが可能なデータ処理レジスタを有し、
前記データ処理レジスタにデータ値を格納することが可能なレジスタ書き込み回路を有し、
三つ以上の別のレジスタを有し、
前記レジスタ書き込み回路は、データ値を前記データ処理レジスタに書き込む際に、何のデータ値が前記データ処理レジスタに書き込まれているか、および、何のデータ値が前記データ処理レジスタ内に前に格納されたかに関わらず、前記データ処理レジスタと、前記三つ以上の別のレジスタ内の全体としてハイからローへの遷移数、および前記データ処理レジスタと、前記三つ以上の別のレジスタ内の全体としてローからハイへの遷移数が同一の固定した数になるように、前記三つ以上の別のレジスタにデータ値を書き込むことを特徴とする装置。
【請求項２】
クレーム１記載の装置において、
前記レジスタ書き込み回路が、Ｙｉの値を前に格納していた前記データ処理レジスタのi番目のビットに、Ｘｉの値を書き込む際には、前記レジスタ書き込み回路は、三つの別のレジスタ内の対応するビット位置に、
Ｘｉの否定、
（（ＸｉＸＯＲＹｉ）の否定）ＸＯＲ（現在、前記三つの別のレジスタの一つに格納されているＲｄｉの値）で与えられた新しい値Ｒｄｉ、および
前記新しい値Ｒｄｉの否定の、
各値を書き込むことを特徴とする装置。
【請求項３】
クレーム１および２のいずれかに記載の装置において、
前記データ処理レジスタは、レジスタバンクの複数のデータ処理レジスタの一つであることを特徴とする装置。
【請求項４】
クレーム３記載の装置において、
前記三つの別のレジスタは、前記データ処理レジスタに専用に設けられた専用ダミーレジスタと、前記レジスタバンクの前記複数のデータ処理レジスタの間で共有される二つの共有ダミーレジスタとを含むことを特徴とする装置。
【請求項５】
クレーム１記載の装置において、
前記専用ダミーレジスタは、Ｘｉの前記否定を格納し、前記二つの共有ダミーレジスタは、ＸｉとＹｉの前記排他的論理ＯＲと、ＸｉとＹｉの排他的論理ＯＲの前記否定を格納するように、前記レジスタ書き込み回路が、前にＹｉの値を格納していた前記データ処理レジスタのｉ番目のビットにＸｉの値を書き込む際に、前記レジスタ書き込み回路は、前記データ処理レジスタに専用に設けられた専用ダミーレジスタと、前記レジスタバンクの複数のデータ処理レジスタの間で共有される二つの共有ダミーレジスタとからなる三つの別のレジスタ内の対応するビット位置に書き込むことを特徴とする方法。
【請求項６】
クレーム４または５に記載の装置において、
前記三つの別のレジスタは、前記レジスタバンクの前記複数のデータ処理レジスタのサブセットに対して設けられることを特徴とする装置。
【請求項７】
データを処理する方法において、
レジスタ書き込み回路がデータ処理レジスタにデータ値を格納するステップと、
前記レジスタ書き込み回路が、データ値を前記データ処理レジスタに書き込む際に、何のデータ値が前記データ処理レジスタに書き込まれているか、および、何のデータ値が前記データ処理レジスタ内に前に格納されたかに関わらず、前記データ処理レジスタと、前記三つ以上の別のレジスタ内の全体としてハイからローへの遷移数、および前記データ処理レジスタと、前記三つ以上の別のレジスタ内の全体としてローからハイへの遷移数が同一の固定した数になるように、前記三つ以上の別のレジスタにデータ値を格納するステップとを含むことを特徴とする方法。
【請求項８】
クレーム７記載の方法において、
前記レジスタ書き込み回路が、Ｙｉの値を前に格納していた前記データ処理レジスタのi番目のビットに、Ｘｉの値を書き込む際には、前記レジスタ書き込み回路は、三つの別のレジスタ内の対応するビット位置に、
Ｘｉの否定、
（（ＸｉＸＯＲＹｉ）の否定）ＸＯＲ（現在、前記三つの別のレジスタの一つに格納されているＲｄｉの値）で与えられた新しい値Ｒｄｉ、および
前記新しい値Ｒｄｉの否定の、
各値を書き込むことを特徴とする方法。
【請求項９】
クレーム７および８のいずれかに記載の方法において、
前記データ処理レジスタは、レジスタバンクの複数のデータ処理レジスタの一つであることを特徴とする方法。
【請求項１０】
クレーム９記載の方法において、
前記三つの別のレジスタは、前記データ処理レジスタに専用に設けられた専用ダミーレジスタと、前記レジスタバンクの前記複数のデータ処理レジスタの間で共有される二つの共有ダミーレジスタとを含むことを特徴とする方法。
【請求項１１】
クレーム７記載の方法において、
前記専用ダミーレジスタは、Ｘｉの前記否定を格納し、前記二つの共有ダミーレジスタは、ＸｉとＹｉの前記排他的論理ＯＲと、ＸｉとＹｉの排他的論理ＯＲの前記否定を格納するように、前記レジスタ書き込み回路が、前にＹｉの値を格納していた前記データ処理レジスタのｉ番目のビットにＸｉの値を書き込む際に、前記レジスタ書き込み回路は、前記データ処理レジスタに専用に設けられた専用ダミーレジスタと、前記レジスタバンクの複数のデータ処理レジスタの間で共有される二つの共有ダミーレジスタとからなる三つの別のレジスタ内の対応するビット位置に書き込むことを特徴とする方法。
【請求項１２】
クレーム１０または１１に記載の方法において、
前記三つの別のレジスタは、前記レジスタバンクの前記複数のデータ処理レジスタのサブセットに対して設けられることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関するものである。特に、本発明は、例えば、セキュリティを向上させるために、データ処理システム内での処理動作をマスキングすることに関するものである。
【背景技術】
【０００２】
セキュリティに関するデータを扱うデータ処理装置を提供することは、よく知られているが、それには、高いセキュリティレベルを確保することが望ましい。例えば、秘密の暗号キーなどのセキュリティに関するデータを取り扱うデータ処理システムを含むスマートカードを提供することが知られており、このデータは、偽造防止のために秘密を保持する必要がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このようなシステムのセキュリティを脅かす既知の方法には、タイミング分析と電力消費分析がある。このようなシステムの、入力に対するタイミング動作および電力消費のうちのいずれの挙動を観測することにより、セキュリティを低下させるような方法で、実行中である処理に関する情報と取り扱われているデータを取得することが可能とされている。セキュリティに対するこのような脅威に対して対策を講じることは有益なことである。
【課題を解決するための手段】
【０００４】
本発明は、データ処理のための装置を提供するものであり、本装置は、
データ値を格納することが可能なデータ処理レジスタと、
前記データ処理レジスタにデータ値を格納することが可能なレジスタ書き込み回路と、
三つ以上の別のレジスタを含み、ここで、
何のデータ値がデータ処理レジスタに書き込まれているか、および、何のデータ値が前記データ処理レジスタ内に前に格納されたかに関わらずに、前記データ処理レジスタと、前記三つ以上の他のレジスタ内のビットの固定の相対数が、全体として、ハイからロー、およびローからハイへ遷移するように、前記レジスタ書き込み回路がデータ値を前記データ処理レジスタに書き込む際に、前記レジスタ書き込み回路は三つ以上の別のレジスタにデータ値を書き込むことを特徴とする装置である。
【０００５】
本発明は、レジスタ書き込みが起こった際に、どれだけ多くのビット値がローからハイに遷移したかに対して、どれだけ多くのビット値がハイからローに遷移したかに応じて、ビット値電力消費および他の特性またはそのいずれかに変化が生じるということを認識し活用している。本発明は、一つ以上の別のレジスタを設けて、それに適切なデータ値を同時に書き込むことにより、この問題を解決し、何のデータ値が書き込まれたことと前のデータ値は何であったかということには関わらず、ハイからローへの遷移と、ローからハイへの遷移の数が変化しないようにする。これにより、潜在的に外部に露出してしまい、処理中のデータ値への依存性をもつ特徴を隠して、セキュリティを向上させることができる。この手法は、複数のレジスタへの複数の書き込み処理が並行して行われるシステム、例えば、スーパースカラープロセッサのようなシステムにも適用可能である。
【０００６】
一つあるいはそれ以上の数のレジスタに対して、書き込もうとしている真のデータ値と、書き込まれた値との間については、変化しない要求を満足するような多くの数学的な関係を定義することが可能であるが、特に、本発明の実施例では、この定義は単純なものとし、前記のレジスタ書き込み回路は、Ｙｉの値を前に格納していた前記データ処理レジスタのi番目のビットに、前記データ処理レジスタ値Ｘｉを書き込むようにし、また、前記レジスタ書き込み回路は、別の三つのレジスタ内の対応するビット位置に、以下の各値を書き込むようにしてある。その値とは、
Ｘｉの逆数、
（現在格納されているＲｄｉの値の）ＸＯＲ（の逆（ＸｉＸＯＲＹｉ））で与えられた新しい値Ｒｄｉ、と
前記新しい値Ｒｄｉの逆数である。
この特別な関係は、遷移のバランスをとりながら、比較的簡単な計算となり、比較的少ない数のレジスタを用いており、回路の要求と電力消費の観点から有利なものとなっている。
【０００７】
本発明は、単一のデータレジスタからの書き込みによる情報の漏洩を防止するために利用することができるが、本発明は、複数のデータレジスタをもつレジスタバンクが設けられた実施例にも適用することが可能である。
【０００８】
このような環境では、複数の共有ダミーレジスタと組み合わせて、専用のダミーレジスタを設けることができる。いくつかのダミーレジスタを共有することにより、ハイからローへ、また、ローからハイへの遷移数のバランスを保障しながら、本手法に必要となる回路資源を減らすことができるという利点がある。
【０００９】
専用のダミーレジスタが、真のデータレジスタ内に保持した値の逆数を格納し、共有ダミーレジスタが、古いデータ値とともに新しいデータ値の排他的ＯＲと、さらに、この排他的ＯＲの逆数とを格納するという実施例を与えることが好ましい。
【００１０】
本手法は、レジスタバンク内の全てのレジスタに対して用いることができるが、レジスタバンク内のいくつかのレジスタが、プログラムカウンタ、スタックポインタ、戻りアドレスなどとして機能し、セキュリティ上重要な役目を負っていないという場合がしばしばあり、このことは、セキュリティ確保上必要とされ追加された回路資源の間のバランスをとる際に、これらのレジスタについては本手法を用いないほうがより好ましいと言える。
【００１１】
別の観点として、本発明は、データ処理の方法を提供するものであり、本方法は、
データ処理レジスタにデータ値を格納するステップと、
何のデータ値がデータ処理レジスタに書き込まれているか、および、何のデータ値が前記データ処理レジスタ内に前に格納されたかに関わらずに、前記データ処理レジスタと、前記三つ以上の他のレジスタ内のビットの固定の相対数が、全体として、ハイからロー、およびローからハイへ遷移するように、前記データ処理レジスタに前記データ値を格納する際に、三つ以上の別のレジスタにデータ値を格納するステップとを含むことを特徴とする方法である。
【実施例】
【００１２】
以下、本発明の実施例を、図面を引用しながら説明する。
図１は、プロセッサコア４、コプロセッサ６およびメモリ８を含むデータ処理システムの概略を示す図である。
【００１３】
動作に際して、プロセッサコア４は、メモリ８から命令とデータを取り出す。命令は、命令パイプライン１１に入力され、そこでは、命令は、連続したパイプライン処理サイクルで、例えば、取り出し、デコード、実行記憶、および書き出しの連続したパイプラインの段階に割当てられる。パイプライン化されたプロセッサは、プロセッサ性能を向上させるために、部分的に実行期間が重なり合うように、多数のプログラム命令を効率よく実行する方法として既知のものである。
【００１４】
プロセッサコア４によってメモリ８から読み出されたデータ値は、レジスタバンク１２に入力され、そこでは、データ値は、一つあるいは複数の乗算器１４、シフタ１６、加算器１８を用いたプログラム命令制御により処理される。ＡＮＤ論理、ＯＲ論理、ゼロ値の並びの計数を行う論理処理などの、他のデータ処理回路も設けられている。
【００１５】
また、図１では、プロセッサコア４中の命令デコーダ２０を図示しており、命令デコーダは、命令パイプライン１０中のプログラム命令に応じて、レジスタバンク１２、乗算器１４、シフタ１６および加算器１８などの様々な処理要素に送られる実行制御信号を生成し、実行されるデータ処理操作を制御する。一例としては、デコーダ２０により生成された制御信号は、レジスタバンク１２から読み出され、乗算器１４、シフタ１６および加算器１８の中の適切なものに送られそこで実行される適切なオペランドを与え、レジスタバンク１２に書き込まれる結果を生成する。
【００１６】
コプロセッサ６は、構成制御パラメータを設定するプログラム制御により書き込まれる、多数の構成レジスタ２２を含むシステム構成コプロセッサである。これらの構成制御パラメータは、例えば、エンディアン（endianess）など、処理システム２の構成の多くの特徴を指定することができる。これらの構成制御レジスタの一つには、プロセッサコアを、固定タイミングモードで動作させるのか、可変タイミングモードで動作させるのかを指定する１ビットが含まれている。このビットは、命令デコーダ２０への入力として与えられるものとして示されているが、本ビットは、プロセッサコア４の他の部分の動作を制御するために必要となるものとして、これらの他の部分に送られるものであってもよい。
【００１７】
この固定・可変ビットに応じて、プロセッサコア４は、固定タイミングモードあるいは可変タイミングモードで動作する。固定タイミングモード時に、可変タイミングモードでは可変のタイミングをもつ（すなわち、処理完了までの処理サイクル数が可変となる）少なくとも一つのプログラム命令を、固定タイミングに設定する（例えば、処理時間全体が圧縮できるか、あるいは、処理サイクルの最大数以内で処理が完了するかに関わりなく、処理完了までの処理サイクル数を、可能な最大値とする）。命令デコーダ２０は、基本的には、プログラム命令をデコードし、プロセッサコア４のほかの要素の動作を命令することを担っているため、命令デコーダ２０は、固定タイミングモードあるいは可変タイミングモードのいずれかで動作するプロセッサコア４を制御する主要な役割をもっている。すべての可変タイミング命令を、固定タイミング型の動作で与える必要はない。
【００１８】
上記の説明では、構成制御レジスタ２２の単一ビットは、固定タイミングモードと可変タイミングモードを切り替えるためのものとして示している。一方、構成制御レジスタ２２中の複数のビットは、異なる種類の命令の、条件命令動作、均等分岐動作、早期停止の動作を不可とするなどの固定あるいは可変タイミング動作を、独立して可能としたり不可能とするために用いることができる。
【００１９】
図２は、条件命令２４の概要を示す図である。条件命令は、いくつかの条件命令のみを含む命令セットの一部、あるいは、実質的に完全な条件付きとなるＡＲＭ命令セットの一部である。条件コード２６は、対応する命令が実行されるか実行されないかを示す、プロセッサの状態条件のセットをエンコードする。例えば、システムで現状設定されている条件コードが、ゼロ結果を示していたり、キャリーが発生したり、オーバーフローが発生するなどの場合には、条件コード２６は、命令２４が実行しないことを指定するように構成することができる。固定・可変ビットは、少なくとも部分的には、命令の条件コードとは無関係に命令が実行されるが、プロセッサ状態に影響を与えるようにその実行結果を書き込むことがないように、条件的な動作を抑止する。
【００２０】
図３は、命令デコーダ２０により実行される処理操作の一部の概略を示す処理フロー図である。図３は、論理シーケンスとしてこれらの処理操作を示しているが、実際には、これらの処理操作は、少なくとも部分的には、並列に、あるいは異なる順番で実行されるものとなっている。
【００２１】
ステップ２８では、命令デコーダ２０は、実行すべき新しい命令を待つ。新しい命令を受け取ると、ステップ３０に進み、そこで、新しい命令に関する条件コードが読み込まれる。ステップ３２では、これらの条件コードを、システム中で現在存在している条件コードと比較する。システム中に現在存在している条件コードは、直前の命令によるもの、あるいは、これらの条件コードを更新した最後の命令による、以前の処理の結果である。
【００２２】
ステップ３４では、現在実行中しようとしている命令の条件コード２６と、既存の条件コードとの間の一致をチェックする。もし一致しない場合には、ステップ３６に処理を進め、そこで現在の命令の実行を開始する。図３は、この一致が見られない際に実行が行われるようなシステムを図示しているが、一致する場合に実行が行われる場合についても、他の実施例が同様に適用される。
【００２３】
ステップ３６の次に、ステップ３８に進み、そこで、命令の早期終了が可能であるかどうかをチェックする。この早期終了というのは、例えば、オペランドの一つが、０や１などの特定の値を持つために行われるものであったり、あるいは、特定の部分的な結果が得られるような以降の処理サイクルで行われる。早期終了が可能であるならば、ステップ４０に処理を進め、そこで、プロセッサコア４が、固定あるいは可変タイミングモードで現在処理中であるかどうかをチェックする。もしプロセッサが、可変タイミングモードである場合には、ステップ４２に処理を進め、命令を早期に終了し、その結果を適切なものとして戻し、ステップ２８に処理を戻す。
【００２４】
ステップ４０での判定の結果、システムが固定タイミングモードである場合には、早期終了が可能となっている状況ではあるが、ステップ４４に処理を進める。ステップ４４は、ステップ３８で早期終了が可能でないと判定した後にも実行されるステップあり、一つの処理サイクルに関わる命令を実行する。乗算、除算、加算あるいは減算など、複数の処理サイクルをもつ命令の場合には、通常、これらの命令は、複数のサイクルで実行され、ステップ４４の処理の後、ステップ４６に進み、そこで、実行された命令に要したサイクル数が、最大値となっているかどうかを判定する。もし、最大のサイクル数を実行されたならば、その結果が生成されたものとする。もし、早期終了が可能であったにもかかわらず、さらに長い処理サイクルに渡ってシステムが強制的に処理を続けたならば、ステップ４６の判定により、その命令の種類に関する処理サイクルの最大値に達した時点で、この強制的な処理は停止する。もし、処理サイクルが最大値に到達していない場合には、ステップ３８に戻る。
【００２５】
ステップ３４のチェックの結果、一致すると判定された場合には、ステップ４８に処理を進める。本例では、ステップ３４で一致すると判定したことにより、特定の命令の実行を抑止することになる。ステップ４８は、システムが強制実行モードで処理しているかどうかを判定するものである。もし、強制実行モードとなっている場合には、ステップ５０に処理を進め、そこで命令の強制的なダミー実行を行う。ダミー実行を行った際には、その実行結果は、命令自身により指定された先のレジスタではなく、廃棄レジスタ（図１の廃棄レジスタ５１を参照のこと）に書き込まれ、実質的に電力消費が不変となるようにしながら実行が抑止されるように、実行すべきでないプログラム命令によりシステムの状態が変更されないようになっている。もし、ステップ４８での判定結果が、システムが強制実行モードではなく可変タイミングモードになっている場合には、ステップ５０を経由せずに、プログラム命令を通常の方法で抑止し、ステップ２８に戻る。
【００２６】
図３は、ダミー実行が全ての条件コード失敗命令に適用され、命令の全ての早期終了が抑止されているような一般的なシステムを示している。実際には、これらの手法は、条件命令と早期終了可能な命令の一部に適用することも可能である。上記の複数の構成制御ビットは、早期終了の抑止だけでなく、条件コード失敗後のダミー実行などの特徴的な動作を選択的に行うために用いることができる。
【００２７】
図４は、固定タイミングモードでの条件分岐命令の実行の概略を示す図である。命令ＡＢのシーケンスが、条件分岐命令ＢＥＱ（等号判定分岐）が現れるまで実行される。この命令は、前の処理の結果で等号を示すフラグが設定された場合に特定の分岐を実行し、もしこのフラグが設定されない場合にはその分岐を抑止するという動作をエンコードするものである。条件コードがパスした際、すなわち条件コードが一致した場合には、分岐し、処理は、命令Ｘ、Ｙなどに進む。もし、条件コードが失敗した場合には、完全に抑止するのではなく、ＢＥＱ命令は、直ちに次の命令Ｃへ分岐する処理を実行する。この命令は、ＢＥＱ命令が抑止され、まったく実行されない場合に到達する命令と同一である。しかし、固定タイミングモードでは、条件コードがパスあるいは失敗したこととは無関係に、ＢＥＱ命令は、同一の処理サイクル数を要するものとなる。これにより、以前実行されたデータ処理の実行結果を隠蔽し、人がセキュリティデータにアクセスできないようにすることができる。
【００２８】
図５は、プログラム命令Ｉに対してデータＤを処理するプログラム可能なプロセッサコアで構成された、データ処理システム５２の概要を示す図である。データ処理システム５２は、レジスタバンク５４、乗算器５６、シフタ５８、加算器６０および演算論理ユニット６２、ロードストアユニット６４、データパイプライン６６、命令デコーダ６８、およびランダムクロックゲート回路７０を含んでいる。システム構成コプロセッサＣＰ１５、７２は、プロセッサコアに接続されている。システム構成コプロセッサ７２は、データ処理システム５２の異なる回路部分の擬似ランダムダミー動作を可能、不可能にする複数のフラグ値を保持しているシステム構成レジスタ７４を含んでいる。データ処理システム５２は、通常、多数の回路素子を含んでいるが、図５では簡単化のために省略してある。
【００２９】
ダミー動作可能回路７６には、乗算器５６が接続されており、乗算器５６のダミー動作を適切な際に可能にするか、それに代えて、要求に応じてプログラム命令が実行される際に乗算器５６を動作させる要求動作可能信号を送る。同様のダミー動作可能回路７８、８０、８２、８４が、上述した他の各回路部５８、６０、６２、６４に接続されている。
【００３０】
動作に際しては、実行すべき命令が、命令パイプライン６６を経由して、命令デコーダ６８に送られ、各回路部に供給される命令駆動可能信号を生成する。これらの可能信号は、データ処理システム５２中のデータパスを選択し、これらの入力を読み込むための回路部を動作させ、特定の処理を実行し、それらの関連した出力信号を生成するために用いられる。例えば、乗算器累積動作は、レジスタバンク５４からデータ値を読み出し、これらの値を乗算器５６と加算器６０に送り、その演算結果をレジスタバンク５４に書き戻す。このように、レジスタバンク５４、乗算器５６、加算器６０は、これらの動作を可能とし、完全なデータパスを形成するようにこれらを選択した要求動作可能信号に全て依存している。
【００３１】
異なる回路部は、異なる電力消費特性とタイミング特性を持っており、これらの特性は、どの命令がパラメータの観測をすることにより実行したかを外部観測により明らかにされる。従って、実行中の命令に必要でない他の回路部の擬似ランダムダミー動作も可能となる。このように、シフタ５８が、特定の実行中の乗算積算命令によって用いられていない場合でも、この装置は、その入力に与えられた値を変化させることにより、電力を消費するように、擬似ランダムに動作可能となる。その出力ラッチは、動作可能とはならず、このダミー動作が回路状態を変化させないようにして、要求操作と干渉することがないように、例えば、いくつかの回路部の出力値が存続するようにする。ダミー動作は、関連する回路部の通常の動作タイミングとマッチングをとっている間、動作可能とされる。
【００３２】
ランダムクロックゲート回路７０は、各々異なる回路部の複数の擬似ランダム可能信号を受信し、システム構成コプロセッサ７２内のシステム構成レジスタ７４から読み出した構成パラメータの制御のもとで、これらの信号をゲーティングして、各回路部に供給する。これらの構成フラグは、シフタ５８、ＡＬＵ６２および乗算器５６に対して、ダミー動作が可能であり、加算器６０あるいはロードストアユニット６４に対してはダミー動作が不可能であることを示している。異なる擬似ランダム可能信号により、異なる擬似ランダム特性が、これらの関連した回路部の各々に適合するように適用することが可能となる。例えば、異なる回路部ごとの通常タイミングに対応した、各々異なる最小可能時間を備えることができる。
【００３３】
全てのレベルにおいて、命令デコーダ６８は、現在実行中の命令により指定されたデータ処理操作を実行するのに必要となる回路部を動作可能とする要求動作可能回路として動作するものと見なすことができる。これらの要求動作に加え、他の回路部中での様々なダミー動作が、データ処理システム５２の残りの部分の様々な場所に設けられたダミー動作制御回路によって、動作可能・活動開始となる。ダミー動作により、要求動作についての電力消費とタイミング特性が隠蔽される。
【００３４】
図６は、要求可能信号ｅｎとダミー可能信号ｒｎｄの両者に依存した回路部８６の概略を示す図である。回路部８６は、ラッチのシーケンスを与えるものとして考えられ、各ラッチの間で処理ロジックはデータ値を処理するものとなっている。真の要求動作が必要となった際には、回路部８６を通るデータパスを与える全てのラッチが動作可能となり、入力ラッチと出力ラッチの間に要求処理が実行される。ダミー動作が命令された際には、入力ラッチと中間ラッチのみが動作可能となる。従って、データパスは、全ての回路部に渡って設定されることはなく、その回路部により生成された出力値は変更されない。
【００３５】
図７は、擬似ランダムクロック信号を生成するのに用いられる種類の線型フィードバックシフトレジスタを示した図である。これらのクロック信号は、図５のランダムクロック刻み回路７２に供給される。独立した擬似ランダム信号発生器が、異なる回路部に設けられている。各擬似ランダム信号発生器に対応した固定クロック周波数は、関連する回路部の特性に適合するように、さらに、必要となるマスク処理を隠すために変更される。
【００３６】
図８は、回路部に対する動作可能信号の制御の概要を示す図である。ステップ８８では、動作可能信号ｅｎが、命令デコーダ６８から受信されたかどうかを判定する。もし、この動作可能信号が受信されていたならば、ステップ９０に処理を進める。命令デコーダ６８からの動作可能信号は、デコード中の真のプログラム命令に対応して要求処理動作が必要であることを示すものである。従って、ステップ９０は、関連する回路部に対する、入力、出力およびクロック信号を動作可能とする。もし、命令デコーダから動作可能信号ｅｎを受信していないことをステップ８８で判定した場合には、ステップ９２に処理を進め、そこで、当該回路部のダミー動作を許可するかどうかを判定する。もし、ダミー動作が許可されるならば、ステップ９４に処理を進め、当該回路部への入力およびクロックを動作可能とする一方、当該回路からの出力は動作不可能とする。そして、その回路部は、ダミー動作を実行する。ダミー動作を許可しないことをステップ９２で判定した場合には、その判定はシステム構成パラメータで指定されるものであり、ステップ９４に処理を進めて処理を終了させる。
【００３７】
図８に示した処理は、シーケンスフロー図の形式で示したものである。実際には、この制御は、異なるシーケンスで実行されるものであってもよく、データ処理システム５２内の様々な回路素子を用いるものであってよい。シーケンシャルに実行されるものであると示した動作は、実際には、並行処理あるいは変更された制御機能により実行することも可能である。全てのレベルにおいて、各回路部は、適切なプログラム命令に応じてその通常要求動作を実行し、関連した構成パラメータで許可された場合にはダミー動作を実行することが可能である。
【００３８】
図９は、レジスタバンク９６の概略を示した図である。本レジスタバンクは、ユーザモード操作に対応したＡＲＭプロセッサのプログラマモデルに基づくものである。ＡＲＭプロセッサは、英国、ケンブリッジにあるＡＲＭ社が開発したプロセッサである。実際には、他のプロセッサモードに対する他のレジスタが設けられているが、これらは簡単化のために省略してある。通常データレジスタＲ０からＲ１５は、データ値を保持するために設けられている。レジスタＲ１３、Ｒ１４およびＲ１５は、通常は、プログラムカウンタ値、分岐戻りアドレス値およびスタックポインタを格納するためのものであり、これらの値は、セキュリティとは無縁のデータ値であることが多い。従って、レジスタＲ１３、Ｒ１４およびＲ１５については、データ書き込みに際して、遷移のバランスをとる処理は不要である。
【００３９】
廃棄レジスタＲＴが、レジスタバンク９６内に設けられ、条件コードに失敗した条件書き込み、すなわち、その条件コードに失敗し通常の書き込み動作を行わなかった条件書き込み命令に対して用いられる。しかし、本システムでは、この失敗した条件書き込み命令は、条件コードが失敗したとしても、データ値を廃棄データレジスタＲＴに書き込んでしまう。これは、条件書き込み操作の条件コード失敗や条件コードパスに対する電力消費やタイミングの違いを隠してしまうことになる。廃棄データレジスタＲＴは、命令中のレジスタ指定オペランドでアドレス指定できるような方法では、プログラマーズモードでは現われない。
【００４０】
廃棄データレジスタＲＴと同様に、さらに、ハイからロー、ローからハイへの遷移切換のために、レジスタ９８および１００が設けられている。専用のダミーレジスタ９８が、廃棄データレジスタＲＴと同様に、各データレジスタＲ０からＲ１２に設けられている。共有ダミーレジスタ１００は、遷移切換手法に依存して、データレジスタに書き込みが行われることに対応し、排他的ＯＲ値あるいは排他的ＯＲ値の逆数を格納するために設けられている。レジスタ書き込み制御回路１０２は、データレジスタへのデータ値書き込みに応じて、レジスタ９８および１００に書き込まれる適切なデータ値を生成するためのものである。この対称性をもつ書き込み制御は、システム構成コプロセッサ７２から与えられる適切なシステム構成制御フラグ信号によって、選択的に動作可能、動作不可能とされる。
【００４１】
図１０は、レジスタ書き込み制御回路１０２の動作の概略を示す処理フロー図である。ステップ１０４で、回路は、レジスタ書き込み動作の命令を待つ。ステップ１０６は、このレジスタ書き込みが、対称性書き込み制御システムが適用されたデータレジスタの一つに対するものであるか、廃棄データレジスタＲＴに対するものであるかを判定する。もし、レジスタ書き込みがこれらのレジスタに対するものでない場合には、ステップ１０８に処理を進め、レジスタＲ１３、Ｒ１４、Ｒ１５の一つに対して、要求データ値Ｘの単純な書き込みを行う。
【００４２】
もし、データが書き込まれるレジスタが、潜在的に、対称性レジスタ書き込みに対応している場合には、ステップ１１０で、この特徴を現在動作可能とすることができるかどうかを判定する。もし、この特徴が現在動作可能でない場合には、ステップ１０８に処理を進める。もし、この特徴が動作可能である場合には、ステップ１１２に処理を進める。
【００４３】
ステップ１１２では、レジスタ制御回路は、データ値内の各ビット位置に対して、書き込まれる現状ビットの排他的ＯＲの逆数となる値と、そのビット位置に前に格納されたダミーレジスタ値の排他的ＯＲとなる、その位置に前に格納されたビット値とを計算する（図１１参照）。また、レジスタ制御回路１０２は、データレジスタへのデータ値として書き込まれるビットの逆数と、書き込まれた結果の逆数とを計算する。これらの値は、書き込まれる全てのビットについて計算される（例えば、３２ビットの二つのダミー値）。
【００４４】
ステップ１１４では、ステップ１０８と同様に、データ値がデータレジスタに書き込まれる。ステップ１１６では、関係したレジスタ内の各ビット位置に対して決定されたさらなる三つの値が、さらなる三つのレジスタに書き込まれる。ステップ１１４と１１６は、同時に行われる。図１１で説明するように、この結果は、ハイからロー、ローからハイへの遷移の数となり、電力消費を与えるものとなる。
【００４５】
図１１は、データ書き込み前後の可能なビット値の表を示す図である。データ値は、レジスタＲｎに書き込まれ、このレジスタには、対称性書き込み動作関数が適用される。時刻ｔと時刻ｔ＋１の値が図示されている。これらの値の逆数は簡単に決定される。この対称性動作によるデータレジスタの各々は、専用のダミーレジスタ９８によって提供され、このレジスタは、データレジスタ中に現在保持されている値の逆数を格納するものである。
【００４６】
共有ダミーレジスタ１００は、図１１では、レジスタＲｄとして図示されている。共有ダミーレジスタＲｄ内の各ビット位置に対し、データ書き込みの際にそのビット位置に書き込まれる新しい値は、図１１の下方に示した関数により決定される。この関数は、データ値と、データ値の逆数に変化が生じない際に、共有ダミーレジスタと対応するビットと、その逆数に変化が起きることを保証するものである。表は、データ値が変化しないときには共有ダミーレジスタ値が変化することと、データ値が変化した時にはダミーレジスタ値中の共有値は変化しないことを示すものである。このように、各書き込みに対しては、固定した遷移数、すなわち、ハイからロー、ローからハイへの遷移数が同一となることが保証される。
【００４７】
図１３は、書き込み処理がその条件コードに失敗した際の書き込みを与えるダミーデータレジスタＲＤの動作の概略を示す処理フロー図である。ステップ１１８で、制御ロジックは、受信すべき命令を待つ。この制御ロジックは、命令デコーダ６８あるいは、その他のロジックである。ステップ１２０は、命令がその条件コードに失敗したかどうかを判定する。もし、命令が条件コードに失敗していない場合には、ステップ１１２において通常の処理を行い、当該命令内のレジスタオペランドにより指定されたレジスタへの書き込みを行う。もし、命令が条件コードに失敗した場合には、ステップ１２４に処理を進め、そこで、ダミーデータレジスタ書き込みが可能であるかどうかを判定する。もし、ダミーデータレジスタ書き込みが可能でない場合は、処理を終了する。もし、ダミーデータレジスタ書き込みが可能である場合は、ステップ１２６に処理を進め、条件コードには失敗したものの、条件コード失敗命令によって計算されたデータ値が、廃棄データレジスタＲＴに書き込まれる。これにより、条件コードの成否に関わらず、電力消費とタイミングのバランスがとられる。廃棄データレジスタＲＴは、上述した遷移バランス機構にも依存したものになっている。
【００４８】
図１３は、少なくとも複数の命令に対して、複数の命令実行機構が設けられたデータ処理システム１２８の概略を示した図である。データ処理システム１２８は、少なくとも複数のＪａｖａ（登録商標）バイトコード命令のネイティブ実行をサポートするものである。この種のデータ処理システムとネイティブ実行は、公開のＰＴＣ特許出願番号ＷＯ−Ａ−０２／２９５５５に記載されている。本出願の開示内容については、その全体と、特に、より複雑なＪａｖａ（登録商標）バイトコードのネイティブハードウェア実行と選択的なソフトウェアエミュレーションについて、ここで引用する。
【００４９】
Ｊａｖａ（登録商標）バイトコードデコーダ１３０は、入力信号により、選択的に実行可能および実行不可能にすることができる。Ｊａｖａ（登録商標）バイトコードデコーダ１３０が実行不可能である際には、受信したＪａｖａ（登録商標）バイトコードは、ネイティブのＡＲＭＴｈｕｍｂ命令セットを用いたＪａｖａ（登録商標）バイトコードを扱うためのソフトウェアエミュレーションコードの実行を開始する例外処理を起動する。このサポートコードは、図示した領域１３２中のメモリ内に格納されている。Ｊａｖａ（登録商標）バイトコードプログラム１３４は、メモリ中にも格納されている。Ｊａｖａ（登録商標）プログラム実行の特性を隠しておきたい場合には、Ｊａｖａ（登録商標）バイトコードデコーダ１３０は、本要素を選択的に動作可能あるいは動作不可能にする擬似ランダム信号に依存して動作し、ハードウェア実行とエミュレーション実行を混在させたものと、純粋なエミュレーション機構との間を効率的に切り替えて、Ｊａｖａ（登録商標）バイトコードの命令実行機構を提供する。システム構成レジスタ１３６内の構成制御値は、Ｊａｖａ（登録商標）デコーダ１３０がプリセットされているか、また、このＪａｖａ（登録商標）デコーダ１３０のランダムな動作可能と動作不可能とが許可されているかを指定するものである。
【００５０】
図１４は、受信されたＪａｖａ（登録商標）バイトコードの処理の概略を示す図である。ステップ１３８において、Ｊａｖａ（登録商標）バイトコードを受信する。ステップ１４０は、Ｊａｖａ（登録商標）デコーダ１３０が動作可能であるか否かを判定する。Ｊａｖａ（登録商標）デコーダ１３０の擬似ランダムな動作可能および動作不可能判定により、バイトコードを常時エミュレーションするステップ１４２への分岐と、ハードウェアにより命令実行を行うステップ１４６への分岐を効率的に行う。これにより、Ｊａｖａ（登録商標）バイトコード実行についての電力消費の痕跡を秘匿することができる。もし、ステップ１４６での判定の結果、実行対象となっているＪａｖａ（登録商標）バイトコードがＪａｖａ（登録商標）デコーダ１３０によりサポートされていない場合には、このＪａｖａ（登録商標）バイトコードはステップ１４２でソフトウェアによるエミュレーションで実行される。しかし、Ｊａｖａ（登録商標）バイトコードがハードウェアでサポートされている場合には、ステップ１４６でハードウェアにより実行される。
【図面の簡単な説明】
【００５１】
【図１】図１は、固定タイミングモードおよび可変タイミングモードで動作可能なデータ処理システムの概略を示す図である。
【図２】図２は、条件プログラム命令の概略を示す図である。
【図３】図３は、本発明による命令デコード層sにより実行される処理操作の一部の概略を示す処理フロー図である。
【図４】図４は、固定タイミングモードでの条件分岐命令の実行の概略を示す図である。
【図５】図５は、所定の処理操作か、ダミーの処理操作かを切り替えて実行可能としてある複数の回路部を含むデータ処理システムの概略を示す図である。
【図６】図６は、要求されたイネーブル信号とランダムなダミー処理イネーブル信号の両方に応答する、回路部と、それに関連したダミー処理イネーブル回路の概略を示す図である。
【図７】図７は、擬似ランダム信号発生器として用いられる、線型シフトバックフィードレジスタの概略を示す図である。
【図８】図８は、要求された処理操作とダミーの処理操作を実行する回路部の制御の概略を示す処理フロー図である。
【図９】図９は、複数のデータ処理レジスタと、複数のダミーレジスタと、複数の共有ダミーレジスタと、条件書き込み操作で条件コードを誤った際に、ダミーレジスタ書き込みが行われたマッピングされていないを含むレジスタバンクの概略を示す図である。
【図１０】図１０は、レジスタ書き込みが発生した際に、ハイからローおよびローからハイへの数値変化のバランスを探索するレジスタ書き込み制御回路の処理の概略を示す処理フロー図である。
【図１１】図１１は、レジスタ書き込みに伴い、ハイからローおよびローからハイへの数値変化のバランスをとるように構成されたデータレジスタと他の三つのレジスタ内の特定のビットのビット遷移間の関係を表す表である。
【図１２】図１２は、書き込み操作で条件コード誤りを起こした際の、廃棄レジスタへの書き込み制御の概略を示す処理フロー図である。
【図１３】図１３は、複数の命令実行機構と、少なくともいくつかの命令で用いられる実行機構の擬似ランダム選択とを有するシステムの概略を示す図である。
【図１４】図１４は、図１３のシステムの制御の概略を示す処理フロー図である。
【図１】
0004511461.tif 000002
【図２】
0004511461.tif 000003
【図３】
0004511461.tif 000004
【図４】
0004511461.tif 000005
【図５】
0004511461.tif 000006
【図６】
0004511461.tif 000007
【図７】
0004511461.tif 000008
【図８】
0004511461.tif 000009
【図９】
0004511461.tif 000010
【図１０】
0004511461.tif 000011
【図１１】
0004511461.tif 000012
【図１２】
0004511461.tif 000013
【図１３】
0004511461.tif 000014
【図１４】
0004511461.tif 000015