暗号装置及び暗号プログラム
【課題】キャッシュ攻撃などに対してデータ処理装置などを保護する。
【解決手段】入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置に対し、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を正規データ列に代えて処理ブロックへ入力し、処理ブロックと等価の擬似処理ブロックと擬似データ列を生成する際に用いた基礎データを擬似処理ブロックに入力して補正データを生成し、擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを補正データで補正することで、当該擬似結果データを正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する。
【解決手段】入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置に対し、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を正規データ列に代えて処理ブロックへ入力し、処理ブロックと等価の擬似処理ブロックと擬似データ列を生成する際に用いた基礎データを擬似処理ブロックに入力して補正データを生成し、擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを補正データで補正することで、当該擬似結果データを正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、暗号化処理又は復号処理の際にサイドチャネル攻撃を受ける可能性のあるデータ処理装置を効果的に保護する技術に関する。ここで「サイドチャネル攻撃」(side-channel attack)とは、データ処理装置の動作状況を様々な物理的手段で観察することにより、装置内部で行われている処理内容を窃取しようとする攻撃方法である。
【背景技術】
【0002】
サイドチャネル攻撃の一つとして「キャッシュ攻撃」がある。キャッシュ攻撃は、キャッシュメモリが搭載されたCPU上で実行される暗号プログラムや復号プログラムに対して行われ、処理の観察結果から秘密鍵を推測する。キャッシュ攻撃では、特に、テーブル参照演算が行われる繰り返し型のブロック方式などが攻撃の対象となる。
【0003】
キャッシュ攻撃には、様々な態様があるが、ある態様では以下のようにして行われる。ブロック方式の暗号処理では、一般的に入力値と秘密鍵との排他的論理和演算した結果を使用してテーブルの記録内容を取得しながら処理が進む。暗号処理前は、アドレスにより指定されるテーブルの記録内容がキャッシュメモリ内には読み込まれていないとする。暗号処理が行われている最中は、入力データ列により指定されたテーブルの記録内容がキャッシュメモリから取得されるか、メインメモリから取得されるかは入力値と秘密鍵に依存することとなる。つまり、入力値を変化させることによって、全体の暗号処理の時間が変化することになる。
【0004】
他のキャッシュ攻撃の態様では、例えば、1ブロック(例えば公知の「AES (Advanced Encryption Standard) 」の場合では128ビット)毎の暗号処理時間を計測する。この態様では、入力データ列により特定されるテーブルの記録内容に対して2回同じアクセスをした場合では、2回目にはキャッシュメモリから当該記録内容を取得するためアクセス時間が短くなることを利用している。攻撃者の攻撃の手順としては、まず、1ブロック暗号化するごとにキャッシュメモリの内容をクリアにする。そして、ある2つのテーブル参照演算に着目し、その2つのテーブル参照演算に用いられる入力データ列に影響する秘密鍵をある値として仮定する。そして、その仮定の下で2つのテーブル参照演算の入力データ列が同一となるような入力値を選択してそのアクセス時間を計測する。この作業を考えられる全ての秘密鍵の値に対して実行する。最終的には、最もアクセス時間の短かった鍵を正解の鍵として出力する。その後、また別の2つのテーブル参照演算に着目し、同様の攻撃を繰り返すことで秘密鍵を解読しようとする。
【0005】
他のキャッシュ攻撃の態様では、例えば、攻撃者が持つテーブルを暗号プログラムなどが暗号処理を開始する前にキャッシュメモリ内に介入させる。そして、1暗号処理ごとにキャッシュメモリのキャッシュ状態を検査して秘密鍵を解読しようとする。この手法は、「Prime+probe法」などと呼ばれる。これは、攻撃者がキャッシュメモリ状態を検査することでテーブルのどの記録内容を参照したかを探り、その結果から入力データ列を推測して秘密鍵を解読しようとする。
【0006】
このようなキャッシュ攻撃の対策として、特許文献1には、1つの平文または暗号文の暗号処理又は復号処理における変換表に対するアクセス時に、要求された命令や値がキャッシュメモリ上に存在しない場合の回数を、任意の平文または暗号文についてほぼ均一化する調整手段を備える暗号装置が開示されている。この暗号装置によれば、任意の平文または暗号文についての暗号時間または復号時間がほぼ同じとなるため、キャッシュ攻撃に対して耐性を持たせることができるとされている。
【0007】
また、特許文献2に開示された技術では、部分データに対応する変換データを含む変換表を備え、この変換表に含まれる変換データを取得する際に、最初に、キャッシュメモリのライン記憶領域から当該変換データの取得を試み、ライン記憶領域に当該変換データが存在しない場合に、主メモリから当該変換データを取得し、取得した変換データを含む所定長の包含データをライン記憶領域に書き込む。変換表は、所定長のライン表領域を有しており、このライン表領域の所定位置において部分データに対応する1個の変換データを含み、ライン表領域の他の位置において変換に無関係のデータを含むものとしている。これにより、キャッシュメモリのライン記憶領域には1個の変換データが含まれるので、入力メッセージを変化させても暗号又は復号処理の処理時間が一定となるため、処理時間を観測するタイミング攻撃に対する耐性は向上するとしている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−120307号公報
【特許文献2】再表2005/103908号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、特許文献1及び特許文献2に開示された技術では、攻撃者がキャッシュメモリのキャッシュ状態を検査してテーブルに含まれるどの記録内容を索引したのかを探り、その結果からアドレスを推測して秘密鍵を解読しようとする攻撃から保護することはできない。さらに、キャッシュ攻撃に関する研究が近年盛んに進んでおり、新たな保護手段の開発も要望されている。
【0010】
本発明は、キャッシュ攻撃あるいはその他のサイドチャネル攻撃の対象となる可能性のある処理ブロックの保護機能を有するデータ処理装置、保護方法及びコンピュータプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決する本発明のデータ処理装置は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、前記処理ブロックと等価の擬似処理ブロックと、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る。
【0012】
このデータ処理装置によれば、装置全体の処理結果は同一でありながら、その中間過程の処理ブロックの内容が正規の処理結果と異なるため、処理ブロックにおける処理の最中に例えばどのデータが参照されたのかが攻撃者に窃取されたとしても、本来の入力データ列を推測することができない。また、攻撃者は正規の入力データ列を推測することができないため、データ参照演算などにおけるアクセス時間の差を利用した攻撃からも保護することができる。
【0013】
上記データ処理装置における、より具体的な態様として、以下のものが挙げられる。
(1)前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する。これにより、例えばキャッシュ攻撃を受けても、処理ブロックの正規の処理内容が外部に漏洩することが無くなる。
(2)前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される。初段の処理ブロックの処理内容を保護することにより、後段の処理ブロックにおける処理内容が、より強固に保護される。
(3)前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである。
ファイステル(Feistel)構造では、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数の非線形関数部に入力し、各非線形関数部の処理結果を線型関数処理によって拡散する。従って、本発明のデータ処理装置により、初段の関数ブロックを保護することにより、すべての関数ブロックの処理結果の漏洩を効果的に防止することができる。
なお、前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで構成する場合がある。特に、前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る場合がある。このような構成が採用される場合も、正しいテーブル参照データが出力されないため、これらの監視は無意味なものとなる。
【0014】
本発明は、データ処理装置の保護方法をも提供する。
本発明の保護方法は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、データ処理装置の保護方法である。
【0015】
本発明は、コンピュータプログラムをも提供する。
本発明が提供するコンピュータプログラムは、コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、前記コンピュータを、以下のように機能させるものである。
(1)正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
(2)前記処理ブロックと等価の擬似処理ブロック、
(3)前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段。
【発明の効果】
【0016】
本発明では、サイドチャネル攻撃を受けても、処理ブロックの処理内容が正規のものと異なるものとなっているため、攻撃者の行為が無意味なものとなり、秘密情報の漏洩が起きないという特有の効果が得られる。更に、攻撃者には本来の入力データ列も推測できないため、テーブル参照演算におけるアクセス時間の差を利用した攻撃からも保護できることとなる。
【図面の簡単な説明】
【0017】
【図1】第1実施形態の全体の構成例図。
【図2】暗号/復号アルゴリズムの一例である「HyRAL」の関数フロー図。
【図3】第1実施形態の初段処理フロー図。
【図4】第1実施形態の2段目処理フロー図。
【図5】第1実施形態の処理手順。
【図6】Sボックステーブル及びS^−1ボックステーブルの模式図。
【図7】転置演算及びMDS行列式例図。
【図8】第1実施形態の初段処理の演算例図。
【図9】暗号/復号アルゴリズムの一例である「HyRAL」初段処理の演算例図。
【図10】第1実施形態の2段目処理の演算例図。
【図11】暗号/復号アルゴリズムの一例である「HyRAL」2段目処理の演算例図。
【図12】暗号/復号アルゴリズムの一例である「AES」の関数フロー図。
【図13】第2実施形態の初段処理フロー図。
【図14】第2実施形態の2段目処理フロー図。
【図15】第2実施形態の初段処理の演算例図。
【図16】暗号/復号アルゴリズムの一例である「AES」初段処理の演算例図。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態例を、図面を参照して詳細に説明する。
[第1実施形態]
<全体構成>
図1は、本発明を適用したデータ処理装置のハードウエア構成例を示した図であり、主たる特徴部分を掲示してある。このデータ処理装置10は、例えば、キャッシュメモリを搭載した汎用のコンピュータ装置が本発明の暗号処理用のコンピュータプログラムおよび必要なデータを読み込んで実行することにより実現される。
データ処理装置10には、ディスプレイ、プリンタ又は外部記憶装置のような出力装置18、ポインティングディバイスやキーボード等の入力装置19が接続されている。データ処理装置10には、一般的なコンピュータが備えるハードウエア資源、すなわち、入出力制御部16、CPU(Central Processing Unit)11、主記憶部14、補助記憶部15も備えられている。
【0019】
CPU11は、演算部12とキャッシュ部13を含む。演算部12は、コンピュータプログラムの実行に伴う演算などを行う。CPU11は、データ処理を実現するために各機能ブロック14、15、16、17などの起動を含む各種動作の制御も行う。
キャッシュ部13は、主記憶部14に記憶されている各種データの一部又は全部を図示しないキャッシュメモリに保持し、演算部12からの命令に対して、対応するデータ等が存在する場合は、それらをキャッシュメモリから読み出して直ちに演算部12へ伝達する。他方、演算部12からの命令に対して、対応するデータ等が存在しなければ、そのデータ等を主記憶部14から読み出してキャッシュメモリに格納するとともに当該データ等を演算部12へ伝達する。
【0020】
補助記憶部15には、コンピュータプログラム及びデータ処理に必要なデータが格納されており、適宜、主記憶部14へ読み込まれて展開されるようになっている。
【0021】
入出力制御部16は、入力装置19から必要な入力、例えば暗号処理時は平文、復号処理時には暗号文を受け付け、各処理に必要な情報を各機能ブロックへ伝達する。入出力制御部16は、図示しないインターネット網などのネットワークを介して必要な入力を受け付けることもできる。入出力制御部16は、また、暗号処理の結果情報を出力装置18へ出力する。
【0022】
保護ツール17は、例えば、補助記憶部15に格納されているコンピュータプログラムと連携して、あるいは、単独で動作するファームウエアであり、キャッシュ攻撃の対象となるテーブルを保護するように動作する。
【0023】
[保護ツールが存在しない場合のデータ処理]
本発明のデータ処理装置10の動作説明に先立ち、保護ツール17が存在しない場合の一般的なデータ処理の概要を説明する。この実施形態では、本発明者らによって提案されている「HyRAL」について説明する。
「HyRAL」は共通鍵ブロック暗号(および復号)方式の一種で、ファイステル構造の処理ブロックを有している。ファイステル構造の処理ブロックでは、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数のS−BOX(Substitution Box:以下、「Sボックス」という)と呼ばれる非線形関数部に入力し、各非線形関数部の出力データをMDS(Maximum Distance Separable )と呼ばれる線型関数部によって拡散させる。
【0024】
図2は、「HyRAL」における処理ブロックの基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Pi(Xi)」30は、ラウンド鍵「RKi」31と排他的論理和演算(XOR)された後、ブロック暗号処理部38に入力される。ブロック暗号処理部38では、入力データ列「Pi(Xi)」30とラウンド鍵「RKi」31との排他的論理和演算の結果をT転置32で転置演算し、Sボックス33に導く。T転置32による転置演算結果が、暗号処理の際にテーブル36に記録されているデータを索引する際に用いられる入力データ列となる。以下の説明では、このような、索引の際に用いられる入力データ列を「アドレス」と呼ぶ。
【0025】
テーブル36は、Sボックス33とMDS34とを含む。Sボックス33は、上記のアドレスをもとにm(自然数)ビットの入力データ列をn(m以外の自然数)ビットの出力データ列に変換する際に、入力(例えば平文)と出力(例えば暗号文)の相関を壊すための仕組みとして使用される。Sボックス33は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、鍵によって動的に生成して使用する場合もある。Sボックス33の出力は、MDS34に導かれる。
【0026】
MDS34は、Sボックス33の出力を線形変換処理する。MDS34の出力は、定数であるCST35と排他的論理和演算することにより、特異点(All Null)が解消された後、出力データ列「ΔPi(Yi)」37として出力される。「HyRAL」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【0027】
本実施形態では、サイドチャネル攻撃のうち、特にキャッシュ攻撃に着目する。キャッシュ攻撃は、アドレスによりテーブル36のどのキャッシュブロック(キャッシュメモリ内のブロックの意、以下同じ)が索引され、テーブル参照データを得たのかを不正に知得し、アドレスとテーブル参照データとの相関関係から鍵RKiの解読を試みる攻撃手法である。例えば、図1に示すキャッシュ部13におけるキャッシュメモリのブロックサイズを32バイト、テーブル36の1エントリーサイズを4バイトとすると、キャッシュメモリには8エントリー分のテーブル36が収容される。攻撃者は、例えば暗号処理が開始される前に不正な手段を使って攻撃者の持つテーブル(図示せず)を上記キャッシュメモリに介在させ、アドレスとテーブル参照データの知得を試みる。この試みが成功すると、ラウンド鍵「RKi」が攻撃者に窃取されてしまう。
そこで、本実施形態では、「HyRAL」について、図3に示すような内容のデータ処理を行う。
【0028】
[保護ツールが存在するデータ処理]
図3は、本実施形態のデータ処理における特徴の一つとなる初段処理のロジックであり、図4は2段目処理のロジックである。3段目処理以降は、2段目処理のロジックに準じて行われる。 図3において、左側はCPU11が実行する図2の基本関数部分に相当し、右側は主として保護ツール17が実行する擬似データの生成及び補正データの生成を行うための機能部分である。
図3左側に示される入力データ列「Pi(Xi)」100は、ラウンド鍵「RKi」101と排他的論理和演算された後、T1転置102で転置演算され、その演算結果が、Sボックス103に入力されるアドレスとなる。このアドレスを、便宜上、第1アドレスと呼ぶ。第1アドレスは、図2の例でいえば、テーブル108に直接入力される、本来のアドレスである。
【0029】
図3右側を参照すると、保護ツール17は、鍵「KCi」109と「Null」110との排他的論理和演算を行い、その演算結果をSボックス111およびテーブル115へ出力する。以下の説明では、所定のルールに基づき、正規の暗号処理で使用するものとは異なるという意味で、鍵「KCi」109を擬似鍵、Sボックス111を「擬似Sボックス」、テーブル115を「擬似テーブル」と呼ぶ。
擬似鍵「KCi」等は、例えば、以下のルールで準備する。
・その鍵RKiから最も推測されにくい組み合わせのものを選ぶ。
・擬似Sボックスは、Sボックスと同じ内容とする。
・擬似テーブルは、テーブルと同じ内容とする。
【0030】
「Null」110は何のデータも持たないため、擬似鍵「KCi」109と「Null」110との排他的論理和演算の結果は、擬似鍵「KCi」と同じとなる。この擬似鍵「KCi」は擬似Sボックス111で非線形変換され、データα1となる。データα1は、第1アドレスが生成される前に生成されるため、データα1の生成に用いられる擬似Sボックス111は、キャッシュ攻撃の対象とはならない。
【0031】
データα1は、Sボックス103から出力されるデータと排他的論理和演算され、データα2となる。データα2は、後述する図4で説明する2段目処理のために保存され、さらに、S^−1ボックス104へ入力される。S^−1ボックス104は、Sボックスの逆変換処理(非線形変換の逆の処理)を行うためのものであり、本例では、データα2の逆変換を行い、その結果を第1アドレスに対応しつつも第1アドレスとは異なる新たなアドレスとして、テーブル108へ入力させる。この新たなアドレスを、便宜上、第2アドレスと呼ぶ。
テーブル108では、第2アドレスを内部のSボックス105で非線形変換した後、MDS106で線形変換し、さらに、定数であるCST107と排他的論理和演算して特異点(All Null)を解消することにより、テーブル参照データβ2を出力する。また、2段目処理のために、このテーブル参照データβ2を保存しておく。
【0032】
他方、図3右側を参照し、擬似テーブル115では、擬似鍵「KCi」109と「Null」110との排他的論理和演算の結果を内部のSボックス112で非線形変換した後、MDS113で線形変換し、さらに、定数であるCST114と排他的論理和演算して特異点(All Null)を解消することにより、補正データとして機能するテーブル参照データβ1を出力する。このテーブル参照データβ1をテーブル参照データβ2および定数であるCST116と排他的論理和演算して、出力データ列「ΔPi(Yi)」117を得る。なお、テーブル参照データβ1とCST116との組み合わせを補正データとして扱っても良い。
【0033】
この出力データ列「ΔPi(Yi)」117は、T1転置102の演算結果でテーブル108にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ1は、擬似Sボックス111及び擬似テーブル115を用いることにより得られる補正データにより補正された、いわゆる正規処理によるテーブル参照データとなる。これについては、後で詳しく説明する。
なお、テーブル参照データβ1は、データα1と同様、第1アドレスが生成される前に処理される。そのため、テーブル参照データβ1を得るために参照される擬似テーブル115もまた、キャッシュ攻撃の対象とはならない。
【0034】
次に、図4を参照して、本実施形態による2段目処理について説明する。この2段目処理は、基本的には、図3左側のロジックと同じ内容となる。すなわち、入力データ列「Pi(Xi)」200(=初段処理で出力される「ΔPi(Yi)」)とラウンド鍵「RKi」201との排他的論理和演算の結果がT2転置202で転置処理され、2段目処理における第1のアドレスを得る。この第1アドレスをSボックス203で非線形変換し、変換結果と図3で説明した初段処理で得られたデータα2との排他的論理和演算を行い、データα3を生成する。
なお、図3のデータα1ではなく、データα2を用いるのは、初段処理と同じアドレスが生成されるのを防止するためである。
【0035】
生成されたデータα3は、3段目処理で使用するために保存され、さらに、S^−1ボックス204で逆変換される。この逆変換されたデータが、第1アドレスに対応する第2アドレスとして、テーブル208に入力される。
テーブル208では、この2段目処理の第2アドレスをSボックス205で非線形変換した後、MDS206で線形変換し、さらに、定数であるCST207と排他的論理和演算して特異点(All Null)を解消することにより、テーブル参照データβ3を出力する。また、3段目処理のために、このテーブル参照データβ3を保存しておく。
最後に、テーブル参照データβ3を初段処理で得られたテーブル参照データβ2(この場合は、テーブル参照データβ2が補正データとなる)で補正し、さらに定数であるCST209と排他的論理和演算して、出力データ列「ΔPi(Yi)」210を得る。初段処理と同様、この出力データ列「ΔPi(Yi)」210は、T2転置202の演算結果でテーブル208の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
3段目処理についても、データα2がデータα3、テーブル参照データβ2がテーブル参照データβ3となる以外は、図4と同じ内容となる。4段目以降もこれに準じた処理内容となる。
【0036】
以上の図3及び図4のデータ処理において共通となる手順を示したのが図5である。
例えば図3の例で説明すると、CPU11は「HyRAL」の暗号処理プログラムを主記憶部14へ読み込ませて起動させる(ステップS100)。これにより、正規の暗号処理を行う機能の他に、保護ツール17の機能を有するデータ処理装置10が構築される。
データ処理装置10は、各種鍵すなわちラウンド鍵RKiと擬似鍵KCiとを生成する(ステップS101)。入力装置10からの平文「Pi(Xi)」100の入力を待ち(ステップS102:No)、平文の入力があったときは(ステップS102:yes)、ラウンド鍵RKiとの排他的論理和演算並びにその演算結果の転置処理により第1アドレスを生成し(ステップS103:yes)、それをSボックス103に入力する。
また、擬似鍵KCiとNULLとの排他的論理和演算を行い、さらに、擬似Sボックス111で非線形処理を行ってデータα1を生成する。そして、Sボックス103の出力とデータα1との排他的論理和演算により生成されたデータα2をS^−1ボックス104に入力して第2のアドレスを生成し(ステップS104)、生成した第2のアドレスを、テーブル108へ入力する(ステップS104)。テーブル108は、この第2アドレスにより索引されるテーブル参照データβ2を出力する(ステップS105)。
このテーブル参照データβ2を擬似テーブル115からのテーブル参照データβ1で補正し(ステップS106)、補正されたテーブル参照データを次段処理へ伝達する(ステップS107)。
【0037】
<キャッシュ攻撃に対する効用>
以上の説明の通り、本実施形態では、本来、直ちにテーブル108に入力されるはずのアドレス(第1アドレス)に代えて、その第1アドレスをSボックス103で非線形変換した後、変換結果とデータα1との排他的論理和演算結果をS^−1ボックス104で非線形変換して生成した第2アドレスをテーブル108に導くようにしているので、攻撃者が不正手段によってテーブル108へのアクセス状況、すなわち第2アドレスとテーブル参照データβ2の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、ラウンド鍵RKiを解読することは不可能となる。
また、第2アドレスによって索引されたテーブル参照データβ2は、テーブル参照データβ1及びCST116によって補正され、T1転置102の転置処理により得られたアドレスでアクセスされたときにテーブル108から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。
これにより、テーブル108へのキャッシュ攻撃を無意味なものとすることができる。
【0038】
このことを、さらに詳しく説明する。前提として、Sボックス103(擬似Sボックス111)が図6のような固定テーブル、S^−1ボックス104を図6のような固定テーブルとして定義されているものとする。Sボックス103及びS^−1ボックス104は、いずれも例えば1バイトの入力に対して1バイトを出力する。すなわち、入力されるデータのうち、上位4ビットのデータと下位4ビットのデータを用いて固定テーブルを参照する。図6及び図7に例示されるデータはすべて16進数であり、上位4ビット、下位4ビットでデータを特定できることを示している。また、図7中のT1(A)及びT2(B)は、「HyRAL」の基本関数に含まれる8種類の転置処理のうち第1転置(T1)及び第2転置(T2)の具体的な処理内容例を示している。図7中のT1(A)及びT2(B)に図示されるX0’ 、X1’ 、X2’ 、X3’のそれぞれは、入力の8ビット要素を表し、b0、b1、b2、b3のそれぞれは、転置処理がされた出力の8ビット要素である。保護ツール17の動作前後にかかわらず、第1転置(T1)が使用され、2段目処理では第2転置(T2)が使用される。
【0039】
図7中のMDS行列式(C)はMDS106(113)の具体例を示している。MDS行列式(C)の右辺に示されるa0、a1、a2、a3のそれぞれは、入力の8ビット要素を表し、MDS行列式(C)の左辺に示されるc0、c1、c2、c3のそれぞれは、行列により線形変換処理がされる出力の8ビット要素である。
【0040】
以上の前提のもと、図3に示した初段処理のロジックにおける具体的な処理結果例を図8に示す。この例では、入力データ列「Pi(Xi)」及び出力データ列「ΔPi(Yi)」が32ビットの例を示している。入力データ列「Pi(Xi)」を例えば「49、2a、d2、de」、ラウンド鍵「RKi」を例えば「00、00、00、00」とすると、両者の排他的論理和により「49、2a、d2、de」のデータα1が得られる。このデータα1に対して図7に示す内容のT1転置処理を行うことにより第1アドレス「49、2a、d2、de」が得られる。さらに、この第1アドレスに図6のSボックス103で非線形変換処理を行うことで「fc、17、cc、b4」のデータを得る。
【0041】
また、ラウンド鍵「RKi」の一部を使用して生成された擬似鍵「KCi」を「88、bc、86、0d」とし、この擬似鍵「KCi」に図6に示すSボックス111で非線形変換処理を行うことにより「ce、7f、b8、ef」のデータα1が得られる。このデータα1を、Sボックス103から出力されたデータ列「fc、17、cc、b4」と排他的論理和演算して「32、68、74、5b」のデータα2を得、さらに、データα2を、図6に示すS^−1ボックスで非線形変換処理することにより第2アドレス「a3、67、df、60」が得られる。この第2アドレスが、攻撃者が注目しているテーブル108へと導かれる。テーブル108では第2アドレスを図6に示すSボックス105で非線形変換した後、図7に示すMDS行列式で線形変換し、さらに、定数であるCST107と排他的論理和演算することにより「4c、9e、a0、ff」のテーブル参照データβ2を得る。
【0042】
他方、擬似テーブル115では、図6に示すSボックス112で非線形変換処理を行った後、図7にその内容例を示すMDS113で線形変換し、さらに、定数であるCST114と排他的論理和演算することで「5d、bc、e4、77」のテーブル参照データβ1を得る。このテーブル参照データβ1をテーブル参照データβ2およびCST(図中の「11、22、44、88」)と排他的論理和演算することにより「00、00、00、00」の出力データ列「ΔPi(Yi)」を得る。この出力データが、保護ツールが存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【0043】
図9は、保護ツールが存在しない場合の初段処理のロジックである。入力データ列「Pi(Xi)」は、図8に示したものと同様、「49、2a、d2、de」であり、ラウンド鍵「RKi」も「00、00、00、00」とする。これらの排他的論理和演算結果について図7に示すT1転置処理により得られる値、すなわちアドレス(第1アドレスに相当)は「49、2a、d2、de」となる。このアドレスがテーブル108へ導かれ、Sボックスで非線形変換された後、MDS106で線形変換され、さらに、定数であるCSTと排他的論理和演算されて出力データ列「ΔPi(Yi)」となる。この出力データ列「ΔPi(Yi)」は、図10に示した初段処理におけるロジック処理と同一の「00、00、00、00」となる。
【0044】
以上の関係は、2段目処理についても同様となる。すなわち、図10は2段目処理のロジックであるが、例えば入力データ列「Pi(Xi)」を「49、2a、d2、de」、ラウンド鍵「RKi」を「00、00、00、00」とすると、両者の排他的論理和演算後、図7に示すT2転置処理で演算されることにより得られる第1アドレスは「2a、d2、de、49」となる。この演算結果にSボックスで非線形変換をすると「17、cc、b4、fc」となる。
データα2は、図8処理により得られた「32、68、74、5b」であり、Sボックスから出力された「17、cc、b4、fc」と排他的論理和演算した結果が「25、a4、c0、a7」のデータα3となる。このデータα3を、図6に示すS^−1ボックスによる非線形変換をすることにより「36、b5、cd、30」となる。この結果がテーブルへと導かれる。テーブルではこの結果を図6に示すSボックスで非線形変換した後、図7に示すMDS行例式で線形変換し、さらに、定数であるCSTと排他的論理和演算することにより、「b5、9a、dd、ca」のデータβ3が得られる。データβ2は図8に示す処理のものと同一の「4c、9e、a0、ff」であり、このデータβ2をデータβ3および定数であるCST(「11、22、33、44」)と排他的論理和演算した出力データ列「ΔPi(Yi)」が「e8、26、39、bd」である。
【0045】
図11は、保護ツールが存在しない場合の2段目処理のロジックである。入力データ列「Pi(Xi)」及び出力データ列「ΔPi(Yi)」は32ビットである。 図11に例示される入力データ列「Pi(Xi)」を、図10に示した2段目処理のロジックと同一の「49、2a、d2、de」とし、ラウンド鍵「RKi」も同一の「00、00、00、00」とする。入力データ列「Pi(Xi)」と、ラウンド鍵「RKi」との排他的論理和演算された結果は「49、2a、d2、de」となる。この排他的論理和演算の結果に図7に示すT2転置により演算した結果が「2a、d2、de、49」である。この結果がテーブルへ導かれる。テーブルではこの結果を図6に示すSボックスで非線形変換した後、図7に示すMDS行例式で線形変換する。この線形変換結果に、定数であるCSTと排他的論理和演算した出力データ列「ΔPi(Yi)」は、図10に示した初段処理におけるロジック処理と同一の図中「e8、26、39、bd」となる。
上述の説明のように、補正されたデータ処理は、正規の暗号処理における処理の結果に影響を与えないものであることがわかる。
【0046】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしても鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。
更に、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【0047】
[第2実施形態]
次に、本発明を公知のアルゴリズムである「AES」に適用した実施の形態例を説明する。なお、データ処理装置10のハードウエア構成等については、第1実施形態と同様であるので、同じ符号を用い、重複説明を省略する。
【0048】
[保護ツールが存在しない場合のデータ処理]
まず、保護ツール17が存在しない場合の一般的なデータ処理の概要を説明する。
「AES」は、必要な全てのデータ処理を4×4マスの2次元配列のデータ形式で行うため、最初に入力されるデータには図示しない「初期化処理」を行う。「初期化処理」は、入力されたデータ列を8ビット毎に区切り4×4マスの2次元配列に振り分け、さらに、ラウンド鍵RKiも8ビット毎に区切り4×4マスの2次元配列に振り分け、これらの排他的論理和演算を行う。
「AES」は共通鍵ブロック暗号(および復号)方式の一種で、SPN(Substitution Permutation Network)構造の処理ブロックを有している。SPN構造の処理ブロックでは、上述したフェイステル構造と同様、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データを分割し、得られた各データ列を、それぞれ複数の「SubBytes」と呼ばれる非線形関数部に入力し、各非線形関数部の出力データを「MixColumns」と呼ばれる線型関数部によって拡散させる。
【0049】
図12は、「AES」の基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Pi(Xi)」60(初期化処理がされた入力データを含む)は、ブロック暗号処理部67に入力される。
【0050】
ブロック暗号処理部67では、入力データ列「Pi(Xi)」60を受け、「ShiftRows」61で転置演算し、「SubBytes」62に導く。「ShiftRows」61による転置演算結果が、暗号処理等の際にテーブル64に記録されているデータを索引する際に用いられるアドレスとなる。
テーブル64は、「SubBytes」62と「MixColumns」63とを含む。「SubBytes」62は、上記のアドレスをもとにm(自然数)ビットの入力データ列をn(m以外の自然数)ビットの出力データ列に変換する際に、入力(例えば平文)と出力(例えば暗号文)の相関を壊すための仕組みとして使用される。「SubBytes」62は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、ラウンド鍵等によって動的に生成して使用する場合もある。「SubBytes」62の出力は「MixColumns」63に導かれる。
【0051】
「MixColumns」63は、「SubBytes」62の出力を線形変換処理する。「MixColumns」63の出力は、ラウンド鍵「RKi」65と排他的論理和演算され、出力データ列「ΔPi(Yi)」66として出力される。「AES」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【0052】
キャッシュ攻撃についての事情は、第1実施形態の場合と同様である。この実施形態では、「AES」の暗号処理をキャッシュ攻撃から保護するためのデータ処理について説明する。
【0053】
[保護ツールが存在するデータ処理]
図13は、本実施形態における初段処理のロジックであり、図14は2段目処理のロジックである。3段目処理以降は、2段目処理のロジックに準じて行われる。図13において、左側はCPU11が実行する図12の「AES」の基本関数部分に相当し、右側は主として保護ツール17が実行する、擬似データ及び補正データを生成するための機能部分である。
図13左側に示される初期化処理がされた入力データ列「Pi(Xi)」616は、「ShiftRows」617で転置演算される。この転置演算の結果が、「SubBytes」611に入力される第1アドレスとなる。
【0054】
図13右側を参照すると、保護ツール17は、鍵「KCi」620を「SubBytes」612およびテーブル615へ出力する。本実施形態においても、第1実施形態の場合と同様、鍵「KCi」620を擬似鍵、「SubBytes」612を「擬似SubBytes」、テーブル615を「擬似テーブル」と呼ぶ。擬似鍵「KCi」等を準備する際のルールは、第1実施形態と同じである。
【0055】
疑似鍵「KCi」は「疑似SubBytes」612で非線形変換され、データα1となる。データα1は、第1アドレスが生成される前に処理される。そのため、データα1の生成に用いられる「疑似SubBytes」612は、キャッシュ攻撃の対象とはならない。
【0056】
データα1は、「SubBytes」611から出力されるデータと排他的論理和演算され、データα2となる。データα2は、図14で説明する2段目処理のために保存され、さらに、「InvSubBytes」613へ入力される。「InvSubBytes」613は、「SubBytes」の逆変換処理(非線形変換の逆の処理)を行うためのものであり、本例では、データα2の逆変換を行い、その結果を第1アドレスに対応しつつも第1アドレスとは異なる新たなアドレス、すなわち第2アドレスとして、テーブル614へ導く。
テーブル614では、第2アドレスを内部の「SubBytes」618で非線形変換した後、「MixColumns」619で線形変換することにより、データβ2を出力する。また、2段目処理のために、このデータβ2を保存しておく。
【0057】
他方、図13右側を参照し、疑似テーブル615では、疑似鍵「KCi」620を内部の「SubBytes」621で非線形変換を行った後、「MixColumns」622で線形変換し、さらに、何のデータも持たない「Null」623との排他的論理和演算をすることで、テーブル参照データβ1を出力する。このテーブル参照データβ1をテーブル参照データβ2およびラウンド鍵「RKi」624と排他的論理和演算することで出力データ列「ΔPi(Yi)」625を得る。この出力データ列「ΔPi(Yi)」625は、「ShiftRows」617の演算結果でテーブル614にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ1は、「疑似SubBytes」612及び擬似テーブル615を用いることにより得られるデータで補正された、いわゆる正規処理によるテーブル参照データとなる。
なお、テーブル参照データβ1は、データα1と同様、第1アドレスが生成される前に処理される。そのため、テーブル参照データβ1を得るために参照される疑似テーブル615は、キャッシュ攻撃の対象とはならない。
【0058】
次に、図14を参照して、本実施形態による2段目処理について説明する。この2段目処理は、基本的には、図13左側のロジックと同じ内容となる。すなわち、入力データ列「Pi(Xi)」626(=初段処理で出力される「ΔPi(Yi)」)は、「ShiftRows」627で転置演算され、2段目処理における第1のアドレスを得る。この第1アドレスを「SubBytes」628で非線形変換し、変換結果と図13で説明した初段処理で得られたデータα2との排他的論理和演算を行い、データα3を生成する。
図13のデータα1ではなく、データα2を用いるのは、第1実施形態の場合と同様である。
【0059】
生成されたデータα3は、3段目処理で使用するために保存され、さらに、「InvSubBytes」629で逆変換される。この逆変換されたデータが、第1アドレスに対応する第2アドレスとして、テーブル632に入力される。テーブル632では、この2段目処理の第2アドレスを「SubBytes」630で非線形変換した後、「MixColumns」631で線形変換することにより、テーブル参照データβ3を出力する。また、3段目処理のために、このテーブル参照データβ3を保存しておく。
最後に、テーブル参照データβ3を初段目処理で得られたテーブル参照データβ2およびラウンド鍵「RKi」633と排他的論理和演算して、出力データ列「ΔPi(Yi)」634を得る。初段処理と同様、この出力データ列「ΔPi(Yi)」634は、「ShiftRows」627の演算結果でテーブル632の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
【0060】
3段目処理以降の処理についても、データα2がデータα3、テーブル参照データβ2がテーブル参照データβ3となる以外は、図14と同じ内容となる。4段目以降も同様となる。
【0061】
以上の図13及び図14のデータ処理において共通となる手順は、基本的には第1実施形態において示した図5と同様となる。
【0062】
<キャッシュ攻撃に対する効用>
以上の説明の通り、本実施形態においても、攻撃者が不正手段によってテーブル614へのアクセス状況、すなわち第2アドレスとデータβ2の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、鍵RKiを解読することは不可能となる。
また、第2アドレスによって索引されたテーブル参照データβ2は、保護ツール17の処理によって得られたテーブル参照データβ1およびラウンド鍵「RKi」624と排他的論理和演算され、「ShiftRows」617の転置演算結果によってアクセスされたときにテーブル614から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。これにより、テーブル614へのキャッシュ攻撃を無意味なものとすることができる。
【0063】
このことを、詳しく説明する。図15は、図13に示した初段処理のロジックにおける主要な処理結果を論理式を用いて例示している。図15左側に示される初期化処理がされた入力データ列「Pi(Xi)」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果がS(Pi )である。
【0064】
図15右側を参照すると、疑似鍵「KCi」を「疑似SubBytes」で非線形変換した結果がS(KCi)である。 このS(KCi)と「SubBytes」から出力されるS(Pi )とを排他的論理和演算した結果がS(Pi )○S(KCi)(○は排他的論理和演算記号とする。以下同じ)である。この結果を「InvSubBytes」並びに「SubBytes」で非線形変換されることとなるが、「InvSubBytes」とテーブル内部の「SubBytes」の処理は互いに打ち消しあい、これらの処理結果はS(Pi )○S(KCi)である。このS(Pi )○S(KCi)をテーブル内部の「MixColumns」で線形変換した結果はP[S(Pi)○S(KCi)]であり、「MixColumns」は線形変換のためP[S(Pi)]○P[S(KCi)]とも示せる。
【0065】
他方、図15右側を参照し、疑似鍵「KCi」620を疑似テーブル内部の「SubBytes」で非線形変換した結果がS(KCi)である。このS(KCi)を疑似テーブル内部の「MixColumns」で線形変換し、さらに、「Null」との排他的論理和演算した結果がP[S(KCi)]である。このP[S(KCi)]を、図15右側のP[S(Pi)]○P[S(KCi)]およびラウンド鍵「RKi」と排他的論理和演算した結果はP[S(Pi)]○P[S(KCi)]○P[S(KCi)]○RKiであるが、P[S(KCi)]はこの演算により打消され、P[S(Pi)]○RKiが出力データ列「ΔPi(Yi)」となる。この出力データが、保護ツール17の機能が存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【0066】
次に、図16を参照して、保護ツール17の機能が存在しない場合の初段処理のロジックにおける主要な処理を説明する。初期化処理がされた入力データ列「Pi(Xi)」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果が図に示すS(Pi )である。ここまでの処理は、図15に示すものと同じである。このS(Pi )をテーブル内部の「MixColumns」で線形変換処理した結果がP[S(Pi)]である。このP[S(Pi)]とラウンド鍵「RKi」と排他的論理和演算したものがP[S(Pi)]○RKiであり、出力データ列「ΔPi(Yi)」は図15の出力データと同じである。
上述の説明のように、本実施形態のデータ処理もまた、第1実施形態と同様、正規の暗号処理における処理の結果に影響を与えないものである。
【0067】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしてもラウンド鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。また、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【0068】
[変形例]
第1、第2実施形態では、スタンドアロン型のデータ処理装置10の例を示したが、これらの実施形態以外にもネットワーク型として本発明の処理を含む暗号処理等のデータ処理システムを構成することもできる。
【0069】
また、第1、第2実施形態では、保護ツール17が、データ処理装置10の内部機能の一つとして説明したが、データ処理装置10と連携可能に独立して存在する装置として存在しても良く、また、保護ツール17相当の機能が他の機能に組み込まれて存在するものであっても良い。
【符号の説明】
【0070】
10・・・暗号装置、11・・・CPU、12・・・演算部、13・・・キャッシュ部、14・・・主記憶部、15・・・補助記憶部、16・・・入出力制御部、17・・・保護ツール、18・・・表示装置、19・・・入力装置。
【技術分野】
【0001】
本発明は、暗号化処理又は復号処理の際にサイドチャネル攻撃を受ける可能性のあるデータ処理装置を効果的に保護する技術に関する。ここで「サイドチャネル攻撃」(side-channel attack)とは、データ処理装置の動作状況を様々な物理的手段で観察することにより、装置内部で行われている処理内容を窃取しようとする攻撃方法である。
【背景技術】
【0002】
サイドチャネル攻撃の一つとして「キャッシュ攻撃」がある。キャッシュ攻撃は、キャッシュメモリが搭載されたCPU上で実行される暗号プログラムや復号プログラムに対して行われ、処理の観察結果から秘密鍵を推測する。キャッシュ攻撃では、特に、テーブル参照演算が行われる繰り返し型のブロック方式などが攻撃の対象となる。
【0003】
キャッシュ攻撃には、様々な態様があるが、ある態様では以下のようにして行われる。ブロック方式の暗号処理では、一般的に入力値と秘密鍵との排他的論理和演算した結果を使用してテーブルの記録内容を取得しながら処理が進む。暗号処理前は、アドレスにより指定されるテーブルの記録内容がキャッシュメモリ内には読み込まれていないとする。暗号処理が行われている最中は、入力データ列により指定されたテーブルの記録内容がキャッシュメモリから取得されるか、メインメモリから取得されるかは入力値と秘密鍵に依存することとなる。つまり、入力値を変化させることによって、全体の暗号処理の時間が変化することになる。
【0004】
他のキャッシュ攻撃の態様では、例えば、1ブロック(例えば公知の「AES (Advanced Encryption Standard) 」の場合では128ビット)毎の暗号処理時間を計測する。この態様では、入力データ列により特定されるテーブルの記録内容に対して2回同じアクセスをした場合では、2回目にはキャッシュメモリから当該記録内容を取得するためアクセス時間が短くなることを利用している。攻撃者の攻撃の手順としては、まず、1ブロック暗号化するごとにキャッシュメモリの内容をクリアにする。そして、ある2つのテーブル参照演算に着目し、その2つのテーブル参照演算に用いられる入力データ列に影響する秘密鍵をある値として仮定する。そして、その仮定の下で2つのテーブル参照演算の入力データ列が同一となるような入力値を選択してそのアクセス時間を計測する。この作業を考えられる全ての秘密鍵の値に対して実行する。最終的には、最もアクセス時間の短かった鍵を正解の鍵として出力する。その後、また別の2つのテーブル参照演算に着目し、同様の攻撃を繰り返すことで秘密鍵を解読しようとする。
【0005】
他のキャッシュ攻撃の態様では、例えば、攻撃者が持つテーブルを暗号プログラムなどが暗号処理を開始する前にキャッシュメモリ内に介入させる。そして、1暗号処理ごとにキャッシュメモリのキャッシュ状態を検査して秘密鍵を解読しようとする。この手法は、「Prime+probe法」などと呼ばれる。これは、攻撃者がキャッシュメモリ状態を検査することでテーブルのどの記録内容を参照したかを探り、その結果から入力データ列を推測して秘密鍵を解読しようとする。
【0006】
このようなキャッシュ攻撃の対策として、特許文献1には、1つの平文または暗号文の暗号処理又は復号処理における変換表に対するアクセス時に、要求された命令や値がキャッシュメモリ上に存在しない場合の回数を、任意の平文または暗号文についてほぼ均一化する調整手段を備える暗号装置が開示されている。この暗号装置によれば、任意の平文または暗号文についての暗号時間または復号時間がほぼ同じとなるため、キャッシュ攻撃に対して耐性を持たせることができるとされている。
【0007】
また、特許文献2に開示された技術では、部分データに対応する変換データを含む変換表を備え、この変換表に含まれる変換データを取得する際に、最初に、キャッシュメモリのライン記憶領域から当該変換データの取得を試み、ライン記憶領域に当該変換データが存在しない場合に、主メモリから当該変換データを取得し、取得した変換データを含む所定長の包含データをライン記憶領域に書き込む。変換表は、所定長のライン表領域を有しており、このライン表領域の所定位置において部分データに対応する1個の変換データを含み、ライン表領域の他の位置において変換に無関係のデータを含むものとしている。これにより、キャッシュメモリのライン記憶領域には1個の変換データが含まれるので、入力メッセージを変化させても暗号又は復号処理の処理時間が一定となるため、処理時間を観測するタイミング攻撃に対する耐性は向上するとしている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−120307号公報
【特許文献2】再表2005/103908号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかし、特許文献1及び特許文献2に開示された技術では、攻撃者がキャッシュメモリのキャッシュ状態を検査してテーブルに含まれるどの記録内容を索引したのかを探り、その結果からアドレスを推測して秘密鍵を解読しようとする攻撃から保護することはできない。さらに、キャッシュ攻撃に関する研究が近年盛んに進んでおり、新たな保護手段の開発も要望されている。
【0010】
本発明は、キャッシュ攻撃あるいはその他のサイドチャネル攻撃の対象となる可能性のある処理ブロックの保護機能を有するデータ処理装置、保護方法及びコンピュータプログラムを提供することを主たる目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決する本発明のデータ処理装置は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、前記処理ブロックと等価の擬似処理ブロックと、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る。
【0012】
このデータ処理装置によれば、装置全体の処理結果は同一でありながら、その中間過程の処理ブロックの内容が正規の処理結果と異なるため、処理ブロックにおける処理の最中に例えばどのデータが参照されたのかが攻撃者に窃取されたとしても、本来の入力データ列を推測することができない。また、攻撃者は正規の入力データ列を推測することができないため、データ参照演算などにおけるアクセス時間の差を利用した攻撃からも保護することができる。
【0013】
上記データ処理装置における、より具体的な態様として、以下のものが挙げられる。
(1)前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する。これにより、例えばキャッシュ攻撃を受けても、処理ブロックの正規の処理内容が外部に漏洩することが無くなる。
(2)前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される。初段の処理ブロックの処理内容を保護することにより、後段の処理ブロックにおける処理内容が、より強固に保護される。
(3)前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである。
ファイステル(Feistel)構造では、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数の非線形関数部に入力し、各非線形関数部の処理結果を線型関数処理によって拡散する。従って、本発明のデータ処理装置により、初段の関数ブロックを保護することにより、すべての関数ブロックの処理結果の漏洩を効果的に防止することができる。
なお、前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで構成する場合がある。特に、前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る場合がある。このような構成が採用される場合も、正しいテーブル参照データが出力されないため、これらの監視は無意味なものとなる。
【0014】
本発明は、データ処理装置の保護方法をも提供する。
本発明の保護方法は、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、データ処理装置の保護方法である。
【0015】
本発明は、コンピュータプログラムをも提供する。
本発明が提供するコンピュータプログラムは、コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、前記コンピュータを、以下のように機能させるものである。
(1)正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
(2)前記処理ブロックと等価の擬似処理ブロック、
(3)前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段。
【発明の効果】
【0016】
本発明では、サイドチャネル攻撃を受けても、処理ブロックの処理内容が正規のものと異なるものとなっているため、攻撃者の行為が無意味なものとなり、秘密情報の漏洩が起きないという特有の効果が得られる。更に、攻撃者には本来の入力データ列も推測できないため、テーブル参照演算におけるアクセス時間の差を利用した攻撃からも保護できることとなる。
【図面の簡単な説明】
【0017】
【図1】第1実施形態の全体の構成例図。
【図2】暗号/復号アルゴリズムの一例である「HyRAL」の関数フロー図。
【図3】第1実施形態の初段処理フロー図。
【図4】第1実施形態の2段目処理フロー図。
【図5】第1実施形態の処理手順。
【図6】Sボックステーブル及びS^−1ボックステーブルの模式図。
【図7】転置演算及びMDS行列式例図。
【図8】第1実施形態の初段処理の演算例図。
【図9】暗号/復号アルゴリズムの一例である「HyRAL」初段処理の演算例図。
【図10】第1実施形態の2段目処理の演算例図。
【図11】暗号/復号アルゴリズムの一例である「HyRAL」2段目処理の演算例図。
【図12】暗号/復号アルゴリズムの一例である「AES」の関数フロー図。
【図13】第2実施形態の初段処理フロー図。
【図14】第2実施形態の2段目処理フロー図。
【図15】第2実施形態の初段処理の演算例図。
【図16】暗号/復号アルゴリズムの一例である「AES」初段処理の演算例図。
【発明を実施するための形態】
【0018】
以下、本発明の実施の形態例を、図面を参照して詳細に説明する。
[第1実施形態]
<全体構成>
図1は、本発明を適用したデータ処理装置のハードウエア構成例を示した図であり、主たる特徴部分を掲示してある。このデータ処理装置10は、例えば、キャッシュメモリを搭載した汎用のコンピュータ装置が本発明の暗号処理用のコンピュータプログラムおよび必要なデータを読み込んで実行することにより実現される。
データ処理装置10には、ディスプレイ、プリンタ又は外部記憶装置のような出力装置18、ポインティングディバイスやキーボード等の入力装置19が接続されている。データ処理装置10には、一般的なコンピュータが備えるハードウエア資源、すなわち、入出力制御部16、CPU(Central Processing Unit)11、主記憶部14、補助記憶部15も備えられている。
【0019】
CPU11は、演算部12とキャッシュ部13を含む。演算部12は、コンピュータプログラムの実行に伴う演算などを行う。CPU11は、データ処理を実現するために各機能ブロック14、15、16、17などの起動を含む各種動作の制御も行う。
キャッシュ部13は、主記憶部14に記憶されている各種データの一部又は全部を図示しないキャッシュメモリに保持し、演算部12からの命令に対して、対応するデータ等が存在する場合は、それらをキャッシュメモリから読み出して直ちに演算部12へ伝達する。他方、演算部12からの命令に対して、対応するデータ等が存在しなければ、そのデータ等を主記憶部14から読み出してキャッシュメモリに格納するとともに当該データ等を演算部12へ伝達する。
【0020】
補助記憶部15には、コンピュータプログラム及びデータ処理に必要なデータが格納されており、適宜、主記憶部14へ読み込まれて展開されるようになっている。
【0021】
入出力制御部16は、入力装置19から必要な入力、例えば暗号処理時は平文、復号処理時には暗号文を受け付け、各処理に必要な情報を各機能ブロックへ伝達する。入出力制御部16は、図示しないインターネット網などのネットワークを介して必要な入力を受け付けることもできる。入出力制御部16は、また、暗号処理の結果情報を出力装置18へ出力する。
【0022】
保護ツール17は、例えば、補助記憶部15に格納されているコンピュータプログラムと連携して、あるいは、単独で動作するファームウエアであり、キャッシュ攻撃の対象となるテーブルを保護するように動作する。
【0023】
[保護ツールが存在しない場合のデータ処理]
本発明のデータ処理装置10の動作説明に先立ち、保護ツール17が存在しない場合の一般的なデータ処理の概要を説明する。この実施形態では、本発明者らによって提案されている「HyRAL」について説明する。
「HyRAL」は共通鍵ブロック暗号(および復号)方式の一種で、ファイステル構造の処理ブロックを有している。ファイステル構造の処理ブロックでは、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データ列を分割し、得られた各データ列を、それぞれ複数のS−BOX(Substitution Box:以下、「Sボックス」という)と呼ばれる非線形関数部に入力し、各非線形関数部の出力データをMDS(Maximum Distance Separable )と呼ばれる線型関数部によって拡散させる。
【0024】
図2は、「HyRAL」における処理ブロックの基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Pi(Xi)」30は、ラウンド鍵「RKi」31と排他的論理和演算(XOR)された後、ブロック暗号処理部38に入力される。ブロック暗号処理部38では、入力データ列「Pi(Xi)」30とラウンド鍵「RKi」31との排他的論理和演算の結果をT転置32で転置演算し、Sボックス33に導く。T転置32による転置演算結果が、暗号処理の際にテーブル36に記録されているデータを索引する際に用いられる入力データ列となる。以下の説明では、このような、索引の際に用いられる入力データ列を「アドレス」と呼ぶ。
【0025】
テーブル36は、Sボックス33とMDS34とを含む。Sボックス33は、上記のアドレスをもとにm(自然数)ビットの入力データ列をn(m以外の自然数)ビットの出力データ列に変換する際に、入力(例えば平文)と出力(例えば暗号文)の相関を壊すための仕組みとして使用される。Sボックス33は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、鍵によって動的に生成して使用する場合もある。Sボックス33の出力は、MDS34に導かれる。
【0026】
MDS34は、Sボックス33の出力を線形変換処理する。MDS34の出力は、定数であるCST35と排他的論理和演算することにより、特異点(All Null)が解消された後、出力データ列「ΔPi(Yi)」37として出力される。「HyRAL」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【0027】
本実施形態では、サイドチャネル攻撃のうち、特にキャッシュ攻撃に着目する。キャッシュ攻撃は、アドレスによりテーブル36のどのキャッシュブロック(キャッシュメモリ内のブロックの意、以下同じ)が索引され、テーブル参照データを得たのかを不正に知得し、アドレスとテーブル参照データとの相関関係から鍵RKiの解読を試みる攻撃手法である。例えば、図1に示すキャッシュ部13におけるキャッシュメモリのブロックサイズを32バイト、テーブル36の1エントリーサイズを4バイトとすると、キャッシュメモリには8エントリー分のテーブル36が収容される。攻撃者は、例えば暗号処理が開始される前に不正な手段を使って攻撃者の持つテーブル(図示せず)を上記キャッシュメモリに介在させ、アドレスとテーブル参照データの知得を試みる。この試みが成功すると、ラウンド鍵「RKi」が攻撃者に窃取されてしまう。
そこで、本実施形態では、「HyRAL」について、図3に示すような内容のデータ処理を行う。
【0028】
[保護ツールが存在するデータ処理]
図3は、本実施形態のデータ処理における特徴の一つとなる初段処理のロジックであり、図4は2段目処理のロジックである。3段目処理以降は、2段目処理のロジックに準じて行われる。 図3において、左側はCPU11が実行する図2の基本関数部分に相当し、右側は主として保護ツール17が実行する擬似データの生成及び補正データの生成を行うための機能部分である。
図3左側に示される入力データ列「Pi(Xi)」100は、ラウンド鍵「RKi」101と排他的論理和演算された後、T1転置102で転置演算され、その演算結果が、Sボックス103に入力されるアドレスとなる。このアドレスを、便宜上、第1アドレスと呼ぶ。第1アドレスは、図2の例でいえば、テーブル108に直接入力される、本来のアドレスである。
【0029】
図3右側を参照すると、保護ツール17は、鍵「KCi」109と「Null」110との排他的論理和演算を行い、その演算結果をSボックス111およびテーブル115へ出力する。以下の説明では、所定のルールに基づき、正規の暗号処理で使用するものとは異なるという意味で、鍵「KCi」109を擬似鍵、Sボックス111を「擬似Sボックス」、テーブル115を「擬似テーブル」と呼ぶ。
擬似鍵「KCi」等は、例えば、以下のルールで準備する。
・その鍵RKiから最も推測されにくい組み合わせのものを選ぶ。
・擬似Sボックスは、Sボックスと同じ内容とする。
・擬似テーブルは、テーブルと同じ内容とする。
【0030】
「Null」110は何のデータも持たないため、擬似鍵「KCi」109と「Null」110との排他的論理和演算の結果は、擬似鍵「KCi」と同じとなる。この擬似鍵「KCi」は擬似Sボックス111で非線形変換され、データα1となる。データα1は、第1アドレスが生成される前に生成されるため、データα1の生成に用いられる擬似Sボックス111は、キャッシュ攻撃の対象とはならない。
【0031】
データα1は、Sボックス103から出力されるデータと排他的論理和演算され、データα2となる。データα2は、後述する図4で説明する2段目処理のために保存され、さらに、S^−1ボックス104へ入力される。S^−1ボックス104は、Sボックスの逆変換処理(非線形変換の逆の処理)を行うためのものであり、本例では、データα2の逆変換を行い、その結果を第1アドレスに対応しつつも第1アドレスとは異なる新たなアドレスとして、テーブル108へ入力させる。この新たなアドレスを、便宜上、第2アドレスと呼ぶ。
テーブル108では、第2アドレスを内部のSボックス105で非線形変換した後、MDS106で線形変換し、さらに、定数であるCST107と排他的論理和演算して特異点(All Null)を解消することにより、テーブル参照データβ2を出力する。また、2段目処理のために、このテーブル参照データβ2を保存しておく。
【0032】
他方、図3右側を参照し、擬似テーブル115では、擬似鍵「KCi」109と「Null」110との排他的論理和演算の結果を内部のSボックス112で非線形変換した後、MDS113で線形変換し、さらに、定数であるCST114と排他的論理和演算して特異点(All Null)を解消することにより、補正データとして機能するテーブル参照データβ1を出力する。このテーブル参照データβ1をテーブル参照データβ2および定数であるCST116と排他的論理和演算して、出力データ列「ΔPi(Yi)」117を得る。なお、テーブル参照データβ1とCST116との組み合わせを補正データとして扱っても良い。
【0033】
この出力データ列「ΔPi(Yi)」117は、T1転置102の演算結果でテーブル108にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ1は、擬似Sボックス111及び擬似テーブル115を用いることにより得られる補正データにより補正された、いわゆる正規処理によるテーブル参照データとなる。これについては、後で詳しく説明する。
なお、テーブル参照データβ1は、データα1と同様、第1アドレスが生成される前に処理される。そのため、テーブル参照データβ1を得るために参照される擬似テーブル115もまた、キャッシュ攻撃の対象とはならない。
【0034】
次に、図4を参照して、本実施形態による2段目処理について説明する。この2段目処理は、基本的には、図3左側のロジックと同じ内容となる。すなわち、入力データ列「Pi(Xi)」200(=初段処理で出力される「ΔPi(Yi)」)とラウンド鍵「RKi」201との排他的論理和演算の結果がT2転置202で転置処理され、2段目処理における第1のアドレスを得る。この第1アドレスをSボックス203で非線形変換し、変換結果と図3で説明した初段処理で得られたデータα2との排他的論理和演算を行い、データα3を生成する。
なお、図3のデータα1ではなく、データα2を用いるのは、初段処理と同じアドレスが生成されるのを防止するためである。
【0035】
生成されたデータα3は、3段目処理で使用するために保存され、さらに、S^−1ボックス204で逆変換される。この逆変換されたデータが、第1アドレスに対応する第2アドレスとして、テーブル208に入力される。
テーブル208では、この2段目処理の第2アドレスをSボックス205で非線形変換した後、MDS206で線形変換し、さらに、定数であるCST207と排他的論理和演算して特異点(All Null)を解消することにより、テーブル参照データβ3を出力する。また、3段目処理のために、このテーブル参照データβ3を保存しておく。
最後に、テーブル参照データβ3を初段処理で得られたテーブル参照データβ2(この場合は、テーブル参照データβ2が補正データとなる)で補正し、さらに定数であるCST209と排他的論理和演算して、出力データ列「ΔPi(Yi)」210を得る。初段処理と同様、この出力データ列「ΔPi(Yi)」210は、T2転置202の演算結果でテーブル208の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
3段目処理についても、データα2がデータα3、テーブル参照データβ2がテーブル参照データβ3となる以外は、図4と同じ内容となる。4段目以降もこれに準じた処理内容となる。
【0036】
以上の図3及び図4のデータ処理において共通となる手順を示したのが図5である。
例えば図3の例で説明すると、CPU11は「HyRAL」の暗号処理プログラムを主記憶部14へ読み込ませて起動させる(ステップS100)。これにより、正規の暗号処理を行う機能の他に、保護ツール17の機能を有するデータ処理装置10が構築される。
データ処理装置10は、各種鍵すなわちラウンド鍵RKiと擬似鍵KCiとを生成する(ステップS101)。入力装置10からの平文「Pi(Xi)」100の入力を待ち(ステップS102:No)、平文の入力があったときは(ステップS102:yes)、ラウンド鍵RKiとの排他的論理和演算並びにその演算結果の転置処理により第1アドレスを生成し(ステップS103:yes)、それをSボックス103に入力する。
また、擬似鍵KCiとNULLとの排他的論理和演算を行い、さらに、擬似Sボックス111で非線形処理を行ってデータα1を生成する。そして、Sボックス103の出力とデータα1との排他的論理和演算により生成されたデータα2をS^−1ボックス104に入力して第2のアドレスを生成し(ステップS104)、生成した第2のアドレスを、テーブル108へ入力する(ステップS104)。テーブル108は、この第2アドレスにより索引されるテーブル参照データβ2を出力する(ステップS105)。
このテーブル参照データβ2を擬似テーブル115からのテーブル参照データβ1で補正し(ステップS106)、補正されたテーブル参照データを次段処理へ伝達する(ステップS107)。
【0037】
<キャッシュ攻撃に対する効用>
以上の説明の通り、本実施形態では、本来、直ちにテーブル108に入力されるはずのアドレス(第1アドレス)に代えて、その第1アドレスをSボックス103で非線形変換した後、変換結果とデータα1との排他的論理和演算結果をS^−1ボックス104で非線形変換して生成した第2アドレスをテーブル108に導くようにしているので、攻撃者が不正手段によってテーブル108へのアクセス状況、すなわち第2アドレスとテーブル参照データβ2の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、ラウンド鍵RKiを解読することは不可能となる。
また、第2アドレスによって索引されたテーブル参照データβ2は、テーブル参照データβ1及びCST116によって補正され、T1転置102の転置処理により得られたアドレスでアクセスされたときにテーブル108から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。
これにより、テーブル108へのキャッシュ攻撃を無意味なものとすることができる。
【0038】
このことを、さらに詳しく説明する。前提として、Sボックス103(擬似Sボックス111)が図6のような固定テーブル、S^−1ボックス104を図6のような固定テーブルとして定義されているものとする。Sボックス103及びS^−1ボックス104は、いずれも例えば1バイトの入力に対して1バイトを出力する。すなわち、入力されるデータのうち、上位4ビットのデータと下位4ビットのデータを用いて固定テーブルを参照する。図6及び図7に例示されるデータはすべて16進数であり、上位4ビット、下位4ビットでデータを特定できることを示している。また、図7中のT1(A)及びT2(B)は、「HyRAL」の基本関数に含まれる8種類の転置処理のうち第1転置(T1)及び第2転置(T2)の具体的な処理内容例を示している。図7中のT1(A)及びT2(B)に図示されるX0’ 、X1’ 、X2’ 、X3’のそれぞれは、入力の8ビット要素を表し、b0、b1、b2、b3のそれぞれは、転置処理がされた出力の8ビット要素である。保護ツール17の動作前後にかかわらず、第1転置(T1)が使用され、2段目処理では第2転置(T2)が使用される。
【0039】
図7中のMDS行列式(C)はMDS106(113)の具体例を示している。MDS行列式(C)の右辺に示されるa0、a1、a2、a3のそれぞれは、入力の8ビット要素を表し、MDS行列式(C)の左辺に示されるc0、c1、c2、c3のそれぞれは、行列により線形変換処理がされる出力の8ビット要素である。
【0040】
以上の前提のもと、図3に示した初段処理のロジックにおける具体的な処理結果例を図8に示す。この例では、入力データ列「Pi(Xi)」及び出力データ列「ΔPi(Yi)」が32ビットの例を示している。入力データ列「Pi(Xi)」を例えば「49、2a、d2、de」、ラウンド鍵「RKi」を例えば「00、00、00、00」とすると、両者の排他的論理和により「49、2a、d2、de」のデータα1が得られる。このデータα1に対して図7に示す内容のT1転置処理を行うことにより第1アドレス「49、2a、d2、de」が得られる。さらに、この第1アドレスに図6のSボックス103で非線形変換処理を行うことで「fc、17、cc、b4」のデータを得る。
【0041】
また、ラウンド鍵「RKi」の一部を使用して生成された擬似鍵「KCi」を「88、bc、86、0d」とし、この擬似鍵「KCi」に図6に示すSボックス111で非線形変換処理を行うことにより「ce、7f、b8、ef」のデータα1が得られる。このデータα1を、Sボックス103から出力されたデータ列「fc、17、cc、b4」と排他的論理和演算して「32、68、74、5b」のデータα2を得、さらに、データα2を、図6に示すS^−1ボックスで非線形変換処理することにより第2アドレス「a3、67、df、60」が得られる。この第2アドレスが、攻撃者が注目しているテーブル108へと導かれる。テーブル108では第2アドレスを図6に示すSボックス105で非線形変換した後、図7に示すMDS行列式で線形変換し、さらに、定数であるCST107と排他的論理和演算することにより「4c、9e、a0、ff」のテーブル参照データβ2を得る。
【0042】
他方、擬似テーブル115では、図6に示すSボックス112で非線形変換処理を行った後、図7にその内容例を示すMDS113で線形変換し、さらに、定数であるCST114と排他的論理和演算することで「5d、bc、e4、77」のテーブル参照データβ1を得る。このテーブル参照データβ1をテーブル参照データβ2およびCST(図中の「11、22、44、88」)と排他的論理和演算することにより「00、00、00、00」の出力データ列「ΔPi(Yi)」を得る。この出力データが、保護ツールが存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【0043】
図9は、保護ツールが存在しない場合の初段処理のロジックである。入力データ列「Pi(Xi)」は、図8に示したものと同様、「49、2a、d2、de」であり、ラウンド鍵「RKi」も「00、00、00、00」とする。これらの排他的論理和演算結果について図7に示すT1転置処理により得られる値、すなわちアドレス(第1アドレスに相当)は「49、2a、d2、de」となる。このアドレスがテーブル108へ導かれ、Sボックスで非線形変換された後、MDS106で線形変換され、さらに、定数であるCSTと排他的論理和演算されて出力データ列「ΔPi(Yi)」となる。この出力データ列「ΔPi(Yi)」は、図10に示した初段処理におけるロジック処理と同一の「00、00、00、00」となる。
【0044】
以上の関係は、2段目処理についても同様となる。すなわち、図10は2段目処理のロジックであるが、例えば入力データ列「Pi(Xi)」を「49、2a、d2、de」、ラウンド鍵「RKi」を「00、00、00、00」とすると、両者の排他的論理和演算後、図7に示すT2転置処理で演算されることにより得られる第1アドレスは「2a、d2、de、49」となる。この演算結果にSボックスで非線形変換をすると「17、cc、b4、fc」となる。
データα2は、図8処理により得られた「32、68、74、5b」であり、Sボックスから出力された「17、cc、b4、fc」と排他的論理和演算した結果が「25、a4、c0、a7」のデータα3となる。このデータα3を、図6に示すS^−1ボックスによる非線形変換をすることにより「36、b5、cd、30」となる。この結果がテーブルへと導かれる。テーブルではこの結果を図6に示すSボックスで非線形変換した後、図7に示すMDS行例式で線形変換し、さらに、定数であるCSTと排他的論理和演算することにより、「b5、9a、dd、ca」のデータβ3が得られる。データβ2は図8に示す処理のものと同一の「4c、9e、a0、ff」であり、このデータβ2をデータβ3および定数であるCST(「11、22、33、44」)と排他的論理和演算した出力データ列「ΔPi(Yi)」が「e8、26、39、bd」である。
【0045】
図11は、保護ツールが存在しない場合の2段目処理のロジックである。入力データ列「Pi(Xi)」及び出力データ列「ΔPi(Yi)」は32ビットである。 図11に例示される入力データ列「Pi(Xi)」を、図10に示した2段目処理のロジックと同一の「49、2a、d2、de」とし、ラウンド鍵「RKi」も同一の「00、00、00、00」とする。入力データ列「Pi(Xi)」と、ラウンド鍵「RKi」との排他的論理和演算された結果は「49、2a、d2、de」となる。この排他的論理和演算の結果に図7に示すT2転置により演算した結果が「2a、d2、de、49」である。この結果がテーブルへ導かれる。テーブルではこの結果を図6に示すSボックスで非線形変換した後、図7に示すMDS行例式で線形変換する。この線形変換結果に、定数であるCSTと排他的論理和演算した出力データ列「ΔPi(Yi)」は、図10に示した初段処理におけるロジック処理と同一の図中「e8、26、39、bd」となる。
上述の説明のように、補正されたデータ処理は、正規の暗号処理における処理の結果に影響を与えないものであることがわかる。
【0046】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしても鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。
更に、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【0047】
[第2実施形態]
次に、本発明を公知のアルゴリズムである「AES」に適用した実施の形態例を説明する。なお、データ処理装置10のハードウエア構成等については、第1実施形態と同様であるので、同じ符号を用い、重複説明を省略する。
【0048】
[保護ツールが存在しない場合のデータ処理]
まず、保護ツール17が存在しない場合の一般的なデータ処理の概要を説明する。
「AES」は、必要な全てのデータ処理を4×4マスの2次元配列のデータ形式で行うため、最初に入力されるデータには図示しない「初期化処理」を行う。「初期化処理」は、入力されたデータ列を8ビット毎に区切り4×4マスの2次元配列に振り分け、さらに、ラウンド鍵RKiも8ビット毎に区切り4×4マスの2次元配列に振り分け、これらの排他的論理和演算を行う。
「AES」は共通鍵ブロック暗号(および復号)方式の一種で、SPN(Substitution Permutation Network)構造の処理ブロックを有している。SPN構造の処理ブロックでは、上述したフェイステル構造と同様、構成要素として複数の関数ブロックが繰り返し用いられる。これらの関数ブロックでは、入力データを分割し、得られた各データ列を、それぞれ複数の「SubBytes」と呼ばれる非線形関数部に入力し、各非線形関数部の出力データを「MixColumns」と呼ばれる線型関数部によって拡散させる。
【0049】
図12は、「AES」の基本関数部分、すなわち、繰り返し用いられる関数ブロックの基本部分のロジック説明図である。入力データ列「Pi(Xi)」60(初期化処理がされた入力データを含む)は、ブロック暗号処理部67に入力される。
【0050】
ブロック暗号処理部67では、入力データ列「Pi(Xi)」60を受け、「ShiftRows」61で転置演算し、「SubBytes」62に導く。「ShiftRows」61による転置演算結果が、暗号処理等の際にテーブル64に記録されているデータを索引する際に用いられるアドレスとなる。
テーブル64は、「SubBytes」62と「MixColumns」63とを含む。「SubBytes」62は、上記のアドレスをもとにm(自然数)ビットの入力データ列をn(m以外の自然数)ビットの出力データ列に変換する際に、入力(例えば平文)と出力(例えば暗号文)の相関を壊すための仕組みとして使用される。「SubBytes」62は、ルックアップテーブルのような固定テーブルとして定義される場合もあるが、ラウンド鍵等によって動的に生成して使用する場合もある。「SubBytes」62の出力は「MixColumns」63に導かれる。
【0051】
「MixColumns」63は、「SubBytes」62の出力を線形変換処理する。「MixColumns」63の出力は、ラウンド鍵「RKi」65と排他的論理和演算され、出力データ列「ΔPi(Yi)」66として出力される。「AES」は、このような処理を多段階にわたって繰り返すことで、特徴的な暗号処理又は復号処理を実現するものである。
【0052】
キャッシュ攻撃についての事情は、第1実施形態の場合と同様である。この実施形態では、「AES」の暗号処理をキャッシュ攻撃から保護するためのデータ処理について説明する。
【0053】
[保護ツールが存在するデータ処理]
図13は、本実施形態における初段処理のロジックであり、図14は2段目処理のロジックである。3段目処理以降は、2段目処理のロジックに準じて行われる。図13において、左側はCPU11が実行する図12の「AES」の基本関数部分に相当し、右側は主として保護ツール17が実行する、擬似データ及び補正データを生成するための機能部分である。
図13左側に示される初期化処理がされた入力データ列「Pi(Xi)」616は、「ShiftRows」617で転置演算される。この転置演算の結果が、「SubBytes」611に入力される第1アドレスとなる。
【0054】
図13右側を参照すると、保護ツール17は、鍵「KCi」620を「SubBytes」612およびテーブル615へ出力する。本実施形態においても、第1実施形態の場合と同様、鍵「KCi」620を擬似鍵、「SubBytes」612を「擬似SubBytes」、テーブル615を「擬似テーブル」と呼ぶ。擬似鍵「KCi」等を準備する際のルールは、第1実施形態と同じである。
【0055】
疑似鍵「KCi」は「疑似SubBytes」612で非線形変換され、データα1となる。データα1は、第1アドレスが生成される前に処理される。そのため、データα1の生成に用いられる「疑似SubBytes」612は、キャッシュ攻撃の対象とはならない。
【0056】
データα1は、「SubBytes」611から出力されるデータと排他的論理和演算され、データα2となる。データα2は、図14で説明する2段目処理のために保存され、さらに、「InvSubBytes」613へ入力される。「InvSubBytes」613は、「SubBytes」の逆変換処理(非線形変換の逆の処理)を行うためのものであり、本例では、データα2の逆変換を行い、その結果を第1アドレスに対応しつつも第1アドレスとは異なる新たなアドレス、すなわち第2アドレスとして、テーブル614へ導く。
テーブル614では、第2アドレスを内部の「SubBytes」618で非線形変換した後、「MixColumns」619で線形変換することにより、データβ2を出力する。また、2段目処理のために、このデータβ2を保存しておく。
【0057】
他方、図13右側を参照し、疑似テーブル615では、疑似鍵「KCi」620を内部の「SubBytes」621で非線形変換を行った後、「MixColumns」622で線形変換し、さらに、何のデータも持たない「Null」623との排他的論理和演算をすることで、テーブル参照データβ1を出力する。このテーブル参照データβ1をテーブル参照データβ2およびラウンド鍵「RKi」624と排他的論理和演算することで出力データ列「ΔPi(Yi)」625を得る。この出力データ列「ΔPi(Yi)」625は、「ShiftRows」617の演算結果でテーブル614にアクセスして得られるテーブル参照データと同じ内容に補正されている。つまり、テーブル参照データβ1は、「疑似SubBytes」612及び擬似テーブル615を用いることにより得られるデータで補正された、いわゆる正規処理によるテーブル参照データとなる。
なお、テーブル参照データβ1は、データα1と同様、第1アドレスが生成される前に処理される。そのため、テーブル参照データβ1を得るために参照される疑似テーブル615は、キャッシュ攻撃の対象とはならない。
【0058】
次に、図14を参照して、本実施形態による2段目処理について説明する。この2段目処理は、基本的には、図13左側のロジックと同じ内容となる。すなわち、入力データ列「Pi(Xi)」626(=初段処理で出力される「ΔPi(Yi)」)は、「ShiftRows」627で転置演算され、2段目処理における第1のアドレスを得る。この第1アドレスを「SubBytes」628で非線形変換し、変換結果と図13で説明した初段処理で得られたデータα2との排他的論理和演算を行い、データα3を生成する。
図13のデータα1ではなく、データα2を用いるのは、第1実施形態の場合と同様である。
【0059】
生成されたデータα3は、3段目処理で使用するために保存され、さらに、「InvSubBytes」629で逆変換される。この逆変換されたデータが、第1アドレスに対応する第2アドレスとして、テーブル632に入力される。テーブル632では、この2段目処理の第2アドレスを「SubBytes」630で非線形変換した後、「MixColumns」631で線形変換することにより、テーブル参照データβ3を出力する。また、3段目処理のために、このテーブル参照データβ3を保存しておく。
最後に、テーブル参照データβ3を初段目処理で得られたテーブル参照データβ2およびラウンド鍵「RKi」633と排他的論理和演算して、出力データ列「ΔPi(Yi)」634を得る。初段処理と同様、この出力データ列「ΔPi(Yi)」634は、「ShiftRows」627の演算結果でテーブル632の記録内容を索引して得たテーブル参照データと同じ内容に補正されている。
【0060】
3段目処理以降の処理についても、データα2がデータα3、テーブル参照データβ2がテーブル参照データβ3となる以外は、図14と同じ内容となる。4段目以降も同様となる。
【0061】
以上の図13及び図14のデータ処理において共通となる手順は、基本的には第1実施形態において示した図5と同様となる。
【0062】
<キャッシュ攻撃に対する効用>
以上の説明の通り、本実施形態においても、攻撃者が不正手段によってテーブル614へのアクセス状況、すなわち第2アドレスとデータβ2の知得に成功したとしても、攻撃者が知得したこれらのデータは、正規の暗号処理によるものとはまったく異なったものであるため、鍵RKiを解読することは不可能となる。
また、第2アドレスによって索引されたテーブル参照データβ2は、保護ツール17の処理によって得られたテーブル参照データβ1およびラウンド鍵「RKi」624と排他的論理和演算され、「ShiftRows」617の転置演算結果によってアクセスされたときにテーブル614から読み出されるテーブル参照データと同じ内容に補正されるので、正規の暗号処理については、まったく影響を与えない。これにより、テーブル614へのキャッシュ攻撃を無意味なものとすることができる。
【0063】
このことを、詳しく説明する。図15は、図13に示した初段処理のロジックにおける主要な処理結果を論理式を用いて例示している。図15左側に示される初期化処理がされた入力データ列「Pi(Xi)」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果がS(Pi )である。
【0064】
図15右側を参照すると、疑似鍵「KCi」を「疑似SubBytes」で非線形変換した結果がS(KCi)である。 このS(KCi)と「SubBytes」から出力されるS(Pi )とを排他的論理和演算した結果がS(Pi )○S(KCi)(○は排他的論理和演算記号とする。以下同じ)である。この結果を「InvSubBytes」並びに「SubBytes」で非線形変換されることとなるが、「InvSubBytes」とテーブル内部の「SubBytes」の処理は互いに打ち消しあい、これらの処理結果はS(Pi )○S(KCi)である。このS(Pi )○S(KCi)をテーブル内部の「MixColumns」で線形変換した結果はP[S(Pi)○S(KCi)]であり、「MixColumns」は線形変換のためP[S(Pi)]○P[S(KCi)]とも示せる。
【0065】
他方、図15右側を参照し、疑似鍵「KCi」620を疑似テーブル内部の「SubBytes」で非線形変換した結果がS(KCi)である。このS(KCi)を疑似テーブル内部の「MixColumns」で線形変換し、さらに、「Null」との排他的論理和演算した結果がP[S(KCi)]である。このP[S(KCi)]を、図15右側のP[S(Pi)]○P[S(KCi)]およびラウンド鍵「RKi」と排他的論理和演算した結果はP[S(Pi)]○P[S(KCi)]○P[S(KCi)]○RKiであるが、P[S(KCi)]はこの演算により打消され、P[S(Pi)]○RKiが出力データ列「ΔPi(Yi)」となる。この出力データが、保護ツール17の機能が存在しない場合に得られるデータと同じ内容になることを、以下に説明する。
【0066】
次に、図16を参照して、保護ツール17の機能が存在しない場合の初段処理のロジックにおける主要な処理を説明する。初期化処理がされた入力データ列「Pi(Xi)」は、「ShiftRows」で転置演算される。この転置演算の結果を「SubBytes」で非線形変換した結果が図に示すS(Pi )である。ここまでの処理は、図15に示すものと同じである。このS(Pi )をテーブル内部の「MixColumns」で線形変換処理した結果がP[S(Pi)]である。このP[S(Pi)]とラウンド鍵「RKi」と排他的論理和演算したものがP[S(Pi)]○RKiであり、出力データ列「ΔPi(Yi)」は図15の出力データと同じである。
上述の説明のように、本実施形態のデータ処理もまた、第1実施形態と同様、正規の暗号処理における処理の結果に影響を与えないものである。
【0067】
これにより、攻撃者によるキャッシュ攻撃を無意味なものとすることができる。攻撃者は初段処理の出力結果が得られなければ、それ以降の処理において攻撃を行ったとしてもラウンド鍵の解読は困難となる。そのため、初段処理だけに本発明を適用した場合でもキャッシュ攻撃などから保護できることとなる。また、データ処理のテーブル参照演算過程におけるアクセス時間の差を利用する攻撃からも保護することが可能となる。
【0068】
[変形例]
第1、第2実施形態では、スタンドアロン型のデータ処理装置10の例を示したが、これらの実施形態以外にもネットワーク型として本発明の処理を含む暗号処理等のデータ処理システムを構成することもできる。
【0069】
また、第1、第2実施形態では、保護ツール17が、データ処理装置10の内部機能の一つとして説明したが、データ処理装置10と連携可能に独立して存在する装置として存在しても良く、また、保護ツール17相当の機能が他の機能に組み込まれて存在するものであっても良い。
【符号の説明】
【0070】
10・・・暗号装置、11・・・CPU、12・・・演算部、13・・・キャッシュ部、14・・・主記憶部、15・・・補助記憶部、16・・・入出力制御部、17・・・保護ツール、18・・・表示装置、19・・・入力装置。
【特許請求の範囲】
【請求項1】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、
前記処理ブロックと等価の擬似処理ブロックと、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る、
データ処理装置。
【請求項2】
前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する、
請求項1記載のデータ処理装置。
【請求項3】
前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される、
請求項1又は2記載のデータ処理装置。
【請求項4】
前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである、
請求項3記載のデータ処理装置。
【請求項5】
前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで成る、
請求項4記載のデータ処理装置。
【請求項6】
前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、
前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る、
請求項5記載のデータ処理装置。
【請求項7】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、
前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、
前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、
データ処理装置の保護方法。
【請求項8】
コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、
前記コンピュータを、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
前記処理ブロックと等価の擬似処理ブロック、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段、として機能させる、
コンピュータプログラム。
【請求項1】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段と、
前記処理ブロックと等価の擬似処理ブロックと、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段とを備えて成る、
データ処理装置。
【請求項2】
前記処理ブロックは、その入力データ列と、当該入力データ列に対する結果データとを前記サイドチャネル攻撃の攻撃者がアクセス可能なキャッシュメモリに記憶するものであり、他方、前記擬似処理ブロックは、前記攻撃者に対して秘匿される形態で存在する、
請求項1記載のデータ処理装置。
【請求項3】
前記処理ブロックは、それぞれ前段の処理結果を引き継いで処理を行う複数段の処理ブロックの一つであり、前記擬似データ列は、初段の処理ブロックに入力される、
請求項1又は2記載のデータ処理装置。
【請求項4】
前記複数段の処理ブロックが、フェイステル構造の複数の関数ブロックである、
請求項3記載のデータ処理装置。
【請求項5】
前記関数ブロックにおける処理部分が、入力データ列を索引として、記録されたデータのいずれかをテーブル参照データとして出力するテーブルを含んで成る、
請求項4記載のデータ処理装置。
【請求項6】
前記テーブルは、前記入力データ列を非線形に拡散するための非線形関数部と、この非線形関数部による処理結果を線形に拡散する線形関数部とを含み、
前記擬似処理ブロックは、前記テーブルと同一内容のテーブルを含んで成る、
請求項5記載のデータ処理装置。
【請求項7】
入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置の保護方法であって、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する段階と、
前記処理ブロックと等価の擬似処理ブロックを前記サイドチャネル攻撃の対象とならない記録領域に保持し、前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成する段階と、
前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する段階とを有する、
データ処理装置の保護方法。
【請求項8】
コンピュータを、入力データ列の暗号化処理又は復号処理を行う際にサイドチャネル攻撃の対象となる可能性のある処理ブロックを有するデータ処理装置として動作させるためのコンピュータプログラムであって、
前記コンピュータを、
正規の暗号化処理又は復号処理の際に前記処理ブロックに入力される正規データ列と異なる擬似データ列を所定のルールに基づいて生成し、生成した擬似データ列を前記正規データ列に代えて前記処理ブロックへ入力する擬似データ列生成手段、
前記処理ブロックと等価の擬似処理ブロック、
前記擬似データ列を生成する際に用いた基礎データを前記擬似処理ブロックに入力して補正データを生成し、前記擬似データ列の入力により前記処理ブロックで実行される擬似的な暗号化処理又は復号処理による擬似結果データを前記補正データで補正することにより、当該擬似結果データを、前記正規の暗号化処理又は復号処理により得られる結果データと同じ内容に補正する補正手段、として機能させる、
コンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2012−23618(P2012−23618A)
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願番号】特願2010−160746(P2010−160746)
【出願日】平成22年7月15日(2010.7.15)
【出願人】(000116079)ローレルバンクマシン株式会社 (82)
【出願人】(591234204)株式会社ローレルインテリジェントシステムズ (8)
【Fターム(参考)】
【公開日】平成24年2月2日(2012.2.2)
【国際特許分類】
【出願日】平成22年7月15日(2010.7.15)
【出願人】(000116079)ローレルバンクマシン株式会社 (82)
【出願人】(591234204)株式会社ローレルインテリジェントシステムズ (8)
【Fターム(参考)】
[ Back to top ]