(57)【要約】  【課題】  グリッジの発生を抑制し回路全体の消費電力を効果的に削減できる暗号処理装置を提供する。  【解決手段】  暗号処理装置は、拡大鍵を入力し入力データをＡＥＳアルゴリズムにしたがって暗号化する暗号化ラウンド関数処理部５２０と、暗号化ラウンド関数処理部に関するデータを保持するラッチ６０１と、拡大鍵を入力し入力データを復号する復号ラウンド関数処理部５２１と、復号ラウンド関数処理部に関するデータを保持するラッチ６０２と、現在の処理が暗号化／復号のいずれかに依存して、暗号化ラウンド関数処理部側の出力と復号ラウンド関数処理部側の出力のいずれかを選択する選択部５０３と、暗号化処理時にラッチ６０２の状態を維持し、復号処理時にラッチ６０１の状態を維持する制御部１０とを備える。【選択図】  図６
2006072117.tif 000002
【特許請求の範囲】
【請求項１】
拡大鍵を入力し入力データをＡＥＳアルゴリズムにしたがって暗号化する暗号化ラウンド関数処理部と、
前記暗号化ラウンド関数処理部に関するデータを保持する第１のデータ保持部と、
拡大鍵を入力し入力データを復号する復号ラウンド関数処理部と、
前記復号ラウンド関数処理部に関するデータを保持する第２のデータ保持部と、
現在の処理が暗号化／復号のいずれかに依存して、前記暗号化ラウンド関数処理部側の出力と前記復号ラウンド関数処理部側の出力のいずれかを選択する選択部と、
現在の処理が暗号化であるとき前記第２のデータ保持部の状態を維持し、現在の処理が復号であるとき前記第１のデータ保持部の状態を維持する制御部とを備える暗号処理装置。
【請求項２】
前記第１のデータ保持部は前記暗号化ラウンド関数処理部の入力側に接続される第１のラッチを含み、前記第２のデータ保持部は前記復号ラウンド関数処理部の入力側に接続される第２のラッチを含む請求項１記載の暗号処理装置。
【請求項３】
前記第１のデータ保持部は前記暗号化ラウンド関数処理部の出力側に接続される第１のレジスタを含み、前記第２のデータ保持部は前記復号ラウンド関数処理部の出力側に接続される第２のレジスタを含む請求項１記載の暗号処理装置。
【請求項４】
前記暗号化ラウンド関数処理部は複数の要素から構成され、前記復号ラウンド関数処理部は複数の要素から構成され、前記暗号化ラウンド関数処理部の前記複数の要素の少なくとも一部と前記復号ラウンド関数処理部の前記複数の要素の少なくとも一部とは共通化されている請求項１または３記載の暗号処理装置。
【請求項５】
前記暗号化ラウンド関数処理部は、ＡＥＳアルゴリズムの暗号化ラウンド関数のうちＮ（Ｎ：ＡＥＳアルゴリズムのブロック長以下の自然数）ビット処理を行い、
前記復号ラウンド関数処理部は、ＡＥＳアルゴリズムの復号ラウンド関数のうちＮビット処理を行う請求項１から４記載の暗号処理装置。
【請求項６】
前記暗号化ラウンド関数処理部及び前記復号ラウンド関数処理部は、処理ループによる繰り返し処理を行う請求項１から５記載の暗号処理装置。
【請求項７】
秘密鍵に基づいて拡大鍵を生成する鍵スケジュール部をさらに備える請求項１から６記載の暗号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＥＳアルゴリズムを利用した暗号処理装置に関するものである。
【背景技術】
【０００２】
近年のインターネット等を利用した電子商取引市場の拡大により、通信データの盗聴、通信相手へのなりすまし、通信内容の改竄などへの対策が必要となっている。暗号化技術は、これらの問題への対策一つとしてますます重要になっており、今後、暗号化技術が様々な電子機器へ適用されることが予想される。
【０００３】
暗号化技術における重要な要素技術として共通鍵ブロック暗号がある。共通鍵ブロック暗号は、処理単位となる所定ビット長のデータブロックを、鍵となる所定ビット長のデータを使用して暗号化する。暗号化されたデータブロックは、暗号化において使用された鍵を、用いて復号される。ここで、本明細書において、処理単位となるデータブロックの所定ビット長を「ブロック長」といい、鍵となるデータを「秘密鍵」といい、秘密鍵の所定ビット長を「鍵長」という。
【０００４】
１９７７年に米国政府標準暗号として制定されたＤａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（以下「ＤＥＳ」という）は、従来広く使用されてきた共通鍵ブロック暗号である。しかしＤＥＳは、ブロック長が６４ビットしかなく、鍵長が実質５６ビットしかない。近年、計算機処理能力が向上し、実用的な時間内に、ＤＥＳによる鍵を総当り攻撃できるようになっている。したがって、ＤＥＳでは安全上問題がある。
【０００５】
以上をふまえ、米国国立標準技術院（以下「ＮＩＳＴ」という）は、ＤＥＳの後継暗号である次期米国標準暗号としてＡｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ（以下「ＡＥＳ」という）を２００１年に制定した。ＡＥＳは、そのブロック長が１２８ビットであり、その鍵長は、１２８ビット、１９２ビット、２５６ビットからいずれか一つを選択できる。ＩＰｓｅｃ、ＳＳＬをはじめ無線ＬＡＮなどの標準規格において、ＡＥＳを採用することが検討されており、ＡＥＳは、次世代共通鍵ブロック暗号のデファクトスタンダードとして幅広く使用されることが期待されている。ＡＥＳの処理は、非特許文献１において詳細に規定されている。
【０００６】
ＡＥＳを含む共通鍵ブロック暗号化処理及びその復号処理の実装形態は、２つありうる。その１つはソフトウェアによるものであり、もう１つはハードウェアによるものである。処理の高速化あるいは低消費電力化を図るために、ハードウェアによる実装が望ましい。通信において暗号を使用すると、暗号化処理及びその復号処理は、通信処理全体の中で大きな割合を占めることが知られており、今後の電子機器開発では、ハードウェアにより、共通鍵ブロック暗号化処理及びその復号処理を実装することが重要になるであろう。
【０００７】
従来のハードウェア実装で達成すべき目標は、回路の小面積化や処理の高速化であった。しかし、近年のハードウェア実装で達成すべき目標として重要となっているのは、低消費電力化、省エネルギー化である。その理由の１つは、電力消費により生ずる発熱により冷却コストやパッケージコストが上昇する点である。理由のもう１つは、バッテリー駆動の携帯機器等において、消費エネルギーがバッテリー時間に影響を与える点である。ＡＥＳを含む暗号化処理は、ＩＣカードからネットワークのバックボーンで使用される機器に至るまで、多様な用途で使われることが予想されることから、ＡＥＳアルゴリズムを利用した暗号処理装置においても、低消費電力化・省エネルギー化を図ることは必要である。この点について、例えば、非特許文献２は、ＡＥＳアルゴリズムのハードウェア実装においては回路の一部の低消費電力化を図る手法を開示する。
【０００８】
ところが、後に本発明者らの考察において、詳述するように、非特許文献２により、ＡＥＳを構成する部分回路単体の低消費電力化を図るだけでは、不十分である。より具体的には、非特許文献２によると、グリッジ（本来の処理には不要なゲートの出力変化（以下「スイッチング」という））が発生し、回路全体の消費電力を十分に削減できないという問題点があった。
【非特許文献１】ＮＩＳＴ、“Ｆｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄｓ  Ｐｕｂｌｉｃａｔｉｏｎ  １９７”、２００１、インターネット
【非特許文献２】Ｓ．Ｍｏｒｉｏｋａ、他１名、”Ａｎ  Ｏｐｔｉｍｉｚｅｄ  Ｓ−Ｂｏｘ  Ｃｉｒｃｕｉｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  Ｌｏｗ  Ｐｏｗｅｒ  ＡＥＳ  Ｄｅｓｉｇｎ”、２００２年、Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｈａｒｄｗａｒｅ  ａｎｄ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ  ２００２、第１７２頁―第１８６頁
【発明の開示】
【発明が解決しようとする課題】
【０００９】
そこで本発明は、グリッジの発生を抑制し回路全体の消費電力を効果的に削減できる暗号処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の発明に係る暗号処理装置は、拡大鍵を入力し入力データをＡＥＳアルゴリズムにしたがって暗号化する暗号化ラウンド関数処理部と、暗号化ラウンド関数処理部に関するデータを保持する第１のデータ保持部と、拡大鍵を入力し入力データを復号する復号ラウンド関数処理部と、復号ラウンド関数処理部に関するデータを保持する第２のデータ保持部と、現在の処理が暗号化／復号のいずれかに依存して、暗号化ラウンド関数処理部側の出力と復号ラウンド関数処理部側の出力のいずれかを選択する選択部と、現在の処理が暗号化であるとき第２のデータ保持部の状態を維持し、現在の処理が復号であるとき第１のデータ保持部の状態を維持する制御部とを備える。
【００１１】
この構成により、現在の処理が暗号化であるとき演算処理に寄与しない第２のデータ保持部についてのグリッジが発生せず、現在の処理が復号であるとき演算処理に寄与しない第１のデータ保持部についてのグリッジが発生しない。このようにグリッジの発生が抑制され、回路全体の消費電力を効果的に削減できる。
【００１２】
第２の発明に係る暗号処理装置では、第１のデータ保持部は暗号化ラウンド関数処理部の入力側に接続される第１のラッチを含み、第２のデータ保持部は復号ラウンド関数処理部の入力側に接続される第２のラッチを含む。
【００１３】
この構成により、現在の処理が暗号化であるとき演算処理に寄与しない第２のラッチについてのグリッジが発生せず、現在の処理が復号であるとき演算処理に寄与しない第１のラッチについてのグリッジが発生しない。このようにグリッジの発生が抑制され、回路全体の消費電力を効果的に削減できる。
【００１４】
第３の発明に係る暗号処理装置では、第１のデータ保持部は暗号化ラウンド関数処理部の出力側に接続される第１のレジスタを含み、第２のデータ保持部は復号ラウンド関数処理部の出力側に接続される第２のレジスタを含む。
【００１５】
この構成により、ラッチでなくレジスタで、第１、第２のデータ保持部を構成でき、その結果、ゲート数を削減してコストを抑制できる。
【００１６】
第４の発明に係る暗号処理装置では、暗号化ラウンド関数処理部は複数の要素から構成され、復号ラウンド関数処理部は複数の要素から構成され、暗号化ラウンド関数処理部の複数の要素の少なくとも一部と復号ラウンド関数処理部の複数の要素の少なくとも一部とは共通化されている。
【００１７】
この構成において、第１のデータ保持部の複数の要素の少なくとも一部と第２のデータ保持部の複数の要素の少なくとも一部とを共通化し、ゲート数を削減してコストを抑制できる。
【００１８】
第５の発明に係る暗号処理装置では、暗号化ラウンド関数処理部は、ＡＥＳアルゴリズムの暗号化ラウンド関数のうちＮ（Ｎ：ＡＥＳアルゴリズムのブロック長以下の自然数）ビット処理を行い、復号ラウンド関数処理部は、ＡＥＳアルゴリズムの復号ラウンド関数のうちＮビット処理を行い、暗号化ラウンド関数処理部及び復号ラウンド関数処理部は、処理ループによる繰り返し処理を行う。
【００１９】
この構成により、同じ要素を繰り返し使用することができるため、ゲート数を削減してコストを抑制できる。
【００２０】
第６の発明に係る暗号処理装置は、秘密鍵に基づいて拡大鍵を生成する鍵スケジュール部をさらに備える。
【００２１】
この構成により、外部から拡大鍵を入力しなくとも、暗号処理装置の内部で拡大鍵を生成でき、入力処理を簡易化できる。
【発明の効果】
【００２２】
本発明によれば、演算に寄与しないグリッジの発生を抑制し、回路全体の消費電力を効果的に削減できる。
【発明を実施するための最良の形態】
【００２３】
以下、図面を参照しながら、本発明の実施の形態について説明する。まず、各形態の具体的構成を説明するに先立ち、次に本発明者らによる考察を述べる。なお、以下の各形態は例示に過ぎないのであって、本発明の趣旨を逸脱しない限りにおいて、以下の各形態以外の内容であっても本発明に包含されることは言うまでもない。
【００２４】
（考察）
図１は、本発明の考察における暗号化処理装置のブロック図である。この装置は、暗号化ラウンド関数処理部１０１と、鍵スケジュール部１０２とを備える。
【００２５】
鍵スケジュール部１０２は、秘密鍵１０６を入力し、これに基づいて拡大鍵ＥＫ０〜ＥＫ１０を生成する。ここでは、拡大鍵ＥＫ０〜ＥＫ１０のそれぞれは、１２８ビットデータであるものとする。
【００２６】
暗号化ラウンド関数処理部１０１は、排他的論理和（以下「ＥＸＯＲ」という）演算器１０８と、暗号化ラウンド関数部１０４と最終暗号化ラウンド関数部１０７とを備える。なお、図１において、複数の暗号化ラウンド関数部１０４が存在するように記載しているが、後述の各形態では、処理ループによるＮ回の繰り返し処理を行うようにしているので、暗号化ラウンド関数部１０４及び最終暗号化ラウンド関数部１０７は、１つの回路ブロックで済む。なお、拡大鍵ＥＫ０はＥＸＯＲ演算器１０８で使用され、拡大鍵ＥＫ１〜ＥＫ９は暗号化ラウンド関数部１０４で使用され、拡大鍵ＥＫ１０は暗号化最終ラウンド関数部１０７で使用される。
【００２７】
暗号化ラウンド関数処理部１０１において、ＥＸＯＲ演算器１０８は、入力データブロック１０３と拡大鍵ＥＫ０とのＥＸＯＲ演算を行い、その結果ＥＲ１を暗号化ラウンド関数部１０４に出力する。
【００２８】
１回目に暗号化ラウンド関数部１０４は、結果ＥＲ１を入力し暗号化ラウンド関数による演算を行い、その結果ＥＲ２を自分自身に出力する。
【００２９】
図１は、１２８ビット鍵長におけるＡＥＳの暗号化処理を示しており、このときの繰り返し回数は「９」である。数ｍを「２」以上「９」以下の整数とすると、ｉ回目に暗号化ラウンド関数部１０４は、結果ＥＲｍを入力し暗号化ラウンド関数による演算を行い、その結果ＥＲｍ＋１を自分自身に出力する。
【００３０】
暗号化ラウンド関数部１０４の繰り返し回数は、鍵長によって変化する。具体的には、鍵長が１２８ビットである場合は９回、鍵長が１９２ビットである場合は１１回、鍵長が２５６ビットである場合は１３回となる。
【００３１】
最後に、暗号化最終ラウンド関数部１０７は結果ＥＲ１０を入力し暗号化ラウンド関数による演算を行い、その結果ＥＲ１０を出力データブロック１０５として出力する。
【００３２】
以下、ＥＸＯＲ演算器１０８の処理のように、ラウンド関数の繰り返し前に行う処理を「初期変換」といい、暗号化最終ラウンド関数部１０７の処理のようにラウンド関数の繰り返し後に行う処理を「最終変換」という。また、暗号化最終ラウンド関数部１０７を含めたラウンド関数の繰り返し回数をＮｂで示す。ちなみに鍵長が１２８ビットの場合、Ｎｂ＝１０である。
【００３３】
図２は、本発明の考察における暗号化ラウンド関数部のブロック図である。暗号化ラウンド関数部１０４は１２８ビット入出力の関数であり、ＳｕｂＢｙｔｅｓ処理部２０１と、ＳｈｉｆｔＲｏｗｓ処理部２０２と、ＭｉｘＣｏｌｕｍｎｓ処理部２０３と、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４とを直列に接続して構成される。
【００３４】
まず、ＳｕｂＢｙｔｅｓ処理部２０１は、１２８ビットデータである入力ＥＲｉ（ｉは０からＮｂまでの整数）を８ビットデータブロックに分割し、すべての８ビットデータブロックに対して非線形変換する。ＳｈｉｆｔＲｏｗｓ処理部２０２は、１２８ビットデータであるＳｕｂＢｙｔｅｓ処理部２０１の結果を８ビットデータブロックに分割し所定の方法で並べ替える。ＭｉｘＣｏｌｕｍｎｓ処理部２０３は、１２８ビットデータであるＳｈｉｆｔＲｏｗｓ処理部２０２の結果を３２ビットデータブロックに分割し、３２ビットを１処理単位とする線形変換を行う。最後に、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４は、ＭｉｘＣｏｌｕｍｎｓ処理の結果と拡大鍵ＥＫｉとのＥＸＯＲ演算を行い、その結果ＥＲｉ＋１を出力する。
【００３５】
暗号化最終ラウンド関数部１０７は、図２に示した処理のうちＭｉｘＣｏｌｕｍｎｓ処理部２０３による処理を行わない点を除き、暗号化ラウンド関数部１０４と同じ処理を行う。
【００３６】
図３は、本発明の考察における復号処理装置のブロック図である。この装置は、復号ラウンド関数処理部３０１と鍵スケジュール部１０２とを備える。鍵スケジュール部１０２は、図１のそれと同じである。
【００３７】
暗号ラウンド関数処理部３０１は、排他的論理和（以下「ＥＸＯＲ」という）演算器１０８と、復号ラウンド関数部３０４と最終復号ラウンド関数部３０７とを備える。なお、図３において、複数の復号ラウンド関数部３０４が存在するように記載しているが、後述の各形態では、処理ループによるＮ回の繰り返し処理を行うようにしているので、復号ラウンド関数部３０４及び最終復号ラウンド関数部３０７は、１つの回路ブロックで済む。なお、拡大鍵ＥＫ１０はＥＸＯＲ演算器１０８で使用され、拡大鍵ＥＫ９〜ＥＫ１は復号ラウンド関数部３０４で使用され、拡大鍵ＥＫ０は復号最終ラウンド関数部３０７で使用される。復号ラウンド関数部３０４が使用する復号ラウンド関数は、図１の暗号化ラウンド関数部１０７が使用する関数の逆関数である。
【００３８】
復号ラウンド関数処理部３０１において、ＥＸＯＲ演算器１０８は、入力データブロック１０３と拡大鍵ＥＫ１０とのＥＸＯＲ演算を行い、その結果ＤＲ１を復号ラウンド関数部３０４に出力する。
【００３９】
１回目に復号ラウンド関数部３０４は、結果ＤＲ１を入力し復号ラウンド関数による演算を行い、その結果ＤＲ２を自分自身に出力する。
【００４０】
図３は、１２８ビット鍵長におけるＡＥＳの復号処理を示しており、このときの繰り返し回数は「９」である。数ｍを「２」以上「９」以下の整数とすると、ｉ回目に復号ラウンド関数部３０４は、結果ＤＲｍを入力し復号ラウンド関数による演算を行い、その結果ＤＲｍ＋１を自分自身に出力する。
【００４１】
復号ラウンド関数部３０４の繰り返し回数は、鍵長によって変化する。具体的には、鍵長が１２８ビットである場合は９回、鍵長が１９２ビットである場合は１１回、鍵長が２５６ビットである場合は１３回となる。
【００４２】
最後に、復号最終ラウンド関数部３０７は結果ＤＲ１０を入力し復号ラウンド関数による演算を行い、その結果ＤＲ１０を出力データブロック１０５として出力する。
【００４３】
図２は、本発明の考察における暗号化ラウンド関数部のブロック図である。暗号化ラウンド関数部１０４は１２８ビット入出力の関数であり、ＳｕｂＢｙｔｅｓ処理部２０１と、ＳｈｉｆｔＲｏｗｓ処理部２０２と、ＭｉｘＣｏｌｕｍｎｓ処理部２０３と、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４とを直列に接続して構成される。
【００４４】
まず、ＳｕｂＢｙｔｅｓ処理部２０１は、１２８ビットデータである入力ＥＲｉ（ｉは０からＮｂまでの整数）を８ビットデータブロックに分割し、すべての８ビットデータブロックに対して非線形変換する。ＳｈｉｆｔＲｏｗｓ処理部２０２は、１２８ビットデータであるＳｕｂＢｙｔｅｓ処理部２０１の結果を８ビットデータブロックに分割し所定の方法で並べ替える。ＭｉｘＣｏｌｕｍｎｓ処理部２０３は、１２８ビットデータであるＳｈｉｆｔＲｏｗｓ処理部２０２の結果を３２ビットデータブロックに分割し、３２ビットを１処理単位とする線形変換を行う。最後に、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４は、ＭｉｘＣｏｌｕｍｎｓ処理の結果と拡大鍵ＥＫｉとのＥＸＯＲ演算を行い、その結果ＥＲｉ＋１を出力する。
【００４５】
暗号化最終ラウンド関数部１０７は、図２に示した処理のうちＭｉｘＣｏｌｕｍｎｓ処理部２０３による処理を行わない点を除き、暗号化ラウンド関数部１０４と同じ処理を行う。
【００４６】
図４は、本発明の考察における復号ラウンド関数部のブロック図である。復号ラウンド関数部３０４は１２８ビット入出力の関数であり、復号ラウンド関数部３０４が使用する関数は、暗号化ラウンド関数部１０４が使用する関数の逆関数である。
【００４７】
まず、ＩｎｖＳｈｉｆｔＲｏｗｓ処理部４０１は、入力ＤＲｉ（ｉは０からＮｂまでの整数）に対し、ＳｈｉｆｔＲｏｗｓ処理部２０２の逆関数である関数による処理を行う。ＩｎｖＳｕｂＢｙｔｅｓ処理部４０２は、１２８ビットデータであるＩｎｖＳｈｉｆｔＲｏｗｓ処理部４０１の結果を、８ビットデータブロックに分割し、すべての８ビットデータブロックに対してＳｕｂＢｙｔｅｓ処理部で施した非線形変換の逆変換を行う。
【００４８】
ＡｄｄＲｏｕｎｄＫｅｙ処理部２０６は、ＩｎｖＳｕｂＢｙｔｅｓ処理部４０２の結果と拡大鍵ＤＫｉとのＥＸＯＲ演算を行う。最後に、ＩｎｖＭｉｘＣｏｌｕｍｎｓ処理部４０４は、１２８ビットデータであるＡｄｄＲｏｕｎｄＫｅｙ処理部２０６の結果を、３２ビットデータブロックに分割し、ＭｉｘＣｏｌｕｍｎｓ処理部２０３でなされた３２ビットを１処理単位とする線形変換の逆変換を行い、結果ＤＲｉ＋１を出力する。
【００４９】
さて次に、図５を参照しながら、図１の暗号化処理装置と図３の復号処理装置とを、１つの暗号処理装置にまとめて実装することを考える。図５は、本発明の考察における暗号処理装置のブロック図である。
【００５０】
図５において、暗号化ラウンド関数処理部５２０は、拡大鍵ＥＫｉを入力し入力データブロック１０３をＡＥＳアルゴリズムにしたがって暗号化する。復号ラウンド関数処理部５２１は、拡大鍵ＤＫｉを入力し入力データブロック１０３を復号する。
【００５１】
暗号化ラウンド関数処理部５２０は、暗号化ラウンド関数のうちＮ  ｂｉｔ（Ｎ：ＡＥＳのブロック長である１２８以下の自然数）処理を行う。暗号化ラウンド関数処理部５２０で使用する拡大鍵ＥＫｉのうちＮ  ｂｉｔが鍵スケジュール部から供給される。
【００５２】
暗号化ラウンド関数処理部５２０のセレクタ５０１は、暗号化ラウンド関数処理部５２０が暗号化ラウンド関数部１０４の処理を実行するか最終暗号化ラウンド関数部１０７の処理を実行するかによって、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４の入力を、ＭｉｘＣｏｌｕｍｎｓ処理部２０３とＳｈｉｆｔＲｏｗｓ処理部２０２とのいずれかに切り替える。切り替え信号５１１は、図５に示す回路で実行する処理（暗号化または復号）と現在処理しているラウンド数を管理している制御部１０から出力される。
【００５３】
復号ラウンド関数処理部５２１は、復号ラウンド関数のうちＮ  ｂｉｔ処理を行う。復号ラウンド関数処理部５２１で使用される拡大鍵ＤＫｉのうちＮ  ｂｉｔが鍵スケジュール部１０２から供給される。
【００５４】
復号ラウンド関数処理部５２１のセレクタ５０２は、暗号化ラウンド関数処理部５２０が暗号化ラウンド関数部１０４の処理を実行するか最終暗号化ラウンド関数部１０７の処理を実行するかにより入力を、ＩｎｖＭｉｘＣｏｌｕｍｎｓ処理部４０３とＡｄｄＲｏｕｎｄＫｅｙ処理部２０４のとのいずれかに切り替える。切り替え信号５１２は、制御部１０が出力される。
【００５５】
ＥＸＯＲ演算器１０８は、暗号処理装置が暗号化処理／復号処理のいずれを行うにかかわらず入力データブロック１０３と拡大鍵との排他的論理和を求め、これをセレクタ５０３へ出力する。また、セレクタ５０３には、暗号化ラウンド関数処理部５２０の出力側と復号ラウンド関数処理部５２１の出力側とが接続される。
【００５６】
セレクタ５０３は、暗号処理装置が暗号化処理／復号処理のいずれを行うにかかわらず初期変換を実行している場合、ＥＸＯＲ演算器１０８からの入力を出力する。セレクタ５０３は、暗号処理装置が初期変換を実行しておらず暗号化処理を実行しているときは、暗号化ラウンド関数処理部５２０のＡｄｄＲｏｕｎｄＫｅｙ処理部２０４が出力するＮ  ｂｉｔの結果を出力する。セレクタ５０３は、暗号処理装置が初期変換を実行しておらず復号処理を実行しているときは、復号ラウンド関数処理部５２１のセレクタ５０２が出力するＮ  ｂｉｔの結果を出力する。切り替え信号５１３は、制御部１０が出力する。
【００５７】
レジスタ５０４は、クロック５１０の立ち上がりに同期しセレクタ５０３の出力を保持する。所定の回数だけラウンド関数が実行された後に、レジスタ５０４の出力が出力データブロック１０５として外部へ出力される。
【００５８】
暗号化ラウンド関数処理部５２０の入力側に接続されるセレクタ５０５は、レジスタ５０４の１２８ｂｉｔ出力から暗号化ラウンド関数を実行すべきＮ  ｂｉｔを選択する。切り替え信号５１４は、制御部１０が出力する。なおＮ＝１２８の場合は、セレクタ５０５は省略できる。
【００５９】
復号ラウンド関数処理部５２１の入力側に接続されるセレクタ５０６は、レジスタ５０４の１２８ｂｉｔ出力から復号ラウンド関数を実行すべきＮ  ｂｉｔを選択する。切り替え信号５１５は、制御部１０が出力する。なおＮ＝１２８の場合、セレクタ５０６は省略できる。
【００６０】
図５に示す構成ではレジスタ５０４の出力データは、暗号化ラウンド関数処理部５２０と復号ラウンド関数処理部５２１の両方に入力されるため、暗号化処理実行の場合は復号ラウンド関数処理部５２１において、復号処理実行の場合は暗号化ラウンド関数処理部５２０において、それぞれ処理に無関係なスイッチング、即ち、グリッジが発生する。
【００６１】
現在ＬＳＩなどで一般に使用されているＣＭＯＳ構成では、スイッチングに起因する電力消費が支配的である。そのため、図５に示す構成では、グリッジにより、無駄でかつ無視できない電力消費が生じる。
【００６２】
さらに、ＡＥＳをはじめとする共通鍵ブロック暗号を用いると、グリッジが発生しやすく、グリッジによる無駄な電力消費が生じる傾向がある。以下にその理由を記す。
【００６３】
共通鍵ブロック暗号は、入力データブロックが１ビット変化すると出力データブロックのすべてのビットが変化する確率が「１／２」であるという性質を持っている。この性質は、Ｓｔｒｉｃｔ  Ａｖａｌａｎｃｈｅ  Ｃｒｉｔｅｒｉｏｎ（以下「ＳＡＣ」という）と呼ばれており、共通鍵ブロック暗号の安全性を測る指標の一つである。
【００６４】
共通鍵ブロック暗号の部分処理における入力の変化は、すべての出力の変化に大きな影響を与える。そのような性質を持つ処理を回路に実装する場合、回路入力が変化するタイミングが不揃いであると、遅れて変化した回路入力に反応して変化する回路出力に伴うゲートのスイッチングが多くなる。このとき、その直前に変化した回路入力に反応して変化する出力に伴うゲートのスイッチングが本来の計算に寄与しないグリッジとなる場合が多くなる。
【００６５】
図５に示す構成では、レジスタ５０４の出力は、クロック５１０に同期して一斉に変化するものの、セレクタ５０５またはセレクタ５０６における切り替え信号５１４の遅延などにより、ラウンド関数処理部５２０への入力変化が不揃いになる。
【００６６】
以上のように、非特許文献２のようにＡＥＳを構成する部分回路単体の低消費電力化を図るだけでは、回路全体の電力消費を十分に削減することはできない。以上で、考察を終える。
【００６７】
次に、以上の考察をふまえ、本発明の各形態の具体的構成を説明する。なお、以上の考察において述べた構成要素と同様の構成要素については、同一符号を付すことにより説明を省略する。
【００６８】
（実施の形態１）
図６は、本発明の実施の形態１における暗号処理装置のブロック図である。図１に示すように、本形態の暗号処理装置は、次の要素を備える。
【００６９】
暗号化ラウンド関数処理部５２０は、拡大鍵を入力し入力データをＡＥＳアルゴリズムにしたがって暗号化する。より具体的には、暗号化ラウンド関数処理部５２０は、ＡＥＳアルゴリズムの暗号化ラウンド関数のうちＮ（Ｎ：ＡＥＳアルゴリズムのブロック長以下の自然数）ビット処理を繰り返し行う。
【００７０】
図１に示したように、拡大鍵は、秘密鍵に基づいて拡大鍵を生成する鍵スケジュール部１０２から供給される。
【００７１】
ラッチ６０１は、暗号化ラウンド関数処理部に関するデータを保持する第１のデータ保持部に相当し、暗号化ラウンド関数処理部５２０の入力側とセレクタ５０５との間に接続される。
【００７２】
復号ラウンド関数処理部５２１は、鍵スケジュール部１０２から供給される拡大鍵を入力し入力データを復号する。より具体的には、復号ラウンド関数処理部５２１は、ＡＥＳアルゴリズムの復号ラウンド関数のうちＮビット処理を繰り返し行う。
【００７３】
ラッチ６０２は、復号ラウンド関数処理部に関するデータを保持する第２のデータ保持部に相当し、復号ラウンド関数処理部５２１の入力側とセレクタ５０６との間に接続される。
【００７４】
セレクタ５０３は、現在の処理が暗号化／復号のいずれかに依存して、暗号化ラウンド関数処理部側の出力と復号ラウンド関数処理部側の出力のいずれかを選択する選択部に相当する。なお、初期変換時には、セレクタ５０３は、ＥＸＯＲ演算器１０８の出力を選択する。
【００７５】
制御部１０は、現在の処理が暗号化であるときラッチ６０２の状態を維持し、現在の処理が復号であるときラッチ６０１の状態を維持する。
【００７６】
図６において、ラッチ６０１は、制御部１０から出力される暗号化／復号切替信号６０３が暗号化を示しているとき、ラッチ６０１の入力データをそのまま出力する。また、その信号６０３が復号を示しているとき、復号を示す直前の出力データをそのまま保持する。この保持により、グリッジの発生を抑制できる。
【００７７】
ラッチ６０２は、制御部１０から出力される暗号化／復号切替信号６０３が復号を示しているとき、ラッチ６０２の入力データをそのまま出力する。また、ラッチ６０２は、その信号６０３が暗号化を示しているとき暗号化を示す直前の出力データをそのまま保持する。この保持により、グリッジの発生を抑制できる。
【００７８】
本形態によれば、暗号化処理の場合はラッチ６０２の出力が変化しないので復号ラウンド関数処理部５２１でグリッジは発生しない。また復号処理の場合はラッチ６０１の出力が変化しないので暗号化ラウンド関数処理部５２０でグリッジは発生しない。このことから、処理実行に不要なスイッチングを削減することができ、回路全体の消費電力、消費エネルギーを削減できる。
【００７９】
（実施の形態２）
図６は、本発明の実施の形態２における暗号処理装置のブロック図である。さて、実施の形態１では、ＥＸＯＲ演算器１０８のような単純な演算器を除いて、暗号化ラウンド関数処理部５２０と復号ラウンド関数処理部５２１で使用する演算器を個別に実装している。
【００８０】
しかしながら、復号ラウンド関数部５２１のＡｄｄＲｏｕｎｄＫｅｙ処理部２０４は、セレクタ５０３の後段に配置しても差し支えない。そこで本形態では、図７に示すように、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４は、セレクタ５０３の後段に配置し、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４を、暗号化ラウンド関数処理部５２０と復号ラウンド関数処理部５２１とにおいて、共通化している。
【００８１】
また、ＡｄｄＲｏｕｎｄＫｅｙ処理部２０４の処理内容は、ＥＸＯＲ演算であるので、ＡｄｄＲｏｕｎｄＫｅｙ２０４とＥＸＯＲ演算器演算１０８も共有することもできる。
【００８２】
本形態によれば、実施の形態１と同等の機能を有し、かつ、暗号化ラウンド関数処理部、復号ラウンド関数処理部、初期変換のＥＸＯＲ演算器を共有することにより、回路のゲート数を削減することができ、コスト削減を図ることができる。
【００８３】
（実施の形態３）
実施の形態２では、ラッチ６０１、ラッチ６０２を使用してレジスタ５０４出力データ伝達を制御している。しかし、ＳＴＡ（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）の適用などの都合により、ＬＳＩ実装上ラッチを使用することができないことが多い。
【００８４】
そこで本形態では、ラッチに変えて、レジスタを用いる構成を採用している。図８は、本発明の実施の形態３における暗号処理装置のブロック図であり、図８において、レジスタ８０１は、暗号化ラウンド関数処理部５２０の出力側に接続される第１のデータ保持部に相当し、レジスタ８０２は、復号ラウンド関数処理部５２１の出力側に接続される第２のデータ保持部に相当する。
【００８５】
より具体的には、レジスタ８０１は、暗号化／復号切替信号６０３が暗号化を示し、かつクロック５０５の立ち上がりに同期して入力データを保持する。レジスタ８０２は、暗号化／復号切替信号６０３が復号を示し、かつクロック５０５の立ち上がりに同期して入力データを保持する。
【００８６】
また、セレクタ８０３は、暗号化／復号切替信号６０３を参照し、暗号化処理の際はレジスタ８０１を、復号処理の際はレジスタ８０２を、それぞれ出力データブロック１０５として出力する。
【００８７】
本形態によれば、実施の形態２と同等の機能を有し、かつラッチを使用しないため、ＬＳＩ実装制約を受けることなく適用することができる。また、ラッチをレジスタに置き換えることができるため、ゲート数を削減することができ、コスト削減を図ることができる。
【産業上の利用可能性】
【００８８】
本発明に係る暗号処理装置は、例えば、データの暗号化あるいは暗号化されたデータの復号の分野などにおいて好適に利用できる。
【図面の簡単な説明】
【００８９】
【図１】本発明の考察における暗号化処理装置のブロック図
【図２】本発明の考察における暗号化ラウンド関数部のブロック図
【図３】本発明の考察における復号処理装置のブロック図
【図４】本発明の考察における復号ラウンド関数部のブロック図
【図５】本発明の考察における暗号処理装置のブロック図
【図６】本発明の実施の形態１における暗号処理装置のブロック図
【図７】本発明の実施の形態２における暗号処理装置のブロック図
【図８】本発明の実施の形態３における暗号処理装置のブロック図
【符号の説明】
【００９０】
１０  制御部
１０１  暗号化ラウンド関数処理部
１０２  鍵スケジュール部
１０３  入力データブロック
１０４  暗号化ラウンド関数部
１０５  出力データブロック
１０６  秘密鍵
１０８  ＥＸＯＲ演算器
２０１  ＳｕｂＢｙｔｅｓ処理部
２０２  ＳｈｉｆｔＲｏｗｓ処理部
２０３  ＭｉｘＣｏｌｕｍｎｓ処理部
２０４  ＡｄｄＲｏｕｎｄＫｅｙ処理部
３０１  復号ラウンド関数部
３０４  復号ラウンド関数部
３０７  最終復号ラウンド関数部
４０１  ＩｎｖＳｈｉｆｔＲｏｗｓ処理部
４０２  ＩｎｖＳｕｂＢｙｔｅｓ処理部
４０４  ＩｎｖＭｉｘＣｏｌｕｍｎｓ処理部
５０１、５０２、５０３、５０５、５０６、８０３  セレクタ
５０４、８０１、８０３  レジスタ
５１０  クロック
５１１、５１２、５１３、５１４、５１５  切り替え信号
５２０  暗号化ラウンド関数処理部
５２１  復号ラウンド関数処理部
６０１、６０２  ラッチ
６０３  暗号化／復号切替信号
【図１】
2006072117.tif 000003
【図２】
2006072117.tif 000004
【図３】
2006072117.tif 000005
【図４】
2006072117.tif 000006
【図５】
2006072117.tif 000007
【図６】
2006072117.tif 000008
【図７】
2006072117.tif 000009
【図８】
2006072117.tif 000010