(57)【要約】【課題】暗号の解読を強固に防止することを課題とする。【解決手段】演算処理装置は、暗号化処理を実施する演算器回路群と、演算器回路群と同一の構成である冗長演算器回路群を有する。そして、演算処理装置は、暗号化処理を実施する場合に、演算器回路群では通常通り、暗号化処理をしつつ、冗長演算器回路群ではランダムデータ生成部などによりランダムに生成されたデータなどを用いて暗号化マスクプログラム処理を実施する。また、演算処理装置は、暗号化処理を実施しない場合に、冗長演算器回路群で通常の演算処理を実施する。【選択図】        図１
2010011353.tif 000002
【特許請求の範囲】
【請求項１】
暗号化処理を実行する演算処理装置であって、
前記暗号化処理を実施する第一の演算部と、
前記第一の演算部が前記暗号化処理を実施する場合に、ランダムに生成された命令および／またはデータを用いてマスクプログラム処理を実施する一方、前記第一の演算部が前記暗号化処理を実施しない場合に、通常の演算処理を実施する第二の演算部と、
を備えたことを特徴とする演算処理装置。
【請求項２】
前記第二の演算部は、前記第一の演算部と同一の構成を有する１つまたは複数の演算部であることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第二の演算部によりマスクプログラム処理が実施された場合には、前記第二の演算部により実施されたマスクプログラムの処理結果のみを格納する一方、前記第二の演算部により通常の演算処理が実施された場合には、前記第二の演算部により実施された演算処理結果を格納するメモリ部をさらに備えたことを特徴とする請求項１または２に記載の演算処理装置。
【請求項４】
前記第一の演算部が前記暗号化処理を実施する場合に、前記第二の演算部に対して、ランダムに生成した命令を投入するランダム命令生成部をさらに備え、
前記第二の演算部は、前記マスクプログラム処理を実施する場合に、前記ランダム命令生成部により投入された命令を用いて前記マスクプログラム処理を実施することを特徴とする請求項１〜３のいずれか一つに記載の演算処理装置。
【請求項５】
当該演算処理装置全体で消費される消費電力を計測する消費電力計測部をさらに備え、
前記ランダム命令生成部は、前記消費電力計測部により計測された消費電力が所定の閾値より大きい場合には、前記第二の演算部に対して投入する命令を抑止することを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、暗号化処理を実行する演算処理装置に関する。
【背景技術】
【０００２】
従来より、暗号を解読した情報の搾取や、特定個人への成りすましなどセキュリティに関連する事件や問題が多発し、社会問題になってきている。そのため、情報の漏洩や暗号の解読など、個人・法人を問わず、情報の漏洩対策や情報・機密の暗号化が必須となっている。
【０００３】
情報の暗号化は、ＤＥＳ（Data  Encryption  Standard）、ＡＥＳ（Advanced  Encryption  Standard）、ＲＳＡ（公開鍵暗号方式）、ＭＩＳＴＹ（共通鍵暗号方式）などの暗号解読の計算の複雑さを増やす方法を採用することで、暗号解読への耐性を持たせるのが主流である。暗号解読の計算の複雑さを増やす方法としては、暗号のキーを長くする方法や演算回数を増やす方法が考えられている。
【０００４】
最近では、暗号化の手法をハードウェアから特定する手法として、図８に示すような暗号化を行うプロセサのチップ上の電力分布や電力の変動量から、演算の種類・回数・内容を特定するような暗号解読が行われつつある。具体的には、マイクロコンピュータによる暗号化処理時の消費電力を解析することで、暗号化処理で使用した秘密の鍵を特定する差分電力解析（ＤＰＡ：Differential  Power  Analysis）などがある。ＤＰＡが解析する消費電力は、通常、プロセサチップにおけるＶｃｃとＧＮＤとの間に抵抗を設置し、その両端の電圧を観察することによって測定することができる。
【０００５】
そして、このようなＤＰＡなどの暗号解読に対して、システム内部のハードウェアで使用する消費電力を制御したり、シリアルデータの変化の回数を用いて全体の消費電力を平均化したりする暗号解読を防止する技術が開示されている（例えば、特許文献１と２参照）。同様に、暗号解読に対して、バス上を伝送するデータに乱数データを加えて転送して消費電力と暗号データとの相関を減少させたり、プロセッサがランダムに命令を実行したりする暗号解読を防止する技術が開示されている（例えば、特許文献３と４参照）。
【０００６】
【特許文献１】特開２００４−５６３６３号公報
【特許文献２】特許第３９３３６４７号公報
【特許文献３】特開２００５−２２３４７７号公報
【特許文献４】米国特許出願公開第２００５／０２７３６３１号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記したいずれの従来の技術でも、計算の複雑さを増すことで暗号の強度を上げようとしているが、ハードウェアの動きそのものを解読されてしまうと、暗号の計算方法を類推されてしまい、暗号としての強度が低下するという課題があった。
【０００８】
具体的には、システム内部のハードウェアで使用する消費電力を制御することで、システム全体の消費電力を平均化したとしても、昨今のように攻撃対象がプロセサ本体、あるいは、コンピュータ内部の個別のハードウェアモジュールである場合には、有効ではない。また、シリアルデータが変化しない回数に対応したシリアルデータを作成し、それを暗号処理回路と同一のダミー回路に入力することで、全体の消費電力を平均化したとしても、シリアルデータ以外も使用する暗号処理も存在するため、適用できる範囲は狭く、一般的なパラレルデータの暗号処理での消費電力解析への対策としては効果的ではない。
【０００９】
また、バス上を伝送するデータに乱数データを加えて転送することで、消費電力と暗号データとの相関を減少させて、消費電力解析を行いにくくしたとしても、マイクロプロセサの内部コンポーネントなどから消費電力解析を行われる場合には、効果的ではない。また、暗号処理プログラムの前後で、特定の制御フラグを立て、プロセッサがランダムに命令を実行したとしても、暗号処理中にランダムな命令を実行するわけではないため、消費電力解析を行われる場合には、効果的ではない。
【００１０】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、暗号の解読を強固に防止することが可能である演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、本願が開示する演算処理装置は、暗号化処理を実行する演算処理装置であって、前記暗号化処理を実施する第一の演算部と、前記暗号化処理を実施する場合に、ランダムに生成された命令とデータを用いて暗号化マスクプログラム処理を実施し、前記暗号化処理を実施しない場合に、通常の演算処理を実施する第二の演算部と、を有する。
【発明の効果】
【００１２】
本発明によれば、暗号の解読を強固に防止することが可能である。
【発明を実施するための最良の形態】
【００１３】
以下に添付図面を参照して、この発明に係る演算処理装置の実施例を詳細に説明する。なお、以下では、本実施例に係る演算処理装置の概要、演算処理装置の構成および処理の流れを順に説明し、最後に本実施例に対する種々の変形例を説明する。
【実施例１】
【００１４】
［演算処理装置の概要］
最初に、実施例１に係る演算処理装置の概要を説明する。実施例１に係る演算処理装置は、暗号化処理を実施する演算器回路群と、当該演算器回路群と同様の構成を有する冗長演算器回路群と、ランダムに生成したデータを冗長演算器回路群の各回路に投入するランダムデータ生成回路とを有するマイクロプロセッサであり、これらによって、暗号の解読を強固に防止することが可能である。なお、演算機械路群としては、整数・浮動小数点演算回路、論理演算回路、シフトレジスタ、Bit  Population  count演算回路などの暗号処理で多用される複数の回路が含まれる。
【００１５】
具体的には、実施例１に係る演算処理装置（マイクロプロセッサ）は、暗号化処理を実施する際に、通常の暗号化処理を演算器回路群で処理しつつ、ランダムに生成されたデータを用いた冗長な暗号化マスクプログラム処理を冗長演算器回路群で実施する。このような暗号化マスクプログラム処理を行うことにより、演算処理装置は、電力の消費時・非消費時の電力差に対して冗長な消費電力を発生させ、演算器回路群で実施される実際の暗号化処理による消費電力変動をマスクし、消費電力の時間的および空間的な局所化を暗号解読者に察知されないようにする。その結果、暗号解読者は、差分電力解析（ＤＰＡ：Differential  Power  Analysis）などによる消費電力からの類推、例えば、暗号化演算の種類や演算回数の推測などが行えず、演算処理装置は、暗号の解読を強固に防止することが可能である。
【００１６】
［演算処理装置の構成］
次に、図１〜図６を用いて、実施例１に係る演算処理装置の構成を説明する。図１は、実施例１に係る演算処理装置の構成を示すブロック図である。
【００１７】
図１に示すように、実施例１による演算処理装置１０は、暗号処理識別回路１１と、演算器回路１２と、ランダムデータ生成回路１３と、命令発行回路１４と、プロセサ状態管理回路１５と、クロック位相制御回路１６と、Ｌ１キャッシュ１７と、Ｌ２キャッシュ１８と、Load/Store回路１９と、メモリ管理回路２０と、外部バス制御回路２１と、電力チェック回路２２とを有する。
【００１８】
かかる暗号処理識別回路１１は、当該演算処理装置（マイクロプロセッサ）１０が暗号化処理時であるか否かを識別して、各機能部に通知する。具体的には、暗号処理識別回路１１は、外部から受け付けた暗号処理識別信号あるいはプログラム中のプロセスＩＤなどから、暗号処理を行うプログラムであるか否かを識別する。そして、暗号処理識別回路１１は、接続される演算器回路群１２、命令発行回路１４、Ｌ１キャッシュ１７、Load/Store回路１９、外部バス制御回路２１に対して、識別した結果を出力する。なお、外部から受け付ける暗号処理識別信号は、当該マイクロプロセッサ内で生成されたものであってもよく、外部装置で生成されてもよい。ただし、暗号処理識別回路１１は、どのような暗号処理識別信号が暗号処理であるかを認識している必要がある。例えば、暗号処理識別信号の認識手法としては、一定の信号（暗号処理識別信号）を検出する分岐回路（判定回路）などを暗号処理識別回路１１内に事前に設けることにより実現することができる。
【００１９】
演算器回路１２は、ＩＵ（Integer  Unit）やＦＰＵ（Floating  Point  Unit）などを有する回路であり、演算結果を記憶するレジスタファイルと、暗号化処理を実施する複数の回路と、後述するランダムデータ生成回路によりランダムに生成されたデータを用いて冗長な暗号化マスクプログラム処理を行う冗長演算器回路とを有する。具体的には、演算器回路群１２は、図２に示すように、加減算回路、乗除算回路、論理演算回路、浮動小数点演算回路、シフト演算回路、Bit  Population  count演算回路などの演算器回路群１２ａと、演算器回路群１２ａと同一の回路構成を有する冗長演算器回路群１２ｂとを有する。
【００２０】
かかる演算器回路群１２ａは、暗号処理識別回路１１またはメモリ管理回路２０から暗号化処理時であることが通知されて、後述する命令発行回路１４から暗号化処理における各種演算命令が入力された場合に、Ｌ１キャッシュ１７やＬ２キャッシュ１８からデータを取得して、当該命令に対応した各種演算回路による処理を実行する。そして、演算器回路群１２ａは、外部バス制御回路２１に接続される主記憶装置（メモリ）などに実行して得られた結果を格納する。ここで、演算器回路群１２ａが有する各種演算回路の処理内容について説明すると、加減算回路は、加算器と減算器とを有して各種データを加算または減算する回路であり、乗除算回路は、乗算器と除算器とを有して各種データを乗算または除算する回路であり、論理演算回路は、論理和や論理積などブール代数（論理演算）を行う回路である。
【００２１】
また、浮動小数点演算回路は、浮動小数点演算を行う回路であり、シフト演算回路は、算術シフトや論理シフトなどビットを操作するシフト演算を行う回路であり、Bit  Population  count演算回路は、レジスタ中の１あるいは０の値のビット数を計数する回路である。なお、ここで説明した各種演算回路は例示であり、演算器回路群１２ａは、これら以外の暗号処理で多用される回路を備えていてもよい。また、演算器回路群１２ａは、上記した各種演算回路を全て備えている必要もなく、一部はソフトウエアなどで実施されていてもよい。
【００２２】
そして、冗長演算器回路群１２ｂは、演算器回路群１２ａと同一の構成を有し、暗号化処理を実施する場合に、ランダムに生成されたデータを用いて暗号化処理を実施し、暗号化処理を実施しない場合に、他の演算処理を実施する。具体的には、暗号処理識別回路１１またはメモリ管理回路２０から暗号化処理時であることが通知された場合に、冗長演算器回路群１２ｂは、後述するクロック位相制御回路１６から入力されたクロックに従いつつ、後述するランダムデータ生成回路１３によってランダムに生成されたデータを用いて各種演算回路を実行する。また、暗号化処理時であることが通知された冗長演算器回路群１２ｂは、後述する命令発行回路１４の冗長命令発行制御回路１４ａによりランダムに生成された命令を受け付けて、当該命令とランダムデータに従って各種演算回路を実行する。そして、冗長演算器回路群１２ｂは、外部バス制御回路２１に接続される主記憶装置などの冗長演算器回路群１２ｂ専用領域に、実行して得られた結果を格納する。
【００２３】
また、暗号処理識別回路１１またはメモリ管理回路２０から暗号化処理時でない、つまりその他の演算処理時であることが通知された場合に、冗長演算器回路群１２ｂは、現地点で実行されるべき他の演算処理を各種演算回路を用いて実行する。そして、冗長演算器回路群１２ｂは、外部バス制御回路２１に接続される主記憶装置などの冗長演算器回路群１２ｂ専用領域に、実行して得られた結果を格納する。なお、冗長演算器回路群１２ｂについても演算器回路群１２ａと同様に、上記した演算回路以外の暗号処理で多用される回路を備えていてもよく、上記した各種演算回路を全て備えている必要もなく、一部はソフトウエアなどで実施されていてもよい。また、冗長演算器回路群１２ｂが有する各種演算回路の処理内容は、演算器回路群１２ａで説明した処理内容と同様であるので、ここでは詳細な説明は省略する。なお、図２は、演算器回路を説明するための図である。
【００２４】
図１に戻り、ランダムデータ生成回路１３は、演算器回路１２の冗長演算器回路群１２ｂに対して、ランダムなデータを生成して投入する回路である。具体的には、ランダムデータ生成回路１３は、図３に示すように、８ビット、１６ビット、３２ビット、６４ビットのそれぞれに対応したＰＲＢＳ（Pseudorandom  Binary（Bit）  Sequence：擬似乱数バイナリ（ビット）シーケンス）を用いて擬似乱数を発生させて、ランダムなデータを生成する。例えば、ランダムデータ生成回路１３は、制御クロック、系列シード値（初期値）、シード値をいずれかのＰＲＢＳに入力して特定の演算により乱数（８ビットデータ、１６ビットデータ、３２ビットデータまたは６４ビットデータ）を生成し、生成したデータを演算器回路１２の冗長演算器回路群１２ｂに投入する。なお、図３は、ランダムデータ生成回路を説明するための図である。
【００２５】
図１に戻り、命令発行回路１４は、演算命令やメモリアクセス命令などを各回路に投入する回路であり、特に本実施例に密接に関連するものとしては、冗長命令発行制御回路１４ａと冗長命令発行頻度制御回路１４ｂとを有する。具体的には、命令発行回路１４は、暗号処理識別回路１１などから投入された制御クロック、つまり当該演算処理装置１０内で発生しているクロックや命令発行制御信号に基づいて、暗号化処理を実施する命令や各種制御・情報信号を生成して、演算器回路１２に投入する。例えば、命令発行回路１４は、後述するメモリ管理回路２０、Ｌ１キャッシュ１７、Ｌ２キャッシュ１８、Load/Store回路１９を介して、外部バス制御回路２１に接続される主記憶装置から命令を読み出してデコードする。そして、デコードした結果が演算命令などであれば、命令発行回路１４は、当該演算命令を演算器回路１２に投入する。また、デコードした結果がメモリへのアクセス命令などであれば、命令発行回路１４は、メモリ管理回路２０、Load/Store回路１９、Ｌ２キャッシュ１８、Ｌ１キャッシュ１７および外部バス制御回路２１により、メモリと演算器回路１２あるいはレジスタファイルとの間でデータを転送する。
【００２６】
冗長命令発行制御回路１４ａは、暗号化処理を実施する場合に、演算器回路１２の冗長演算器回路群１２ｂに対して、ランダムに生成した命令を投入する。具体的には、冗長命令発行制御回路１４ａは、暗号処理識別回路１１から暗号化処理時であることが通知された場合、図４に示すように、後述する冗長命令発行頻度制御回路から命令種別ごとの命令発行制御信号を受け付ける。すると、冗長命令発行制御回路１４ａは、暗号化マスクプログラム処理を実施させるための命令（各種制御・情報信号）をランダムに生成して、演算器回路１２の冗長演算器回路群１２ｂに投入する。
【００２７】
冗長命令発行頻度制御回路１４ｂは、暗号化処理における実行プログラムや実行フェーズを把握し、実行されるプログラムやフェーズが変わる場合には、冗長演算器回路群１２ｂを動作させる。具体的には、冗長命令発行頻度制御回路１４ｂは、図４に示すように、後述するプロセサ状態管理回路１５からプログラムカウンタや、品種、数、頻度などの命令情報を受け付けて暗号化処理における実行プログラムや実行フェーズを把握する。そして、冗長命令発行頻度制御回路１４ｂは、実行されるプログラムやフェーズが変わる場合には、冗長命令発行制御回路１４ａに対して命令発行指示を投入する。命令発行指示が投入された冗長命令発行制御回路１４ａは、暗号化マスクプログラム処理を実施させるための命令（各種制御・情報信号）をランダムに生成して、演算器回路１２の冗長演算器回路群１２ｂに投入する。このようにすることで、実行されるプログラムやフェーズの変わり目をランダムに変化させることができ、消費電力の時間的および空間的な局所化を暗号解読者に察知されないようにすることができる。
【００２８】
そして、冗長命令発行頻度制御回路１４ｂは、後述する電力チェック回路２２により計測された消費電力が所定の閾値より大きい場合には、冗長演算器回路群１２ｂに対して投入する命令を抑止する。具体的には、冗長命令発行頻度制御回路１４ｂは、電力チェック回路２２により当該演算処理装置内の消費電力が許容最大値近傍の値である旨の通知を受け付けた場合に、冗長命令発行制御回路１４ａに対して命令発行抑止信号を投入して、冗長演算器回路群１２ｂに対する命令を抑止する。なお、図４は、命令発行回路を説明するための図である。
【００２９】
図１に戻り、プロセサ状態管理回路１５は、暗号化処理を実施した実行履歴から暗号化処理で実行されるプログラムやフェーズを認識し、暗号化処理において演算処理が増減したプログラムやフェーズの場合には、演算器回路１２の冗長演算器回路群１２ｂに対して、その増減に応じてランダムに生成した命令を投入する。具体的には、プロセサ状態管理回路１５は、過去や直前に実行された暗号化処理の各プログラムの実行フェーズなどを一時領域などに格納する。その後、暗号処理識別回路１１から暗号化処理時であることが通知されて演算器回路１２で暗号化処理が実施されている間、プロセサ状態管理回路１５は、実行中のプログラムやフェーズを暗号処理識別回路１１や演算器回路１２から取得して、冗長命令発行頻度制御回路１４ｂに投入する。また、プロセサ状態管理回路１５は、認識したフェーズにおいて演算器回路１２で実行される演算回路が少ないなどと実行履歴から判断した場合には、冗長命令発行頻度制御回路１４ｂに対して命令投入指示を発行する。その後、命令投入指示を受け付けた冗長命令発行頻度制御回路１４ｂは、冗長命令発行制御回路１４ａに対して命令発行指示を投入し、冗長命令発行制御回路１４ａは、命令（各種制御・情報信号）をランダムに生成して演算器回路１２の冗長演算器回路群１２ｂに投入する。
【００３０】
クロック位相制御回路１６は、演算器回路１２の冗長演算器回路群１２ｂに対して与えるクロックの位相を変動制御させる。具体的には、クロック位相制御回路１６は、図５に示すように、ランダムデータ生成回路１３により生成されたランダムデータと当該演算処理装置１０内で発生している制御クロックとを入力信号として受け付ける。そして、クロック位相制御回路１６は、ランダムクロックディレイ制御回路やプログラマブルディレイラインなどにより、入力信号を一定時間遅延させて、位相を変動させたクロックを生成し、生成したクロックを演算器回路１２の冗長演算器回路群１２ｂに出力する。例えば、クロック位相制御回路１６は、ランダムデータの種類に対応付けた遅延時間を決めておき、ランダムクロックディレイ制御回路やプログラマブルディレイラインなどにより、ランダムデータに対応する一定時間分、入力信号を遅延させてクロックを生成し、生成したクロックを演算器回路１２の冗長演算器回路群１２ｂに出力するようにしてもよい。なお、図５は、クロック位相制御回路を説明するための図である。
【００３１】
Ｌ１キャッシュ１７は、制御回路とメモリと冗長キャッシュ制御回路１７ａを有し、命令発行回路１４や演算器回路１２の演算器回路群１２ａからの要求に応じて命令やデータを応答する。具体的には、Ｌ１キャッシュ１７のメモリは、当該演算処理装置１０であるマイクロプロセッサと同じモジュールに集積または実装されている高速で少容量なメモリであり、使用頻度の高い命令やデータを記憶する一時領域である。
【００３２】
Ｌ１キャッシュ１７の制御回路は、命令発行回路１４や演算器回路群１２ａから命令またはデータの取得要求を受け付けた場合に、当該取得要求に対応する命令またはデータがＬ１キャッシュ１７のメモリに記憶されているか否かを判定する。そして、Ｌ１キャッシュ１７の制御回路は、取得要求に対応する命令またはデータがＬ１キャッシュ１７のメモリに記憶されている場合には、Ｌ１キャッシュ１７のメモリから対応する命令またはデータを取得して応答する。一方、取得命令に対応する命令またはデータがＬ１キャッシュ１７のメモリに記憶されていない場合には、後述するＬ２キャッシュ１８やLoad/Store回路１９を介して、外部バス制御回路２１に接続される主記憶から対応する命令またはデータを取得して応答する。
【００３３】
また、Ｌ１キャッシュ１７の冗長キャッシュ制御回路１７ａは、命令発行回路１４や冗長演算器回路群１２ｂから命令またはデータの取得要求を受け付けた場合に、当該取得要求に対応する命令またはデータを応答する動作を擬態する。例えば、Ｌ１キャッシュ１７の冗長キャッシュ制御回路１７ａは、取得要求に対応する命令またはデータがＬ１キャッシュ１７のメモリに記憶されているか否かを判定する動作、Ｌ２キャッシュ１８やLoad/Store回路１９を介して外部バス制御回路２１に接続される主記憶から対応する命令またはデータを取得する動作を擬態して、命令発行回路１４や冗長演算器回路群１２ｂに応答する。
【００３４】
Ｌ２キャッシュ１８は、制御回路とメモリとを有し、Ｌ１キャッシュ１７からの要求に応じて命令やデータを応答する。具体的には、Ｌ２キャッシュ１８のメモリは、Ｌ１キャッシュ１７のメモリより低速で主記憶より高速であるとともに、Ｌ１キャッシュ１７のメモリより容量が大きく主記憶部より容量が小さいメモリであり、比較的使用頻度の高いデータを記憶する一時領域である。
【００３５】
Ｌ２キャッシュ１８の制御回路は、Ｌ１キャッシュ１７から命令またはデータの取得要求を受け付けた場合に、当該取得要求に対応する命令またはデータがＬ２キャッシュ１８のメモリに記憶されているか否かを判定する。そして、Ｌ２キャッシュ１８の制御回路は、取得要求に対応する命令またはデータがＬ２キャッシュ１８のメモリに記憶されている場合には、Ｌ２キャッシュ１８のメモリから対応する命令またはデータを取得して応答し、Ｌ２キャッシュ１８のメモリに記憶されていない場合には、後述するLoad/Store回路１９を介して、外部バス制御回路２１に接続される主記憶から対応する命令またはデータを取得して応答する。
【００３６】
Load/Store回路１９は、冗長Load/Store回路１９ａを有し、Ｌ１キャッシュ１７、Ｌ２キャッシュ１８や外部バス制御回路２１に接続される主記憶などに対して、LoadやStore命令を実行する。具体的には、Load/Store回路１９は、Ｌ１キャッシュ１７やＬ２キャッシュ１８からLoad命令を受け付けた場合に、当該命令に対応するデータを外部バス制御回路２１に接続される主記憶から取得して、命令元のメモリに格納する。また、Ｌ１キャッシュ１７やＬ２キャッシュ１８からStore命令を受け付けた場合に、当該命令に対応するデータを命令元のメモリから読み出して、外部バス制御回路２１に接続される主記憶に格納する。
【００３７】
Load/Store回路１９の冗長Load/Store回路１９ａは、Ｌ１キャッシュ１７、Ｌ２キャッシュ１８や外部バス制御回路２１に接続される主記憶などに対して、LoadやStore命令を実行する動作を擬態する。例えば、冗長Load/Store回路１９ａは、Ｌ１キャッシュ１７の冗長キャッシュ制御回路１７ａやＬ２キャッシュ１８からLoad命令を受け付けた場合に、当該命令に対応するデータを外部バス制御回路２１に接続される主記憶から取得して、命令元のメモリに格納する動作を擬態する。また、Ｌ１キャッシュ１７やＬ２キャッシュ１８からStore命令を受け付けた場合に、当該命令に対応するデータを命令元のメモリから読み出して、外部バス制御回路２１に接続される主記憶に格納する動作を擬態する。
【００３８】
メモリ管理回路２０は、当該演算処理装置１０が受け付けたメモリアクセス処理命令を実行する。具体的には、メモリ管理回路２０は、仮想アドレスを物理アドレスに変換する機能、メモリ保護機能、キャッシュ制御機能、バス調停機能、バンク切り替え機能などを有し、当該演算処理装置１０が受け付けたメモリアクセス処理を実行する命令を命令発行回路１４に投入する。また、メモリ管理回路２０は、当該演算処理装置１０が受け付けたメモリアクセス命令に対応する命令やデータを、Ｌ１キャッシュ１７などから取得して命令発行回路１４に投入したり、命令元の外部装置などに応答したりする。
【００３９】
外部バス制御回路２１は、冗長バス制御回路２１ａを有し、外部装置である主記憶とのデータのやり取りを制御する。具体的には、外部バス制御回路２１は、Load/Store回路１９からLoad命令と当該命令に対応するデータなどを受け付けた場合に、当該データなどを主記憶に格納する。また、外部バス制御回路２１は、Load/Store回路１９からStore命令を受け付けた場合に、当該Store命令に対応するデータを主記憶から取得してLoad/Store回路１９に応答する。
【００４０】
冗長バス制御回路２１ａは、外部装置である主記憶とのデータのやり取りの制御を擬態する。具体的には、冗長バス制御回路２１ａは、冗長Load/Store回路１９から擬態動作である擬態Load命令と当該命令に対応するデータなどを受け付けた場合に、当該データなどを主記憶に格納する動作を擬態する。また、冗長バス制御回路２１ａは、Load/Store回路１９から擬態Store命令を受け付けた場合に、当該Store命令に対応するデータを主記憶から取得してLoad/Store回路１９に応答する動作を擬態する。
【００４１】
そして、冗長バス制御回路２１ａは、暗号化処理においてメモリアクセスが発生していない場合に、各種メモリに対して、ランダムにメモリアクセスを実施する。具体的には、冗長バス制御回路２１ａは、Load命令やStore命令を所定の期間受け付けなかった場合など暗号化処理においてメモリアクセスが発生していない場合に、冗長Load/Store回路１９ａを介してＬ１キャッシュ１７やＬ２キャッシュに対してランダムにメモリアクセスを実施したり、接続される主記憶に対してランダムにメモリアクセスを実施したりする。
【００４２】
電力チェック回路２２は、演算処理装置１０全体で消費される消費電力を計測する。具体的には、電力チェック回路２２は、図６に示すように、命令発行回路１４を介して受け付けた各機能回路の動作率カウンタ信号と演算処理装置１０の制御クロックとから、各回路の電力推定を行い、その合計と閾値とを比較する。そして、電力チェック回路２２は、算出した演算処理装置１０全体で消費される消費電力が閾値以上、つまり消費電力の最大許容値近傍である場合には、冗長命令発行頻度制御回路１４ｂに対して命令発行抑止信号を投入する。
【００４３】
また、電力チェック回路２２は、演算処理装置１０全体で消費される消費電力が閾値以上であるか否かを判定するだけでなく、各回路ごとに消費電力の閾値を設けておき、各回路ごとに閾値以上か否かを判定することもできる。また、電力チェック回路２２は、電力推定として様々な手法を用いることができ、例えば、各回路ごとに入力信号の変化確率から出力信号の変化確率を推定し、各回路間の配線容量と変化確率の積から当該回路全体で消費される電力を推定することができる。なお、図６は、電力チェック回路を説明するための図である。
【００４４】
［演算処理装置による処理］
次に、図７を用いて、演算処理装置による処理を説明する。図７は、実施例１に係る演算処理装置における処理の流れを示すフローチャートである。
【００４５】
図７に示すように、プログラムが投入されると（ステップＳ１０１肯定）、演算処理装置１０は、当該プログラム処理が暗号化処理であるか否かを判定する（ステップＳ１０２）。
【００４６】
具体的には、演算処理装置１０は、暗号処理識別回路１１やメモリ管理回路２０から発行される命令に暗号化処理を示すプログラムＩＤが含まれているか否かなどにより、投入されたプログラムが暗号化処理であるか否かを判定する。
【００４７】
そして、演算処理装置１０は、投入されたプログラムが暗号化処理であると判定された場合（ステップＳ１０２肯定）、冗長暗号化処理を実施する（ステップＳ１０３）。
【００４８】
具体的には、演算処理装置１０は、投入されたプログラムが暗号化処理であると判定された場合、図２で説明した各回路や各メモリを動作させて暗号化処理を実施しつつ、各回路のや各メモリの冗長回路を動作させて冗長な暗号化マスクプログラム処理を実施する。なお、冗長回路としては、冗長命令発行制御回路１４ａ、冗長命令発行頻度制御回路１４ｂ、ランダムデータ生成回路１３、冗長演算器回路群１２ｂや冗長キャッシュ制御回路１７ａ、Load/Store回路１９ａなどがあげられる。
【００４９】
その後、演算処理装置１０は、当該プログラムが終了すると（ステップＳ１０４肯定）、当該処理を終了する。一方、新たなプログラムが実行されると（ステップＳ１０４否定）、ステップＳ１０１に戻って以降の処理を実行する。
【００５０】
一方、投入されたプログラム処理が暗号化処理でないと判定された場合（ステップＳ１０２否定）、演算処理装置１０は、各回路のや各メモリの冗長回路を用いて、投入されたプログラム処理を実行する。
【００５１】
［実施例１による効果］
このように、実施例１によれば、演算処理装置１０は、暗号化処理を実施する演算器回路群１２ａと、暗号化処理を実施する場合に、ランダムに生成されたデータを用いて暗号化処理を実施し、暗号化処理を実施しない場合に、他の演算処理を実施する冗長演算器回路群１２ｂとを有する。そうすることにより、演算処理装置１０は、電力の消費時・非消費時の電力差に対して冗長な消費電力を発生させ、演算器回路群で実施される実際の暗号化処理による消費電力変動をマスクし、消費電力の時間的および空間的な局所化を暗号解読者に察知されないようにする。その結果、演算処理装置１０は、暗号の解読を強固に防止することが可能である。
【００５２】
また、実施例１によれば、冗長演算器回路群１２は、演算器回路群１２ａと同一の構成を有する１つまたは複数の演算部である。その結果、演算処理装置１０は、電力の消費時・非消費時の電力差に対してより冗長な消費電力を発生させ、演算器回路群で実施される実際の暗号化処理による消費電力変動をよりマスクすることができる。
【００５３】
また、実施例１によれば、演算処理装置１０は、冗長演算器回路群１２ｂにより暗号化処理が実施された場合には、冗長演算器回路群１２ｂにより実施された暗号処理結果のみを格納し、冗長演算器回路群１２ｂにより他の演算処理が実施された場合には、冗長演算器回路群１２ｂにより実施された演算処理結果を格納するメモリ領域をさらに備える。その結果、暗号処理用に割り当てられた特殊な空間へのアクセスを行うことで、通常のメモリ空間に対して悪影響が出ないようにすることができる。
【００５４】
また、実施例１によれば、演算処理装置１０は、暗号化処理においてメモリアクセスが発生していない場合に、冗長演算器回路群１２ｂ専用のメモリ領域に対して、ランダムにメモリアクセスを実施する。その結果、バス信号の使用頻度に依存する電力消費の偏りをマスクすることができ、暗号の解読をより強固に防止することが可能である。
【００５５】
また、実施例１によれば、演算処理装置１０は、暗号化処理を実施する場合に、冗長演算器回路群１２ｂに対して、ランダムに生成した命令を投入することができる。その結果、ランダムな消費電力を発生させることができるので、暗号の解読をより強固に防止することが可能である。
【００５６】
また、実施例１によれば、演算処理装置１０は、暗号化処理を実施した実行履歴から暗号化処理で実行される各プログラムの実行フェーズを認識し、暗号化処理において演算処理が少ない実行フェーズの場合には、冗長演算器回路群１２ｂに対して、ランダムに生成した命令を投入する。その結果、演算処理装置１０は、プログラムの実行フェーズが変化したとき、その実行フェーズで使用される頻度が変化した回路に対して、ランダムにデータを生成して、冗長な演算器・回路を動作させるための冗長な命令の発生・実行の頻度を増減させることで、フェーズ間の電力消費の差を軽減し、消費電力の平均化を行うことができる。
【００５７】
また、実施例１によれば、演算処理装置１０は、計測された消費電力が所定の閾値より大きい場合には、冗長演算器回路群１２ｂに対して命令の投入を抑止する。その結果、消費電力が電力最大値を超えそうな場合には、制限値を超えないように冗長命令の発生をスロットリングする機能を持つことができ、消費電力オーバーにより装置停止などを回避することができる。
【００５８】
また、実施例１によれば、演算処理装置１０は、冗長演算器回路群１２ｂに対して与えるクロックの位相を変動制御させることができる。その結果、演算処理装置１０は、外部に見える消費電力のピーク値を通常ピーク値が発生するタイミングから移動させることができる。
【実施例２】
【００５９】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に示すように、（１）冗長演算器回路群の構成、（２）メモリ構成、（３）システム構成等、にそれぞれ区分けして異なる実施例を説明する。
【００６０】
（１）冗長演算器回路群の構成
例えば、実施例１では、冗長演算器回路群１２と演算器回路群１２ａとが同一の構成である場合について説明したが、本願が開示する演算処理装置はこれに限定されるものではなく、暗号化処理を疑似的に実行できる最低限の構成を有する冗長演算器回路群１２を用いることもできる。
【００６１】
また、冗長演算器回路群１２は、チップの余った部分を使って実装することで、回路の微小化と集積化進んでいる高集積のＬＳＩ（Large  Scale  Integration）やＶＬＳＩ（Very  Large  Scale  Integration）であっても、消費電力とチップ面積を無駄にすることなく、暗号処理時の安全を確保することができる。
【００６２】
（２）メモリ構成
また、実施例１では、外部バス制御回路に接続される主記憶に、冗長演算器回路群１２ｂ専用の領域を備えさせた場合を説明したが、本願が開示する演算処理装置はこれに限定されるものではなく、冗長演算器回路群１２ｂ専用のメモリを新たに外部バス制御回路に接続するようにしてもよい。
【００６３】
（３）システム構成等
また、本願が開示する演算処理装置は、実施例１で説明した冗長な回路を全て備えている必要はない。例えば、冗長演算器回路群１２ｂとランダムデータ生成回路１３とだけを有していてもよく、冗長演算器回路群１２ｂとランダムデータ生成回路１３と冗長命令発行回路とだけを有していてもよい。
【００６４】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合（例えば、メモリ管理回路と暗号処理識別回路とを統合するなど）して構成することができる。
【００６５】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理（例えば、暗号化識別処理など）の全部または一部を手動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６６】
以上の実施例１〜２を含む実施形態に関し、更に以下の付記を開示する。
【００６７】
（付記１）暗号化処理を実行する演算処理装置であって、
前記暗号化処理を実施する第一の演算部と、
前記第一の演算部が前記暗号化処理を実施する場合に、ランダムに生成された命令および／またはデータを用いてマスクプログラム処理を実施する一方、前記第一の演算部が前記暗号化処理を実施しない場合に、通常の演算処理を実施する第二の演算部と、
を備えたことを特徴とする演算処理装置。
【００６８】
（付記２）前記第二の演算部は、前記第一の演算部と同一の構成を有する１つまたは複数の演算部であることを特徴とする付記１に記載の演算処理装置。
【００６９】
（付記３）前記第二の演算部によりマスクプログラム処理が実施された場合には、前記第二の演算部により実施されたマスクプログラムの処理結果のみを格納する一方、前記第二の演算部により通常の演算処理が実施された場合には、前記第二の演算部により実施された演算処理結果を格納するメモリ部をさらに備えたことを特徴とする付記１または２に記載の演算処理装置。
【００７０】
（付記４）前記マスクプログラム処理においてメモリアクセスが発生していない場合に、前記メモリ部に対して、ランダムにメモリアクセスを実施するメモリアクセス部をさらに備えたことを特徴とする付記３に記載の演算処理装置。
【００７１】
（付記５）前記第一の演算部が前記暗号化処理を実施する場合に、前記第二の演算部に対して、ランダムに生成した命令を投入するランダム命令生成部をさらに備え、
前記第二の演算部は、前記マスクプログラム処理を実施する場合に、前記ランダム命令生成部により投入された命令を用いて前記マスクプログラム処理を実施することを特徴とする付記１〜４のいずれか一つに記載の演算処理装置。
【００７２】
（付記６）前記ランダム命令生成部は、前記暗号化処理を実施した実行履歴から前記暗号化処理で実行される各プログラムの実行フェーズを認識し、前記暗号化処理において演算処理の頻度が変化した実行フェーズの場合には、前記第二の演算部に対して、ランダムな命令の頻度を増減させて命令を投入することを特徴とする付記５に記載の演算処理装置。
【００７３】
（付記７）当該演算処理装置全体で消費される消費電力を計測する消費電力計測部をさらに備え、
前記ランダム命令生成部は、前記消費電力計測部により計測された消費電力が所定の閾値より大きい場合には、前記第二の演算部に対して投入する命令を抑止することを特徴とする付記１〜６のいずれか一つに記載の演算処理装置。
【００７４】
（付記８）前記第二の演算部に対して与えるクロックの位相を変動制御させるクロック位相制御部をさらに備えたことを特徴とする付記１〜７のいずれか一つに記載の演算処理装置。
【００７５】
（付記９）暗号化処理を実行する演算処理装置に適した演算処理方法であって、
前記暗号化処理を実施する第一の演算ステップと、
前記暗号化処理を実施する場合に、ランダムに生成されたデータを用いて前記暗号化による電力消費をマスクするマスクプログラム処理を実施する一方、前記暗号化処理を実施しない場合には通常の演算処理を実施する第二の演算ステップと、
を含んだことを特徴とする演算処理方法。
【図面の簡単な説明】
【００７６】
【図１】実施例１に係る演算処理装置の構成を示すブロック図である。
【図２】演算器回路を説明するための図である。
【図３】ランダムデータ生成回路を説明するための図である。
【図４】命令発行回路を説明するための図である。
【図５】クロック位相制御回路を説明するための図である。
【図６】電力チェック回路を説明するための図である。
【図７】実施例１に係る演算処理装置における処理の流れを示すフローチャートである。
【図８】従来技術を説明するための図である。
【符号の説明】
【００７７】
１０  演算処理装置
１１  暗号処理識別回路
１２  演算器回路
１２ａ  演算器回路群
１２ｂ  冗長演算器回路群
１３  ランダムデータ生成回路
１４  命令発行回路
１４ａ  冗長命令発行制御回路
１４ｂ  冗長命令発行頻度制御回路
１５  プロセサ状態管理回路
１６  クロック位相制御回路
１７  Ｌ１キャッシュ
１７ａ  冗長キャッシュ制御回路
１８  Ｌ２キャッシュ
１９  Load/Store回路
１９ａ  冗長Load/Store回路
２０  メモリ管理回路
２１  外部バス制御回路
２１ａ  冗長バス制御回路
２２  電力チェック回路
【図１】
2010011353.tif 000003
【図２】
2010011353.tif 000004
【図３】
2010011353.tif 000005
【図４】
2010011353.tif 000006
【図５】
2010011353.tif 000007
【図６】
2010011353.tif 000008
【図７】
2010011353.tif 000009
【図８】
2010011353.tif 000010