(57)【要約】      （修正有）【課題】プリチャージを必要とすることなく消費電力の均一化を実現できる、データ置換装置を提供する。【解決手段】耐タンパー置換テーブル装置１０は、入力データおよび交番データを元に拡張置換テーブル部１３の参照位置を決定する参照位置決定部１１と、入力データの１クロックサイクル毎に値が切り替わる交番データを出力する交番データ生成部１２と、前記参照位置に対応する値の正規出力データと前記参照位置に対応する値のダミー出力データを出力する拡張置換テーブル部１３を備え、拡張置換テーブル部１３は正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力する。【選択図】図１
2013092617.tif 000002
【特許請求の範囲】
【請求項１】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置。
【請求項２】
請求項１に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第１の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第２の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換装置。
【請求項３】
請求項２に記載のデータ置換装置であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換装置。
【請求項４】
請求項２に記載のデータ置換装置であって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第１の値をとるときに前記正規出力データを選択し、前記交番データが第２の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換装置。
【請求項５】
請求項１に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換装置。
【請求項６】
請求項５に記載のデータ置換装置であって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換装置。
【請求項７】
請求項５に記載のデータ置換装置であって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第１の領域と前記正規出力データの全ビットを反転した反転データを記憶する第２の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第１の入力ポートに供給して前記第１の領域を参照することにより前記正規出力データを取得して、該正規出力データを第１のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第２の入力ポートに供給して前記第１の領域及び前記第２の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第２のポートから出力する手段と、
を備えることを特徴とするデータ置換装置。
【請求項８】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法。
【請求項９】
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ置換装置、データ置換方法及びデータ置換用プログラムに関し、特に、暗号演算回路等に用いられる耐タンパー性を有するデータ置換装置、データ置換方法及びデータ置換用プログラムに関する。
【背景技術】
【０００２】
情報の電子データ化が進む中で、情報の保護、秘匿な通信において、暗号はかかせない技術となっている。暗号はその安全性を保つために、鍵等の秘匿情報が容易に推測できないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られているが、現実的な時間での解析は不可能な状況といえる。
【０００３】
その一方で、携帯端末などの暗号機能を実装した装置において、攻撃者が処理時間や消費電力などのサイドチャネル情報を精密に測定できるとの仮定の下で、サイドチャネル情報から秘匿情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。
【０００４】
サイドチャネル攻撃として、暗号装置の消費電力を測定し、消費電力から鍵等の秘匿情報を解析する電力解析攻撃がある。その中でも、複数の消費電力波形に統計処理を行うことで解析を行う、差分電力解析が特に強力な攻撃法とされている（非特許文献１）。差分電力解析への対策手法の一つとして、Wave Differential Dynamic Logic(WDDL)が提案されている（非特許文献２）。
【０００５】
特許文献１には、Ｆ関数出力、すなわちＳボックスから置換部を介した中間データ出力値を、第１データ格納部のＲレジスタ及びＬレジスタにそのまま格納し、第２データ格納部のＲ’レジスタ及びＬ’レジスタに出力値の反転データを格納する技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３１４７１号公報
【非特許文献】
【０００７】
【非特許文献１】P. Kocher, J. Jaffe and B. Jun, "Introduction to Differential Power Analysis and Related Attacks," 1998.
【非特許文献２】Kris Tiri，Ingrid Verbauwhede，"A Logic Level Design Methodology for a Secure DPA Resistant ASIC or FPGA Implementation"，2004.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
WDDLでは、プリチャージ動作を行った後、相補回路を用いて演算することで消費電力の均一化を図っている。演算時のビット値の違いによる消費電流の相違をなくすことで、差分電力解析への対策を実現している。WDDLにおいては、動作にプリチャージを必要とするが、プリチャージを行う分、動作速度が低下するという問題がある。
【０００９】
なお、特許文献１に記載の技術では、Ｓボックス自体に耐タンパー性を持たせることはできない。また、Ｒレジスタに格納するデータが変化するときにＲ’レジスタに格納するデータも変化して、Ｒレジスタに格納するデータが変化しないときにＲ’レジスタに格納するデータも変化しない。Ｌレジスタ及びＬ’レジスタについても同様である。従って、変化時の消費電力が増大されてしまい、変化がない時の消費電力との差が大きくなってしまう。
【００１０】
本発明は、プリチャージを必要とすることなく消費電力の均一化を実現できる、データ置換装置、データ置換方法及びデータ置換用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の第１の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置が提供される。
【００１２】
また、本発明の第２の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法が提供される。
【００１３】
更に、本発明の第３の観点によれば、入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラムが提供される。
【発明の効果】
【００１４】
本発明によれば、プリチャージを必要とすることなく消費電力の均一化を実現できる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図２】本発明の第１の実施形態に係る、耐タンパー置換テーブル装置の概略構成図（レジスタを組み込んだ場合）である。
【図３】本発明の第１の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図４】本発明の第１の実施形態に係る、耐タンパー置換テーブル装置のタイミングチャートであり、実施例１における、AES128bitのSBoxのタイミングチャートである。
【図５】ＷＤＤＬにおけるタイミングチャートである。
【図６】本発明の第２の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図７】本発明の第２の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図８】本発明の第３の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図９】本発明の第３の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図１０】本発明の第４の実施形態に係る、耐タンパー置換テーブル装置の概略構成図である。
【図１１】本発明の第４の実施形態に係る、耐タンパー置換テーブル装置の動作フローである。
【図１２】実施例１における、AES128bitのSBoxの構成例である。
【図１３】実施例１における、AES128bitのSBoxのRAMの構成例である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００１７】
（第１の実施形態）
次に、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。
【００１８】
図１に本実施形態による耐タンパー置換テーブル装置１０の基本構成を示す。
【００１９】
本実施形態による耐タンパー置換テーブル装置１０は、入力データおよび交番データを基に拡張置換テーブル１３の参照位置を決定する参照位置決定部１１と、入力データの１クロックサイクルごとに値が、例えば、０、１、０、１、・・・と、切り替わる交番データを出力する交番データ生成部１２と、前記参照位置に対応する値の正規出力データと前記参照位置に対応する値のダミー出力データを出力する拡張置換テーブル部１３と、前記拡張置換テーブル部１３が出力する正規出力データを格納する第１のレジスタ１４と、前記拡張置換テーブル部１３が出力するダミー出力データを格納する第２のレジスタ１５を含む。
【００２０】
参照位置決定部１１は、入力データの値と交番データの値に基づいて、拡張置換テーブル１３の参照位置を求める。
【００２１】
拡張置換テーブル部１３としてメモリを用いる場合にはメモリアドレスが参照位置となる。
【００２２】
参照位置の求め方としては、交番データの１ビットを入力データのビット群の上位に結合する方法や、決められた変換式に基づいて計算する方法などがある。例えば、入力データが0101,0001B(=0x51)の8bit、交番データが1Bの1bitであった場合には、参照位置として1,0101,0001Bの9bitを出力する。
【００２３】
交番データ生成部１２は、置換処理が１サイクル終わるごとに値が切り替わる交番データを出力する。交番データの例として、０と１の繰り返し、−１と１の繰り返し、及び、正の値と負の値の繰り返しなどがあげられる。
【００２４】
交番データによって、ダミー出力データとして、正規出力データと同じ値のデータを出力するか又は正規出力データの全ビットを反転した値のデータを出力するかが判定される。
【００２５】
拡張置換テーブル部１３は、入力データの値をテーブルに従って、一般に、入力データとは異なる値に置換する機能を有する。
【００２６】
ここで、拡張置換テーブル部１３は、２つの出力データを出力する。１つは入力されたテーブルの参照位置に格納された正規出力データであり、もう１つは耐タンパー性を高めるためのダミー出力データである。
【００２７】
正規出力データは、耐タンパー置換テーブル装置１０へ入力された値を置換した値をとる。
【００２８】
他方、ダミー出力データは交番データの値に応じて正規出力データと同一の値か、正規出力データの全ビットを反転して得られる相補出力値のいずれかを入力データの１クロックサイクル毎に交互にとる。交番データの値が0の場合はダミー出力データの値は正規出力データの値とし、交番データの値が1の場合はダミー出力データの値は正規出力の全ビットを反転して得られる相補出力値とするなどが考えられる。
【００２９】
例えば、AES(Advanced Encryption Standard)のSBoxとして本実施形態を用いる場合、耐タンパー置換テーブル装置１０への入力値として0x00が入力された場合、交番データが0ならば0x63が正規出力データの値およびダミー出力データの値となる。他方、交番データが1ならば0x63が正規出力データの値、0x9Cがダミー出力データの値となる。
【００３０】
第１のレジスタ１４は、拡張置換テーブル部１３の正規出力データを格納し、第２のレジスタ１５は、拡張置換テーブル部１３のダミー出力データを格納する。
【００３１】
第１のレジスタ１４及び第２のレジスタ１５は、図１に示すように、耐タンパー置換テーブル装置１０の外部に存在してもよいし、図２に示すように耐タンパー置換テーブル装置１０の内部に存在してもよい。
【００３２】
ここで、正規出力データ用の第１のレジスタ１４からは耐タンパー置換テーブル装置１０の出力としてデータを出力するが、ダミー出力データ用の第２のレジスタ１５からはデータを出力する構成、および出力しない構成のどちらも考えられる。
【００３３】
本実施形態における置換方法について、図３を参照して説明する。
【００３４】
まず、耐タンパー置換テーブル装置１０は、置換対象の入力データを入力する（ステップＡ２）。
【００３５】
参照位置決定部１１は、入力データと入力される。
【００３６】
また、交番データ生成部１２は、入力データの１クロックサイクル毎に反転するような交番データを生成し、交番データを参照位置決定部１１へ出力する（ステップＡ３）。
【００３７】
参照位置決定部１１は入力データおよび交番データを基に、拡張置換テーブル部１３の参照位置を決定する（ステップＡ４）。
【００３８】
拡張置換テーブル部１３は、決定された参照位置に格納されている値を参照し、正規出力データの値およびダミー出力データの値の基となる値を決定する（ステップＡ５）。但し、テーブルを利用せずに、例えば、論理回路などを用いて、参照位置に対応する値を出力するようにしてもよい。
【００３９】
ここで、拡張置換テーブル部１３の出力値は交番データの値によって変化する（ステップＡ６）。
【００４０】
交番データが0の場合、正規出力データの値とダミー出力データの値は共に参照位置に格納されている値となる（ステップＡ７）。
【００４１】
交番データが1の場合、正規出力データの値は参照位置に格納されている値となり、ダミー出力データの値は正規出力データの値の全ビットを反転して得られる相補値となる（ステップＡ８）。
【００４２】
ステップＡ７またはＡ８で得られた正規出力データ及びダミー出力データをそれぞれ第１のレジスタ１４及び第２のレジスタ１５に格納する。
【００４３】
そして、第１のレジスタ１４及び第２のレジスタ１５にそれぞれ格納されている正規出力データ及びダミー出力データを耐タンパー置換テーブル装置１０の出力データとして出力する（ステップＡ９）。
【００４４】
なお、第２のレジスタ１５に格納されるダミー出力データは、出力してもしなくてもよい。
【００４５】
正規出力データとは別に、値が正規出力データの値と同一の値と正規出力データの値の相補値の間で入力データの１クロックサイクル毎に交互に切り替わるダミー出力データを設けることにより、耐タンパー置換テーブル装置からの出力データの遷移するビット数が常に一定となる。つまり、正規出力データのｉ番目のビットが変化するタイミングではダミー出力データのｉ番目のビットは変化せず、ダミー出力データのｉ番目のビットが変化するタイミングでは正規出力データのｉ番目のデータは変化しないため、正規出力データのビット数がｎであれば、正規出力データとダミー出力データとを合わせた出力データ中で入力データの１クロックサイクル毎に１から０又は０から１に遷移するビット数は常にｎとなる。１クロックサイクロ毎に遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【００４６】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる。
【００４７】
図４に本実施形態のタイミングチャート、図５にWDDLのタイミングチャートを示す。
【００４８】
図５において、WDDLではプリチャージにより入力データをリセットする分、処理に時間がかかっている。
【００４９】
一方、本実施形態では、プリチャージを行わないため、WDDLよりも処理が高速である。
【００５０】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【００５１】
図６に第２の実施形態による耐タンパー置換テーブル装置１０の構成図を示す。
【００５２】
第２の実施形態による耐タンパー置換テーブル装置が、第１の実施形態による耐タンパー置換テーブル装置と異なる点は、参照位置決定部１１がアドレス生成部１６に置き換わり、拡張置換テーブル部１３が拡張置換テーブルメモリ１７に置き換わる点である。
【００５３】
なお、図６の構成では、第１のレジスタ１４、第２のレジスタ１５が耐タンパー置換テーブル装置１０の外部に設置されているが、第１のレジスタ１４、第２のレジスタ１５が耐タンパー置換テーブル装置の内部にあり、第１のレジスタ１４、第２のレジスタ１５が耐タンパー置換テーブル装置１０としての出力データを出力する構成も考えられる。
【００５４】
アドレス生成部１６は、入力データの値と交番データの値を基にして拡張置換テーブルメモリ１７の参照アドレスを求める。
【００５５】
参照アドレスの求め方としては、交番データのビットを入力データのビット群の上位側に結合する方法や変換式に基づいた変換方法などがある。例えば、入力データが0x51の8bit、交番データが1の1bitであった場合には、参照位置として0x151の9bitの参照アドレスを出力する。
【００５６】
拡張置換テーブルメモリ１７は、入力された参照アドレスをテーブルに従って、一般に、参照アドレスの値をこの値とは異なる値に置換する機能を有する。
【００５７】
ここで、拡張置換テーブルメモリ１７には、２種類の出力データが格納されている。１つは正規出力データであり、もう１つはダミー出力データである。正規出力データもダミー出力データも、入力されたテーブルの参照位置に格納された値を持つ。
【００５８】
正規出力データの値は、耐タンパー置換テーブル装置１０へ入力された入力データの値を置換した値となる。他方、ダミー出力データの値は、交番データの値に応じて正規出力データの値か、正規出力データの値の全ビットを反転した相補出力値のいずれかである。交番データの値が0の場合はダミー出力データの値を正規出力データの値と同一の値とし、交番データの値が1の場合はダミー出力データの値を正規出力データの値の全ビットを反転した相補出力値とすることなどが考えられる。
【００５９】
例えば、AESのSBoxとして本実施形態を用いる場合、拡張置換テーブルメモリ１７のアドレス幅は交番データ1bitと置換される入力値8bitとの和である9bitとなる。
【００６０】
耐タンパー置換テーブル装置１０への入力値として0x00が入力された場合、交番データが0ならば参照アドレスは0x000となり、0x63が正規出力データの値およびダミー出力データの値となる。交番データが1ならば参照アドレスは0x100となり、0x63が正規出力データの値、0x9Cがダミー出力データの値となる。
【００６１】
第２の実施形態における置換方法について、図７を用いて説明する。
【００６２】
まず、耐タンパー置換テーブル装置１０は、置換対象の入力データを入力する（ステップＡ２）。アドレス生成部１６は、入力データを入力する。
【００６３】
また、交番データ生成部１２は、入力データの１クロックサイクル毎に反転するような交番データを生成し、アドレス生成部１６へ出力する（ステップＡ３）。
【００６４】
アドレス生成部１６は入力データおよび交番データに基づいて拡張置換テーブルメモリ１７の参照アドレスを決定する（ステップＡ１１）。
【００６５】
拡張置換テーブルメモリ１７では、決定された参照アドレスに格納されている値を参照し、正規出力データの値およびダミー出力データの値をそれぞれ決定する（ステップＡ１２）。
【００６６】
そして、正規出力データ及びダミー出力データをそれぞれ耐タンパー置換テーブル装置１０の出力データとして第１のレジスタ１４および第２のレジスタ１５に出力する（ステップＡ９）。
【００６７】
なお、第２のレジスタの値については、出力してもしなくてもよい。
【００６８】
第２の実施形態では、第１の実施形態と同様に、ダミー出力データを設けることで置換テーブルからの出力データの遷移するビット数が常に一定となる。遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【００６９】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第１の実施形態と同様である。
【００７０】
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
【００７１】
図８に第３の実施形態による耐タンパー置換テーブル装置１０の構成図を示す。第３の実施形態による耐タンパー置換テーブル装置１０が第２の実施形態による耐タンパー置換テーブル装置１０と異なる点は、拡張置換テーブルメモリ１７の代わりにデュアルポートメモリ１８を用いている点、およびアドレス生成部１６がメモリのポート数である２に合わせて２つのアドレスを生成する点である。
【００７２】
デュアルポートメモリ１８は、２つの入力ポートと２つの出力ポートをもつメモリである。第３の実施形態では、２つの入力ポートと２つの出力ポートのうち、第１の入力ポートと第１の出力ポートを正規出力データに関するデータを扱うために用い、第２の入力ポートと第２の出力ポートをダミー出力データに関するデータを扱うために用いる。
【００７３】
第３の実施形態における置換方法について、図９を用いて説明する。
【００７４】
まず、耐タンパー置換テーブル装置１０は、置換対象のデータを入力する（ステップＡ２）。アドレス生成部１６は、入力データを入力する。
【００７５】
また、交番データ生成部１２は、入力データの１クロックサイクル毎に反転するような交番データを生成し、アドレス生成部１６に出力する（ステップＡ３）。
【００７６】
アドレス生成部１６は入力データおよび交番データに基づいてデュアルポートメモリ１８の参照アドレスを２つ生成する（ステップＡ１３）。第１の参照アドレスは、入力データのビット幅を上位側に１ビット拡張して、拡張に必要な１ビットの値を０又は１の固定値としたものである。また、第２の参照アドレスは、入力データのビット幅を上位側に１ビット拡張して、拡張に必要な１ビットの値として交番データの値を用いたものである。
【００７７】
第１の参照アドレスをデュアルポートメモリ１８の第１の入力ポートに供給することにより、デュアルポートメモリ１８の第１の出力ポートから正規出力データを出力することができるようになる。また、第２の参照アドレスをデュアルポートメモリ１８の第２の入力ポートに出力することにより、デュアルポートメモリ１８の第２の出力ポートからダミー出力データを出力することができるようになる（ステップＡ１４）。ここで、上述したように、ダミー出力データの値は、入力データのクロックサイクル毎に正規出力データの値と正規出力データの全ビットを反転した値との間で遷移する。
【００７８】
そして、第１の出力ポートから出力される正規出力データ及び第２の出力ポートから出力されるダミー出力データをそれぞれ耐タンパー置換テーブル装置１０の出力データとして第１のレジスタ１４および第２のレジスタ１５に出力する（ステップＡ９）。
【００７９】
なお、第２のレジスタの値については、出力してもしなくてもよい。
【００８０】
本実施形態を適用することで、メモリの２つの出力ポートからの出力値の遷移するビット数が常に一定となる。第１及び第２の実施形態と同様に、遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【００８１】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第１及び第２の実施形態と同様である。
【００８２】
（第４の実施形態）
次に、本発明の第４の実施形態について説明する。
【００８３】
図１０に第４の実施形態による耐タンパー置換テーブル装置１０の構成図を示す。
【００８４】
第４の実施形態が第１の実施形態と異なる点は、拡張置換テーブル部１３が置換テーブル部１９に置き換わり、置換テーブル部１９の出力データに基づいて、正規出力データとダミー出力データを生成する点である。
【００８５】
置換テーブル部１９の出力データは、バッファ２０及びインバータ２１に出力される。ここで、バッファ２０は、置換テーブル部１９の出力データの各ビットを反転しないで出力する。また、インバータ２１は、置換テーブル部１９の出力データの各ビットを反転して出力する。従って、バッファ２０の出力データは正規出力データであり、インバータ２１の出力データは相補出力データである。
【００８６】
バッファ２０の出力データは、セレクタ２２の第１入力端子及びセレクタ２３の第１入力端子に出力される。インバータ２１の出力データは、セレクタ２２の第２入力端子及びセレクタ２３の第２入力端子に出力される。
【００８７】
セレクタ２２の制御端子には常に値０が与えられ、従って、セレクタ２２の出力端子からは、常に正規出力データが出力される。従って、セレクタ２２を省略して、バッファ２０の出力を正規出力データとして用いてもよい。
【００８８】
セレクタ２３の制御端子には、交番データ生成部１２が生成する交番データが与えられる。ここで、交番データは、入力データのクロックサイクル毎に反転する。従って、セレクタ２３の出力端子からは、入力データの１クロックサイクル毎に正規出力データ及び相補出力データが交互に出力される。
【００８９】
第４の実施形態における置換方法について、図１１を参照して説明する。
【００９０】
まず、耐タンパー置換テーブル装置１０は、置換対象の入力データを入力する（ステップＡ２）。
【００９１】
また、交番データ生成部１２は、入力データの１クロックサイクル毎に反転するような交番データを生成される（ステップＡ３）。
【００９２】
置換テーブル部１９は、入力データを入力し、入力データを置換した正規出力値を出力する（ステップＡ１７）。
【００９３】
バッファ２２及びインバータ２３は、それぞれ、正規出力データを入力する。バッファ２０は正規出力値を出力し、インバータ２１は相補出力値を出力する（ステップＡ１８）。
【００９４】
セレクタ２２及びセレクタ２３は、それぞれ、正規出力値を第１の入力端子から入力し、相補出力値を第２の入力端子から入力する（ステップＡ１９）。
【００９５】
ここで、セレクタ２２の選択制御信号は常に正規出力値を選択する信号値とする。他方、セレクタ２の選択制御信号は交番データであり、１置換処理ごとに、つまり、入力データの１クロックサイクル毎に、セレクタ２３の出力値はダミー出力データとして、正規出力値と相補出力値の間を交互に切り替わる。
【００９６】
そして、セレクタ２２及びセレクタ２３がそれぞれ出力する正規出力データ及びダミー出力データを耐タンパー置換テーブル装置１０の出力データとして出力する（ステップＡ２０）。
【００９７】
２つのセレクタ２２、２３からの出力データの遷移するビット数が常に一定となる。遷移するビット数が一定となることにより、演算時の消費電力が一定となり、置換処理の出力をターゲットとしたサイドチャネル攻撃に対して安全となる。
【００９８】
また、プリチャージを必要としないため、WDDLを用いた手法よりも高速な処理が可能となる点も第１の実施形態と同様である。
【実施例】
【００９９】
暗号として128bitAESを用いるときの暗号演算装置の構成について説明する。AESのSBoxを本発明の第２の実施形態を用いて実装する例を示す。実装先を、FPGA(Field Programmable Gate Array)のブロックRAMとする。
【０１００】
図１２にAES128bitのSBoxの構成を示す。128bitAESのSBoxは8bit入力/8bit出力となる。
【０１０１】
本実施例では、拡張置換テーブルメモリへの入力はデータ8bit＋交番データ1bitの計9bit、出力は正規出力8bit＋ダミー出力8bitの計16bitとなる。
【０１０２】
RAMのアドレスとして、先頭1bitは交番データに対応し、残り8bitは入力データに対応している。RAMの構成を図１３に示す。
【０１０３】
ここで、ダミー出力データが正規出力データと同一となる場合と相補出力データになる場合をメモリにセットするため、ワード数（＝アドレス数）は256*2の512となる。
【０１０４】
また、ワード中、前半8bitが正規出力データ、後半8bitにはダミー出力データが格納されている。
【０１０５】
ここで、交番データが0の場合、正規出力データとダミー出力データは、同じ値となる。
【０１０６】
交番データが1の場合、ダミー出力データの値は正規出力データの全ビットを反転した値となる。
【０１０７】
例として、入力データが0x30, 0x31, 0x32となり、それに対応する正規出力値が0x7B, 0x7D, 0x26となる場合で説明する（図４参照）。
【０１０８】
まず１クロックサイクル目に0x30が入力されると、交番データが0となるため、メモリアドレスは0x030となる。拡張置換テーブルメモリは0x030に格納されている値0x7B7Bを出力する。
【０１０９】
２クロックサイクル目に0x31が入力されると、交番データが1となるため、メモリアドレスは0x131となる。ダミー出力データの値は正規出力データの全ビットを反転した値となり、正規出力データ部分は0x7D, ダミー出力データ部分は0x82となり、拡張置換テーブルメモリは0x131に格納されている値0x7D82を出力する。
【０１１０】
ここで、ビット遷移を見ると、正規出力側は0x7B→0x7Dであり、遷移するビット数は2bit、ダミー出力側は0x7B→0x82であり、遷移するビット数は6bitとなり、遷移する合計のビット数は8bitとなる。これは正規出力データのビット数と同一であり、ダミー出力データのビット数とも同一である。
【０１１１】
次に、３クロックサイクル目で0x32が入力されると、交番データが0となるため、メモリアドレスは0x032となる。正規出力データは0x26、ダミー出力データも0x26となり、拡張置換テーブルメモリは0x032に格納されている値0x2626を出力する。
【０１１２】
正規出力側は0x7D→0x26で遷移するビット数は5bit、ダミー出力側は0x82→0x26で遷移するビット数は3bitとなり、遷移する合計のビット数は、上記と同様に、8bitとなる。
【０１１３】
このように、暗号演算時に交番データを入力データの１クロックサイクル毎に交互に切り替えて、交番データに従って、ダミー出力データ側の値を正規値と相補値との間で切り替えることで、遷移するビット数が常に一定となり攻撃が困難となる。
【０１１４】
なお、上記の耐タンパ置換テーブル装置は、ハードウェア、ソフトウェア又はこれらの組合わせにより実現することができる。また、上記の耐タンパ置換テーブル装置により行なわれる耐タンパ置換方法も、ハードウェア、ソフトウェア又はこれらに組合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。ここで、コンピュータは、ＣＰＵ(Central Processing Unit)、ＤＳＰ(Digital Signal Processor)、ＦＰＧＡを含む。
【０１１５】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory)）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１１６】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１７】
（付記１）
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置。
【０１１８】
（付記２）
付記１に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第１の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第２の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換装置。
【０１１９】
（付記３）実施形態１
付記２に記載のデータ置換装置であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換装置。
【０１２０】
（付記４）実施形態４
付記２に記載のデータ置換装置であって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第１の値をとるときに前記正規出力データを選択し、前記交番データが第２の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換装置。
【０１２１】
（付記５）実施形態２と実施形態３
付記１に記載のデータ置換装置であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換装置。
【０１２２】
（付記６）実施形態２
付記５に記載のデータ置換装置であって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換装置。
【０１２３】
（付記７）実施形態３
付記５に記載のデータ置換装置であって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第１の領域と前記正規出力データの全ビットを反転した反転データを記憶する第２の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第１の入力ポートに供給して前記第１の領域を参照することにより前記正規出力データを取得して、該正規出力データを第１のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第２の入力ポートに供給して前記第１の領域及び前記第２の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第２のポートから出力する手段と、
を備えることを特徴とするデータ置換装置。
【０１２４】
（付記８）
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換方法。
【０１２５】
（付記９）
付記８に記載のデータ置換方法であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成ステップと、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成ステップと、
を有し、
前記ダミー出力データ生成ステップでは、前記交番データが第１の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第２の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換方法。
【０１２６】
（付記１０）実施形態１
付記９に記載のデータ置換方法であって、
前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成ステップを更に有し、
前記ダミー出力データ生成ステップでは、前記正規出力データ生成ステップが生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換方法。
【０１２７】
（付記１１）実施形態４
付記９に記載のデータ置換方法であって、
前記ダミー出力データ生成ステップは、
前記正規出力データの全ビットを反転する反転ステップと、
前記交番データが第１の値をとるときに前記正規出力データを選択し、前記交番データが第２の値をとるときに前記反転ステップにより反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチステップと、
を有することを特徴とするデータ置換方法。
【０１２８】
（付記１２）実施形態２と実施形態３
付記８に記載のデータ置換方法であって、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成ステップと、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成ステップと、
を有することを特徴とするデータ置換方法。
【０１２９】
（付記１３）実施形態２
付記１２に記載のデータ置換方法であって、
前記データ生成ステップでは、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを用いることを特徴とするデータ置換方法。
【０１３０】
（付記１４）実施形態３
付記１２に記載のデータ置換方法であって、
前記データ生成ステップは、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第１の領域と前記正規出力データの全ビットを反転した反転データを記憶する第２の領域を有するデュアルポートメモリを用い、
前記入力データを含むデータを第１の入力ポートに供給して前記第１の領域を参照することにより前記正規出力データを取得して、該正規出力データを第１のポートから出力するステップと、
前記入力データと前記交番データを含むデータを第２の入力ポートに供給して前記第１の領域及び前記第２の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第２のポートから出力するステップと、
を有することを特徴とするデータ置換方法。
【０１３１】
（付記１５）
入力データを置換することにより得られる正規出力データと、前記入力データのクロックサイクル毎に前記正規出力データと同一の値と前記正規出力データの全ビットを反転した値とが交互に切り替わるダミー出力データとを出力するデータ置換装置としてコンピュータを機能させるためのデータ置換用プログラム。
【０１３２】
（付記１６）
付記１５に記載のデータ置換用プログラムであって、
前記データ置換装置は、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成するダミー出力データ生成手段と、
を備え、
前記ダミー出力データ生成手段は、前記交番データが第１の値をとるときに、前記正規出力データと同一の値を前記ダミー出力データの値とし、前記交代データが第２の値をとるときに、前記正規出力データの全ビットを反転した値を前記ダミー出力データの値とすることを特徴とするデータ置換用プログラム。
【０１３３】
（付記１７）実施形態１
付記１６に記載のデータ置換用プログラムであって、
前記データ置換装置は、前記入力データに基づいて置換テーブルを参照することにより前記正規出力データを生成する正規出力データ生成手段を更に備え、
前記ダミー出力データ生成手段は、前記正規出力データ生成手段が生成する前記正規出力データと前記交番データに基づいて、前記ダミー出力データを生成することを特徴とするデータ置換用プログラム。
【０１３４】
（付記１８）実施形態４
付記１６に記載のデータ置換用プログラムであって、
前記ダミー出力データ生成手段は、
前記正規出力データの全ビットを反転する反転手段と、
前記交番データが第１の値をとるときに前記正規出力データを選択し、前記交番データが第２の値をとるときに前記反転手段により反転されたデータを選択し、選択されたデータを前記ダミー出力データとするスイッチ手段と、
を備えることを特徴とするデータ置換用プログラム。
【０１３５】
（付記１９）実施形態２と実施形態３
付記１５に記載のデータ置換用プログラムであって、
前記データ置換装置は、
前記クロックサイクル毎に反転する交番データを生成する交番データ生成手段と、
前記入力データと前記交番データに基づいて置換テーブルを参照することにより前記正規出力データと前記ダミー出力データを生成するデータ生成手段と、
を備えることを特徴とするデータ置換用プログラム。
【０１３６】
（付記２０）実施形態２
付記１９に記載のデータ置換用プログラムであって、
前記データ生成手段は、同一アドレスに前記正規出力データと前記ダミー出力データを記憶し、前記入力データと前記交番データをアドレスとする拡張置換テーブルを備えることを特徴とするデータ置換用プログラム。
【０１３７】
（付記２１）実施形態３
付記１９に記載のデータ置換用プログラムであって、
前記データ生成手段は、
前記置換テーブルとしてのデュアルポートメモリであって、前記正規出力データを記憶する第１の領域と前記正規出力データの全ビットを反転した反転データを記憶する第２の領域を有するデュアルポートメモリと、
前記入力データを含むデータを第１の入力ポートに供給して前記第１の領域を参照することにより前記正規出力データを取得して、該正規出力データを第１のポートから出力する手段と、
前記入力データと前記交番データを含むデータを第２の入力ポートに供給して前記第１の領域及び前記第２の領域を交互に参照することにより前記ダミー出力データを取得して、該ダミー出力データを第２のポートから出力する手段と、
を備えることを特徴とするデータ置換用プログラム。
【符号の説明】
【０１３８】
１０  耐タンパー置換テーブル装置
１１  参照位置決定部
１２  交番データ生成部
１３  拡張置換テーブル部
１４  第１のレジスタ
１５  第２のレジスタ
１６  アドレス生成部
１７  拡張置換テーブルメモリ
１８  デュアルポートメモリ
１９  置換テーブル部
２０  バッファ
２１  インバータ
２２  セレクタ１
２３  セレクタ２
【図１】
2013092617.tif 000003
【図２】
2013092617.tif 000004
【図３】
2013092617.tif 000005
【図４】
2013092617.tif 000006
【図５】
2013092617.tif 000007
【図６】
2013092617.tif 000008
【図７】
2013092617.tif 000009
【図８】
2013092617.tif 000010
【図９】
2013092617.tif 000011
【図１０】
2013092617.tif 000012
【図１１】
2013092617.tif 000013
【図１２】
2013092617.tif 000014
【図１３】
2013092617.tif 000015