説明

データ置換装置、データ置換方法及びデータ置換用プログラム

【課題】プリチャージを必要とすることなく消費電力の均一化を実現できる、データ置換装置を提供する。
【解決手段】耐タンパー置換テーブル装置10は、入力データおよび交番データを元に拡張置換テーブル部13の参照位置を決定する参照位置決定部11と、入力データの1クロックサイクル毎に値が切り替わる交番データを出力する交番データ生成部12と、前記参照位置に対応する値の正規出力データと前記参照位置に対応する値のダミー出力データを出力する拡張置換テーブル部13を備え、拡張置換テーブル部13は正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ置換装置、データ置換方法及びデータ置換用プログラムに関し、特に、暗号演算回路等に用いられる耐タンパー性を有するデータ置換装置、データ置換方法及びデータ置換用プログラムに関する。
【背景技術】
【0002】
情報の電子データ化が進む中で、情報の保護、秘匿な通信において、暗号はかかせない技術となっている。暗号はその安全性を保つために、鍵等の秘匿情報が容易に推測できないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られているが、現実的な時間での解析は不可能な状況といえる。
【0003】
その一方で、携帯端末などの暗号機能を実装した装置において、攻撃者が処理時間や消費電力などのサイドチャネル情報を精密に測定できるとの仮定の下で、サイドチャネル情報から秘匿情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。
【0004】
サイドチャネル攻撃として、暗号装置の消費電力を測定し、消費電力から鍵等の秘匿情報を解析する電力解析攻撃がある。その中でも、複数の消費電力波形に統計処理を行うことで解析を行う、差分電力解析が特に強力な攻撃法とされている(非特許文献1)。差分電力解析への対策手法の一つとして、Wave Differential Dynamic Logic(WDDL)が提案されている(非特許文献2)。
【0005】
特許文献1には、F関数出力、すなわちSボックスから置換部を介した中間データ出力値を、第1データ格納部のRレジスタ及びLレジスタにそのまま格納し、第2データ格納部のR’レジスタ及びL’レジスタに出力値の反転データを格納する技術が記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2005−31471号公報
【非特許文献】
【0007】
【非特許文献1】P. Kocher, J. Jaffe and B. Jun, "Introduction to Differential Power Analysis and Related Attacks," 1998.
【非特許文献2】Kris Tiri,Ingrid Verbauwhede,"A Logic Level Design Methodology for a Secure DPA Resistant ASIC or FPGA Implementation",2004.
【発明の概要】
【発明が解決しようとする課題】
【0008】
WDDLでは、プリチャージ動作を行った後、相補回路を用いて演算することで消費電力の均一化を図っている。演算時のビット値の違いによる消費電流の相違をなくすことで、差分電力解析への対策を実現している。WDDLにおいては、動作にプリチャージを必要とするが、プリチャージを行う分、動作速度が低下するという問題がある。
【0009】
なお、特許文献1に記載の技術では、Sボックス自体に耐タンパー性を持たせることはできない。また、Rレジスタに格納するデータが変化するときにR’レジスタに格納するデータも変化して、Rレジスタに格納するデータが変化しないときにR’レジスタに格納するデータも変化しない。Lレジスタ及びL’レジスタについても同様である。従って、変化時の消費電力が増大されてしまい、変化がない時の消費電力との差が大きくなってしまう。
【0010】
本発明は、プリチャージを必要とすることなく消費電力の均一化を実現できる、データ置換装置、データ置換方法及びデータ置換用プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本発明の第1の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置が提供される。
【0012】
また、本発明の第2の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法が提供される。
【0013】
更に、本発明の第3の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラムが提供される。
【発明の効果】
【0014】
本発明によれば、プリチャージを必要とすることなく消費電力の均一化を実現できる。
【図面の簡単な説明】
【0015】
【図1】本発明の第1の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図2】本発明の第1の実施形態に係る、耐タンパー置換テーブル装置の概略構成図(レジスタを組み込んだ場合)である。
【図3】本発明の第1の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図4】本発明の第1の実施形態に係る、耐タンパー置換テーブル装置のタイミングチャートであり、実施例1における、AES128bitのSBoxのタイミングチャートである。
【図5】WDDLにおけるタイミングチャートである。
【図6】本発明の第2の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図7】本発明の第2の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図8】本発明の第3の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図9】本発明の第3の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図10】本発明の第4の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図11】本発明の第4の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図12】実施例1における、AES128bitのSBoxの構成例である。
【図13】実施例1における、AES128bitのSBoxのRAMの構成例である。
【発明を実施するための形態】
【0016】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【0017】
(第1の実施形態)
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
【0018】
図1に本実施形態による耐タンパー置換テーブル装置10の基本構成を示す。
【0019】
本実施形態による耐タンパー置換テーブル装置10は、入力データおよび交番データを基に拡張置換テーブル13の参照位置を決定する参照位置決定部11と、入力データの1クロックサイクルごとに値が、例えば、0、1、0、1、・・・と、切り替わる交番データを出力する交番データ生成部12と、前記参照位置に対応する値の正規出力データと前記参照位置に対応する値のダミー出力データを出力する拡張置換テーブル部13と、前記拡張置換テーブル部13が出力する正規出力データを格納する第1のレジスタ14と、前記拡張置換テーブル部13が出力するダミー出力データを格納する第2のレジスタ15を含む。
【0020】
参照位置決定部11は、入力データの値と交番データの値に基づいて、拡張置換テーブル13の参照位置を求める。
【0021】
拡張置換テーブル部13としてメモリを用いる場合にはメモリアドレスが参照位置となる。
【0022】
参照位置の求め方としては、交番データの1ビットを入力データのビット群の上位に結合する方法や、決められた変換式に基づいて計算する方法などがある。例えば、入力データが0101,0001B(=0x51)の8bit、交番データが1Bの1bitであった場合には、参照位置として1,0101,0001Bの9bitを出力する。
【0023】
交番データ生成部12は、置換処理が1サイクル終わるごとに値が切り替わる交番データを出力する。交番データの例として、0と1の繰り返し、−1と1の繰り返し、及び、正の値と負の値の繰り返しなどがあげられる。
【0024】
交番データによって、ダミー出力データとして、正規出力データと同じ値のデータを出力するか又は正規出力データの全ビットを反転した値のデータを出力するかが判定される。
【0025】
拡張置換テーブル部13は、入力データの値をテーブルに従って、一般に、入力データとは異なる値に置換する機能を有する。
【0026】
ここで、拡張置換テーブル部13は、2つの出力データを出力する。1つは入力されたテーブルの参照位置に格納された正規出力データであり、もう1つは耐タンパー性を高めるためのダミー出力データである。
【0027】
正規出力データは、耐タンパー置換テーブル装置10へ入力された値を置換した値をとる。
【0028】
他方、ダミー出力データは交番データの値に応じて正規出力データと同一の値か、正規出力データの全ビットを反転して得られる相補出力値のいずれかを入力データの1クロックサイクル毎に交互にとる。交番データの値が0の場合はダミー出力データの値は正規出力データの値とし、交番データの値が1の場合はダミー出力データの値は正規出力の全ビットを反転して得られる相補出力値とするなどが考えられる。
【0029】
例えば、AES(Advanced Encryption Standard)のSBoxとして本実施形態を用いる場合、耐タンパー置換テーブル装置10への入力値として0x00が入力された場合、交番データが0ならば0x63が正規出力データの値およびダミー出力データの値となる。他方、交番データが1ならば0x63が正規出力データの値、0x9Cがダミー出力データの値となる。
【0030】
第1のレジスタ14は、拡張置換テーブル部13の正規出力データを格納し、第2のレジスタ15は、拡張置換テーブル部13のダミー出力データを格納する。
【0031】
第1のレジスタ14及び第2のレジスタ15は、図1に示すように、耐タンパー置換テーブル装置10の外部に存在してもよいし、図2に示すように耐タンパー置換テーブル装置10の内部に存在してもよい。
【0032】
ここで、正規出力データ用の第1のレジスタ14からは耐タンパー置換テーブル装置10の出力としてデータを出力するが、ダミー出力データ用の第2のレジスタ15からはデータを出力する構成、および出力しない構成のどちらも考えられる。
【0033】
本実施形態における置換方法について、図3を参照して説明する。
【0034】
まず、耐タンパー置換テーブル装置10は、置換対象の入力データを入力する(ステップA2)。
【0035】
参照位置決定部11は、入力データと入力される。
【0036】
また、交番データ生成部12は、入力データの1クロックサイクル毎に反転するような交番データを生成し、交番データを参照位置決定部11へ出力する(ステップA3)。
【0037】
参照位置決定部11は入力データおよび交番データを基に、拡張置換テーブル部13の参照位置を決定する(ステップA4)。
【0038】
拡張置換テーブル部13は、決定された参照位置に格納されている値を参照し、正規出力データの値およびダミー出力データの値の基となる値を決定する(ステップA5)。但し、テーブルを利用せずに、例えば、論理回路などを用いて、参照位置に対応する値を出力するようにしてもよい。
【0039】
ここで、拡張置換テーブル部13の出力値は交番データの値によって変化する(ステップA6)。
【0040】
交番データが0の場合、正規出力データの値とダミー出力データの値は共に参照位置に格納されている値となる(ステップA7)。
【0041】
交番データが1の場合、正規出力データの値は参照位置に格納されている値となり、ダミー出力データの値は正規出力データの値の全ビットを反転して得られる相補値となる(ステップA8)。
【0042】
ステップA7またはA8で得られた正規出力データ及びダミー出力データをそれぞれ第1のレジスタ14及び第2のレジスタ15に格納する。
【0043】
そして、第1のレジスタ14及び第2のレジスタ15にそれぞれ格納されている正規出力データ及びダミー出力データを耐タンパー置換テーブル装置10の出力データとして出力する(ステップA9)。
【0044】
なお、第2のレジスタ15に格納されるダミー出力データは、出力してもしなくてもよい。
【0045】
正規出力データとは別に、値が正規出力データの値と同一の値と正規出力データの値の相補値の間で入力データの1クロックサイクル毎に交互に切り替わるダミー出力データを設けることにより、耐タンパー置換テーブル装置からの出力データの遷移するビット数が常に一定となる。つまり、正規出力データのi番目のビットが変化するタイミングではダミー出力データのi番目のビットは変化せず、ダミー出力データのi番目のビットが変化するタイミングでは正規出力データのi番目のデータは変化しないため、正規出力データのビット数がnであれば、正規出力データとダミー出力データとを合わせた出力データ中で入力データの1クロックサイクル毎に1から0又は0から1に遷移するビット数は常にnとなる。1クロックサイクロ毎に遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【0046】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる。
【0047】
図4に本実施形態のタイミングチャート、図5にWDDLのタイミングチャートを示す。
【0048】
図5において、WDDLではプリチャージにより入力データをリセットする分、処理に時間がかかっている。
【0049】
一方、本実施形態では、プリチャージを行わないため、WDDLよりも処理が高速である。
【0050】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
【0051】
図6に第2の実施形態による耐タンパー置換テーブル装置10の構成図を示す。
【0052】
第2の実施形態による耐タンパー置換テーブル装置が、第1の実施形態による耐タンパー置換テーブル装置と異なる点は、参照位置決定部11がアドレス生成部16に置き換わり、拡張置換テーブル部13が拡張置換テーブルメモリ17に置き換わる点である。
【0053】
なお、図6の構成では、第1のレジスタ14、第2のレジスタ15が耐タンパー置換テーブル装置10の外部に設置されているが、第1のレジスタ14、第2のレジスタ15が耐タンパー置換テーブル装置の内部にあり、第1のレジスタ14、第2のレジスタ15が耐タンパー置換テーブル装置10としての出力データを出力する構成も考えられる。
【0054】
アドレス生成部16は、入力データの値と交番データの値を基にして拡張置換テーブルメモリ17の参照アドレスを求める。
【0055】
参照アドレスの求め方としては、交番データのビットを入力データのビット群の上位側に結合する方法や変換式に基づいた変換方法などがある。例えば、入力データが0x51の8bit、交番データが1の1bitであった場合には、参照位置として0x151の9bitの参照アドレスを出力する。
【0056】
拡張置換テーブルメモリ17は、入力された参照アドレスをテーブルに従って、一般に、参照アドレスの値をこの値とは異なる値に置換する機能を有する。
【0057】
ここで、拡張置換テーブルメモリ17には、2種類の出力データが格納されている。1つは正規出力データであり、もう1つはダミー出力データである。正規出力データもダミー出力データも、入力されたテーブルの参照位置に格納された値を持つ。
【0058】
正規出力データの値は、耐タンパー置換テーブル装置10へ入力された入力データの値を置換した値となる。他方、ダミー出力データの値は、交番データの値に応じて正規出力データの値か、正規出力データの値の全ビットを反転した相補出力値のいずれかである。交番データの値が0の場合はダミー出力データの値を正規出力データの値と同一の値とし、交番データの値が1の場合はダミー出力データの値を正規出力データの値の全ビットを反転した相補出力値とすることなどが考えられる。
【0059】
例えば、AESのSBoxとして本実施形態を用いる場合、拡張置換テーブルメモリ17のアドレス幅は交番データ1bitと置換される入力値8bitとの和である9bitとなる。
【0060】
耐タンパー置換テーブル装置10への入力値として0x00が入力された場合、交番データが0ならば参照アドレスは0x000となり、0x63が正規出力データの値およびダミー出力データの値となる。交番データが1ならば参照アドレスは0x100となり、0x63が正規出力データの値、0x9Cがダミー出力データの値となる。
【0061】
第2の実施形態における置換方法について、図7を用いて説明する。
【0062】
まず、耐タンパー置換テーブル装置10は、置換対象の入力データを入力する(ステップA2)。アドレス生成部16は、入力データを入力する。
【0063】
また、交番データ生成部12は、入力データの1クロックサイクル毎に反転するような交番データを生成し、アドレス生成部16へ出力する(ステップA3)。
【0064】
アドレス生成部16は入力データおよび交番データに基づいて拡張置換テーブルメモリ17の参照アドレスを決定する(ステップA11)。
【0065】
拡張置換テーブルメモリ17では、決定された参照アドレスに格納されている値を参照し、正規出力データの値およびダミー出力データの値をそれぞれ決定する(ステップA12)。
【0066】
そして、正規出力データ及びダミー出力データをそれぞれ耐タンパー置換テーブル装置10の出力データとして第1のレジスタ14および第2のレジスタ15に出力する(ステップA9)。
【0067】
なお、第2のレジスタの値については、出力してもしなくてもよい。
【0068】
第2の実施形態では、第1の実施形態と同様に、ダミー出力データを設けることで置換テーブルからの出力データの遷移するビット数が常に一定となる。遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【0069】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第1の実施形態と同様である。
【0070】
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。
【0071】
図8に第3の実施形態による耐タンパー置換テーブル装置10の構成図を示す。第3の実施形態による耐タンパー置換テーブル装置10が第2の実施形態による耐タンパー置換テーブル装置10と異なる点は、拡張置換テーブルメモリ17の代わりにデュアルポートメモリ18を用いている点、およびアドレス生成部16がメモリのポート数である2に合わせて2つのアドレスを生成する点である。
【0072】
デュアルポートメモリ18は、2つの入力ポートと2つの出力ポートをもつメモリである。第3の実施形態では、2つの入力ポートと2つの出力ポートのうち、第1の入力ポートと第1の出力ポートを正規出力データに関するデータを扱うために用い、第2の入力ポートと第2の出力ポートをダミー出力データに関するデータを扱うために用いる。
【0073】
第3の実施形態における置換方法について、図9を用いて説明する。
【0074】
まず、耐タンパー置換テーブル装置10は、置換対象のデータを入力する(ステップA2)。アドレス生成部16は、入力データを入力する。
【0075】
また、交番データ生成部12は、入力データの1クロックサイクル毎に反転するような交番データを生成し、アドレス生成部16に出力する(ステップA3)。
【0076】
アドレス生成部16は入力データおよび交番データに基づいてデュアルポートメモリ18の参照アドレスを2つ生成する(ステップA13)。第1の参照アドレスは、入力データのビット幅を上位側に1ビット拡張して、拡張に必要な1ビットの値を0又は1の固定値としたものである。また、第2の参照アドレスは、入力データのビット幅を上位側に1ビット拡張して、拡張に必要な1ビットの値として交番データの値を用いたものである。
【0077】
第1の参照アドレスをデュアルポートメモリ18の第1の入力ポートに供給することにより、デュアルポートメモリ18の第1の出力ポートから正規出力データを出力することができるようになる。また、第2の参照アドレスをデュアルポートメモリ18の第2の入力ポートに出力することにより、デュアルポートメモリ18の第2の出力ポートからダミー出力データを出力することができるようになる(ステップA14)。ここで、上述したように、ダミー出力データの値は、入力データのクロックサイクル毎に正規出力データの値と正規出力データの全ビットを反転した値との間で遷移する。
【0078】
そして、第1の出力ポートから出力される正規出力データ及び第2の出力ポートから出力されるダミー出力データをそれぞれ耐タンパー置換テーブル装置10の出力データとして第1のレジスタ14および第2のレジスタ15に出力する(ステップA9)。
【0079】
なお、第2のレジスタの値については、出力してもしなくてもよい。
【0080】
本実施形態を適用することで、メモリの2つの出力ポートからの出力値の遷移するビット数が常に一定となる。第1及び第2の実施形態と同様に、遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【0081】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第1及び第2の実施形態と同様である。
【0082】
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。
【0083】
図10に第4の実施形態による耐タンパー置換テーブル装置10の構成図を示す。
【0084】
第4の実施形態が第1の実施形態と異なる点は、拡張置換テーブル部13が置換テーブル部19に置き換わり、置換テーブル部19の出力データに基づいて、正規出力データとダミー出力データを生成する点である。
【0085】
置換テーブル部19の出力データは、バッファ20及びインバータ21に出力される。ここで、バッファ20は、置換テーブル部19の出力データの各ビットを反転しないで出力する。また、インバータ21は、置換テーブル部19の出力データの各ビットを反転して出力する。従って、バッファ20の出力データは正規出力データであり、インバータ21の出力データは相補出力データである。
【0086】
バッファ20の出力データは、セレクタ22の第1入力端子及びセレクタ23の第1入力端子に出力される。インバータ21の出力データは、セレクタ22の第2入力端子及びセレクタ23の第2入力端子に出力される。
【0087】
セレクタ22の制御端子には常に値0が与えられ、従って、セレクタ22の出力端子からは、常に正規出力データが出力される。従って、セレクタ22を省略して、バッファ20の出力を正規出力データとして用いてもよい。
【0088】
セレクタ23の制御端子には、交番データ生成部12が生成する交番データが与えられる。ここで、交番データは、入力データのクロックサイクル毎に反転する。従って、セレクタ23の出力端子からは、入力データの1クロックサイクル毎に正規出力データ及び相補出力データが交互に出力される。
【0089】
第4の実施形態における置換方法について、図11を参照して説明する。
【0090】
まず、耐タンパー置換テーブル装置10は、置換対象の入力データを入力する(ステップA2)。
【0091】
また、交番データ生成部12は、入力データの1クロックサイクル毎に反転するような交番データを生成される(ステップA3)。
【0092】
置換テーブル部19は、入力データを入力し、入力データを置換した正規出力値を出力する(ステップA17)。
【0093】
バッファ22及びインバータ23は、それぞれ、正規出力データを入力する。バッファ20は正規出力値を出力し、インバータ21は相補出力値を出力する(ステップA18)。
【0094】
セレクタ22及びセレクタ23は、それぞれ、正規出力値を第1の入力端子から入力し、相補出力値を第2の入力端子から入力する(ステップA19)。
【0095】
ここで、セレクタ22の選択制御信号は常に正規出力値を選択する信号値とする。他方、セレクタ2の選択制御信号は交番データであり、1置換処理ごとに、つまり、入力データの1クロックサイクル毎に、セレクタ23の出力値はダミー出力データとして、正規出力値と相補出力値の間を交互に切り替わる。
【0096】
そして、セレクタ22及びセレクタ23がそれぞれ出力する正規出力データ及びダミー出力データを耐タンパー置換テーブル装置10の出力データとして出力する(ステップA20)。
【0097】
2つのセレクタ22、23からの出力データの遷移するビット数が常に一定となる。遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【0098】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第1の実施形態と同様である。
【実施例】
【0099】
暗号として128bitAESを用いるときの暗号演算装置の構成について説明する。AESのSBoxを本発明の第2の実施形態を用いて実装する例を示す。実装先を、FPGA(Field Programmable Gate Array)のブロックRAMとする。
【0100】
図12にAES128bitのSBoxの構成を示す。128bitAESのSBoxは8bit入力/8bit出力となる。
【0101】
本実施例では、拡張置換テーブルメモリへの入力はデータ8bit+交番データ1bitの計9bit、出力は正規出力8bit+ダミー出力8bitの計16bitとなる。
【0102】
RAMのアドレスとして、先頭1bitは交番データに対応し、残り8bitは入力データに対応している。RAMの構成を図13に示す。
【0103】
ここで、ダミー出力データが正規出力データと同一となる場合と相補出力データになる場合をメモリにセットするため、ワード数(=アドレス数)は256*2の512となる。
【0104】
また、ワード中、前半8bitが正規出力データ、後半8bitにはダミー出力データが格納されている。
【0105】
ここで、交番データが0の場合、正規出力データとダミー出力データは、同じ値となる。
【0106】
交番データが1の場合、ダミー出力データの値は正規出力データの全ビットを反転した値となる。
【0107】
例として、入力データが0x30, 0x31, 0x32となり、それに対応する正規出力値が0x7B, 0x7D, 0x26となる場合で説明する(図4参照)。
【0108】
まず1クロックサイクル目に0x30が入力されると、交番データが0となるため、メモリアドレスは0x030となる。拡張置換テーブルメモリは0x030に格納されている値0x7B7Bを出力する。
【0109】
2クロックサイクル目に0x31が入力されると、交番データが1となるため、メモリアドレスは0x131となる。ダミー出力データの値は正規出力データの全ビットを反転した値となり、正規出力データ部分は0x7D, ダミー出力データ部分は0x82となり、拡張置換テーブルメモリは0x131に格納されている値0x7D82を出力する。
【0110】
ここで、ビット遷移を見ると、正規出力側は0x7B→0x7Dであり、遷移するビット数は2bit、ダミー出力側は0x7B→0x82であり、遷移するビット数は6bitとなり、遷移する合計のビット数は8bitとなる。これは正規出力データのビット数と同一であり、ダミー出力データのビット数とも同一である。
【0111】
次に、3クロックサイクル目で0x32が入力されると、交番データが0となるため、メモリアドレスは0x032となる。正規出力データは0x26、ダミー出力データも0x26となり、拡張置換テーブルメモリは0x032に格納されている値0x2626を出力する。
【0112】
正規出力側は0x7D→0x26で遷移するビット数は5bit、ダミー出力側は0x82→0x26で遷移するビット数は3bitとなり、遷移する合計のビット数は、上記と同様に、8bitとなる。
【0113】
このように、暗号演算時に交番データを入力データの1クロックサイクル毎に交互に切り替えて、交番データに従って、ダミー出力データ側の値を正規値と相補値との間で切り替えることで、遷移するビット数が常に一定となり攻撃が困難となる。
【0114】
なお、上記の耐タンパ置換テーブル装置は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記の耐タンパ置換テーブル装置により行なわれる耐タンパ置換方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。ここで、コンピュータは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、FPGAを含む。
【0115】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば、光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0116】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【0117】
(付記1)
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置。
【0118】
(付記2)
付記1に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第1の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第2の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換装置。
【0119】
(付記3)実施形態1
付記2に記載のデータ置換装置であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換装置。
【0120】
(付記4)実施形態4
付記2に記載のデータ置換装置であって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第1の値をとるときに前記正規出力データを選択し、前記交番データが第2の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換装置。
【0121】
(付記5)実施形態2と実施形態3
付記1に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換装置。
【0122】
(付記6)実施形態2
付記5に記載のデータ置換装置であって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換装置。
【0123】
(付記7)実施形態3
付記5に記載のデータ置換装置であって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第1の領域と前記正規出力データの全ビットを反転した反転データを記憶する第2の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第1の入力ポートに供給して前記第1の領域を参照することにより前記正規出力データを取得して、該正規出力データを第1のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第2の入力ポートに供給して前記第1の領域及び前記第2の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第2のポートから出力する手段と、
を備えることを特徴とするデータ置換装置。
【0124】
(付記8)
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法。
【0125】
(付記9)
付記8に記載のデータ置換方法であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成ステップと、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成ステップと、
を有し、
前記ダミー出力データ生成ステップでは、前記交番データが第1の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第2の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換方法。
【0126】
(付記10)実施形態1
付記9に記載のデータ置換方法であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成ステップを更に有し、
前記ダミー出力データ生成ステップでは、前記正規出力データ生成ステップが生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換方法。
【0127】
(付記11)実施形態4
付記9に記載のデータ置換方法であって、
前記ダミー出力データ生成ステップは、
前記正規出力データの全ビットを反転する反転ステップと、
前記交番データが第1の値をとるときに前記正規出力データを選択し、前記交番データが第2の値をとるときに前記反転ステップにより反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチステップと、
を有することを特徴とするデータ置換方法。
【0128】
(付記12)実施形態2と実施形態3
付記8に記載のデータ置換方法であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成ステップと、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成ステップと、
を有することを特徴とするデータ置換方法。
【0129】
(付記13)実施形態2
付記12に記載のデータ置換方法であって、
前記データ生成ステップでは、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを用いることを特徴とするデータ置換方法。
【0130】
(付記14)実施形態3
付記12に記載のデータ置換方法であって、
前記データ生成ステップは、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第1の領域と前記正規出力データの全ビットを反転した反転データを記憶する第2の領域を有するデュアルポートメモリを用い、
前記入力データを含むデータを第1の入力ポートに供給して前記第1の領域を参照することにより前記正規出力データを取得して、該正規出力データを第1のポートから出力するステップと、
前記入力データと前記交番データを含むデータを第2の入力ポートに供給して前記第1の領域及び前記第2の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第2のポートから出力するステップと、
を有することを特徴とするデータ置換方法。
【0131】
(付記15)
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラム。
【0132】
(付記16)
付記15に記載のデータ置換用プログラムであって、
前記データ置換装置は、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第1の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第2の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換用プログラム。
【0133】
(付記17)実施形態1
付記16に記載のデータ置換用プログラムであって、
前記データ置換装置は、前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換用プログラム。
【0134】
(付記18)実施形態4
付記16に記載のデータ置換用プログラムであって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第1の値をとるときに前記正規出力データを選択し、前記交番データが第2の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換用プログラム。
【0135】
(付記19)実施形態2と実施形態3
付記15に記載のデータ置換用プログラムであって、
前記データ置換装置は、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換用プログラム。
【0136】
(付記20)実施形態2
付記19に記載のデータ置換用プログラムであって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換用プログラム。
【0137】
(付記21)実施形態3
付記19に記載のデータ置換用プログラムであって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第1の領域と前記正規出力データの全ビットを反転した反転データを記憶する第2の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第1の入力ポートに供給して前記第1の領域を参照することにより前記正規出力データを取得して、該正規出力データを第1のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第2の入力ポートに供給して前記第1の領域及び前記第2の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第2のポートから出力する手段と、
を備えることを特徴とするデータ置換用プログラム。
【符号の説明】
【0138】
10 耐タンパー置換テーブル装置
11 参照位置決定部
12 交番データ生成部
13 拡張置換テーブル部
14 第1のレジスタ
15 第2のレジスタ
16 アドレス生成部
17 拡張置換テーブルメモリ
18 デュアルポートメモリ
19 置換テーブル部
20 バッファ
21 インバータ
22 セレクタ1
23 セレクタ2

【特許請求の範囲】
【請求項1】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置。
【請求項2】
請求項1に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第1の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第2の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換装置。
【請求項3】
請求項2に記載のデータ置換装置であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換装置。
【請求項4】
請求項2に記載のデータ置換装置であって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第1の値をとるときに前記正規出力データを選択し、前記交番データが第2の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換装置。
【請求項5】
請求項1に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換装置。
【請求項6】
請求項5に記載のデータ置換装置であって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換装置。
【請求項7】
請求項5に記載のデータ置換装置であって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第1の領域と前記正規出力データの全ビットを反転した反転データを記憶する第2の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第1の入力ポートに供給して前記第1の領域を参照することにより前記正規出力データを取得して、該正規出力データを第1のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第2の入力ポートに供給して前記第1の領域及び前記第2の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第2のポートから出力する手段と、
を備えることを特徴とするデータ置換装置。
【請求項8】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法。
【請求項9】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate