(57)【要約】  暗号鍵を用いて複数ステップの暗号化を行う複数の暗号処理部１２５１〜１２５２を備え、暗号処理部１２５１〜１２５２は、データ、または反転された別のデータのいずれかをランダムに格納して出力する複数のレジスタ１２２１〜１２２４と、出力されたデータを暗号化して出力する複数の暗号化ブロック１２１１〜１２１４とを含み、暗号化のステップが最終ステップより前である場合、暗号化ブロックにより暗号化された中間値を、別の暗号処理部に出力し、当該別の暗号処理部は、当該中間値をデータとして入力し、最終ステップの暗号化が終了した場合、暗号化ブロックが暗号化したデータを暗号文として出力する。
2013190782.tif 000002
【特許請求の範囲】
【請求項１】
平文または当該平文の暗号化における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの暗号化を行う複数の暗号処理部を備え、
前記暗号処理部は、
前記データ、または反転された別の前記データのいずれかをランダムに格納して出力する複数のレジスタと、
対となる前記レジスタから出力されたデータを暗号化して出力する複数の暗号化ブロックとを含み、
暗号化のステップが最終ステップより前である場合、
前記暗号化ブロックにより暗号化された前記中間値を、別の前記暗号処理部に出力し、当該別の前記暗号処理部は、当該中間値を前記データとして入力し、
最終ステップの暗号化が終了した場合、
前記暗号化ブロックが暗号化したデータを暗号文として出力する
ことを特徴とする暗号化処理回路。
【請求項２】
少なくとも１クロックの間に、複数の平文のうちの一つの平文または当該平文の暗号化における中間値と、当該平文とは別の平文または当該別の平文の暗号化における中間値とを同時に暗号化する
請求項１記載の暗号化処理回路。
【請求項３】
複数の平文のうちの一つの平文または当該平文の暗号化における中間値の暗号化が行われた次のクロックに、当該平文とは別の平文または当該別の平文の暗号化における中間値を暗号化する
請求項１または請求項２記載の暗号化処理回路。
【請求項４】
複数の平文を入力するクロックのタイミングを調整するタイミング調整回路を備えた
請求項２または請求項３記載の暗号化処理回路。
【請求項５】
暗号文または当該暗号文の復号における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの復号を行う複数の復号処理部を備え、
前記復号処理部は、
前記データ、または反転された別の前記データのいずれかをランダムに格納して出力する複数のレジスタと、
対となる前記レジスタから出力されたデータを復号して出力する複数の復号ブロックとを含み、
復号のステップが最終ステップより前である場合、
前記復号ブロックにより復号された前記中間値を、別の前記復号処理部に出力し、当該別の前記復号処理部は、当該中間値を前記データとして入力し、
最終ステップの復号が終了した場合、
前記復号ブロックが復号したデータを平文として出力する
ことを特徴とする復号処理回路。
【請求項６】
少なくとも１クロックの間に、複数の暗号文のうちの一つの暗号文または当該暗号文の復号における中間値と、当該暗号文とは別の暗号文または当該別の暗号文の復号における中間値とを同時に復号する
請求項５記載の復号処理回路。
【請求項７】
複数の暗号文のうちの一つの暗号文または当該暗号文の復号における中間値の復号が行われた次のクロックに、当該暗号文とは別の暗号文または当該別の暗号文の復号における中間値を復号する
請求項５または請求項６記載の復号処理回路。
【請求項８】
複数の暗号文を入力するクロックのタイミングを調節するタイミング調節回路を備えた
請求項６または請求項７記載の復号処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化処理回路および復号処理回路に関し、特に、サイドチャネル攻撃を困難とする耐タンパー性を有する暗号化処理回路および復号処理回路に関する。
【背景技術】
【０００２】
情報の電子データ化が進む中で、秘匿な通信において、情報の保護のために暗号はかかせない技術となっている。暗号は、その安全性を保つために、鍵等の秘密情報が容易に推測されないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られているが、処理に時間がかかるため、現実的に一般的なユーザーが利用できる時間での解析は不可能な状況といえる。【０００３】
その一方で、携帯端末などの暗号機能を実装した装置（暗号モジュール）において、攻撃者が処理時間や消費電力などのサイドチャネル情報を精密に測定できるとの仮定の下で、サイドチャネル情報から秘密情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。【０００４】
サイドチャネル攻撃の一つとして、暗号モジュールの消費電力を測定し、消費電力から鍵等の秘密情報を解析する電力解析攻撃がある。電力解析攻撃の中でも、複数の消費電力波形に統計処理を行うことで解析を行う、差分電力解析が特に強力な攻撃法とされている（例えば、非特許文献１参照）。【０００５】
暗号モジュールにおいて、論理ゲートの遷移確率に偏りが生じる場合に、データ列の中で１となるビットの数（ハミング重み）と消費電力とに相関があるとされている（例えば、非特許文献２）。また、あらかじめ規定された暗号化処理を所定回数実行して暗号文を生成する場合、暗号化処理前後でのレジスタのビット遷移（ハミング距離）と消費電力とに相関があるとされている（例えば、非特許文献３参照）。【０００６】
そのため、ハミング重みやハミング距離に着目することで、秘密鍵が解析できてしまうという問題点がある。ハミング重みやハミング距離に着目した攻撃への対策手法の例として、Ｗａｖｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｄｙｎａｍｉｃ  Ｌｏｇｉｃ（ＷＤＤＬ）が提案されている（例えば、非特許文献４参照）。ＷＤＤＬは、プリチャ−ジ動作を行った後、相補回路を用いて演算することで消費電力の均一化を図っている。演算時のビット値の違いによる消費電流の相違をなくすことで、差分電力解析への対策を実現している。ＷＤＤＬにおいては、動作にプリチャ−ジを必要とするが、プリチャ−ジを行う分動作速度が低下する。また、相補回路を必要とするため、回路面積が増大している。その結果、ＷＤＤＬでは性能面積比が低下するという問題点がある。【０００７】
非特許文献５には、複数の暗号化ブロックおよびレジスタを用意して交互に処理に用い、さらに処理の開始タイミングをずらすことによって、ハミング距離に基づく攻撃に関して耐タンパー性を有する暗号処理回路が提案されている。また、パイプライン処理を用いることで性能面積比の改善を図っている。しかしながら、レジスタに書き込まれる中間値に関しては対策をしていないため、ハミング重みに基づく攻撃に関しては対策がなされていない。【０００８】
特許文献１には、２つのラウンド演算回路を直列に接続し、正規のラウンド鍵を適用した正規のラウンド演算と、ダミーラウンド鍵を適用したダミーラウンド演算を交互に切り替えて暗号処理演算を実行する構成を有することにより、ＤＰＡ（Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｐｏｗｅｒ  Ａｎａｌｙｓｉｓ）攻撃に関して耐タンパー性を有する暗号処理装置が開示されている。特許文献１に記載された手法では、ダミーラウンド演算を行う回路を設ける必要があるため、回路規模が２倍となる。その結果、性能面積比が低下するという問題点がある。【０００９】
また、特許文献２には、平文を複数のブロックに分割し、各ブロックに対するブロック間で独立した暗号化をする場合において、ブロック毎の暗号化をＣＰＵでパイプライン処理により行う技術が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−１９５１３２号公報
【特許文献２】特開２００９−２０５１６１号公報
【非特許文献】
【００１１】
【非特許文献１】P. Kocher, J. Jaffe and B. Jun, "Introduction to Differential Power Ａnalysis and Related Attacks,"、Cryptography Research、1998.
【非特許文献２】佐々木明彦、阿部公輝、“暗号回路への電力差分解析攻撃に対するアルゴリズムレベルでの耐性評価”電学論Ｃ、１２６巻１０号、２００６．
【非特許文献３】E. Brier, C. Clavier, and F. Olivier, "Correlation Power Analysis with a Leakage Model," CHES 2004 ,LNCS 3156 ,pp.16−29 ,2004.
【非特許文献４】Kris Tiri，Ingrid Verbauwhede，"A Logic Level Design Methodology for a Secure DPA Resistant ASIC or FPGA Implementation"，Proceedings of the Design, Automation and Test in Europe Conference and Exhibition ,1530−1591 ,2004.
【非特許文献５】山下哲孝  他、“ハミング距離モデルに基づく電力解析攻撃に対するパイプライン処理を用いた耐タンパー手法”、SCIS 2012.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
非特許文献４に記載された技術では、回路規模が２倍となり、処理速度もプリチャ−ジにより半減してしまう。したがって、当該技術を用いない回路と比べて性能面積比は約１／４に落ちてしまう。【００１３】
非特許文献５に記載された技術では、回路規模の増加や処理速度の低下、および性能面積比の低下は発生しないが、ハミング重みに基づく攻撃に耐性がない。【００１４】
特許文献１に記載された発明では、スル−プットは落ちないが、回路規模が約２倍となり、したがって、性能面積比が約１／２に落ちてしまう。【００１５】
特許文献２に記載された発明のようなパイプライン処理は、後述するようにサイドチャネル攻撃に対する耐タンパー性が弱い。【００１６】
そこで、本発明は、性能面積比の増大を抑制しつつ、ハミング距離やハミング重みを用いた方法による秘密情報の漏洩を抑制できる、暗号化処理回路および復号処理回路を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明による暗号化処理回路は、平文または当該平文の暗号化における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの暗号化を行う複数の暗号処理部を備え、前記暗号処理部は、前記データ、または反転された別の前記データのいずれかをランダムに格納して出力する複数のレジスタと、対となる前記レジスタから出力されたデータを暗号化して出力する複数の暗号化ブロックとを含み、暗号化のステップが最終ステップより前である場合、前記暗号化ブロックにより暗号化された前記中間値を、別の前記暗号処理部に出力し、当該別の前記暗号処理部は、当該中間値を前記データとして入力し、最終ステップの暗号化が終了した場合、前記暗号化ブロックが暗号化したデータを暗号文として出力することを特徴とする。【００１８】
本発明による復号処理回路は、暗号文または当該暗号文の復号における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの復号を行う複数の復号処理部を備え、前記復号処理部は、前記データ、または反転された別の前記データのいずれかをランダムに格納して出力する複数のレジスタと、対となる前記レジスタから出力されたデータを復号して出力する複数の復号ブロックとを含み、復号のステップが最終ステップより前である場合、前記復号ブロックにより復号された前記中間値を、別の前記復号処理部に出力し、当該別の前記復号処理部は、当該中間値を前記データとして入力し、最終ステップの復号が終了した場合、前記復号ブロックが復号したデータを平文として出力することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、性能面積比の増大を抑制しつつ、ハミング重みやハミング距離から秘密情報の漏洩することを抑制できる。
【図面の簡単な説明】
【００２０】
【図１】本発明による暗号化処理回路の実施形態の構成を示すブロック図である。
【図２】暗号化処理回路のル−プ処理部の構成を示すブロック図である。
【図３】出力選択を行うル−プ処理部の構成を示すブロック図である。
【図４】後処理部が連結された暗号化処理回路の構成を示すブロック図である。
【図５】本発明による実施形態の暗号化処理回路の動作を示すフローチャートである。
【図６】本発明による実施形態の暗号化処理回路の動作を示すタイミングチャートである。
【図７】本発明による暗号化処理回路の実施形態の別の構成を示すブロック図である。
【図８】本発明による暗号化処理回路の実施形態のさらに別の構成を示すブロック図である。
【図９】入力タイミングをずらした場合の暗号化処理回路の動作を示すタイミングチャートである。
【図１０】実施例における、ＡＥＳ暗号化処理回路の構成を示すブロック図である。
【図１１】実施例における、ＡＥＳの正規値に対するＳｕｂＢｙｔｅのテーブルを示す説明図である。
【図１２】実施例における、ＡＥＳの相補値に対するＳｕｂＢｙｔｅのテーブルを示す説明図である。
【図１３】実施例における、１２８ビットＡＥＳ暗号化処理回路の動作を示すタイミングチャートである。
【図１４】本発明による復号処理回路の実施形態の構成を示すブロック図である。
【図１５】本発明による暗号化処理回路の主要部の構成を示すブロック図である。
【図１６】順次処理を行う一般的な暗号化処理回路の構成を示すブロック図である。
【図１７】順次処理を行う一般的な暗号化処理回路の動作を示すタイミングチャートである。
【図１８】データを記憶するレジスタを１ステップごとに入れ替えて処理を行う、一般的な暗号化処理回路の構成を示すブロック図である。
【図１９】一般的なパイプライン型の暗号化処理回路の構成を示すブロック図である。
【図２０】一般的なパイプライン型の暗号化処理回路の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００２１】
以下、図面を参照して本発明を実施するための形態を詳細に説明する。
【００２２】
図１は、本発明による暗号化処理回路の実施形態の構成を示すブロック図である。本実施形態の暗号化処理回路は、暗号化部１００と、鍵生成部２００とを含む。
【００２３】
また、図１に示すように、暗号化処理回路の前段に、平文の入力タイミングを調節するタイミング調整回路１６０が設けられていてもよい。なお、タイミング調整回路１６０は、暗号化処理回路内に含まれていてもよい。その場合、タイミング調整回路１６０は、例えば入力レジスタ１４１、１４２と前処理部１１１、１１２との間に設けられる。
【００２４】
暗号化部１００は、前処理部１１１、１１２と、ル−プ処理部１２０と、後処理部１３１、１３２と、入力レジスタ１４１、１４２と、出力レジスタ１４３、１４４とを含む。暗号化部１００は、入力されたデータと鍵生成部２００から受け取る暗号鍵をもとに、データを暗号化し、暗号文を出力する。
【００２５】
前処理部１１１、１１２は、暗号化処理において、後段の暗号化ブロックで行なわれるル−プ処理の前段の処理を実施する。例えば、前処理部１１１、１１２は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が用いられる場合、ラウンド処理の前に秘密鍵と平文との排他的論理和を得る処理を実施する。また、前処理部１１１、１１２は、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）が用いられる場合、ＩＰ処理の機能を持つように構成される。また、前処理部１１１、１１２は、平文が分割して入力される場合に、入力された平文データを蓄積してもよい。その場合、前処理部１１１、１１２は、一定量のデータが蓄積された場合、後段の暗号化ブロックにデータを送る。なお、本実施形態の暗号化処理回路は、前処理部１１１、１１２を含まない構成とすることも可能である。
【００２６】
ル−プ処理部１２０は、前段の前処理部１１１、１１２からデータを受け取り、データに対して暗号化処理を行い、後段の後処理部１３１、１３２にデータを出力する。図２は、暗号化処理回路のル−プ処理部の構成を示すブロック図である。ループ処理部１２０は、暗号化ブロック１２１１〜１２１４、レジスタ１２２１〜１２２４、セレクタ１２３１〜１２３６、および乱数生成部１２４０を含む。
【００２７】
暗号化ブロック１２１１〜１２１４は、直前のレジスタからデータを受け取り、暗号化処理を１ステップ分行い、後段のレジスタに出力する。例えば、ＡＥＳにおいては、暗号化ブロック１２１１〜１２１４は、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ、ＡｄｄＲｏｕｎｄＫｅｙのラウンド処理を１ステップ分の処理とみなす。また、暗号化ブロック１２１１または対の暗号化ブロック１２１２が１ステップとして処理され、次の段の暗号化ブロック１２１３または対の暗号化ブロック１２１４が１ステップとして処理される。各ステップにおいて、対となる暗号化ブロックが交互に処理を行なう。
【００２８】
なお、暗号化ブロック１２１１と暗号化ブロック１２１２とが対をなしており、暗号化ブロック１２１１の入出力値と暗号化ブロック１２１２の入出力値は相補の関係になる。暗号化ブロック１２１１に入力された値と相補の関係にある値を暗号化ブロック１２１２に入力した場合、後述する反転処理により、暗号化ブロック１２１１の出力値と相補の関係にある値が、暗号化ブロック１２１２の出力値となる。
【００２９】
例えば、暗号化ブロック１２１１への入力値が１０１１１１００であり、その出力値が００１００１１１となる場合、暗号化ブロック１２１２に０１００００１１が入力された場合には、１１０１１０００が出力される。ＡＥＳを用いてこの機能を実現するには、まずＳｕｂＢｙｔｅでは入出力関係を相補にしたものを用意する。ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎでは通常の処理と同じ処理を行う。最後に、ＡｄｄＲｏｕｎｄＫｅｙでは部分鍵を反転したものをＭｉｘＣｏｌｕｍｎの結果に加算すればよい。
【００３０】
暗号化ブロック１２１１および暗号化ブロック１２１２と同様に、暗号化ブロック１２１３および暗号化ブロック１２１４は、対をなしている。
【００３１】
レジスタ１２２１〜１２２６は、入力された平文や暗号化ブロックからの出力値を保存し、後段の暗号化ブロックへ出力する機能を持つ。
【００３２】
セレクタ１２３１は、後段のセレクタ１２３３およびセレクタ１２３４に対して、平文または暗号化ブロック１２１３の出力値のどちらの値を渡すかを選択する。セレクタ１２３１は、暗号化ブロック１２１３の処理でループが終了したかに応じてこの選択を行い、ループが終了していたら平文を、終了していなければ暗号化ブロック１２１３の出力値を選択する。
【００３３】
同様にセレクタ１２３２は、後段のセレクタ１２３３およびセレクタ１２３４に対して、平文または暗号化ブロック１２１４の出力値のどちらの値を渡すかを選択する。
【００３４】
セレクタ１２３３は、前段のセレクタ１２３１およびセレクタ１２３２から渡された値のどちらをレジスタ１２２１に渡すかを、乱数生成部１２４０から渡される乱数にしたがって判定する。例えば、乱数が０ならばセレクタ１２３１、乱数が１ならばセレクタ１２３２の値を選択する。
【００３５】
同様に、セレクタ１２３４は前段のセレクタ１２３１およびセレクタ１２３２から渡された値のどちらをレジスタ１２２２に渡すかを、乱数生成部１２４０から渡される乱数にしたがって判定する。例えば、乱数が０ならばセレクタ１２３２、乱数が１ならばセレクタ１２３１の値を選択する。
【００３６】
セレクタ１２３５およびセレクタ１２３６も、セレクタ１２３３およびセレクタ１２３４と同様に暗号化ブロック１２１１および暗号化ブロック１２１２から渡された値を、乱数によって選択し、後段のレジスタ１２２３およびレジスタ１２２４に出力する。
【００３７】
相補の関係をつくるため、図２の左側にあるセレクタ１２３２、セレクタ１２３４およびセレクタ１２３６に対して、図２の右側のセレクタや暗号化ブロックの値が渡される場合には、反転した値が渡される。例えば、暗号化ブロック１２１１の出力値がセレクタ１２３６に渡されるときには、反転した値が渡される。
【００３８】
同様に、図２の右側にあるセレクタ１２３１、セレクタ１２３３およびセレクタ１２３５に対して、図２の左側のセレクタや暗号化ブロックの値が渡される場合には、反転した値が渡される。例えば、暗号化ブロック１２１２の出力値がセレクタ１２３５に渡されるときには、反転した値が渡される。
【００３９】
また、セレクタ１２３２に平文を入力するときには、入力された平文を反転する。さらに、暗号化ブロック１２１４の処理結果をル−プ処理部１２０から出力するさいには、暗号化ブロック１２１４の処理結果を反転したものを暗号文として出力する。
【００４０】
このように処理することで、左側の暗号化ブロックやレジスタは常に反転した値に対して処理を行うことになり、一方、右側の暗号化ブロックやレジスタでは常に正規の値に対して処理を行うことになる。よって、平文１と平文２とが同一のデータであったとしても、左側と右側とで異なる値に対する処理が行われることとなる。
【００４１】
なお、ル−プ処理部１２０は、必ずしも複数回のループ処理を行わなくてもよく、複数ステップの暗号化が終了した時点で、暗号化を終了し暗号文を出力する構成となっていればよい。
【００４２】
乱数生成部１２４０は、乱数を生成する。乱数生成部１２４０に生成された乱数によってル−プ処理部１２０において、選択する値が切り替わり、各レジスタおよび暗号化ブロックで正規の値を処理するか、反転した値を処理するかが決定される。乱数の生成方法として、線形帰還シフトレジスタ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：ＬＦＳＲ）を用いる方法や、抵抗の熱雑音など回路素子をノイズ源として乱数を発生させる物理乱数発生器を用いる方法、回路外部から乱数を取り込む方法などが考えられる。出力する乱数のビット長については、１ビットだけとすることも可能であるし、複数ビット出力させて１となったビットの数で値の切り替えを判断することも可能である。
【００４３】
図３は、暗号化処理回路の出力選択を行うル−プ処理部１２０の構成を示すブロック図である。乱数のパタ−ンによっては、平文１の暗号化した結果が暗号文２のほうに出力されることもありえる。例えば、１０回暗号化ブロックで処理を行った場合に、乱数が１となった回数が５回、０となった回数が５回となると、平文１の暗号化した結果が暗号文２のほうに出力される。そのため、本実施形態の暗号化処理回路は、図３に示すようにセレクタ１２３７およびセレクタ１２３８がどちらの暗号化結果を出力するか選択する構成としてもよい。また、ル−プ処理部１２０が暗号化結果を入れ替える処理を行わず、後段の後処理部１３１、後処理部１３２が暗号化結果を入れ替えてもよい。
【００４４】
後処理部１３１および後処理部１３２は、暗号化処理において、前段のル−プ処理部１２０において行なわれる処理の後段の処理を実施する機能を持つ。例えば、ＤＥＳにおいては、後処理部１３１および後処理部１３２は、ＦＰ（Ｆｉｎａｌ  Ｐｅｒｍｕｔａｔｉｏｎ）処理の機能を有する。また、暗号文を一括して出力できない場合、後処理部１３１および後処理部１３２が暗号文を記憶し、１クロックごとに暗号文を分割して出力してもよい。
【００４５】
図４は、後処理部が連結された暗号化処理回路の構成を示すブロック図である。図４に示すように、暗号化処理回路は、図１に示す後処理部１３１と後処理部１３２とを連結して後処理部１３０とし、出力されてきた値を入れ替える機能を有する構成であってもよい。なお、暗号化処理回路は、図１における後処理部１３１および後処理部１３２を含まない構成であってもよい。
【００４６】
入力レジスタ１４１および入力レジスタ１４２は、入力部から入力された入力データを一時的に記憶する。出力レジスタ１４３および出力レジスタ１４４は、後処理部１３１および後処理部１３２での処理結果を一時的に記憶する。
【００４７】
鍵生成部２００は、入力された秘密鍵をもとに、暗号化部１００が使用する鍵を生成する。暗号化部１００では、ル−プ処理部１２０以外に、前処理部１１１や前処理部１１２、後処理部１３１や後処理部１３２でも鍵を用いることもある。そのため、鍵生成部２００は、各処理にあわせた鍵を複数生成し、生成した鍵を暗号化部１００に出力する。
【００４８】
鍵の生成方法については、暗号化部１００での処理の開始前において、使用する鍵をあらかじめすべて生成して保存しておき、暗号化部１００での処理の際に、保存しておいた鍵を出力する方法や、暗号化部１００での処理と並行して鍵を生成し出力する方法が考えられる。なお、本実施形態の暗号化処理回路は、鍵生成部２００を暗号化ブロックの数と同じ数だけ用意し、それぞれの鍵生成部２００が、それに対応する暗号化ブロック用の鍵生成を行う構成であってもよい。
【００４９】
次に、本実施形態における暗号化方法の動作を、図５および図６を用いて説明する。図５は、本発明による実施形態の暗号化処理回路の動作を示すフローチャートである。図６は、本発明による実施形態の暗号化処理回路の動作を示すタイミングチャートである。図５は一つのデータに着目した時のフローチャートを示し、図６は暗号化処理回路全体でのタイミングチャートを示している。
【００５０】
まず、図５を用いて１つの暗号化されるデータ（平文）に着目して説明する。暗号化処理が開始されると（ステップＡ１）、平文が暗号化処理回路に入力される（ステップＡ２）。そして、入力レジスタ１４１または入力レジスタ１４２が入力された平文を格納する。
【００５１】
前処理部１１１または前処理部１１２は、入力レジスタ１４１または入力レジスタ１４２に格納された平文を入力する。前処理部１１１または前処理部１１２は、平文に対して前処理を行なう（ステップＡ３）。
【００５２】
前処理後の平文は、ル−プ処理部１２０へ入力される。入力された平文はル−プ処理部１２０における平文１または平文２のどちらかが割り当てられる（ステップＡ４）。入力された平文が平文２に割り当てられた場合、平文２に対して反転処理が行われる（ステップＡ５）。
【００５３】
セレクタ１２３３およびセレクタ１２３４は、セレクタ１２３１またはセレクタ１２３２を通過したデータを入力する。セレクタ１２３３およびセレクタ１２３４は、乱数値が０か１のどちらであるかを判定する（ステップＡ６−１，Ａ６−２）。このとき、セレクタ１２３３は、乱数が１であれば、セレクタ１２３２から出力されて反転された値を選択してレジスタ１２２１に出力し（ステップＡ７−１）、乱数が０であれば、セレクタ１２３１から出力された値を選択してレジスタ１２２１に出力する（ステップＡ７−３）。セレクタ１２３４は、乱数が１であれば、セレクタ１２３１から出力されて反転された値を選択してレジスタ１２２２に出力し（ステップＡ７−２）、乱数が０であれば、セレクタ１２３２から出力された値を選択してレジスタ１２２２に出力する（ステップＡ７−４）。
【００５４】
次に、第１の対の暗号化ブロック１２１１または暗号化ブロック１２１２は、暗号化処理を１ステップ分行う。ここで、暗号化ブロック１２１１は、正規値に対する暗号化処理を行う（ステップＡ８−１）。暗号化ブロック１２１２は、反転値に対する暗号化処理を行う（ステップＡ８−２）。
【００５５】
暗号化された結果は、セレクタ１２３５およびセレクタ１２３６へ入力される。セレクタ１２３５およびセレクタ１２３６は、乱数値が０か１のどちらであるかを判定する（ステップＡ９−１，Ａ９−２）。このとき、セレクタ１２３５は、乱数が１であれば、暗号化ブロック１２１２から出力されて反転された値を選択してレジスタ１２２３に出力し（ステップＡ１０−１）、乱数が０であれば、暗号化ブロック１２１１から出力された値を選択してレジスタ１２２３に出力する（ステップＡ１０−３）。セレクタ１２３６は、乱数が１であれば、暗号化ブロック１２１１から出力されて反転された値を選択してレジスタ１２２４に出力し（ステップＡ１０−２）、乱数が０であれば、暗号化ブロック１２１２から出力された値を選択してレジスタ１２２４に出力する（ステップＡ１０−４）。
【００５６】
次に、第２の対の暗号化ブロック１２１３または暗号化ブロック１２１４は、暗号化処理を１ステップ分行う。ここで、暗号化ブロック１２１３は正規値に対する暗号化処理を行う（ステップＡ１１−１）。暗号化ブロック１２１４は、反転値に対する暗号化処理を行う（ステップＡ１１−２）。
【００５７】
ここで、それまで行なわれた暗号化処理のステップ回数が所定回数を満たしたかどうかの判定が制御部（図示せず。）により行われる（ステップＡ１２−１，Ａ１２−２）。まだ、所定回数を満たしていない場合、ステップＡ６−１またはステップＡ６−２へもどり、処理を繰り返す。
【００５８】
所定回数を満たした場合、ル−プ処理部１２０での処理は終了する。なお、暗号化ブロック１２１４から出力されるデータは、反転しているため、反転処理が行われる（ステップＡ１３）。
【００５９】
後処理部１３１および後処理部１３２は、後処理を行い、これにより、暗号文が生成され、出力レジスタ１４３または出力レジスタ１４４へ暗号文が格納される（ステップＡ１４）。最後に、出力レジスタ１４３または出力レジスタ１４４は、暗号文を出力し（ステップＡ１５）、暗号化処理回路に入力された平文に対する暗号化処理は完了する（ステップＡ１６）。なお、暗号化処理の回数が奇数回である場合には、ステップＡ８−１およびステップＡ８−２の後にステップＡ１２−１およびステップＡ１２−２が行われることとなる。
【００６０】
次に、図６に示す暗号化処理回路でのタイミングチャートを用い、暗号化処理回路全体での処理について説明する。図６は、本発明による実施形態の暗号化処理回路の動作を示すタイミングチャートである。図６に示すタイミングチャートは、各クロック時に暗号化処理回路内の各レジスタに格納される値と、乱数の変化とを示している。なお、各前処理部、各暗号化ブロック、後処理部１３１、および後処理部１３２には鍵生成部２００から処理に応じた鍵が送られてくるものとする。また、制御部（図示せず）によって、入出力や暗号化処理のステップ回数が適切に制御されるものとする。
【００６１】
図６に示す例では、平文は２つで１組とし、暗号化処理回路は、１組ごとに平文を入力して暗号化処理を行う。暗号化処理にかかるステップ数は、入力に１ステップ、前処理１ステップ、暗号化処理６ステップ、後処理と出力に１ステップの計９ステップとする。ここでは、３ステップごとに次の組の平文を入力している。タイミングチャート内で、（１−１，Ｐ）は１組目のうち１番目のデータの平文を表し、（１−２，Ｐ）は１組目のうち２番目のデータの平文を表し、（ｉ−ｋ，Ｐ）はｉ組目のうちｋ番目のデータの平文を表す。また、（ｉ−ｋ，０）はｉ組目のうちｋ番目のデータの前処理が終わったデータを示す。（ｉ−ｋ，ｎ）は、ｉ組目のうちｋ番目のデータにｎステップ目の暗号化処理が終わったデータを表す。（ｉ−ｋ，Ｃ）は、ｉ組目のうちｋ番目の平文に対して、前処理、繰り返しの暗号化処理、後処理まで終わった暗号文を表す。
【００６２】
また、所定のクロックで所定の番号の平文が暗号化処理回路に入力されるとしているが、そのためのタイミング調整は、例えば、暗号化処理回路の前段にあるタイミング調整回路１６０により行われる。タイミング調整回路１６０は、例えば、平文が格納されている記憶部から所定クロックおきに平文を１組分ずつ順次読み出し、それらの平文を暗号化処理回路に供給する。
【００６３】
暗号化処理回路では、はじめに１組目の平文（１−１，Ｐ）、（１−２，Ｐ）が入力される。次に、前処理部１１１および前処理部１１２が処理を行った後、ル−プ処理部１２０が６ステップ分の暗号化処理を行う。このル−プ処理部１２０では、乱数が１となった場合、データの反転が行われ、格納するレジスタが切り替わる。例えば３クロック目では乱数が１となったことから、格納するレジスタが切り替わり、３クロック目ではレジスタ１２２４に格納されていた１組目の１番目のデータの中間値（１−１，１）は暗号化ブロック１２１４で処理され（１−１，２）と変換されたあと、４クロック目ではレジスタ１２２１に格納される。
【００６４】
また、ある組の平文が入力されてから３クロック後に次の組の平文が入力され、前に入力された組のデータと並列に暗号化処理が行われる。ル−プ処理部１２０での処理が終わったのち、後処理部１３１および後処理部１３２で後処理が行われ、出力レジスタ１４１および出力レジスタ１４２に暗号文が格納される。そして、次のクロックで１組の暗号文が出力される。図６のタイミングチャートでは、２９クロック目で出力レジスタ１４１および出力レジスタ１４２に最後の暗号文の組が格納され、３０クロック目で暗号文の組が出力され暗号化処理が終了する。
【００６５】
図６に示すタイミングチャートにおいて、不定となっている箇所（×と記載された部分）では、直前の処理結果をそのまま保存する、ランダムな値もしくは固定値のダミ−データを格納する、または、暗号処理を継続しその結果を保存するなどの処理が行われる。ここで、暗号処理を継続するとは、未使用である暗号化ブロックで引き続き何らかのデータに対して暗号化を行い、レジスタに結果を格納することを意味する。
【００６６】
例えば、図６において、ＣＬＫ２６以降は、第１の対の暗号化ブロック１２１２、暗号化ブロック１２１３およびレジスタ１２２２、レジスタ１２２１が未使用となるが、次のような処理が行われる。まず、クロックＣＬＫ２６では、レジスタ１２２１およびレジスタ１２２２は、データ（７−１，６）およびデータ（７−２，６）を格納する。次に、クロックＣＬＫ２７では、第１の対の暗号化ブロック１２１１および暗号化ブロック１２１２は、データ（７−１，６）およびデータ（７−２，６）に対して暗号化処理を行う。レジスタ１２２３およびレジスタ１２２４は、その結果（７−１，７）および結果（７−２，７）を格納する。次に、クロックＣＬＫ２８では、第２の対の暗号化ブロック１２１３および暗号化ブロック１２１４は、第１の対の暗号化ブロックによる暗号化処理の上記の結果をさらに暗号化処理する。レジスタ１２２１およびレジスタ１２２２は、その結果を格納する。
【００６７】
ここで、本実施形態による暗号化処理回路を、暗号化処理を１つの暗号化ブロックで順次処理した場合のものと比較する。図１６は、順次処理を行う一般的な暗号化処理回路の構成を示すブロック図である。図１６に示す暗号化処理回路と比較すると、図１に示す本実施形態の暗号化処理回路は、レジスタと暗号化ブロック、セレクタなどが追加されている。暗号化ブロックが暗号化処理回路の主な構成要素である場合には、図１に示す本実施形態の暗号化処理回路の規模は図１６に示す暗号化処理回路の規模と比べて約４倍になる。
【００６８】
図１７は、順次処理を行う一般的な暗号化処理回路の動作を示すタイミングチャートである。図１６に示す順次処理の回路の処理時間は、１６の平文を順次処理した場合には最大で１４４クロックとなり、１つのデータの入出力ともう１つのデータの暗号処理を同時に処理可能の場合には、図１７に示すように、９８クロックとなる。他方、本実施形態では２つの対の暗号化ブロックが同時に動作し、さらに対の暗号化ブロックで異なるデータの処理に用いられる。結果、同時に４つのデータに対して暗号化処理が実施される。最初と最後では並列処理のデータ数が２となるものの、処理するデータ数が多くなれば図１６に示す順次処理の回路と比べて、図１に示す本実施形態の回路の処理速度は、約４倍となる。
【００６９】
したがって、図１に示す本実施形態の暗号化処理回路は、図１６に示す順次処理による暗号化処理回路と比較して、回路面積が４倍となるが処理速度も約４倍となるので、性能面積比は、ほぼ同等となる。
【００７０】
次に、本実施形態の暗号化処理回路の耐タンパー性について説明する。まず、ビット遷移（または、ハミング距離）に対する耐タンパー性を説明する。図１６に示す回路を用いて順次処理する場合、同一データについての各処理に着目すると、あるクロックにおいて処理前のデータがレジスタ１２２１に書き込まれ、その次のクロックにおいて処理後のデータが同じレジスタ１２２１に書き込まれる。したがって、暗号化の各ステップの処理前後を比較した場合において、レジスタ１２２１の物理的なビット遷移（または、ハミング距離）と暗号化対象データ自体のビット遷移（または、ハミング距離）に相関が生じる。
【００７１】
また、レジスタ１２２１の物理的なビット遷移（または、ハミング距離）と、消費電力との間にも相関がある。したがって、暗号化対象データ自体のビット遷移（または、ハミング距離）と消費電力に相関が生じる。そのため、攻撃者が消費電力を解析し、さらに、暗号化対象データ自体のビット遷移（または、ハミング距離）と消費電力との間の相関を利用することにより、暗号化対象データ自体のビット遷移（または、ハミング距離）を推定し、そのビット遷移を基に、秘密鍵を推定することが可能となる。
【００７２】
他方、図６に示すタイミングチャートに示されるように、図１に示す本実施形態の暗号化処理回路でレジスタ１２２１に記憶されていたデータに対して暗号化処理が１ステップ行われると、処理後のデータは、レジスタ１２２１ではなく次の対のレジスタ１２２３またはレジスタ１２２４に記憶される。そして、レジスタ１２２１には別のデータの処理結果が記憶される。すなわち、あるデータとそれに処理を施したデータが、時間的に連続して（または、時間的に隣接したクロックで）同一のレジスタに記憶されることを回避することができる。
【００７３】
また、本実施形態の暗号化処理回路は、ランダムに書き込まれるレジスタが選択されるため、攻撃者が例えばレジスタ１２２３に記憶されていたデータを把握できたとしても、次に記憶されるデータがレジスタ１２２１のデータの処理結果かレジスタ１２２２のデータの処理結果かが確定できない。そのため、攻撃者が物理的なビット遷移（または、ハミング距離）を計算することができなくなる。
【００７４】
このように、本実施形態の暗号化処理回路によれば、暗号化の各ステップの処理前後を比較した場合において、レジスタ１２２１の物理的なビット遷移（または、ハミング距離）と暗号化対象データ自体のビット遷移（または、ハミング距離）に相関が生じることを回避することができる。したがって、レジスタ１２２１の物理的なビット遷移（または、ハミング距離）と、消費電力の変化との間にも相関があるとしても、暗号化対象データ自体のビット遷移（または、ハミング距離）と消費電力の変化に相関が生じることを回避することができる。また、暗号化対象データ自体のビット遷移（または、ハミング距離）と消費電力の変化との間の相関がないので、消費電力の変化が解析されたとしても、暗号化対象データ自体のビット遷移（または、ハミング距離）が推定されることを回避することができるので、そのビット遷移を基に、秘密鍵が推定されることも回避できる。
【００７５】
次に、１となるビットの数（または、ハミング重み）に対する耐タンパー性を説明する。図１６に示す暗号化処理回路で順次処理する場合において、レジスタ１２２１に記憶されているデータは、暗号化におけるあるステップ後の中間値そのままのデータである。レジスタ１２２１のビットの数（または、ハミング重み）と暗号化対象データ自体のビットの数（または、ハミング重み）に相関が生じる。また、レジスタ１２２１のビットの数（または、ハミング重み）と、消費電力との間にも相関がある。したがって、暗号化対象データ自体のビットの数（または、ハミング重み）と消費電力に相関が生じる。そのため、攻撃者が消費電力を解析し、さらに、暗号化対象データ自体のビットの数（または、ハミング重み）と消費電力との間の相関を利用することにより、暗号化対象データ自体のビットの数（または、ハミング重み）を推定し、そのビットの数を基に、秘密鍵を推定することが可能となる。
【００７６】
図１８は、データを記憶するレジスタを１ステップごとに入れ替えて処理を行う、一般的な暗号化処理回路の構成を示すブロック図である。図１８に示す暗号化処理回路を用いた場合、データ自体のビット遷移（または、ハミング距離）と消費電力の変化との間の相関をなくすことは可能であるが、暗号化対象データ自体のビットの数（または、ハミング重み）はそのままである。そのため、暗号化対象データ自体のビットの数（または、ハミング重み）から秘密鍵を推定することが可能となる。
【００７７】
また、特許文献２等に開示されているパイプライン型で処理した場合でも、ハミング距離の計算が可能となり秘密鍵の解析をされてしまう場合がある。図１９は、一般的なパイプライン型の暗号化処理回路の構成を示すブロック図である。図２０は、一般的なパイプライン型の暗号化処理回路の動作を示すタイミングチャートである。
【００７８】
図２０に示すように、例えばレジスタ１２２２に格納されるデータは、データＩ（１，１）の次はデータＩ（２，１）である。推定した暗号鍵を利用して、後処理と１ステップ分の暗号処理を逆算できるならば、測定した暗号文Ｃ（１）および暗号文Ｃ（２）を基に、それぞれ、データＩ（１，１）およびデータＩ（２，１）を計算することができる。したがって、データＩ（１，１）からデータＩ（２，１）へのビット遷移を算出することができることになる。
【００７９】
このビット遷移は、レジスタ１２２２の物理的なビット遷移であると共に、暗号化対象データ自体のビット遷移でもある。そして、そのビット遷移とレジスタ１２２２の消費電力の変化の間には相関がある。したがって、推定した多数の暗号鍵のうちの個々の暗号鍵を利用してデータＩ（１，１）からデータＩ（２，１）へのビット遷移を算出することにより、算出したビット遷移とレジスタ１２２２の測定した消費電力との間の相関が求められる。そして、推定したどの暗号鍵を利用した場合にその相関が高いかを調べられることにより、推定したどの暗号鍵が実際に利用されている暗号鍵であるのかが知られてしまう。
【００８０】
一方、図２に示す本実施形態の暗号化処理回路では、レジスタ１２２１に記憶されていたデータに対して暗号化処理が１ステップ行われると、処理後のデータは、乱数が１であれば１２２４に記憶される。このとき、レジスタ１２２４に記憶されるデータは本来の暗号化処理１ステップ後のデータそのものではなく、本来の値を反転させた値となる。そのため、レジスタ１２２４のビットの数（または、ハミング重み）と暗号化対象データ自体のビットの数（または、ハミング重み）との相関が崩れることとなる。したがって、消費電力を解析し、さらに、暗号化対象データ自体のビットの数（または、ハミング重み）と消費電力との間の相関を利用して、秘密鍵を推定することが困難となる。
【００８１】
なお、本実施形態の暗号化処理回路の構成は、図１に示した構成に限られず、別の構成も考えられる。図７は、本発明による暗号化処理回路の実施形態の別の構成を示すブロック図である。図７は、対となる暗号化ブロックとレジスタを２つずつ、合計４組で１段とした点が図１に示す構成と異なる。
【００８２】
図８は、本発明による暗号化処理回路の実施形態のさらに別の構成を示すブロック図である。図１に示す構成は、暗号化ブロックが２段であり各段が交互に用いられる構成である。一方、図８に示す構成は、暗号化ブロックが３段以上であり、各段が順次用いられる。
【００８３】
図９は、入力タイミングをずらした場合の暗号化処理回路の動作を示すタイミングチャートである。図６に示すタイミングチャートでは、２つの平文を同時に入力して処理する例を示しているが、２つの平文を同時に入力する必要はない。例えば、図９に示すように、暗号化処理回路は、１番目の平文を入力した１クロック後に２番目の平文を入力し、その１クロック後に３番目の平文を入力し、さらに１クロック後に４番目の平文を入力し、それらを並列に処理してもよい。この場合、一度の入出力に必要なデータ幅は、１つの平文（１つの暗号文）分のデータ幅となる。そのため、図９に示す動作をする暗号化処理回路は、入力レジスタ１４２および出力レジスタ１４４を必要としない。また、入力されたデータは、暗号化ブロック１２１１と暗号化ブロック１２１２のうち、他のデータの処理に使われていない暗号化ブロックにより処理される。
【００８４】
（実施例）
本実施形態の暗号化処理回路の実施例として、本実施形態（後処理なし）の暗号化処理回路を用いて実装したＡＥＳ暗号化回路の例を示す。
【００８５】
図１０は、実施例における、ＡＥＳ暗号化処理回路の構成を示すブロック図である。前処理部１１１，前処理部１１２により実現される排他的論理和回路（ＸＯＲ）１１１ａ，ＸＯＲ１１２ａは、ＡＥＳの前処理として、平文と秘密鍵との排他的論理和演算を行う。また、本実施例では、後処理部は不要である。
【００８６】
本実施例におけるループ処理部１２０の構成は、図２に示した構成と同じである。暗号化ブロック１２１１および暗号化ブロック１２１３は、それぞれ、正規の値に対するＡＥＳのラウンド処理１段分の処理を行うこととし、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ、ＡｄｄＲｏｕｎｄＫｅｙの一連の処理を１ステップ分の処理とする。なお、１０ラウンド目のときにはＭｉｘＣｏｌｕｍｎ処理はスキップするものとする。
【００８７】
一方、暗号化ブロック１２１２、暗号化ブロック１２１４は、それぞれ、反転した値に対してＡＥＳのラウンド処理１段分の処理を行うこととし、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ、ＡｄｄＲｏｕｎｄＫｅｙの一連の処理を行い、反転している値を出力することを１ステップ分の処理とする。暗号化ブロック１２１２および暗号化ブロック１２１４は、暗号化ブロック１２１１および暗号化ブロック１２１３と同様に１０ラウンド目のときには、ＭｉｘＣｏｌｕｍｎ処理をスキップする。暗号化ブロック１２１２および暗号化ブロック１２１４は、反転した入力値に対して、反転している出力値を返すため、暗号化ブロック１２１２および暗号化ブロック１２１４の構成要素は以下のような特徴を持つ。
【００８８】
図１１は、実施例における、ＡＥＳの正規値に対するＳｕｂＢｙｔｅのテーブルを示す説明図である。図１２は、実施例における、ＡＥＳの相補値に対するＳｕｂＢｙｔｅのテーブルを示す説明図である。なお、図１１および図１２に示す数値は１６進数である。ＳｕｂＢｙｔｅは、入力値と出力値とがそれぞれ正規のＳｕｂＢｙｔｅに対して反転した値となる。例えば、正規の入力値が００である場合、暗号化ブロック１２１１では６３を出力する。他方、暗号化ブロック１２１２では入力値が反転しているため、ＦＦが入力値となる。ＦＦが入力された場合、暗号化ブロック１２１２は９Ｃを出力する。このように、暗号化ブロック１２１１と暗号化ブロック１２１２とは、入力値、出力値ともに反転した関係をもつ。
【００８９】
ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎは、どちらも入力値そのものをシフトし、線形和をとるため、暗号化ブロック１２１１でも暗号化ブロック１２１２でも機能は同じである。ＡｄｄＲｏｕｎｄＫｅｙでは、反転している値に対しては、反転した鍵値を加算する必要がある。したがって、ＡｄｄＲｏｕｎｄＫｅｙでは入力された鍵を反転し、反転した鍵とＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ（１０ラウンド目ではＭｉｘＣｏｌｕｍｎはスキップ）の処理結果を加算し、その結果を１ステップ分の処理結果とする。以上の処理を暗号化ブロック１２１２で行うことで、正規の暗号化ブロックにおける入出力値それぞれを反転した値が、暗号化ブロック１２１２や暗号化ブロック１２１４の入出力値となる。
【００９０】
実施例では、１つの平文の処理が開始してから次の平文の処理の開始まで５クロック分間隔を開ける。鍵生成部２００は、秘密鍵および秘密鍵から生成されるラウンド鍵を、前処理部としての排他的論理和回路（ＸＯＲ）１１１ａ、ＸＯＲ１１２ａ、並びにラウンド処理を行う暗号化ブロック１２１１〜暗号化ブロック１２１４へ出力する。
【００９１】
実施例の動作を説明する。図１３は、実施例における、１２８ビットＡＥＳ暗号化処理回路の動作を示すタイミングチャートである。実施例では、１６個、８組の平文に対してＡＥＳで暗号化が行われる。
【００９２】
タイミングチャート内の記号は、図６のものと同じく、（１−１，Ｐ）は１組目のうち１番目のデータの平文を示し、（１−２，Ｐ）は１組目のうち２番目のデータの平文を示し、（ｉ−ｋ，Ｐ）はｉ組目のうちｋ番目のデータの平文を示す。次に、（ｉ−ｋ，０）はｉ組目のうちｋ番目のデータの前処理が終わったデータを示す。（ｉ−ｋ，ｎ）は、ｉ組目のうちｋ番目のデータにｎステップ目の暗号化処理が終わったデータを示す。（ｉ−ｋ，Ｃ）は、ｉ組目のうちｋ番目の平文に対して、前処理、繰り返しの暗号化処理、後処理まで終わった暗号文を示す。
【００９３】
実施例では、暗号化処理回路は、入力処理に１クロック、前処理に１クロック、ラウンド処理に１０クロック、出力処理に１クロック使用し、計１３クロックで動作する。また、１つの平文の処理を開始してから、次の平文の処理を開始するまでの時間的間隔は、５クロック分の間隔である。
【００９４】
実施例では、レジスタにおけるビット遷移と暗号化対象データ自体のビット遷移との間に相関は生じない。そのため、消費電力と暗号化対象データ自体のビット遷移との間にも相関はなく、消費電力を解析することにより秘密鍵を推定することは困難となる。また、ビット値も反転しているため、レジスタにおけるビット値と暗号化対象データ自体のビット値とは、反転時には相関は生じない。そのため、消費電力と暗号化対象データ自体のビット値との間の相関は低くなり、消費電力を解析することにより秘密鍵を推定することは困難となる。
【００９５】
なお、上記の実施形態および実施例では、暗号化処理回路のみの説明をしたが、本実施形態の暗号化処理回路を適用して、復号処理回路（すなわち、暗号解読処理回路）も暗号化処理回路と同様な構成とすることができる。図１４は、本発明による復号処理回路のループ処理部の構成を示すブロック図である。図１４に示す復号処理回路は、図２に示す暗号化処理回路の構成の「暗号化ブロック」を「復号ブロック」に置き換え、入力するデータを「平文」から「暗号文」に置き換え、出力するデータを「暗号文」から「平文」に置き換えたものである。また、復号処理回路の全体構成は、入出力データ以外は図１に示す暗号化処理回路と同様である。また、復号処理回路の動作に関しては、暗号化処理回路の動作における「暗号化」を「復号」に置き換えればよい。なお、復号処理とは、暗号文を平文に戻す処理のことである。
【００９６】
なお、上記の暗号化処理回路は、ハ−ドウェア、ソフトウェアまたはこれらの組み合わせにより実現されることができる。また、上記の暗号化処理回路その他の装置等により行なわれる暗号化処理方法も、ハ−ドウェア、ソフトウェアまたはこれらに組み合わせにより実現されることができる。ここで、ソフトウェアによって実現されるとは、コンピュ−タがプログラムを読み込んで実行することにより実現されることを意味する。また、ここで、例えば、第１〜第ｎのレジスタ１４１〜１４Ｎは、ＣＰＵに含まれるレジスタやメインメモリ、キャッシュメモリ等のメモリのエントリなどである。
【００９７】
プログラムは、様々なタイプの非一時的なコンピュ−タ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュ−タに実行させることができる。非一時的なコンピュ−タ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュ−タ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テ−プ、ハ−ドディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュ−タ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュ−タに供給されてもよい。一時的なコンピュ−タ可読媒体の例は、電気信号、光信号、および電磁波を含む。一時的なコンピュ−タ可読媒体は、電線および光ファイバ等の有線通信路、または無線通信路を介して、プログラムをコンピュ−タに供給できる。
【００９８】
図１５は、本発明による暗号化処理回路の主要部の構成を示すブロック図である。図１５に示すように、本発明による暗号化処理回路は、主要な構成として、平文または当該平文の暗号化における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの暗号化を行う複数の暗号処理部１２５１〜１２５２を備え、暗号処理部１２５１〜１２５２は、データ、または反転された別のデータのいずれかをランダムに格納して出力する複数のレジスタ１２２１〜１２２４と、対となるレジスタから出力されたデータを暗号化して出力する複数の暗号化ブロック１２１１〜１２１４とを含み、暗号化のステップが最終ステップより前である場合、暗号化ブロックにより暗号化された中間値を、別の暗号処理部に出力し、当該別の暗号処理部は、当該中間値をデータとして入力し、最終ステップの暗号化が終了した場合、暗号化ブロックが暗号化したデータを暗号文として出力する。
【００９９】
（１）平文または当該平文の暗号化における中間値である複数のデータを入力し、暗号鍵を用いて複数ステップの暗号化を行う複数の暗号処理部（例えば、暗号処理部１２５１，１２５２）を備え、暗号処理部は、データ、または反転された別のデータのいずれかをランダムに格納して出力する複数のレジスタ（例えば、レジスタ１２２１〜１２２８）と、対となるレジスタから出力されたデータを暗号化して出力する複数の暗号化ブロック（例えば、暗号化ブロック１２１１〜１２１８，１２１Ａ，１２１Ｂ）とを含み、暗号化のステップが最終ステップより前である場合、暗号化ブロックにより暗号化された中間値を、別の暗号処理部に出力し、当該別の暗号処理部は、当該中間値をデータとして入力し、最終ステップの暗号化が終了した場合、暗号化ブロックが暗号化したデータを暗号文として出力する暗号化処理回路。
【０１００】
（２）暗号化処理回路は、少なくとも１クロックの間に、複数の平文のうちの一つの平文または当該平文の暗号化における中間値と、当該平文とは別の平文または当該別の平文の暗号化における中間値とを同時に暗号化するように構成されていてもよい。このような暗号化処理回路によれば、並列で暗号化処理を行うことで高速に暗号化処理を行うことができる。
【０１０１】
（３）複数の平文のうちの一つの平文または当該平文の暗号化における中間値の暗号化が行われた次のクロックに、当該平文とは別の平文または当該別の平文の暗号化における中間値を暗号化するように構成されていてもよい。このような暗号化処理回路によれば、複数クロックにおいて間を空けずに暗号化処理を行うことで高速に暗号化処理を行うことができる。
【０１０２】
（４）複数の平文を入力するクロックのタイミングを調整するタイミング調整回路（例えば、タイミング調整回路１６０）を備えるように構成されていてもよい。
【０１０３】
この出願は、２０１２年６月２２日に出願された日本出願特願２０１２−１４１１５３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【０１０４】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用の可能性】
【０１０５】
本発明は、携帯端末等の情報端末の暗号モジュールに適用できる。
【符号の説明】
【０１０６】
１００  暗号化部
１１１，１１２  前処理部
１２０  ル−プ処理部
１２１１〜１２１８，１２１Ａ，１２１Ｂ  暗号化ブロック
１２２１〜１２２８  レジスタ
１２３１〜１２３８，１２３Ａ〜１２３Ｆ  セレクタ
１２４１〜１２４４  復号ブロック
１３０〜１３２  後処理部
１４１，１４２  入力レジスタ
１４３，１４４  出力レジスタ
１６０  タイミング調整回路
２００  鍵生成部
【図１】
2013190782.tif 000003
【図２】
2013190782.tif 000004
【図３】
2013190782.tif 000005
【図４】
2013190782.tif 000006
【図５】
2013190782.tif 000007
【図６】
2013190782.tif 000008
【図７】
2013190782.tif 000009
【図８】
2013190782.tif 000010
【図９】
2013190782.tif 000011
【図１０】
2013190782.tif 000012
【図１１】
2013190782.tif 000013
【図１２】
2013190782.tif 000014
【図１３】
2013190782.tif 000015
【図１４】
2013190782.tif 000016
【図１５】
2013190782.tif 000017
【図１６】
2013190782.tif 000018
【図１７】
2013190782.tif 000019
【図１８】
2013190782.tif 000020
【図１９】
2013190782.tif 000021
【図２０】
2013190782.tif 000022
【国際調査報告】
2013190782.tif 000023
2013190782.tif 000024
2013190782.tif 000025
2013190782.tif 000026