(57)【要約】  タイムライン・アラインメントを利用する情報漏洩攻撃を妨げる装置及び方法。上記装置及び方法によって、攻撃者が暗号化を解読することを可能にするために漏洩情報の時間的なアラインメントを行うことが可能でないようにランダムな数の命令が暗号化アルゴリズムに挿入される。
2008502283.tif 000002
【特許請求の範囲】
【請求項１】
暗号アーキテクチャであって、
プロセッサと、
該プロセッサに結合された暗号化アルゴリズムを含むメモリと、
前記プロセッサに結合され、前記プロセッサの状態動作を制御する制御フラグ・レジスタ及びシフト制御カウンタとを備え、該シフト制御カウンタは、前記暗号化アルゴリズムを行うために所望の実シフト命令の数をカウントするよう形成され、
前記制御フラグ・レジスタは、前記メモリに記憶され、前記プロセッサによって出される命令によってセット及び／又はリセットされ、前記制御フラグ・レジスタは、前記プロセッサによって擬似シフト命令としてシフト命令を行うものとする場合に特定の状態を呈することを特徴とする暗号アーキテクチャ。
【請求項２】
請求項１記載の暗号アーキテクチャであって、前記制御フラグ・レジスタ及びシフト制御カウンタは、ゲート対によって相互接続され、前記ゲート対の第１のゲートは、前記ゲート対の第２のゲートの第１の入力に結合された出力を有し、前記第１のゲートは、その一入力を前記制御フラグ・レジスタの出力に結合させており、その別の入力を前記第２のゲートの出力に結合させており、前記第２のゲートは、前記シフト制御カウンタに結合された別の入力を有し、前記第２のゲートの前記出力も、前記プロセッサに結合され、前記プロセッサの状態動作を停止することを特徴とする暗号アーキテクチャ。
【請求項３】
請求項２記載の暗号アーキテクチャであって、所望のシフト命令及び擬似シフト命令は複数の群において行われ、各シフト命令群は、一定数のシフト命令を備え、各群における擬似シフト命令の数は、群によって変わることを特徴とする暗号アーキテクチャ。
【請求項４】
請求項３記載の暗号アーキテクチャであって、少なくとも１つの群は、全て擬似のシフト命令を備え、少なくとも１つの別の群は、全て実のシフト命令を備えることを特徴とする暗号アーキテクチャ。
【請求項５】
請求項１記載の暗号アーキテクチャであって、所望のシフト命令及び擬似シフト命令は複数の群において行われ、各命令群は、一定数のシフト命令を備え、各群における擬似シフト命令の数は、群によって変わることを特徴とする暗号アーキテクチャ。
【請求項６】
請求項５記載の暗号アーキテクチャであって、少なくとも１つの群は、全て擬似のシフト命令を備え、少なくとも１つの別の群は、全て実のシフト命令を備えることを特徴とする暗号アーキテクチャ。
【請求項７】
請求項１記載の暗号アーキテクチャであって、前記プロセッサは、１６ビットのプロセッサ、３２ビットのプロセッサ、又は６４ビットのプロセッサであることを特徴とする暗号アーキテクチャ。
【請求項８】
請求項１記載の暗号アーキテクチャであって、前記暗号化アルゴリズムがデータ暗号化規格（ＤＥＳ）アルゴリズムであることを特徴とする暗号アーキテクチャ。
【請求項９】
差分電力解析を妨害するシステムであって、
暗号化アルゴリズムを実行する手段と、
ランダムな数又は所定数の擬似命令を前記暗号化アルゴリズムに挿入する手段とを備え、前記擬似命令は、実行されている前記暗号化アルゴリズムに影響を及ぼすことなく、少なくともエネルギ消費の点で実命令をまねることを特徴とするシステム。
【請求項１０】
請求項９記載のシステムであって、前記暗号化アルゴリズムを実行する手段は、
プロセッサと、
該プロセッサに結合され、前記暗号化アルゴリズムを記憶するメモリとを備えることを特徴とするシステム。
【請求項１１】
請求項１０記載のシステムであって、前記プロセッサは、１６ビットのプロセッサ、３２ビットのプロセッサ、又は６４ビットのプロセッサであることを特徴とするシステム。
【請求項１２】
請求項１０記載のシステムであって、前記暗号化アルゴリズムがデータ暗号化規格（ＤＥＳ）アルゴリズムであることを特徴とするシステム。
【請求項１３】
請求項９記載のシステムであって、前記擬似命令が、電力消費の点でシフト命令をビット単位でエミュレートすることを特徴とするシステム。
【請求項１４】
請求項９記載のシステムであって、前記擬似命令が、無作為化命令組を備えることを特徴とするシステム。
【請求項１５】
請求項９記載のシステムであって、前記挿入する手段は、前記プロセッサに結合された制御フラグ・レジスタと、該制御フラグ・レジスタに結合された乱数生成器とを備えることを特徴とするシステム。
【請求項１６】
請求項１５記載のシステムであって、前記乱数生成器が１ビット乱数生成器であることを特徴とするシステム。
【請求項１７】
設計者が予想しなかった情報を無相関化するシステムであって、
データ暗号化規格（ＤＥＳ）アルゴリズムを実行する手段であって、前記ＤＥＳアルゴリズムが、複数の換字／転置ボックスのエントリ・アドレスの評価を備える手段と、
いくつかの擬似命令を、前記複数の換字／転置ボックスのエントリ・アドレスの評価のうちの少なくとも１つに挿入する手段であって、前記擬似命令は、対応する実命令をエネルギ消費の点で、しかし、前記ＤＥＳアルゴリズムの前記実行に影響を及ぼすことなくまねる手段とを備えることを特徴とするシステム。
【請求項１８】
請求項１７記載のシステムであって、前記ＤＥＳアルゴリズムを実行する手段は、
プロセッサと、
該プロセッサに結合された暗号化アルゴリズム及び前記プロセッサに結合された複数のルックアップ・テーブルを含むメモリとを備え、前記複数の換字／転置ボックスが、前記複数のルックアップ・テーブルにおいて実施されることを特徴とするシステム。
【請求項１９】
請求項１８記載のシステムであって、前記プロセッサが、１６ビットのプロセッサ、３２ビットのプロセッサ、又は６４ビットのプロセッサであることを特徴とするシステム。
【請求項２０】
請求項１７記載のシステムであって、前記挿入する手段は、前記プロセッサに結合され、少なくとも、前記プロセッサに関連したレジスタを更新する対応実命令ではなく、擬似命令を前記プロセッサに出させる制御フラグ・レジスタを含み、前記擬似命令は前記プロセッサに関連したレジスタを更新するものでないことを特徴とするシステム。
【請求項２１】
請求項２０記載のシステムであって、前記挿入する手段は、前記制御フラグ・レジスタと前記プロセッサとの間の接続が攻撃者によって首尾良く探査された場合に更なる実命令を前記ＤＥＳアルゴリズムに挿入するシフト制御レジスタを更に含み、前記挿入された更なる実命令は、前記ＤＥＳアルゴリズムによって行われる計算をディセーブルするうえで効果的であることを特徴とするシステム。
【請求項２２】
請求項２０記載のシステムであって、前記挿入する手段は、前記制御フラグ・レジスタに結合された乱数生成器を更に含むことを特徴とするシステム。
【請求項２３】
請求項２２記載のシステムであって、前記乱数生成器が１ビット乱数生成器であることを特徴とするシステム。
【請求項２４】
設計者が予想しなかった情報を無相関化するシステムであって、
データ暗号化規格（ＤＥＳ）アルゴリズムを実行する手段であって、前記ＤＥＳアルゴリズムが、複数の換字／転置ボックス・エントリ・アドレス評価を備える手段と、
前記複数の換字／転置ボックス・エントリ・アドレス評価のうちの少なくとも１つに、一定数及び／又はランダムな数の擬似命令を挿入する手段とを備えることを特徴とするシステム。
【請求項２５】
請求項２４記載のシステムであって、前記ＤＥＳアルゴリズムを実行する手段は、
プロセッサと、
該プロセッサに結合された暗号化アルゴリズム及び前記プロセッサに結合された複数のルックアップ・テーブルを含むメモリ・モジュールとを備え、前記複数の換字／転置ボックスが、前記複数のルックアップ・テーブルにおいて実施されることを特徴とするシステム。
【請求項２６】
請求項２５記載のシステムであって、前記プロセッサが、１６ビットのプロセッサ、３２ビットのプロセッサ、又は６４ビットのプロセッサであることを特徴とするシステム。
【請求項２７】
暗号アーキテクチャの電力トレースを変える方法であって、
暗号化アルゴリズムを実行する工程と、
制御フラグをセットする工程と、
前記制御フラグが設定されている場合にいくつかの擬似命令を行う工程とを備え、前記擬似命令は、前記暗号化アルゴリズムによって行われる計算に影響を及ぼすことなく、対応実命令をエネルギ消費の点でまねることを特徴とする方法。
【請求項２８】
請求項２７記載の方法であって、前記制御フラグをセットする工程は、前記暗号化アルゴリズムを実行するプロセッサの状態マシンを停止する工程を更に備えることを特徴とする方法。
【請求項２９】
請求項２８記載の方法であって、前記状態マシンを停止する工程は、前記状態マシンにおけるデスティネーション・レジスタをディセーブルする工程を更に備えることを特徴とする方法。
【請求項３０】
請求項２７記載の方法であって、複数のルックアップ・テーブルのアクセス順序を切り混ぜるよう前記暗号化アルゴリズムを修正する工程を更に備えることを特徴とする方法。
【請求項３１】
請求項２７記載の方法であって、前記暗号化アルゴリズムがデータ暗号化規格（ＤＥＳ）アルゴリズムであることを特徴とする方法。
【請求項３２】
請求項２７記載の方法であって、前記制御フラグをリセットする工程を更に備え、前記リセットする工程は、乱数生成器から制御フラグ・レジスタに信号を送出する工程を更に備えることを特徴とする方法。
【請求項３３】
暗号ＣＰＵアーキテクチャであって、
ＡＬＵと、
制御フラグと、
算術命令に応じて前記ＡＬＵの出力を通常、受ける複数のレジスタと、
前記制御フラグがセットされている場合に算術命令に応じて、前記複数のレジスタのうちの１つの代わりに、前記ＡＬＵの出力を受ける更なるレジスタとを備えることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３４】
請求項３３記載の暗号ＣＰＵアーキテクチャであって、
第１のプログラム・カウンタと
第２のプログラム・カウンタとを更に備え、
前記第１のプログラム・カウンタ及び前記第２のプログラム・カウンタは、前記制御フラグがセットされていない場合に前記第１のプログラム・カウンタがイネーブルされるように、かつ前記制御フラグがセットされている場合に前記第２のプログラム・カウンタがイネーブルされるように前記制御フラグの状態に応じるものであり、
前記第１のプログラム・カウンタ及び前記第２のプログラム・カウンタのうち、イネーブルされたプログラム・カウンタが命令メモリから命令をフェッチすることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３５】
請求項３４記載の暗号ＣＰＵアーキテクチャであって、前記ＡＬＵは、前記第１のプログラム・カウンタによってフェッチされた算術命令の結果を前記複数のレジスタの１つに出力し、前記ＡＬＵは、前記第２のプログラム・カウンタによってフェッチされた算術命令の結果を前記更なるレジスタに出力することを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３６】
請求項３５記載の暗号ＣＰＵアーキテクチャであって、前記更なるレジスタは、前記ＡＬＵに対してデータを転送するための出力を何ら有していないダミー・レジスタであることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３７】
請求項３６記載の暗号ＣＰＵアーキテクチャであって、前記レジスタ及び前記更なるレジスタはそれぞれ、前記レジスタ及び前記更なるレジスタへのデータの前記転送を制御する関連ゲートを有しており、前記関連ゲートは、前記制御フラグの前記状態によって制御されることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３８】
請求項３３記載の暗号ＣＰＵアーキテクチャであって、前記更なるレジスタは、前記ＡＬＵに対してデータを転送するための出力を何ら有していないダミー・レジスタであることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項３９】
請求項３３記載の暗号ＣＰＵアーキテクチャであって、前記レジスタ及び前記更なるレジスタはそれぞれ、前記レジスタ及び前記更なるレジスタへのデータの転送を制御する関連ゲートを有しており、前記関連ゲートは、前記制御フラグの状態によって制御されることを特徴とする暗号ＣＰＵアーキテクチャ。
【請求項４０】
プログラムの実行中の電力解析から、ＣＰＵにおいて行われるデータ処理を隠す方法であって、
（ｉ）前記プログラムの前記実行中の一時点で、ランダムな数のプログラム・カウンタ・サイクル命令フェッチ・サイクルを挿入する工程と、
（ｉｉ）前記ランダムな数の命令フェッチ・サイクルが行われている間に、メモリから命令をフェッチし、プログラム・シーケンスにおいて該命令を実行する一方、該命令の該実行に基づいて通常のメモリ位置の更新を抑制する工程と、
（ｉｉｉ）前記ランダムな数の命令の終わりに、前記ランダムな数の命令フェッチ・サイクルが行われている間に当初フェッチされた命令と同じ命令を再フェッチすることによって通常プログラム実行を再開する一方、該命令が再フェッチされた場合に、前記ＣＰＵのメモリ位置を通常のやり方で更新する工程とを備えることを特徴とする方法。
【請求項４１】
請求項４０記載の方法であって、前記ランダムな数のプログラム・カウンタ・サイクル命令フェッチ・サイクルを挿入する工程は、ランダム命令マスク制御フラグの状態によって制御されることを特徴とする方法。
【請求項４２】
請求項４０記載の方法であって、前記ランダムな数の命令フェッチ・サイクルが行われている間に、命令の前記実行に基づいてダミー・メモリ位置を更新することを特徴とする方法。
【請求項４３】
プログラムの実行中の電力解析から、ＣＰＵにおいて行われるデータ処理を隠す方法であって、
（ｉ）前記プログラムの前記実行中の一時点に、ランダムな数のプログラム・カウンタ・サイクル命令フェッチ・サイクルを挿入する工程と、
（ｉｉ）前記ランダムな数の命令フェッチ・サイクルが行われている間に、（ａ）命令をメモリからフェッチする工程、（ｂ）プログラム・シーケンスにおいて該命令を実行する工程、及び（ｃ）メモリ・レジスタに結果を書き込む工程に関連した電力消費をまねる工程とを備えることを特徴とする方法。
【請求項４４】
データ・プロセッサであって、
算術論理演算装置と、
制御フラグ・レジスタと、
算術命令に応じ、かつ前記制御フラグ・レジスタの第１の状態に応じて前記算術論理演算装置の出力を通常、受ける複数のレジスタと、
命令に応じ、かつ前記制御フラグ・レジスタの第２の状態に応じて前記複数のレジスタのうちの１つの代わりに、前記算術論理演算装置の出力を受けるダミー・レジスタとを備えることを特徴とするデータ・プロセッサ。
【請求項４５】
請求項４４記載のデータ・プロセッサであって、
第１のプログラム・カウンタと、
第２のプログラム・カウンタとを更に備え、前記第１のプログラム・カウンタ及び前記第２のプログラム・カウンタは、前記制御フラグ・レジスタが前記第１の状態にある場合に前記第１のプログラム・カウンタがイネーブルされるように、かつ前記制御フラグ・レジスタが前記第２の状態にある場合に前記第２のプログラム・カウンタがイネーブルされるように前記制御フラグの状態に応じるものであり、
前記第１のプログラム・カウンタ及び前記第２のプログラム・カウンタのうち、イネーブルされたプログラム・カウンタが命令メモリから命令をフェッチすることを特徴とするデータ・プロセッサ。
【請求項４６】
請求項４５記載のデータ・プロセッサであって、前記算術論理演算装置は、前記第１のプログラム・カウンタによってフェッチされた算術命令の結果を前記複数のレジスタの１つに出力し、前記算術論理演算装置は、前記第２のプログラム・カウンタによってフェッチされた算術命令の結果を前記ダミー・レジスタに出力することを特徴とするデータ・プロセッサ。
【請求項４７】
請求項４６記載のデータ・プロセッサであって、前記ダミー・レジスタは、前記算術論理演算装置にデータを転送するための出力を何ら有していないことを特徴とするデータ・プロセッサ。
【請求項４８】
請求項４７記載のデータ・プロセッサであって、前記レジスタ及び前記ダミー・レジスタはそれぞれ、前記レジスタ及び前記ダミー・レジスタへのデータの転送を制御する関連論理ゲートを有しており、前記関連論理ゲートは、前記制御フラグ・レジスタの状態によって制御されることを特徴とするデータ・プロセッサ。
【請求項４９】
請求項４４記載のデータ・プロセッサであって、前記ダミー・レジスタは、前記算術論理演算装置にデータを転送するための出力を何ら有していないことを特徴とするデータ・プロセッサ。
【請求項５０】
請求項４４記載のデータ・プロセッサであって、前記レジスタ及び前記ダミー・レジスタはそれぞれ、前記レジスタ及び前記ダミー・レジスタへのデータの転送を制御する関連論理ゲートを有しており、前記関連論理ゲートは、前記制御フラグ・レジスタの状態によって制御されることを特徴とするデータ・プロセッサ。
【請求項５１】
暗号バス・アーキテクチャであって、
複数ビットの乱数が出力される複数の乱数出力を有する乱数生成器と、
複数の双方向バス・ドライバであって、それぞれが、前記乱数出力の少なくとも１つを受ける少なくとも１つの入力を有する双方向バス・ドライバと、
前記複数の双方向バス・ドライバの少なくとも１つを、前記双方向バス・ドライバのうちの少なくとも別のものに結合するバスとを備え、
バスの共通線に結合された双方向バス・ドライバは、前記乱数出力のうちの、選択された共通の乱数出力によって制御されることを特徴とする暗号バス・アーキテクチャ。
【請求項５２】
請求項５１記載の暗号バス・アーキテクチャであって、前記複数の乱数出力がカムフラージュされることを特徴とする暗号バス・アーキテクチャ。
【請求項５３】
請求項５１記載の暗号バス・アーキテクチャであって、前記複数の双方向バス・ドライバの少なくとも１つは、通常反転するトライステート・バッファを備え、前記複数の双方向バス・ドライバのうちの少なくとも別のものは、通常反転しないトライステート・バッファを備えることを特徴とする暗号バス・アーキテクチャ。
【請求項５４】
請求項５１記載の暗号バス・アーキテクチャであって、前記複数の双方向バス・ドライバに結合されたデュアル・レール組を更に備え、前記デュアル・レール組は前記バスをＣＰＵ又はメモリに結合することを特徴とする暗号バス・アーキテクチャ。
【請求項５５】
請求項５１記載の暗号バス・アーキテクチャであって、前記乱数生成器は、前記乱数生成器に新たな乱数を放出させる制御信号に対する応答性を有することを特徴とする暗号バス・アーキテクチャ。
【請求項５６】
請求項５５記載の暗号バス・アーキテクチャであって、前記制御信号はプロセッサによって生成されることを特徴とする暗号バス・アーキテクチャ。
【請求項５７】
請求項５６記載の暗号バス・アーキテクチャであって、前記制御信号はソフトウェア命令に応じて前記プロセッサによって生成されることを特徴とする暗号バス・アーキテクチャ。
【請求項５８】
セキュリティの漏洩を妨げる方法であって、
バスを介して暗号化ビットを送出する工程と、
前記バス上の前記暗号化ビットの極性をランダムに切り替える工程とを備えることを特徴とする方法。
【請求項５９】
請求項５８記載の方法であって、前記バスは、前記バス上で並列に送信されるビット毎にデュアル・レールを有しており、前記デュアル・レールの一方のレールは、前記デュアル・レールの他方のレールに対して反転されていることを特徴とする方法。
【請求項６０】
セキュリティの漏洩を妨げる方法であって、バス上で並列に送信されるビット毎にデュアル・レールを有するバスを介して暗号化ビットを送出する工程を備え、前記デュアル・レールの一方のレールは、前記デュアル・レールの他方のレールに対して反転されていることを特徴とする方法。
【請求項６１】
秘密鍵を保護する方法であって、
複数の双方向バス・ドライバを備える工程と、
前記複数の双方向バス・ドライバのうちの少なくとも第１の双方向バス・ドライバと前記複数の双方向バス・ドライバのうちの第２の双方向バス・ドライバとの間にデータ・バス線を結合する工程と、
第１のビット組をバスに供給する旨を前記第１の双方向バス・ドライバに通知する工程であって、前記ビットが第１の極性を有する工程と、
前記第１の極性を有する前記第１のビット組を受信する旨を前記第２の双方向バス・ドライバに通知する工程と、
第２のビット組を前記バスに供給する旨を前記第１の双方向バス・ドライバにランダムに通知する工程であって、前記第２のビット組が、前記第１のビット組とは逆の極性を有する工程と、
前記逆の極性を有する前記第２のビット組を受信する旨を前記第２の双方向バス・ドライバに通知する工程とを備えることを特徴とする方法。
【請求項６２】
請求項６１記載の方法であって、前記第１の双方向バス・ドライバ及び前記第２の双方向バス・ドライバの通知をカムフラージュする工程を更に備えることを特徴とする方法。
【請求項６３】
請求項６１記載の方法であって、
前記複数の双方向バス・ドライバのうちの少なくとも第３の双方向バス・ドライバと前記複数の双方向バス・ドライバのうちの第４の双方向バス・ドライバとの間に前記データ・バスの第２の線を結合する工程と、
第３のビット組を前記バスに供給する旨を前記第３の双方向バス・ドライバに通知する工程であって、前記ビットが第１の極性を有する工程と、
前記第１の極性を有する前記第３のビット組を受信する旨を前記第４の双方向バス・ドライバに通知する工程と、
第４のビット組を前記バスに供給する旨を前記第３の双方向バス・ドライバにランダムに通知する工程であって、前記第４のビット組は、前記第２のビット組とは反対の極性を有する工程と、
該反対の極性を有する前記第４のビット組を受信する旨を前記第４の双方向バス・ドライバに通知する工程とを備えることを特徴とする方法。
【請求項６４】
情報漏洩攻撃を妨げる方法であって、
バスの第１の端部上で複数の信号のうちの少なくとも１つの極性をランダムに反転する工程と、
前記バスの前記第１の端部において前記ランダムな反転が生じたことを前記バスの第２の端部に通知する工程とを備えることを特徴とする方法。
【請求項６５】
暗号バス・アーキテクチャであって、
複数ビット乱数を生成する乱数生成器と、
第１の複数の双方向バス・ドライバ及び第２の複数の双方向バス・ドライバであって、各双方向バス・ドライバが、前記乱数の選択ビットに対する応答性を有する制御入力を有する双方向バス・ドライバと、
前記第１の複数の双方向バス・ドライバを前記第２の複数の双方向バス・ドライバに結合するバスであって、前記双方向バス・ドライバのそれぞれが、前記バスの単一線に関連付けられており、前記バスの共通線に結合された前記双方向バス・ドライバが、乱数の共通ビットに対する応答性を有することを特徴とする暗号バス・アーキテクチャ。
【請求項６６】
請求項６５記載の暗号バス・アーキテクチャであって、前記乱数生成器は、複数のカムフラージュされた乱数出力ポートを有することを特徴とする暗号バス・アーキテクチャ。
【請求項６７】
請求項６５記載の暗号バス・アーキテクチャであって、前記双方向バス・ドライバは、その制御入力におけるデータの状態によって判定されるものとしての、反転型トライステート・バッファ又は非反転型トライステート・バッファを備えることを特徴とする暗号バス・アーキテクチャ。
【請求項６８】
請求項６５記載の暗号バス・アーキテクチャであって、前記第１の複数の双方向バス・ドライバ及び前記第２の複数の双方向バス・ドライバに結合された第１のデュアル・レール組及び第２のデュアル・レール組を更に備え、前記第１のデュアル・レール組及び第２のデュアル・レール組は前記バスをＣＰＵ及びメモリに結合することを特徴とする暗号バス・アーキテクチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願との相互参照）
本願は、「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｗｉｔｈ  Ｒａｎｄｏｍ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍａｓｋｉｎｇ  ｔｏ  Ｔｈｗａｒｔ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」、「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｔｈｅ  Ｐｒｅｖｅｎｔｉｏｎ  ｏｆ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」及び「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  ＣＰＵ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｗｉｔｈ  Ｒａｎｄｏｍ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍａｓｋｉｎｇ  ｔｏ  Ｔｈｗａｒｔ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」とそれぞれ題する、西暦２００４年６月８日付けで全て出願された米国特許出願第１０／８６４，５６９号、米国特許出願第１０／８６４，５５６号及び米国特許出願第１０／８６４，５６８号の一部継続出願である。これらの関連出願のそれぞれの内容を本明細書及び特許請求の範囲に援用する。
本発明は、マイクロエレクトロニクス組立体（スマート・カードや同様なものなど）において、差分電力解析（ＤＰＡ）攻撃が利用された場合にそのセキュリティ漏洩を妨げるために用いる、暗号手法のセキュリティ、及び、プロセッサの暗号アーキテクチャに関する。
【背景技術】
【０００２】
暗号手法は当該技術分野において周知である。実際に、暗号手法の起源は少なくとも、符号及び暗号によって情報を隠すやり方を人々が見出すほど、好奇の目に対して、特定の情報の秘密を保つ必要性が十分に重要になったシーザーの時代にさかのぼる。
【０００３】
今日では、暗号手法の適用例は、政府及び民間の広い範囲に及んでいる。暗号手法の一適用例は、スマート・カードに記憶された情報の保護、及び／又は、認可されていない使用若しくは変更からの、スマート・カードの機能の保護である。スマート・カードなどの暗号装置は、秘密鍵を用いて、入力情報の処理、及び／又は、出力情報の生成を行う。強度が特に高い暗号手法が利用される場合には、暗号装置（スマート・カードなど）に記憶された情報は、攻撃に対して比較的安全であるとみなされている。
【０００４】
現代の暗号法は、ディジタル・データの互換及び換字を利用する。暗号化対象のメッセージ（平文として知られている）は、鍵によってパラメータ化された関数によって変換される。暗号化処理の出力（暗号文として知られている）は次いで送信される。受信暗号文は次いで、鍵を用いてもう一度平文に復号される。
【０００５】
現代の暗号法が用いられている一例は、ケーブル・テレビジョン及び衛星テレビジョンの有料チャネルなどの有料ＴＶ限定受信システムにみられる。（秘密鍵を含む）スマート・カード及び／又はセキュリティ・プロセッサを用いてテレビジョン信号を復号する。攻撃者は、秘密鍵を明らかにするために、ケーブル受信器又は衛星受信器を購入し、次いで、中にあるスマート・カード又はセキュリティ・プロセッサを攻撃する。暗号文は、ケーブル・プロバイダ又は衛星プロバイダから送出される情報であり、平文は、テレビ受像機に送出される復号テレビジョン信号である。よって、一般には、入力情報及び出力情報（すなわち、平文及び暗号文）が、攻撃者によって入手可能であり、秘密鍵についての情報が入手可能でないことがみなされている。図１は、暗号システムを表すものである。攻撃者は、ＥＭ放射、電力消費、時間観測等によって漏洩し得る、秘密鍵に関する情報を探すことによってスマート・カード又はセキュリティ・プロセッサを攻撃することができる。攻撃者は次いで、漏洩された情報（通常、設計者の予想しなかった情報（ｓｉｄｅ  ｃｈａｎｎｅｌ  ｉｎｆｏｒｍａｔｉｏｎ）と呼ばれている）を用いて、使用されている秘密鍵を明らかにすることが可能である。漏洩された情報、又は設計者が予想しなかった情報から秘密鍵を明らかにする通常の手法の１つは、差分電力解析（ＤＰＡ）として知られている。残念ながら、電力消費、ＥＭ放射等によって、装置によって行われている特定の暗号処理情報の漏洩、及び、それによる、秘密についての情報の取得が行われる訳でないということを保証するやり方は何ら存在しない。
【０００６】
よって、ＤＰＡなどの相関手法を用いるハッカーによって用いることが可能でない漏洩情報を生成する防御手法が必要である。
【０００７】
本明細書記載の手法の一適用例の背景を表すために、以下に背景を説明する。これは、周知の暗号（解読するのにＤＰＡ解析が通常用いられるデータ暗号化規格（ＤＥＳ））に関するものである。この説明が例証の目的のために過ぎないこと、及び、設計者が予想しなかった情報を用いて秘密鍵を明らかにするいくつかのハッカー手法から、いくつかのデータ暗号化形式の秘密鍵を保護するのに本発明を用いることができることを当業者は認識するであろう。
【０００８】
周知のＤＥＳ暗号は、いくつか（通常は１６個）の換字ボックス（Ｓボックス）関数を利用する。Ｓボックス関数は、非線形であり、テーブル・ルックアップ、ブール論理、又は適切にプログラムされたコンピュータを用いることによって実施することが可能である。
【０００９】
攻撃者がＤＰＡを利用して、ＤＥＳを利用した暗号装置（スマート・カードなど）（特に、ディジタル暗号化規格（ＤＥＳ）が用いられている）において使用されている秘密鍵を明らかにすることが可能であることがここ数年の間に明らかになっている。例えば、Ｐａｕｌ  Ｃｏｋｅｒら（Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｒｅｓｅａｒｃｈ社（Ｓａｎ  Ｆｒａｎｃｉｓｃｏ、Ｃａｌｉｆｏｒｎｉａ））によって公表されているＤｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓを参照のこと。ＤＰＡに関するチュートリアルは、Ｍａｎｆｒｅｄ  Ａｉｇｎｅｒら（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｆｏｒ  Ａｐｐｌｉｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ、Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｔｅｃｈｎｏｌｏｇｙ、Ｇｒａｚ、Ａｕｓｔｒｉａ）によって公表されている論文Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ｔｕｔｏｒｉａｌにも記載されている。前述の参考文献に開示されているように、ＤＰＡ手法を利用するために、攻撃者は、暗号装置の電力消費を監視する。装置によって使用される電力における変動は、装置内で行われている動作を反映しており、今度は、これを用いて、装置内に記憶された、秘密鍵についての情報を少しずつ集めることが可能である。
【００１０】
しかし、電力消費情報以外の、設計者が予想しなかった情報をＤＰＡによって調べて暗号化鍵を抽出することができることを強調する。特定例として、電磁（ＥＭ）放射及び不良出力がある。残念ながら、電力消費、ＥＭ放射、及び同様なものによって、特定の情報が漏洩される訳でないということを保証するやり方は何ら存在せず、その電力消費、ＥＭ放射、又は同様なものによって情報を識別することができるという点で、暗号装置（スマート・カードなど）に全く漏れがないことを期待することは実際的でないと考えられている。しかし、高度な統計手法が（例えば、ＤＰＡ処理において）用いられても、漏洩された如何なる情報の関係付けをも不能にする防御手法を用いることが可能である。そういうものとして、本発明は、暗号装置（スマート・カードなど）内に記憶された秘密鍵と、電力消費情報との互いの関係付けを不能にするという課題に対する解決策に関する。
【００１１】
従来技術には、特定の無相関化手法が存在している。例えば、Ｍｅｓｓｅｒｇｅｓらによる米国特許第６，２９５，６０６号明細書及び米国特許第６，２９８，１５３号明細書、並びにＢｏｅｃｋｅｌｅｒによる欧州特許出願公報第１，０９８，４６９号明細書を参照のこと。
【００１２】
Ｇｒｅｇｏｒ  Ｂｏｅｃｋｅｌｅｒによる欧州特許出願公報第１，０９８，４６９号明細書記載の無相関化手法は、マスター・クロックＣＬＫ１に基づいた、ＣＰＵの既存プロファイル上に挿入して、二次クロックＣＬＫ２に基づいた、ランダムな現行プロファイルを重ね合わせるものである。各クロックは、３ＭＨｚ乃至７ＭＨｚの範囲でランダムに調節される。二つのクロックが互いに、その中心周波数に関して異なるために、合成された現行プロファイルは、無作為化され、それによって、ＤＰＡ攻撃者の作業は、より困難になる。
【００１３】
Ｔｈｏｍａｓ  Ｍｅｓｓｅｒｇｅｓによる米国特許第６，２０８，１３５号明細書は、目標ビット組において無作為化開始点を用いるものである。上記文献では、対応する目標ビットを、異なる順序で処理する。よって、ＤＰＡ攻撃者が、対象の平文全てからの関連目標ビットをグループ化して、特定の目標ビット位置に関連した統計解析を行うことが困難になる。しかし、この手法は、データ・バスによって漏洩される情報を隠すものでないのみならず、悪意のある攻撃者がこの情報を用いて目標ビットを、正しいビット位置に再配列することを妨げることも可能でない。
【００１４】
ランダム・マスクを用いて、メモリに記憶されている間に、かつ、暗号アルゴリズム自体による処理中に、隠された状態にメッセージ及び鍵を保つ別の手法（米国特許番号６，２９５，６０６号明細書記載）もＭｅｓｓｅｒｇｅｓによって開発されている。しかし、マスクはランダムに変更されるので、新たなＳボックスはそれに応じて更新しなければならず、これは時間を要する。この欠点は、この種のマスク処理が、３倍乃至５倍、ＤＥＳアルゴリズムを遅くすることである。更に、この種のマスク処理は、正しい暗号出力をもたらすために結果を最終的にマスク解除しなければならないラウンド１６（Ｒｏｕｎｄ  Ｓｉｘｔｅｅｎ）からの４８ビット部分鍵を攻撃者が収集することを妨げることが可能でない。よって、Ｍｅｓｓｅｒｇｅｓの手法は、マスク解除後、ＤＰＡに対して脆弱になる。ラウンド１６で４８ビットはもう分かっており、次いで、攻撃者は、５６個にするための残りの６つの鍵ビットを全数探索することが可能である。本願の手法は計算がより高速であり、ＤＥＳアルゴリズムのラウンド１６からの部分鍵を攻撃者が収集することを妨げることも可能である。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
前述の従来技術手法は特定の制約を有しており、よって改良を必要としている。本発明は、事実上、電力消費と暗号ビット値とを互いに関係付けることを不能にする、ＤＰＡ処理に対する対抗手段としての、独自のランダム命令マスク（ＲＩＭ）を提案するものである。本発明は、Ｍｅｓｓｅｒｇｅｓの手法、Ｂｏｅｃｋｌｅｒの手法や他の手法に対して次の利点を有している。
【００１６】
（１）計算がより効率的である：Ｍｅｓｓｅｒｇｅｓらの教示による手法は、Ｓボックスの定期的な更新によって３００％乃至５００％、ＤＥＳアルゴリズムを減速させるものである。本発明では、ＤＥＳアルゴリズムは、約１５％、減速することになる。
【００１７】
（２）よりロバストである：複数アドレス位置について情報の漏洩が存在している場合にもこれがあてはまる。
【００１８】
（３）保護がより好適である；鍵の４８ビットは、最終ＤＥＳラウンドにおいて完全に隠すことが可能である（ＤＥＳでは、出力がアルゴリズムの最後でマスク解除され、それによって鍵を露出させることになり、このことは従来技術では解決されない）。
【００１９】
（４）電力消費が低い：電力消費を暗号処理中に約２００％まで増加させる、Ｂｏｅｃｋｌｅｒのランダムな現行プロファイリングに対して、電力消費の増加は１％未満である。
【００２０】
本明細書記載の好ましい実施例の詳細を説明する前に、ＤＥＳアルゴリズム及びＤＰＡ攻撃に関する更なる詳細を記載する。この分野に不案内の場合、更なる情報を次の論文で見つけることができる（Ｐ．  Ｋｏｃｈｅｒ、Ｊ．  Ｊａｆｆｅ及びＢ．  Ｊｕｎによる「Ｉｎｔｒｏｄｕｃｔｉｏｎ  ｔｏ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｒｅｌａｔｅｄ  Ａｔｔａｃｋｓ、１９９８」、Ｔｈｏｍａｓ  Ｓ．  Ｍｅｓｓｅｒｇｅｒｓ、Ｅｚｚｙ  Ａ．  Ｄａｂｂｉｓｈ及びＲｏｂｅｒｔ  Ｈ．  Ｓｌｏａｎによる「Ｉｎｖｅｓｔｉｇａｔｉｏｎｓ  ｏｆ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ａｔｔａｃｋｓ  ｏｎ  Ｓｍａｒｔｃａｒｄｓ、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＵＳＥＮＩＸ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｓｍａｒｔｃａｒｄ  Ｔｅｃｈｎｏｌｏｇｙ、Ｃｈｉｃａｇｏ、Ｉｌｌｉｎｏｉｓ、Ｍａｙ  １９９９、ｐｐ．  １５１−１６１」、並びに、Ｍａｎｆｒｅｄ  Ａｉｇｎｅｒ及びＥｌｉｓａｂｅｔｈ  Ｏｓｗａｌｄによる「Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ  Ｔｕｔｏｒｉａｌ、Ｉｎｓｔｉｔｕｔｅ  ｆｏｒ  Ａｐｐｌｉｅｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｔｅｃｈｎｏｌｏｇｙ  Ｇｒａｚ、Ａｕｓｔｒｉａ」）。本願記載の手法の詳細な説明の背景を示す記載を以下に設ける。
【００２１】
ＤＥＳアルゴリズムは、反復ブロック暗号の例である。ＤＥＳは、内容を本明細書及び特許請求の範囲に援用する、ＡＮＳＩ  Ｘ．３９２、「Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  ｆｏｒ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ  （ＤＥＡ）、Ａｍｅｒｉｃａｎ  Ｓｔａｎｄａｒｄ  Ｉｎｓｔｉｔｕｔｅ、１９８１」に詳細に説明されている。ＤＥＳ暗号は周知であり、ラウンドと呼ばれるプログラム・シーケンスにおいて設けられたいくつかの（通常、１６個の）換字・転置ボックス（ＳＰボックス）関数を利用するものである。ＳＰボックス関数は、非線形であり、通常、ルックアップ・テーブル若しくはブール論理ゲート、又は適切にプログラムされたコンピュータを用いて実施される。１６ラウンドのそれぞれでは、ＤＥＳ暗号化アルゴリズムは、８つのＳＰボックス演算を、今度は、各ルックアップ・テーブルを順次アクセスすることによって、（又は、同等の論理ゲートを用いることによって）行う。８つのＳＰボックスそれぞれは入力として、スクランブルされた（ここで、スクランブルされたということは、鍵のＸＯＲ及びシフトが行われることを意味する）６ビット鍵を得て、ＯＲ演算を行うためにＣＰＵによってアクセスされる対象の４ビット出力目標を生成する。前述のスクランブルされた６ビット鍵それぞれはＳＰボックスの・エントリ・アドレスである。表１は、ＤＥＳの３２ビット実施形態におけるＳＰボックス１及び２のＣ言語表現を示す。ＤＥＳは１６ビット、３２ビット及び６４ビットで実行することが可能であるが、基準例として３２ビット表現を選んでいる。表１から、各ＳＰルックアップが６４個のエレメントを含んでいることが分かる。基準ＤＥＳ実施形態における各エレメントは３２ビットであり、このエレメントには、特定の４ビット出力目標が埋め込まれている。この埋め込みは次に、更に詳細に説明する。
【００２２】
データ・バスは通常、幅が３２ビットであり、この４ビット出力目標を、表１において示唆される転置規則（ＳＰボックス毎１つ）によって３２ビット語内のどこかに分布させる。表１では、データは１６進形式で示す。すなわち、各ＳＰルックアップ・テーブルは、特定の４ビット出力目標について別々の埋め込み位置を有する。例えば、表１に示すルックアップ・テーブルＳＰ１は、３２ビット語におけるビット位置２４、１６、１０及び２において４ビット出力目標を埋め込む。ルックアップ・テーブルＳＰ２は、ビット位置２０、５、３１及び１５において４ビット出力目標を埋め込む。ここで、特定の４ビット出力の場合、ビット２０は最上位ビット（ＭＳＢ）であり、ビット１５は最下位ビット（ＬＳＢ）である。更なる例証として、ルックアップ・テーブルＳＰ１の最初の４つのエントリ（すなわち、ＳＰ１［０：３］＝｛０ｘ０１０１０４００Ｌ，  ０ｘ００００００００Ｌ，
０ｘ０００１００００Ｌ，  ０ｘ０１０１０４０４Ｌ｝は、１４、０、４、１５の４ビット出力目標値を有する。特に、ＳＰ［０］＝｛０ｘ０１０１０４００Ｌ｝には、１４の４ビット出力目標値（すなわち、１１１０）が埋め込まれる。例えば、ＳＰ１［０］の場合、３２ビット２進語は００００  ０００１  ００００  ０００１  ００００  ０１００  ００００  ００００である。特定の３２ビット２進語の場合、最も右の桁はＬＳＢである一方、最も左の桁はＭＳＢである。４ビット出力目標を導き出すために、２４、１６、１０及び２におけるビット値が用いられる。例えば、ＳＰ１［０］の場合、４ビット目標は１１１０である。これは、３２ビット２進語ＳＰ１［０］の位置２４における４ビット出力目標のＭＳＢ値を探すことによって定められ、次のビットは３２ビット２進語ＳＰ１［０］の位置１６にあり、第３のビットは３２ビット２進語ＳＰ１［０］の位置１０にあり、最後に０のＬＳＢは、３２ビット２進語ＳＰ１［０］の位置２にある。上記２進表現では、ビット位置２４、１６、１０及び０に下線を引いている。第４のエントリＳＰ１［３］＝｛０ｘ０１０１０４０４Ｌ｝（ＬＳＢのみでＳＰ１［０］の１１１０とは異なる）は、４ビット出力目標値１５（すなわち、１１１１）を有する。
【００２３】
一方、ルックアップ・テーブルＳＰ２は、ルックアップ・テーブルＳＰ２の最初の４つのエントリに示す、異なる埋め込みビット位置手法を示す（すなわち、ＳＰ２［０：３］＝｛０ｘ８０１０８０２０Ｌ，  ０ｘ８０００８０００Ｌ，  ０ｘ００００８００００Ｌ，  ０ｘ００１０８０２０Ｌ｝である。対応する４ビット・ブロックの１５、３、１及び１３の値を反映するために、ビット位置２０、５、３１及び１５における内容のみを変更する。特に、ルックアップ・テーブルＳＰ２の第１のエントリ（ＳＰ２［０］＝｛０ｘ８０１０８０２０Ｌ｝）は、４ビット出力目標値１５（すなわち、１１１１）を有するが、それは、ビット２０、ビット５、ビット３１及びビット１５が全て１の値を有するからである。第４のエントリ（ＳＰ２［３］＝｛０ｘ００１０８０２０Ｌ｝）（第２のＬＳＢのみで、ＳＰ２［０］の１１１１とは異なる）は、４ビット目標値１３（すなわち、１１０１）を有する。
【００２４】
４ビット出力目標と、それに対応するＳＰボックスのエントリとの間の関係を明らかにすると、次に、特定のＳＰボックスのエントリ・アドレスの計算を記載する。一般に、ＤＥＳアルゴリズムは、ＣＰＵにおいて実行しているシフト命令を用いてボックスのエントリ・アドレスを計算する。特定のＳＰボックスのエントリ・アドレスの計算において用いるシフト命令の数も、ＳＰボックスの各連続アクセス間の時間間隔も、ＤＥＳアルゴリズムに詳しい者には周知である。このことに鑑みれば、ＤＰＡ攻撃は、そのボックスに特有の先行シフト命令署名を参照することによる、ＳＰボックスの各４ビット出力目標の電力トレースのアラインメントに焦点を当てるものである。表２に示すように、通常の演算では、各ＳＰボックスのアクセスには、異なる量のシフト（すなわち、＞＞８、＞＞１６又は＞＞２４（「＞＞」はＣコンピュータ言語において右シフトを表し、よって、「＞＞ｎ」は、ｎビットの右シフトを表す））が先行する。表２におけるルーチンがＣコンピュータ言語で記述されていることを当業者は認識するであろう。図２ａは、８つのＳＰボックス［ＳＰ１…ＳＰ８］の通常のアクセス順序に対応するタイムラインを示す。各シフト命令は通常、一度に１ビット、シフトするので、＞＞８は通常、８ビット右シフト命令を示唆し、＞＞１６は通常、１６ビット右シフト命令を示唆する等である。ＳＰ５のシフトは、数字１３１によって示す。
【００２５】
電力トレースのアラインメントを行うために、ＤＰＡ攻撃者は、電力トレースにおけるパターンを探す。ＳＰボックス５（ＳＰ５）のＳＰアドレス計算を明らかにするため、ＤＰＡ攻撃者は、表２においてわかるように８シフトを示すパターンを探す。更に、ＤＰＡ攻撃者は、８シフト（数字１３１を参照のこと）の最初から次のシフト組の最初までの時間が、図２ａに示す時間ＴＩ５に等しいことが分かるものである。よって、電力トレースにおけるこのパターンが分かると、ＤＰＡ攻撃者は、ＳＰ５のＳＰアドレス計算が（数字１２３で）明らかになったことが分かるものである。更に、攻撃者は、８シフトの最後に続く時間スロットの電力トレースにおける情報が、対応する４ビット出力目標情報を含むことも分かるものである。この情報によって、６ビット鍵に関する情報を供給する統計的平均化の電力トレースのアラインメントが可能になる。電力トレースには雑音があり、よって、命令署名や他のパターンを見つけることが、ＤＰＡ攻撃の成功を保証しないことがあり得ることを当業者が認識するであろう。しかし、命令署名や他のパターンが従来技術において、攻撃者が用いるうえで入手可能である。こうした命令署名及び時間パターンを破壊することによって、ＤＰＡ攻撃の成功の可能性はもっと低くなる。
【００２６】
図２ｂは、８つのＳＰボックスのアクセス順序を無作為化させたタイムラインを示す。図２ｂに例証するように、ＳＰ１及びＳＰ３の処理の順序が交換されており、ＳＰ４及びＳＰ６も同様である。この場合には、ＳＰボックス・アクセス順序を入れ替えることによって、こうしたシフト命令署名を識別して電力トレースのアラインメントを行わなければならないことになる。特定のＳＰボックスのアラインメントの後、こうした電力トレースの統計的平均化や他の解析を行うことが可能である。よって、ＤＰＡ攻撃者は最終的に電力トレースのアラインメントを行って６ビット鍵を明らかにすることが可能である。
【課題を解決するための手段】
【００２７】
一実施例では、本発明は、暗号装置のＤＰＡの成功を抑制する方法を提供し、この方法は、少なくとも１つのルックアップ・テーブル・アドレスを判定するのに必要な時間量をランダムに変更する工程と、少なくとも１つのルックアップ・テーブルの１つのアクセスと別のルックアップ・テーブルの後のアクセスとの間で生じる時間量をランダムに変更する工程を備える。
【００２８】
別の実施例では、本発明は、暗号アーキテクチャを提供する。暗号アーキテクチャは、プロセッサと、プロセッサに結合された、暗号アルゴリズムを含むメモリ・モジュールと、プロセッサに結合され、プロセッサの状態処理を制御する制御フラグ・レジスタと、制御フラグ・レジスタに結合された乱数生成器とを備え、プロセッサは制御フラグ・レジスタをセットし、乱数生成器は制御フラグ・レジスタをリセットする。
【００２９】
更に別の実施例では、本発明は、ＤＰＡを妨害するシステムを提供し、このシステムは、暗号化アルゴリズムを実行する手段と、ランダムな数の疑似命令を暗号化アルゴリズムに挿入する手段とを備える。
【００３０】
更に別の実施例では、本発明は、チャネル情報の無相関化を行うシステムを提供し、このシステムは、データ暗号化規格（ＤＥＳ）アルゴリズムを実行する手段を備え、ＤＥＳアルゴリズムは、複数の換字／転置ボックス・エントリ・アドレス評価と、複数の換字／転置ボックス・エントリ・アドレス評価それぞれにおいて実行されるランダムな数のシフト命令を挿入する手段とを備える。
【００３１】
更に別の実施例では、本発明は、暗号アーキテクチャの電力トレースを変える方法を提供し、この方法は、暗号化アルゴリズムを実行する工程と、制御フラグをセットする工程と、制御フラグがセットされている場合にランダムな数の命令を行う工程とを備える。
【００３２】
なお更に別の実施例では、本発明は、暗号装置の差分電力解析の成功を抑制する方法を提供し、この方法は、少なくとも１つのルックアップ・テーブル・アドレスを判定するのに必要な時間量をランダムに増加させる工程と、少なくとも１つのルックアップ・テーブルの一アクセスと、別のルックアップ・テーブルの後のアクセスとの間に生じる時間量をランダムに増加させる工程とを備える。
【００３３】
なお更にもう１つの別の実施例では、本発明は、暗号アーキテクチャを提供する。暗号アーキテクチャは、プロセッサと、プロセッサに結合された、暗号アルゴリズムを含むメモリ・モジュールと、プロセッサに結合され、プロセッサの状態処理を制御する制御フラグ・レジスタと、制御フラグ・レジスタに結合された乱数生成器とを備え、プロセッサは制御フラグ・レジスタをセットし、乱数生成器は制御フラグ・レジスタをリセットする。
【００３４】
更に別の実施例では、本発明は、差分電力解析を妨害するシステムを提供し、このシステムは、暗号化アルゴリズムを実行する手段と、ランダムな数の疑似命令を暗号化アルゴリズムに挿入する手段とを備える。
【００３５】
なお更に別の実施例では、本発明は、設計者が予想しなかった情報の無相関化を行うシステムを提供し、このシステムは、データ暗号化規格（ＤＥＳ）アルゴリズムを実行する手段を備え、ＤＥＳアルゴリズムは、複数の換字／転置ボックス・エントリ・アドレス評価と、複数の換字／転置ボックス・エントリ・アドレス評価それぞれにおいて実行されるランダムな数のシフト命令を挿入する手段とを備える。
【００３６】
更に別の実施例では、本発明は、暗号アーキテクチャの電力トレースを変える方法を提供し、この方法は、暗号化アルゴリズムを実行する工程と、制御フラグをセットする工程と、制御フラグがセットされている場合にランダムな数の命令を行う工程とを備える。
【００３７】
更に別の実施例では、本発明は、暗号ＣＰＵアーキテクチャを提供する。暗号ＣＰＵアーキテクチャは、ＡＬＵと、制御フラグと、算術命令に応じてＡＬＵの出力を通常、受ける複数のレジスタと、制御フラグがセットされている場合に算術命令に応じて、複数のレジスタのうちの１つの代わりに、ＡＬＵの出力を受ける更なるレジスタとを備える。
【００３８】
更に別の実施例では、本発明は、プログラムの実行中の電力解析から、ＣＰＵにおいて行われているデータ処理を隠す方法を提供する。この方法は、（ｉ）プログラムの実行の一時点で、ランダムな数のプログラム・カウンタ・サイクル命令フェッチ・サイクルを挿入する工程と、（ｉｉ）ランダムな数の命令フェッチ・サイクルが行われている間に、メモリから命令をフェッチし、プログラム・シーケンスにおいてこうした命令を実行する一方、こうした命令の実行に基づいて通常のメモリ位置の更新を抑制する工程と、（ｉｉｉ）ランダムな数の命令の終わりに、ランダムな数の命令フェッチ・サイクルが行われている間に当初フェッチされた命令と同じ命令を再フェッチする一方、命令が再フェッチされた場合、ＣＰＵのメモリ位置を通常のやり方で更新することによって通常プログラム実行を再開する工程とを備える。
【００３９】
なお更に別の実施例では、本発明は、プログラムの実行中の電力解析から、ＣＰＵにおいて行われているデータ処理を隠す方法を提供する。この方法は、（ｉ）プログラムの実行中の時点に、ランダムな数のプログラム・カウンタ・サイクル命令フェッチ・サイクルを挿入する工程と、（ｉｉ）ランダムな数の命令フェッチ・サイクルが行われている間に、（ａ）命令をメモリからフェッチする工程、（ｂ）プログラム・シーケンスにおいてこうした命令を実行する工程、及び（ｃ）メモリ・レジスタに結果を書き込む工程に関連した電力消費をまねる工程とを備える。
【００４０】
更に別の実施例では、本発明は、データ・プロセッサを提供する。データ・プロセッサは、算術論理演算装置と、制御フラグ・レジスタと、算術命令に応じ、かつ制御フラグ・レジスタの第１の状態に応じ算術論理演算装置の出力を通常、受ける複数のレジスタと、命令に応じ、かつ制御フラグ・レジスタの第２の状態に応じ複数のレジスタのうちの１つの代わりに、算術論理演算装置の出力を受けるダミー・レジスタとを備える。
【００４１】
別の実施例では、本発明は、暗号バス・アーキテクチャを提供する。暗号バス・アーキテクチャは、複数ビットの乱数が出力される複数の乱数出力を有する乱数生成器と、複数の双方向バス・ドライバであって、それぞれが、乱数出力の少なくとも１つを受ける少なくとも１つの入力を有する双方向バス・ドライバと、複数の双方向バス・ドライバの少なくとも１つを、少なくとも別の双方向バス・ドライバに結合するバスとを備え、バスの共通線に結合された双方向バス・ドライバは、乱数出力のうちの、選択された共通の乱数出力によって制御される。
【００４２】
別の実施例では、本発明は、セキュリティの漏洩を妨げる方法を提供し、この方法は、バスを介して暗号化ビットを送出する工程と、バス上の暗号化ビットの極性をランダムに切り換える工程とを備える。
【００４３】
別の実施例は、本発明は、秘密鍵を保護する方法を提供する。この方法は、複数の双方向バス・ドライバを備える工程と、複数の双方向バス・ドライバのうちの少なくとも第１の双方向バス・ドライバと、複数の双方向バス・ドライバのうちの少なくとも第２の双方向バス・ドライバとの間にライン・データ・バスを結合する工程と、第１のビット組をバスに供給する旨を第１の双方向バス・ドライバに通知する工程であって、上記ビットが第１の極性を有する工程と、第１の極性を有する第１のビット組を受信する旨を第２の双方向バス・ドライバに通知する工程と、第２のビット組をバスに供給する旨を第１の双方向バス・ドライバにランダムに通知する工程であって、第２のビット組が、第１のビット組とは逆の極性を有する工程と、逆の極性を有する第２のビット組を受信する旨を第２の双方向バス・ドライバに通知する工程とを備える。
【発明を実施するための最良の形態】
【００４４】
表１は、６４個のエレメントのルックアップ・テーブルとして実施されたＳＰボックス１及び２の値（Ｃ言語で表している）を示す。
【００４５】
表２は、特定のラウンドのＤＥＳの８つのＳＰルックアップ・テーブルの順次アクセスを行うＣ言語プログラムである。
【００４６】
表３は、表２のＣプログラム文番号５を実施するためのアセンブラ言語プログラムである。
【００４７】
表４は、８個のＳ及びＰのボックスの演算を、今度は、各ルックアップ・テーブルの順次アクセスによって行うＤＥＳ暗号化アルゴリズムの一部分を実施するためのアセンブラ言語プログラムである。
【００４８】
表５は、図７の実施例を用いて、表２のＣプログラム文番号５を実施するためのアセンブラ言語プログラムである。
【００４９】
序論
本明細書記載の手法を次に、添付図面を参照しながら、更に徹底的に説明する。この説明では、上記手法の好ましい実施例を図７及び図８を参照しながら説明する。しかし、図７及び図８を説明する前に、この詳細な説明は、前述の関連出願において提示された内容の一部の記載を繰り返す図３乃至図６をたどるものである。こうした説明は、図７及び図８によって示される改良をよりうまく理解するうえで有用である。
【００５０】
図９は基本的に、図６及び図７の実施例の組み合わせである第４の実施例を表す。
【００５１】
図１１は、修正されたＲＩＳＣ  ＣＰＵ設計に基づいた第５の実施例を表す。しかし、上記修正は、望まれる場合、非ＲＩＳＣ  ＣＰＵに用いることもできる。
【００５２】
図１２乃至図１４は、他の実施例とは無関係に用いても他の実施例と組み合わせて用いてもよい暗号バス・アーキテクチャに関する。
【００５３】
本明細書記載の手法は、種々の多くの形態において実施することができ、本明細書記載の実施例に限定されるものとして解されるべきでない。
【００５４】
以下の説明は、周知の暗号と、データ暗号化規格（ＤＥＳ）と、ＤＥＳを解読するのに通常用いられる、ＤＰＡ解析妨害とに関して本願開示を用いるうえでの１つの背景を設けるものである。この説明が例証の目的のために過ぎないこと、及び、設計者が予想しなかった情報を用いて秘密鍵を明らかにするいくつかのハッカー手法から、いくつかのデータ暗号化形式の秘密鍵を保護するのに本明細書記載の手法を利用することができることを当業者は認識するはずである。
【００５５】
一般に、どの暗号化アルゴリズムも、プロセッサによって実行される一連の命令である。こうした命令の入力及び出力は種々のものである一方で、各命令を完了するのに必要な時間量は、プロセッサ、又はプロセッサとの間でデータが送信されるバスのクロック速度によって定められる。他の命令よりも多くのクロック・サイクルを要する命令がある。データの暗号化／復号に用いる暗号化アルゴリズムが分かっていることによって、アルゴリズムのタイミングについての知識（すなわち、使用される命令、及び、よって、各命令の所要時間長についての知識）がハッカーに与えられる。タイミングについてのこの知識を次いで用いて、設計者が予想しなかった情報のアラインメントを行うことが可能である。よって、設計者が予想しなかった情報を次いで、攻撃者が暗号化を破ることを可能にする高度な統計手法によって処理することが可能である。
【００５６】
暗号化アルゴリズム内の命令数を無作為化するシステム及び方法を本明細書に記載する。命令数を無作為化することにより、かつ、そうした命令を実行し、それによって、ランダムな遅延時間を挿入することによって、暗号化アルゴリズム内の命令及びタイミングは、ＤＰＡ攻撃者にはもう分からないものである。よって、アルゴリズムのタイミングは、攻撃者には分からないことになり、攻撃者は、設計者が予想しなかった情報のアラインメントを行うことができなくなる。設計者が予想しなかった情報のアラインメントなしでは、高度な統計手法は失敗することになり、暗号化情報は保護されることになる。
【００５７】
以下の説明は、本明細書記載の手法の特定の実施例を、ＤＥＳを用いたシステムに組み入れてＤＰＡ攻撃を妨げることができる。他の暗号化アルゴリズムを用いる他のシステムに本発明を組み入れて特定の命令間の時間の無作為化を行うことができることを当業者は認識するであろう。時間のこの無作為化を用いて、暗号化を破るためにアルゴリズムのタイミングの理解に依拠する何れかの攻撃を挫折させることができる。
【００５８】
本明細書は、暗号処理を行うのに用いられる、マイクロプロセッサ上のオンチップ・ランダム命令マスク（ＲＩＭ）アーキテクチャに特有の情報を記載するものである。更に、本明細書は、既存の暗号アルゴリズム（ＲＳＡアルゴリズム、ＤＥＳアルゴリズム、ＡＥＳアルゴリズム及び非線形アルゴリズムを含む）を、設計者が予想しなかった攻撃（すなわち、漏洩した電力情報に基づいた攻撃）から保護するアーキテクチャ手法を記載するものである。下にある回路が前述の情報を常に漏洩している可能性が非常に高いものであっても、セキュアな状態にシステムを維持するという動機付けがある。
【００５９】
目標ビットの処理の順序を無作為化するというソフトウェア手法は、アルゴルズムを完全に保護するには十分でない。目標ビットをその元の順序にＤＰＡ攻撃者が再配列することを可能にし得る、命令署名又は電力パターン全てを破壊することも必要である。よって、一手法は、好ましくは、本明細書記載の、命令の無作為化と、時間遅延とを実施するアーキテクチャによるハードウェア保護によってソフトウェア手法を補完することである。
【００６０】
ＤＥＳや他の暗号アルゴリズムへの秘密鍵と互いに関係付けられる情報がＤＰＡ攻撃によって抽出されることを妨げるためのアーキテクチャ手法又はハードウェア手法のいくつかの実施例を以下に説明する。更に、ＤＥＳに関する特定の背景情報を前述している。この分野に不案内の場合、まず、本明細書の導入部分に記載した文献を参照すべきである。更に、以下の例証は、ＤＥＳアルゴリズムを徹底的に知っていることに依拠するものである。他のアルゴリズムのうちの１つに対する攻撃を試行するためには、適切なアルゴリズムを同等な詳細まで知っていることが必要になる。ＤＰＡ攻撃や関連攻撃を妨げる防御的なＲＩＭ手法を説明することによってこの説明を始める。ＤＰＡ選択機能は、低位命令が（通常、６つの鍵ビットを用いるため）４ビットを操作することが多いので、１ビットだけではなく、４つの目標ビットの値を同時に選択することが可能であるものとする。結果として生じるＤＰＡ特性は、より大きなピークを有する傾向にあるが、より良好な信号対雑音比を有するものでない。これは、比例してより少ないサンプルが、平均化において含められるからである。
【実施例】
【００６１】
図３は、ＳＰボックスのエントリ・アドレス計算１３１と、特定の４ビット出力目標１２３の生成との間のタイムライン関係を修正し得る方法を表す。上記修正は、（例えば、図５の実施例による）ランダムな数の疑似シフト命令１３３の挿入、又は（例えば、図６の実施例による）各ＳＰボックスのエントリ・アドレス計算サブルーチンにおけるランダムな数の無作為化疑似命令の挿入を備える。
【００６２】
挿入される疑似命令の数は必ずしもランダムでなくてよいが、それは、各ＳＰボックスが、同数の実命令及び疑似命令を有することになった場合、どのボックスがどれであるかを確かめるうえで攻撃者になお残された情報がほとんどないか全くないからである。
【００６３】
疑似シフト命令がシフトを含んでおり、実シフト命令の電力署名を厳密にまねることが望ましい。こうした疑似命令がシフトを含んでいない限り、その作用は、ＤＰＡ攻撃者によって、おそらく観測され、よって無視され得る。（本明細書記載の手法が用いられない場合）シフト数とＳＰボックス指数との間には一定の関係が存在するものであり、攻撃者がどこかでそのシフト数を識別することが可能である限り、攻撃者は、アドレス指定される特定のＳＰボックスを識別することが可能である。攻撃者は、データの統計的な再配列を行って正しいシフト数を見出すことによってこのことを行うことが可能である。ＤＥＳに加えて、大半の暗号化アルゴリズムは実際にシフト命令をどこかで利用しており、アルゴリズムをＤＰＡ攻撃者が分かっているものとみなした場合、本明細書記載の、ランダムな数のシフト命令を挿入する手法を利用しない限り、同様な相関を見出すことが可能である。
【００６４】
図３に示すように、疑似シフト命令１３３や他の疑似命令１３３を挿入することによって、各ＳＰボックスのエントリ・アドレス評価において実行される命令数のみならず、連続するＳＰボックス間の時間間隔Ｔｎも変わる。図３に示す例では、ランダムな数の疑似シフト命令１３３がＳＰ５に挿入されており、よって、図２ｂと比較して、ＳＰ５のアクセスとＳＰ１のアクセスとの間の時間間隔Ｔ５が変えられている。更に、ランダムな数の疑似命令１３３がＳＰ４に挿入されており、よって、図２ｂと比較して、ＳＰ４のアクセスとＳＰ６のアクセスとの間の時間間隔Ｔ４が変えられている。当然、ランダムな数の疑似シフト命令１３３は、他のＳＰボックスのうちの１つ又は複数に挿入することも可能である。命令は、「疑似」と呼ばれているが、それは、好ましくは、対応する実命令の電力消費トレースをまねるからである（実際に、特定の実施例では、実命令であり得る）。一方、疑似命令の実行は、プロセッサによって更新されるデータを何らもたらさない。
【００６５】
好ましくは実シフト命令を電力使用の視点からまねるランダムな数の疑似命令１３３を挿入することによって、シフト命令署名も時間間隔署名もカモフラージュされるものであるか、又は、除去されるものでもある。これによって、プログラムにおいてアクセスされているＳＰボックスＳＰ１乃至ＳＰ８をＤＰＡ攻撃者が識別することができなくなってしまうことになる。これによって、ＳＰボックスのアクセス順序の再シフト（無作為化）がＤＰＡ攻撃者から情報を隠すうえで効果的なやり方になることになる。よって、ＤＰＡ攻撃者は、統計的な平均化及び解析のために同じ基準への別々の電力トレースのアラインメントを行うことがもうできなくなる。疑似命令が電力使用の視点から実シフト命令を厳密にまねた場合、攻撃者には、どのＳＰボックスがどれかを識別するのかが非常に難しくなり得る。疑似命令が無作為化命令組をまねた場合、ＳＰボックスを少しでも認識するのが非常に難しいことが大いにあり得る。攻撃された装置が利用していると攻撃者がみなすプロトコルと、装置によって使用される暗号化プロトコルが同じであるか否かを攻撃者が知りたいと思うことは大いにあり得る。
【００６６】
前述の通り、それぞれの（又は一部の）ＳＰボックスのエントリ・アドレス評価において実行されるシフト命令の数の無作為化の代わりに、図４に示すように、各出力の前に（例えば）合計２４個のシフトがあるようにみえるようにシフト命令数を等しくすることが考えられる。しかし、命令数を無作為化し、それによって、連続したＳＰボックス・アクセスそれぞれの間の時間間隔も無作為化することが好ましいことがあり得る。よって、無作為化は、ＳＰボックスのアクセスを識別するための署名として、時間間隔の、攻撃者の作業の妨害の手助けとなる。こうして不確実性が更に増したことによって、攻撃者の作業は更に複雑になる。しかし、図４を参照することによって分かるように、挿入される疑似命令１３１の数を無作為化することは、本明細書記載内容に必須でない。
【００６７】
第１の実施例の詳細な説明
図５は、（図３を参照して説明したような）ランダムな数の疑似シフト命令１３３又は（図４を参照して説明したような）等しくした数のシフト命令１３３を挿入するのに用い得るＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの第１の実施例を表す。図５に示すシステムは、単一チップ上にＲＡＭ１０３メモリ及びＲＯＭ１０５メモリとともに３２ビット・プロセッサ又は中央処理装置（ＣＰＵ）１０１を含む。他のハードウェア・アーキテクチャ（２ビットや８ビットのアーキテクチャ）に本明細書記載の手法を実施することができることを当業者は認識するであろう。よって、ＣＰＵは１６ビット・プロセッサ又は６４ビット・プロセッサであり得る。
【００６８】
システムは、前述のようにルックアップ・テーブルとして実施することが可能な換字／転置ボックス（ＳＰ１乃至ＳＰ８）１０７も含む。ＣＰＵ１０１が、ＲＯＭ１０５に記憶された暗号化／復号プログラムを実行する一方、ＲＡＭ１０３は、暗号文データを中間的に記憶するためのものである。６ビット鍵（又は推測される鍵）１２１及びＳＰボックス１０７を用いて暗号関数ｆを計算する。乱数生成器１１５がランダム命令マスク（ＲＩＭ）制御フラグ・レジスタ１１３に結合される。ＲＩＭ制御フラグ・レジスタ１１３はＣＰＵ１０１に結合される。この実施例では、乱数生成器１１５及びＲＩＭ制御フラグ・レジスタ１１３を用いて、何れの特定の６ビット鍵１２１についても、統計的な情報をもたらすようこの電力トレースの時間アラインメントを行うことが可能でないように電力トレースをカムフラージュする。攻撃者は、シフト命令署名を追跡することによって、各４ビット出力目標１２３に関連した電力トレースのアラインメントを行うことに焦点を当てているので、本明細書記載のＲＩＭ手法は、この追跡機能をディセーブルすることに集中している。
【００６９】
ランダムな数の疑似シフト命令１３３は、ＣＰＵ１０１、ＲＩＭ制御フラグ・レジスタ１１３及び乱数生成器１１５の反復によって生成される。ＣＰＵ１０１は、ＲＯＭ１０５に記憶された暗号化／復号プログラムを実行する。この暗号化／復号プログラム（後に説明することとする）に埋め込まれたものは、ＲＩＭ制御フラグ・レジスタ１１３をセットするための命令である。この命令を処理すると、ＣＰＵ１０１は、これをセットするＲＩＭ制御フラグ・レジスタ１１３に向けて、バス１０９上で信号を送出する。ＲＩＭ制御フラグ・レジスタ１１３は次いで、制御線１１１上でＲＩＭ制御フラグ信号をＣＰＵ１０１に向けて送出し、それによって、ＣＰＵ１０１状態マシンが停止することになる（計算に応じてレジスタの更新が停止することになる）。このことは、ＲＩＭ制御フラグ・レジスタ１１３から信号を、ＣＰＵ１０１内のプログラム・カウンタ・レジスタに送出することによって実現することができる。これによって、プログラム・カウンタはディセーブルされることになる。事実上、ＣＰＵ１０１の状態マシンは停止される。
【００７０】
ＣＰＵ１０１の状態マシンは、ＲＩＭ制御フラグ・レジスタ１１３がリセットされるまで、停止状態に留まる。これによって、ＲＩＭ制御フラグ・レジスタ１１３によって信号がＣＰＵ１０１に向けて制御線１１１上で送出され、ＣＰＵ１０１内のプログラム・カウンタがイネーブルされることになる。ＲＩＭ制御フラグ・レジスタ１１３は好ましくは、乱数生成器１１５の使用によってリセットされる。設計を簡単にするために、乱数生成器１１５は好ましくは、１ビット乱数生成器である。乱数生成器１１５は、ＣＰＵ１０１の命令サイクルのタイミングと同期化される。乱数生成器１１５は、クロック・サイクル毎に出力を供給することができるものであり、又は、ランダムな数の、Ｘ個のサイクル（Ｘは、何れかの数（５など）である）の後にＲＩＭ制御フラグ・レジスタに確実に供給されるようゲートすることができる。１ビット乱数生成器１１５の場合、使用される論理によってゼロ又は１が１ビット乱数生成器１１５から受信されるとリセットされるようＲＩＭ制御フラグ・レジスタ１１３がプログラムされる。例えば、１ビット乱数生成器１１５からのゼロによってＲＩＭ制御フラグ・レジスタ１１３がリセットされることになるものとする。１ビット乱数生成器１１５からゼロを受信した後にしかＲＩＭ制御フラグ・レジスタ１１３がリセットされず、ランダムな数のサイクル後に１ビット乱数生成器はゼロを生成することになるので、ＣＰＵ１０１の状態マシンが停止される時間もランダムになる。よって、ランダムな数の疑似命令１３３が生成され、それによって、アルゴリズムのタイムラインに影響が及ぼされる。
【００７１】
好ましくは、疑似命令１３３は、元の命令と同様な電力署名を電力トレース上に生成する命令であるが、ＣＰＵ１０１内のデスティネーション・レジスタに実行結果をもう一度書き込むことは抑制される。ＣＰＵ１０１の状態マシンが停止されるからである。ＣＰＵ１０１の抑制によって、ＣＰＵの状態が維持される。よって、もう一度書き込むことを抑制することによって、アルゴリズムにおける次の工程にＣＰＵが移ることが妨げられる。しかし、電力トレースによって、そうでないことが示唆される。よって、攻撃者は、電力トレースを用いて鍵を復号することができなくなる。
【００７２】
図５中のＣＰＵ１０１は好ましくは、ＣＰＵ１０１のデスティネーション・カウンタ、又はＣＰＵ１０１のプログラム・カウンタの更新を、アクティブ状態にされるとディセーブルする、バス１１１上で送出されるＲＩＭ制御フラグ信号（ＲＩＭ制御フラグ・レジスタ１１３によって生成される）を備えた疑似命令に対処するよう修正される（修正ＣＰＵの実施例の詳細は、「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  ＣＰＵ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｗｉｔｈ  Ｒａｎｄｏｍ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍａｓｋｉｎｇ  ｔｏ  Ｔｈｗａｒｔ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」と題する、西暦２００４年６月８日付け出願の米国特許出願第１０／８６４，５６８号明細書に開示されている）。
【００７３】
バス１１１上のこのＲＩＭ制御フラグ信号の結果、ＣＰＵ１０１の状態マシンが停止している間に実行される命令は全て、電力トレースの離散サンプルの数が、特定の４ビット出力目標１２３についてもう一定でないように電力トレースを変える以外には重大な影響は有しない。ＲＩＭ制御フラグ・レジスタ１１３がセットされている間、ランダムな数の命令が実行される。ＲＩＭ制御フラグ１１１がリセットされると、４ビット出力目標１２３がＲＡＭ１０３に供給される。ＲＩＭの導入によって、各ＳＰボックスのエントリ・アドレス評価において実行されるシフト命令の数のランダムなばらつきのみならず、連続したＳＰボックス・アクセスＴＩｎそれぞれの間の時間間隔におけるランダムなばらつきも生じる。ＲＩＭ制御フラグがアクティブ状態にされている間に実行されるランダムな命令に関する更なる詳細については、「Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｔｈｅ  Ｐｒｅｖｅｎｔｉｏｎ  ｏｆ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ」と題する、西暦２００４年６月８日付け出願の米国特許出願第１０／８６４，５５６号明細書を参照のこと。
【００７４】
疑似シフト命令の挿入が機能する方法を以下に説明する。表２に示すように、ＤＥＳのＣ言語文第５番（すなわち、ｆｖａｌ｜＝ＳＰ５［（ｗｏｒｋ＞＞８）＆０ｘ３ｆＬ］は、ＳＰ５ルックアップ・テーブルをアクセスするためのエントリ・アドレス計算の一部として８ビット右シフト命令（すなわち、「ｗｏｒｋ＞＞８」）を含む。表３は、対応するアセンブラ言語サブルーチンへの、この単一Ｃ言語文の拡張を示す。
【００７５】
表３中のアセンブラ文第４番（すなわち、ｊａｌ  ｌｉｎｋ  ｒｓｈｆｔ）は、「ｒｓｈｆｔ」としてラベリングされたサブルーチン又は文第１３番にジャンプし、かつリンクする（よって、ニーモニックはｊａｌである）。この文における「ｌｉｎｋ」の語は、戻りアドレスを含むレジスタを表す。プログラムが文第１３番（すなわち、プログラム・カウンタｐｃ←ｐｃ＋１）を実行すると、プログラム・カウンタは引き上げるのを停止する。プログラム・カウンタは、文第１４番を予めフェッチしようとするが、乱数生成器１１５によってＲＩＭ制御フラグがリセットされるまで停止される。「ｒｓｈｆｔ」サブルーチンは、レジスタＣにおいて規定されるように８つの位置、レジスタ１を右シフトする。シフト命令に関連した電力トレース部分をカムフラージュするために、（文第１３番と文第１４番との間に示す）可変ブロック・サイズのＲＩＭ文が、第１５番（すなわち、ｓｒａ  １１）のような実際のシフト命令文の前（若しくは後、又は前と後との両方）に挿入される。ＲＩＭ制御フラグ・レジスタ１１３がＣＰＵ１０１によってセットされると、ＲＩＭ制御フラグ・レジスタ１１３が乱数生成器１１５によってリセットされるまで、表３中の命令第１３番によってＲＩＭ命令の挿入が可能になる。文第１５番の実行及びＲＩＭブロックの完了の後に、プログラムの「有用な」実行が再開する。
【００７６】
表３中の文第１３番及び文第１４番の位置は、例証の目的のためのものに過ぎない。これらの文は、第１５番のような実際のシフト命令文の前、中間、又は後に存在し得る。好ましくは、設計を簡単にするために、文第１３番及び文第１４番は、シフト・ルーチンの範囲内に配置される。このランダムな挿入によって、シフト命令署名を追跡する、ＤＰＡ攻撃者の試行が妨害されるが、それは、離散電力トレース・サンプルの数がもう一定でなく、ランダムであるからである。よって、攻撃者は、電力トレースの時間アラインメントを４ビット出力目標１２３毎に行うことが可能でない。更に、ランダムな命令をこのように挿入することによって、時間間隔（例えば、ＴＩ５）も変わり、それによって、ＤＰＡ攻撃者の試行が更に妨害される。疑似シフト文のランダムな数の挿入は、その効果を強めるようにループの中央に挿入されることが好ましい。
【００７７】
こうした文がループの外側に挿入された場合、１つ又は２つの疑似シフトしか付加しないことは実際には手助けにならないものである。ａ＞＞８をａ＞＞１０に変えることは、ＤＥＳアルゴリズムの場合に、十分なカムフラージュにならないことがあり得る。ａ＞＞８をａ＞＞１６又はａ＞＞２４から隠そうとする場合、このことは、ａ＞＞８をａ＞＞１６又はａ＞＞２４と混同させるのに十分な疑似シフト命令を付加することを必要とする。付加されたランダムな数の疑似シフト文をループ内に配置することによって、付加された疑似シフト文数は確実に８の整数倍数になる。ランダムな数の疑似シフト文がループの外側に挿入された場合、他の手法を用いて、付加された疑似シフ命令数を確実に８、１６、２４（又はＤＰＡ攻撃者を混乱させるうえでこれらに十分に近い他の数）にすることが可能である。
【００７８】
更なる情報を与えるという点で、表４は、８つのＳ及びＰのボックス演算を、今度は、図５に示すように各ルックアップ・テーブル１０７を順次アクセスすることによって行う、ＤＥＳ暗号化アルゴリズムのＤＥＳ部分の一部分を実施するための１６ビットＣＰＵのアセンブラ言語プログラムである。下線を引いた文は、コメント目的のための、対応するＣ言語文である。
【００７９】
第２の実施例の詳細な説明
図６は、ランダムな数のランダムな疑似命令１３３（図３を参照のこと）を挿入するのに用いることができるＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの別の実施例を表す。
【００８０】
ＤＰＡ攻撃者は、シフト命令署名を追跡することによって、各４ビット出力目標に関連した電力トレースのアラインメントを行うことに焦点を当てているので、図５の第１の実施例は、各ＳＰボックスのエントリ・アドレスの計算サブルーチンにランダムな数のＲＩＭ命令を挿入することによってこの追跡機能をディセーブルする。しかし、この実施例では、以下に詳細に説明するように、こうした命令の数のみならず内容も変更されることになる。
【００８１】
図６に示すように、この第２の実施例は図５の第１の実施例に非常に類似しており、よって、共通の構成要素は、共通の参照符号によって表す。図５の実施例の場合にように、この実施例は好ましくは、単一チップ上に、ＲＡＭメモリ１０３及びＲＯＭメモリ１０５とともに配置された３２ビットのＣＰＵ１０１である。このチップも好ましくは、ルックアップ・テーブルとして実施することが可能な換字／転置ボックス（ＳＰ１乃至ＳＰ８）１０７を含む。ＣＰＵ１０１が、ＲＯＭ１０５に記憶された当該プログラムを実行する一方、ＲＡＭ１０３は、暗号文データを中間的に記憶するためのものである。この実施例では、ＣＰＵ１０１は、ＲＯＭ１０５から通常の暗号化プログラムのみならず、３２ビットの疑似乱数生成器によって、カムフラージュされた、無作為化命令もフェッチする。図６に示すように、ＲＩＭ制御フラグ・レジスタ１１３によって選択されるＭＵＸ１１９は、ＣＰＵ１０１によってフェッチされる命令、ＲＯＭ１０５からの実命令、又は３２ビットの疑似乱数生成器１１７によって生成される無作為化命令のタイプを判定する。
【００８２】
第１の実施例と同様に、アクティブ状態にされるとＣＰＵのデスティネーション・レジスタの更新をディセーブルすることになるＲＩＭ制御フラグ・レジスタ１１３を含めるよう通常のＣＰＵを修正する。このフラグがセットされていることによって、ＲＩＭ文内で実行される命令は全て、特定の４ビット出力目標に対する離散電力トレース・サンプル数がもう一定でないように電力トレースをカムフラージュすることになる。こうした命令の数及びタイプは、乱数生成器によって実行中に判定される。ＲＩＭ制御フラグが１ビット乱数生成器によってリセットされた後にＣＰＵが通常の実行を再開するまでプログラム・カウンタは更新されないので、プログラム・アドレスも、別の３２ビット疑似乱数によって置き換えられる。
【００８３】
図５や図６のＲＩＭ制御線１１１は、半導体デバイスのレイヤ内に深く埋めることによって「プローブプルーフ」にすべきである。しかし、ＲＩＭ制御線１１１を探ることが可能な場合、ＤＰＡ攻撃を扱う前述の手法は、攻撃を通してグランド（又は、論理に応じてハイ）に接続することによって線１１１上のＲＥＭ制御信号をＤＰＡ攻撃者がディセーブルする場合に打ち負かされることになる。
【００８４】
第３の実施例の詳細な説明
図７は図５又は図６の実施例よりも探査に対する耐性が高い第３の実施例を表し、図８はこの実施例のタイムラインを示す。この実施例は、以下に説明するシフト制御カウンタ（ＳＣＣ）１４０や他の変更を導入することによってシングル・ポイント障害攻撃（すなわち、前述の実施例の線１１１に対する攻撃）を克服するものである。この実施例は、シフト命令（実及び疑似）の合計数が２４に固定される実施例を参照しながら説明する。しかし、固定される実命令の数は特定の他の数に固定することが可能であるか、図５及び図６を参照しながら前述した手法を利用して無作為化することが可能であることを当業者はこの場合、認識するはずである。図７の実施例は攻撃が線１１１に対して行われることを想定しており、攻撃が首尾良く行われた場合にも、保護されていない設計（図２ａ及び図２ｂを参照しながら説明した設計など）にシステムがもう一度戻らないように線１１１の前述の設計が修正される。
【００８５】
データ暗号化規格（ＤＥＳ）アルゴリズムに規定された、特定のＳＰボックスのエントリ・アドレスの計算中に、ＳＣＣ１４０は（例えば、適切なソフトウェア命令又はソフトウェア命令組（例えば、表５中の命令３及び命令４を参照のこと）によって）ＳＰボックスのカウントに相当するカウントにセットされることになる。各復号化シフト命令によって、ゼロに達するまで、例えば、それ自身の復号器ハードウェアを用いてこのカウンタ１４０が１、減らされることになる。ゼロ・カウントによって、その出力で「ＲＩＭ＿ｓｈｉｆｔ」信号がアクティブ状態にされることになる。それによって、その後のシフト命令はどれもＲＩＭ命令（すなわち、カムフラージュされた電力署名を備えた疑似シフト命令）になる。図８では、各ＳＰボックスは、それに関連した２４個の右ビット・シフトを有する。しかし、右ビット・シフト命令の一部又は全部はＲＩＭ＿ｓｈｉｆｔ（すなわち、疑似シフト）である。シフト（図８中の疑似シフト）は、ハッチング線によって表す。例えば、ボックスＳＰ５の場合、８つのシフトが実右ビット・シフト命令である一方、１６つのシフトは疑似シフト命令である。ＤＰＡ攻撃者の攻撃によって「ＲＩＭ＿ｓｈｉｆｔ」信号がディセーブルされた場合、暗号化アルゴリズムの通常の実行が、追加のシフトが行われることによって中断されることになるが、それは、疑似シフト命令がその場合、線１１１との干渉によって実命令になるからである。線１１１との干渉によって、疑似シフト命令の生成が単に抑制される代わりに、実シフト命令によって、抑制された疑似シフト命令が置き換えられる。
【００８６】
よって、攻撃者は、有用な統計的鍵情報を何ら収集することが可能でない。すなわち、ＲＩＭフラグを妨害することによって、暗号化アルゴリズムの通常の実行が中断されることになり、（追加の実シフトが行われることによって）正しい結果がもたらされるのでＤＰＡ攻撃は失敗する。一方、ＤＰＡ攻撃者が「ＲＩＭ＿ｓｈｉｆｔ」信号をそのままにしておく場合、アクティブ状態にされた「ＲＩＭ＿ｓｈｉｆｔ」信号は、図５又は図６を参照して前述した、シフト命令の電力署名をカムフラージュすることになる。このことは、ＤＰＡが必要とする目標ビットのグループ化及び再配列がずっと難しくなるのでＳＰボックスをアクセスする順序の無作為化がＤＰＡ攻撃者の試行を妨害するうえで効果的なやり方になることを意味する。
【００８７】
表５は表３と同様であるが、アセンブラ言語サブルーチンにおいて、ＳＣＣ１４０増補ＲＩＭ実施形態を示す。（イタリック・フォントの）同様なアセンブラ文第３番はまず、レジスタＣの内容を語ＳＣＣに記憶する（よって、ニーモニックがｓｗである）アセンブラ文第４番（すなわち、ｓｗ＿ＳＣＣ  Ｃ）によって示すようにシフト制御カウンタ（ＳＣＣ）を初期化するのに用いる対象のシフト数をレジスタＣにロードする。アセンブラ文第３は、実行するシフト数をＣＰＵに伝えることを意図しているものでない。その代わりに、アセンブラ文第５番をこの目的で用いてＳＰボックス・アクセス毎に同一のシフト命令電力署名を供給する。ＳＣＣ制御回路は各シフト命令を復号化し、ゼロに達するまでそのカウンタを減らす。ゼロにされたＳＳＣカウンタは次いで、電力署名をカムフラージュするよう「ＲＩＭ＿ｓｈｆｔ」信号をアサートすることによって、後の実シフト命令を疑似命令に変換する。非シフト命令によって、「ＲＩＭ＿ｓｈｆｔ」信号がアクティブ状態になることは決してないものである。ＳＣＣ回路は、ＳＰボックス・アクセス中に暗号化アルゴリズムを実行している際にのみ、アクティブ状態になっているので、通常のシフト命令の復号化は事実上、非ＳＰボックス演算に対するものである。
【００８８】
直接的な探査から、チップ上のＲＩＭ制御線１１１を物理的に保護することはもはや重要でない（しかし、攻撃によって有意義な結果を得ることになるとＤＰＡ攻撃者に思わせるために、保護することは意味をなすものである（そうした攻撃は徒労になる）。よって、精通している一部の攻撃者は、ＲＩＭをディセーブルするように、ＲＩＭ制御線１１１を強制的に常に論理「０」にする（物理的に保護されているか否かにかかわらず）ことができる場合がある。この実施例では、チップのＤＰＡ攻撃は、新たな手法（すなわち、不必要な疑似シフトが実シフトに変換され、それによって、データが単に意味のないものになってしまう）もよって保護される。
【００８９】
要約すれば、ＤＰＡの原理は、２つの電力トレース群の和の差を計算し、プロットするものである。ＤＰＡは、２つの電力トレース群の和の差と、特定の順序でシステムのデータ経路を進む目標ビット（ｂ）の内容との間に統計的相関が存在していることによって効果的であり得る。この実施例におけるＳＣＣ増補ＲＩＭの導入が理由で、目標ビットがこの場合、特定の順序ではなくランダムな順序でシステムのデータ経路を介して進むものであり、暗号化アルゴリズムの通常の実行を中断することなくディセーブルすることは可能でないので、この統計的相関はもはや有効でない。ＲＩＭ制御線を攻撃することによって暗号化アルゴリズムを中断することによって、攻撃者が収集する対象の有用な統計的鍵情報は何らもたらされない。
【００９０】
ＤＰＡは、２つの電力トレース群の和の差と、特定の時点でシステムから出力される単一目標ビットの内容との間に統計的相関が存在している場合にのみ効果的であり得る。ＲＩＭを埋め込んだこの実施例では、この統計的相関は、目標ビットがこの場合、特定の時点ではなくランダムな時点でシステムのデータ経路を出ることが理由で、もう有効でない。埋め込んだＲＩＭの導入によって、２つの特徴のランダムなばらつきが生じる。第１の特徴は、各ＳＰボックスのエントリ・アドレス評価において実行される命令の数／タイプにおけるばらつきである。第２の特徴は、連続したＳＰボックス・アクセスそれぞれの間の時間間隔におけるばらつきである。これら２つの特徴によって、プログラムにおいてアクセスされているＳＰボックスをＤＰＡ攻撃者が識別することができなくなってしまうことになる。これによって、ＳＰボックスのアクセス順序の再切り混ぜが、ＤＰＡ攻撃者から情報を隠すうえで効果的なやり方になる。それは、ＤＰＡ攻撃者は、統計的な平均化及び解析のために同じ基準への別々の電力トレースのアラインメントを行うことがもうできなくなるからである。
【００９１】
図７の実施例では、各ＳＰボックスに関連した実シフト及び疑似シフトの合計は２４シフトになる。例えば、図８中のボックスＳＰ５の場合、８個の実シフトが、１６個の疑似シフトと関連付けられる。実シフトの８個は、ＤＥＳアルゴリズムによる、ボックスＳＰ５の正しいシフト数である。線１１１が攻撃された場合、代わりに、ボックスＳＰ５において、（かつ他のＳＰボックスにおいても）２４個の実シフトが行われ、ＤＥＳアルゴリズムの、いわば「混乱」が生じることになる。
【００９２】
図７では、実シフト後に行われるものとして疑似シフトを示しているが、望まれる場合、実シフトの前に、又は実シフトの中に混ぜられて疑似シフトが行われることになるように順序を変更することが可能である。
【００９３】
第４の実施例の詳細な説明
各ＳＰボックスにおける合計シフト数は、２４個（又は、それについて更に言えば、特定の他の数）に固定しなくてよい一方、望まれる場合、変える、又は無作為化することができる。それは、例えば、図５又は図６の設計を組み入れることによって、図７に示すＣＰＵの設計を幾分複雑にするが、合計シフト命令数を無作為化するのに必要な修正は、図６の実施例及び図７の実施例の組み合わせとして第４の実施例を示す図９を参照することによって分かり得るように、かなり簡単である。
【００９４】
第５の実施例の詳細な説明
修正ＲＩＳＣプロセッサ（ＣＰＵ）アーキテクチャを用いて、例えば、通常の命令、及び、ランダム命令マスク（ＲＩＭ）フラグによって制御される、カムフレージュされた特別な「疑似」命令に対する同一の電力署名を生成することが可能である。この特定のプロセッサ・アーキテクチャは、ランダム命令マスク（ＲＩＭ）を埋め込んだチップ上暗号システムにおいて実施されることが意図されており、ソフトウェア特有のＲＩＭ概念とこのアーキテクチャとの組み合わせは、電力解析及び差分電力解析を介した海賊行為から暗号システムを保護することが意図されている。カムフラージュされた命令とは、暗号化において通常用いられるものと同じ命令コード及び同じ電力署名を有するが、この特定のプロセッサ・アーキテクチャにおいて実行する場合、如何なるプロセサ・レジスタの内容も変えず、又はプロセッサ・ステータスを変えない命令のことである。ランダム命令マスクは、電力解析又は差分電力解析によるリバース・エンジニアリングから暗号装置を保護するための、カムフラージュされた暗号化プログラムを作成する手法である。
【００９５】
図１０は、概括的な（単純化された）ＲＩＳＣプロセッサ（ＣＰＵ）アーキテクチャ２００である。ＲＩＳＣ命令は、ＡＬＵ（算術論理演算装置）２１０がレジスタ・ファイル２２０の２つのレジスタから２つのオペランドを得て、演算の結果をレジスタ・ファイル２２０の第３のレジスタにもう一度書き込むことによって行われる算術演算関数又は論理演算関数である。レジスタ・ファイル２２０は、アドレス選択によってアクセスすることが可能な、同じ幅（ビット数、例えば、３２ビット）を備えたいくつかのレジスタから成る。各命令サイクルでは、プロセッサはＲＯＭ２４０から順次、その命令を取得し、これを命令レジスタ２４５にロードする。ＲＯＭ２４０は、暗号化アルゴリズムを含むプログラム全体の命令コード全てを記憶する。制御論理２５０は、命令レジスタ２４５における命令コードを復号化し、正しい制御コマンドをプロセッサ２００のＡＬＵ２１０や他の部分に供給する。オペランド（ソースＡ及びＢ）のアドレス、並びにデスティネーション・アドレスも命令コードにおいて規定される。アドレス復号器２６０は、命令レジスタ２４５からのアドレス情報を復号化し、レジスタ・ファイル２２０における特定のレジスタのアクセス制御を備える。制御論理２５０によって制御されるＡＬＵ２１０は、特定されたアドレスによってレジスタ・ファイル２２０から２つのオペランド（ソースＡ及びＢ）を取得し、命令が規定した算術演算又は論理演算を行う。ＡＬＵ演算の結果は、データ・バス２１５上のデスティネーション・アドレスによってレジスタ・ファイル２１０内の別のレジスタにもう一度書き込まれる。命令のタイプによって、プログラム全体における命令の索引参照を記憶したプログラム・カウンタ２３０が、命令の実行中に制御論理によって増やされるか、又は更新されることになる。プロセッサの、一部の特定の命令は、プログラム・カウンタ２３０を増やすことも更新することもしない。プログラム・カウンタ２３０と同様な、プロセッサにおける一部の他のフラグ・レジスタ（図示せず）の更新も命令に依存する。
【００９６】
現代のプロセッサの大半はＣＭＯＳ技術で構築されている。ＣＭＯＳ回路はスタティック電流を引き込まないので、電力は負荷容量の充電及び放電（スイッチング）の際にのみ放出される。ＣＭＯＳ回路の電流消費は主に、容量性負荷、ドライバのドライブ能力、及びスイッチングの周波数によって変わってくる。プロセッサにおいて実行される完全な命令サイクルには、別々の時点で別々の回路を動作させることが関係する。プロセッサ回路の別々の部分は、デバイス寸法、寄生負荷及びスイッチング速度における差によって、アクティブ状態にされると電力バス上で時間に対して固有の電流パターン（電力署名）を生成する。電力解析又は差分電力解析（ＤＰＡ）はこれらの電力署名パターンを用いて命令を互いに関係付ける。
【００９７】
埋め込みランダム命令マスク（ＲＩＭ）手法を用いて、前述のように各ＳＰボックスのエントリ・アドレス計算サブルーチンにおけるＲＩＭ命令の数をランダムに変え、そうしたＲＩＭ命令の内容もランダムに変える。ＲＩＭ手法がＤＰＡ攻撃を首尾良く妨げるうえで最も重要な条件の１つは、こうしたＲＩＭ命令の電力署名を全てなくすことである。このことを行ううえで最善のやり方は、電力解析又は差分電力解析（ＤＰＡ）において識別可能でないようにＲＩＭ命令の電力署名を通常の命令と同一にすることである。図１１は、図１０に示すＲＩＳＣプロセッサ２００の改良されたバージョンを示す。例えば、乱数生成器２２３から生成されるＲＩＭ制御フラグ２０２は、ＲＩＭ命令をアクティブ状態にすることを制御する。乱数生成器は、第１の実施例に関して図５に表す。図１１のＲＩＳＣプロセッサは、デスティネーション・アドレス及びプログラム・カウンタ・インクリメント・イネーブルを制御する、図５のプロセッサと比較して追加のＡＮＤゲートを有する。追加のレジスタ２２２はデータ・バスに接続される。このレジスタ２２２は、少なくとも電力消費の視点でレジスタ・ファイル２２０におけるレジスタと同一であるように設計される。電力消費の点でプロセッサにおいて元のプログラム・カウンタ２３０を複製するために疑似プログラム・カウンタ２３２が存在している。ＲＩＭ制御フラグ２０２がセットされている間、疑似プログラム・カウンタ２３２はＲＯＭ２４０から命令をフェッチし、命令は命令レジスタ２４５に入り、通常通り、アドレス復号器２６０によって復号化される。しかし、命令の結果は、レジスタ・ファイル２２０におけるレジスタの代わりに更なるレジスタ２２２に送られる。
【００９８】
ＲＩＭ制御フラグ２０２が論理「０」に等しい場合、プロセッサ２００は通常の動作になる（すなわち、修正されないものとして図５に表すように動作する）。当該デスティネーション・アドレス及び当該プログラム・カウンタにおいて、追加のＡＮＤゲート２２１、２３１は、アドレス復号器２６０及び制御論理装置２５０からの元の信号を通すに過ぎない。同時に、追加されたレジスタ２２２及び疑似プログラム・カウンタ２３２がディセーブルされる。命令の実行中に関係する回路構成部分は全て、図１０と同じであるので、図１１の修正プロセッサにおいて実行する各命令の電力署名（すなわち、時間に対する消費電流パターン）は、図１０のプロセッサと同じになる。
【００９９】
ＲＩＭ制御フラグ２０２がアクティブ（論理「１」に等しい）状態にされると、命令がＲＯＭ２４０からフェッチされ、レジスタ・ファイル２２０からのＡオペランド及びＢオペランドを復号化し、参照し、ＡＬＵ２１０におけるオペランドの演算は通常通り、続く。しかし、ＲＩＭフラグ２０２の状態に対する応答性を有するＡＮＤゲート２２１が存在していることによって、レジスタ・ファイル２２０におけるデスティネーション・レジスタの選択がディセーブルされ、ＡＬＵ２１０からの結果を受けるためにレジスタ・ファイル２２０において選択されるデスティネーション・レジスタは何らない。むしろ、代わりに、ＡＮＤゲート２２３によって、ＡＬＵ２１０からのデータがデータ・バス２１５上で、追加レジスタ２２２に向けられることになる。その結果、ＡＬＵは、レジスタ・ファイル２２０における通常のデスティネーション・レジスタのうちの１つの代わりに追加レジスタ２２２に、実行される命令に結果をロードするよう仕向けられる。追加レジスタ２２２の物理的な設計はレジスタ・ファイル２２０内のデスティネーション・レジスタと同一であるため、この追加レジスタ２２２のロードの消費電流パターンは、レジスタ・ファイル２２０における実デスティネーション・レジスタ２２０に結果をロードする場合と同じになる。追加レジスタの前に配置されたＡＮＤゲート２２３は、通常動作中にデスティネーション・レジスタのうちの１つを選択するのに用いられる１つのＡＮＤゲート２２１の電力をエミュレートする目的のためである。同時に、ＲＩＭフラグ２０２も実プログラム・カウンタ２３０をディセーブルし、疑似プログラム・カウンタ２３２を、増やすか、又は更新するようアクティブ状態にする。この場合も又、２つのプログラム・カウンタ２３０、２３２の間の同一の物理的な設計が理由で、実行される命令によるプログラム・カウンタの増加又は更新の電力パターンが維持されることになる。前述の命令サイクルの終了時に、レジスタ・ファイル２２０におけるデスティネーション・レジスタ又は実プログラム・カウンタ２３０の内容は何ら修正されるものでない。よって、プロセッサ２００のステータスはＲＩＭフラグ２０２がセットされている間、この命令が実行される前と同じ状態に留まる。ＲＩＭフラグ２０２がセットされると、プロセッサ２００は、データ処理の観点からは、ＮＯＰ（ノーオペレーション）命令を処理しているかのようにふるまう。しかし、電力消費の観点からは、プロセッサは、実命令を処理しているようにみえる。
【０１００】
ＲＩＭフラグ２０２が論理「０」に戻ると、プロセッサはこの通常動作を再開して元のプログラムの実行を続けることになる。ＲＩＭフラグが論理「１」である間に実行される命令が何であっても（種類の制約は何らない）、電力トレースにおいて関連した通常の命令を実行するというカムフラージュ作用を単にもたらす以外には、プロセッサに対してもプログラミングに対しても何の影響もない。よって、ＲＩＭフラグが論理「１」の際にフェッチされた命令が基本的には、再フェッチされる。当然、分岐命令の結果が異なり得るので、順序は変わり得る。いずれにせよ、処理は基本的には、ＲＩＭフラグが論理「１」である際に中断された位置から続行する。ＳＰボックス・アドレス計算サブルーチンにおけるＲＩＭフラグ制御命令を備えたこのプロセッサを用いる場合、電力トレースは、いくつかの特定の命令のランダムな変形を含み、サブルーチンにおいて実行される各種命令も含むことになる。よって、ＤＰＡ攻撃者は、ＳＰボックス・サブルーチンの電力トレースの識別及びアラインメントを行うことがもう可能でない。
【０１０１】
データを受信し、記憶するという点で追加レジスタ２２２はダミー・レジスタであるが、それによって受信されるデータは、プロセッサ２００による後のデータ処理に影響を及ぼすのに用いないことが好ましい。図１１では、レジスタ・ファイル２２０から分離されて示しているが、望まれる場合、レジスタ・ファイル２２０の一部として実施することが可能である。
【０１０２】
チップ上のＲＩＭ制御フラグ２０２の出力でのＲＩＭ制御線を直接探査から保護することは重要である。ＲＩＭ制御線が容易にアクセスされる場合、精通した一部の攻撃者は、この手法を用いて、ＲＩＭをディセーブルするように常に論理「０」にＲＩＭ制御線を強制的にすることができる。ＣＭＯＳ回路の物理的な設計をリバース・エンジニアリングから保護するためのカムフラージュ手法は、利用可能なものとしていくつか存在している。こうした手法を用いれば、シリコン・インプラント・レベルに深く埋め、アクティブ状態で接続された高位のポリシリコン・レイヤ及び金属レイヤによって遮蔽することによって、ＲＩＭ制御線の探査を非常に困難にすることが可能である。このＲＩＭ制御線を見つけることは非常に困難になり、高位保護レイヤを何らかのやり方で除去しようとしても、チップの機能を損なうことになる。
【０１０３】
ＲＩＭフラグ２０２の状態は、疑似プログラム・カウンタ２３２を用いて命令をフェッチする場合、論理「１」にあるものとする。当業者に周知のように、図１１に示すこの論理は、論理「０」によって疑似プログラム・カウンタ２３２が起動されるようになり、論理「１」が通常のＣＰＵ動作を表すように容易に修正することができる。
【０１０４】
図１１に示す回路は、パイプライン型ＡＬＵを意図するものでない。しかし、図１１の回路をパイプライン型ＡＬＵに適合させることは簡単である。一般に、パイプライン型ＡＬＵは４つの段（プリフェッチ、命令復号化、実行、再書き込み）を有する。ＲＩＭフラグからのＲＩＭ制御信号を、遅延回路によってパイプラインと同期化することができる。よって、ＲＩＭ制御フラグ２０２は、パイプライン型ＡＬＵに用いる場合、追加レジスタ２２２、ＡＮＤゲート２２１及び疑似プログラム・カウンタ２３２と同期化するものとする。
【０１０５】
当然、プロセッサ２００は、ＲＩＭモードで実行する場合に更新しないものとする更なるステータス・フラグ・レジスタを有し得る。前述のレジスタの制御は、レジスタと同様に（（ＲＩＭモードにある場合に、結果を書き込むための）ダミー・フラグ・レジスタ（追加レジスタ２２２に相当する）を備えることによって）修正することができる。これによって、こうしたフラグ・レジスタを更新するための複製電力署名構成部分がもたらされる。こうしたフラグ・レジスタは、簡単にする目的のために、図１１に表していない。
【０１０６】
プロセッサ内では、容量負荷が高く、速度が速いことは、データ・バスのスイッチングと、レジスタ・ファイル（メモリ）の読み書きが電力消費を支配することになることを意味する。フラグ・レジスタ（通常、単一ビット・レジスタ）の更新のスイッチング電力は、総電力と比較して大きいものでない。プログラム・カウンタのスイッチング電力でも、電力トレースにおいて観測可能な差をもたらすのに十分大きいものでない場合がある。こうしたフラグ・レジスタをそのままにしておくことは、所要の追加回路を削減するうえで好都合なやり方であり得る。
【０１０７】
バス・アーキテクチャ実施例の詳細な説明
この実施例は、「０」値を有する確率と「１」値を有する確率が等しくなるように維持する一方で、データ・バス・ドライバでの目標ビットの極性をランダムに切り換えることにより、ＤＰＡ攻撃者による、設計者が予想しなかった情報の使用を妨げるものである。すなわち、電力トレースにはもう、秘密鍵との統計的な相関はない。よって、暗号システムによって用いられる鍵を明らかにするうえで、設計者が予想しなかった情報を用いることが可能でない。この実施例は、他の実施例とともに用いることができ、又は単独で用いることができる。
【０１０８】
特に、ＤＰＡに関して言えば、正しく推測された鍵Ｋｓによって選択関数から計算される同じ目標ビット値を有する各メッセージ群内で、対応する電力トレースが常に「０」で有るわけでも常に「１」である訳でもないという結果になる。目標ビットで「０」を有する可能性も「１」を有する可能性も、極性の無作為化によって約０．５になる。よって、選択関数Ｄは事実上、実際の電力トレース測定と互いに関係付けることが可能でない。選択関数Ｄは、実際の目標ビットの電力消費を予測する方法を奪われてしまっている。Ｋｓが誤って推測された場合、無作為化によって、Ｄと、対応する電力トレースとの無相関が維持されることになる。
【０１０９】
図１２は、本発明による暗号バス・アーキテクチャ３１１（ＣＢＡ）を表す。暗号バス・アーキテクチャは好ましくは、双方向ドライバ３１５、３１７を両端に有し、負荷が通常高いバス３１６をそれらの間に有する。非双方向ドライバを用いることによって、本発明を実施するのに必要なバス・ドライバ数が増える傾向にあるので、双方向ドライバが好ましい。バス３１１はＣＰＵ３０１をそのメモリ３２１、３２３に接続する。ＣＰＵ３０１はＲＯＭ３２１に記憶されたプログラムを実行し、ＲＡＭ３２３は、暗号文データ及び鍵を中間的に記憶するためのものである。
【０１１０】
Ｎビットの乱数生成器３１３は、Ｎビット双方向ドライバ３１５、３１７を制御する。乱数生成器３１３はＮ個の出力３１４を有し、各出力は１ビットから成る。各ビット３１４０乃至３１４Ｎは、１つのバス・ドライバ３１５、３１７を制御する。乱数生成器３１３は、「アクティブ状態にする信号」がＣＰＵ３０１からイネーブル線３０３を介して受信される都度、新たな、Ｎビット乱数３１４０乃至３１４Ｎの組を生成する。アクティブ状態にする信号は、好ましくは、各ＤＥＳラウンドの最初にＣＰＵ３０１によって送出され、好ましくは、ソフトウェアによって引き起こされる。各ランダム・ビット３１４０乃至３１４Ｎの値は、ドライバ３１５、３１７を切り替える（すなわち、その極性を切り替える）やり方を明らかにし、高負荷内部データ・バス３１６を駆動させて相関を打ち負かすのに用いられる。極性制御線３１３は、「耐探査」にされることが好ましいが、それは、リバース・エンジニアに容易に分かる回路特徴の下に埋め込むのが好ましいからである。すなわち、この制御線は、（それぞれの内容を本明細書及び特許請求の範囲に援用する）米国特許第５，８６６，９３３号明細書、米国特許第６，２９４，８１６号明細書又は米国特許第６，６１３，６６１号明細書に記載の手法を用いて、基板内のインプラント・レイヤによって作製することが可能であり、よって、酸化物、ポリシリコン及び／又は金属の下に埋められており、それによって、制御線に接続する可能性がずっと難しい命題になる。所要の、極性の切り替えは、リバース・エンジニアによる統計解析を妨害するうえで十分、頻度が低い。例えば、極性は、各ＤＥＳラウンドの最初に、又は、暗号化のための新たな平分それぞれのフェッチの最初に切り替えることが可能である。
【０１１１】
図１３は、好ましい実施例のより詳細な構成図を表す。「ＣＰＵ  読み取り」線４０１０乃至４０１Ｎ及び「ＣＰＵ  書き込み」線４０３０乃至４０３Ｎを用いてデータ・フロー方向を制御する。双方向バス・ドライバ３１５、３１７は、乱数生成器３１３によって生成される乱数の関連ランダム・ビット３１４０乃至３１４Ｎの値によって定められる反転型又は非反転型のトライステート・バッファである。例えば、ランダム・ビット３１４０が、「ＣＰＵ書き込み」動作中の双方向バス・ドライバ３１５に対して「０」の場合、３０５０上の信号がデータ・バス３１６上で反転されることになる。他方端では、双方向バス・ドライバ３１７は、ビット３０５０に対する、データ・バス３１６からの反転信号を受信し、ビットをもう一度反転させて、元のデータ信号のインテグリティを保証することになる。このことは、データ信号１０５のビット毎に行われる（通常、一部のビットが反転され、他のビットは反転されない）。ビット３１４０がランダムな「１」の場合、反転型バッファ３２０の代わりに非反転型バッファ３１９がデータ・バス３１６を駆動させることになる。信号３１４０乃至３１４Ｎはランダムなため、「０」の値を有する可能性及び「１」の値を有する可能性は約０．５及び０．５である。その結果、データ・バスの内容に関連した決定性電力情報が全て失われることになる。よって、正しく推測された鍵を有するＤＰＡ攻撃の場合にも、データ・バス上の目標ビットの内容と、対応する電力トレースとの間の内報（ｔｉｐ−ｏｆｆ）相関が失われる。
【０１１２】
データ・バス３１６（プロセッサの設計において高容量負荷を有する傾向にある）の論理内容が、電力トレース測定と互いに関係付けることが可能でないようにされた後、残っている相関は、ＡＬＵとレジスタ・ファイルとを接続する低負荷容量配線からのものであり得る。この相関の検出を最小にするために、好ましくは、デュアル・レール（ｄ及びｄ＿ｂａｒ）の組を用いて、図１４に示すように特定のレジスタ・ビットを書き込む。この設計の対称性が理由で、デュアル・レールは、新たなデータ「ｄ」及びその補数「ｄ＿ｂａｒ」を同時に含み、よって、「ｄ」及び「ｄ＿ｂａｒ」の平均化の結果、０．５に正規化する対象の外部電力消費をマスクする。相補型読み取り増幅器及び相補型書き込み増幅器が存在していることが分かる。特に、データ値Ｄ０が「０」の場合、デュアル・レール組は「０，１」を含む。データ値Ｄ０が「１」の場合、デュアル・レール組のデータ値は「１，０」である。よって、データ値Ｄ０とは無関係に、この回路（レールｄ及びｄ＿ｂａｒ、並びに、相補型読み取り増幅器及び相補型書き込み増幅器を含む）は、同じ平均電力消費を常に有することになり、よって、データ値Ｄ０と回路の電力消費とを互いに関係付けることを不可能にしてしまうことになる。図１４の回路のデータ値Ｄ０は「０」の値又は「１」の値を有し得るが、何れの場合も、ｄ及びｄ＿ｂａｒの一方は「０」に等しくなり、ｄ及びｄ＿ｂａｒの他方は「１」に等しくなり、それらの平均は当然、０．５に等しくなる。その結果、回路の電力署名は、ＡＬＵレジスタ・ビットのデータ値の内容とは無関係になる。当然、特定のレジスタは複数ビットを有し、各記憶ビットは好ましくは、図１４による設計によって構成される。
【０１１３】
本発明は好ましくは、暗号処理を行うのに用いられる、マイクロプロセッサのチップ上のバス及び／又はチップ・アーキテクチャにおいて実施される。このアーキテクチャ手法によって、既存の暗号アルゴリズム（ＲＳＡ、ＤＥＳ、ＡＥＳ及び非線形アルゴリズムを含む）を安全にすることが可能になる。
【０１１４】
本明細書記載の手法をその別々の実施例に関して説明したが、当業者にはその修正が分かるものである。そういうものとして、特許請求の範囲記載の本発明は、特許請求の範囲によって特に必要とされる以外には、本明細書記載の実施例に限定されないものとする。
【０１１５】
【表１】
2008502283.tif 000003
表１。  Ｃ言語で表しており、例えば、ＳＰボックス１及び２が、６４個のエレメントのルックアップ・テーブルとして実施されている。
【０１１６】
【表２】
2008502283.tif 000004
表２。特定のラウンドのＤＥＳの８つのＳＰルックアップ・テーブルの順次アクセスを行うＣ言語プログラム。
【０１１７】
【表３】
2008502283.tif 000005
表３。表２のＣプログラム文番号５を実施するための対応アセンブラ言語プログラム。なお、「；」に始まる行はコメント行である。
【０１１８】
【表４】
2008502283.tif 000006
2008502283.tif 000007
表４。
【０１１９】
【表５】
2008502283.tif 000008
表５。図７の実施例について、表２のＣプログラム文番号５を実施するための対応アセンブラ言語プログラム。なお、「；」に始まる行はコメント行である。
【図面の簡単な説明】
【０１２０】
【図１】攻撃者が入手可能な情報の、従来技術を表す図である。
【図２ａ】特定のラウンドの８つのＳＰルックアップ・テーブルの通常のアクセスに相当する、従来技術のタイムラインである。
【図２ｂ】特定のラウンドの８つのＳＰルックアップ・テーブルの無作為化されたアクセス順序に相当する、従来技術のタイムラインを示す図である。
【図３】本明細書による、ランダム命令マスク（ＲＩＭ）によって時間間隔及びＳＰボックス・アクセス順序が無作為化されたタイムラインを示す図である。
【図４】本明細書による、シフト命令が等化されたタイムラインを示す図である。
【図５】本明細書による、ＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの第１の実施例の構成図である。
【図６】本明細書による、ＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの第２の実施例の構成図である。
【図７】本明細書による、ＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの第３の実施例の構成図である。
【図８】図７の実施例に関連したタイムラインである。
【図９】本明細書による、ＤＥＳアルゴリズムを実施するハードウェア・アーキテクチャの第４の実施例の構成図である。
【図１０】従来技術のＲＩＳＣ  ＣＰＵの構成図である。
【図１１】本発明の第６の実施例によるＲＩＳＣ  ＣＰＵの構成図である。
【図１２】暗号バス・アーキテクチャ実施例によるシステムの構成図である。
【図１３】暗号バス・アーキテクチャ実施例によるバス・アーキテクチャの詳細の構成図である。
【図１４】暗号バス・アーキテクチャ実施例による、デュアル・レールを備えたビット書き込みを表す構成図である。
【図１】
2008502283.tif 000009
【図２ａ】
2008502283.tif 000010
【図２ｂ】
2008502283.tif 000011
【図３】
2008502283.tif 000012
【図４】
2008502283.tif 000013
【図５】
2008502283.tif 000014
【図６】
2008502283.tif 000015
【図７】
2008502283.tif 000016
【図８】
2008502283.tif 000017
【図９】
2008502283.tif 000018
【図１０】
2008502283.tif 000019
【図１１】
2008502283.tif 000020
【図１２】
2008502283.tif 000021
【図１３】
2008502283.tif 000022
【図１４】
2008502283.tif 000023
【国際調査報告】
2008502283.tif 000024
2008502283.tif 000025
2008502283.tif 000026
2008502283.tif 000027
2008502283.tif 000028