(57)【要約】  性能面積比の増大を抑制しつつ、レジスタのビット遷移から秘密情報の漏洩することを抑制できる暗号化処理回路を提供する。  各組みが暗号化ブロックとレジスタを含むＮ個の組みを備え、第ｉの組みの暗号化ブロックは、第ｉの組みのレジスタに格納されている平文又は第ｉの組みのレジスタに格納されている中間データであって平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みのレジスタに格納され、第Ｎの組みの暗号化ブロックは、第Ｎの組みのレジスタに格納されている平文又は第Ｎの組みのレジスタに格納されている中間データであって平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みのレジスタに格納される。
2013080976.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路であって、
各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理回路。
【請求項２】
請求項１に記載の暗号化処理回路であって、
当該暗号化処理回路では、少なくとも一部の時間において同時に複数の平文に対する暗号化が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた中間データに対する或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた中間データに対する別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理回路。
【請求項３】
請求項２に記載の暗号化処理回路であって、
少なくとも、前記或る平文の暗号化の開始時刻に対して、前記別の平文の暗号化の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部を更に備え、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた前記中間データに対する前記或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた前記中間データに対する前記別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理回路。
【請求項４】
暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路であって、
各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理回路。
【請求項５】
請求項４に記載の復号処理回路であって、
当該復号処理回路では、少なくとも一部の時間において同時に複数の暗号文に対する復号が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた中間データに対する或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた中間データに対する別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理回路。
【請求項６】
請求項５に記載の復号処理回路であって、
少なくとも、前記或る暗号文の復号の開始時刻に対して、前記別の暗号文の復号の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部を更に備え、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた前記中間データに対する前記或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた前記中間データに対する前記別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理回路。
【請求項７】
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理方法であって、
各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理方法。
【請求項８】
暗号鍵を用いて暗号文を複数のステップで復号する復号処理方法であって、
各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理方法。
【請求項９】
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路としてコンピュータを機能させるための暗号化処理用プログラムであって、
前記暗号化処理回路は、各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
前記暗号化処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックが、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、
前記暗号化処理回路において、第Ｎの組みの前記暗号化ブロックが、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする暗号化処理用プログラム。
【請求項１０】
暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路としてコンピュータを機能させるための復号処理用プログラムであって、
前記復号処理回路は、各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
前記復号処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックが、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、
前記復号処理回路において、第Ｎの組みの前記復号ブロックが、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする復号処理用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化処理回路及び復号処理回路、その方法並びにそのプログラムに関し、特に、サイドチャネル攻撃を困難とする耐タンパー性を有する暗号化処理回路及び復号処理回路、その方法並びにそのプログラムに関する。
【背景技術】
【０００２】
情報の電子データ化が進む中で、情報の保護、秘匿な通信において、暗号はかかせない技術となっている。暗号はその安全性を保つために、鍵等の秘密情報が容易に推測できないようにする必要がある。鍵の全数探索や数学的に解読を行う線形解読や差分解読等といった暗号解析方法が知られているが、現実的な時間での解析は不可能な状況といえる。【０００３】
その一方で、携帯端末などの暗号機能を実装した装置（暗号モジュール）において、攻撃者が処理時間や消費電力などのサイドチャネル情報を精密に測定できるとの仮定の下で、サイドチャネル情報から秘匿情報の取得を試みるサイドチャネル攻撃とその対策が大きな研究テーマとなっている。【０００４】
サイドチャネル攻撃として、暗号モジュールの消費電力を測定し、消費電力から鍵等の秘密情報を解析する電力解析攻撃がある。その中でも、複数の消費電力波形に統計処理を行うことで解析を行う、差分電力解析が特に強力な攻撃法とされている（非特許文献１）。【０００５】
あらかじめ規定された暗号化処理を所定回数実行して暗号文を生成する場合、暗号化処理前後でのレジスタのビット遷移（ハミング距離）と消費電力とに相関があるとされている（非特許文献２）。【０００６】
そのため、ビット遷移に着目することで、秘密鍵が解析できてしまう問題がある。【０００７】
ビット遷移に着目した攻撃への対策手法の例として、Wave Differential Dynamic
Logic(以下、「WDDL」と記載する。)が提案されている（非特許文献３）。WDDLでは、プリチャージ動作を行った後、相補回路を用いて演算することで消費電力の均一化を図っている。演算時のビット値の違いによる消費電流の相違をなくすことで、差分電力解析への対策を実現している。WDDLにおいては、動作にプリチャージを必要とするが、プリチャージを行う分動作速度が低下する。また、相補回路を必要とするため、回路面積が増大している。その結果、WDDLでは性能面積比が低下するという問題がある。【０００８】
特許文献１には、２つのラウンド演算回路を直列に接続し、正規のラウンド鍵を適用した正規のラウンド演算と、ダミーラウンド鍵を適用したダミーラウンド演算を交互に切り替えて暗号処理演算を実行する構成を有することにより、ＤＰＡ(Differential Power Analysis)攻撃に関して耐タンパー性を有する暗号処理装置が開示されている。【０００９】
特許文献２には、平文を複数のブロックに分割し、各ブロックに対するブロック間で独立した暗号化をする場合において、各ブロック毎の暗号化をＣＰＵでパイプライン処理により行なう技術が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００７−１９５１３２号公報
【特許文献２】特開２００９−２０５１６１号公報
【非特許文献】
【００１１】
【非特許文献１】P. Kocher, J. Jaffe and B. Jun, "Introduction toDifferential Power Analysis and Related Attacks," 1998.
【非特許文献２】E. Brier, C. Clavier, and F.Olivier, "Correlation Power Analysis with a Leakage Model," 2004.
【非特許文献３】Kris Tiri，Ingrid Verbauwhede，"A Logic Level Design Methodology for a Secure DPA Resistant ASICor FPGA Implementation"，2004.
【発明の概要】
【発明が解決しようとする課題】
【００１２】
特許文献１に記載の発明では、スループットは落ちないが、回路規模が約２倍となり、従って、性能面積比が約１／２に落ちてしまう。【００１３】
特許文献２に記載の発明のパイプライン処理では、後述するように、サイドチャネル攻撃に対する耐タンパー性が弱い。【００１４】
本発明は、性能面積比の増大を抑制しつつ、レジスタのビット遷移から秘密情報の漏洩することを抑制できる、暗号化処理回路及び復号処理回路、その方法並びにそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明の第１の観点によれば、暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路であって、各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理回路が提供される。【００１６】
本発明の第２の観点によれば、暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路であって、各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理回路が提供される。【００１７】
本発明の第３の観点によれば、暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理方法であって、各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理方法が提供される。【００１８】
本発明の第４の観点によれば、暗号鍵を用いて暗号文を複数のステップで復号する復号処理方法であって、各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理方法が提供される。【００１９】
本発明の第５の観点によれば、暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路としてコンピュータを機能させるための暗号化処理用プログラムであって、前記暗号化処理回路は、各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、前記暗号化処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックが、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、前記暗号化処理回路において、第Ｎの組みの前記暗号化ブロックが、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする暗号化処理用プログラムが提供される。【００２０】
本発明の第６の観点によれば、暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路としてコンピュータを機能させるための復号処理用プログラムであって、前記復号処理回路は、各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、前記復号処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックが、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、前記復号処理回路において、第Ｎの組みの前記復号ブロックが、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする復号処理用プログラムが提供される。
【発明の効果】
【００２１】
本発明によれば、性能面積比の増大を抑制しつつ、レジスタのビット遷移から秘密情報の漏洩することを抑制できる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１の実施形態に係る、暗号化処理回路の概略構成図である。
【図２】本発明の第１の実施形態に係る、暗号化処理回路の動作フローである。
【図３】本発明の第１の実施形態に係る、暗号化処理回路のタイミングチャートである。
【図４】通常の順次処理を行う、暗号化処理回路の概略構成図である。
【図５】順次処理を行う、暗号化処理回路のタイミングチャートである。
【図６】パイプライン処理を行う、暗号化処理回路の概略構成図である。
【図７】パイプライン処理を行う、暗号化処理回路のタイミングチャートである。
【図８】本発明の第１の実施形態に係る、暗号化処理回路の概略構成図（３つの暗号化ブロックを設置）である。
【図９】本発明の第２の実施形態に係る、暗号化処理回路の概略構成図である。
【図１０】本発明の第３の実施形態に係る、暗号化処理回路の概略構成図（前処理なし）である。
【図１１】本発明の第３の実施形態に係る、暗号化処理回路の概略構成図（後処理なし）である。
【図１２】本発明の第３の実施形態に係る、暗号化処理回路の概略構成図（前処理・後処理なし）である。
【図１３】本発明の第３の実施形態に係る、暗号化処理回路の動作フロー（前処理なし）である。
【図１４】本発明の第３の実施形態に係る、暗号化処理回路の動作フロー（後処理なし）である。
【図１５】本発明の第３の実施形態に係る、暗号化処理回路の動作フロー（前処理・後処理なし）である。
【図１６】実施例１における、ＡＥＳの暗号化処理回路の概略構成図である。
【図１７】実施例１における、鍵生成部の概略構成図である。
【図１８】実施例１における、１２８ビットＡＥＳの暗号化処理回路のタイミングチャートである。
【符号の説明】
【００２３】
１００  暗号化部
１１０  前処理部
１１１  第１の前処理部
１１２  第２の前処理部
１１３  前処理部（排他的論理和回路）
１２１  第１の暗号化ブロック
１２２  第２の暗号化ブロック
１２３  第３の暗号化ブロック
１３０  後処理部
１３１  第１の後処理部
１３２  第２の後処理部
１４１  第１のレジスタ
１４２  第２のレジスタ
１４３  第３のレジスタ
１４４  第４のレジスタ
１４５  第５のレジスタ
１４６  第６のレジスタ
１４７  第７のレジスタ
１４８  第８のレジスタ
１５０  セレクタ
１５１  第１のセレクタ
１５２  第２のセレクタ
２００  鍵生成部
２１１  第１の鍵スケジュール部
２１２  第２の鍵スケジュール部
２２１  第１の鍵レジスタ
２２２  第２の鍵レジスタ
２２３  第３の鍵レジスタ
２３１  セレクタ
２３２  セレクタ
２３３  セレクタ
２３４  セレクタ
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【００２５】
上記課題を達成するために、本発明の暗号モジュールは暗号化処理回路を有する。
【００２６】
暗号化処理回路では、複数の暗号化部とレジスタを備え、処理が１ステップ終わるごとに、異なる暗号化ブロックおよびレジスタを用いて処理を繰り返す。
【００２７】
また、別のデータを他の暗号化ブロックおよびレジスタを用いて並列に処理を行う。
（第１の実施形態）
図１に本発明の基本構成を示す。
【００２８】
本実施形態による暗号化処理回路は、暗号化部１００と鍵生成部２００を含む。
【００２９】
暗号化部１００は、前処理部１１０、第１の暗号化ブロック１２１、第２の暗号化ブロック１２２、後処理部１３０、データレジスタ１４１〜１４５、およびセレクタ１５０を含む。
【００３０】
暗号化部１００は、入力されたデータと鍵生成部２００から受け取る暗号鍵をもとに、データを暗号化し、暗号文を出力する機能を持つ。
【００３１】
前処理部１１０は、暗号化処理において、後段の暗号化ブロック行なわれるループ処理の前段の処理を実施する機能を持つ。例えば、ＡＥＳにおいてはラウンド処理の前に秘密鍵と平文との排他的論理和を得る処理、ＤＥＳにおいてはＩＰ処理の機能を持たせることが考えられる。また、平文が分割して入力される場合に、前処理部１１０でデータを蓄積しておくことも考えられる。その場合、前処理部１１０に一定量のデータが蓄積されて段階で、後段の暗号化ブロックにデータを送ることになる。なお、前処理部１１０を含まない構成も可能である。
【００３２】
第１の暗号化ブロック１２１は、前段の第２のレジスタ１４２からデータを受け取り、暗号化処理を１ステップ分行い、後段の第３のレジスタ１４３にデータを出力する機能を持つ。同様に、第２の暗号化ブロック１２２は、前段の第３のレジスタ１４３からデータを受け取り、暗号化処理を１ステップ分行い、後段の第２のレジスタ１４２及び第４のレジスタ１４４にデータを出力する機能を持つ。例えば、ＡＥＳにおいてはＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ、ＡｄｄＲｏｕｎｄＫｅｙのラウンド処理を１ステップ分の処理とみなして、第１の暗号化ブロック１２１及び第２の暗号化ブロック１２２で交互に１ステップずつ処理を行なう。
【００３３】
後処理部１３０は、暗号化処理において、前段の第１の暗号化ブロック１２１及び第２の暗号化ブロック１２２で行なわれるループ処理の後段の処理を実施する機能を持つ。例えば、ＤＥＳにおいては、後処理部１３０にＦＰ処理の機能を持たせることが考えられる。また、暗号文を一括して出力できない場合、後処理部１３０で暗号文を記憶しておき、１クロックごとに暗号文を分割して出力することも考えられる。なお、後処理部を含まない構成も可能である。
【００３４】
第１のレジスタ１４１は、入力部から入力された入力データを一時的に記憶する機能を持つ。第２のレジスタ１４２は、第２の暗号化ブロック１２２での処理結果を一時的に記憶する機能を持つ。第３のレジスタ１４３は、第１の暗号化ブロック１２１での処理結果を一時的に記憶する機能を持つ。第４のレジスタ１４４は、第２の暗号化ブロック１２２でのループ処理中の最後のステップによる処理結果を一時的に記憶する機能を持つ。第５のレジスタ１４５は、後処理部１３０での処理結果を一時的に記憶する機能を持つ。
【００３５】
鍵生成部２００は、入力された秘密鍵をもとに、暗号化部１００で使用する鍵を生成する機能をもつ。暗号化部１００では、第１及び第２の暗号化ブロック１２１、１２２以外に、前処理部１１０や後処理部１３０でも鍵を用いることもある。そのため、鍵生成部２００は、各処理にあわせた鍵を複数生成し、生成した鍵を暗号化部１００に出力する。
【００３６】
鍵の生成方法については、暗号化部１００での処理の開始前において、使用する鍵をあらかじめすべて生成して保存しておき、暗号化部１００での処理の際に、保存しておいた鍵を出力する方法や、暗号化部１００での処理と並行して鍵を生成し出力する方法が考えられる。なお、鍵生成部２００を暗号化ブロックの数と同じ数だけ用意し、それぞれの鍵生成部２００が、それに対応する暗号化ブロック用の鍵生成を行う構成も考えられる。
【００３７】
図１の構成では、第１の暗号化ブロック１２１が前処理部１１０からデータを入力し、第２の暗号化ブロック１２２が後処理部１３０へデータを出力するが、暗号化処理の回数に応じて、前処理部１１０と後処理部１３０の接続位置を変えることも可能である。例えば、図１の構成では第２の暗号化ブロック１２２の後段に後処理部１３０が存在する構成となっているが、暗号化処理の回数が奇数回であるならば、第１の暗号化ブロック１２１の後段に後処理部１３０が存在する構成に変更される。
【００３８】
次に、本実施形態における暗号化方法について、図２および図３を用いて説明する。図２は一つのデータに着目した時のフローチャートを示している。図３は暗号化処理回路全体でのタイミングチャートを示している。
【００３９】
まず、図２を用いて１つの暗号化されるデータ（以下、「平文」と記載する。）に着目して説明する。暗号化処理が開始されると（ステップＡ１）、はじめに、平文が暗号化処理回路に入力され、第１のレジスタ１４１はその平文を格納する（ステップＡ２）。
【００４０】
前処理部１１０は、第１のレジスタ１４１に格納された平文を入力する。前処理部１１０は、平文に対して前処理を行なう。前処理後の平文は、セレクタ１５０を通過後に第２のレジスタ１４２に格納される（ステップＡ３）。
【００４１】
次に、第１の暗号化ブロック１２１は、暗号化処理を１ステップ分行う。第３のレジスタ１４３は、その処理結果を格納する（ステップＡ４）。
【００４２】
さらに、次の第２の暗号化ブロック１２２は、暗号化処理を１ステップ分行う。第２のレジスタ１４２は、その処理結果を格納する（ステップＡ５）。
【００４３】
ここで、それまで行なわれた暗号化処理のステップ回数が所定回数を満たしたかどうかの判定が制御部（図示せず。）により行われる（ステップＡ６）。
【００４４】
まだ、所定回数を満たしていない場合、ステップＡ４とＡ５を繰り返す。
【００４５】
所定回数を満たした場合、後処理部１３０は、後処理を行い、これにより、暗号文が生成される（ステップＡ７）。
【００４６】
最後に、第５のレジスタ１４５は、暗号文を出力し（ステップＡ８）、暗号化処理回路に入力された平文に対する暗号化処理は完了する（ステップＡ９）。
【００４７】
なお、暗号化処理の回数が奇数回である場合には、ステップＡ６がステップＡ４とＡ５の間に行われることとなる。
【００４８】
次に、図３の暗号化処理回路でのタイミングチャートを用い、暗号化処理回路全体での処理について説明する。なお、前処理部１１０、第１の暗号化ブロック１２１、第２の暗号化ブロック１２２、および後処理部１３０には鍵生成部２００から処理に応じた鍵が送られてくるものとする。タイミングチャート内で、P(i)はi番目の平文データ、I(i,0)はi番目の平文の前処理が終わったデータ、I(i,k)はi番目の平文のkステップ目の暗号処理が終わったデータ、C(i)はi番目の平文に対し、前処理、繰返しの暗号化処理、および後処理まで終わった暗号文を指す。xについては、不定のデータとなる。今回の例では、入力処理１ステップ、前処理１ステップ、暗号化処理６ステップ、後処理１ステップに、出力処理１ステップの計１０ステップの暗号化処理とする。ここでは、３ステップおきに次の平文を入力している。以下に、８つの平文を暗号化する時のタイミングチャートの説明を示す。
【００４９】
また、下記の説明では、所定のクロックで所定の番号の平文が暗号化処理回路に入力されるとしているが、そのためのタイミング調整は、例えば、暗号化処理回路の前段にあるタイミング調整回路で行なわれる。タイミング調整回路は、例えば、平文が格納されている記憶部から所定クロックおきに平文を順次読み出し、それらの平文を暗号化処理回路に供給する。タイミング調整回路は暗号化処理回路に含まれていてもよい。
【００５０】
クロックCLK1では、暗号化処理回路に１番目の平文P(1)が入力される。第１のレジスタ１４１は、平文P(1)を格納する。
【００５１】
クロックCLK2では、前処理部１１０は、平文P(1)に対して前処理を行う。第２のレジスタ１４２は、データI(1,0)を格納する。
【００５２】
クロックCLK3では、第１の暗号化ブロック１２１は、データI(1,0)に対して、１ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(1,1)を格納する。
【００５３】
クロックCLK4では、第２の暗号化ブロック１２２は、データI(1,1)に対して、２ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(1,2)を格納する。
【００５４】
また、クロックCLK4では、暗号化処理回路に２番目の平文P(2)が入力される。第１のレジスタ１４１は、平文P(2)を格納する。
【００５５】
クロックCLK5では、第１の暗号化ブロック１２１は、データI(1,2)に対して、３ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(1,3)を格納する。
【００５６】
また、クロックCLK5では、前処理部１１０は、平文P(2)に対して前処理を行う。第２のレジスタ１４２は、データI(2,0)を格納する。
【００５７】
クロックCLK6では、第２の暗号化ブロック１２２は、データI(1,3)に対して、４ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(1,4)を格納する。
【００５８】
また、クロックCLK6では、第１の暗号化ブロック１２１は、データI(2,0)に対して、１ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(2,1)を格納する。
【００５９】
クロックCLK7では、第１の暗号化ブロック１２１は、データI(1,4)に対して、５ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(1,5)を格納する。
【００６０】
また、クロックCLK7では、第２の暗号化ブロック１２２は、データI(2,1)に対して、２ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(2,2)を格納する。
【００６１】
更に、クロックCLK7では、暗号化処理回路に３番目の平文P(3)が入力される。第１のレジスタ１４１は、平文P(3)を格納する。
【００６２】
クロックCLK8では、第２の暗号化ブロック１２２は、データI(1,5)に対して、６ステップ目の暗号化処理を行い、第４のレジスタ１４４は、データI(1,6)を格納する。
【００６３】
また、クロックCLK8では、第１の暗号化ブロック１２１は、データI(2,2)に対して、３ステップ目の暗号化処理を行い、第３のレジスタ１４３は、データI(2,3)を格納する。
【００６４】
更に、クロックCLK8では、前処理部１１０は、平文P(3)に対して、前処理を行う。第２のレジスタ１４２は、データI(3,0)を格納する。
【００６５】
クロックCLK9では、後処理部１３０は、データI(1,6)に対して、後処理を行う。第５のレジスタ１４５は、暗号文C(1)を格納する。
【００６６】
また、クロックCLK9では、第２の暗号化ブロック１２２は、データI(2,3)に対して、４ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(2,4)を格納する。
【００６７】
更に、クロックCLK9では、第１の暗号化ブロック１２１は、データI(3,0)に対して、１ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(3,1)を格納する。
【００６８】
クロックCLK10では、第５のレジスタ１４５は、平文P(1)に対する暗号化結果として暗号文C(1)を出力する。
【００６９】
また、クロックCLK10では、第１の暗号化ブロック１２１は、データI(2,4)に対して、５ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(2,5)を格納する。
【００７０】
更に、クロックCLK10では、第２の暗号化ブロック１２２は、データI(3,1)に対して、２ステップ目の暗号化処理を行う。第２のレジスタ１４２は、I(3,2)を格納する。
【００７１】
更に、クロックCLK10では、暗号化処理回路に４番目の平文P(4)が入力される。第１のレジスタ１４１は、平文P(4)を格納する。
【００７２】
クロックCLK11では、第２の暗号化ブロック１２２は、データI(2,5)に対して、６ステップ目の暗号化処理を行う。第４のレジスタ１４４は、データI(2,6)を格納する。
【００７３】
また、クロックCLK11では、第１の暗号化ブロック１２１は、データI(3,2)に対して、３ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(3,3)を格納する。
【００７４】
更に、クロックCLK11では、前処理部１１０は、平文P(4)に対して、前処理を行う。第２のレジスタ１４２は、データI(4,0)を格納する。
【００７５】
クロックCLK12では、後処理部１３０は、データI(2,6)に対して、後処理を行う。第５のレジスタ１４５は、暗号文C(2)を格納する。
【００７６】
また、クロックCLK12では、第２の暗号化ブロック１２２は、データI(3,3)に対して、４ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(3,4)を格納する。
【００７７】
更に、クロックCLK12では、第１の暗号化ブロック１２１は、データI(4,1)に対して、１ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(4,1)を格納する。
【００７８】
クロックCLK13〜21では、順次、入力・前処理・暗号化処理・後処理・出力が行われる。
【００７９】
クロックCLK22では、第１の暗号化ブロック１２１は、データI(6,4)に対して、５ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(6,5)を格納する。
【００８０】
また、クロックCLK22では、第２の暗号化ブロック１２２は、データI(7,1)に対して、２ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(7,2)を格納する。
【００８１】
更に、クロックCLK22では、暗号化処理回路に８番目の平文P(8)が入力され、第１のレジスタ１４１は、平文P(8)を格納する。
【００８２】
クロックCLK23では、第２の暗号化ブロック１２２は、データI(6,5)に対して、６ステップ目の暗号化処理を行う。第４のレジスタ１４４は、データI(6,6)を格納する。
【００８３】
また、クロックCLK23では、第１の暗号化ブロック１２１は、データI(7,2)に対して、３ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(7,3)を格納する。
【００８４】
更に、クロックCLK23では、前処理部１１０は、平文P(8)に対して、前処理を行う。第２のレジスタ１４２は、データI(8,0)を格納する。
【００８５】
クロックCLK24では、後処理部１３０は、データI(6,6)に対して、後処理を行う。第５のレジスタ１４５は、暗号文C(6)を格納する。
【００８６】
また、クロックCLK24では、第２の暗号化ブロック１２２は、データI(7,3)に対して、４ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(7,4)を格納する。
【００８７】
更に、クロックCLK24では、第１の暗号化ブロック１２１は、データI(8,0)に対して、１ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(8,1)を格納する。
【００８８】
クロックCLK25では、第５のレジスタ１４５は、平文P(6)に対する暗号化結果としてC(6)を出力する。
【００８９】
また、クロックCLK25では、第１の暗号化ブロック１２１は、データI(7,4)に対して、５ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(7,5)を格納する。
【００９０】
更に、クロックCLK25では、第２の暗号化ブロック１２２は、データI(8,1)に対して、２ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(8,2)を格納する。
【００９１】
クロックCLK26では、第２の暗号化ブロック１２２は、データI(7,5)に対して、６ステップ目の暗号化処理を行う。第４のレジスタ１４４は、データI(7,6)を格納する。
【００９２】
また、クロックCLK26では、第１の暗号化ブロック１２１は、データI(8,2)に対して、３ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(8,3)を格納する。
【００９３】
クロックCLK27では、後処理部１３０は、データI(7,6)に対して、後処理を行う。第５のレジスタ１４５は、暗号文C(7)を格納する。
【００９４】
また、クロックCLK27では、第２の暗号化ブロック１２２は、データI(8,3)に対して、４ステップ目の暗号化処理を行う。第２のレジスタ１４２は、データI(8,4)を格納する。
【００９５】
クロックCLK28では、第５のレジスタ１４５は、平文P(7)に対する暗号化結果として暗号文C(7)を出力する。
【００９６】
また、クロックCLK28では、第１の暗号化ブロック１２１は、データI(8,4)に対して、５ステップ目の暗号化処理を行う。第３のレジスタ１４３は、データI(8,5)を格納する。
【００９７】
クロックCLK29では、第２の暗号化ブロック１２２は、データI(8,5)に対して、６ステップ目の暗号化処理を行う。第４のレジスタ１４４は、データI(8,6)を格納する。
【００９８】
クロックCLK30では、後処理部１３０は、データI(8,6)に対して、後処理を行う。第５のレジスタ１４５は、暗号文C(8)を格納する。
【００９９】
クロックCLK31では、第５のレジスタ１４５は、平文P(8)に対する暗号化結果として暗号文C(8)を出力する。
【０１００】
以上の３１クロックで８つの平文の暗号化が完了する。
【０１０１】
タイミングチャートにおいて、不定となっている箇所については、直前の処理結果をそのまま保存する、ランダムな値もしくは固定値のダミーデータを格納する、又は、暗号処理を継続しその結果を保存するなどがある。ここで、暗号処理を継続するとは、未使用である暗号化ブロックで引き続き何らかのデータに対して暗号化を行い、レジスタに結果を格納することをさす。
【０１０２】
例えば、図３において、CLK26で以降は一方の暗号化ブロックおよびレジスタが未使用となるが、次のように処理を行うことになる。
【０１０３】
クロックCLK26では、第２のレジスタ１４２は、データI(7,6)を格納する。
【０１０４】
クロックCLK27では、第１の暗号化ブロック１２１は、データI(7,6)に対して暗号化処理を行う。第３のレジスタ１４３は、その結果を格納する。
【０１０５】
クロックCLK28では、第２の暗号化ブロック１２２は、第１の暗号化ブロック１２１による暗号化処理の上記の結果を更に暗号化処理する。第２のレジスタ１４２は、その結果を格納する。
【０１０６】
ここで、本実施形態による暗号化処理回路を、暗号化処理を１つの暗号化ブロックで順次処理した場合のものと比較する。順次処理するための通常の回路として図４に示すものが考えられる。この回路に対して、本実施形態の回路（図１）では、第３のレジスタ１４３と第２の暗号化ブロック１２２が追加されている。暗号化ブロックが暗号化処理回路の主な構成要素である場合には、本実施形態の回路（図１）の規模は図４の回路の規模と比べて約２倍になる。
【０１０７】
次に、図４に示す順次処理の回路では、処理時間については、８つの平文を順次処理した場合には最大で８０クロック、１つのデータの入出力ともう１つのデータの暗号処理を同時に処理可能の場合には６２クロックかかることになる（図５参照）。他方、本実施形態では２つの暗号化ブロックが同時に動作し、それぞれが異なるデータの処理に用いられることで処理速度が向上している。
【０１０８】
したがって、図１の本実施形態の暗号化処理回路は、図４の順次処理による暗号化処理回路と比較して、回路面積が２倍となるが、処理速度も２倍となっており、従って、性能面積比がほぼ同等となる。
【０１０９】
次に、本実施形態の耐タンパー性について説明する。
【０１１０】
通常の図４の回路で順次処理する場合において、同一データについての各処理に着目すると、あるクロックにおいて処理前のデータが第２のレジスタ１４２に書き込まれ、その次のクロックにおいて処理後のデータが同じ第２のレジスタ１４２に書き込まれる。従って、暗号化の各ステップの処理前後を比較した場合において、第２のレジスタ１４２の物理的なビット遷移（又は、ハミング距離）と暗号化対象データ自体のビット遷移（又は、ハミング距離）に相関が生じる。また、第２のレジスタ１４２の物理的なビット遷移（又は、ハミング距離）と、消費電力との間にも相関がある。従って、暗号化対象データ自体のビット遷移（又は、ハミング距離）と消費電力に相関が生じる。そうすると、消費電力を解析し、更に、暗号化対象データ自体のビット遷移（又は、ハミング距離）と消費電力との間の相関を利用することにより、暗号化対象データ自体のビット遷移（又は、ハミング距離）を推定し、そのビット遷移を基に、秘密鍵を推定することが可能となる。
【０１１１】
他方、図３のタイミングチャートから、図１の回路で第２のレジスタ１４２に記憶されていたデータに対して暗号化処理が１ステップ行われると、処理後のデータは、第２のレジスタ１４２ではなく第３のレジスタ１４３に記憶されているのがわかる。そして、第２のレジスタ１４２には別のデータの処理結果が記憶されている。すなわち、或るデータとそれに処理を施したデータが、時間的に連続して（或いは、時間的に隣接したクロックで）同一のレジスタに記憶されることを回避することができる。
【０１１２】
従って、本実施形態によれば、暗号化の各ステップの処理前後を比較した場合において、第２のレジスタ１４２の物理的なビット遷移（又は、ハミング距離）と暗号化対象データ自体のビット遷移（又は、ハミング距離）に相関が生じることを回避することができる。従って、第２のレジスタ１４２の物理的なビット遷移（又は、ハミング距離）と、消費電力の変化との間にも相関があるとしても、暗号化対象データ自体のビット遷移（又は、ハミング距離）と消費電力の変化に相関が生じることを回避することができる。そうすると、暗号化対象データ自体のビット遷移（又は、ハミング距離）と消費電力の変化との間の相関がないので、消費電力の変化を解析したとしても、暗号化対象データ自体のビット遷移（又は、ハミング距離）を推定することを回避することができ、そのビット遷移を基に、秘密鍵を推定するようなことも回避できる。
【０１１３】
また、パイプライン型で処理した場合でも、ハミング距離の計算が可能となり秘密鍵の解析が可能となる場合がある。図６に２段パイプラインの暗号回路の例を示す。この暗号回路でのタイミングチャートは図７に示すようになる。ここで、例えば第３のレジスタ１４３を見るとデータI(1,1)の次にデータI(2,1)が来ている。推定した暗号鍵を利用して、後処理と１ステップ分の暗号処理を逆算できるならば、測定した暗号文C(1)及び暗号文C(2)を基に、それぞれ、データI(1,1)およびデータI(2,1)を計算できることになり、従って、データI(1,1)からデータI(2,1)へのビット遷移を算出できることになる。このビット遷移は、第３のレジスタ１４３の物理的なビット遷移であると共に、暗号化対象データ自体のビット遷移でもある。そして、そのビット遷移と第３のレジスタ１４３の消費電力の変化の間には相関がある。従って、推定した多数の暗号鍵のうちの個々の暗号鍵を利用してデータI(1,1)からデータI(2,1)へのビット遷移を算出し、その算出したビット遷移と第３のレジスタ１４３の測定した消費電力との間の相関を求め、推定したどの暗号鍵を利用した場合にその相関が高いかを調べることにより、推定したどの暗号鍵が実際に利用されている暗号鍵であるのかを知ることができてしまう。
【０１１４】
本実施形態でも、１ステップだけずらして処理を開始した場合には、同じステップの処理結果が連続して同じレジスタに格納されてしまうため、パイプライン型のときと同じ問題が生じる。しかしながら、２ステップ以上ずらしたならば、同じステップの処理結果は同じレジスタにおいて連続しないため、解析が困難となる。
【０１１５】
図１の実施形態では、２つの暗号化ブロックを用いる構成を示したが、図８のように３組みの暗号化ブロック及びレジスタを用いる構成も考えられる。その場合、１つのデータの処理フローにおいて、使う暗号化ブロックおよびデータ格納用レジスタを１ステップごとに変えることで、暗号化処理回路に耐タンパー性を持たせることができ、性能面積比の低下を抑制できる。また、例えば、第３のレジスタ１４３と第２の暗号化ブロック１２２を複数に増やすことにより、一般にＮ組みの暗号化ブロック及びレジスタを用いる構成も構築できる。
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【０１１６】
図９に第２の実施形態の構成図を示す。第２の実施形態が第１の実施形態と異なる点は、複数箇所からの入出力を可能としている点である。また、各入出力に合わせて前処理部と後処理部を複数設けている。具体的には、前処理部としては、第１の前処理部１１１と第２の前処理部１１２を設け、後処理部としては、第１の後処理部１３１と第２の後処理部１３２を設ける。これに応じて、レジスタとしては、第１〜第８のレジスタ１４１〜１４８を設ける。
【０１１７】
２つの平文の処理開始タイミングについては、第１の実施形態では入出力部が１箇所だったため最低でも１ステップずらす必要があるが、第２の実施形態では同時に開始し、並列処理することが可能である。
【０１１８】
しかしながら、２つの平文とそれぞれに用いる２つの秘密鍵がまったく同一である場合には耐タンパー性が低下してしまう。同一データを処理した場合、同一ステップにおける処理中のデータもまったく同じとなる。そのため、同じレジスタに暗号化処理後のデータが書き込まれるのと同じ結果となり、レジスタのビット遷移と消費電力には相関が生じ、秘密鍵の解析が可能となる。
【０１１９】
したがって、２箇所または複数箇所からデータを取り込み処理する場合でも、同じ秘密鍵で処理をするならば、処理の開始タイミングは最低でも２ステップはずらすのが望ましい。例えば、同時にデータを取り込んだとしても、一方の前処理部では一定クロックの間はデータを保留し、その後暗号化ブロックでの処理を開始する方法も考えられる。
【０１２０】
また、後処理部のいずれかデータが先に到着したほうは、もう一方の処理が完了するまで暗号文の出力を保留することで、２つの暗号文を同時に出力する方法も考えられる。
【０１２１】
第２の実施形態においては、前処理部や後処理部、レジスタの数が増加しており、回路規模は第１の実施形態よりは大きくなる。
【０１２２】
しかしながら、同時に処理を開始することができるため、処理の開始時や終了時に、一方の暗号化ブロックが動作していない時間を減らすことができ、暗号化処理のスループットを向上させることができる。
（第３の実施形態）
次に、本発明の第３の実施形態について説明する。
【０１２３】
図１０〜１２に第３の実施形態の構成図を示す。第３の実施形態が、第１の実施形態と異なる点は、前処理部と後処理部の片方又は双方をもたない点である。図１０は前処理なしの構成を示し、図１１は後処理なしの構成を示し、図１２は前処理・後処理なしの構成を示す。
【０１２４】
第３の実施形態の動作を説明するためのフローチャートを図１３〜１５に示す。図１３は前処理なしの構成における動作を説明するためのフローチャートであり、図１４は後処理なしの構成における動作を説明するためのフローチャートであり、図１５は前処理・後処理なしの構成における動作を説明するためのフローチャートである。これらの構成における動作のフローチャートは、図２に示す第１の実施形態のフローチャートから、前処理または後処理を除いたものとなっている。
【０１２５】
暗号化処理において、前処理や後処理が不要である場合には第３の実施形態を適用することが可能である。また、前処理や後処理を暗号化処理回路の外部で行う場合にも、第３の実施形態が適用可能である。
【０１２６】
第３の実施形態の効果は、第１の実施形態と同様に、順次処理の場合とほぼ同等の性能面積比を持ち、消費電力とハミング距離との相関から秘密鍵の解析を行うのを困難とすることである。
【０１２７】
以上説明したように、上記の実施形態によれば、暗号化処理回路を用いることで、データの更新値を異なるレジスタに書き込むことになるため、レジスタのビット遷移を利用したサイドチャネル攻撃が困難となる。また、耐性向上に伴い回路規模は増大するが、空いている暗号化ブロックで別のデータを処理させることによって、性能面積比の低下を抑制できる。
【実施例１】
【０１２８】
暗号として128ビットＡＥＳを用いるときの暗号化処理回路の構成について説明する。ＡＥＳの暗号化回路を本発明の第３の実施形態（後処理なし）を用いて実装する例を示す。【０１２９】
図１６に回路の構成を示す。【０１３０】
前処理部としての排他的論理和回路（ＸＯＲ）１１３は、ＡＥＳの前処理として、平文と秘密鍵との排他的論理和演算を行う。【０１３１】
第１の暗号化ブロック１２１と第２の暗号化ブロック１２２は、それぞれ、ＡＥＳのラウンド処理１段分の処理を行うこととし、ＳｕｂＢｙｔｅ、ＳｈｉｆｔＲｏｗ、ＭｉｘＣｏｌｕｍｎ、ＡｄｄＲｏｕｎｄＫｅｙの一連の処理を１ステップ分の処理とする。なお、１０ラウンド目のときにはＭｉｘＣｏｌｕｍｎ処理はスキップするものとする。【０１３２】
実施例１では、１つの平文の処理が開始してから次の平文の処理の開始まで５クロック分間隔を開ける。【０１３３】
鍵生成部２００は、秘密鍵および秘密鍵から生成されるラウンド鍵を、前処理部としての排他的論理和回路（ＸＯＲ）１１３並びにラウンド処理を行う第１の暗号化ブロック１２１及び第２の暗号化ブロック１２２に出力する。【０１３４】
鍵生成部の構成例を図１７に示す。鍵生成部２００は第１〜第２の鍵スケジュール部２１１〜２１２、秘密鍵またはラウンド鍵を格納する第１〜第３の鍵レジスタ２２１〜２２３、および、４つのセレクタ２３１〜２３４を含む。【０１３５】
秘密鍵が入力されると、まず、第１の鍵レジスタ２２１が、その秘密鍵を格納する。【０１３６】
次のステップでは、前処理部としての排他的論理和回路（ＸＯＲ）１１３が、前処理の段階で平文とＸＯＲとの排他的論理和演算を行なうために、排他的論理和回路（ＸＯＲ）１１３に秘密鍵を出力するとともに、第１の鍵スケジュール部２１１又は第２の鍵スケジュール部２１２のどちらか一方へ向けて秘密鍵が送られ、第２の鍵レジスタ２２２または第３の鍵レジスタ２２３は、送られてきた秘密鍵を格納する。【０１３７】
次に、第１の鍵スケジュール部２１１又は第２の鍵スケジュール部２１２は、ラウンド鍵を生成し、第１の暗号化ブロック１２１又は第２の暗号化ブロック１２２のどちらか一方にラウンド鍵を出力する。これと同時に、第２の鍵レジスタ２２２又は第３の鍵レジスタ２２３は、そのラウンド鍵を格納される。【０１３８】
途中、次のデータ用の秘密鍵が入力されたら、空いている鍵スケジュール部である第１の鍵スケジュール部２１１又は第２の鍵スケジュール部２１２に向けてその秘密鍵が送られ、その鍵スケジュール部でもラウンド鍵を繰返し生成する。【０１３９】
ラウンド鍵の生成が最終段まで終了したら、セレクタ２３１または２３２によって、次の秘密鍵が入力され再びラウンド鍵の生成を繰り返す。【０１４０】
セレクタ２３３およびセレクタ２３４は第１の鍵スケジュール部２１１と第２の鍵スケジュール部２１２のどちらのラウンド鍵を第１の暗号化ブロック１２１又は第２の暗号化ブロック１２２に出力するかを選択する。【０１４１】
なお、使用する鍵がすべての平文に対して共通である場合には、あらかじめラウンド鍵を生成してメモリに保存し、前処理部としての排他的論理和演算や処理するラウンドに合わせた鍵を出力する構成も可能である。【０１４２】
実施例１における動作について、図１８のタイミングチャートを用いて説明する。【０１４３】
実施例１では、６つの平文に対してＡＥＳで暗号化を行う。【０１４４】
タイミングチャート内の記号を説明すると、P(i)はi番目の平文データ、I(i,0)はi番目の平文と秘密鍵のＸＯＲを行ったデータ、I(i,k)はi番目の平文のkステップ目のラウンド処理が終わったデータ、C(i)は前処理、および10ラウンド分のラウンド処理が終わったi番目の平文に対応する暗号文を指す。xについては、不定のデータとなる。【０１４５】
クロックCLK1では、暗号化処理回路に１番目の平文P(1)が入力され、第１のレジスタ１４１は、平文P(1)を格納する。【０１４６】
クロックCLK2では、排他的論理和回路１１３は、平文P(1)と秘密鍵との排他的論理和演算を行なう。第２のレジスタ１４２は、データI(1,0)を格納する。【０１４７】
クロックCLK3では、第１の暗号化ブロック１２１は、データI(1,0)に対して、１ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(1,1)を格納する。【０１４８】
クロックCLK4では、第２の暗号化ブロック１２２は、データI(1,1)に対して、２ラウンド目の暗号化処理が行う。第２のレジスタ１４２は、データI(1,2)を格納する。【０１４９】
クロックCLK5では、第１の暗号化ブロック１２１は、データI(1,2)に対して、３ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(1,3)を格納する。【０１５０】
クロックCLK6では、第２の暗号化ブロック１２２は、データI(1,3)に対して、４ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(1,4)を格納する。【０１５１】
また、クロックCLK6では、暗号化処理回路に２番目の平文P(2)が入力され、第１のレジスタ１４１は、平文P(2)を格納する。【０１５２】
クロックCLK7では、第１の暗号化ブロック１２１は、データI(1,4)に対して、５ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(1,5)を格納する。【０１５３】
また、クロックCLK7では、排他的論理和回路１１３は、平文P(2)と秘密鍵との排他的論理和演算を行なう。第２のレジスタ１４２は、データI(2,0)を格納する。【０１５４】
クロックCLK8では、第２の暗号化ブロック１２２は、データI(1,5)に対して、６ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(1,6)を格納する。【０１５５】
また、クロックCLK8では、第１の暗号化ブロック１２１は、データI(2,0)に対して、１ラウンド目の処理を行なう。第３のレジスタ１４３は、データI(2,1)を格納する。【０１５６】
クロックCLK9では、第１の暗号化ブロック１２１は、データI(1,6)に対して、７ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(1,7)を格納する。【０１５７】
また、クロックCLK9では、第２の暗号化ブロック１２２は、データI(2,1)に対して、２ラウンド目の処理を行なう。第２のレジスタ１４２は、データI(2,2)を格納する。【０１５８】
クロックCLK10では、第２の暗号化ブロック１２２は、データI(1,7)に対して、８ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(1,8)を格納する。【０１５９】
また、クロックCLK10では、第１の暗号化ブロック１２１は、データI(2,2)に対して、３ラウンド目の処理を行なう。第３のレジスタ１４３は、データI(2,3)を格納する。【０１６０】
クロックCLK11では、第１の暗号化ブロック１２１は、データI(1,8)に対して、９ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(1,9)を格納する。【０１６１】
また、クロックCLK11では、第２の暗号化ブロック１２２は、データI(2,3)に対して、４ラウンド目の処理を行なう。第２のレジスタ１４２は、データI(2,4)を格納する。【０１６２】
更に、クロックCLK11では、暗号化処理回路に３番目の平文P(3)が入力される。第１のレジスタ１４１は、平文P(3)を格納する。【０１６３】
クロックCLK12では、第２の暗号化ブロック１２２は、データI(1,9)に対して、１０ラウンド目の暗号化処理を行なう。第４のレジスタ１４４は、暗号文C(1)を格納する。【０１６４】
また、クロックCLK12では、第１の暗号化ブロック１２１は、データI(2,4)に対して、５ラウンド目の処理を行なう。第３のレジスタ１４３は、データI(2,5)を格納する。【０１６５】
更に、クロックCLK12では、排他的論理和回路１１３は、平文P(3)と秘密鍵との排他的論理和演算を行なう。第２のレジスタ１４２は、排他的論理和演算の結果であるデータI(3,0)をする。【０１６６】
クロックCLK13では、平文P(1)に対する暗号化結果として暗号文C(1)を出力する。【０１６７】
また、クロックCLK13では、第２の暗号化ブロック１２２は、データI(2,5)に対して、６ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(2,6)を格納する。【０１６８】
更に、クロックCLK13では、第１の暗号化ブロック１２１は、データI(3,0)に対して、１ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(3,1)を格納する。【０１６９】
クロックCLK14では、第１の暗号化ブロック１２１は、データI(2,6)に対して、７ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(2,7)を格納する。【０１７０】
また、クロックCLK14では、第２の暗号化ブロック１２２は、データI(3,1)に対して、２ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(3,2)を格納する。【０１７１】
クロックCLK15では、第２の暗号化ブロック１２２は、データI(2,7)に対して、８ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(2,8)を格納する。【０１７２】
また、クロックCLK15では、第１の暗号化ブロック１２１は、データI(3,2)に対して、３ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(3,3)を格納する。【０１７３】
クロックCLK16では、第１の暗号化ブロック１２１は、データI(2,8)に対して、９ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(2,9)を格納する。【０１７４】
また、クロックCLK16では、第２の暗号化ブロック１２２は、データI(3,3)に対して、４ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(3,4)を格納する。【０１７５】
更に、また、クロックCLK16では、暗号化処理回路に４番目の平文P(4)が入力される。第１のレジスタ１４１は、平文P(4)を格納する。【０１７６】
クロックCLK17では、第２の暗号化ブロック１２２は、データI(2,9)に対して、１０ラウンド目の暗号化処理を行なう。第４のレジスタ１４４は、暗号文C(2)を格納する。【０１７７】
また、クロックCLK17では、第１の暗号化ブロック１２１は、データI(3,4)に対して、５ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(3,5)を格納する。【０１７８】
更に、クロックCLK17では、排他的論理和回路１１３は、平文P(4)と秘密鍵との排他的論理和演算を行なう。第２のレジスタ１４２は、データI(4,0)を格納する。【０１７９】
クロックCLK18では、平文P(2)に対する暗号化結果として暗号文C(2)を出力する。【０１８０】
また、クロックCLK18では、第２の暗号化ブロック１２２は、データI(3,5)に対して、６ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(3,6)を格納する。【０１８１】
更に、クロックCLK18では、第１の暗号化ブロック１２１は、データI(4,0)に対して、１ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(4,1)を格納する。【０１８２】
クロックCLK19〜25では、順次、入力・排他的論理和演算・ラウンド処理・出力が行われる。【０１８３】
クロックCLK26では、第１の暗号化ブロック１２１は、データI(4,8)に対して、９ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(4,9)を格納する。【０１８４】
また、クロックCLK26では、第２の暗号化ブロック１２２は、データI(5,3)に対して、４ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(5,4)を格納する。【０１８５】
更に、クロックCLK26では、暗号化処理回路に６番目の平文P(6)が入力される。第１のレジスタ１４１は、平文P(6)を格納する。【０１８６】
クロックCLK27では、第２の暗号化ブロック１２２は、データI(4,9)に対して、１０ラウンド目の暗号化処理を行なう。第４のレジスタ１４４は、暗号文C(4)を格納する。【０１８７】
また、クロックCLK27では、第１の暗号化ブロック１２１は、データI(5,4)に対して、４ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(5,4)を格納する。【０１８８】
更に、クロックCLK27では、排他的論理和回路１１３は、平文P(6)と秘密鍵との排他的論理和演算を行なう。第２のレジスタ１４２は、排他的論理和演算の結果であるデータI(6,0)を格納する。【０１８９】
クロックCLK28では、平文P(4)に対する暗号化結果として暗号文C(4)を出力する。【０１９０】
また、クロックCLK28では、第２の暗号化ブロック１２２は、データI(5,5)に対して、６ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(5,6)を格納する。【０１９１】
更に、クロックCLK28では、第１の暗号化ブロック１２１は、データI(6,0)に対して、１ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(6,1)を格納する。【０１９２】
クロックCLK29では、第１の暗号化ブロック１２１は、データI(5,6)に対して、７ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(5,7)を格納する。【０１９３】
また、クロックCLK29では、第２の暗号化ブロック１２２は、データI(6,1)に対して、２ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(6,2)を格納する。【０１９４】
クロックCLK30では、第２の暗号化ブロック１２２は、データI(5,7)に対して、８ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(5,8)を格納する。【０１９５】
また、クロックCLK30では、第１の暗号化ブロック１２１は、データI(6,2)に対して、３ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(6,3)を格納する。【０１９６】
クロックCLK31では、第１の暗号化ブロック１２１は、データI(5,8)に対して、９ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(5,9)を格納する。【０１９７】
また、クロックCLK31では、第２の暗号化ブロック１２２は、データI(6,3)に対して、４ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(6,4)を格納する。【０１９８】
クロックCLK32では、第２の暗号化ブロック１２２は、データI(5,9)に対して、１０ラウンド目の暗号化処理を行なう。第４のレジスタ１４４は、暗号文C(5)を格納する。【０１９９】
また、クロックCLK32では、第１の暗号化ブロック１２１は、データI(6,4)に対して、５ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(6,5)を格納する。【０２００】
クロックCLK33では、平文P(5)に対する暗号化結果として暗号文C(5)を出力する。【０２０１】
また、クロックCLK33では、第２の暗号化ブロック１２２は、データI(6,5)に対して、６ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(6,6)を格納する。【０２０２】
クロックCLK34では、第１の暗号化ブロック１２１は、データI(6,6)に対して、７ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(6,7)を格納する。【０２０３】
クロックCLK35では、第２の暗号化ブロック１２２は、データI(6,7)に対して、８ラウンド目の暗号化処理を行なう。第２のレジスタ１４２は、データI(6,8)を格納する。【０２０４】
クロックCLK36では、第１の暗号化ブロック１２１は、データI(6,8)に対して、９ラウンド目の暗号化処理を行なう。第３のレジスタ１４３は、データI(6,9)を格納する。【０２０５】
クロックCLK37では、第２の暗号化ブロック１２２は、データI(6,9)に対して、１０ラウンド目の暗号化処理を行なう。第４のレジスタ１４４は、暗号文C(6)を格納する。【０２０６】
クロックCLK38では、平文P(6)に対する暗号化結果として暗号文C(6)を出力する。【０２０７】
実施例１では、暗号化処理回路は、入力に１クロック、前処理に１クロック、ラウンド処理に１０クロック、出力に１クロックの計１３クロックで動作することになる。【０２０８】
実施例１では、レジスタにおけるビット遷移と暗号化対象データ自体のビット遷移との間に相関は生じない。そのため、消費電力と暗号化対象データ自体のビット遷移との間にも相関はなく、消費電力を解析することにより秘密鍵を推定することは困難となる。【０２０９】
実施例１では、１つの平文の処理を開始してから、次の平文の処理を開始するまでの時間的間隔を、５クロック分の間隔としている。【０２１０】
２つの暗号化ブロックを用いて処理を行うことを考えると、その時間的間隔としては、１・３・５・７・９の奇数クロック分の間隔が考えられる。その中で、１クロックの場合と９クロックの場合は、ハミング距離の計算が容易となるため、耐タンパー性の低下を招くこととなる。すなわち、１クロックの場合、レジスタに書き込まれるデータの遷移が図７の２段パイプラインを行っているのと同等となってしまう。９クロックの場合、データI(1,9)の次にデータI(2,1)がくることとなり、データI(1,9)は暗号文から１ラウンド分逆算可能なら算出でき、データI(2,1)は平文から１ラウンド分の演算を行えば算出可能である。そのため、上記の時間間隔が１クロック分の時間間隔（１ラウンド）又は９クロック分の時間間隔（９ラウンド）である場合には、他の３・５・７ラウンドの場合に比べて、耐タンパー性が劣ってしまう。【０２１１】
従って、１２８ビットＡＥＳに対して本発明を適用するときには、動作間隔として少なくとも２ラウンド分はずらしたほうがよく、実施例１においては３・５・７クロックのいずれかを動作間隔とするのが望ましい。つまり、１、３、５、７、９から２以上且つラウンド処理数（＝１０）−２＝８以下のみの数である３、５、７を選択し、これらを動作間隔とするのが望ましい。【０２１２】
なお、上記の実施形態及び実施例では、暗号化処理回路のみの説明をしたが、本発明を適用して、復号処理回路（すなわち、暗号解読処理回路）も暗号化処理回路と同様な構成とすることができる。この場合、「暗号化」は「復号」に置き換わる。例えば、「暗号化ブロック」は「復号ブロック」に置き換わる。なお、復号処理とは、暗号文を平文に戻す処理のことである。【０２１３】
なお、上記の暗号化処理回路は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記の暗号化処理回路その他の装置等により行なわれる暗号化処理方法も、ハードウェア、ソフトウェア又はこれらに組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。また、ここで、例えば、第１〜第ｎのレジスタ１４１〜１４Ｎは、ＣＰＵに含まれるレジスタやメインメモリ、キャッシュメモリ等のメモリのエントリなどである。【０２１４】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer
readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory)）を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。【０２１５】
本願は、日本の特願２０１１−２５８９９１（２０１１年１１月２８日に出願）に基づいたものであり、又、特願２０１１−２５８９９１に基づくパリ条約の優先権を主張するものである。特願２０１１−２５８９９１の開示内容は、特願２０１１−２５８９９１を参照することにより本明細書に援用される。【０２１６】
本発明の代表的な実施の形態が詳細に述べられたが、様々な変更(changes)、置き換え(substitutions)及び選択(alternatives)が請求項で定義された発明の精神と範囲から逸脱することなくなされることが理解されるべきである。また、仮にクレームが出願手続きにおいて補正されたとしても、クレームされた発明の均等の範囲は維持されるものと発明者は意図する。【０２１７】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。【０２１８】
（付記１）
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路であって、
各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理回路。【０２１９】
（付記２）
付記１に記載の暗号化処理回路であって、
当該暗号化処理回路では、少なくとも一部の時間において同時に複数の平文に対する暗号化が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた中間データに対する或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた中間データに対する別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理回路。【０２２０】
（付記３）
付記２に記載の暗号化処理回路であって、
少なくとも、前記或る平文の暗号化の開始時刻に対して、前記別の平文の暗号化の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部を更に備え、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた前記中間データに対する前記或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた前記中間データに対する前記別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理回路。【０２２１】
（付記４）
暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路であって、
各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理回路。【０２２２】
（付記５）
付記４に記載の復号処理回路であって、
当該復号処理回路では、少なくとも一部の時間において同時に複数の暗号文に対する復号が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた中間データに対する或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた中間データに対する別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理回路。【０２２３】
（付記６）
付記５に記載の復号処理回路であって、
少なくとも、前記或る暗号文の復号の開始時刻に対して、前記別の暗号文の復号の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部を更に備え、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた前記中間データに対する前記或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた前記中間データに対する前記別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理回路。【０２２４】
（付記７）
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理方法であって、
各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックは、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記暗号化ブロックは、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする暗号化処理方法。【０２２５】
（付記８）
付記７に記載の暗号化処理方法であって、
当該暗号化処理方法では、少なくとも一部の時間において同時に複数の平文に対する暗号化が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた中間データに対する或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた中間データに対する別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理方法。【０２２６】
（付記９）
付記８に記載の暗号化処理方法であって、
少なくとも、前記或る平文の暗号化の開始時刻に対して、前記別の平文の暗号化の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整ステップを有し、
前記タイミング調整ステップによる調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた前記中間データに対する前記或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた前記中間データに対する前記別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理方法。【０２２７】
（付記１０）
暗号鍵を用いて暗号文を複数のステップで復号する復号処理方法であって、
各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みが用いられ、
第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックは、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納され、
第Ｎの組みの前記復号ブロックは、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されることを特徴とする復号処理方法。【０２２８】
（付記１１）
付記１０に記載の復号処理方法であって、
当該復号処理方法では、少なくとも一部の時間において同時に複数の暗号文に対する復号が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた中間データに対する或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた中間データに対する別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理方法。【０２２９】
（付記１２）
付記１１に記載の復号処理方法であって、
少なくとも、前記或る暗号文の復号の開始時刻に対して、前記別の暗号文の復号の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整ステップを有し、
前記タイミング調整ステップによる調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた前記中間データに対する前記或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた前記中間データに対する前記別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理方法。【０２３０】
（付記１３）
暗号鍵を用いて平文を複数のステップで暗号化する暗号化処理回路としてコンピュータを機能させるための暗号化処理用プログラムであって、
前記暗号化処理回路は、各組みが暗号化ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
前記暗号化処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記暗号化ブロックが、第ｉの組みの前記レジスタに格納されている平文又は第ｉの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、
前記暗号化処理回路において、第Ｎの組みの前記暗号化ブロックが、第Ｎの組みの前記レジスタに格納されている平文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記平文から得られた中間データに対して或るステップの暗号化をし、該暗号化により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする暗号化処理用プログラム。【０２３１】
（付記１４）
付記１３に記載の暗号化処理用プログラムであって、
前記暗号化処理回路では、少なくとも一部の時間において同時に複数の平文に対する暗号化が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた中間データに対する或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた中間データに対する別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれるようにするためのコードを更に含むことを特徴とする暗号化処理用プログラム。【０２３２】
（付記１５）
付記１４に記載の暗号化処理用プログラムであって、
少なくとも、前記或る平文の暗号化の開始時刻に対して、前記別の平文の暗号化の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部としてコンピュータを更に機能させ、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る平文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る平文から得られた前記中間データに対する前記或るステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の平文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の平文から得られた前記中間データに対する前記別のステップの暗号化が前記或る組みの前記暗号化ブロックで行なわれることを特徴とする暗号化処理用プログラム。【０２３３】
（付記１６）
暗号鍵を用いて暗号文を複数のステップで復号する復号処理回路としてコンピュータを機能させるための復号処理用プログラムであって、
前記復号処理回路は、各組みが復号ブロックとレジスタを含むＮ個（Ｎは２以上の整数）の組みを備え、
前記復号処理回路において、第ｉ（ｉ＝１〜Ｎ−１）の組みの前記復号ブロックが、第ｉの組みの前記レジスタに格納されている暗号文又は第ｉの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第（ｉ＋１）の組みの前記レジスタに格納されるようにするためのコードを含み、
前記復号処理回路において、第Ｎの組みの前記復号ブロックが、第Ｎの組みの前記レジスタに格納されている暗号文又は第Ｎの組みの前記レジスタに格納されている中間データであって前記暗号文から得られた中間データに対して或るステップの復号をし、該復号により得られた中間データは、第１の組みの前記レジスタに格納されるようにするためのコードを含むことを特徴とする復号処理用プログラム。【０２３４】
（付記１７）
付記１６に記載の復号処理用プログラムであって、
前記復号処理回路では、少なくとも一部の時間において同時に複数の暗号文に対する復号が行なわれ、
或るクロックで、或る組みの前記レジスタに格納されている或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた中間データに対する或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた中間データに対する別のステップの復号が前記或る組みの前記復号ブロックで行なわれるようにするためのコードを更に含むことを特徴とする復号処理用プログラム。【０２３５】
（付記１８）
付記１７に記載の復号処理用プログラムであって、
少なくとも、前記或る暗号文の復号の開始時刻に対して、前記別の暗号文の復号の開始時刻が所定数のクロックだけずれるように調整をするタイミング調整部としてコンピュータを更に機能させ、
前記タイミング調整部による調整により、前記或るクロックで、前記或る組みの前記レジスタに格納されている前記或る暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記或る暗号文から得られた前記中間データに対する前記或るステップの復号が前記或る組みの前記復号ブロックで行なわれたならば、前記或るクロックの次のクロックで、前記或る組みの前記レジスタに格納されている前記別の暗号文又は前記或る組みの前記レジスタに格納されている中間データであって前記別の暗号文から得られた前記中間データに対する前記別のステップの復号が前記或る組みの前記復号ブロックで行なわれることを特徴とする復号処理用プログラム。
【図１】
2013080976.tif 000003
【図２】
2013080976.tif 000004
【図３】
2013080976.tif 000005
【図４】
2013080976.tif 000006
【図５】
2013080976.tif 000007
【図６】
2013080976.tif 000008
【図７】
2013080976.tif 000009
【図８】
2013080976.tif 000010
【図９】
2013080976.tif 000011
【図１０】
2013080976.tif 000012
【図１１】
2013080976.tif 000013
【図１２】
2013080976.tif 000014
【図１３】
2013080976.tif 000015
【図１４】
2013080976.tif 000016
【図１５】
2013080976.tif 000017
【図１６】
2013080976.tif 000018
【図１７】
2013080976.tif 000019
【図１８】
2013080976.tif 000020
【国際調査報告】
2013080976.tif 000021
2013080976.tif 000022
2013080976.tif 000023
2013080976.tif 000024