(57)【要約】【課題】キャッシュ攻撃などに対してデータ処理装置などを保護する。【解決手段】入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置に対し、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を正規データ列に代えて処理ブロックへ入力し、処理ブロックと等価の擬似処理ブロックと擬似データ列を生成する際に用いた基礎データを擬似処理ブロックに入力して補正データを生成し、擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを補正データで補正することで、当該擬似結果データを正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する。【選択図】図１
2012023618.tif 000002
【特許請求の範囲】
【請求項１】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、
前記処理ブロックと等価の擬似処理ブロックと、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る、
データ処理装置。
【請求項２】
前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する、
請求項１記載のデータ処理装置。
【請求項３】
前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される、
請求項１又は２記載のデータ処理装置。
【請求項４】
前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである、
請求項３記載のデータ処理装置。
【請求項５】
前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで成る、
請求項４記載のデータ処理装置。
【請求項６】
前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、
前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る、
請求項５記載のデータ処理装置。
【請求項７】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、
前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、
前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、
データ処理装置の保護方法。
【請求項８】
コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、
前記コンピュータを、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
前記処理ブロックと等価の擬似処理ブロック、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段、として機能させる、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化処理又は復号処理の際にサイドチャネル攻撃を受ける可能性のあるデータ処理装置を効果的に保護する技術に関する。ここで「サイドチャネル攻撃」（side-channel attack）とは、データ処理装置の動作状況を様々な物理的手段で観察することにより、装置内部で行われている処理内容を窃取しようとする攻撃方法である。
【背景技術】
【０００２】
サイドチャネル攻撃の一つとして「キャッシュ攻撃」がある。キャッシュ攻撃は、キャッシュメモリが搭載されたＣＰＵ上で実行される暗号プログラムや復号プログラムに対して行われ、処理の観察結果から秘密鍵を推測する。キャッシュ攻撃では、特に、テーブル参照演算が行われる繰り返し型のブロック方式などが攻撃の対象となる。
【０００３】
キャッシュ攻撃には、様々な態様があるが、ある態様では以下のようにして行われる。ブロック方式の暗号処理では、一般的に入力値と秘密鍵との排他的論理和演算した結果を使用してテーブルの記録内容を取得しながら処理が進む。暗号処理前は、アドレスにより指定されるテーブルの記録内容がキャッシュメモリ内には読み込まれていないとする。暗号処理が行われている最中は、入力データ列により指定されたテーブルの記録内容がキャッシュメモリから取得されるか、メインメモリから取得されるかは入力値と秘密鍵に依存することとなる。つまり、入力値を変化させることによって、全体の暗号処理の時間が変化することになる。
【０００４】
他のキャッシュ攻撃の態様では、例えば、１ブロック（例えば公知の「ＡＥＳ (Advanced Encryption Standard) 」の場合では１２８ビット）毎の暗号処理時間を計測する。この態様では、入力データ列により特定されるテーブルの記録内容に対して２回同じアクセスをした場合では、２回目にはキャッシュメモリから当該記録内容を取得するためアクセス時間が短くなることを利用している。攻撃者の攻撃の手順としては、まず、１ブロック暗号化するごとにキャッシュメモリの内容をクリアにする。そして、ある２つのテーブル参照演算に着目し、その２つのテーブル参照演算に用いられる入力データ列に影響する秘密鍵をある値として仮定する。そして、その仮定の下で２つのテーブル参照演算の入力データ列が同一となるような入力値を選択してそのアクセス時間を計測する。この作業を考えられる全ての秘密鍵の値に対して実行する。最終的には、最もアクセス時間の短かった鍵を正解の鍵として出力する。その後、また別の２つのテーブル参照演算に着目し、同様の攻撃を繰り返すことで秘密鍵を解読しようとする。
【０００５】
他のキャッシュ攻撃の態様では、例えば、攻撃者が持つテーブルを暗号プログラムなどが暗号処理を開始する前にキャッシュメモリ内に介入させる。そして、１暗号処理ごとにキャッシュメモリのキャッシュ状態を検査して秘密鍵を解読しようとする。この手法は、「Ｐｒｉｍｅ＋ｐｒｏｂｅ法」などと呼ばれる。これは、攻撃者がキャッシュメモリ状態を検査することでテーブルのどの記録内容を参照したかを探り、その結果から入力データ列を推測して秘密鍵を解読しようとする。
【０００６】
このようなキャッシュ攻撃の対策として、特許文献１には、１つの平文または暗号文の暗号処理又は復号処理における変換表に対するアクセス時に、要求された命令や値がキャッシュメモリ上に存在しない場合の回数を、任意の平文または暗号文についてほぼ均一化する調整手段を備える暗号装置が開示されている。この暗号装置によれば、任意の平文または暗号文についての暗号時間または復号時間がほぼ同じとなるため、キャッシュ攻撃に対して耐性を持たせることができるとされている。
【０００７】
また、特許文献２に開示された技術では、部分データに対応する変換データを含む変換表を備え、この変換表に含まれる変換データを取得する際に、最初に、キャッシュメモリのライン記憶領域から当該変換データの取得を試み、ライン記憶領域に当該変換データが存在しない場合に、主メモリから当該変換データを取得し、取得した変換データを含む所定長の包含データをライン記憶領域に書き込む。変換表は、所定長のライン表領域を有しており、このライン表領域の所定位置において部分データに対応する１個の変換データを含み、ライン表領域の他の位置において変換に無関係のデータを含むものとしている。これにより、キャッシュメモリのライン記憶領域には１個の変換データが含まれるので、入力メッセージを変化させても暗号又は復号処理の処理時間が一定となるため、処理時間を観測するタイミング攻撃に対する耐性は向上するとしている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−１２０３０７号公報
【特許文献２】再表２００５／１０３９０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、特許文献１及び特許文献２に開示された技術では、攻撃者がキャッシュメモリのキャッシュ状態を検査してテーブルに含まれるどの記録内容を索引したのかを探り、その結果からアドレスを推測して秘密鍵を解読しようとする攻撃から保護することはできない。さらに、キャッシュ攻撃に関する研究が近年盛んに進んでおり、新たな保護手段の開発も要望されている。
【００１０】
本発明は、キャッシュ攻撃あるいはその他のサイドチャネル攻撃の対象となる可能性のある処理ブロックの保護機能を有するデータ処理装置、保護方法及びコンピュータプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決する本発明のデータ処理装置は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、前記処理ブロックと等価の擬似処理ブロックと、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る。
【００１２】
このデータ処理装置によれば、装置全体の処理結果は同一でありながら、その中間過程の処理ブロックの内容が正規の処理結果と異なるため、処理ブロックにおける処理の最中に例えばどのデータが参照されたのかが攻撃者に窃取されたとしても、本来の入力データ列を推測することができない。また、攻撃者は正規の入力データ列を推測することができないため、データ参照演算などにおけるアクセス時間の差を利用した攻撃からも保護することができる。
【００１３】
上記データ処理装置における、より具体的な態様として、以下のものが挙げられる。
（１）前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する。これにより、例えばキャッシュ攻撃を受けても、処理ブロックの正規の処理内容が外部に漏洩することが無くなる。
（２）前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される。初段の処理ブロックの処理内容を保護することにより、後段の処理ブロックにおける処理内容が、より強固に保護される。
（３）前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである。
ファイステル(Feistel)構造では、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数の非線形関数部に入力し、各非線形関数部の処理結果を線型関数処理によって拡散する。従って、本発明のデータ処理装置により、初段の関数ブロックを保護することにより、すべての関数ブロックの処理結果の漏洩を効果的に防止することができる。
なお、前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで構成する場合がある。特に、前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る場合がある。このような構成が採用される場合も、正しいテーブル参照データが出力されないため、これらの監視は無意味なものとなる。
【００１４】
本発明は、データ処理装置の保護方法をも提供する。
本発明の保護方法は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、データ処理装置の保護方法である。
【００１５】
本発明は、コンピュータプログラムをも提供する。
本発明が提供するコンピュータプログラムは、コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、前記コンピュータを、以下のように機能させるものである。
（１）正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
（２）前記処理ブロックと等価の擬似処理ブロック、
（３）前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段。
【発明の効果】
【００１６】
本発明では、サイドチャネル攻撃を受けても、処理ブロックの処理内容が正規のものと異なるものとなっているため、攻撃者の行為が無意味なものとなり、秘密情報の漏洩が起きないという特有の効果が得られる。更に、攻撃者には本来の入力データ列も推測できないため、テーブル参照演算におけるアクセス時間の差を利用した攻撃からも保護できることとなる。
【図面の簡単な説明】
【００１７】
【図１】第１実施形態の全体の構成例図。
【図２】暗号／復号アルゴリズムの一例である「ＨｙＲＡＬ」の関数フロー図。
【図３】第１実施形態の初段処理フロー図。
【図４】第１実施形態の２段目処理フロー図。
【図５】第１実施形態の処理手順。
【図６】Ｓボックステーブル及びＳ＾−１ボックステーブルの模式図。
【図７】転置演算及びＭＤＳ行列式例図。
【図８】第１実施形態の初段処理の演算例図。
【図９】暗号／復号アルゴリズムの一例である「ＨｙＲＡＬ」初段処理の演算例図。
【図１０】第１実施形態の２段目処理の演算例図。
【図１１】暗号／復号アルゴリズムの一例である「ＨｙＲＡＬ」２段目処理の演算例図。
【図１２】暗号／復号アルゴリズムの一例である「ＡＥＳ」の関数フロー図。
【図１３】第２実施形態の初段処理フロー図。
【図１４】第２実施形態の２段目処理フロー図。
【図１５】第２実施形態の初段処理の演算例図。
【図１６】暗号／復号アルゴリズムの一例である「ＡＥＳ」初段処理の演算例図。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態例を、図面を参照して詳細に説明する。
［第１実施形態］
＜全体構成＞
図１は、本発明を適用したデータ処理装置のハードウエア構成例を示した図であり、主たる特徴部分を掲示してある。このデータ処理装置１０は、例えば、キャッシュメモリを搭載した汎用のコンピュータ装置が本発明の暗号処理用のコンピュータプログラムおよび必要なデータを読み込んで実行することにより実現される。
データ処理装置１０には、ディスプレイ、プリンタ又は外部記憶装置のような出力装置１８、ポインティングディバイスやキーボード等の入力装置１９が接続されている。データ処理装置１０には、一般的なコンピュータが備えるハードウエア資源、すなわち、入出力制御部１６、ＣＰＵ（Central Processing Unit）１１、主記憶部１４、補助記憶部１５も備えられている。
【００１９】
ＣＰＵ１１は、演算部１２とキャッシュ部１３を含む。演算部１２は、コンピュータプログラムの実行に伴う演算などを行う。ＣＰＵ１１は、データ処理を実現するために各機能ブロック１４、１５、１６、１７などの起動を含む各種動作の制御も行う。
キャッシュ部１３は、主記憶部１４に記憶されている各種データの一部又は全部を図示しないキャッシュメモリに保持し、演算部１２からの命令に対して、対応するデータ等が存在する場合は、それらをキャッシュメモリから読み出して直ちに演算部１２へ伝達する。他方、演算部１２からの命令に対して、対応するデータ等が存在しなければ、そのデータ等を主記憶部１４から読み出してキャッシュメモリに格納するとともに当該データ等を演算部１２へ伝達する。
【００２０】
補助記憶部１５には、コンピュータプログラム及びデータ処理に必要なデータが格納されており、適宜、主記憶部１４へ読み込まれて展開されるようになっている。
【００２１】
入出力制御部１６は、入力装置１９から必要な入力、例えば暗号処理時は平文、復号処理時には暗号文を受け付け、各処理に必要な情報を各機能ブロックへ伝達する。入出力制御部１６は、図示しないインターネット網などのネットワークを介して必要な入力を受け付けることもできる。入出力制御部１６は、また、暗号処理の結果情報を出力装置１８へ出力する。
【００２２】
保護ツール１７は、例えば、補助記憶部１５に格納されているコンピュータプログラムと連携して、あるいは、単独で動作するファームウエアであり、キャッシュ攻撃の対象となるテーブルを保護するように動作する。
【００２３】
［保護ツールが存在しない場合のデータ処理］
本発明のデータ処理装置１０の動作説明に先立ち、保護ツール１７が存在しない場合の一般的なデータ処理の概要を説明する。この実施形態では、本発明者らによって提案されている「ＨｙＲＡＬ」について説明する。
「ＨｙＲＡＬ」は共通鍵ブロック暗号（および復号）方式の一種で、ファイステル構造の処理ブロックを有している。ファイステル構造の処理ブロックでは、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数のＳ−ＢＯＸ（Substitution Box：以下、「Ｓボックス」という）と呼ばれる非線形関数部に入力し、各非線形関数部の出力データをＭＤＳ（Maximum Distance Separable ）と呼ばれる線型関数部によって拡散させる。
【００２４】
図２は、「ＨｙＲＡＬ」における処理ブロックの基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Ｐｉ（Ｘｉ）」３０は、ラウンド鍵「ＲＫｉ」３１と排他的論理和演算（XOR）された後、ブロック暗号処理部３８に入力される。ブロック暗号処理部３８では、入力データ列「Ｐｉ（Ｘｉ）」３０とラウンド鍵「ＲＫｉ」３１との排他的論理和演算の結果をＴ転置３２で転置演算し、Ｓボックス３３に導く。Ｔ転置３２による転置演算結果が、暗号処理の際にテーブル３６に記録されているデータを索引する際に用いられる入力データ列となる。以下の説明では、このような、索引の際に用いられる入力データ列を「アドレス」と呼ぶ。
【００２５】
テーブル３６は、Ｓボックス３３とＭＤＳ３４とを含む。Ｓボックス３３は、上記のアドレスをもとにm（自然数）ビットの入力データ列をn（ｍ以外の自然数）ビットの出力データ列に変換する際に、入力（例えば平文）と出力（例えば暗号文）の相関を壊すための仕組みとして使用される。Ｓボックス３３は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、鍵によって動的に生成して使用する場合もある。Ｓボックス３３の出力は、ＭＤＳ３４に導かれる。
【００２６】
ＭＤＳ３４は、Ｓボックス３３の出力を線形変換処理する。ＭＤＳ３４の出力は、定数であるＣＳＴ３５と排他的論理和演算することにより、特異点（All Null）が解消された後、出力データ列「ΔＰｉ（Ｙｉ）」３７として出力される。「ＨｙＲＡＬ」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【００２７】
本実施形態では、サイドチャネル攻撃のうち、特にキャッシュ攻撃に着目する。キャッシュ攻撃は、アドレスによりテーブル３６のどのキャッシュブロック（キャッシュメモリ内のブロックの意、以下同じ）が索引され、テーブル参照データを得たのかを不正に知得し、アドレスとテーブル参照データとの相関関係から鍵ＲＫｉの解読を試みる攻撃手法である。例えば、図１に示すキャッシュ部１３におけるキャッシュメモリのブロックサイズを３２バイト、テーブル３６の１エントリーサイズを４バイトとすると、キャッシュメモリには８エントリー分のテーブル３６が収容される。攻撃者は、例えば暗号処理が開始される前に不正な手段を使って攻撃者の持つテーブル（図示せず）を上記キャッシュメモリに介在させ、アドレスとテーブル参照データの知得を試みる。この試みが成功すると、ラウンド鍵「ＲＫｉ」が攻撃者に窃取されてしまう。
そこで、本実施形態では、「ＨｙＲＡＬ」について、図３に示すような内容のデータ処理を行う。
【００２８】
［保護ツールが存在するデータ処理］
図３は、本実施形態のデータ処理における特徴の一つとなる初段処理のロジックであり、図４は２段目処理のロジックである。３段目処理以降は、２段目処理のロジックに準じて行われる。 図３において、左側はＣＰＵ１１が実行する図２の基本関数部分に相当し、右側は主として保護ツール１７が実行する擬似データの生成及び補正データの生成を行うための機能部分である。
図３左側に示される入力データ列「Ｐｉ（Ｘｉ）」１００は、ラウンド鍵「ＲＫｉ」１０１と排他的論理和演算された後、Ｔ１転置１０２で転置演算され、その演算結果が、Ｓボックス１０３に入力されるアドレスとなる。このアドレスを、便宜上、第１アドレスと呼ぶ。第１アドレスは、図２の例でいえば、テーブル１０８に直接入力される、本来のアドレスである。
【００２９】
図３右側を参照すると、保護ツール１７は、鍵「ＫＣｉ」１０９と「Ｎｕｌｌ」１１０との排他的論理和演算を行い、その演算結果をＳボックス１１１およびテーブル１１５へ出力する。以下の説明では、所定のルールに基づき、正規の暗号処理で使用するものとは異なるという意味で、鍵「ＫＣｉ」１０９を擬似鍵、Ｓボックス１１１を「擬似Ｓボックス」、テーブル１１５を「擬似テーブル」と呼ぶ。
擬似鍵「ＫＣｉ」等は、例えば、以下のルールで準備する。
・その鍵ＲＫｉから最も推測されにくい組み合わせのものを選ぶ。
・擬似Ｓボックスは、Ｓボックスと同じ内容とする。
・擬似テーブルは、テーブルと同じ内容とする。
【００３０】
「Ｎｕｌｌ」１１０は何のデータも持たないため、擬似鍵「ＫＣｉ」１０９と「Ｎｕｌｌ」１１０との排他的論理和演算の結果は、擬似鍵「ＫＣｉ」と同じとなる。この擬似鍵「ＫＣｉ」は擬似Ｓボックス１１１で非線形変換され、データα１となる。データα１は、第１アドレスが生成される前に生成されるため、データα１の生成に用いられる擬似Ｓボックス１１１は、キャッシュ攻撃の対象とはならない。
【００３１】
データα１は、Ｓボックス１０３から出力されるデータと排他的論理和演算され、データα２となる。データα２は、後述する図４で説明する２段目処理のために保存され、さらに、Ｓ＾−１ボックス１０４へ入力される。Ｓ＾−１ボックス１０４は、Ｓボックスの逆変換処理（非線形変換の逆の処理）を行うためのものであり、本例では、データα２の逆変換を行い、その結果を第１アドレスに対応しつつも第１アドレスとは異なる新たなアドレスとして、テーブル１０８へ入力させる。この新たなアドレスを、便宜上、第２アドレスと呼ぶ。
テーブル１０８では、第２アドレスを内部のＳボックス１０５で非線形変換した後、ＭＤＳ１０６で線形変換し、さらに、定数であるＣＳＴ１０７と排他的論理和演算して特異点（All Null）を解消することにより、テーブル参照データβ２を出力する。また、２段目処理のために、このテーブル参照データβ２を保存しておく。
【００３２】
他方、図３右側を参照し、擬似テーブル１１５では、擬似鍵「ＫＣｉ」１０９と「Ｎｕｌｌ」１１０との排他的論理和演算の結果を内部のＳボックス１１２で非線形変換した後、ＭＤＳ１１３で線形変換し、さらに、定数であるＣＳＴ１１４と排他的論理和演算して特異点（All Null）を解消することにより、補正データとして機能するテーブル参照データβ１を出力する。このテーブル参照データβ１をテーブル参照データβ２および定数であるＣＳＴ１１６と排他的論理和演算して、出力データ列「ΔＰｉ（Ｙｉ）」１１７を得る。なお、テーブル参照データβ１とＣＳＴ１１６との組み合わせを補正データとして扱っても良い。
【００３３】
この出力データ列「ΔＰｉ（Ｙｉ）」１１７は、Ｔ１転置１０２の演算結果でテーブル１０８にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ１は、擬似Ｓボックス１１１及び擬似テーブル１１５を用いることにより得られる補正データにより補正された、いわゆる正規処理によるテーブル参照データとなる。これについては、後で詳しく説明する。
なお、テーブル参照データβ１は、データα１と同様、第１アドレスが生成される前に処理される。そのため、テーブル参照データβ１を得るために参照される擬似テーブル１１５もまた、キャッシュ攻撃の対象とはならない。
【００３４】
次に、図４を参照して、本実施形態による２段目処理について説明する。この２段目処理は、基本的には、図３左側のロジックと同じ内容となる。すなわち、入力データ列「Ｐｉ（Ｘｉ）」２００（＝初段処理で出力される「ΔＰｉ（Ｙｉ）」）とラウンド鍵「ＲＫｉ」２０１との排他的論理和演算の結果がＴ２転置２０２で転置処理され、２段目処理における第１のアドレスを得る。この第１アドレスをＳボックス２０３で非線形変換し、変換結果と図３で説明した初段処理で得られたデータα２との排他的論理和演算を行い、データα３を生成する。
なお、図３のデータα１ではなく、データα２を用いるのは、初段処理と同じアドレスが生成されるのを防止するためである。
【００３５】
生成されたデータα３は、３段目処理で使用するために保存され、さらに、Ｓ＾−１ボックス２０４で逆変換される。この逆変換されたデータが、第１アドレスに対応する第２アドレスとして、テーブル２０８に入力される。
テーブル２０８では、この２段目処理の第２アドレスをＳボックス２０５で非線形変換した後、ＭＤＳ２０６で線形変換し、さらに、定数であるＣＳＴ２０７と排他的論理和演算して特異点（All Null）を解消することにより、テーブル参照データβ３を出力する。また、３段目処理のために、このテーブル参照データβ３を保存しておく。
最後に、テーブル参照データβ３を初段処理で得られたテーブル参照データβ２（この場合は、テーブル参照データβ２が補正データとなる）で補正し、さらに定数であるＣＳＴ２０９と排他的論理和演算して、出力データ列「ΔＰｉ（Ｙｉ）」２１０を得る。初段処理と同様、この出力データ列「ΔＰｉ（Ｙｉ）」２１０は、Ｔ２転置２０２の演算結果でテーブル２０８の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
３段目処理についても、データα２がデータα３、テーブル参照データβ２がテーブル参照データβ３となる以外は、図４と同じ内容となる。４段目以降もこれに準じた処理内容となる。
【００３６】
以上の図３及び図４のデータ処理において共通となる手順を示したのが図５である。
例えば図３の例で説明すると、ＣＰＵ１１は「ＨｙＲＡＬ」の暗号処理プログラムを主記憶部１４へ読み込ませて起動させる（ステップＳ１００）。これにより、正規の暗号処理を行う機能の他に、保護ツール１７の機能を有するデータ処理装置１０が構築される。
データ処理装置１０は、各種鍵すなわちラウンド鍵ＲＫｉと擬似鍵ＫＣｉとを生成する（ステップＳ１０１）。入力装置１０からの平文「Ｐｉ（Ｘｉ）」１００の入力を待ち（ステップＳ１０２：Ｎｏ）、平文の入力があったときは（ステップＳ１０２：ｙｅｓ）、ラウンド鍵ＲＫｉとの排他的論理和演算並びにその演算結果の転置処理により第１アドレスを生成し（ステップＳ１０３：ｙｅｓ）、それをＳボックス１０３に入力する。
また、擬似鍵ＫＣｉとＮＵＬＬとの排他的論理和演算を行い、さらに、擬似Ｓボックス１１１で非線形処理を行ってデータα１を生成する。そして、Ｓボックス１０３の出力とデータα１との排他的論理和演算により生成されたデータα２をＳ＾−１ボックス１０４に入力して第２のアドレスを生成し（ステップＳ１０４）、生成した第２のアドレスを、テーブル１０８へ入力する（ステップＳ１０４）。テーブル１０８は、この第２アドレスにより索引されるテーブル参照データβ２を出力する（ステップＳ１０５）。
このテーブル参照データβ２を擬似テーブル１１５からのテーブル参照データβ１で補正し（ステップＳ１０６）、補正されたテーブル参照データを次段処理へ伝達する（ステップＳ１０７）。
【００３７】
＜キャッシュ攻撃に対する効用＞
以上の説明の通り、本実施形態では、本来、直ちにテーブル１０８に入力されるはずのアドレス（第１アドレス）に代えて、その第１アドレスをＳボックス１０３で非線形変換した後、変換結果とデータα１との排他的論理和演算結果をＳ＾−１ボックス１０４で非線形変換して生成した第２アドレスをテーブル１０８に導くようにしているので、攻撃者が不正手段によってテーブル１０８へのアクセス状況、すなわち第２アドレスとテーブル参照データβ２の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、ラウンド鍵ＲＫｉを解読することは不可能となる。
また、第２アドレスによって索引されたテーブル参照データβ２は、テーブル参照データβ１及びＣＳＴ１１６によって補正され、Ｔ１転置１０２の転置処理により得られたアドレスでアクセスされたときにテーブル１０８から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。
これにより、テーブル１０８へのキャッシュ攻撃を無意味なものとすることができる。
【００３８】
このことを、さらに詳しく説明する。前提として、Ｓボックス１０３（擬似Ｓボックス１１１）が図６のような固定テーブル、Ｓ＾−１ボックス１０４を図６のような固定テーブルとして定義されているものとする。Ｓボックス１０３及びＳ＾−１ボックス１０４は、いずれも例えば１バイトの入力に対して１バイトを出力する。すなわち、入力されるデータのうち、上位４ビットのデータと下位４ビットのデータを用いて固定テーブルを参照する。図６及び図７に例示されるデータはすべて１６進数であり、上位４ビット、下位４ビットでデータを特定できることを示している。また、図７中のＴ１（Ａ）及びＴ２（Ｂ）は、「ＨｙＲＡＬ」の基本関数に含まれる８種類の転置処理のうち第１転置（Ｔ１）及び第２転置（Ｔ２）の具体的な処理内容例を示している。図７中のＴ１（Ａ）及びＴ２（Ｂ）に図示されるＸ０’ 、Ｘ１’ 、Ｘ２’ 、Ｘ３’のそれぞれは、入力の８ビット要素を表し、ｂ０、ｂ１、ｂ２、ｂ３のそれぞれは、転置処理がされた出力の８ビット要素である。保護ツール１７の動作前後にかかわらず、第１転置（Ｔ１）が使用され、２段目処理では第２転置（Ｔ２）が使用される。
【００３９】
図７中のＭＤＳ行列式（Ｃ）はＭＤＳ１０６（１１３）の具体例を示している。ＭＤＳ行列式（Ｃ）の右辺に示されるａ０、ａ１、ａ２、ａ３のそれぞれは、入力の８ビット要素を表し、ＭＤＳ行列式（Ｃ）の左辺に示されるｃ０、ｃ１、ｃ２、ｃ３のそれぞれは、行列により線形変換処理がされる出力の８ビット要素である。
【００４０】
以上の前提のもと、図３に示した初段処理のロジックにおける具体的な処理結果例を図８に示す。この例では、入力データ列「Ｐｉ（Ｘｉ）」及び出力データ列「ΔＰｉ（Ｙｉ）」が３２ビットの例を示している。入力データ列「Ｐｉ（Ｘｉ）」を例えば「49、2a、d2、de」、ラウンド鍵「ＲＫｉ」を例えば「00、00、00、00」とすると、両者の排他的論理和により「49、2a、d2、de」のデータα１が得られる。このデータα１に対して図７に示す内容のＴ１転置処理を行うことにより第１アドレス「49、2a、d2、de」が得られる。さらに、この第１アドレスに図６のＳボックス１０３で非線形変換処理を行うことで「fc、17、cc、b4」のデータを得る。
【００４１】
また、ラウンド鍵「ＲＫｉ」の一部を使用して生成された擬似鍵「ＫＣｉ」を「88、bc、86、0d」とし、この擬似鍵「ＫＣｉ」に図６に示すＳボックス１１１で非線形変換処理を行うことにより「ce、7f、b8、ef」のデータα１が得られる。このデータα１を、Ｓボックス１０３から出力されたデータ列「fc、17、cc、b4」と排他的論理和演算して「32、68、74、5b」のデータα２を得、さらに、データα２を、図６に示すＳ＾−１ボックスで非線形変換処理することにより第２アドレス「a3、67、df、60」が得られる。この第２アドレスが、攻撃者が注目しているテーブル１０８へと導かれる。テーブル１０８では第２アドレスを図６に示すＳボックス１０５で非線形変換した後、図７に示すＭＤＳ行列式で線形変換し、さらに、定数であるＣＳＴ１０７と排他的論理和演算することにより「4c、9e、a0、ff」のテーブル参照データβ２を得る。
【００４２】
他方、擬似テーブル１１５では、図６に示すＳボックス１１２で非線形変換処理を行った後、図７にその内容例を示すＭＤＳ１１３で線形変換し、さらに、定数であるＣＳＴ１１４と排他的論理和演算することで「5d、bc、e4、77」のテーブル参照データβ１を得る。このテーブル参照データβ１をテーブル参照データβ２およびＣＳＴ（図中の「11、22、44、88」）と排他的論理和演算することにより「00、00、00、00」の出力データ列「ΔＰｉ（Ｙｉ）」を得る。この出力データが、保護ツールが存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【００４３】
図９は、保護ツールが存在しない場合の初段処理のロジックである。入力データ列「Ｐｉ（Ｘｉ）」は、図８に示したものと同様、「49、2a、d2、de」であり、ラウンド鍵「ＲＫｉ」も「00、00、00、00」とする。これらの排他的論理和演算結果について図７に示すＴ１転置処理により得られる値、すなわちアドレス（第１アドレスに相当）は「49、2a、d2、de」となる。このアドレスがテーブル１０８へ導かれ、Ｓボックスで非線形変換された後、ＭＤＳ１０６で線形変換され、さらに、定数であるＣＳＴと排他的論理和演算されて出力データ列「ΔＰｉ（Ｙｉ）」となる。この出力データ列「ΔＰｉ（Ｙｉ）」は、図１０に示した初段処理におけるロジック処理と同一の「00、00、00、00」となる。
【００４４】
以上の関係は、２段目処理についても同様となる。すなわち、図１０は２段目処理のロジックであるが、例えば入力データ列「Ｐｉ（Ｘｉ）」を「49、2a、d2、de」、ラウンド鍵「ＲＫｉ」を「00、00、00、00」とすると、両者の排他的論理和演算後、図７に示すＴ２転置処理で演算されることにより得られる第１アドレスは「2a、d2、de、49」となる。この演算結果にＳボックスで非線形変換をすると「17、cc、b4、fc」となる。
データα２は、図８処理により得られた「32、68、74、5b」であり、Ｓボックスから出力された「17、cc、b4、fc」と排他的論理和演算した結果が「25、a4、c0、a7」のデータα３となる。このデータα３を、図６に示すＳ＾−１ボックスによる非線形変換をすることにより「36、b5、cd、30」となる。この結果がテーブルへと導かれる。テーブルではこの結果を図６に示すＳボックスで非線形変換した後、図７に示すＭＤＳ行例式で線形変換し、さらに、定数であるＣＳＴと排他的論理和演算することにより、「b5、9a、dd、ca」のデータβ３が得られる。データβ２は図８に示す処理のものと同一の「4c、9e、a0、ff」であり、このデータβ２をデータβ３および定数であるＣＳＴ（「11、22、33、44」）と排他的論理和演算した出力データ列「ΔＰｉ（Ｙｉ）」が「e8、26、39、bd」である。
【００４５】
図１１は、保護ツールが存在しない場合の２段目処理のロジックである。入力データ列「Ｐｉ（Ｘｉ）」及び出力データ列「ΔＰｉ（Ｙｉ）」は３２ビットである。 図１１に例示される入力データ列「Ｐｉ（Ｘｉ）」を、図１０に示した２段目処理のロジックと同一の「49、2a、d2、de」とし、ラウンド鍵「ＲＫｉ」も同一の「00、00、00、00」とする。入力データ列「Ｐｉ（Ｘｉ）」と、ラウンド鍵「ＲＫｉ」との排他的論理和演算された結果は「49、2a、d2、de」となる。この排他的論理和演算の結果に図７に示すＴ２転置により演算した結果が「2a、d2、de、49」である。この結果がテーブルへ導かれる。テーブルではこの結果を図６に示すＳボックスで非線形変換した後、図７に示すＭＤＳ行例式で線形変換する。この線形変換結果に、定数であるＣＳＴと排他的論理和演算した出力データ列「ΔＰｉ（Ｙｉ）」は、図１０に示した初段処理におけるロジック処理と同一の図中「e8、26、39、bd」となる。
上述の説明のように、補正されたデータ処理は、正規の暗号処理における処理の結果に影響を与えないものであることがわかる。
【００４６】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしても鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。
更に、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【００４７】
［第２実施形態］
次に、本発明を公知のアルゴリズムである「ＡＥＳ」に適用した実施の形態例を説明する。なお、データ処理装置１０のハードウエア構成等については、第１実施形態と同様であるので、同じ符号を用い、重複説明を省略する。
【００４８】
［保護ツールが存在しない場合のデータ処理］
まず、保護ツール１７が存在しない場合の一般的なデータ処理の概要を説明する。
「ＡＥＳ」は、必要な全てのデータ処理を４×４マスの２次元配列のデータ形式で行うため、最初に入力されるデータには図示しない「初期化処理」を行う。「初期化処理」は、入力されたデータ列を８ビット毎に区切り４×４マスの２次元配列に振り分け、さらに、ラウンド鍵ＲＫｉも８ビット毎に区切り４×４マスの２次元配列に振り分け、これらの排他的論理和演算を行う。
「ＡＥＳ」は共通鍵ブロック暗号（および復号）方式の一種で、ＳＰＮ（Substitution Permutation Network）構造の処理ブロックを有している。ＳＰＮ構造の処理ブロックでは、上述したフェイステル構造と同様、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データを分割し、得られた各データ列を、それぞれ複数の「SubBytes」と呼ばれる非線形関数部に入力し、各非線形関数部の出力データを「MixColumns」と呼ばれる線型関数部によって拡散させる。
【００４９】
図１２は、「ＡＥＳ」の基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Ｐｉ（Ｘｉ）」６０（初期化処理がされた入力データを含む）は、ブロック暗号処理部６７に入力される。
【００５０】
ブロック暗号処理部６７では、入力データ列「Ｐｉ（Ｘｉ）」６０を受け、「ShiftRows」６１で転置演算し、「SubBytes」６２に導く。「ShiftRows」６１による転置演算結果が、暗号処理等の際にテーブル６４に記録されているデータを索引する際に用いられるアドレスとなる。
テーブル６４は、「SubBytes」６２と「MixColumns」６３とを含む。「SubBytes」６２は、上記のアドレスをもとにm（自然数）ビットの入力データ列をn（ｍ以外の自然数）ビットの出力データ列に変換する際に、入力（例えば平文）と出力（例えば暗号文）の相関を壊すための仕組みとして使用される。「SubBytes」６２は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、ラウンド鍵等によって動的に生成して使用する場合もある。「SubBytes」６２の出力は「MixColumns」６３に導かれる。
【００５１】
「MixColumns」６３は、「SubBytes」６２の出力を線形変換処理する。「MixColumns」６３の出力は、ラウンド鍵「ＲＫｉ」６５と排他的論理和演算され、出力データ列「ΔＰｉ（Ｙｉ）」６６として出力される。「ＡＥＳ」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【００５２】
キャッシュ攻撃についての事情は、第１実施形態の場合と同様である。この実施形態では、「ＡＥＳ」の暗号処理をキャッシュ攻撃から保護するためのデータ処理について説明する。
【００５３】
［保護ツールが存在するデータ処理］
図１３は、本実施形態における初段処理のロジックであり、図１４は２段目処理のロジックである。３段目処理以降は、２段目処理のロジックに準じて行われる。図１３において、左側はＣＰＵ１１が実行する図１２の「ＡＥＳ」の基本関数部分に相当し、右側は主として保護ツール１７が実行する、擬似データ及び補正データを生成するための機能部分である。
図１３左側に示される初期化処理がされた入力データ列「Ｐｉ（Ｘｉ）」６１６は、「ShiftRows」６１７で転置演算される。この転置演算の結果が、「SubBytes」６１１に入力される第１アドレスとなる。
【００５４】
図１３右側を参照すると、保護ツール１７は、鍵「ＫＣｉ」６２０を「SubBytes」６１２およびテーブル６１５へ出力する。本実施形態においても、第１実施形態の場合と同様、鍵「ＫＣｉ」６２０を擬似鍵、「SubBytes」６１２を「擬似SubBytes」、テーブル６１５を「擬似テーブル」と呼ぶ。擬似鍵「ＫＣｉ」等を準備する際のルールは、第１実施形態と同じである。
【００５５】
疑似鍵「ＫＣｉ」は「疑似SubBytes」６１２で非線形変換され、データα１となる。データα１は、第１アドレスが生成される前に処理される。そのため、データα１の生成に用いられる「疑似SubBytes」６１２は、キャッシュ攻撃の対象とはならない。
【００５６】
データα１は、「SubBytes」６１１から出力されるデータと排他的論理和演算され、データα２となる。データα２は、図１４で説明する２段目処理のために保存され、さらに、「InvSubBytes」６１３へ入力される。「InvSubBytes」６１３は、「SubBytes」の逆変換処理（非線形変換の逆の処理）を行うためのものであり、本例では、データα２の逆変換を行い、その結果を第１アドレスに対応しつつも第１アドレスとは異なる新たなアドレス、すなわち第２アドレスとして、テーブル６１４へ導く。
テーブル６１４では、第２アドレスを内部の「SubBytes」６１８で非線形変換した後、「MixColumns」６１９で線形変換することにより、データβ２を出力する。また、２段目処理のために、このデータβ２を保存しておく。
【００５７】
他方、図１３右側を参照し、疑似テーブル６１５では、疑似鍵「ＫＣｉ」６２０を内部の「SubBytes」６２１で非線形変換を行った後、「MixColumns」６２２で線形変換し、さらに、何のデータも持たない「Ｎｕｌｌ」６２３との排他的論理和演算をすることで、テーブル参照データβ１を出力する。このテーブル参照データβ１をテーブル参照データβ２およびラウンド鍵「ＲＫｉ」６２４と排他的論理和演算することで出力データ列「ΔＰｉ（Ｙｉ）」６２５を得る。この出力データ列「ΔＰｉ（Ｙｉ）」６２５は、「ShiftRows」６１７の演算結果でテーブル６１４にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ１は、「疑似SubBytes」６１２及び擬似テーブル６１５を用いることにより得られるデータで補正された、いわゆる正規処理によるテーブル参照データとなる。
なお、テーブル参照データβ１は、データα１と同様、第１アドレスが生成される前に処理される。そのため、テーブル参照データβ１を得るために参照される疑似テーブル６１５は、キャッシュ攻撃の対象とはならない。
【００５８】
次に、図１４を参照して、本実施形態による２段目処理について説明する。この２段目処理は、基本的には、図１３左側のロジックと同じ内容となる。すなわち、入力データ列「Ｐｉ（Ｘｉ）」６２６（＝初段処理で出力される「ΔＰｉ（Ｙｉ）」）は、「ShiftRows」６２７で転置演算され、２段目処理における第１のアドレスを得る。この第１アドレスを「SubBytes」６２８で非線形変換し、変換結果と図１３で説明した初段処理で得られたデータα２との排他的論理和演算を行い、データα３を生成する。
図１３のデータα１ではなく、データα２を用いるのは、第１実施形態の場合と同様である。
【００５９】
生成されたデータα３は、３段目処理で使用するために保存され、さらに、「InvSubBytes」６２９で逆変換される。この逆変換されたデータが、第１アドレスに対応する第２アドレスとして、テーブル６３２に入力される。テーブル６３２では、この２段目処理の第２アドレスを「SubBytes」６３０で非線形変換した後、「MixColumns」６３１で線形変換することにより、テーブル参照データβ３を出力する。また、３段目処理のために、このテーブル参照データβ３を保存しておく。
最後に、テーブル参照データβ３を初段目処理で得られたテーブル参照データβ２およびラウンド鍵「ＲＫｉ」６３３と排他的論理和演算して、出力データ列「ΔＰｉ（Ｙｉ）」６３４を得る。初段処理と同様、この出力データ列「ΔＰｉ（Ｙｉ）」６３４は、「ShiftRows」６２７の演算結果でテーブル６３２の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
【００６０】
３段目処理以降の処理についても、データα２がデータα３、テーブル参照データβ２がテーブル参照データβ３となる以外は、図１４と同じ内容となる。４段目以降も同様となる。
【００６１】
以上の図１３及び図１４のデータ処理において共通となる手順は、基本的には第１実施形態において示した図５と同様となる。
【００６２】
＜キャッシュ攻撃に対する効用＞
以上の説明の通り、本実施形態においても、攻撃者が不正手段によってテーブル６１４へのアクセス状況、すなわち第２アドレスとデータβ２の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、鍵ＲＫｉを解読することは不可能となる。
また、第２アドレスによって索引されたテーブル参照データβ２は、保護ツール１７の処理によって得られたテーブル参照データβ１およびラウンド鍵「ＲＫｉ」６２４と排他的論理和演算され、「ShiftRows」６１７の転置演算結果によってアクセスされたときにテーブル６１４から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。これにより、テーブル６１４へのキャッシュ攻撃を無意味なものとすることができる。
【００６３】
このことを、詳しく説明する。図１５は、図１３に示した初段処理のロジックにおける主要な処理結果を論理式を用いて例示している。図１５左側に示される初期化処理がされた入力データ列「Ｐｉ（Ｘｉ）」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果がＳ（Ｐｉ ）である。
【００６４】
図１５右側を参照すると、疑似鍵「ＫＣｉ」を「疑似SubBytes」で非線形変換した結果がＳ（ＫＣｉ）である。  このＳ（ＫＣｉ）と「SubBytes」から出力されるＳ（Ｐｉ ）とを排他的論理和演算した結果がＳ（Ｐｉ ）○Ｓ（ＫＣｉ）（○は排他的論理和演算記号とする。以下同じ）である。この結果を「InvSubBytes」並びに「SubBytes」で非線形変換されることとなるが、「InvSubBytes」とテーブル内部の「SubBytes」の処理は互いに打ち消しあい、これらの処理結果はＳ（Ｐｉ ）○Ｓ（ＫＣｉ）である。このＳ（Ｐｉ ）○Ｓ（ＫＣｉ）をテーブル内部の「MixColumns」で線形変換した結果はＰ［Ｓ（Ｐｉ）○Ｓ（ＫＣｉ）］であり、「MixColumns」は線形変換のためＰ［Ｓ（Ｐｉ）］○Ｐ［Ｓ（ＫＣｉ）］とも示せる。
【００６５】
他方、図１５右側を参照し、疑似鍵「ＫＣｉ」６２０を疑似テーブル内部の「SubBytes」で非線形変換した結果がＳ（ＫＣｉ）である。このＳ（ＫＣｉ）を疑似テーブル内部の「MixColumns」で線形変換し、さらに、「Ｎｕｌｌ」との排他的論理和演算した結果がＰ［Ｓ（ＫＣｉ）］である。このＰ［Ｓ（ＫＣｉ）］を、図１５右側のＰ［Ｓ（Ｐｉ）］○Ｐ［Ｓ（ＫＣｉ）］およびラウンド鍵「ＲＫｉ」と排他的論理和演算した結果はＰ［Ｓ（Ｐｉ）］○Ｐ［Ｓ（ＫＣｉ）］○Ｐ［Ｓ（ＫＣｉ）］○ＲＫｉであるが、Ｐ［Ｓ（ＫＣｉ）］はこの演算により打消され、Ｐ［Ｓ（Ｐｉ）］○ＲＫｉが出力データ列「ΔＰｉ（Ｙｉ）」となる。この出力データが、保護ツール１７の機能が存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【００６６】
次に、図１６を参照して、保護ツール１７の機能が存在しない場合の初段処理のロジックにおける主要な処理を説明する。初期化処理がされた入力データ列「Ｐｉ（Ｘｉ）」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果が図に示すＳ（Ｐｉ ）である。ここまでの処理は、図１５に示すものと同じである。このＳ（Ｐｉ ）をテーブル内部の「MixColumns」で線形変換処理した結果がＰ［Ｓ（Ｐｉ）］である。このＰ［Ｓ（Ｐｉ）］とラウンド鍵「ＲＫｉ」と排他的論理和演算したものがＰ［Ｓ（Ｐｉ）］○ＲＫｉであり、出力データ列「ΔＰｉ（Ｙｉ）」は図１５の出力データと同じである。
上述の説明のように、本実施形態のデータ処理もまた、第１実施形態と同様、正規の暗号処理における処理の結果に影響を与えないものである。
【００６７】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしてもラウンド鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。また、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【００６８】
［変形例］
第１、第２実施形態では、スタンドアロン型のデータ処理装置１０の例を示したが、これらの実施形態以外にもネットワーク型として本発明の処理を含む暗号処理等のデータ処理システムを構成することもできる。
【００６９】
また、第１、第２実施形態では、保護ツール１７が、データ処理装置１０の内部機能の一つとして説明したが、データ処理装置１０と連携可能に独立して存在する装置として存在しても良く、また、保護ツール１７相当の機能が他の機能に組み込まれて存在するものであっても良い。
【符号の説明】
【００７０】
１０・・・暗号装置、１１・・・ＣＰＵ、１２・・・演算部、１３・・・キャッシュ部、１４・・・主記憶部、１５・・・補助記憶部、１６・・・入出力制御部、１７・・・保護ツール、１８・・・表示装置、１９・・・入力装置。
【図１】
2012023618.tif 000003
【図２】
2012023618.tif 000004
【図３】
2012023618.tif 000005
【図４】
2012023618.tif 000006
【図５】
2012023618.tif 000007
【図６】
2012023618.tif 000008
【図７】
2012023618.tif 000009
【図８】
2012023618.tif 000010
【図９】
2012023618.tif 000011
【図１０】
2012023618.tif 000012
【図１１】
2012023618.tif 000013
【図１２】
2012023618.tif 000014
【図１３】
2012023618.tif 000015
【図１４】
2012023618.tif 000016
【図１５】
2012023618.tif 000017
【図１６】
2012023618.tif 000018