暗号処理装置
【課題】ダミー演算のためのレジスタ回路を必要としないで電力解析攻撃の耐性を有する暗号処理装置を提供する。
【解決手段】実施形態の暗号処理装置1は、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部21,22と、制御部23を有する。制御部23は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、暗号演算処理部21,22の実行を制御する。
【解決手段】実施形態の暗号処理装置1は、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部21,22と、制御部23を有する。制御部23は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、暗号演算処理部21,22の実行を制御する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、暗号処理装置に関する。
【背景技術】
【0002】
従来より、暗号処理装置で消費される電力から暗号処理装置で用いられる秘密情報を取り出す電力解析という方法がある。このような解析方法への対策として、例えばDES(Data Encryption Standard)演算中にダミーのDES演算を挿入するという技術がある。ダミー演算処理を挿入することによって、暗号処理装置に電力解析の耐性を持たせるものである。
【0003】
しかし、暗号処理装置において、演算の途中においてダミー演算処理を実行させるためには、ダミー演算のためのデータあるいはダミー鍵を保持するレジスタ回路が必要となる。また、ダミー演算サイクルでは、正規の途中結果を保存するレジスタの内容が変化しないことから消費電力は他のサイクルよりも小さくなる傾向があり、これによりこのサイクルがダミー演算サイクルであると識別されればダミー演算処理の挿入が無効化されてしまうため、ダミー演算処理の挿入以外にも電力解析攻撃への耐性を高めた暗号処理装置の開発が望まれている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−25366号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本実施形態は、ダミー演算を用いなくても電力解析攻撃への耐性を有する暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態の暗号処理装置は、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部と、制御部を有する。制御部は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、暗号演算処理部の実行を制御する。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態に係わる暗号処理装置1の構成を示す構成図である。
【図2】第1の実施形態に係わる暗号回路モジュール15の構成を示すブロック図である。
【図3】従来のダミー処理を含まない場合の処理状況を示すタイミングチャートである。
【図4】従来のダミー処理を含む場合の処理状況を示すタイミングチャートである。
【図5】第1の実施形態の逆演算処理を用いた場合の処理状況を示すタイミングチャートである。
【図6】第1の実施形態の暗号処理のステップの時間に対する変化の例を示すグラフである。
【図7】第2の実施形態に係る暗号処理装置1Aの構成を示す構成図である。
【図8】第2の実施形態に係る、CPU11が乱数RNに基づいて、暗号処理の実行ステップを決定して実行する場合の処理の流れの例を示すフローチャートである。
【図9】第3の実施形態に係る暗号処理装置1Bの構成を示す構成図である。
【図10】第3の実施形態に係る暗号回路モジュール15Bの構成を示すブロック図である。
【図11】第3の実施形態に係わる比較器42が比較するタイミングを説明するための図である。
【図12】第4の実施形態の暗号処理装置の暗号回路モジュール15Cの構成を示すブロック図である。
【図13】第4の実施形態のDESのアルゴリズムを示す図である。
【図14】第4の実施形態のDESのアルゴリズムの一部を示し、暗号化演算の中に逆演算が挿入された例を示す図である。
【図15】図14のS1〜S7までの処理の流れを示す図である。
【図16】第1の変形例の動作を説明するための図である。
【図17】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第1の例を示す図である。
【図18】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第2の例を示す図である。
【図19】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第3の例を示す図である。
【図20】第2の変形例に係る暗号処理装置1Dの構成を示す図である。
【図21】第3の変形例に係る逆演算処理とダミー演算処理が組み合わされた場合のステップの時間に対する変化の例を示すグラフである。
【発明を実施するための形態】
【0008】
以下、図面を参照して実施形態を説明する。
【0009】
(第1の実施形態)
(構成)
まず、図1に基づき、本実施形態に係わる暗号処理回路が搭載される暗号処理装置の構成を説明する。図1は、本実施形態に係わる暗号処理装置1の構成を示す構成図である。
【0010】
暗号処理装置1は、中央処理装置(CPU)11と、プログラム等を記憶したROM12と、CPU11の作業用記憶領域としてのRAM13と、外部とのデータの送受信を行うための送受信インターフェース回路(以下、送受信I/Fと略す)14と、暗号処理回路を含む暗号回路モジュール15と、暗号回路モジュール15とバス16との暗号回路I/F17と、乱数を発生する回路である乱数発生回路18を含んで構成されている。CPU11、ROM12、RAM13、送受信I/F14及び暗号回路I/F17は、バス16を介して互いに接続されている。
【0011】
暗号処理装置1は、例えば、IC(Integrated Circuit)カードであり、カードリーダ装置等の外部装置(図示せず)からのデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力又は送信する。暗号処理は、暗号化演算あるいは復号化演算を意味する。外部装置とのデータの送受信は、送受信I/F14を介して、例えば、図示しない無線通信用の回路を介して無線通信により行われる。
【0012】
また、CPU11と暗号回路モジュール15間で送受信されるデータも、暗号化される。
暗号回路モジュール15は、2つの暗号演算回路を含み、暗号化及び/又は復号化の演算を実行する。本実施形態の暗号演算回路は、AES(Advanced Encryption Standard)のラウンド関数を用いた回路である。AESのラウンド関数にはデータ入力の他に、各ラウンドに入力されるラウンド鍵(拡大鍵)が、鍵データとして入力される。
乱数発生回路18は、乱数を生成して出力する回路である。
【0013】
図2は、暗号回路モジュール15の構成を示すブロック図である。暗号回路モジュール15は、暗号化回路21と、復号化回路22と、制御回路23と、セレクタ24,25と、レジスタ26とを含む暗号処理装置である。
【0014】
暗号化回路21は、入力されたデータに対して所定のAESの暗号化演算を実行する回路であり、復号化回路22は、入力されたデータに対して所定のAESの復号化演算を実行する回路である。暗号化回路21と復号化回路22が、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部を構成する。
【0015】
暗号化演算の場合、暗号化回路21は、所定の回数だけ、例えば11回、動作する。復号化処理の場合、復号化回路22は、所定の回数だけ動作する。復号化回路22による復号化演算は、暗号化回路21による暗号化演算の逆演算に対応し、暗号化回路21による暗号化演算は、復号化回路22による復号化演算の逆演算に対応する。なお、暗号処理に用いられる鍵データ等の秘密情報は、図示しない不揮発性メモリに記憶されている。
【0016】
制御回路23は、暗号化回路21と復号化回路22を制御する制御部である。制御回路23には、暗号化を行うのか復号化を行うのかを指示する信号が入力され、その指示に応じて、暗号化回路21と復号化回路22に暗号化演算あるいは復号化演算を実行させる。制御回路23は、セレクタ24に対して、暗号化回路21の出力信号を用いるのか、復号化回路22の出力信号を用いるのかを指示する選択信号SL1をセレクタ24に供給する。制御回路23は、セレクタ25に対して、初期値INdを用いるのか否かを指示する選択信号SL2をセレクタ25に供給する。
【0017】
暗号化回路22と復号化回路23の2つの出力信号は、セレクタ24に入力される。セレクタ24は、制御回路23からの制御信号すなわち選択信号SL1に応じて、入力された2つの出力信号の一方を選択して出力する。例えば、暗号化演算が行われる場合、制御回路23は、暗号化回路22の出力を選択する。
【0018】
セレクタ24の出力信号は、セレクタ25の一方の入力端に入力される。セレクタ25の他方の入力端には、初期値INdが入力される。初期値INdは、暗号化する平文あるいは復号化する暗号文である。セレクタ25は、暗号処理の初期値INdに対する処理が行われるときのみに、初期値INdを選択して出力する。
【0019】
セレクタ25の出力は、レジスタ26に供給されて保持される。レジスタ26に保持されるデータは、暗号化回路21と復号化回路22に、入力データとして供給される。
I/F17を介して入力された初期値INdは、最初にレジスタ26に格納された後に、暗号化演算あるいは復号化演算が開始されると、セレクタ25では選択されない。暗号化演算あるいは復号化演算が開始されると、セレクタ25は、セレクタ24の出力を選択して、暗号化演算あるいは復号化演算の結果データを出力する。よって、レジスタ26には、暗号化演算あるいは復号化演算の途中データ、あるいは最終的に暗号化された結果データあるいは復号化された結果データが格納される。レジスタ26のその結果データは、暗号回路モジュール15から、出力データとして、I/F17を介してバス16に出力されて、CPU11により処理することができる。
【0020】
制御回路23は、ラウンド制御カウンタ31と、ラウンド制御部32を有している。さらに制御回路23には、乱数発生部である乱数発生回路18からの乱数RNが入力される。
【0021】
ラウンド制御カウンタ31は、次に実行すべきラウンドをカウントする回路である。例えば、暗号処理のステップに応じたラウンド番号が、ラウンド制御カウンタ31に設定される。
【0022】
ラウンド制御部32は、乱数RNに応じて、ラウンド制御カウンタ31の値を変更する制御を行う回路である。すなわち、ラウンド制御部32は、入力された乱数RNの値に応じて、逆演算とその逆演算に対応する通常演算とを挿入する処理サイクル中の1以上の位置と、挿入する逆演算(及びその逆演算に対応する通常演算)の段数とを決定して、ラウンド制御カウンタ31の値を変更する。
【0023】
通常、ラウンド制御カウンタ31では、AESの場合、ステップS1からS11に対応するカウント値が、1ずつインクリメントされる。具体的には、ラウンド制御カウンタ31のカウンタ値は、1,2,3,4,5,6,7,8,9,10,11と変更するように、ラウンド制御部32は、ラウンド制御カウンタ31を制御する。
【0024】
しかし、本実施形態の場合、ラウンド制御部32は、入力された乱数RNに基づいて決定された1以上の位置と段数とに基づいて、ラウンド制御カウンタ31を増減させる。例えば、ラウンド制御部32は、ラウンド制御カウンタ31のカウンタ値を、1,2,3,2,3,4,5,6,7,8,7,6,7,8,9,10,11と変更する。この場合、制御回路23は、乱数RNを利用して、ラウンド3、8の後に、それぞれ1段と2段の逆演算と通常演算のセットが挿入されている。すなわち、制御回路23は、暗号処理において複数回実行される暗号化演算あるいは復号化演算の処理ステップ中に逆演算と、その逆演算の結果データを逆演算の前の値に戻す通常演算とを挿入する1以上の位置と段数を決定して、暗号処理のラウンドすなわち処理ステップを制御する。段数は、挿入される逆演算とその逆演算に対応する通常演算のそれぞれの1以上の回数である。
【0025】
(動作)
図3から図5は、本実施形態の暗号処理回路の動作を説明するための図である。図3は、従来のダミー処理を含まない場合の処理状況を示すタイミングチャートである。図4は、従来のダミー処理を含む場合の処理状況を示すタイミングチャートである。図5は、本実施形態の逆演算処理を用いた場合の処理状況を示すタイミングチャートである。図3から図5は、演算サイクル毎の演算の種類とレジスタに保存されるデータを示す。ここでは、1ラウンドの演算が1サイクルで実行される。
【0026】
図3の従来の通常の暗号処理では、最初の演算のサイクル1の暗号処理の結果データD0は、次のサイクル2の入力データとなり、その入力データに対して所定の暗号処理(暗号化演算あるいは復号化演算)Opが実行され、その出力データD1は、所定のレジスタに格納され、次のサイクル3の入力データとなる。以下、同様な暗号処理が繰り返される。
所定回数の暗号処理が実行されて、最終的に暗号されたデータあるいは復号化されたデータが、所定のレジスタに格納される。
【0027】
図4の従来のダミー処理を含む場合の暗号処理では、図3の通常の暗号処理中にダミー演算が途中に挿入される。所定のレジスタには、ダミー演算が実行される前のデータがそのまま保持される。よって、ダミー処理を含む場合の暗号処理は、図4に示すように、ダミー演算の実行サイクル分だけ全体の処理時間は、延びる。
【0028】
レジスタに保持されるデータは、図3の場合、各演算サイクルにおいて実行される暗号処理に対応するデータD1,D2,D3,D4,・・となるが、図4の場合は、データD0,D1,D1,D2,D2,D3,D4,D5,・・となる。
【0029】
図5の場合、例えば、初期値INdに対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。暗号化演算の場合、制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データが選択されて出力される。すなわち、サイクル1のタイミングで、暗号化回路21の出力が選択される。最初のサイクル1の出力データD0は、レジスタ26に保持され、次のサイクル2の入力データとなる。
【0030】
サイクル2においても、レジスタ26の出力データD0に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD1が選択されて、出力される。すなわち、サイクル2のタイミングでも、暗号化回路21の出力が選択される。出力データD1は、レジスタ26に保持され、次のサイクル3の入力データとなる。
【0031】
サイクル3においても、レジスタ26の出力データD1に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。サイクル3は、逆演算のサイクルである。よって、レジスタ26のデータD1に対して、暗号化演算の逆演算を実行する復号化回路22の出力データが、制御回路23からの選択信号SL1に基づいて、セレクタ24において選択されて、出力される。すなわち、サイクル3のタイミングで、復号化回路22の出力が選択される。その出力データは、データD1に対する逆演算の結果データであるので、データD0である。データD0は、レジスタ26に保持され、次のサイクル4の入力データとなる。すなわち、サイクル3は、逆演算のサイクルであるので、レジスタ26に出力されるデータは、サイクル2の1つ前のサイクル1の結果データD0となる。
【0032】
サイクル4においても、レジスタ26の出力データD0に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD1が選択されて、出力される。すなわち、サイクル4のタイミングで、暗号化回路21の出力が選択される。出力データD1は、レジスタ26に保持され、次のサイクル5の入力データとなる。
【0033】
サイクル5においても、レジスタ26の出力データD1に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD2が選択されて、出力される。出力データD2は、レジスタ26に保持され、次のサイクル6の入力データとなる。
【0034】
同様に、サイクル6では、データD2に対して逆演算Op−1を実行する復号化演算のデータD1がレジスタ26に格納される。サイクル7では、データD1に対して暗号化演算Opが実行されて、結果データとしてデータD2がレジスタ26に出力される。サイクル8では、同様に、データD2に対して暗号化演算Opが実行されて、結果データとしてデータD3がレジスタ26に出力される。
【0035】
結果として、レジスタ26に格納されるデータは、図5に示すように変化する。すなわち、レジスタ26に格納されるデータは、D0,D1,D0,D1,D2,D1,D2,D3,・・というように、ここでは、サイクル2の後に、1段の逆演算Op−1と通常演算Opが挿入され、サイクル5の後にも、1段の逆演算Op−1と通常演算Opが挿入されている。
【0036】
以上のように、暗号化処理の場合、あるデータDAに対して、暗号処理としての暗号化演算を実行すると、その結果データとしてデータDBが出力される。しかし、データDBに対して、暗号化演算の逆演算である復号化演算を実行すると、その結果データは、暗号化前のデータDAに戻る。そして、制御回路23が、乱数RNに基づいてランダムに決定した、逆演算を挿入する1以上の位置と段数とに応じた選択信号SL1を出力することによって、図5のような処理が実現される。
【0037】
以上は暗号化演算の場合で説明したが、復号化演算の場合も同様である。但し、復号化演算の場合の逆演算は、暗号化演算である。
【0038】
図6は、本実施形態の暗号処理のステップの時間に対する変化の例を示すグラフである。図6において、横軸は時間、縦軸はステップを示し、右上がりは通常演算、右下がりは逆演算が行われたことを示す。暗号処理が暗号化演算の場合、通常演算は暗号化演算であり、逆演算は復号化演算であり、暗号処理が復号化演算の場合、通常演算は復号化演算であり、逆演算は暗号化演算である。図6に示すように、AESの場合、11個の処理ステップが実行されるが、途中に、逆演算とその逆演算に対応する通常演算が挿入されている。よって、11個の処理ステップが途中で戻りつつ、進んで行く。その結果、通常演算の結果データとは異なるようにして、結果データが変化する。
【0039】
図6では、ステップ3の後、一旦ステップ2に戻ってからステップ3に戻っている。さらに、ステップ6の後、ステップ5に戻り、さらにステップ4まで戻ってから再びステップ5に戻り、さらにステップ6に戻るというように、処理が2段戻っている。ステップ8と10の後も、ステップ3のときと同様に、処理が1段戻っている。すなわち、本実施形態の暗号処理装置では、通常演算の途中に、逆演算がランダムに挿入され、通常演算のタイミングが変化すると共にデータの値も変化する。すなわち、そのデータの値の変化は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値の変換する第1の演算と、その第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせる処理による変化である。
【0040】
図6では、ステップ3に続くステップ2に戻る逆演算が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップ3に戻る通常演算が、第2の値を第1の値に変換する第2の演算である。
同様に、ステップ6から4に戻る2段の逆演算が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップ4から6に戻る2段の通常演算が、第2の値を第1の値に変換する第2の演算である。すなわち、制御回路23は、暗号演算処理部において実行される暗号処理が暗号化演算の場合は、逆演算である復号化演算を複数の回数連続して実行した後に、その複数の回と同じ回数の暗号化演算を実行するように暗号演算処理部を制御する。
【0041】
以上の説明は、暗号処理が暗号化演算の場合であるが、暗号処理が復号化処理の場合も同様である。第1の演算は、暗号処理が暗号化演算の場合は、暗号化演算の逆演算である復号化演算であり、暗号処理が復号化演算の場合は、復号化演算の逆演算である暗号化演算である。そして、第2の演算は、暗号処理が暗号化演算の場合は、暗号化演算であり、暗号処理が復号化演算の場合は、復号化演算である。
【0042】
以上のように、本実施形態によれば、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有する暗号処理回路を実現することができる。
【0043】
(第2の実施形態)
次に第2の実施形態について説明する。第1の実施形態では、暗号処理は、ハードウエアである回路により実行されているが、第2の実施形態は、暗号処理がソフトウエアプログラム(以下、単にソフトウエアという)により実行される点が、第1の実施形態と異なる。
【0044】
図7は、本実施形態に係る暗号処理装置1Aの構成を示す構成図である。図7において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図7に示すように、暗号処理装置1Aは、図1の暗号処理装置1におけるI/F17と暗号回路モジュール15を含まない。
【0045】
暗号処理装置1Aは、暗号処理をソフトウエアにより行うが、そのソフトウエアの実行は、制御部としてのCPU11によって行われる。暗号処理結果を保持するレジスタ26の代わりに、RAM13の記憶領域が利用される。さらに、ラウンド制御カウンタ31の代わりに、RAM13の記憶領域が利用される。CPU11は、乱数発生部である乱数発生回路18からの乱数RNに基づいて、ラウンド制御カウンタのカウンタ値の増減制御を行いなから、暗号処理を実行する。暗号処理の結果データは、RAM13の記憶領域に書き込まれる。
【0046】
図8は、CPU11が乱数RNに基づいて、暗号処理の実行ステップを決定して実行する場合の処理の流れの例を示すフローチャートである。CPU11は、乱数RNに基づいて、AESの11個のラウンドに相当する11個の処理ステップ中に、逆演算処理及びその逆演算に対応する通常演算処理が、乱数RNに基づいて決定されたステップの1以上の位置に、乱数RNに基づいて決定された段数だけ挿入される。
【0047】
図8では、ステップS1,S2,S3,S4,S5,・・・Snというn回(nは、整数)の暗号処理ステップが連続して実行されている。すなわち、N回(AESの場合、Nは11)の暗号処理が実行されるが、そのN回の暗号処理ステップ中に、(n−N)回の逆演算処理(その逆演算処理に対応する通常演算処理を含む)が、1つ以上の場所に挿入されている。図8では、ステップS2の後の位置に、1回の逆演算処理Op2−1が挿入され、その逆演算処理の後に、再びステップS2と同じ暗号演算処理(通常演算処理)Op2が挿入されている。ステップS3の処理が終了ときの結果データは、ステップS1の処理が終了したときの結果データと同じである。ステップS4が終了ときの結果データは、ステップS2の処理が終了したときの結果データと同じである。
【0048】
図8において、例えば、ステップS2に続くステップS3における逆演算処理が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップS4における演算処理が、第2の値を第1の値に変換する第2の演算である。
このように、本実施形態では、CPU11は、第1の実施形態と同様に、乱数RNに基づいて、N回の処理ステップ中に逆演算処理とその逆演算処理に対応する通常演算を挿入する1以上の位置と段数を決定して、暗号処理の処理ステップを制御する。
【0049】
従って、本実施形態の暗号処理装置によれば、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有する暗号処理回路を実現することができる。
【0050】
なお、以上の例は、AESの暗号処理で説明したが、暗号処理は、AES以外の暗号処理でもよく、さらに、以上の例では、各ステップの処理内容は同じであるが、各ステップの処理内容が異なっていてもよい。
【0051】
(第3の実施形態)
次に第3の実施形態について説明する。第1及び第2の実施形態では、電力解析攻撃の耐性を有する暗号処理装置が開示されたが、本実施形態の暗号処理装置は、電力解析攻撃の耐性を有するだけでなく、故障印加攻撃の耐性も有する。すなわち、本実施形態によれば、暗号処理のステップすなわちラウンド中に、逆演算処理をランダムに挿入することによって電力解析攻撃の耐性を有すると共に、ICチップにレーザ照射、ノイズ供給等を与える故障印加攻撃の耐性を有する暗号処理装置が提供される。
【0052】
故障印加攻撃は、暗号処理の途中に何らかの故障を引き起こし、処理途中の結果に誤りを起こさせる。その解析方法は、誤ったデータに対して暗号処理が行われた結果を取り出して多数収集し、その多数のデータを解析することによって暗号鍵を取り出す方法である。
【0053】
従来のダミー演算を行う暗号演算装置では、ダミー処理中に故障が印加された場合は、演算結果に影響を及ぼさないが、ダミー演算ではない通常の暗号処理中に故障が印加された場合は、誤ったデータを用いて暗号処理が行われる。よって、ダミー演算の挿入は、ダミーデータ等の処理中に故障印加がされる場合があるので、故障印加攻撃に対しては、故障の発生確率を低下させることができるという効果はある。しかし、故障印加の回数を増やすことにより、多数の演算結果を得れば、秘密情報の解析が可能になるという問題がある。
【0054】
故障印加攻撃の場合、暗号処理装置による最終的に出力された結果データが利用される。そこで、本実施形態の暗号処理装置は、故障印加攻撃を受けたことを検出して、例えば暗号処理を中止するように構成される。その結果、解析者は、暗号処理の結果データが出力されないため、暗号鍵等を取り出して解析することができない。
【0055】
図9は、本実施形態に係る暗号処理装置1Bの構成を示す構成図である。図9において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図9に示すように、I/F17に、アラームデータとしてのフラグデータを保持するフラグレジスタ17aが設けられている。
【0056】
なお、本実施形態では、レジスタ17aは、I/F17に設けられているが、I/F17以外の箇所に設けてもよいし、RAM13内の所定の領域をそのレジスタの代わりに利用してもよい。
【0057】
図10は、本実施形態に係る暗号回路モジュール15Bの構成を示すブロック図である。図10において、図2の暗号処理モジュール15と同じ構成要素については同じ符号を付して説明は省略する。
【0058】
暗号処理モジュール15Bの制御回路23Bは、ラウンドレジスタ33を有する。ラウンドレジスタ33は、逆演算が挿入される直前のラウンドすなわちステップを記憶するレジスタである。制御部としての制御回路23Bは、逆演算が挿入されると、その直前のラウンド値をラウンドレジスタ33に記憶する。例えば、ラウンド3の後に、逆演算処理が挿入された場合、制御回路23Bは、ラウンド3の値「3」をラウンドレジスタ33に格納する。
【0059】
さらに、暗号処理モジュール15Bは、レジスタ41と比較器42を含む。レジスタ41には、セレクタ25の出力が入力され、制御回路23Bからの制御信号CS1に応じて、セレクタ25の出力データが格納される。
【0060】
制御部としての制御回路23Bは、乱数発生回路18において発生した乱数RNに基づいて、暗号処理において複数回実行される暗号化演算あるいは復号化演算の中に挿入する、1以上の逆演算とそれに対応する通常演算の位置と段数を決定し、暗号化回路21と復号化回路22の実行を制御する。
【0061】
制御信号CS1は、逆演算処理の挿入のタイミングに基づいて生成され、セレクタ25のデータは、その制御信号CS1のタイミングに応じて、レジスタ41に格納される。例えば、ラウンド3の後に、逆演算処理が挿入される場合、逆演算処理が実行される前のラウンド3の結果データが記憶されるように、制御信号CS1が出力される。
【0062】
制御部としての制御回路23Bは、ラウンド制御カウンタ(RCNT)31の値とラウンドカウンタ33の値とを比較する比較する回路を有する。制御回路23Bでは、そのラウンドカウンタ(RR)33にラウンドの値が保持されると、その後、ラウンド制御カウンタ(RCNT)31の値と、ラウンドカウンタ33の値とを比較し、一致するか否かを判定する。
【0063】
また、比較器42は、制御回路23Bからの制御信号CS2に基づいて、2つのレジスタ26と41に格納されている2つのデータを比較する。比較器42は、2つのデータが不一致の場合、アラーム信号としての不一致検出信号IDSを出力する。
【0064】
比較器42が2つのデータを比較するタイミング、すなわち制御信号CS2が出力されるタイミングは、ラウンドレジスタ33とラウンド制御レジスタ31の値が一致したときである。すなわち、制御回路23Bは、逆演算が始まったときにレジスタ41に保存された、その逆演算の前のラウンドの結果データと、その保存した結果データのラウンドと同じラウンドが実行されたときの結果データとが比較されるように、制御信号CS2を出力する。
【0065】
比較器42の検出信号IDSは、I/F17のフラグレジスタ17aに例えばフラグデータとして「1」を書き込む信号として出力される。そのフラグレジスタ17aのデータは、CPU11によって監視される。CPU11は、フラグデータが「1」となると、暗号回路モジュール15Bをその動作を停止するように制御する。あるいは、CPU11は、暗号回路モジュール15Bの実行後に、フラグレジスタ17a又はRAM13内のフラグデータの値を確認することによって、故障印加攻撃があったか否かを判断することができる。
【0066】
図11は、本実施形態の比較器42が比較するタイミングを説明するための図である。図11において、時刻t1、t2、t3、t5、t6、t7、t10において通常演算が実行され、時刻t4、t8、t9において逆演算が実行されている。例えば、ラウンドに対応するステップ3の後に、時刻t4のタイミングで、1回の逆演算処理が挿入され、ステップは、その逆演算処理の後に時刻t5のタイミングでステップ3に戻っている。ステップ3の結果データは、時刻t3、t5、t9の実行結果に現れ、ステップ4の結果は、時刻t6、t8、t10の実行結果に現れている。
【0067】
よって、後述するように、例えば、時刻t3のステップ3の結果データをレジスタ41に格納しておき、同じステップ3の結果が現れたときの結果データと比較することによって、その間に故障が発生していなければ両者は一致し、故障が発生していれば両者は一致しない。すなわち、両者を比較することによって、故障が検知される。
【0068】
ラウンド制御カウンタ(RCNT)33の値は、1,2,3,2,3,・・と変化している。ラウンドカウンタ(RR)33は、最初の逆演算処理が挿入される直前のステップ(ここでは最初のステップ3)の値が保持される。
【0069】
制御回路23Bは、時刻t5のタイミングで、ラウンド制御カウンタ(RCNT)31の値とラウンドカウンタ33の値とが一致したことを検出し、そのタイミングで、制御信号CS2を生成して比較器42に出力する。
【0070】
例えば、時刻t3とt5の間に、暗号処理装置1Bが故障印加攻撃を受けていた場合、1回目と2回目のステップ3の暗号処理の結果データは異なる場合がある。よって、比較器42は、その不一致を検出して、検出信号IDSを出力する。
【0071】
図11の場合、最初のステップ5の後に、2段の逆演算処理が挿入されている。この場合は、時刻t7のタイミングでラウンドカウンタ(RR)33がラウンドの値「5」を保持し、その後ラウンド制御カウンタ(RCNT)31が「5」になったときに、レジスタ26とレジスタ41の値が、同様に比較される。よって、この場合も、時刻t7からt11の間に、暗号処理装置1Bが故障印加攻撃を受けて、1回目と2回目のステップ5の暗号処理の演算結果データは異なっていれば、比較器42は、その不一致を検出して、検出信号IDSを出力する。
【0072】
比較器42の検出信号IDSは、例えば、制御回路23Bに供給され、あるいはI/F17を介してCPU11に供給される。制御回路23BあるいはCPU11は、検出信号IDSを受信すると、暗号回路モジュール15Bにおける暗号処理を中止させることができる。そのようにすれば、暗号処理の最終結果が出力されない。よって、暗号処理装置において最終結果が出力されなければ、故障印加攻撃に対して有効である。
なお、検出信号IDSは、CPU11への割り込み信号として供給するようにしてもよい。
【0073】
さらになお、以上の例では、逆演算の挿入タイミングに応じて、ラウンドの値を保持し、かつ結果データも記憶するようにしていたが、ラウンド毎の結果データを全てあるいはランダムに保持するようにして、保持した結果データの中において、同じラウンドにおける結果データに不一致があるか否かを検出するようにしてもよい。
【0074】
例えば、図11において、ラウンド2は2回発生している。また、ラウンド3と4は、3回発生している。よって、ランダムに保持された結果データの中で、同じラウンドの結果データが2つ以上あれば、それらの結果データを比較し不一致があるか否かを検出するようにしてもよい。例えば、図11では、ランダムに保持された結果データの中に、ラウンド3の結果データとして、時刻t3とt9の結果データがあれば、それらが比較される。
【0075】
あるいは、乱数によって決定したラウンドの結果データを保持し、その後、その決定されたラウンドと同じラウンドが現れたら、そのデータと保持された結果データとの比較を行うようにしてもよい。
【0076】
以上のように、本実施形態の暗号処理装置は、レジスタ41に暗号処理の途中データを保持しておき、再びそのステップを実行したときに、その結果データとその途中データとを比較することによって、暗号処理中に故障が発生したことを検出する。すなわち、制御回路23Bは、逆演算の直前の値と、逆演算(及びその逆演算に対応する通常演算)の演算結果の値とを比較し、両者が一致しない場合は、暗号演算処理部における暗号処理の実行を中止する。
【0077】
従って、本実施形態の暗号処理装置は、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有することができる。
【0078】
さらに、本実施形態の暗号処理装置は、同じラウンドの暗号処理の2つの結果データが異なるか否かを検出する。それら2つの結果データが異なる場合、暗号処理演算を中止させるようにすれば、暗号処理の最終結果が、すなわち例えば平文に対する暗号文が、出力されないので、本実施形態の暗号処理装置は、故障印加攻撃に対して耐性を有することができる。
【0079】
なお、本実施形態は、ハードウエア回路で実現する例で説明したが、第2の実施形態のように、暗号演算がソフトウエアによって実現される場合は、上述した比較器等の機能はソフトウエアにより実現することができる。従って、本実施形態の暗号処理装置は、ソフトウエアによっても実現することが可能である。
【0080】
(第4の実施形態)
本実施形態は、1つの暗号処理部を有する暗号処理装置の例である。ここでは、DESを用いた暗号処理部の例で説明する。
図12は、本実施形態の暗号処理装置の暗号回路モジュール15Cの構成を示すブロック図である。図12において、図10の暗号処理装置と同じ構成要素については同じ符号を付し説明は省略する。
暗号回路モジュール15Cは、制御回路23Cと、暗号処理回路51と、2つのレジスタ26,41と、比較器42とを含む。
【0081】
暗号処理回路51は、制御回路23Cからの制御信号CS11に基づいて、暗号化演算あるいは復号化演算のいずれかの暗号処理を実行する。暗号処理回路51が、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部を構成する。暗号処理回路51は、DESのラウンド関数部を含み、そのラウンド関数部は、スクランブル部と鍵スケジュール部を含む。スクランブル部は、f関数部及び排他的論理和部を含む。暗号処理回路51の出力は、レジスタ26に出力され、レジスタ26に保持された結果データが再び暗号処理回路51の入力データとなって、16回のラウンド処理が繰り返される。
【0082】
制御部としての制御回路23Cは、ラウンド制御カウンタ31、ラウンド制御部32及びラウンドカウンタ33を含む。制御回路23Cは、ラウンド制御部32によってラウンド制御カウンタ31を増減させながら、暗号処理回路51に対して、暗号化演算あるいは復号化演算の暗号処理を実行させる。制御回路23Cは、入力された乱数RNに基づいて、その途中に、逆演算である復号化演算あるいは暗号化演算を挿入するための鍵の挿入指示信号と、f関数部と排他的論理和部への2つの入力データの入れ替えを行わないように切り替える切替制御信号を出力する。
【0083】
すなわち、制御回路23Bは、暗号処理回路51に、逆演算処理のための鍵の挿入指示信号と、切替制御信号とを含む制御信号CS11を供給することによって、暗号処理回路51に、途中に逆演算を挿入しながら暗号化演算と復号化演算のいずれかの暗号処理を実行させる。
【0084】
レジスタ41には、逆演算の直前のラウンドの結果データが保持される。制御回路23Bは、ラウンド制御カウンタ31の値が、ラウンドレジスタ33の値と一致すると、制御信号CS2を比較器42に出力する。比較器42は、逆演算直前の結果データと、そのラウンドが逆演算直前のラウンドと同じラウンドに戻ったとき結果データ(レジスタ26のデータ)とを比較して、不一致があれば、不一致信号IDSを出力するようになっている。
【0085】
図13は、DESのアルゴリズムを示す図である。DESアルゴリズムは、初期転置(IP)、最終転置(FP)、鍵演算(右側)とデータ演算(左側)とで構成される。初期転置と最終転置は、お互いに逆演算の関係にある。データ演算は、同一の演算が繰り返し実行される。図13では、ラウンド1(R1)から16(R16)までが示されている。DESの復号化演算では、データ演算は、同じ演算であるが、鍵演算が暗号化演算の過程とは逆の過程で実行される。すなわち、鍵データKは、暗号化演算の場合は、ラウンド1からラウンド16まで、K1,K2,K3,・・・,K16の順で生成されてf関数部に与えられるが、復号化演算の場合は、ラウンド1からラウンド16まで、K16,K15,K14,・・・,K1の順で生成されてf関数部に与えられる。
【0086】
通常の演算では、図13に示すように、f関数部の左右の2つのデータを入れ替える操作が行われるが、暗号演算から復号演算に変化するときに、左右の入力データの入れ替えを行わずに処理することで逆演算を実現することができる。
【0087】
図14は、DESのアルゴリズムの一部を示し、暗号化演算の中に逆演算が挿入された例を示す図である。図14において、あるラウンドに相当するステップ1(S1)から、そのステップ1に続くステップ2(S2)、ステップ3(S3)、・・・ステップ7(S7)が示されている。ここでは、S3の後に、2段の逆演算が挿入されている。
【0088】
S1,S2,S3,S6,S7は暗号処理((Enc)が、そしてS4,S5は復号処理(Dec)が行われている。S4において、S3と同じ鍵データKI+2が使用された結果、S4の結果データは、S2の結果データと同じになっている。
【0089】
さらに、S4に続くS5において、S2と同じ鍵データKI+1が使用された結果、S5の結果データは、S1の結果データと同じになっている。S5に続くS6において、S2と同じ鍵データKI+1が使用された結果、S6の結果データは、S4及びS2の結果データと同じになっている。
【0090】
そして、S7において、S3と同じ鍵データKI+2が使用されるので、S7の結果データは、S3の結果データと同じになっている。
【0091】
ここで、S4とS6では、切替制御信号によって、f関数部と排他的論理和部への入力データの入れ替えが行わないように切り替えられている。
【0092】
図15は、図14のS1〜S7までの処理の流れを示す図である。ここでは、2段の逆演算が挿入され、鍵データは、KI,KI+1,KI+2,KI+2,KI+1,KI+1,KI+2というように変化している。
【0093】
以上のように、本実施形態の暗号処理装置は、DES演算において、暗号化演算中に逆演算(復号化演算)を挿入でき、あるいは復号化演算中に逆演算(暗号化演算)を挿入でき、その結果、処理時間が変化し、電力解析に対して耐性を持たせることが可能となる。
【0094】
さらに、第3の実施形態と同様に、逆演算を挿入する直前のラウンドとそのときのデータを保持し、その後の同じラウンドのデータと比較して、不一致の検出信号IDSを出力するので、故障印加攻撃に対して耐性を有する暗号処理装置を実現することができる。
【0095】
なお、逆演算後、逆演算直前の結果データに戻る処理が行われればよいので、逆演算に用いる鍵データは、逆演算直前のステップに用いられた鍵データと同じもでなくてもよい。
【0096】
図14の例では、暗号処理部51のf関数部への鍵データの供給の方法は、2段の逆演算が1回挿入されている。そして、逆演算のための鍵データは、その逆演算直前のステップの結果データに戻るように、逆演算直前のステップに用いられた鍵データである。図14の場合であれば、S4の鍵データは、S3で用いられた鍵データと同じである。さらに、そのS4の結果データは、S2の結果データと同じになるので、S5の鍵データは、S2で用いられた鍵データと同じである。そして、S6の結果データが、S4の結果データと同じとなり、S7の結果データが、S3の結果データと同じとなるように、S6とS7の鍵データは、それぞれS5とS4の鍵データと同じである。
【0097】
また、1段の逆演算処理が1回挿入される場合、上記のように逆演算処理直前のステップの演算処理の前の結果データに戻るようにするには、逆演算処理のための鍵データとそれに続く演算処理のための鍵データは共に、逆演算直前のステップに用いられた鍵データとなる。例えばS2の後に逆演算処理を挿入する場合、鍵データは、K1,K2,K2,K2,K3,K4、・・となる。
【0098】
しかし、逆演算処理のための鍵データとそれに続く演算処理のための鍵データが同じであれば、逆演算処理直前のステップに用いられた鍵データと異なっていてもよい。例えば、S2の後に逆演算処理を挿入する場合、鍵データは、K1,K2,K5,K5,K3,K4、・・でもよい。このように鍵データを挿入しても、逆演算処理直前おステップの結果データに戻るので、問題はない。
【0099】
(変形例)
次に上述した3つの実施形態の変形例を説明する。
上述した各実施形態では、入力された初期値INdに対する暗号処理を実行する場合に、その暗号処理の中に、1以上の逆演算が1以上の段数をもって挿入されている。しかし、本第1の変形例では、入力された初期値INdに対する暗号処理の前に、入力された初期値INdに対して、通常演算とその逆演算を組み合わせた前処理が挿入される。
【0100】
本変形例の前処理では、乱数RNに基づいて決定された鍵データと、乱数RNに基づいて決定された通常演算と逆演算を組み合わせた処理が実行され、その実行結果が入力された初期値INdと同じになったら、暗号処理装置は、前処理を終了して、上述した各実施形態の暗号処理を実行する。
【0101】
さらに、加えて、上述した各実施形態の暗号処理が終了したら、その時の結果データ(最終結果データ)に対して、通常演算とその逆演算を組み合わせた処理である後処理が挿入される。後処理では、乱数RNに基づいて決定された鍵データと、乱数RNに基づいて決定された通常演算と逆演算の組み合わせた処理が実行され、その実行結果が、最終結果データと同じになったら、暗号処理装置は、後処理を終了する。
【0102】
図16は、第1の変形例の動作を説明するための図である。図16では、DESの暗号処理の前処理において、入力された初期値INdに対して、乱数RNに基づいて決定された鍵データK8,K9と、乱数RNに基づいて決定された通常演算と逆演算の組み合わせた処理が実行されている。そして6回のステップの後に、初期値INdと同じデータになったので、前処理は終了して、暗号処理が実行されている。
【0103】
具体的には、図16において、鍵データK8は、第8ラウンドで用いられるラウンド鍵である。また、右上がりの矢印は通常演算である暗号演算、右下がりの矢印は逆演算である復号演算を実行していることを表している。点線で囲まれた部分は、暗号処理とは異なる演算が実行されている部分を表している。左側の点線で囲まれた部分は、暗号処理開始前に行われる前処理部分、中央部下の点線で囲まれた部分は、暗号処理中に行われる逆演算と通常演算の挿入部分、右側上部の点線で囲まれた部分は、暗号処理終了時に行われる後処理部分、右側下部の点線で囲まれた部分は、暗号処理終了後に行われる後処理部分である。
【0104】
電力解析では、一般的に最初のラウンドと最後のラウンドが解析の対象となる。よって、本変形例では、最初と最後のラウンドに関して、開始あるいは終了の状態が変化する。通常の暗号処理は、同じ演算(ラウンド)の繰り返しで実現されているが、このとき、各ラウンドでは、別々の鍵(ラウンド鍵)が用いられている。
【0105】
図16では、暗号処理において、第一のラウンドで用いられる鍵として、他の鍵を用いて演算を行う。図16に示した動作例では、最初にラウンド8の鍵を用いて通常演算(暗号化演算)を行い、続いて、ラウンド9の鍵で通常演算、ラウンド9の鍵で逆演算(復号化演算)、ラウンド9の鍵で通常演算、ラウンド9の鍵で逆演算、ラウンド8の鍵で逆演算が行われている。これらの処理の結果、結果データは元のデータに戻る。次の演算で、ラウンド1の鍵を用いて通常演算(暗号化演算)を開始して、暗号処理が開始される。すなわち、ラウンド1の鍵を用いる前に、鍵が異なるだけで、鍵以外の処理は同じ演算が行われるため、ラウンド1の鍵を用いた暗号処理の開始時の結果データを変化させることができる。
【0106】
暗号処理が終了した後、後処理において、最終結果データに対して、乱数RNに基づいて決定された鍵データK17,K16,K7,K6,K5と、乱数RNに基づいて決定された演算処理と逆演算処理の組み合わせ処理が実行されている。そして10回のステップの後に、最終結果データと同じデータになったので、後処理は終了している。
【0107】
具体的には、暗号処理終了時にも、本来の鍵とは異なる鍵で通常演算と逆演算を同じ回数繰り返すことによって、最終ラウンドの終了時の結果データを変化させることが可能となる。さらに最終ラウンドの処理に続いて、暗号アルゴリズムには定義されていないラウンド鍵を用いて通常演算とその後に逆演算を行うことにより、さらに処理時間を可変にすることが可能となる。
【0108】
以上のように、第1の変形例では、制御部は、暗号処理の前と後の少なくとも一方に、少なくとも1回の連続した逆演算(及びその逆演算に対応する通常演算)を挿入する。
【0109】
これによって、暗号処理の処理時間が変化するとともに、前処理と後処理を挿入することによって、暗号処理の開始時刻および終了時刻を可変にすることができ、電力解析に対してより耐性を高めることが可能となる。
【0110】
次に、第2の変形例について説明する。上述した各実施形態の暗号処理装置は、乱数発生回路18を有しているが、本変形例暗号処理装置は、乱数発生回路が発生する乱数RNにより決定される通常演算の実行される確率が調整される確率調整部を有する。
【0111】
上述した各実施形態の暗号処理装置の乱数発生回路は、逆演算処理が挿入される確率は、50%となる。例えば、乱数を発生させて、その乱数に基づいて「1」と「0」のそれぞれの発生確率が、50%とすると、暗号処理中に逆演算がランダムに挿入されるため、暗号処理装置の要求される処理時間内に暗号処理が終了しない場合が発生する虞がある。
【0112】
そこで、本第2の変形例では、逆演算が実行される確率よりも、暗号処理が実行される確率を上げるようにして、暗号処理装置の実行時間を所定の時間内に収めることができるようにした。
【0113】
そのため、乱数発生回路の発生する乱数の発生確率を調整するための確率調整部が、乱数発生回路内に、あるいは乱数発生回路とは別に設けられる。
図17から図19は、確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化を示す図である。図20は、本第2の変形例に係る暗号処理装置1Dの構成を示す図である。図20において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図20では、確率調整部18aは、乱数発生回路18に接続されて、確率調整信号Pcを供給している。確率調整部18aからの確率調整信号Pcに基づいて、乱数発生回路18の発生する乱数RNの逆演算の発生確率あるいは暗号処理の実行確率が変更される。言い換えれば、確率調整部18aは、乱数発生回路18の発生する乱数RNによって決定される第1の演算(逆演算)及び第2の演算(その逆演算に対応する通常演算)の実行確率を調整する。
【0114】
図17は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高い一定値になっていることを示している。乱数RNによって決定される所定の値に応じて、暗号処理が実行されるか、あるいは逆演算(およびその逆演算に対応する通常演算)が実行されるとする。その場合、例えば、所定の値が「1」のときには、暗号演算の実行が指示され、所定の値が「0」のときには、逆演算の挿入が指示されるとする。この場合に、所定の値「1」の発生確率を、0.5よりも高くすると、暗号処理の実行確率が、0.5よりも高くなるので、暗号処理装置の暗号処理が所定の時間内に終了する確率が高くなる。所定の値「1」の発生確率は、暗号処理の要求される処理時間が短くなればなるほど、高く設定される。このような方法を用いれば、暗号処理装置は、終了時間が確率的に変化するため、電力解析に対して耐性が高くなる。
【0115】
図18は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高く、かつ所定の制限時間に近くなると、高くなっていることを示している。特に、暗号処理の実行確率が、その制限時間の直前のある期間では、1.0になっている。このように、暗号処理の実行確率が、所定の制限時間に近づくにつれて高くなり、さらに制限時間の直前では、1.0になっているので、暗号処理装置の暗号処理を、所定の時間内に確実に終了させることができる。
【0116】
このように、暗号処理装置の処理時間に制限値を設けられている場合、その制限時間に近づくに従って、発生確率を大きくすると、制限時間に近づくにつれて、暗号処理の発生確率が大きくなるため、終了時間を制限時間に近づけることが可能となる。また、残りステップ数が制限時間で処理できる限界に達したときに発生確率を1.0とすれば、処理時間を確実に制限時間以内に収めることが可能となる。
【0117】
図19は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高く、かつ暗号処理の前半と後半の間の途中期間において、高くなっていることを示している。特に、暗号処理の実行確率が、その途中期間では、1.0になっている。このように、暗号処理の実行確率が、途中期間で高くなっているので、暗号処理装置の暗号処理を、所定の時間内に確実に終了させることができ、かつ前半と後半では逆演算処理が実行される確率が比較的高くなるので、電力解析に対する耐性も高めることができる。
【0118】
具体的には、暗号処理の開始時および演算終了時は、暗号処理の実行確率を小さくし、それ以外のときでは、0.5より大きくなっている。通常、暗号処理に対する電力解析においては、暗号処理の開始時と終了時が攻撃の対象となる。従って、開始時と終了時には暗号処理の実行確率を0.5に近づけることで、開始時と終了時の逆演算の発生確率を高くし、暗号処理の開始時及び終了時をわかりにくくすることが可能となる。
【0119】
以上のように、確率調整部18aは、暗号処理の処理時間が所定の時間内に終了するように、暗号演算処理部において実行される暗号処理が暗号化演算の場合は、暗号化演算の実行確率が、逆演算である復号化演算(及びその逆演算に対応する通常演算)の実行確率よりも高くなるように、暗号処理が復号化演算の場合は、復号化演算の実行確率が、逆演算である暗号化演算(及びその逆演算に対応する通常演算)の実行確率よりも高くなるように、暗号処理の実行確率あるいは逆演算(及びその逆演算に対応する通常演算)の実行確率を調整する。
【0120】
次に第3の変形例について説明する。
上述した各実施形態及び各変形例によれば、暗号処理中に逆演算処理を挿入することによって、ダミー演算を用いなくても電力解析攻撃への耐性を有する暗号処理装置を実現することができる。従って、従来のようなダミー演算のためのレジスタ回路を設けなくても、暗号処理時間が変化し、電力解析に対して耐性を持たせることが可能となる。
【0121】
しかし、チップ上にレジスタ回路を搭載する余裕があって回路規模が問題にならない場合もある。
そのような場合には、ダミー演算用のレジスタ回路を設け、かつ上述した各実施形態及び各変形例に係る暗号処理にダミー演算も加えるようにすれば、より電力解析に対する耐性を高めることができる。
【0122】
その場合、図20において点線で示すように、暗号回路モジュール15内に、レジスタ回路15aが設けられる。そして、乱数RNに基づいて、逆演算(及びその逆演算に対応する通常演算)の挿入と、ダミー演算の挿入とが行われる。
【0123】
図21は、逆演算とダミー演算が組み合わされた場合のステップの時間に対する変化の例を示すグラフである。図21に示すように、ランダムに、逆演算とダミー演算が挿入されるので、より電力解析に対する耐性を高めることができる。図6と同様に、図21において、横軸は時間、縦軸はステップを示し、右上がりは通常演算、右下がりは逆演算が行われたことを示し、黒丸はダミー演算が行われたことを示す。
【0124】
なお、上述した実施の形態及び各変形例では、各暗号処理装置として、ICカードの例を挙げて説明したが、他の機器でもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【0125】
1、1B、1D 暗号処理装置、11 CPU、12 ROM、13 RAM、14,17 インターフェース、15、15B、15C 暗号回路モジュール、16 バス、18 乱数発生回路、18a 確率調整部、21 暗号化回路、22 復号化回路、23,23B、23C 制御回路、24,25 セレクタ、15a、26,41 レジスタ、31 ラウンドカウンタ、32 ラウンド制御部、33 ラウンド制御カウンタ、42 比較器
【技術分野】
【0001】
本発明の実施形態は、暗号処理装置に関する。
【背景技術】
【0002】
従来より、暗号処理装置で消費される電力から暗号処理装置で用いられる秘密情報を取り出す電力解析という方法がある。このような解析方法への対策として、例えばDES(Data Encryption Standard)演算中にダミーのDES演算を挿入するという技術がある。ダミー演算処理を挿入することによって、暗号処理装置に電力解析の耐性を持たせるものである。
【0003】
しかし、暗号処理装置において、演算の途中においてダミー演算処理を実行させるためには、ダミー演算のためのデータあるいはダミー鍵を保持するレジスタ回路が必要となる。また、ダミー演算サイクルでは、正規の途中結果を保存するレジスタの内容が変化しないことから消費電力は他のサイクルよりも小さくなる傾向があり、これによりこのサイクルがダミー演算サイクルであると識別されればダミー演算処理の挿入が無効化されてしまうため、ダミー演算処理の挿入以外にも電力解析攻撃への耐性を高めた暗号処理装置の開発が望まれている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−25366号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本実施形態は、ダミー演算を用いなくても電力解析攻撃への耐性を有する暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【0006】
実施形態の暗号処理装置は、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部と、制御部を有する。制御部は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、暗号演算処理部の実行を制御する。
【図面の簡単な説明】
【0007】
【図1】第1の実施形態に係わる暗号処理装置1の構成を示す構成図である。
【図2】第1の実施形態に係わる暗号回路モジュール15の構成を示すブロック図である。
【図3】従来のダミー処理を含まない場合の処理状況を示すタイミングチャートである。
【図4】従来のダミー処理を含む場合の処理状況を示すタイミングチャートである。
【図5】第1の実施形態の逆演算処理を用いた場合の処理状況を示すタイミングチャートである。
【図6】第1の実施形態の暗号処理のステップの時間に対する変化の例を示すグラフである。
【図7】第2の実施形態に係る暗号処理装置1Aの構成を示す構成図である。
【図8】第2の実施形態に係る、CPU11が乱数RNに基づいて、暗号処理の実行ステップを決定して実行する場合の処理の流れの例を示すフローチャートである。
【図9】第3の実施形態に係る暗号処理装置1Bの構成を示す構成図である。
【図10】第3の実施形態に係る暗号回路モジュール15Bの構成を示すブロック図である。
【図11】第3の実施形態に係わる比較器42が比較するタイミングを説明するための図である。
【図12】第4の実施形態の暗号処理装置の暗号回路モジュール15Cの構成を示すブロック図である。
【図13】第4の実施形態のDESのアルゴリズムを示す図である。
【図14】第4の実施形態のDESのアルゴリズムの一部を示し、暗号化演算の中に逆演算が挿入された例を示す図である。
【図15】図14のS1〜S7までの処理の流れを示す図である。
【図16】第1の変形例の動作を説明するための図である。
【図17】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第1の例を示す図である。
【図18】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第2の例を示す図である。
【図19】第2の変形例に係る確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化の第3の例を示す図である。
【図20】第2の変形例に係る暗号処理装置1Dの構成を示す図である。
【図21】第3の変形例に係る逆演算処理とダミー演算処理が組み合わされた場合のステップの時間に対する変化の例を示すグラフである。
【発明を実施するための形態】
【0008】
以下、図面を参照して実施形態を説明する。
【0009】
(第1の実施形態)
(構成)
まず、図1に基づき、本実施形態に係わる暗号処理回路が搭載される暗号処理装置の構成を説明する。図1は、本実施形態に係わる暗号処理装置1の構成を示す構成図である。
【0010】
暗号処理装置1は、中央処理装置(CPU)11と、プログラム等を記憶したROM12と、CPU11の作業用記憶領域としてのRAM13と、外部とのデータの送受信を行うための送受信インターフェース回路(以下、送受信I/Fと略す)14と、暗号処理回路を含む暗号回路モジュール15と、暗号回路モジュール15とバス16との暗号回路I/F17と、乱数を発生する回路である乱数発生回路18を含んで構成されている。CPU11、ROM12、RAM13、送受信I/F14及び暗号回路I/F17は、バス16を介して互いに接続されている。
【0011】
暗号処理装置1は、例えば、IC(Integrated Circuit)カードであり、カードリーダ装置等の外部装置(図示せず)からのデータを受信すると、そのデータに対して所定の暗号処理を施し、その暗号処理結果のデータを出力又は送信する。暗号処理は、暗号化演算あるいは復号化演算を意味する。外部装置とのデータの送受信は、送受信I/F14を介して、例えば、図示しない無線通信用の回路を介して無線通信により行われる。
【0012】
また、CPU11と暗号回路モジュール15間で送受信されるデータも、暗号化される。
暗号回路モジュール15は、2つの暗号演算回路を含み、暗号化及び/又は復号化の演算を実行する。本実施形態の暗号演算回路は、AES(Advanced Encryption Standard)のラウンド関数を用いた回路である。AESのラウンド関数にはデータ入力の他に、各ラウンドに入力されるラウンド鍵(拡大鍵)が、鍵データとして入力される。
乱数発生回路18は、乱数を生成して出力する回路である。
【0013】
図2は、暗号回路モジュール15の構成を示すブロック図である。暗号回路モジュール15は、暗号化回路21と、復号化回路22と、制御回路23と、セレクタ24,25と、レジスタ26とを含む暗号処理装置である。
【0014】
暗号化回路21は、入力されたデータに対して所定のAESの暗号化演算を実行する回路であり、復号化回路22は、入力されたデータに対して所定のAESの復号化演算を実行する回路である。暗号化回路21と復号化回路22が、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部を構成する。
【0015】
暗号化演算の場合、暗号化回路21は、所定の回数だけ、例えば11回、動作する。復号化処理の場合、復号化回路22は、所定の回数だけ動作する。復号化回路22による復号化演算は、暗号化回路21による暗号化演算の逆演算に対応し、暗号化回路21による暗号化演算は、復号化回路22による復号化演算の逆演算に対応する。なお、暗号処理に用いられる鍵データ等の秘密情報は、図示しない不揮発性メモリに記憶されている。
【0016】
制御回路23は、暗号化回路21と復号化回路22を制御する制御部である。制御回路23には、暗号化を行うのか復号化を行うのかを指示する信号が入力され、その指示に応じて、暗号化回路21と復号化回路22に暗号化演算あるいは復号化演算を実行させる。制御回路23は、セレクタ24に対して、暗号化回路21の出力信号を用いるのか、復号化回路22の出力信号を用いるのかを指示する選択信号SL1をセレクタ24に供給する。制御回路23は、セレクタ25に対して、初期値INdを用いるのか否かを指示する選択信号SL2をセレクタ25に供給する。
【0017】
暗号化回路22と復号化回路23の2つの出力信号は、セレクタ24に入力される。セレクタ24は、制御回路23からの制御信号すなわち選択信号SL1に応じて、入力された2つの出力信号の一方を選択して出力する。例えば、暗号化演算が行われる場合、制御回路23は、暗号化回路22の出力を選択する。
【0018】
セレクタ24の出力信号は、セレクタ25の一方の入力端に入力される。セレクタ25の他方の入力端には、初期値INdが入力される。初期値INdは、暗号化する平文あるいは復号化する暗号文である。セレクタ25は、暗号処理の初期値INdに対する処理が行われるときのみに、初期値INdを選択して出力する。
【0019】
セレクタ25の出力は、レジスタ26に供給されて保持される。レジスタ26に保持されるデータは、暗号化回路21と復号化回路22に、入力データとして供給される。
I/F17を介して入力された初期値INdは、最初にレジスタ26に格納された後に、暗号化演算あるいは復号化演算が開始されると、セレクタ25では選択されない。暗号化演算あるいは復号化演算が開始されると、セレクタ25は、セレクタ24の出力を選択して、暗号化演算あるいは復号化演算の結果データを出力する。よって、レジスタ26には、暗号化演算あるいは復号化演算の途中データ、あるいは最終的に暗号化された結果データあるいは復号化された結果データが格納される。レジスタ26のその結果データは、暗号回路モジュール15から、出力データとして、I/F17を介してバス16に出力されて、CPU11により処理することができる。
【0020】
制御回路23は、ラウンド制御カウンタ31と、ラウンド制御部32を有している。さらに制御回路23には、乱数発生部である乱数発生回路18からの乱数RNが入力される。
【0021】
ラウンド制御カウンタ31は、次に実行すべきラウンドをカウントする回路である。例えば、暗号処理のステップに応じたラウンド番号が、ラウンド制御カウンタ31に設定される。
【0022】
ラウンド制御部32は、乱数RNに応じて、ラウンド制御カウンタ31の値を変更する制御を行う回路である。すなわち、ラウンド制御部32は、入力された乱数RNの値に応じて、逆演算とその逆演算に対応する通常演算とを挿入する処理サイクル中の1以上の位置と、挿入する逆演算(及びその逆演算に対応する通常演算)の段数とを決定して、ラウンド制御カウンタ31の値を変更する。
【0023】
通常、ラウンド制御カウンタ31では、AESの場合、ステップS1からS11に対応するカウント値が、1ずつインクリメントされる。具体的には、ラウンド制御カウンタ31のカウンタ値は、1,2,3,4,5,6,7,8,9,10,11と変更するように、ラウンド制御部32は、ラウンド制御カウンタ31を制御する。
【0024】
しかし、本実施形態の場合、ラウンド制御部32は、入力された乱数RNに基づいて決定された1以上の位置と段数とに基づいて、ラウンド制御カウンタ31を増減させる。例えば、ラウンド制御部32は、ラウンド制御カウンタ31のカウンタ値を、1,2,3,2,3,4,5,6,7,8,7,6,7,8,9,10,11と変更する。この場合、制御回路23は、乱数RNを利用して、ラウンド3、8の後に、それぞれ1段と2段の逆演算と通常演算のセットが挿入されている。すなわち、制御回路23は、暗号処理において複数回実行される暗号化演算あるいは復号化演算の処理ステップ中に逆演算と、その逆演算の結果データを逆演算の前の値に戻す通常演算とを挿入する1以上の位置と段数を決定して、暗号処理のラウンドすなわち処理ステップを制御する。段数は、挿入される逆演算とその逆演算に対応する通常演算のそれぞれの1以上の回数である。
【0025】
(動作)
図3から図5は、本実施形態の暗号処理回路の動作を説明するための図である。図3は、従来のダミー処理を含まない場合の処理状況を示すタイミングチャートである。図4は、従来のダミー処理を含む場合の処理状況を示すタイミングチャートである。図5は、本実施形態の逆演算処理を用いた場合の処理状況を示すタイミングチャートである。図3から図5は、演算サイクル毎の演算の種類とレジスタに保存されるデータを示す。ここでは、1ラウンドの演算が1サイクルで実行される。
【0026】
図3の従来の通常の暗号処理では、最初の演算のサイクル1の暗号処理の結果データD0は、次のサイクル2の入力データとなり、その入力データに対して所定の暗号処理(暗号化演算あるいは復号化演算)Opが実行され、その出力データD1は、所定のレジスタに格納され、次のサイクル3の入力データとなる。以下、同様な暗号処理が繰り返される。
所定回数の暗号処理が実行されて、最終的に暗号されたデータあるいは復号化されたデータが、所定のレジスタに格納される。
【0027】
図4の従来のダミー処理を含む場合の暗号処理では、図3の通常の暗号処理中にダミー演算が途中に挿入される。所定のレジスタには、ダミー演算が実行される前のデータがそのまま保持される。よって、ダミー処理を含む場合の暗号処理は、図4に示すように、ダミー演算の実行サイクル分だけ全体の処理時間は、延びる。
【0028】
レジスタに保持されるデータは、図3の場合、各演算サイクルにおいて実行される暗号処理に対応するデータD1,D2,D3,D4,・・となるが、図4の場合は、データD0,D1,D1,D2,D2,D3,D4,D5,・・となる。
【0029】
図5の場合、例えば、初期値INdに対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。暗号化演算の場合、制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データが選択されて出力される。すなわち、サイクル1のタイミングで、暗号化回路21の出力が選択される。最初のサイクル1の出力データD0は、レジスタ26に保持され、次のサイクル2の入力データとなる。
【0030】
サイクル2においても、レジスタ26の出力データD0に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD1が選択されて、出力される。すなわち、サイクル2のタイミングでも、暗号化回路21の出力が選択される。出力データD1は、レジスタ26に保持され、次のサイクル3の入力データとなる。
【0031】
サイクル3においても、レジスタ26の出力データD1に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。サイクル3は、逆演算のサイクルである。よって、レジスタ26のデータD1に対して、暗号化演算の逆演算を実行する復号化回路22の出力データが、制御回路23からの選択信号SL1に基づいて、セレクタ24において選択されて、出力される。すなわち、サイクル3のタイミングで、復号化回路22の出力が選択される。その出力データは、データD1に対する逆演算の結果データであるので、データD0である。データD0は、レジスタ26に保持され、次のサイクル4の入力データとなる。すなわち、サイクル3は、逆演算のサイクルであるので、レジスタ26に出力されるデータは、サイクル2の1つ前のサイクル1の結果データD0となる。
【0032】
サイクル4においても、レジスタ26の出力データD0に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD1が選択されて、出力される。すなわち、サイクル4のタイミングで、暗号化回路21の出力が選択される。出力データD1は、レジスタ26に保持され、次のサイクル5の入力データとなる。
【0033】
サイクル5においても、レジスタ26の出力データD1に対して、暗号化回路21において暗号化演算が実行され、復号化回路22において復号化演算が実行される。制御回路23からの選択信号SL1に基づいて、セレクタ24では、暗号化回路21において生成された出力データD2が選択されて、出力される。出力データD2は、レジスタ26に保持され、次のサイクル6の入力データとなる。
【0034】
同様に、サイクル6では、データD2に対して逆演算Op−1を実行する復号化演算のデータD1がレジスタ26に格納される。サイクル7では、データD1に対して暗号化演算Opが実行されて、結果データとしてデータD2がレジスタ26に出力される。サイクル8では、同様に、データD2に対して暗号化演算Opが実行されて、結果データとしてデータD3がレジスタ26に出力される。
【0035】
結果として、レジスタ26に格納されるデータは、図5に示すように変化する。すなわち、レジスタ26に格納されるデータは、D0,D1,D0,D1,D2,D1,D2,D3,・・というように、ここでは、サイクル2の後に、1段の逆演算Op−1と通常演算Opが挿入され、サイクル5の後にも、1段の逆演算Op−1と通常演算Opが挿入されている。
【0036】
以上のように、暗号化処理の場合、あるデータDAに対して、暗号処理としての暗号化演算を実行すると、その結果データとしてデータDBが出力される。しかし、データDBに対して、暗号化演算の逆演算である復号化演算を実行すると、その結果データは、暗号化前のデータDAに戻る。そして、制御回路23が、乱数RNに基づいてランダムに決定した、逆演算を挿入する1以上の位置と段数とに応じた選択信号SL1を出力することによって、図5のような処理が実現される。
【0037】
以上は暗号化演算の場合で説明したが、復号化演算の場合も同様である。但し、復号化演算の場合の逆演算は、暗号化演算である。
【0038】
図6は、本実施形態の暗号処理のステップの時間に対する変化の例を示すグラフである。図6において、横軸は時間、縦軸はステップを示し、右上がりは通常演算、右下がりは逆演算が行われたことを示す。暗号処理が暗号化演算の場合、通常演算は暗号化演算であり、逆演算は復号化演算であり、暗号処理が復号化演算の場合、通常演算は復号化演算であり、逆演算は暗号化演算である。図6に示すように、AESの場合、11個の処理ステップが実行されるが、途中に、逆演算とその逆演算に対応する通常演算が挿入されている。よって、11個の処理ステップが途中で戻りつつ、進んで行く。その結果、通常演算の結果データとは異なるようにして、結果データが変化する。
【0039】
図6では、ステップ3の後、一旦ステップ2に戻ってからステップ3に戻っている。さらに、ステップ6の後、ステップ5に戻り、さらにステップ4まで戻ってから再びステップ5に戻り、さらにステップ6に戻るというように、処理が2段戻っている。ステップ8と10の後も、ステップ3のときと同様に、処理が1段戻っている。すなわち、本実施形態の暗号処理装置では、通常演算の途中に、逆演算がランダムに挿入され、通常演算のタイミングが変化すると共にデータの値も変化する。すなわち、そのデータの値の変化は、暗号処理される入力データもしくは暗号処理中の中間データである第1の値を第2の値の変換する第1の演算と、その第2の値を第1の値に変換する第2の演算とを少なくとも1回連続して行わせる処理による変化である。
【0040】
図6では、ステップ3に続くステップ2に戻る逆演算が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップ3に戻る通常演算が、第2の値を第1の値に変換する第2の演算である。
同様に、ステップ6から4に戻る2段の逆演算が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップ4から6に戻る2段の通常演算が、第2の値を第1の値に変換する第2の演算である。すなわち、制御回路23は、暗号演算処理部において実行される暗号処理が暗号化演算の場合は、逆演算である復号化演算を複数の回数連続して実行した後に、その複数の回と同じ回数の暗号化演算を実行するように暗号演算処理部を制御する。
【0041】
以上の説明は、暗号処理が暗号化演算の場合であるが、暗号処理が復号化処理の場合も同様である。第1の演算は、暗号処理が暗号化演算の場合は、暗号化演算の逆演算である復号化演算であり、暗号処理が復号化演算の場合は、復号化演算の逆演算である暗号化演算である。そして、第2の演算は、暗号処理が暗号化演算の場合は、暗号化演算であり、暗号処理が復号化演算の場合は、復号化演算である。
【0042】
以上のように、本実施形態によれば、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有する暗号処理回路を実現することができる。
【0043】
(第2の実施形態)
次に第2の実施形態について説明する。第1の実施形態では、暗号処理は、ハードウエアである回路により実行されているが、第2の実施形態は、暗号処理がソフトウエアプログラム(以下、単にソフトウエアという)により実行される点が、第1の実施形態と異なる。
【0044】
図7は、本実施形態に係る暗号処理装置1Aの構成を示す構成図である。図7において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図7に示すように、暗号処理装置1Aは、図1の暗号処理装置1におけるI/F17と暗号回路モジュール15を含まない。
【0045】
暗号処理装置1Aは、暗号処理をソフトウエアにより行うが、そのソフトウエアの実行は、制御部としてのCPU11によって行われる。暗号処理結果を保持するレジスタ26の代わりに、RAM13の記憶領域が利用される。さらに、ラウンド制御カウンタ31の代わりに、RAM13の記憶領域が利用される。CPU11は、乱数発生部である乱数発生回路18からの乱数RNに基づいて、ラウンド制御カウンタのカウンタ値の増減制御を行いなから、暗号処理を実行する。暗号処理の結果データは、RAM13の記憶領域に書き込まれる。
【0046】
図8は、CPU11が乱数RNに基づいて、暗号処理の実行ステップを決定して実行する場合の処理の流れの例を示すフローチャートである。CPU11は、乱数RNに基づいて、AESの11個のラウンドに相当する11個の処理ステップ中に、逆演算処理及びその逆演算に対応する通常演算処理が、乱数RNに基づいて決定されたステップの1以上の位置に、乱数RNに基づいて決定された段数だけ挿入される。
【0047】
図8では、ステップS1,S2,S3,S4,S5,・・・Snというn回(nは、整数)の暗号処理ステップが連続して実行されている。すなわち、N回(AESの場合、Nは11)の暗号処理が実行されるが、そのN回の暗号処理ステップ中に、(n−N)回の逆演算処理(その逆演算処理に対応する通常演算処理を含む)が、1つ以上の場所に挿入されている。図8では、ステップS2の後の位置に、1回の逆演算処理Op2−1が挿入され、その逆演算処理の後に、再びステップS2と同じ暗号演算処理(通常演算処理)Op2が挿入されている。ステップS3の処理が終了ときの結果データは、ステップS1の処理が終了したときの結果データと同じである。ステップS4が終了ときの結果データは、ステップS2の処理が終了したときの結果データと同じである。
【0048】
図8において、例えば、ステップS2に続くステップS3における逆演算処理が、暗号処理中の中間データである第1の値を第2の値の変換する第1の演算であり、その逆演算に続くステップS4における演算処理が、第2の値を第1の値に変換する第2の演算である。
このように、本実施形態では、CPU11は、第1の実施形態と同様に、乱数RNに基づいて、N回の処理ステップ中に逆演算処理とその逆演算処理に対応する通常演算を挿入する1以上の位置と段数を決定して、暗号処理の処理ステップを制御する。
【0049】
従って、本実施形態の暗号処理装置によれば、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有する暗号処理回路を実現することができる。
【0050】
なお、以上の例は、AESの暗号処理で説明したが、暗号処理は、AES以外の暗号処理でもよく、さらに、以上の例では、各ステップの処理内容は同じであるが、各ステップの処理内容が異なっていてもよい。
【0051】
(第3の実施形態)
次に第3の実施形態について説明する。第1及び第2の実施形態では、電力解析攻撃の耐性を有する暗号処理装置が開示されたが、本実施形態の暗号処理装置は、電力解析攻撃の耐性を有するだけでなく、故障印加攻撃の耐性も有する。すなわち、本実施形態によれば、暗号処理のステップすなわちラウンド中に、逆演算処理をランダムに挿入することによって電力解析攻撃の耐性を有すると共に、ICチップにレーザ照射、ノイズ供給等を与える故障印加攻撃の耐性を有する暗号処理装置が提供される。
【0052】
故障印加攻撃は、暗号処理の途中に何らかの故障を引き起こし、処理途中の結果に誤りを起こさせる。その解析方法は、誤ったデータに対して暗号処理が行われた結果を取り出して多数収集し、その多数のデータを解析することによって暗号鍵を取り出す方法である。
【0053】
従来のダミー演算を行う暗号演算装置では、ダミー処理中に故障が印加された場合は、演算結果に影響を及ぼさないが、ダミー演算ではない通常の暗号処理中に故障が印加された場合は、誤ったデータを用いて暗号処理が行われる。よって、ダミー演算の挿入は、ダミーデータ等の処理中に故障印加がされる場合があるので、故障印加攻撃に対しては、故障の発生確率を低下させることができるという効果はある。しかし、故障印加の回数を増やすことにより、多数の演算結果を得れば、秘密情報の解析が可能になるという問題がある。
【0054】
故障印加攻撃の場合、暗号処理装置による最終的に出力された結果データが利用される。そこで、本実施形態の暗号処理装置は、故障印加攻撃を受けたことを検出して、例えば暗号処理を中止するように構成される。その結果、解析者は、暗号処理の結果データが出力されないため、暗号鍵等を取り出して解析することができない。
【0055】
図9は、本実施形態に係る暗号処理装置1Bの構成を示す構成図である。図9において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図9に示すように、I/F17に、アラームデータとしてのフラグデータを保持するフラグレジスタ17aが設けられている。
【0056】
なお、本実施形態では、レジスタ17aは、I/F17に設けられているが、I/F17以外の箇所に設けてもよいし、RAM13内の所定の領域をそのレジスタの代わりに利用してもよい。
【0057】
図10は、本実施形態に係る暗号回路モジュール15Bの構成を示すブロック図である。図10において、図2の暗号処理モジュール15と同じ構成要素については同じ符号を付して説明は省略する。
【0058】
暗号処理モジュール15Bの制御回路23Bは、ラウンドレジスタ33を有する。ラウンドレジスタ33は、逆演算が挿入される直前のラウンドすなわちステップを記憶するレジスタである。制御部としての制御回路23Bは、逆演算が挿入されると、その直前のラウンド値をラウンドレジスタ33に記憶する。例えば、ラウンド3の後に、逆演算処理が挿入された場合、制御回路23Bは、ラウンド3の値「3」をラウンドレジスタ33に格納する。
【0059】
さらに、暗号処理モジュール15Bは、レジスタ41と比較器42を含む。レジスタ41には、セレクタ25の出力が入力され、制御回路23Bからの制御信号CS1に応じて、セレクタ25の出力データが格納される。
【0060】
制御部としての制御回路23Bは、乱数発生回路18において発生した乱数RNに基づいて、暗号処理において複数回実行される暗号化演算あるいは復号化演算の中に挿入する、1以上の逆演算とそれに対応する通常演算の位置と段数を決定し、暗号化回路21と復号化回路22の実行を制御する。
【0061】
制御信号CS1は、逆演算処理の挿入のタイミングに基づいて生成され、セレクタ25のデータは、その制御信号CS1のタイミングに応じて、レジスタ41に格納される。例えば、ラウンド3の後に、逆演算処理が挿入される場合、逆演算処理が実行される前のラウンド3の結果データが記憶されるように、制御信号CS1が出力される。
【0062】
制御部としての制御回路23Bは、ラウンド制御カウンタ(RCNT)31の値とラウンドカウンタ33の値とを比較する比較する回路を有する。制御回路23Bでは、そのラウンドカウンタ(RR)33にラウンドの値が保持されると、その後、ラウンド制御カウンタ(RCNT)31の値と、ラウンドカウンタ33の値とを比較し、一致するか否かを判定する。
【0063】
また、比較器42は、制御回路23Bからの制御信号CS2に基づいて、2つのレジスタ26と41に格納されている2つのデータを比較する。比較器42は、2つのデータが不一致の場合、アラーム信号としての不一致検出信号IDSを出力する。
【0064】
比較器42が2つのデータを比較するタイミング、すなわち制御信号CS2が出力されるタイミングは、ラウンドレジスタ33とラウンド制御レジスタ31の値が一致したときである。すなわち、制御回路23Bは、逆演算が始まったときにレジスタ41に保存された、その逆演算の前のラウンドの結果データと、その保存した結果データのラウンドと同じラウンドが実行されたときの結果データとが比較されるように、制御信号CS2を出力する。
【0065】
比較器42の検出信号IDSは、I/F17のフラグレジスタ17aに例えばフラグデータとして「1」を書き込む信号として出力される。そのフラグレジスタ17aのデータは、CPU11によって監視される。CPU11は、フラグデータが「1」となると、暗号回路モジュール15Bをその動作を停止するように制御する。あるいは、CPU11は、暗号回路モジュール15Bの実行後に、フラグレジスタ17a又はRAM13内のフラグデータの値を確認することによって、故障印加攻撃があったか否かを判断することができる。
【0066】
図11は、本実施形態の比較器42が比較するタイミングを説明するための図である。図11において、時刻t1、t2、t3、t5、t6、t7、t10において通常演算が実行され、時刻t4、t8、t9において逆演算が実行されている。例えば、ラウンドに対応するステップ3の後に、時刻t4のタイミングで、1回の逆演算処理が挿入され、ステップは、その逆演算処理の後に時刻t5のタイミングでステップ3に戻っている。ステップ3の結果データは、時刻t3、t5、t9の実行結果に現れ、ステップ4の結果は、時刻t6、t8、t10の実行結果に現れている。
【0067】
よって、後述するように、例えば、時刻t3のステップ3の結果データをレジスタ41に格納しておき、同じステップ3の結果が現れたときの結果データと比較することによって、その間に故障が発生していなければ両者は一致し、故障が発生していれば両者は一致しない。すなわち、両者を比較することによって、故障が検知される。
【0068】
ラウンド制御カウンタ(RCNT)33の値は、1,2,3,2,3,・・と変化している。ラウンドカウンタ(RR)33は、最初の逆演算処理が挿入される直前のステップ(ここでは最初のステップ3)の値が保持される。
【0069】
制御回路23Bは、時刻t5のタイミングで、ラウンド制御カウンタ(RCNT)31の値とラウンドカウンタ33の値とが一致したことを検出し、そのタイミングで、制御信号CS2を生成して比較器42に出力する。
【0070】
例えば、時刻t3とt5の間に、暗号処理装置1Bが故障印加攻撃を受けていた場合、1回目と2回目のステップ3の暗号処理の結果データは異なる場合がある。よって、比較器42は、その不一致を検出して、検出信号IDSを出力する。
【0071】
図11の場合、最初のステップ5の後に、2段の逆演算処理が挿入されている。この場合は、時刻t7のタイミングでラウンドカウンタ(RR)33がラウンドの値「5」を保持し、その後ラウンド制御カウンタ(RCNT)31が「5」になったときに、レジスタ26とレジスタ41の値が、同様に比較される。よって、この場合も、時刻t7からt11の間に、暗号処理装置1Bが故障印加攻撃を受けて、1回目と2回目のステップ5の暗号処理の演算結果データは異なっていれば、比較器42は、その不一致を検出して、検出信号IDSを出力する。
【0072】
比較器42の検出信号IDSは、例えば、制御回路23Bに供給され、あるいはI/F17を介してCPU11に供給される。制御回路23BあるいはCPU11は、検出信号IDSを受信すると、暗号回路モジュール15Bにおける暗号処理を中止させることができる。そのようにすれば、暗号処理の最終結果が出力されない。よって、暗号処理装置において最終結果が出力されなければ、故障印加攻撃に対して有効である。
なお、検出信号IDSは、CPU11への割り込み信号として供給するようにしてもよい。
【0073】
さらになお、以上の例では、逆演算の挿入タイミングに応じて、ラウンドの値を保持し、かつ結果データも記憶するようにしていたが、ラウンド毎の結果データを全てあるいはランダムに保持するようにして、保持した結果データの中において、同じラウンドにおける結果データに不一致があるか否かを検出するようにしてもよい。
【0074】
例えば、図11において、ラウンド2は2回発生している。また、ラウンド3と4は、3回発生している。よって、ランダムに保持された結果データの中で、同じラウンドの結果データが2つ以上あれば、それらの結果データを比較し不一致があるか否かを検出するようにしてもよい。例えば、図11では、ランダムに保持された結果データの中に、ラウンド3の結果データとして、時刻t3とt9の結果データがあれば、それらが比較される。
【0075】
あるいは、乱数によって決定したラウンドの結果データを保持し、その後、その決定されたラウンドと同じラウンドが現れたら、そのデータと保持された結果データとの比較を行うようにしてもよい。
【0076】
以上のように、本実施形態の暗号処理装置は、レジスタ41に暗号処理の途中データを保持しておき、再びそのステップを実行したときに、その結果データとその途中データとを比較することによって、暗号処理中に故障が発生したことを検出する。すなわち、制御回路23Bは、逆演算の直前の値と、逆演算(及びその逆演算に対応する通常演算)の演算結果の値とを比較し、両者が一致しない場合は、暗号演算処理部における暗号処理の実行を中止する。
【0077】
従って、本実施形態の暗号処理装置は、ダミー演算のためのデータ及びダミー鍵を保持するレジスタ回路を用いることなく、暗号処理中に逆演算処理がランダムに挿入されて、実際の暗号処理のみで処理時間が変化するので、電力解析攻撃に対して、耐性を有することができる。
【0078】
さらに、本実施形態の暗号処理装置は、同じラウンドの暗号処理の2つの結果データが異なるか否かを検出する。それら2つの結果データが異なる場合、暗号処理演算を中止させるようにすれば、暗号処理の最終結果が、すなわち例えば平文に対する暗号文が、出力されないので、本実施形態の暗号処理装置は、故障印加攻撃に対して耐性を有することができる。
【0079】
なお、本実施形態は、ハードウエア回路で実現する例で説明したが、第2の実施形態のように、暗号演算がソフトウエアによって実現される場合は、上述した比較器等の機能はソフトウエアにより実現することができる。従って、本実施形態の暗号処理装置は、ソフトウエアによっても実現することが可能である。
【0080】
(第4の実施形態)
本実施形態は、1つの暗号処理部を有する暗号処理装置の例である。ここでは、DESを用いた暗号処理部の例で説明する。
図12は、本実施形態の暗号処理装置の暗号回路モジュール15Cの構成を示すブロック図である。図12において、図10の暗号処理装置と同じ構成要素については同じ符号を付し説明は省略する。
暗号回路モジュール15Cは、制御回路23Cと、暗号処理回路51と、2つのレジスタ26,41と、比較器42とを含む。
【0081】
暗号処理回路51は、制御回路23Cからの制御信号CS11に基づいて、暗号化演算あるいは復号化演算のいずれかの暗号処理を実行する。暗号処理回路51が、暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部を構成する。暗号処理回路51は、DESのラウンド関数部を含み、そのラウンド関数部は、スクランブル部と鍵スケジュール部を含む。スクランブル部は、f関数部及び排他的論理和部を含む。暗号処理回路51の出力は、レジスタ26に出力され、レジスタ26に保持された結果データが再び暗号処理回路51の入力データとなって、16回のラウンド処理が繰り返される。
【0082】
制御部としての制御回路23Cは、ラウンド制御カウンタ31、ラウンド制御部32及びラウンドカウンタ33を含む。制御回路23Cは、ラウンド制御部32によってラウンド制御カウンタ31を増減させながら、暗号処理回路51に対して、暗号化演算あるいは復号化演算の暗号処理を実行させる。制御回路23Cは、入力された乱数RNに基づいて、その途中に、逆演算である復号化演算あるいは暗号化演算を挿入するための鍵の挿入指示信号と、f関数部と排他的論理和部への2つの入力データの入れ替えを行わないように切り替える切替制御信号を出力する。
【0083】
すなわち、制御回路23Bは、暗号処理回路51に、逆演算処理のための鍵の挿入指示信号と、切替制御信号とを含む制御信号CS11を供給することによって、暗号処理回路51に、途中に逆演算を挿入しながら暗号化演算と復号化演算のいずれかの暗号処理を実行させる。
【0084】
レジスタ41には、逆演算の直前のラウンドの結果データが保持される。制御回路23Bは、ラウンド制御カウンタ31の値が、ラウンドレジスタ33の値と一致すると、制御信号CS2を比較器42に出力する。比較器42は、逆演算直前の結果データと、そのラウンドが逆演算直前のラウンドと同じラウンドに戻ったとき結果データ(レジスタ26のデータ)とを比較して、不一致があれば、不一致信号IDSを出力するようになっている。
【0085】
図13は、DESのアルゴリズムを示す図である。DESアルゴリズムは、初期転置(IP)、最終転置(FP)、鍵演算(右側)とデータ演算(左側)とで構成される。初期転置と最終転置は、お互いに逆演算の関係にある。データ演算は、同一の演算が繰り返し実行される。図13では、ラウンド1(R1)から16(R16)までが示されている。DESの復号化演算では、データ演算は、同じ演算であるが、鍵演算が暗号化演算の過程とは逆の過程で実行される。すなわち、鍵データKは、暗号化演算の場合は、ラウンド1からラウンド16まで、K1,K2,K3,・・・,K16の順で生成されてf関数部に与えられるが、復号化演算の場合は、ラウンド1からラウンド16まで、K16,K15,K14,・・・,K1の順で生成されてf関数部に与えられる。
【0086】
通常の演算では、図13に示すように、f関数部の左右の2つのデータを入れ替える操作が行われるが、暗号演算から復号演算に変化するときに、左右の入力データの入れ替えを行わずに処理することで逆演算を実現することができる。
【0087】
図14は、DESのアルゴリズムの一部を示し、暗号化演算の中に逆演算が挿入された例を示す図である。図14において、あるラウンドに相当するステップ1(S1)から、そのステップ1に続くステップ2(S2)、ステップ3(S3)、・・・ステップ7(S7)が示されている。ここでは、S3の後に、2段の逆演算が挿入されている。
【0088】
S1,S2,S3,S6,S7は暗号処理((Enc)が、そしてS4,S5は復号処理(Dec)が行われている。S4において、S3と同じ鍵データKI+2が使用された結果、S4の結果データは、S2の結果データと同じになっている。
【0089】
さらに、S4に続くS5において、S2と同じ鍵データKI+1が使用された結果、S5の結果データは、S1の結果データと同じになっている。S5に続くS6において、S2と同じ鍵データKI+1が使用された結果、S6の結果データは、S4及びS2の結果データと同じになっている。
【0090】
そして、S7において、S3と同じ鍵データKI+2が使用されるので、S7の結果データは、S3の結果データと同じになっている。
【0091】
ここで、S4とS6では、切替制御信号によって、f関数部と排他的論理和部への入力データの入れ替えが行わないように切り替えられている。
【0092】
図15は、図14のS1〜S7までの処理の流れを示す図である。ここでは、2段の逆演算が挿入され、鍵データは、KI,KI+1,KI+2,KI+2,KI+1,KI+1,KI+2というように変化している。
【0093】
以上のように、本実施形態の暗号処理装置は、DES演算において、暗号化演算中に逆演算(復号化演算)を挿入でき、あるいは復号化演算中に逆演算(暗号化演算)を挿入でき、その結果、処理時間が変化し、電力解析に対して耐性を持たせることが可能となる。
【0094】
さらに、第3の実施形態と同様に、逆演算を挿入する直前のラウンドとそのときのデータを保持し、その後の同じラウンドのデータと比較して、不一致の検出信号IDSを出力するので、故障印加攻撃に対して耐性を有する暗号処理装置を実現することができる。
【0095】
なお、逆演算後、逆演算直前の結果データに戻る処理が行われればよいので、逆演算に用いる鍵データは、逆演算直前のステップに用いられた鍵データと同じもでなくてもよい。
【0096】
図14の例では、暗号処理部51のf関数部への鍵データの供給の方法は、2段の逆演算が1回挿入されている。そして、逆演算のための鍵データは、その逆演算直前のステップの結果データに戻るように、逆演算直前のステップに用いられた鍵データである。図14の場合であれば、S4の鍵データは、S3で用いられた鍵データと同じである。さらに、そのS4の結果データは、S2の結果データと同じになるので、S5の鍵データは、S2で用いられた鍵データと同じである。そして、S6の結果データが、S4の結果データと同じとなり、S7の結果データが、S3の結果データと同じとなるように、S6とS7の鍵データは、それぞれS5とS4の鍵データと同じである。
【0097】
また、1段の逆演算処理が1回挿入される場合、上記のように逆演算処理直前のステップの演算処理の前の結果データに戻るようにするには、逆演算処理のための鍵データとそれに続く演算処理のための鍵データは共に、逆演算直前のステップに用いられた鍵データとなる。例えばS2の後に逆演算処理を挿入する場合、鍵データは、K1,K2,K2,K2,K3,K4、・・となる。
【0098】
しかし、逆演算処理のための鍵データとそれに続く演算処理のための鍵データが同じであれば、逆演算処理直前のステップに用いられた鍵データと異なっていてもよい。例えば、S2の後に逆演算処理を挿入する場合、鍵データは、K1,K2,K5,K5,K3,K4、・・でもよい。このように鍵データを挿入しても、逆演算処理直前おステップの結果データに戻るので、問題はない。
【0099】
(変形例)
次に上述した3つの実施形態の変形例を説明する。
上述した各実施形態では、入力された初期値INdに対する暗号処理を実行する場合に、その暗号処理の中に、1以上の逆演算が1以上の段数をもって挿入されている。しかし、本第1の変形例では、入力された初期値INdに対する暗号処理の前に、入力された初期値INdに対して、通常演算とその逆演算を組み合わせた前処理が挿入される。
【0100】
本変形例の前処理では、乱数RNに基づいて決定された鍵データと、乱数RNに基づいて決定された通常演算と逆演算を組み合わせた処理が実行され、その実行結果が入力された初期値INdと同じになったら、暗号処理装置は、前処理を終了して、上述した各実施形態の暗号処理を実行する。
【0101】
さらに、加えて、上述した各実施形態の暗号処理が終了したら、その時の結果データ(最終結果データ)に対して、通常演算とその逆演算を組み合わせた処理である後処理が挿入される。後処理では、乱数RNに基づいて決定された鍵データと、乱数RNに基づいて決定された通常演算と逆演算の組み合わせた処理が実行され、その実行結果が、最終結果データと同じになったら、暗号処理装置は、後処理を終了する。
【0102】
図16は、第1の変形例の動作を説明するための図である。図16では、DESの暗号処理の前処理において、入力された初期値INdに対して、乱数RNに基づいて決定された鍵データK8,K9と、乱数RNに基づいて決定された通常演算と逆演算の組み合わせた処理が実行されている。そして6回のステップの後に、初期値INdと同じデータになったので、前処理は終了して、暗号処理が実行されている。
【0103】
具体的には、図16において、鍵データK8は、第8ラウンドで用いられるラウンド鍵である。また、右上がりの矢印は通常演算である暗号演算、右下がりの矢印は逆演算である復号演算を実行していることを表している。点線で囲まれた部分は、暗号処理とは異なる演算が実行されている部分を表している。左側の点線で囲まれた部分は、暗号処理開始前に行われる前処理部分、中央部下の点線で囲まれた部分は、暗号処理中に行われる逆演算と通常演算の挿入部分、右側上部の点線で囲まれた部分は、暗号処理終了時に行われる後処理部分、右側下部の点線で囲まれた部分は、暗号処理終了後に行われる後処理部分である。
【0104】
電力解析では、一般的に最初のラウンドと最後のラウンドが解析の対象となる。よって、本変形例では、最初と最後のラウンドに関して、開始あるいは終了の状態が変化する。通常の暗号処理は、同じ演算(ラウンド)の繰り返しで実現されているが、このとき、各ラウンドでは、別々の鍵(ラウンド鍵)が用いられている。
【0105】
図16では、暗号処理において、第一のラウンドで用いられる鍵として、他の鍵を用いて演算を行う。図16に示した動作例では、最初にラウンド8の鍵を用いて通常演算(暗号化演算)を行い、続いて、ラウンド9の鍵で通常演算、ラウンド9の鍵で逆演算(復号化演算)、ラウンド9の鍵で通常演算、ラウンド9の鍵で逆演算、ラウンド8の鍵で逆演算が行われている。これらの処理の結果、結果データは元のデータに戻る。次の演算で、ラウンド1の鍵を用いて通常演算(暗号化演算)を開始して、暗号処理が開始される。すなわち、ラウンド1の鍵を用いる前に、鍵が異なるだけで、鍵以外の処理は同じ演算が行われるため、ラウンド1の鍵を用いた暗号処理の開始時の結果データを変化させることができる。
【0106】
暗号処理が終了した後、後処理において、最終結果データに対して、乱数RNに基づいて決定された鍵データK17,K16,K7,K6,K5と、乱数RNに基づいて決定された演算処理と逆演算処理の組み合わせ処理が実行されている。そして10回のステップの後に、最終結果データと同じデータになったので、後処理は終了している。
【0107】
具体的には、暗号処理終了時にも、本来の鍵とは異なる鍵で通常演算と逆演算を同じ回数繰り返すことによって、最終ラウンドの終了時の結果データを変化させることが可能となる。さらに最終ラウンドの処理に続いて、暗号アルゴリズムには定義されていないラウンド鍵を用いて通常演算とその後に逆演算を行うことにより、さらに処理時間を可変にすることが可能となる。
【0108】
以上のように、第1の変形例では、制御部は、暗号処理の前と後の少なくとも一方に、少なくとも1回の連続した逆演算(及びその逆演算に対応する通常演算)を挿入する。
【0109】
これによって、暗号処理の処理時間が変化するとともに、前処理と後処理を挿入することによって、暗号処理の開始時刻および終了時刻を可変にすることができ、電力解析に対してより耐性を高めることが可能となる。
【0110】
次に、第2の変形例について説明する。上述した各実施形態の暗号処理装置は、乱数発生回路18を有しているが、本変形例暗号処理装置は、乱数発生回路が発生する乱数RNにより決定される通常演算の実行される確率が調整される確率調整部を有する。
【0111】
上述した各実施形態の暗号処理装置の乱数発生回路は、逆演算処理が挿入される確率は、50%となる。例えば、乱数を発生させて、その乱数に基づいて「1」と「0」のそれぞれの発生確率が、50%とすると、暗号処理中に逆演算がランダムに挿入されるため、暗号処理装置の要求される処理時間内に暗号処理が終了しない場合が発生する虞がある。
【0112】
そこで、本第2の変形例では、逆演算が実行される確率よりも、暗号処理が実行される確率を上げるようにして、暗号処理装置の実行時間を所定の時間内に収めることができるようにした。
【0113】
そのため、乱数発生回路の発生する乱数の発生確率を調整するための確率調整部が、乱数発生回路内に、あるいは乱数発生回路とは別に設けられる。
図17から図19は、確率調整部18aからの確率調整信号Pcに基づいて、暗号処理の実行確率の変化を示す図である。図20は、本第2の変形例に係る暗号処理装置1Dの構成を示す図である。図20において、図1と同じ構成要素については、同じ符号を付し説明は省略する。図20では、確率調整部18aは、乱数発生回路18に接続されて、確率調整信号Pcを供給している。確率調整部18aからの確率調整信号Pcに基づいて、乱数発生回路18の発生する乱数RNの逆演算の発生確率あるいは暗号処理の実行確率が変更される。言い換えれば、確率調整部18aは、乱数発生回路18の発生する乱数RNによって決定される第1の演算(逆演算)及び第2の演算(その逆演算に対応する通常演算)の実行確率を調整する。
【0114】
図17は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高い一定値になっていることを示している。乱数RNによって決定される所定の値に応じて、暗号処理が実行されるか、あるいは逆演算(およびその逆演算に対応する通常演算)が実行されるとする。その場合、例えば、所定の値が「1」のときには、暗号演算の実行が指示され、所定の値が「0」のときには、逆演算の挿入が指示されるとする。この場合に、所定の値「1」の発生確率を、0.5よりも高くすると、暗号処理の実行確率が、0.5よりも高くなるので、暗号処理装置の暗号処理が所定の時間内に終了する確率が高くなる。所定の値「1」の発生確率は、暗号処理の要求される処理時間が短くなればなるほど、高く設定される。このような方法を用いれば、暗号処理装置は、終了時間が確率的に変化するため、電力解析に対して耐性が高くなる。
【0115】
図18は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高く、かつ所定の制限時間に近くなると、高くなっていることを示している。特に、暗号処理の実行確率が、その制限時間の直前のある期間では、1.0になっている。このように、暗号処理の実行確率が、所定の制限時間に近づくにつれて高くなり、さらに制限時間の直前では、1.0になっているので、暗号処理装置の暗号処理を、所定の時間内に確実に終了させることができる。
【0116】
このように、暗号処理装置の処理時間に制限値を設けられている場合、その制限時間に近づくに従って、発生確率を大きくすると、制限時間に近づくにつれて、暗号処理の発生確率が大きくなるため、終了時間を制限時間に近づけることが可能となる。また、残りステップ数が制限時間で処理できる限界に達したときに発生確率を1.0とすれば、処理時間を確実に制限時間以内に収めることが可能となる。
【0117】
図19は、確率調整信号Pcに基づいて、暗号処理の実行確率が、点線で示す0.5よりも、所定の量だけ高く、かつ暗号処理の前半と後半の間の途中期間において、高くなっていることを示している。特に、暗号処理の実行確率が、その途中期間では、1.0になっている。このように、暗号処理の実行確率が、途中期間で高くなっているので、暗号処理装置の暗号処理を、所定の時間内に確実に終了させることができ、かつ前半と後半では逆演算処理が実行される確率が比較的高くなるので、電力解析に対する耐性も高めることができる。
【0118】
具体的には、暗号処理の開始時および演算終了時は、暗号処理の実行確率を小さくし、それ以外のときでは、0.5より大きくなっている。通常、暗号処理に対する電力解析においては、暗号処理の開始時と終了時が攻撃の対象となる。従って、開始時と終了時には暗号処理の実行確率を0.5に近づけることで、開始時と終了時の逆演算の発生確率を高くし、暗号処理の開始時及び終了時をわかりにくくすることが可能となる。
【0119】
以上のように、確率調整部18aは、暗号処理の処理時間が所定の時間内に終了するように、暗号演算処理部において実行される暗号処理が暗号化演算の場合は、暗号化演算の実行確率が、逆演算である復号化演算(及びその逆演算に対応する通常演算)の実行確率よりも高くなるように、暗号処理が復号化演算の場合は、復号化演算の実行確率が、逆演算である暗号化演算(及びその逆演算に対応する通常演算)の実行確率よりも高くなるように、暗号処理の実行確率あるいは逆演算(及びその逆演算に対応する通常演算)の実行確率を調整する。
【0120】
次に第3の変形例について説明する。
上述した各実施形態及び各変形例によれば、暗号処理中に逆演算処理を挿入することによって、ダミー演算を用いなくても電力解析攻撃への耐性を有する暗号処理装置を実現することができる。従って、従来のようなダミー演算のためのレジスタ回路を設けなくても、暗号処理時間が変化し、電力解析に対して耐性を持たせることが可能となる。
【0121】
しかし、チップ上にレジスタ回路を搭載する余裕があって回路規模が問題にならない場合もある。
そのような場合には、ダミー演算用のレジスタ回路を設け、かつ上述した各実施形態及び各変形例に係る暗号処理にダミー演算も加えるようにすれば、より電力解析に対する耐性を高めることができる。
【0122】
その場合、図20において点線で示すように、暗号回路モジュール15内に、レジスタ回路15aが設けられる。そして、乱数RNに基づいて、逆演算(及びその逆演算に対応する通常演算)の挿入と、ダミー演算の挿入とが行われる。
【0123】
図21は、逆演算とダミー演算が組み合わされた場合のステップの時間に対する変化の例を示すグラフである。図21に示すように、ランダムに、逆演算とダミー演算が挿入されるので、より電力解析に対する耐性を高めることができる。図6と同様に、図21において、横軸は時間、縦軸はステップを示し、右上がりは通常演算、右下がりは逆演算が行われたことを示し、黒丸はダミー演算が行われたことを示す。
【0124】
なお、上述した実施の形態及び各変形例では、各暗号処理装置として、ICカードの例を挙げて説明したが、他の機器でもよい。
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【符号の説明】
【0125】
1、1B、1D 暗号処理装置、11 CPU、12 ROM、13 RAM、14,17 インターフェース、15、15B、15C 暗号回路モジュール、16 バス、18 乱数発生回路、18a 確率調整部、21 暗号化回路、22 復号化回路、23,23B、23C 制御回路、24,25 セレクタ、15a、26,41 レジスタ、31 ラウンドカウンタ、32 ラウンド制御部、33 ラウンド制御カウンタ、42 比較器
【特許請求の範囲】
【請求項1】
暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部と、
前記暗号処理される入力データもしくは前記暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、前記第2の値を前記第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、前記暗号演算処理部の実行を制御する制御部と、
を有することを特徴とする暗号処理装置。
【請求項2】
乱数発生部を有し、
前記制御部は、前記乱数発生部において発生した乱数に基づいて、前記暗号処理において複数回実行される前記暗号化演算あるいは前記復号化演算の中に挿入する、前記第1及び前記第2の演算の位置を決定することを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記乱数発生部の発生する乱数によって決定される前記第1及び前記第2の演算の実行確率を調整する確率調整部を有することを特徴とする請求項2に記載の暗号処理装置。
【請求項4】
前記制御部は、前記第1の値と、前記第2の演算の演算結果の値とを比較し、その比較結果、前記第1の値と前記演算結果の値とが一致しない場合は、前記暗号演算処理部における前記暗号処理の実行を中止することを特徴とする請求項1から3のいずれか1つに記載の暗号処理装置。
【請求項5】
前記制御部は、前記暗号演算処理部において実行される暗号処理中にダミー演算処理を挿入することを特徴とする請求項1から4のいずれか1つに記載の暗号処理装置。
【請求項1】
暗号化演算と復号化演算の暗号処理が実行可能な暗号演算処理部と、
前記暗号処理される入力データもしくは前記暗号処理中の中間データである第1の値を第2の値に変換する第1の演算と、前記第2の値を前記第1の値に変換する第2の演算とを少なくとも1回連続して行わせるように、前記暗号演算処理部の実行を制御する制御部と、
を有することを特徴とする暗号処理装置。
【請求項2】
乱数発生部を有し、
前記制御部は、前記乱数発生部において発生した乱数に基づいて、前記暗号処理において複数回実行される前記暗号化演算あるいは前記復号化演算の中に挿入する、前記第1及び前記第2の演算の位置を決定することを特徴とする請求項1に記載の暗号処理装置。
【請求項3】
前記乱数発生部の発生する乱数によって決定される前記第1及び前記第2の演算の実行確率を調整する確率調整部を有することを特徴とする請求項2に記載の暗号処理装置。
【請求項4】
前記制御部は、前記第1の値と、前記第2の演算の演算結果の値とを比較し、その比較結果、前記第1の値と前記演算結果の値とが一致しない場合は、前記暗号演算処理部における前記暗号処理の実行を中止することを特徴とする請求項1から3のいずれか1つに記載の暗号処理装置。
【請求項5】
前記制御部は、前記暗号演算処理部において実行される暗号処理中にダミー演算処理を挿入することを特徴とする請求項1から4のいずれか1つに記載の暗号処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【公開番号】特開2011−250182(P2011−250182A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−121842(P2010−121842)
【出願日】平成22年5月27日(2010.5.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願日】平成22年5月27日(2010.5.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]