"暗号CPUアーキテクチャであって、ALUと、制御フラグと、算術命令に応じて前記ALUの出力を通常、受ける複数のレジスタと、前記制御フラグがセットされている場合に算術命令に応じて、前記複数のレジスタのうちの1つの代わりに、前記ALUの出力を受ける更なるレジスタと、第1のプログラムカウンタと、第2のプログラムカウンタとを備え、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタは、前記制御フラグがセットされていない場合に前記第1のプログラムカウンタがイネーブルされるように、かつ前記制御フラグがセットされている場合に前記第2のプログラムカウンタがイネーブルされるように前記制御フラグの状態に応じるものであり、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタのうち、イネーブルされたプログラムカウンタが算術命令をフェッチし、前記制御フラグがセットされた少なくとも1つの第1の算術命令及び前記制御フラグがセットされていない少なくとも1つの第2の算術命令が、前記暗号CPUアーキテクチャによって生成される換字/転置ボックス全てが同数のシフト命令を有するようにセットされた値に等しいシフト命令数を有するように換字/転置ボックスに合成されるか、又は、前記制御フラグがセットされた少なくとも1つの第1の算術命令及び前記制御フラグがセットされていない少なくとも1つの第2の算術命令が、前記暗号CPUアーキテクチャによって生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるようにランダムに生成された値に等しいシフト命令数を有するように換字/転置ボックスに合成されることを特徴とする暗号CPUアーキテクチャ。請求項1記載の暗号CPUアーキテクチャであって、前記ALUは、前記第1のプログラムカウンタによってフェッチされた算術命令の結果を前記複数のレジスタの1つに出力し、前記ALUは、前記第2のプログラムカウンタによってフェッチされた算術命令の結果を前記更なるレジスタに出力し、かつ/又は、前記更なるレジスタは、前記ALUに対してデータを転送するための出力を何ら有していないダミーレジスタであり、かつ/又は、前記レジスタ及び前記更なるレジスタはそれぞれ、前記レジスタ及び前記更なるレジスタへのデータの前記転送を制御する関連ゲートを有しており、前記関連ゲートは、前記制御フラグの前記状態によって制御され、かつ/又は、前記制御フラグがセットされていない場合に、前記第1のプログラムカウンタのみが前記算術命令をフェッチし、前記制御フラグがセットされている場合に、前記第2のプログラムカウンタのみが前記算術命令をフェッチすることを特徴とする暗号CPUアーキテクチャ。プログラムの実行中の電力解析から、CPUにおいて行われるデータ処理を隠す方法であって、i前記プログラムの前記実行中の一時点で、生成される換字/転置ボックス全てが同数のシフト命令を有するように、選択された長さを換字/転置ボックスが有するか、又は、生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるようにランダムに生成された数のシフト命令を換字/転置ボックスそれぞれが有するように、換字/転置ボックスに、ランダムな数のプログラムカウンタサイクル命令フェッチサイクルを挿入する工程と、ii前記ランダムな数の命令フェッチサイクルが行われている間に、メモリから命令をフェッチし、プログラムシーケンスにおいて該命令を実行する一方、該命令の該実行に基づいて通常のメモリ位置の更新を抑制する工程と、iii前記ランダムな数の命令の終わりに、前記ランダムな数の命令フェッチサイクルが行われている間に当初フェッチされた命令と同じ命令を再フェッチすることにより、通常プログラム実行を再開する一方、該命令が再フェッチされた場合に、前記CPUのメモリ位置を通常のやり方で更新する工程とを備え、かつ/又は、前記ランダムな数の命令フェッチサイクルが行われている間に第1のプログラムカウンタのみが命令をメモリからフェッチし、前記ランダムな数の命令の終わりに、第2のプログラムカウンタのみが同じ命令を再フェッチする工程を備えることを特徴とする方法。請求項3記載の方法であって、前記ランダムな数のプログラムカウンタサイクル命令フェッチサイクルを挿入する工程は、ランダム命令マスク制御フラグの状態によって制御され、かつ/又は、前記ランダムな数の命令フェッチサイクルが行われている間に、命令の前記実行に基づいてダミーメモリ位置を更新することを特徴とする方法。サイクル長が可変の複数の換字/転置ボックスを含むプログラムの実行中の電力解析から、CPUにおいて行われるデータ処理を隠す方法であって、i前記プログラムの前記実行中の一時点に、特定の数のプログラムカウンタサイクル命令フェッチサイクルを前記複数の換字/転置ボックスのうちの1つ又は複数に挿入する工程と、ii前記特定の数の命令フェッチサイクルが行われている間に、a命令をメモリからフェッチする工程、bプログラムシーケンスにおいて該命令を実行する工程、及びc前記複数の換字/転置ボックスが同数のシフト命令を有するか、又は、前記複数の換字/転置ボックスそれぞれが、生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるようにランダムに生成された数のシフト命令を有するように前記複数の換字/転置ボックスのうちの前記1つ又は複数の結果として生じるサイクル長をセットすることにより、結果をメモリレジスタに書き込む工程に関連付けられた電力消費をマスクする工程とを含み、かつ/又は、前記プログラムを実行する場合に第1のプログラムカウンタのみが命令をフェッチし、前記ランダムな数の命令フェッチサイクルが行われている間、第2のプログラムカウンタのみが命令をフェッチすることを特徴とする方法。データプロセッサであって、算術論理演算装置と、制御フラグレジスタと、換字/転置算術命令に応じ、かつ前記制御フラグレジスタの第1の状態に応じて前記算術論理演算装置の出力を通常、受ける複数のレジスタと、他の算術命令に応じ、かつ前記制御フラグレジスタの第2の状態に応じて前記複数のレジスタのうちの1つの代わりに、前記算術論理演算装置の出力を受けるダミーレジスタとを備え、前記換字/転置算術命令及び前記他の算術命令は換字/転置ボックスに合成され、前記データプロセッサは、前記換字/転置ボックスが同数のシフト命令を有するようにセットされた値に等しい特定の数のシフト命令を有するか、又は、生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるように前記算術命令と関係をたたれた特定の数のシフト命令を換字/転置ボックス全てが有するようにランダムに生成された数に等しい数のシフト命令を有するように前記換字/転置ボックスのシフト命令の合計数をセットすることを特徴とするデータプロセッサ。請求項6記載のデータプロセッサであって、第1のプログラムカウンタと、第2のプログラムカウンタとを更に備え、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタは、前記制御フラグが前記第1の状態にある場合に前記第1のプログラムカウンタのみが、前記算術論理演算装置によって処理する対象の前記算術命令をフェッチし、前記制御フラグが前記第2の状態にある場合に前記第2のプログラムカウンタのみが、前記算術論理演算装置によって処理する対象の別の算術命令をフェッチするように前記制御フラグの状態に応じることを特徴とするデータプロセッサ。請求項7記載のデータプロセッサであって、前記算術演算装置は、前記第1のプログラムカウンタによってフェッチされた算術命令の結果を前記複数のレジスタの1つに出力し、前記算術演算装置は、前記第2のプログラムカウンタによってフェッチされた算術命令の結果を前記ダミーレジスタに出力し、かつ/又は、前記ダミーレジスタは、前記算術演算装置に対してデータを転送するための出力を何ら有しておらず、かつ/又は、前記レジスタ及び前記ダミーレジスタはそれぞれ、前記レジスタ及び前記ダミーレジスタへのデータの前記転送を制御する関連ロジックゲートを有し、前記関連ロジックゲートは前記制御フラグレジスタの状態によって制御されることを特徴とするデータプロセッサ。暗号システムであって、ALUと、制御フラグと、前記制御フラグがセットされている場合に第1の算術命令に応じて、前記ALUの出力を受けるダミーレジスタと、前記制御フラグがセットされていない場合に第2の算術命令に応じて、前記ALUの出力を受ける複数のレジスタとを備え、前記制御フラグがセットされた前記第1の算術命令及び前記制御フラグがセットされていない前記第2の算術命令が、換字/転置ボックスに合成され、換字/転置ボックス全てがほぼ同じ電力シグネチャを有するようにセットされた値に等しい電力シグネチャを前記換字/転置ボックスが有するか、又は、生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるようにランダムに生成された値に等しい電力シグネチャを前記換字/転置ボックスが有するように前記換字/転置ボックスのシフト命令の合計数がセットされ、前記複数のレジスタ及び前記ダミーレジスタはそれぞれ、前記複数のレジスタ及び前記ダミーレジスタに対するデータの転送を制御するために、関連付けられたゲートを有し、前記ダミーレジスタに関連付けられた前記ゲートの入力は何れも、前記制御フラグの前記状態によって制御され、前記複数のレジスタに関連付けられた前記ゲートの位置入力のみが前記制御フラグによって制御され、かつ/又は、前記第1の算術命令は前記第2の算術命令であることを特徴とする暗号システム。請求項9記載の暗号システムであって、第1のプログラムカウンタと、第2のプログラムカウンタとを更に備え、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタは、前記制御フラグがセットされている場合に前記第1のプログラムカウンタのみが前記第1の算術命令をフェッチし、前記制御フラグがセットされていない場合に前記第2のプログラムカウンタのみが前記第2の算術命令をフェッチするように前記制御フラグの状態に応じ、かつ/又は、前記制御フラグがセットされていない場合に前記第1のプログラムカウンタがイネーブルされるように、かつ前記制御フラグがセットされている場合に前記第2のプログラムカウンタがイネーブルされるように前記制御フラグの状態に応じ、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタの一方が算術命令をフェッチすることを特徴とする暗号システム。暗号システムであって、ALUと、命令を記憶するメモリと、制御フラグと、前記制御フラグがセットされている場合に前記命令に応じて、前記ALUの出力を受けるダミーレジスタと、前記制御フラグがセットされていない場合に同じ命令に応じて、前記ALUの出力を受ける複数のレジスタとを備え、前記制御フラグがセットされた少なくとも第1の算術命令及び前記制御フラグがセットされていない少なくとも第2の算術命令が、暗号CPUアーキテクチャによって生成される換字/転置ボックス全てが同数のシフト命令を有するようにセットされた値に等しい数のシフト命令を換字/転置ボックスが有するように換字/転置ボックスに合成され、又は、前記制御フラグがセットされた少なくとも第1の算術命令及び前記制御フラグがセットされていない少なくとも第2の算術命令が、前記暗号CPUアーキテクチャによって生成される換字/転置ボックス全てがランダムな時間間隔によって隔てられるようにランダムに生成された数に等しい数のシフト命令を換字/転置ボックスが有するように換字/転置ボックスに合成され、かつ/又は、前記他の算術命令は、算術命令であることを特徴とする暗号システム。請求項11記載の暗号システムであって、第1のプログラムカウンタと、第2のプログラムカウンタとを更に備え、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタは、前記制御フラグがセットされている場合に前記第1のプログラムカウンタのみが、前記ALUによって処理される対象の命令をフェッチし、前記制御フラグがセットされていない場合に前記第2のプログラムカウンタのみが、前記ALUによって処理される対象の同じ命令をフェッチすることを特徴とする暗号システム。暗号CPUアーキテクチャであって、ALUと、制御フラグと、算術命令に応じて前記ALUの出力を通常、受ける複数のレジスタと、前記制御フラグがセットされている場合に算術命令に応じて、前記複数のレジスタのうちの1つの代わりに、前記ALUの出力を受ける更なるレジスタと、第1のプログラムカウンタと、第2のプログラムカウンタとを備え、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタは、前記制御フラグがセットされていない場合に前記第1のプログラムカウンタがイネーブルされるように、かつ前記制御フラグがセットされている場合に前記第2のプログラムカウンタがイネーブルされるように前記制御フラグの状態に応じるものであり、前記第1のプログラムカウンタ及び前記第2のプログラムカウンタのうち、イネーブルされたプログラムカウンタが算術命令をフェッチし、前記制御フラグがセットされた少なくとも1つの第1の算術命令及び前記制御フラグがセットされていない少なくとも1つの第2の算術命令が、前記暗号CPUアーキテクチャによって生成される換字/転置ボックス全てが同数のシフト命令を有するようにセットされた値に等しいシフト命令数を有するように換字/転置ボックスに合成されることを特徴とする暗号CPUアーキテクチャ。暗号バスアーキテクチャであって、複数ビットの乱数が出力される複数の乱数出力を有する乱数生成器と、複数の双方向バスドライバであって、それぞれが、前記乱数出力の少なくとも1つを受ける少なくとも1つの入力をそれぞれが有する双方向バスドライバと、前記双方向バスドライバの少なくとも他方を、前記複数の双方向バスドライバの少なくとも一方に結合するバスとを備え、前記バスの共通線に結合された双方向バスドライバは、前記乱数出力のうちの、選択された共通の乱数出力によって制御されることを特徴とする暗号バスアーキテクチャ。請求項14記載の暗号バスアーキテクチャであって、前記複数の乱数出力がカムフラージュされ、かつ/又は、前記複数の双方向バスドライバの少なくとも1つは、通常反転するトライステートバッファを備え、前記複数の双方向バスドライバのうちの少なくとも別のものは、通常反転しないトライステートバッファを備え、かつ/又は、前記複数の双方向バスドライバに結合されたデュアルレール組を更に備え、前記デュアルレール組は前記バスをCPU又はメモリに結合し、かつ/又は、前記乱数生成器は、前記乱数生成器に新たな乱数を放出させる制御信号に対する応答性を有し、かつ/又は、前記制御信号はプロセッサによって生成され、かつ/又は、前記制御信号はソフトウェア命令に応じて前記プロセッサによって生成されることを特徴とする暗号バスアーキテクチャ。セキュリティの漏洩を妨げる方法であって、バスを介して暗号化ビットを送出する工程と、前記バス上の前記暗号化ビットの極性をランダムに切り替える工程とを備え、前記バスは、前記バス上で並列に送信されるビット毎にデュアルレールを有しており、前記デュアルレールの一方のレールは、前記デュアルレールの他方のレールに対して反転されており、前記バス上の前記暗号化ビットの極性をランダムに切り替える工程は、前記バスを介して前記暗号化ビットを送出する工程よりも低い頻度で行われることを特徴とする方法。セキュリティの漏洩を妨げる方法であって、バス上で並列に送信されるビット毎にデュアルレールを有するバスを介して暗号化ビットを送出する工程を備え、前記デュアルレールの一方のレールは、前記デュアルレールの他方のレールに対して反転されており、前記デュアルレールの他方のレールと比較して反転させた前記デュアルレールの一方のレールは、前記デュアルレール間でランダムに切り替えられることを特徴とする方法。秘密データを保護する方法であって、複数の双方向バスドライバを備える工程と、第1の双方向バスドライバと第2の双方向バスドライバとの間で秘密データを伝送するために、前記複数の双方向バスドライバのうちの少なくとも第1の双方向バスドライバと前記複数の双方向バスドライバのうちの第2の双方向バスドライバとの間にデータバスを結合する工程と、ビットの組を前記バスに供給する旨を前記第1の双方向バスドライバに通知する工程であって、前記ビットの組のビットはそれぞれ、前記ビットの論理値と前記バス上の各ビットの電圧レベルを関連付ける極性手法を有し、前記ビットの組のビット毎の前記極性手法は、極性制御線のうちの1つによって選択される工程と、複数の制御線によって選択される特定の極性手法及び前記ビットの組を受信する旨を前記第2の双方向バスドライバに通知する工程と、前記ビットの電圧レベルが前記論理値とどのようにして関連付けられるかを変更するよう複数の極性制御線をランダムに切り替える工程と含むことを特徴とする方法。請求項18記載の方法であって、前記第1の双方向バスドライバ及び前記第2の双方向バスドライバの前記複数の極性制御線をカムフラージュする工程を更に備えることを特徴とする方法。情報漏洩攻撃を妨げる方法であって、バスの第1の端部から前記バスの第2の端部に送信される対象の複数ビットデータ信号のビットの極性をランダムに反転させる工程と、前記バスの前記第2の端部において前記複数ビットデータ信号を回復し得るように前記バスの前記第1の端部において前記ビットの前記極性がランダムに反転させられている旨を前記バスの前記第2の端部に通知する工程とを含み、前記方法はチップからの情報漏洩を妨げ、前記複数ビットデータ信号のランダムに選択された少なくとも1つのビットの極性の反転が前記バスの前記第1の端部において行われている旨を前記バスの第2の端部に通知する工程が、リバースエンジニアリングに可視である前記チップの回路表面の特徴の下に埋設された少なくとも1つの極性制御線上でデータを伝送することによって行われ、かつ/又は、前記バスの前記第1の端部上の前記複数ビットデータ信号は、前記バスの前記第1の他支部における前記複数ビットデータ信号の前記ビットのうちの少なくとも1つの前記極性の前記ランダムな反転よりも頻繁に変動することを特徴とする方法。暗号バスアーキテクチャであって、複数ビット乱数を生成する乱数生成器と、第1の複数の双方向バスドライバ及び第2の複数の双方向バスドライバであって、各双方向バスドライバが、前記乱数の選択ビットに対する応答性を有する制御入力を有する双方向バスドライバと、前記第1の複数の双方向バスドライバを前記第2の複数の双方向バスドライバに結合するバスとを備え、双方向バスドライバそれぞれが、前記バスの単一線に関連付けられており、前記バスの共通線に結合された前記双方向バスドライバが、乱数の共通ビットに対する応答性を有することを特徴とする暗号バスアーキテクチャ。請求項21記載の暗号バスアーキテクチャであって、前記乱数生成器は、複数のカムフラージュされた乱数出力ポートを有し、かつ/又は前記双方向バスドライバは、その制御入力におけるデータの状態によって判定されるものとしての、反転型トライステートバッファ又は非反転型トライステートバッファを備え、かつ/又は前記第1の複数の双方向バスドライバ及び前記第2の複数の双方向バスドライバに結合された第1のデュアルレール組及び第2のデュアルレール組を更に備え、前記第1のデュアルレール組及び第2のデュアルレール組は前記バスをCPU及びメモリに結合することを特徴とする暗号バスアーキテクチャ。暗号バス配置であって、複数ビット乱数が出力される複数の乱数出力部を有する乱数生成器と、複数の双方向バスドライバとを備え、各双方向バスドライバが、前記複数ビット乱数の少なくとも1つのビットの状態の関数として、暗号バスとの間で書き込み、読み出すデータのデータビットを反転させるか、又は反転させないために前記複数ビット乱数の少なくとも1つのビットを受け取るための少なくとも1つの入力部、及び暗号バスのデータを読み出し、書き込むための論理ゲートを有することを特徴とする暗号バス配置。請求項23記載の暗号バス配置であって、前記複数の双方向バスドライバは、前記暗号バスの第1の端部に結合され、前記暗号バス配置は更に、第2の複数の双方向バスドライバを備え、前記第2の複数の双方向バスドライバはそれぞれ、前記暗号バスの第2の端部においてデータを読み出し、書き込むための論理ゲートと、少なくとも1つのビットの状態の関数として前記暗号バスから読み出され、前記暗号バスに書き込まれるデータを反転するか、又は反転しないために前記複数ビット乱数のうちの少なくとも1つのビットを受け取るための少なくとも1つの入力部とを有し、第1の複数の双方向バスドライバのうちの特定の双方向バスドライバ及び第2の複数の双方向バスドライバのうちの特定の双方向バスドライバが前記暗号バスの共通の導体と通信する場合、前記第1の複数の双方向バスドライバのうちの前記特定の双方向バスドライバ及び前記第2の複数の双方向バスドライバのうちの前記特定の双方向バスドライバは、それらの少なくとも1つの入力部を前記複数ビット乱数の共通ビットに結合させることを特徴とする暗号バス配置。方法であって、チップのバスの第1の端部から前記チップのバスの第2の端部に送信される対象の複数ビットデータのランダムに選択されたビットの極性を反転させる工程と、選択されたビットの極性を反転させて前記複数ビットデータを送信する工程と、前記チップの前記バスの前記第1の端部において、ランダムに選択されたビットの反転が行われた旨を、前記チップの前記バスの前記第2の端部に通知する工程と、前記バスの前記第2の端部において、選択されたビットの極性が反転させられた前記複数ビットデータを受信する工程と、前記マルチビットデータの元の形式を前記バスの前記第2の端部において回復し得るように前記チップの前記バスの前記第2の端部において、受信されたデータの前記ランダムに選択されたビットの前記極性を反転させる工程とを含むことを特徴とする方法。前述の従来技術手法は特定の制約を有しており、よって改良を必要としている。本発明は、事実上、電力消費と暗号ビット値とを互いに関係付けることを不能にする、DPA処理に対する対抗手段としての、独自のランダム命令マスクRIMを提案するものである。本発明は、Messergesの手法、Boecklerの手法や他の手法に対して次の利点を有している。1計算がより効率的である:Messergesらの教示による手法は、Sボックスの定期的な更新によって300乃至500、DESアルゴリズムを減速させるものである。本発明では、DESアルゴリズムは、約15、減速することになる。2よりロバストである:複数アドレス位置について情報の漏洩が存在している場合にもこれがあてはまる。3保護がより好適である;鍵の48ビットは、最終DESラウンドにおいて完全に隠すことが可能であるDESでは、出力がアルゴリズムの最後でマスク解除され、それによって鍵を露出させることになり、このことは従来技術では解決されない。4電力消費が低い:電力消費を暗号処理中に約200まで増加させる、Boecklerのランダムな現行プロファイリングに対して、電力消費の増加は1未満である。本明細書記載の好ましい実施例の詳細を説明する前に、DESアルゴリズム及びDPA攻撃に関する更なる詳細を記載する。この分野に不案内の場合、更なる情報を次の論文で見つけることができるP.Kocher、J.Jaffe及びB.JunによるIntroductiontoDifferentialPowerAnalysisandRelatedAttacks、1998、ThomasS.Messergers、EzzyA.Dabbish及びRobertH.SloanによるInvestigationsofPowerAnalysisAttacksonSmartcards、ProceedingsofUSENIXWorkshoponSmartcardTechnology、Chicago、Illinois、May1999、pp.151-161、並びに、ManfredAigner及びElisabethOswaldによるPowerAnalysisTutorial、InstituteforAppliedInformationProcessingandCommunicationsUniversityofTechnologyGraz、Austria。本願記載の手法の詳細な説明の背景を示す記載を以下に設ける。DESアルゴリズムは、反復ブロック暗号の例である。DESは、内容を本明細書及び特許請求の範囲に援用する、ANSIX.392、AmericanStandardforDataEncryptionAlgorithmDEA、AmericanStandardInstitute、1981に詳細に説明されている。DES暗号は周知であり、ラウンドと呼ばれるプログラムシーケンスにおいて設けられたいくつかの通常、16個の換字転置ボックスSPボックス関数を利用するものである。SPボックス関数は、非線形であり、通常、ルックアップテーブル若しくはブール論理ゲート、又は適切にプログラムされたコンピュータを用いて実施される。16ラウンドのそれぞれでは、DES暗号化アルゴリズムは、8つのSPボックス演算を、今度は、各ルックアップテーブルを順次アクセスすることによって、又は、同等の論理ゲートを用いることによって行う。8つのSPボックスそれぞれは入力として、スクランブルされたここで、スクランブルされたということは、鍵のXOR及びシフトが行われることを意味する6ビット鍵を得て、OR演算を行うためにCPUによってアクセスされる対象の4ビット出力目標を生成する。前述のスクランブルされた6ビット鍵それぞれはSPボックスのエントリアドレスである。表1は、DESの32ビット実施形態におけるSPボックス1及び2のC言語表現を示す。DESは16ビット、32ビット及び64ビットで実行することが可能であるが、基準例として32ビット表現を選んでいる。表1から、各SPルックアップが64個のエレメントを含んでいることが分かる。基準DES実施形態における各エレメントは32ビットであり、このエレメントには、特定の4ビット出力目標が埋め込まれている。この埋め込みは次に、更に詳細に説明する。データバスは通常、幅が32ビットであり、この4ビット出力目標を、表1において示唆される転置規則SPボックス毎1つによって32ビット語内のどこかに分布させる。表1では、データは16進形式で示す。すなわち、各SPルックアップテーブルは、特定の4ビット出力目標について別々の埋め込み位置を有する。例えば、表1に示すルックアップテーブルSP1は、32ビット語におけるビット位置24、16、10及び2において4ビット出力目標を埋め込む。ルックアップテーブルSP2は、ビット位置20、5、31及び15において4ビット出力目標を埋め込む。ここで、特定の4ビット出力の場合、ビット20は最上位ビットMSBであり、ビット15は最下位ビットLSBである。更なる例証として、ルックアップテーブルSP1の最初の4つのエントリすなわち、SP1[0:3]={0x01010400L,0x00000000L,0x00010000L,0x01010404L}は、14、0、4、15の4ビット出力目標値を有する。特に、SP[0]={0x01010400L}には、14の4ビット出力目標値すなわち、1110が埋め込まれる。例えば、SP1[0]の場合、32ビット2進語は00000001000000010000010000000000である。特定の32ビット2進語の場合、最も右の桁はLSBである一方、最も左の桁はMSBである。4ビット出力目標を導き出すために、24、16、10及び2におけるビット値が用いられる。例えば、SP1[0]の場合、4ビット目標は1110である。これは、32ビット2進語SP1[0]の位置24における4ビット出力目標のMSB値を探すことによって定められ、次のビットは32ビット2進語SP1[0]の位置16にあり、第3のビットは32ビット2進語SP1[0]の位置10にあり、最後に0のLSBは、32ビット2進語SP1[0]の位置2にある。上記2進表現では、ビット位置24、16、10及び0に下線を引いている。第4のエントリSP1[3]={0x01010404L}LSBのみでSP1[0]の1110とは異なるは、4ビット出力目標値15すなわち、1111を有する。一方、ルックアップテーブルSP2は、ルックアップテーブルSP2の最初の4つのエントリに示す、異なる埋め込みビット位置手法を示すすなわち、SP2[0:3]={0x80108020L,0x80008000L,0x000080000L,0x00108020L}である。対応する4ビットブロックの15、3、1及び13の値を反映するために、ビット位置20、5、31及び15における内容のみを変更する。特に、ルックアップテーブルSP2の第1のエントリSP2[0]={0x80108020L}は、4ビット出力目標値15すなわち、1111を有するが、それは、ビット20、ビット5、ビット31及びビット15が全て1の値を有するからである。第4のエントリSP2[3]={0x00108020L}第2のLSBのみで、SP2[0]の1111とは異なるは、4ビット目標値13すなわち、1101を有する。4ビット出力目標と、それに対応するSPボックスのエントリとの間の関係を明らかにすると、次に、特定のSPボックスのエントリアドレスの計算を記載する。一般に、DESアルゴリズムは、CPUにおいて実行しているシフト命令を用いてボックスのエントリアドレスを計算する。特定のSPボックスのエントリアドレスの計算において用いるシフト命令の数も、SPボックスの各連続アクセス間の時間間隔も、DESアルゴリズムに詳しい者には周知である。このことに鑑みれば、DPA攻撃は、そのボックスに特有の先行シフト命令署名を参照することによる、SPボックスの各4ビット出力目標の電力トレースのアラインメントに焦点を当てるものである。表2に示すように、通常の演算では、各SPボックスのアクセスには、異なる量のシフトすなわち、>>8、>>16又は>>24>>はCコンピュータ言語において右シフトを表し、よって、>>nは、nビットの右シフトを表すが先行する。表2におけるルーチンがCコンピュータ言語で記述されていることを当業者は認識するであろう。図2aは、8つのSPボックス[SP1...SP8]の通常のアクセス順序に対応するタイムラインを示す。各シフト命令は通常、一度に1ビット、シフトするので、>>8は通常、8ビット右シフト命令を示唆し、>>16は通常、16ビット右シフト命令を示唆する等である。SP5のシフトは、数字131によって示す。電力トレースのアラインメントを行うために、DPA攻撃者は、電力トレースにおけるパターンを探す。SPボックス5SP5のSPアドレス計算を明らかにするため、DPA攻撃者は、表2においてわかるように8シフトを示すパターンを探す。更に、DPA攻撃者は、8シフト数字131を参照のことの最初から次のシフト組の最初までの時間が、図2aに示す時間TI5に等しいことが分かるものである。よって、電力トレースにおけるこのパターンが分かると、DPA攻撃者は、SP5のSPアドレス計算が数字123で明らかになったことが分かるものである。更に、攻撃者は、8シフトの最後に続く時間スロットの電力トレースにおける情報が、対応する4ビット出力目標情報を含むことも分かるものである。この情報によって、6ビット鍵に関する情報を供給する統計的平均化の電力トレースのアラインメントが可能になる。電力トレースには雑音があり、よって、命令署名や他のパターンを見つけることが、DPA攻撃の成功を保証しないことがあり得ることを当業者が認識するであろう。しかし、命令署名や他のパターンが従来技術において、攻撃者が用いるうえで入手可能である。こうした命令署名及び時間パターンを破壊することによって、DPA攻撃の成功の可能性はもっと低くなる。図2bは、8つのSPボックスのアクセス順序を無作為化させたタイムラインを示す。図2bに例証するように、SP1及びSP3の処理の順序が交換されており、SP4及びSP6も同様である。この場合には、SPボックスアクセス順序を入れ替えることによって、こうしたシフト命令署名を識別して電力トレースのアラインメントを行わなければならないことになる。特定のSPボックスのアラインメントの後、こうした電力トレースの統計的平均化や他の解析を行うことが可能である。よって、DPA攻撃者は最終的に電力トレースのアラインメントを行って6ビット鍵を明らかにすることが可能である。一実施例では、本発明は、暗号装置のDPAの成功を抑制する方法を提供し、この方法は、少なくとも1つのルックアップテーブルアドレスを判定するのに必要な時間量をランダムに変更する工程と、少なくとも1つのルックアップテーブルの1つのアクセスと別のルックアップテーブルの後のアクセスとの間で生じる時間量をランダムに変更する工程を備える。別の実施例では、本発明は、暗号アーキテクチャを提供する。暗号アーキテクチャは、プロセッサと、プロセッサに結合された、暗号アルゴリズムを含むメモリモジュールと、プロセッサに結合され、プロセッサの状態処理を制御する制御フラグレジスタと、制御フラグレジスタに結合された乱数生成器とを備え、プロセッサは制御フラグレジスタをセットし、乱数生成器は制御フラグレジスタをリセットする。更に別の実施例では、本発明は、DPAを妨害するシステムを提供し、このシステムは、暗号化アルゴリズムを実行する手段と、ランダムな数の疑似命令を暗号化アルゴリズムに挿入する手段とを備える。更に別の実施例では、本発明は、チャネル情報の無相関化を行うシステムを提供し、このシステムは、データ暗号化規格DESアルゴリズムを実行する手段を備え、DESアルゴリズムは、複数の換字/転置ボックスエントリアドレス評価と、複数の換字/転置ボックスエントリアドレス評価それぞれにおいて実行されるランダムな数のシフト命令を挿入する手段とを備える。更に別の実施例では、本発明は、暗号アーキテクチャの電力トレースを変える方法を提供し、この方法は、暗号化アルゴリズムを実行する工程と、制御フラグをセットする工程と、制御フラグがセットされている場合にランダムな数の命令を行う工程とを備える。なお更に別の実施例では、本発明は、暗号装置の差分電力解析の成功を抑制する方法を提供し、この方法は、少なくとも1つのルックアップテーブルアドレスを判定するのに必要な時間量をランダムに増加させる工程と、少なくとも1つのルックアップテーブルの一アクセスと、別のルックアップテーブルの後のアクセスとの間に生じる時間量をランダムに増加させる工程とを備える。なお更にもう1つの別の実施例では、本発明は、暗号アーキテクチャを提供する。暗号アーキテクチャは、プロセッサと、プロセッサに結合された、暗号アルゴリズムを含むメモリモジュールと、プロセッサに結合され、プロセッサの状態処理を制御する制御フラグレジスタと、制御フラグレジスタに結合された乱数生成器とを備え、プロセッサは制御フラグレジスタをセットし、乱数生成器は制御フラグレジスタをリセットする。更に別の実施例では、本発明は、差分電力解析を妨害するシステムを提供し、このシステムは、暗号化アルゴリズムを実行する手段と、ランダムな数の疑似命令を暗号化アルゴリズムに挿入する手段とを備える。なお更に別の実施例では、本発明は、設計者が予想しなかった情報の無相関化を行うシステムを提供し、このシステムは、データ暗号化規格DESアルゴリズムを実行する手段を備え、DESアルゴリズムは、複数の換字/転置ボックスエントリアドレス評価と、複数の換字/転置ボックスエントリアドレス評価それぞれにおいて実行されるランダムな数のシフト命令を挿入する手段とを備える。更に別の実施例では、本発明は、暗号アーキテクチャの電力トレースを変える方法を提供し、この方法は、暗号化アルゴリズムを実行する工程と、制御フラグをセットする工程と、制御フラグがセットされている場合にランダムな数の命令を行う工程とを備える。更に別の実施例では、本発明は、暗号CPUアーキテクチャを提供する。暗号CPUアーキテクチャは、ALUと、制御フラグと、算術命令に応じてALUの出力を通常、受ける複数のレジスタと、制御フラグがセットされている場合に算術命令に応じて、複数のレジスタのうちの1つの代わりに、ALUの出力を受ける更なるレジスタとを備える。更に別の実施例では、本発明は、プログラムの実行中の電力解析から、CPUにおいて行われているデータ処理を隠す方法を提供する。この方法は、iプログラムの実行の一時点で、ランダムな数のプログラムカウンタサイクル命令フェッチサイクルを挿入する工程と、iiランダムな数の命令フェッチサイクルが行われている間に、メモリから命令をフェッチし、プログラムシーケンスにおいてこうした命令を実行する一方、こうした命令の実行に基づいて通常のメモリ位置の更新を抑制する工程と、iiiランダムな数の命令の終わりに、ランダムな数の命令フェッチサイクルが行われている間に当初フェッチされた命令と同じ命令を再フェッチする一方、命令が再フェッチされた場合、CPUのメモリ位置を通常のやり方で更新することによって通常プログラム実行を再開する工程とを備える。なお更に別の実施例では、本発明は、プログラムの実行中の電力解析から、CPUにおいて行われているデータ処理を隠す方法を提供する。この方法は、iプログラムの実行中の時点に、ランダムな数のプログラムカウンタサイクル命令フェッチサイクルを挿入する工程と、iiランダムな数の命令フェッチサイクルが行われている間に、a命令をメモリからフェッチする工程、bプログラムシーケンスにおいてこうした命令を実行する工程、及びcメモリレジスタに結果を書き込む工程に関連した電力消費をまねる工程とを備える。更に別の実施例では、本発明は、データプロセッサを提供する。データプロセッサは、算術論理演算装置と、制御フラグレジスタと、算術命令に応じ、かつ制御フラグレジスタの第1の状態に応じ算術論理演算装置の出力を通常、受ける複数のレジスタと、命令に応じ、かつ制御フラグレジスタの第2の状態に応じ複数のレジスタのうちの1つの代わりに、算術論理演算装置の出力を受けるダミーレジスタとを備える。別の実施例では、本発明は、暗号バスアーキテクチャを提供する。暗号バスアーキテクチャは、複数ビットの乱数が出力される複数の乱数出力を有する乱数生成器と、複数の双方向バスドライバであって、それぞれが、乱数出力の少なくとも1つを受ける少なくとも1つの入力を有する双方向バスドライバと、複数の双方向バスドライバの少なくとも1つを、少なくとも別の双方向バスドライバに結合するバスとを備え、バスの共通線に結合された双方向バスドライバは、乱数出力のうちの、選択された共通の乱数出力によって制御される。別の実施例では、本発明は、セキュリティの漏洩を妨げる方法を提供し、この方法は、バスを介して暗号化ビットを送出する工程と、バス上の暗号化ビットの極性をランダムに切り換える工程とを備える。別の実施例は、本発明は、秘密鍵を保護する方法を提供する。この方法は、複数の双方向バスドライバを備える工程と、複数の双方向バスドライバのうちの少なくとも第1の双方向バスドライバと、複数の双方向バスドライバのうちの少なくとも第2の双方向バスドライバとの間にラインデータバスを結合する工程と、第1のビット組をバスに供給する旨を第1の双方向バスドライバに通知する工程であって、上記ビットが第1の極性を有する工程と、第1の極性を有する第1のビット組を受信する旨を第2の双方向バスドライバに通知する工程と、第2のビット組をバスに供給する旨を第1の双方向バスドライバにランダムに通知する工程であって、第2のビット組が、第1のビット組とは逆の極性を有する工程と、逆の極性を有する第2のビット組を受信する旨を第2の双方向バスドライバに通知する工程とを備える。表1は、64個のエレメントのルックアップテーブルとして実施されたSPボックス1及び2の値C言語で表しているを示す。表2は、特定のラウンドのDESの8つのSPルックアップテーブルの順次アクセスを行うC言語プログラムである。表3は、表2のCプログラム文番号5を実施するためのアセンブラ言語プログラムである。表4は、8個のS及びPのボックスの演算を、今度は、各ルックアップテーブルの順次アクセスによって行うDES暗号化アルゴリズムの一部分を実施するためのアセンブラ言語プログラムである。表5は、図7の実施例を用いて、表2のCプログラム文番号5を実施するためのアセンブラ言語プログラムである。序論本明細書記載の手法を次に、添付図面を参照しながら、更に徹底的に説明する。この説明では、上記手法の好ましい実施例を図7及び図8を参照しながら説明する。しかし、図7及び図8を説明する前に、この詳細な説明は、前述の関連出願において提示された内容の一部の記載を繰り返す図3乃至図6をたどるものである。こうした説明は、図7及び図8によって示される改良をよりうまく理解するうえで有用である。図9は基本的に、図6及び図7の実施例の組み合わせである第4の実施例を表す。図11は、修正されたRISCCPU設計に基づいた第5の実施例を表す。しかし、上記修正は、望まれる場合、非RISCCPUに用いることもできる。図12乃至図14は、他の実施例とは無関係に用いても他の実施例と組み合わせて用いてもよい暗号バスアーキテクチャに関する。本明細書記載の手法は、種々の多くの形態において実施することができ、本明細書記載の実施例に限定されるものとして解されるべきでない。以下の説明は、周知の暗号と、データ暗号化規格DESと、DESを解読するのに通常用いられる、DPA解析妨害とに関して本願開示を用いるうえでの1つの背景を設けるものである。この説明が例証の目的のために過ぎないこと、及び、設計者が予想しなかった情報を用いて秘密鍵を明らかにするいくつかのハッカー手法から、いくつかのデータ暗号化形式の秘密鍵を保護するのに本明細書記載の手法を利用することができることを当業者は認識するはずである。一般に、どの暗号化アルゴリズムも、プロセッサによって実行される一連の命令である。こうした命令の入力及び出力は種々のものである一方で、各命令を完了するのに必要な時間量は、プロセッサ、又はプロセッサとの間でデータが送信されるバスのクロック速度によって定められる。他の命令よりも多くのクロックサイクルを要する命令がある。データの暗号化/復号に用いる暗号化アルゴリズムが分かっていることによって、アルゴリズムのタイミングについての知識すなわち、使用される命令、及び、よって、各命令の所要時間長についての知識がハッカーに与えられる。タイミングについてのこの知識を次いで用いて、設計者が予想しなかった情報のアラインメントを行うことが可能である。よって、設計者が予想しなかった情報を次いで、攻撃者が暗号化を破ることを可能にする高度な統計手法によって処理することが可能である。暗号化アルゴリズム内の命令数を無作為化するシステム及び方法を本明細書に記載する。命令数を無作為化することにより、かつ、そうした命令を実行し、それによって、ランダムな遅延時間を挿入することによって、暗号化アルゴリズム内の命令及びタイミングは、DPA攻撃者にはもう分からないものである。よって、アルゴリズムのタイミングは、攻撃者には分からないことになり、攻撃者は、設計者が予想しなかった情報のアラインメントを行うことができなくなる。設計者が予想しなかった情報のアラインメントなしでは、高度な統計手法は失敗することになり、暗号化情報は保護されることになる。以下の説明は、本明細書記載の手法の特定の実施例を、DESを用いたシステムに組み入れてDPA攻撃を妨げることができる。他の暗号化アルゴリズムを用いる他のシステムに本発明を組み入れて特定の命令間の時間の無作為化を行うことができることを当業者は認識するであろう。時間のこの無作為化を用いて、暗号化を破るためにアルゴリズムのタイミングの理解に依拠する何れかの攻撃を挫折させることができる。本明細書は、暗号処理を行うのに用いられる、マイクロプロセッサ上のオンチップランダム命令マスクRIMアーキテクチャに特有の情報を記載するものである。更に、本明細書は、既存の暗号アルゴリズムRSAアルゴリズム、DESアルゴリズム、AESアルゴリズム及び非線形アルゴリズムを含むを、設計者が予想しなかった攻撃すなわち、漏洩した電力情報に基づいた攻撃から保護するアーキテクチャ手法を記載するものである。下にある回路が前述の情報を常に漏洩している可能性が非常に高いものであっても、セキュアな状態にシステムを維持するという動機付けがある。目標ビットの処理の順序を無作為化するというソフトウェア手法は、アルゴルズムを完全に保護するには十分でない。目標ビットをその元の順序にDPA攻撃者が再配列することを可能にし得る、命令署名又は電力パターン全てを破壊することも必要である。よって、一手法は、好ましくは、本明細書記載の、命令の無作為化と、時間遅延とを実施するアーキテクチャによるハードウェア保護によってソフトウェア手法を補完することである。DESや他の暗号アルゴリズムへの秘密鍵と互いに関係付けられる情報がDPA攻撃によって抽出されることを妨げるためのアーキテクチャ手法又はハードウェア手法のいくつかの実施例を以下に説明する。更に、DESに関する特定の背景情報を前述している。この分野に不案内の場合、まず、本明細書の導入部分に記載した文献を参照すべきである。更に、以下の例証は、DESアルゴリズムを徹底的に知っていることに依拠するものである。他のアルゴリズムのうちの1つに対する攻撃を試行するためには、適切なアルゴリズムを同等な詳細まで知っていることが必要になる。DPA攻撃や関連攻撃を妨げる防御的なRIM手法を説明することによってこの説明を始める。DPA選択機能は、低位命令が通常、6つの鍵ビットを用いるため4ビットを操作することが多いので、1ビットだけではなく、4つの目標ビットの値を同時に選択することが可能であるものとする。結果として生じるDPA特性は、より大きなピークを有する傾向にあるが、より良好な信号対雑音比を有するものでない。これは、比例してより少ないサンプルが、平均化において含められるからである。図3は、SPボックスのエントリアドレス計算131と、特定の4ビット出力目標123の生成との間のタイムライン関係を修正し得る方法を表す。上記修正は、例えば、図5の実施例によるランダムな数の疑似シフト命令133の挿入、又は例えば、図6の実施例による各SPボックスのエントリアドレス計算サブルーチンにおけるランダムな数の無作為化疑似命令の挿入を備える。挿入される疑似命令の数は必ずしもランダムでなくてよいが、それは、各SPボックスが、同数の実命令及び疑似命令を有することになった場合、どのボックスがどれであるかを確かめるうえで攻撃者になお残された情報がほとんどないか全くないからである。疑似シフト命令がシフトを含んでおり、実シフト命令の電力署名を厳密にまねることが望ましい。こうした疑似命令がシフトを含んでいない限り、その作用は、DPA攻撃者によって、おそらく観測され、よって無視され得る。本明細書記載の手法が用いられない場合シフト数とSPボックス指数との間には一定の関係が存在するものであり、攻撃者がどこかでそのシフト数を識別することが可能である限り、攻撃者は、アドレス指定される特定のSPボックスを識別することが可能である。攻撃者は、データの統計的な再配列を行って正しいシフト数を見出すことによってこのことを行うことが可能である。DESに加えて、大半の暗号化アルゴリズムは実際にシフト命令をどこかで利用しており、アルゴリズムをDPA攻撃者が分かっているものとみなした場合、本明細書記載の、ランダムな数のシフト命令を挿入する手法を利用しない限り、同様な相関を見出すことが可能である。図3に示すように、疑似シフト命令133や他の疑似命令133を挿入することによって、各SPボックスのエントリアドレス評価において実行される命令数のみならず、連続するSPボックス間の時間間隔Tnも変わる。図3に示す例では、ランダムな数の疑似シフト命令133がSP5に挿入されており、よって、図2bと比較して、SP5のアクセスとSP1のアクセスとの間の時間間隔T5が変えられている。更に、ランダムな数の疑似命令133がSP4に挿入されており、よって、図2bと比較して、SP4のアクセスとSP6のアクセスとの間の時間間隔T4が変えられている。当然、ランダムな数の疑似シフト命令133は、他のSPボックスのうちの1つ又は複数に挿入することも可能である。命令は、疑似と呼ばれているが、それは、好ましくは、対応する実命令の電力消費トレースをまねるからである実際に、特定の実施例では、実命令であり得る。一方、疑似命令の実行は、プロセッサによって更新されるデータを何らもたらさない。好ましくは実シフト命令を電力使用の視点からまねるランダムな数の疑似命令133を挿入することによって、シフト命令署名も時間間隔署名もカモフラージュされるものであるか、又は、除去されるものでもある。これによって、プログラムにおいてアクセスされているSPボックスSP1乃至SP8をDPA攻撃者が識別することができなくなってしまうことになる。これによって、SPボックスのアクセス順序の再シフト無作為化がDPA攻撃者から情報を隠すうえで効果的なやり方になることになる。よって、DPA攻撃者は、統計的な平均化及び解析のために同じ基準への別々の電力トレースのアラインメントを行うことがもうできなくなる。疑似命令が電力使用の視点から実シフト命令を厳密にまねた場合、攻撃者には、どのSPボックスがどれかを識別するのかが非常に難しくなり得る。疑似命令が無作為化命令組をまねた場合、SPボックスを少しでも認識するのが非常に難しいことが大いにあり得る。攻撃された装置が利用していると攻撃者がみなすプロトコルと、装置によって使用される暗号化プロトコルが同じであるか否かを攻撃者が知りたいと思うことは大いにあり得る。前述の通り、それぞれの又は一部のSPボックスのエントリアドレス評価において実行されるシフト命令の数の無作為化の代わりに、図4に示すように、各出力の前に例えば合計24個のシフトがあるようにみえるようにシフト命令数を等しくすることが考えられる。しかし、命令数を無作為化し、それによって、連続したSPボックスアクセスそれぞれの間の時間間隔も無作為化することが好ましいことがあり得る。よって、無作為化は、SPボックスのアクセスを識別するための署名として、時間間隔の、攻撃者の作業の妨害の手助けとなる。こうして不確実性が更に増したことによって、攻撃者の作業は更に複雑になる。しかし、図4を参照することによって分かるように、挿入される疑似命令131の数を無作為化することは、本明細書記載内容に必須でない。第1の実施例の詳細な説明図5は、図3を参照して説明したようなランダムな数の疑似シフト命令133又は図4を参照して説明したような等しくした数のシフト命令133を挿入するのに用い得るDESアルゴリズムを実施するハードウェアアーキテクチャの第1の実施例を表す。図5に示すシステムは、単一チップ上にRAM103メモリ及びROM105メモリとともに32ビットプロセッサ又は中央処理装置CPU101を含む。他のハードウェアアーキテクチャ2ビットや8ビットのアーキテクチャに本明細書記載の手法を実施することができることを当業者は認識するであろう。よって、CPUは16ビットプロセッサ又は64ビットプロセッサであり得る。システムは、前述のようにルックアップテーブルとして実施することが可能な換字/転置ボックスSP1乃至SP8107も含む。CPU101が、ROM105に記憶された暗号化/復号プログラムを実行する一方、RAM103は、暗号文データを中間的に記憶するためのものである。6ビット鍵又は推測される鍵121及びSPボックス107を用いて暗号関数fを計算する。乱数生成器115がランダム命令マスクRIM制御フラグレジスタ113に結合される。RIM制御フラグレジスタ113はCPU101に結合される。この実施例では、乱数生成器115及びRIM制御フラグレジスタ113を用いて、何れの特定の6ビット鍵121についても、統計的な情報をもたらすようこの電力トレースの時間アラインメントを行うことが可能でないように電力トレースをカムフラージュする。攻撃者は、シフト命令署名を追跡することによって、各4ビット出力目標123に関連した電力トレースのアラインメントを行うことに焦点を当てているので、本明細書記載のRIM手法は、この追跡機能をディセーブルすることに集中している。ランダムな数の疑似シフト命令133は、CPU101、RIM制御フラグレジスタ113及び乱数生成器115の反復によって生成される。CPU101は、ROM105に記憶された暗号化/復号プログラムを実行する。この暗号化/復号プログラム後に説明することとするに埋め込まれたものは、RIM制御フラグレジスタ113をセットするための命令である。この命令を処理すると、CPU101は、これをセットするRIM制御フラグレジスタ113に向けて、バス109上で信号を送出する。RIM制御フラグレジスタ113は次いで、制御線111上でRIM制御フラグ信号をCPU101に向けて送出し、それによって、CPU101状態マシンが停止することになる計算に応じてレジスタの更新が停止することになる。このことは、RIM制御フラグレジスタ113から信号を、CPU101内のプログラムカウンタレジスタに送出することによって実現することができる。これによって、プログラムカウンタはディセーブルされることになる。事実上、CPU101の状態マシンは停止される。CPU101の状態マシンは、RIM制御フラグレジスタ113がリセットされるまで、停止状態に留まる。これによって、RIM制御フラグレジスタ113によって信号がCPU101に向けて制御線111上で送出され、CPU101内のプログラムカウンタがイネーブルされることになる。RIM制御フラグレジスタ113は好ましくは、乱数生成器115の使用によってリセットされる。設計を簡単にするために、乱数生成器115は好ましくは、1ビット乱数生成器である。乱数生成器115は、CPU101の命令サイクルのタイミングと同期化される。乱数生成器115は、クロックサイクル毎に出力を供給することができるものであり、又は、ランダムな数の、X個のサイクルXは、何れかの数5などであるの後にRIM制御フラグレジスタに確実に供給されるようゲートすることができる。1ビット乱数生成器115の場合、使用される論理によってゼロ又は1が1ビット乱数生成器115から受信されるとリセットされるようRIM制御フラグレジスタ113がプログラムされる。例えば、1ビット乱数生成器115からのゼロによってRIM制御フラグレジスタ113がリセットされることになるものとする。1ビット乱数生成器115からゼロを受信した後にしかRIM制御フラグレジスタ113がリセットされず、ランダムな数のサイクル後に1ビット乱数生成器はゼロを生成することになるので、CPU101の状態マシンが停止される時間もランダムになる。よって、ランダムな数の疑似命令133が生成され、それによって、アルゴリズムのタイムラインに影響が及ぼされる。好ましくは、疑似命令133は、元の命令と同様な電力署名を電力トレース上に生成する命令であるが、CPU101内のデスティネーションレジスタに実行結果をもう一度書き込むことは抑制される。CPU101の状態マシンが停止されるからである。CPU101の抑制によって、CPUの状態が維持される。よって、もう一度書き込むことを抑制することによって、アルゴリズムにおける次の工程にCPUが移ることが妨げられる。しかし、電力トレースによって、そうでないことが示唆される。よって、攻撃者は、電力トレースを用いて鍵を復号することができなくなる。図5中のCPU101は好ましくは、CPU101のデスティネーションカウンタ、又はCPU101のプログラムカウンタの更新を、アクティブ状態にされるとディセーブルする、バス111上で送出されるRIM制御フラグ信号RIM制御フラグレジスタ113によって生成されるを備えた疑似命令に対処するよう修正される修正CPUの実施例の詳細は、CryptographicCPUArchitecturewithRandomInstructionMaskingtoThwartDifferentialPowerAnalysisと題する、西暦2004年6月8日付け出願の米国特許出願第10/864,568号明細書に開示されている。バス111上のこのRIM制御フラグ信号の結果、CPU101の状態マシンが停止している間に実行される命令は全て、電力トレースの離散サンプルの数が、特定の4ビット出力目標123についてもう一定でないように電力トレースを変える以外には重大な影響は有しない。RIM制御フラグレジスタ113がセットされている間、ランダムな数の命令が実行される。RIM制御フラグ111がリセットされると、4ビット出力目標123がRAM103に供給される。RIMの導入によって、各SPボックスのエントリアドレス評価において実行されるシフト命令の数のランダムなばらつきのみならず、連続したSPボックスアクセスTInそれぞれの間の時間間隔におけるランダムなばらつきも生じる。RIM制御フラグがアクティブ状態にされている間に実行されるランダムな命令に関する更なる詳細については、CryptographicBusArchitectureforthePreventionofDifferentialPowerAnalysisと題する、西暦2004年6月8日付け出願の米国特許出願第10/864,556号明細書を参照のこと。疑似シフト命令の挿入が機能する方法を以下に説明する。表2に示すように、DESのC言語文第5番すなわち、fval|=SP5[work>>80x3fL]は、SP5ルックアップテーブルをアクセスするためのエントリアドレス計算の一部として8ビット右シフト命令すなわち、work>>8を含む。表3は、対応するアセンブラ言語サブルーチンへの、この単一C言語文の拡張を示す。表3中のアセンブラ文第4番すなわち、jallinkrshftは、rshftとしてラベリングされたサブルーチン又は文第13番にジャンプし、かつリンクするよって、ニーモニックはjalである。この文におけるlinkの語は、戻りアドレスを含むレジスタを表す。プログラムが文第13番すなわち、プログラムカウンタpc←pc1を実行すると、プログラムカウンタは引き上げるのを停止する。プログラムカウンタは、文第14番を予めフェッチしようとするが、乱数生成器115によってRIM制御フラグがリセットされるまで停止される。rshftサブルーチンは、レジスタCにおいて規定されるように8つの位置、レジスタ1を右シフトする。シフト命令に関連した電力トレース部分をカムフラージュするために、文第13番と文第14番との間に示す可変ブロックサイズのRIM文が、第15番すなわち、sra11のような実際のシフト命令文の前若しくは後、又は前と後との両方に挿入される。RIM制御フラグレジスタ113がCPU101によってセットされると、RIM制御フラグレジスタ113が乱数生成器115によってリセットされるまで、表3中の命令第13番によってRIM命令の挿入が可能になる。文第15番の実行及びRIMブロックの完了の後に、プログラムの有用な実行が再開する。表3中の文第13番及び文第14番の位置は、例証の目的のためのものに過ぎない。これらの文は、第15番のような実際のシフト命令文の前、中間、又は後に存在し得る。好ましくは、設計を簡単にするために、文第13番及び文第14番は、シフトルーチンの範囲内に配置される。このランダムな挿入によって、シフト命令署名を追跡する、DPA攻撃者の試行が妨害されるが、それは、離散電力トレースサンプルの数がもう一定でなく、ランダムであるからである。よって、攻撃者は、電力トレースの時間アラインメントを4ビット出力目標123毎に行うことが可能でない。更に、ランダムな命令をこのように挿入することによって、時間間隔例えば、TI5も変わり、それによって、DPA攻撃者の試行が更に妨害される。疑似シフト文のランダムな数の挿入は、その効果を強めるようにループの中央に挿入されることが好ましい。こうした文がループの外側に挿入された場合、1つ又は2つの疑似シフトしか付加しないことは実際には手助けにならないものである。a>>8をa>>10に変えることは、DESアルゴリズムの場合に、十分なカムフラージュにならないことがあり得る。a>>8をa>>16又はa>>24から隠そうとする場合、このことは、a>>8をa>>16又はa>>24と混同させるのに十分な疑似シフト命令を付加することを必要とする。付加されたランダムな数の疑似シフト文をループ内に配置することによって、付加された疑似シフト文数は確実に8の整数倍数になる。ランダムな数の疑似シフト文がループの外側に挿入された場合、他の手法を用いて、付加された疑似シフ命令数を確実に8、16、24又はDPA攻撃者を混乱させるうえでこれらに十分に近い他の数にすることが可能である。更なる情報を与えるという点で、表4は、8つのS及びPのボックス演算を、今度は、図5に示すように各ルックアップテーブル107を順次アクセスすることによって行う、DES暗号化アルゴリズムのDES部分の一部分を実施するための16ビットCPUのアセンブラ言語プログラムである。下線を引いた文は、コメント目的のための、対応するC言語文である。第2の実施例の詳細な説明図6は、ランダムな数のランダムな疑似命令133図3を参照のことを挿入するのに用いることができるDESアルゴリズムを実施するハードウェアアーキテクチャの別の実施例を表す。DPA攻撃者は、シフト命令署名を追跡することによって、各4ビット出力目標に関連した電力トレースのアラインメントを行うことに焦点を当てているので、図5の第1の実施例は、各SPボックスのエントリアドレスの計算サブルーチンにランダムな数のRIM命令を挿入することによってこの追跡機能をディセーブルする。しかし、この実施例では、以下に詳細に説明するように、こうした命令の数のみならず内容も変更されることになる。図6に示すように、この第2の実施例は図5の第1の実施例に非常に類似しており、よって、共通の構成要素は、共通の参照符号によって表す。図5の実施例の場合にように、この実施例は好ましくは、単一チップ上に、RAMメモリ103及びROMメモリ105とともに配置された32ビットのCPU101である。このチップも好ましくは、ルックアップテーブルとして実施することが可能な換字/転置ボックスSP1乃至SP8107を含む。CPU101が、ROM105に記憶された当該プログラムを実行する一方、RAM103は、暗号文データを中間的に記憶するためのものである。この実施例では、CPU101は、ROM105から通常の暗号化プログラムのみならず、32ビットの疑似乱数生成器によって、カムフラージュされた、無作為化命令もフェッチする。図6に示すように、RIM制御フラグレジスタ113によって選択されるMUX119は、CPU101によってフェッチされる命令、ROM105からの実命令、又は32ビットの疑似乱数生成器117によって生成される無作為化命令のタイプを判定する。第1の実施例と同様に、アクティブ状態にされるとCPUのデスティネーションレジスタの更新をディセーブルすることになるRIM制御フラグレジスタ113を含めるよう通常のCPUを修正する。このフラグがセットされていることによって、RIM文内で実行される命令は全て、特定の4ビット出力目標に対する離散電力トレースサンプル数がもう一定でないように電力トレースをカムフラージュすることになる。こうした命令の数及びタイプは、乱数生成器によって実行中に判定される。RIM制御フラグが1ビット乱数生成器によってリセットされた後にCPUが通常の実行を再開するまでプログラムカウンタは更新されないので、プログラムアドレスも、別の32ビット疑似乱数によって置き換えられる。図5や図6のRIM制御線111は、半導体デバイスのレイヤ内に深く埋めることによってプローブプルーフにすべきである。しかし、RIM制御線111を探ることが可能な場合、DPA攻撃を扱う前述の手法は、攻撃を通してグランド又は、論理に応じてハイに接続することによって線111上のREM制御信号をDPA攻撃者がディセーブルする場合に打ち負かされることになる。第3の実施例の詳細な説明図7は図5又は図6の実施例よりも探査に対する耐性が高い第3の実施例を表し、図8はこの実施例のタイムラインを示す。この実施例は、以下に説明するシフト制御カウンタSCC140や他の変更を導入することによってシングルポイント障害攻撃すなわち、前述の実施例の線111に対する攻撃を克服するものである。この実施例は、シフト命令実及び疑似の合計数が24に固定される実施例を参照しながら説明する。しかし、固定される実命令の数は特定の他の数に固定することが可能であるか、図5及び図6を参照しながら前述した手法を利用して無作為化することが可能であることを当業者はこの場合、認識するはずである。図7の実施例は攻撃が線111に対して行われることを想定しており、攻撃が首尾良く行われた場合にも、保護されていない設計図2a及び図2bを参照しながら説明した設計などにシステムがもう一度戻らないように線111の前述の設計が修正される。データ暗号化規格DESアルゴリズムに規定された、特定のSPボックスのエントリアドレスの計算中に、SCC140は例えば、適切なソフトウェア命令又はソフトウェア命令組例えば、表5中の命令3及び命令4を参照のことによってSPボックスのカウントに相当するカウントにセットされることになる。各復号化シフト命令によって、ゼロに達するまで、例えば、それ自身の復号器ハードウェアを用いてこのカウンタ140が1、減らされることになる。ゼロカウントによって、その出力でRIM_shift信号がアクティブ状態にされることになる。それによって、その後のシフト命令はどれもRIM命令すなわち、カムフラージュされた電力署名を備えた疑似シフト命令になる。図8では、各SPボックスは、それに関連した24個の右ビットシフトを有する。しかし、右ビットシフト命令の一部又は全部はRIM_shiftすなわち、疑似シフトである。シフト図8中の疑似シフトは、ハッチング線によって表す。例えば、ボックスSP5の場合、8つのシフトが実右ビットシフト命令である一方、16つのシフトは疑似シフト命令である。DPA攻撃者の攻撃によってRIM_shift信号がディセーブルされた場合、暗号化アルゴリズムの通常の実行が、追加のシフトが行われることによって中断されることになるが、それは、疑似シフト命令がその場合、線111との干渉によって実命令になるからである。線111との干渉によって、疑似シフト命令の生成が単に抑制される代わりに、実シフト命令によって、抑制された疑似シフト命令が置き換えられる。よって、攻撃者は、有用な統計的鍵情報を何ら収集することが可能でない。すなわち、RIMフラグを妨害することによって、暗号化アルゴリズムの通常の実行が中断されることになり、追加の実シフトが行われることによって正しい結果がもたらされるのでDPA攻撃は失敗する。一方、DPA攻撃者がRIM_shift信号をそのままにしておく場合、アクティブ状態にされたRIM_shift信号は、図5又は図6を参照して前述した、シフト命令の電力署名をカムフラージュすることになる。このことは、DPAが必要とする目標ビットのグループ化及び再配列がずっと難しくなるのでSPボックスをアクセスする順序の無作為化がDPA攻撃者の試行を妨害するうえで効果的なやり方になることを意味する。表5は表3と同様であるが、アセンブラ言語サブルーチンにおいて、SCC140増補RIM実施形態を示す。イタリックフォントの同様なアセンブラ文第3番はまず、レジスタCの内容を語SCCに記憶するよって、ニーモニックがswであるアセンブラ文第4番すなわち、sw_SCCCによって示すようにシフト制御カウンタSCCを初期化するのに用いる対象のシフト数をレジスタCにロードする。アセンブラ文第3は、実行するシフト数をCPUに伝えることを意図しているものでない。その代わりに、アセンブラ文第5番をこの目的で用いてSPボックスアクセス毎に同一のシフト命令電力署名を供給する。SCC制御回路は各シフト命令を復号化し、ゼロに達するまでそのカウンタを減らす。ゼロにされたSSCカウンタは次いで、電力署名をカムフラージュするようRIM_shft信号をアサートすることによって、後の実シフト命令を疑似命令に変換する。非シフト命令によって、RIM_shft信号がアクティブ状態になることは決してないものである。SCC回路は、SPボックスアクセス中に暗号化アルゴリズムを実行している際にのみ、アクティブ状態になっているので、通常のシフト命令の復号化は事実上、非SPボックス演算に対するものである。直接的な探査から、チップ上のRIM制御線111を物理的に保護することはもはや重要でないしかし、攻撃によって有意義な結果を得ることになるとDPA攻撃者に思わせるために、保護することは意味をなすものであるそうした攻撃は徒労になる。よって、精通している一部の攻撃者は、RIMをディセーブルするように、RIM制御線111を強制的に常に論理0にする物理的に保護されているか否かにかかわらずことができる場合がある。この実施例では、チップのDPA攻撃は、新たな手法すなわち、不必要な疑似シフトが実シフトに変換され、それによって、データが単に意味のないものになってしまうもよって保護される。要約すれば、DPAの原理は、2つの電力トレース群の和の差を計算し、プロットするものである。DPAは、2つの電力トレース群の和の差と、特定の順序でシステムのデータ経路を進む目標ビットbの内容との間に統計的相関が存在していることによって効果的であり得る。この実施例におけるSCC増補RIMの導入が理由で、目標ビットがこの場合、特定の順序ではなくランダムな順序でシステムのデータ経路を介して進むものであり、暗号化アルゴリズムの通常の実行を中断することなくディセーブルすることは可能でないので、この統計的相関はもはや有効でない。RIM制御線を攻撃することによって暗号化アルゴリズムを中断することによって、攻撃者が収集する対象の有用な統計的鍵情報は何らもたらされない。DPAは、2つの電力トレース群の和の差と、特定の時点でシステムから出力される単一目標ビットの内容との間に統計的相関が存在している場合にのみ効果的であり得る。RIMを埋め込んだこの実施例では、この統計的相関は、目標ビットがこの場合、特定の時点ではなくランダムな時点でシステムのデータ経路を出ることが理由で、もう有効でない。埋め込んだRIMの導入によって、2つの特徴のランダムなばらつきが生じる。第1の特徴は、各SPボックスのエントリアドレス評価において実行される命令の数/タイプにおけるばらつきである。第2の特徴は、連続したSPボックスアクセスそれぞれの間の時間間隔におけるばらつきである。これら2つの特徴によって、プログラムにおいてアクセスされているSPボックスをDPA攻撃者が識別することができなくなってしまうことになる。これによって、SPボックスのアクセス順序の再切り混ぜが、DPA攻撃者から情報を隠すうえで効果的なやり方になる。それは、DPA攻撃者は、統計的な平均化及び解析のために同じ基準への別々の電力トレースのアラインメントを行うことがもうできなくなるからである。図7の実施例では、各SPボックスに関連した実シフト及び疑似シフトの合計は24シフトになる。例えば、図8中のボックスSP5の場合、8個の実シフトが、16個の疑似シフトと関連付けられる。実シフトの8個は、DESアルゴリズムによる、ボックスSP5の正しいシフト数である。線111が攻撃された場合、代わりに、ボックスSP5において、かつ他のSPボックスにおいても24個の実シフトが行われ、DESアルゴリズムの、いわば混乱が生じることになる。図7では、実シフト後に行われるものとして疑似シフトを示しているが、望まれる場合、実シフトの前に、又は実シフトの中に混ぜられて疑似シフトが行われることになるように順序を変更することが可能である。第4の実施例の詳細な説明各SPボックスにおける合計シフト数は、24個又は、それについて更に言えば、特定の他の数に固定しなくてよい一方、望まれる場合、変える、又は無作為化することができる。それは、例えば、図5又は図6の設計を組み入れることによって、図7に示すCPUの設計を幾分複雑にするが、合計シフト命令数を無作為化するのに必要な修正は、図6の実施例及び図7の実施例の組み合わせとして第4の実施例を示す図9を参照することによって分かり得るように、かなり簡単である。第5の実施例の詳細な説明修正RISCプロセッサCPUアーキテクチャを用いて、例えば、通常の命令、及び、ランダム命令マスクRIMフラグによって制御される、カムフレージュされた特別な疑似命令に対する同一の電力署名を生成することが可能である。この特定のプロセッサアーキテクチャは、ランダム命令マスクRIMを埋め込んだチップ上暗号システムにおいて実施されることが意図されており、ソフトウェア特有のRIM概念とこのアーキテクチャとの組み合わせは、電力解析及び差分電力解析を介した海賊行為から暗号システムを保護することが意図されている。カムフラージュされた命令とは、暗号化において通常用いられるものと同じ命令コード及び同じ電力署名を有するが、この特定のプロセッサアーキテクチャにおいて実行する場合、如何なるプロセサレジスタの内容も変えず、又はプロセッサステータスを変えない命令のことである。ランダム命令マスクは、電力解析又は差分電力解析によるリバースエンジニアリングから暗号装置を保護するための、カムフラージュされた暗号化プログラムを作成する手法である。図10は、概括的な単純化されたRISCプロセッサCPUアーキテクチャ200である。RISC命令は、ALU算術論理演算装置210がレジスタファイル220の2つのレジスタから2つのオペランドを得て、演算の結果をレジスタファイル220の第3のレジスタにもう一度書き込むことによって行われる算術演算関数又は論理演算関数である。レジスタファイル220は、アドレス選択によってアクセスすることが可能な、同じ幅ビット数、例えば、32ビットを備えたいくつかのレジスタから成る。各命令サイクルでは、プロセッサはROM240から順次、その命令を取得し、これを命令レジスタ245にロードする。ROM240は、暗号化アルゴリズムを含むプログラム全体の命令コード全てを記憶する。制御論理250は、命令レジスタ245における命令コードを復号化し、正しい制御コマンドをプロセッサ200のALU210や他の部分に供給する。オペランドソースA及びBのアドレス、並びにデスティネーションアドレスも命令コードにおいて規定される。アドレス復号器260は、命令レジスタ245からのアドレス情報を復号化し、レジスタファイル220における特定のレジスタのアクセス制御を備える。制御論理250によって制御されるALU210は、特定されたアドレスによってレジスタファイル220から2つのオペランドソースA及びBを取得し、命令が規定した算術演算又は論理演算を行う。ALU演算の結果は、データバス215上のデスティネーションアドレスによってレジスタファイル210内の別のレジスタにもう一度書き込まれる。命令のタイプによって、プログラム全体における命令の索引参照を記憶したプログラムカウンタ230が、命令の実行中に制御論理によって増やされるか、又は更新されることになる。プロセッサの、一部の特定の命令は、プログラムカウンタ230を増やすことも更新することもしない。プログラムカウンタ230と同様な、プロセッサにおける一部の他のフラグレジスタ図示せずの更新も命令に依存する。現代のプロセッサの大半はCMOS技術で構築されている。CMOS回路はスタティック電流を引き込まないので、電力は負荷容量の充電及び放電スイッチングの際にのみ放出される。CMOS回路の電流消費は主に、容量性負荷、ドライバのドライブ能力、及びスイッチングの周波数によって変わってくる。プロセッサにおいて実行される完全な命令サイクルには、別々の時点で別々の回路を動作させることが関係する。プロセッサ回路の別々の部分は、デバイス寸法、寄生負荷及びスイッチング速度における差によって、アクティブ状態にされると電力バス上で時間に対して固有の電流パターン電力署名を生成する。電力解析又は差分電力解析DPAはこれらの電力署名パターンを用いて命令を互いに関係付ける。埋め込みランダム命令マスクRIM手法を用いて、前述のように各SPボックスのエントリアドレス計算サブルーチンにおけるRIM命令の数をランダムに変え、そうしたRIM命令の内容もランダムに変える。RIM手法がDPA攻撃を首尾良く妨げるうえで最も重要な条件の1つは、こうしたRIM命令の電力署名を全てなくすことである。このことを行ううえで最善のやり方は、電力解析又は差分電力解析DPAにおいて識別可能でないようにRIM命令の電力署名を通常の命令と同一にすることである。図11は、図10に示すRISCプロセッサ200の改良されたバージョンを示す。例えば、乱数生成器223から生成されるRIM制御フラグ202は、RIM命令をアクティブ状態にすることを制御する。乱数生成器は、第1の実施例に関して図5に表す。図11のRISCプロセッサは、デスティネーションアドレス及びプログラムカウンタインクリメントイネーブルを制御する、図5のプロセッサと比較して追加のANDゲートを有する。追加のレジスタ222はデータバスに接続される。このレジスタ222は、少なくとも電力消費の視点でレジスタファイル220におけるレジスタと同一であるように設計される。電力消費の点でプロセッサにおいて元のプログラムカウンタ230を複製するために疑似プログラムカウンタ232が存在している。RIM制御フラグ202がセットされている間、疑似プログラムカウンタ232はROM240から命令をフェッチし、命令は命令レジスタ245に入り、通常通り、アドレス復号器260によって復号化される。しかし、命令の結果は、レジスタファイル220におけるレジスタの代わりに更なるレジスタ222に送られる。RIM制御フラグ202が論理0に等しい場合、プロセッサ200は通常の動作になるすなわち、修正されないものとして図5に表すように動作する。当該デスティネーションアドレス及び当該プログラムカウンタにおいて、追加のANDゲート221、231は、アドレス復号器260及び制御論理装置250からの元の信号を通すに過ぎない。同時に、追加されたレジスタ222及び疑似プログラムカウンタ232がディセーブルされる。命令の実行中に関係する回路構成部分は全て、図10と同じであるので、図11の修正プロセッサにおいて実行する各命令の電力署名すなわち、時間に対する消費電流パターンは、図10のプロセッサと同じになる。RIM制御フラグ202がアクティブ論理1に等しい状態にされると、命令がROM240からフェッチされ、レジスタファイル220からのAオペランド及びBオペランドを復号化し、参照し、ALU210におけるオペランドの演算は通常通り、続く。しかし、RIMフラグ202の状態に対する応答性を有するANDゲート221が存在していることによって、レジスタファイル220におけるデスティネーションレジスタの選択がディセーブルされ、ALU210からの結果を受けるためにレジスタファイル220において選択されるデスティネーションレジスタは何らない。むしろ、代わりに、ANDゲート223によって、ALU210からのデータがデータバス215上で、追加レジスタ222に向けられることになる。その結果、ALUは、レジスタファイル220における通常のデスティネーションレジスタのうちの1つの代わりに追加レジスタ222に、実行される命令に結果をロードするよう仕向けられる。追加レジスタ222の物理的な設計はレジスタファイル220内のデスティネーションレジスタと同一であるため、この追加レジスタ222のロードの消費電流パターンは、レジスタファイル220における実デスティネーションレジスタ220に結果をロードする場合と同じになる。追加レジスタの前に配置されたANDゲート223は、通常動作中にデスティネーションレジスタのうちの1つを選択するのに用いられる1つのANDゲート221の電力をエミュレートする目的のためである。同時に、RIMフラグ202も実プログラムカウンタ230をディセーブルし、疑似プログラムカウンタ232を、増やすか、又は更新するようアクティブ状態にする。この場合も又、2つのプログラムカウンタ230、232の間の同一の物理的な設計が理由で、実行される命令によるプログラムカウンタの増加又は更新の電力パターンが維持されることになる。前述の命令サイクルの終了時に、レジスタファイル220におけるデスティネーションレジスタ又は実プログラムカウンタ230の内容は何ら修正されるものでない。よって、プロセッサ200のステータスはRIMフラグ202がセットされている間、この命令が実行される前と同じ状態に留まる。RIMフラグ202がセットされると、プロセッサ200は、データ処理の観点からは、NOPノーオペレーション命令を処理しているかのようにふるまう。しかし、電力消費の観点からは、プロセッサは、実命令を処理しているようにみえる。RIMフラグ202が論理0に戻ると、プロセッサはこの通常動作を再開して元のプログラムの実行を続けることになる。RIMフラグが論理1である間に実行される命令が何であっても種類の制約は何らない、電力トレースにおいて関連した通常の命令を実行するというカムフラージュ作用を単にもたらす以外には、プロセッサに対してもプログラミングに対しても何の影響もない。よって、RIMフラグが論理1の際にフェッチされた命令が基本的には、再フェッチされる。当然、分岐命令の結果が異なり得るので、順序は変わり得る。いずれにせよ、処理は基本的には、RIMフラグが論理1である際に中断された位置から続行する。SPボックスアドレス計算サブルーチンにおけるRIMフラグ制御命令を備えたこのプロセッサを用いる場合、電力トレースは、いくつかの特定の命令のランダムな変形を含み、サブルーチンにおいて実行される各種命令も含むことになる。よって、DPA攻撃者は、SPボックスサブルーチンの電力トレースの識別及びアラインメントを行うことがもう可能でない。データを受信し、記憶するという点で追加レジスタ222はダミーレジスタであるが、それによって受信されるデータは、プロセッサ200による後のデータ処理に影響を及ぼすのに用いないことが好ましい。図11では、レジスタファイル220から分離されて示しているが、望まれる場合、レジスタファイル220の一部として実施することが可能である。チップ上のRIM制御フラグ202の出力でのRIM制御線を直接探査から保護することは重要である。RIM制御線が容易にアクセスされる場合、精通した一部の攻撃者は、この手法を用いて、RIMをディセーブルするように常に論理0にRIM制御線を強制的にすることができる。CMOS回路の物理的な設計をリバースエンジニアリングから保護するためのカムフラージュ手法は、利用可能なものとしていくつか存在している。こうした手法を用いれば、シリコンインプラントレベルに深く埋め、アクティブ状態で接続された高位のポリシリコンレイヤ及び金属レイヤによって遮蔽することによって、RIM制御線の探査を非常に困難にすることが可能である。このRIM制御線を見つけることは非常に困難になり、高位保護レイヤを何らかのやり方で除去しようとしても、チップの機能を損なうことになる。RIMフラグ202の状態は、疑似プログラムカウンタ232を用いて命令をフェッチする場合、論理1にあるものとする。当業者に周知のように、図11に示すこの論理は、論理0によって疑似プログラムカウンタ232が起動されるようになり、論理1が通常のCPU動作を表すように容易に修正することができる。図11に示す回路は、パイプライン型ALUを意図するものでない。しかし、図11の回路をパイプライン型ALUに適合させることは簡単である。一般に、パイプライン型ALUは4つの段プリフェッチ、命令復号化、実行、再書き込みを有する。RIMフラグからのRIM制御信号を、遅延回路によってパイプラインと同期化することができる。よって、RIM制御フラグ202は、パイプライン型ALUに用いる場合、追加レジスタ222、ANDゲート221及び疑似プログラムカウンタ232と同期化するものとする。当然、プロセッサ200は、RIMモードで実行する場合に更新しないものとする更なるステータスフラグレジスタを有し得る。前述のレジスタの制御は、レジスタと同様にRIMモードにある場合に、結果を書き込むためのダミーフラグレジスタ追加レジスタ222に相当するを備えることによって修正することができる。これによって、こうしたフラグレジスタを更新するための複製電力署名構成部分がもたらされる。こうしたフラグレジスタは、簡単にする目的のために、図11に表していない。プロセッサ内では、容量負荷が高く、速度が速いことは、データバスのスイッチングと、レジスタファイルメモリの読み書きが電力消費を支配することになることを意味する。フラグレジスタ通常、単一ビットレジスタの更新のスイッチング電力は、総電力と比較して大きいものでない。プログラムカウンタのスイッチング電力でも、電力トレースにおいて観測可能な差をもたらすのに十分大きいものでない場合がある。こうしたフラグレジスタをそのままにしておくことは、所要の追加回路を削減するうえで好都合なやり方であり得る。バスアーキテクチャ実施例の詳細な説明この実施例は、0値を有する確率と1値を有する確率が等しくなるように維持する一方で、データバスドライバでの目標ビットの極性をランダムに切り換えることにより、DPA攻撃者による、設計者が予想しなかった情報の使用を妨げるものである。すなわち、電力トレースにはもう、秘密鍵との統計的な相関はない。よって、暗号システムによって用いられる鍵を明らかにするうえで、設計者が予想しなかった情報を用いることが可能でない。この実施例は、他の実施例とともに用いることができ、又は単独で用いることができる。特に、DPAに関して言えば、正しく推測された鍵Ksによって選択関数から計算される同じ目標ビット値を有する各メッセージ群内で、対応する電力トレースが常に0で有るわけでも常に1である訳でもないという結果になる。目標ビットで0を有する可能性も1を有する可能性も、極性の無作為化によって約0.5になる。よって、選択関数Dは事実上、実際の電力トレース測定と互いに関係付けることが可能でない。選択関数Dは、実際の目標ビットの電力消費を予測する方法を奪われてしまっている。Ksが誤って推測された場合、無作為化によって、Dと、対応する電力トレースとの無相関が維持されることになる。図12は、本発明による暗号バスアーキテクチャ311CBAを表す。暗号バスアーキテクチャは好ましくは、双方向ドライバ315、317を両端に有し、負荷が通常高いバス316をそれらの間に有する。非双方向ドライバを用いることによって、本発明を実施するのに必要なバスドライバ数が増える傾向にあるので、双方向ドライバが好ましい。バス311はCPU301をそのメモリ321、323に接続する。CPU301はROM321に記憶されたプログラムを実行し、RAM323は、暗号文データ及び鍵を中間的に記憶するためのものである。Nビットの乱数生成器313は、Nビット双方向ドライバ315、317を制御する。乱数生成器313はN個の出力314を有し、各出力は1ビットから成る。各ビット3140乃至314Nは、1つのバスドライバ315、317を制御する。乱数生成器313は、アクティブ状態にする信号がCPU301からイネーブル線303を介して受信される都度、新たな、Nビット乱数3140乃至314Nの組を生成する。アクティブ状態にする信号は、好ましくは、各DESラウンドの最初にCPU301によって送出され、好ましくは、ソフトウェアによって引き起こされる。各ランダムビット3140乃至314Nの値は、ドライバ315、317を切り替えるすなわち、その極性を切り替えるやり方を明らかにし、高負荷内部データバス316を駆動させて相関を打ち負かすのに用いられる。極性制御線313は、耐探査にされることが好ましいが、それは、リバースエンジニアに容易に分かる回路特徴の下に埋め込むのが好ましいからである。すなわち、この制御線は、それぞれの内容を本明細書及び特許請求の範囲に援用する米国特許第5,866,933号明細書、米国特許第6,294,816号明細書又は米国特許第6,613,661号明細書に記載の手法を用いて、基板内のインプラントレイヤによって作製することが可能であり、よって、酸化物、ポリシリコン及び/又は金属の下に埋められており、それによって、制御線に接続する可能性がずっと難しい命題になる。所要の、極性の切り替えは、リバースエンジニアによる統計解析を妨害するうえで十分、頻度が低い。例えば、極性は、各DESラウンドの最初に、又は、暗号化のための新たな平分それぞれのフェッチの最初に切り替えることが可能である。図13は、好ましい実施例のより詳細な構成図を表す。CPU読み取り線4010乃至401N及びCPU書き込み線4030乃至403Nを用いてデータフロー方向を制御する。双方向バスドライバ315、317は、乱数生成器313によって生成される乱数の関連ランダムビット3140乃至314Nの値によって定められる反転型又は非反転型のトライステートバッファである。例えば、ランダムビット3140が、CPU書き込み動作中の双方向バスドライバ315に対して0の場合、3050上の信号がデータバス316上で反転されることになる。他方端では、双方向バスドライバ317は、ビット3050に対する、データバス316からの反転信号を受信し、ビットをもう一度反転させて、元のデータ信号のインテグリティを保証することになる。このことは、データ信号105のビット毎に行われる通常、一部のビットが反転され、他のビットは反転されない。ビット3140がランダムな1の場合、反転型バッファ320の代わりに非反転型バッファ319がデータバス316を駆動させることになる。信号3140乃至314Nはランダムなため、0の値を有する可能性及び1の値を有する可能性は約0.5及び0.5である。その結果、データバスの内容に関連した決定性電力情報が全て失われることになる。よって、正しく推測された鍵を有するDPA攻撃の場合にも、データバス上の目標ビットの内容と、対応する電力トレースとの間の内報tip-off相関が失われる。データバス316プロセッサの設計において高容量負荷を有する傾向にあるの論理内容が、電力トレース測定と互いに関係付けることが可能でないようにされた後、残っている相関は、ALUとレジスタファイルとを接続する低負荷容量配線からのものであり得る。この相関の検出を最小にするために、好ましくは、デュアルレールd及びd_barの組を用いて、図14に示すように特定のレジスタビットを書き込む。この設計の対称性が理由で、デュアルレールは、新たなデータd及びその補数d_barを同時に含み、よって、d及びd_barの平均化の結果、0.5に正規化する対象の外部電力消費をマスクする。相補型読み取り増幅器及び相補型書き込み増幅器が存在していることが分かる。特に、データ値D0が0の場合、デュアルレール組は0,1を含む。データ値D0が1の場合、デュアルレール組のデータ値は1,0である。よって、データ値D0とは無関係に、この回路レールd及びd_bar、並びに、相補型読み取り増幅器及び相補型書き込み増幅器を含むは、同じ平均電力消費を常に有することになり、よって、データ値D0と回路の電力消費とを互いに関係付けることを不可能にしてしまうことになる。図14の回路のデータ値D0は0の値又は1の値を有し得るが、何れの場合も、d及びd_barの一方は0に等しくなり、d及びd_barの他方は1に等しくなり、それらの平均は当然、0.5に等しくなる。その結果、回路の電力署名は、ALUレジスタビットのデータ値の内容とは無関係になる。当然、特定のレジスタは複数ビットを有し、各記憶ビットは好ましくは、図14による設計によって構成される。本発明は好ましくは、暗号処理を行うのに用いられる、マイクロプロセッサのチップ上のバス及び/又はチップアーキテクチャにおいて実施される。このアーキテクチャ手法によって、既存の暗号アルゴリズムRSA、DES、AES及び非線形アルゴリズムを含むを安全にすることが可能になる。本明細書記載の手法をその別々の実施例に関して説明したが、当業者にはその修正が分かるものである。そういうものとして、特許請求の範囲記載の本発明は、特許請求の範囲によって特に必要とされる以外には、本明細書記載の実施例に限定されないものとする。表1。C言語で表しており、例えば、SPボックス1及び2が、64個のエレメントのルックアップテーブルとして実施されている。表2。特定のラウンドのDESの8つのSPルックアップテーブルの順次アクセスを行うC言語プログラム。表3。表2のCプログラム文番号5を実施するための対応アセンブラ言語プログラム。なお、;に始まる行はコメント行である。表4。表5。図7の実施例について、表2のCプログラム文番号5を実施するための対応アセンブラ言語プログラム。なお、;に始まる行はコメント行である。"