(57)【特許請求の範囲】
【請求項１】
語長がＮビット（Ｎ≧１）であり、ブロック長がＫ語（Ｋ≧１）である共通鍵暗号処理を行う暗号処理回路であって、
ラウンド毎の置換処理と拡散処理を並行して実行するローテータを備え、
前記ローテータは、
シフトユニットと、
前記シフトユニットが出力した語に対して前記置換処理を行う置換ユニットとを有し、
前記シフトユニットは、
Ｋ個のＮビットの語レジスタが直列に接続されてなるシフトレジスタと、
外部入力と、前記シフトレジスタの出力と、前記置換ユニットの出力のうちのいずれか１つを選択して前記シフトレジスタに入力する第１のセレクタとを有することを特徴とする暗号処理回路。
【請求項２】
前記シフトユニットは、Ｍ個（Ｋ≧Ｍ≧２）あり、
各前記シフトユニットにおける前記シフトレジスタは、Ｐ個（Ｐ＝Ｋ／Ｍ）のＮビットの語レジスタが直列に接続されてなり、
前記置換ユニットは、前記Ｍ個のシフトユニットが出力したＭ個の語から１つを選択して前記置換処理を施すことを特徴とする請求項１に記載の暗号処理回路。
【請求項３】
前記置換ユニットは、
前記Ｍ個のシフトユニットが出力したＭ個の語から１つを選択する第２のセレクタと、
前記第２のセレクタにより選択された語に対して前記置換処理を施す置換回路とを有することを特徴とする請求項２に記載の暗号処理回路。
【請求項４】
前記置換ユニットは、
前記Ｍ個のシフトユニットに夫々接続され、該シフトユニットが出力した語に対して前記置換処理を施すＭ個の置換回路を有し、
前記Ｍ個のシフトユニットにおける前記第１のセレクタは、
外部入力と、該シフトユニットにおける前記シフトレジスタの出力と、該シフトユニットに対応する前記置換回路の出力のうちのいずれか１つを選択して前記シフトレジスタに入力することを特徴とする請求項２に記載の暗号処理回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号処理技術、より具体的には、共通鍵暗号化／復号化の技術に関する。
【背景技術】
【０００２】
近年、モバイル機器やＩＣカードなどにおいて、偽造や情報漏洩などを防ぐための暗号処理が重要になってきている。暗号処理は、暗号化と復号化があり、本明細書の中では、特別な説明が無い限り、「暗号化処理」についての記述は、暗号化と復号化のいずれにも適用するものである。【０００３】
上述した機器では、電力供給の問題などから内部回路の動作クロック周波数が低く、低コスト化のため、回路の規模も限定されることが多い。従って、暗号処理（暗号化／復号化）を高速に実行することは容易ではない。【０００４】
しかしながら、ユーザからは十分な強度の暗号処理が快適な速度で実行されることを求められており、相反する要求を満たさなければならない。そのため、そのような組込機器においては、暗号処理を専用回路によって実装することが多い。【０００５】
従来からＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）に代表される多くの共通鍵暗号処理技術が知られており、各種機器において広く使われている。ＡＥＳについては、例えば特許文献１に開示されている。【０００６】
標準的な共通鍵暗号化では、６４ビット〜２５６ビットのブロック・データ（平文）と鍵を入力し、ブロック単位で暗号化を行う。近年において、共通鍵暗号化の基本処理は似通っている。具体的には、暗号化は、１バイトなど語単位の置換を行う置換処理と、１２８ビットなど１ブロック中の各ビットの順番を入れ替える拡散処理の組を１ラウンドとし、１０〜数十ラウンド繰り返すアルゴリズムである。【０００７】
置換処理の単位と拡散処理の単位は同じである必要はなく、異なっている場合も多い。前者はＳ−Ｂｏｘあるいは換字、後者は拡散層とも呼ばれる。【０００８】
なお、上記説明に対して「平文」と「暗号化」を「暗号文」と「復号化」に夫々置き換えれば、共通鍵復号化の説明になる。【０００９】
ＡＥＳなど標準的な共通鍵暗号処理を回路実装すると、数万ゲートの規模になる場合が多い。【００１０】
しかし、 使える回路リソースが非常に限られているＩＣカードやＲＦＩＤタグなどでは、回路規模が大き過ぎて利用できないことも多い。【００１１】
回路規模を小さくしたければ、暗号ではなく、ＬＦＳＲなど線形演算を用いたスクランブルなどの簡易手法も存在するが、それではセキュリティとしての安全性を十分確保できない。【００１２】
そこで、例えば、非特許文献１−３に開示されたように、暗号としての強度を落とすことなく、１０００ゲート〜２０００ゲート程度の規模で回路実装が可能な軽量暗号処理の技術が提案されている。【００１３】
これらの技術では、暗号処理回路を小規模化するために、シリアライズと呼ばれる、ブロック全体を一度に処理せず、少データ単位に区切って少しずつ処理を進める回路設計手法が用いられる。たとえば非特許文献１には、ＰＲＥＳＥＮＴと呼ばれる共通鍵暗号アルゴリズムをシリアライズ実装することで、約１２００ゲートの回路規模を達成している。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００３−１５５２２号公報
【非特許文献】
【００１５】
【非特許文献１】Ｃａｒｓｔｅｎ  Ｒｏｌｆｅｓ,  Ａｘｅｌ  Ｐｏｓｃｈｍａｎｎ,Ｇｒｅｇｏｒ  Ｌｅａｎｄｅｒ,  Ｃｈｒｉｓｔｏｆ  Ｐａａｒ:  Ｕｌｔｒａ-Ｌｉｇｈｔｗｅｉｇｈｔ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｆｏｒ  Ｓｍａｒｔ  Ｄｅｖｉｃｅｓ-Ｓｅｃｕｒｉｔｙ  ｆｏｒ  １０００  Ｇａｔｅ  Ｅｑｕｉｖａｌｅｎｔｓ.  ＣＡＲＤＩＳ  ２００８:  ８９-１０３
【非特許文献２】Ｔｏｍｏｙａｓｕ  Ｓｕｚａｋｉ,  Ｋａｚｕｈｉｋｏ  Ｍｉｎｅｍａｔｓｕ:  Ｉｍｐｒｏｖｉｎｇ  ｔｈｅ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｆｅｉｓｔｅｌ.  ＦＳＥ  ２０１０:  １９-３９
【非特許文献３】Ｔｏｍｏｙａｓｕ  Ｓｕｚａｋｉ,  Ｋａｚｕｈｉｋｏ  Ｍｉｎｅｍａｔｓｕ,  Ｓｕｍｉｏ  Ｍｏｒｉｏｋａ  ａｎｄ  Ｅｉｔａ  Ｋｏｂａｙａｓｈｉ:"ＴＷＩＮＥ:  Ａ Ｌｉｇｈｔｗｅｉｇｈｔ,  Ｖｅｒｓａｔｉｌｅ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ,"  ＥＣＲＹＰＴ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｌｉｇｈｔｗｅｉｇｈｔ  Ｃｒｙｐｔｏｇｒａｐｈｙ  ２０１１.
【発明の概要】
【発明が解決しようとする課題】
【００１６】
軽量暗号処理であっても、置換処理と拡散処理の組を１ラウンドとし、１０〜数十ラウンド繰り返す点においては従来の共通鍵暗号と同じである。【００１７】
そのため、置換処理と拡散処理の単位が異なる場合には、ブロック全体に対する置換処理が終わってからでなければ、拡散処理に移ることができない。その結果、暗号処理中のデータを保持するデータ・レジスタの全ビットや、置換回路の入力に対して、ロード先を切り替えるためのセレクタを設置する必要が生じる。セレクタは組合せ回路であり、その数が多いほど回路規模も大きくなる。【００１８】
また、例えば非特許文献２−３には、置換処理と拡散処理が共に語単位で行うアルゴリズムとしてＧｅｎｅｒａｌｉｚｅｄ  Ｆｅｉｓｔｅｌ方式が開示されている。このようなアルゴリズムの場合、例えば１語に対して置換処理を行った後に該置き換えられた語を、物理レジスタにおける、該語の拡散処理後のビット位置に対応する位置に格納するように、置換処理と拡散処理を並行して実行することが考えられる。【００１９】
しかし、これでは、語のビット位置と物理レジスタの対応関係を固定せざるを得ない。そのため、置換回路への入力や、物理レジスタへの出力などを切り替えるセレクタが欠かせず、回路規模の縮小に限度がある。
【課題を解決するための手段】
【００２０】
本発明の１つの態様は、語長がＮビット（Ｎ≧１）であり、ブロック長がＫ語（Ｋ≧１）である共通鍵暗号処理を行う暗号処理回路であり、ラウンド毎の置換処理と拡散処理を並行して実行するローテータを備える。【００２１】
前記ローテータは、シフトユニットと、前記シフトユニットが出力した語に対して前記置換処理を行う置換ユニットとを有する。【００２２】
前記シフトユニットは、シフトレジスタと第１のセレクタとを有する。
前記シフトレジスタは、Ｋ個のＮビットの語レジスタが直列に接続されてなる。【００２３】
前記第１のセレクタは、外部入力と、前記シフトレジスタの出力と、前記置換ユニットの出力のうちのいずれか１つを選択して前記シフトレジスタに入力する。【００２４】
本発明の別の態様も、語長がＮビット（Ｎ≧１）であり、ブロック長がＫ語（Ｋ≧１）である共通鍵暗号処理を行う暗号処理回路であり、ラウンド毎の置換処理と拡散処理を並行して実行するローテータを備える。【００２５】
前記ローテータにおいて、前記シフトユニットがＭ個（Ｋ≧Ｍ≧２）設けられている。各前記シフトユニットにおける前記シフトレジスタは、Ｐ個（Ｐ＝Ｋ／Ｍ）のＮビットの語レジスタが直列に接続されてなる。【００２６】
前記置換ユニットは、前記Ｍ個のシフトユニットが出力したＭ個の語から１つを選択して前記置換処理を施す。【００２７】
なお、上記各態様の回路を装置やシステム、方法などに置き換えて表現したものも、本発明の態様としては有効である。
【発明の効果】
【００２８】
本発明にかかる技術によれば、共通鍵暗号の強度を保ちつつ、暗号処理を行う回路の規模をより縮小することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の第１の実施の形態にかかる暗号処理回路を示す図である。
【図２】図１に示す暗号処理回路の処理を具体的に説明するための暗号化アルゴリズの例を示す図である。
【図３】図２に示すアルゴリズにおける拡散処理を説明するための図である。
【図４】図２に示す暗号化アルゴリズムで暗号化する場合に図１に示す暗号処理回路のシフトレジスタの遷移態様を示す図である。
【図５】本発明の第２の実施の形態にかかる暗号処理回路を示す図である。
【図６】図２に示す暗号化アルゴリズムで暗号化する場合に図５に示す暗号処理回路のシフトレジスタの遷移態様を示す図である。
【図７】本発明の第３の実施の形態にかかる暗号処理回路を示す図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００３１】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態にかかる暗号処理回路１００を示す。暗号処理回路１００は、語長がＮビット（Ｎ≧１）であり、ブロック長がＫ語（Ｋ≧１）である共通鍵暗号処理を行うものであり、シフトユニット１１０、置換回路１５０、ラウンド鍵生成回路１６０を備える。シフトユニット１１０と置換回路１５０は、ローテータを構成し、ラウンド毎の置換処理と拡散処理を並行して実行する。
【００３２】
暗号処理回路１００は、暗号化と復号化のいずれも行うことができる。暗号化時には平文が入力され、暗号文を出力し、復号化時には暗号文が入力され、平文を出力する。図１において、括弧外の「平文」と「暗号文」は、暗号化時の入出力内容を示し、括弧内の「平文」と「暗号文」は、復号化時の入出力内容を示す。
【００３３】
入出力する内容が異なる点を除き、暗号処理回路１００の暗号化時と復号化時の動作が同様であるため、以下、暗号処理回路１００を説明する際に、暗号化の場合のみを説明する。これに関して、他の各実施の形態の暗号処理回路についても同様である。
【００３４】
シフトユニット１１０は、Ｋ個のＮビットの語レジスタ１１４が直列に接続されてなるシフトレジスタと、第１のレジスタ１１２を有する。夫々の語レジスタ１１４は、Ｄフリップフロップであり、組み合わせ回路を介さないで直接接続されている。
【００３５】
シフトユニット１１０には、外部から平文が１語（Ｎビット）ずつ入力される。
第１のレジスタ１１２は、外部から入力される平文と、シフトレジスタの出力端の語レジスタ１１４の出力（Ｎビット）と、置換回路１５０の出力のうちのいずれか１つを選択して、シフトレジスタの入力端の語レジスタ１１４に出力する。
【００３６】
ラウンド鍵生成回路１６０は、ラウンド鍵ＥＫを生成して置換回路１５０に供する。
置換回路１５０は、ラウンド鍵生成回路１６０から供されるラウンド鍵ＥＫを用いて、シフトユニット１１０の出力端の語レジスタ１１４が出力した語（Ｎビット）に対して置換処理を行って出力する。
【００３７】
暗号化に際して、最初に、外部入力として、平文（（Ｋ×Ｎ）ビット）が１語（Ｎビット）ずつＫ回に分けてシフトユニット１１０に入力される。第１のレジスタ１１２は、Ｋ番目の語まで、外部入力を選択することにより、Ｋ語の平文をシフトレジスタに入力する。
【００３８】
平文が入力され、夫々の語レジスタ１１４に１語格納されると、暗号化処理が開始される。暗号化処理は、通常の暗号処理回路と同様にラウンド処理を繰り返す処理である。
【００３９】
暗号のタイプによって、１ラウンドの処理には（Ｋ−１）または（Ｋ×２−２）クロックを要する。
【００４０】
ラウンド処理中に、シフトユニット１１０のシフトレジスタにおける各語レジスタ１１４に格納された各語がローテートし、シフトレジスタの出力端の語レジスタ１１４に順次到達する。以下、シフトレジスタの出力端の語レジスタ１１４に格納された語を「先頭語」ともいう。
【００４１】
この先頭語は、第１のレジスタ１１２を通過してシフトレジスタの入力端の語レジスタ１１４にそのまま戻るか、置換回路１５０により置換処理が施されて置換結果となり第１のレジスタ１１２を通過してシフトレジスタの入力端の語レジスタ１１４に戻る。どちらの経路をとるかは、暗号のタイプに依存する。
【００４２】
シフトレジスタの出力端の語レジスタ１１４からの１番目の語の出力から、Ｋ番目の語（またはその置換結果）がシフトレジスタの入力端の語レジスタ１１４に戻るまでは、１ラウンド処理に該当するため、置換処理と拡散処理が並列に行われることになる。
【００４３】
アルゴリズムの具体例を参照して、暗号処理回路１００をより詳細に説明する。
図２は、非特許文献２−３に開示されている共通鍵暗号の処理を示す図である。
【００４４】
図示のように、該アルゴリズムでは、１語のビット数Ｎが４であり、１ブロックの語数Ｋが１６語である。また、暗号のタイプは、Ｆｅｉｓｔｅｌ構造であり、ラウンド数は３６である。１ラウンドは置換演算（置換処理に該当する）と拡散演算（拡散処理に該当する）で構成される。
【００４５】
図３は、図２に示すアルゴリズムの共通鍵暗号の拡散演算部を図式化したものである。図示のように、該アルゴリズムでは、拡散処理により、１ブロックに含まれる語Ｘ０〜語Ｘ１５は、語Ｙ０〜語Ｙ１５のように語の配列位置が変更される。なお、０、１、２、・・・など、［Ｘ］と「Ｙ」の後ろの数字は、該語の配列順を示す。すなわち、拡散処理の単位は、置換処理の単位と同様に、１語である。
【００４６】
また、図３から分かるように、拡散処理を繰り返した場合に、実線により接続された８語は８回の拡散処理で元の位置に戻り、点線により接続された８語についても同様である。すなわち、循環経路が２つある。
【００４７】
図４は、図２と図３に示すアルゴリズムの暗号化を暗号処理回路１００で実行する際に、１ラウンド（「２×Ｋ−２」＝３０クロック）において、Ｋ個（ここでは１６個）の語レジスタ１１４により構成されたシフトレジスタ内の各語の遷移態様を示す。
【００４８】
シフトレジスタ内の語の初期配置は、図３における矢印を辿ってできる循環経路と同様にする。また、前述したように、循環経路が２つあるので、それぞれの要素を交互に配置する。例えば、一方の循環経路（実線）については、Ｘ０がＹ５になるので「Ｘ０の次にＸ５」、Ｘ５がＹ１２になるので「Ｘ５の次にＸ１２」、Ｘ１２がＹ１５になるので「Ｘ１２の次にＸ１５」、・・・、他方の循環回路（点線）については、Ｘ３がＹ４になるので「Ｘ３の次にＸ４」、Ｘ４がＹ７になるので「Ｘ４の次にＸ７」、Ｘ７がＹ８になるので「Ｘ７の次にＸ８」、・・・、ようになり、全体については、Ｘ０、Ｘ３、Ｘ５、Ｘ４、Ｘ１２、Ｘ７、Ｘ１５、Ｘ８、・・・のようになるように配置される。なお、この初期配置は、平文をシフトレジスタへ入力する際の入力順をこの配置順と同様にすることによって、実現される。
【００４９】
なお、図４において、点線枠により囲まれた部分は、シフトユニット１１０から出力された語に対して置換処理が行われることを意味し、その他の部分は、シフトユニット１１０から出力された語に対して置換処理が行われず、その語がそのままシフトユニット１１０の入力端の語レジスタ１１４に戻されることを意味する。
【００５０】
図示のように、クロック１において、先頭語の「Ｘ０」がシフトレジスタの出力端の語レジスタ１１４から出力される。
【００５１】
「Ｘ０」は、置換回路１５０により置換処理がなされた後にシフトレジスタの入力端の語レジスタ１１４に戻される。
【００５２】
クロック２において、先頭語の「Ｘ３」がシフトレジスタの出力端の語レジスタ１１４から出力され、置換処理が行われる。
【００５３】
このようなローテーションがクロック１７まで繰りされ、全語が置換される。
【００５４】
続いて、先端語を置換せずにシフトレジスタの入力端の語レジスタ１１４に戻すローテーションがクロック３１まで繰り返される。その結果、置換された語が拡散された順に並び、１ラウンド分の処理が終了する。
【００５５】
このように、本実施の形態の暗号処理回路１００では、レジスタ中の語の位置が固定でなく、ラウンド毎に変化する。
【００５６】
従って、語のビット位置を特定の物理レジスタに固定する必要がなくなり、拡散処理と置換処理をシリアライズして並行して実行することを実現している。
【００５７】
その結果、語ごとにセレクタを設けることを回避し、セレクタの数を削減し、回路規模を縮小できる。図１に示すように、暗号処理回路１００では、セレクタとしては、シフトレジスタへの入力を選択する第１のレジスタ１１２の１つのみが必要であり、他に組合回路が無い。
【００５８】
そのため、 非特許文献１に開示された共通鍵暗号処理の実装が１０００〜１２００ゲートであるのに対し、暗号処理回路１００は、同じブロック長、同じ暗号強度である非特許文献２−３の共通鍵暗号を７００〜８００ゲートで実装できる。
【００５９】
＜第２の実施の形態＞
図５は、本発明の第２の実施の形態にかかる暗号処理回路２００を示す。暗号処理回路２００も、語長がＮビット（Ｎ≧１）であり、ブロック長がＫ語（Ｋ≧１）である共通鍵暗号処理を行うものである。
【００６０】
図示のように、暗号処理回路２００は、Ｍ個（Ｋ≧Ｍ≧２）のシフトユニット（図示の例では、シフトユニット２１０とシフトユニット２２０の２個）と、置換ユニット２５０と、ラウンド鍵生成回路２６０を備える。シフトユニット２１０と、シフトユニット２２０と、置換ユニット２５０は、ローテータを構成し、ラウンド毎の置換処理と拡散処理を並行して実行する。
【００６１】
シフトユニット２１０とシフトユニット２２０は、構成が同様であり、夫々、Ｐ個（Ｐ＝Ｋ／Ｍ）（ここではＫ／２）のＮビットの語レジスタ２３４が直列に接続されてなるシフトレジスタと、第１のセレクタ２３２を有する。
【００６２】
なお、シフトユニット２１０とシフトユニット２２０は、内部に含まれる語レジスタの個数を除き、暗号処理回路１００のシフトユニット１１０と同様の構成を有する。
【００６３】
ラウンド鍵生成回路２６０は、ラウンド鍵ＥＫを生成して置換ユニット２５０、より具体的には置換ユニット２５０に含まれる後述の置換回路２５４に供する。
【００６４】
置換ユニット２５０は、第２のセレクタ２５２と、置換回路２５４を有する。
第２のセレクタ２５２は、シフトユニット２１０が出力した語と、シフトユニット２２０が出力した語のうちのいずれか１つを選択して置換回路２５４に出力する。
【００６５】
置換回路２５４は、ラウンド鍵生成回路２６０から供されるラウンド鍵ＥＫを用いて、第２のセレクタ２５２からの語に対して置換処理を行って出力する。
【００６６】
暗号化に際して、最初に、外部入力として、平文（（Ｋ×Ｎ）ビット）が１語（Ｎビット）ずつＫ回に分けて入力される。
【００６７】
シフトユニット２１０の第１のセレクタ２３２は、Ｋ／Ｍ（ここではＫ／２）番目の語まで、外部入力を選択して同シフトユニット２１０内のシフトレジスタの入力端の語レジスタ２３４に出力する。
【００６８】
シフトユニット２２０の第１のセレクタ２３２は、「Ｋ／２＋１」番目の語からＫ番目の語まで、外部入力を選択して外部入力を選択して同シフトユニット２２０内のシフトレジスタの入力端の語レジスタ２３４に出力する。
【００６９】
平文が入力され、シフトユニット２１０とシフトユニット２２０の各語レジスタ２３４に１語ずつ格納されると、暗号化処理が開始される。暗号化処理は、通常の暗号処理回路と同様にラウンド処理を繰り返す処理である。
【００７０】
暗号化の説明にあたり、分かりやすいように、ここにおいても、図２と図３に示すアルゴリズムを例にする。
【００７１】
前述したように、拡散処理を繰り返した場合に、実線により接続された８語は８回の拡散処理で元の位置に戻り、点線により接続された８語についても同様である。すなわち、循環経路が２つある。そのため、２つのシフトユニットを有する暗号処理回路２００により、拡散処理と置換処理を並行して実行することができる。
【００７２】
図６は、上記アルゴリズムの暗号化を暗号処理回路２００で実行する際に、１ラウンドにおいて、シフトユニット２１０とシフトユニット２２０内の各語レジスタ２３４における語の遷移態様を示す。
【００７３】
それぞれのシフトレジスタ内の語の初期配置を、図３における矢印を辿ってできる循環経路と同様にする。図示のように、シフトユニット２１０の語レジスタ２３４には、語Ｘ０、Ｘ５、Ｘ１２、Ｘ１５、Ｘ１４、Ｘ１１、Ｘ２、Ｘ１が順次配置され、シフトユニット２２０の各語レジスタ２３４には、語Ｘ３、Ｘ４、Ｘ７、Ｘ８、Ｘ１３、Ｘ１０、Ｘ９、Ｘ６が順次配置される。
【００７４】
なお、図６において、夫々のシフトユニットに対して点線枠により囲まれた部分は、該シフトユニットから出力された語に対して置換処理が行われることを意味し、その他の部分は、該シフトユニットから出力された語に対して置換処理が行われず、その語がそのまま該シフトユニットの入力端の語レジスタ２３４に戻されることを意味する。
【００７５】
クロック１において、シフトユニット２１０のシフトレジスタ内の先頭語の「Ｘ０」が出力端の語レジスタ２３４から出力される。また、シフトユニット２２０のシフトレジスタ内の先頭語の「Ｘ３」が出力端の語レジスタ２３４から出力される。
【００７６】
第２のセレクタ２５２は、クロック１〜クロック８までシフトユニット２１０の出力を選択し、クロック９〜クロック１５までシフトユニット２２０の出力を選択するようになっている。そのため、クロック１において、シフトユニット２１０から出力された語Ｘ０は、置換回路２５４に入力される。
【００７７】
「Ｘ０」は、置換回路２５４により置換処理がなされた後にシフトユニット２１０におけるシフトレジスタの入力端の語レジスタ２３４に戻される。
【００７８】
同時に、シフトユニット２２０においては、シフトレジスタのシフトと共に、語Ｘ３が入力端の語レジスタ２３４に戻される。
【００７９】
このようなローテーションは、１ラウンド中の前半（クロック１〜クロック８）で繰り返される。クロック１〜クロック８の期間内に、シフトユニット２１０内の語の置換が行われる。
【００８０】
後半（クロック９〜クロック１５）の期間内において、シフトユニット２２０内の語の置換が行われる。
【００８１】
なお、暗号のタイプがＦｅｉｓｔｅｌ構造であり、添字が偶数である語Ｘ６を置換する必要がない。従って、１ラウンドの最終クロック（クロック１５）において、次のラウンドをオーバラップして開始し、シフトユニット２１０内の語の置換処理を行うようになる。そのため、１ラウンドは、（Ｋ−１）クロックを消費する。
【００８２】
暗号処理回路２００も、レジスタ中の語の位置が固定でなく、ラウンド毎に変化する。
そのため、暗号処理回路１００と同様に、暗号の強度を保ちつつ、回路の規模を縮小することができる。
【００８３】
＜第３の実施の形態＞
図７は、本発明の第３の実施の形態にかかる暗号処理回路３００を示す。暗号処理回路３００は、置換ユニット３５０が暗号処理回路２００における置換ユニット２５０と異なる点を除き、暗号処理回路２００と同様である。ここで、置換ユニット３５０についてのみ説明する。
【００８４】
置換ユニット３５０は、シフトユニット２１０とシフトユニット２２０に夫々接続された置換回路３１０と置換回路３２０を有する。
【００８５】
置換回路３１０は、シフトユニット２１０内のシフトレジスタの出力端の語レジスタ２３４が出力した語に対して置換処理を行って置換結果をシフトユニット２１０内の第１のセレクタ２３２に出力し、置換回路３２０は、シフトユニット２２０内のシフトレジスタの出力端の語レジスタ２３４が出力した語に対して置換処理を行って置換結果をシフトユニット２２０内の第１のセレクタ２３２に出力する。
【００８６】
暗号処理回路３００のこのような構成により、シフトユニット２１０とシフトユニット２２０毎に独立に拡散処理と置換処理を行うことができるため、１ラウンドの処理を（Ｋ／Ｍ−１）（ここではＫ／２−１）クロックで行うことが可能となる。勿論、暗号処理回路３００は、暗号処理回路２００が得られる各効果も得ることができる。
【００８７】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００８８】
この出願は、２０１２年２月２７日に出願された日本出願特願２０１２−４０３４２を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００８９】
１００  暗号処理回路
１１０  シフトユニット
１１２  第１のレジスタ
１１４  語レジスタ
１５０  置換回路
１６０  ラウンド鍵生成回路
２００  暗号処理回路
２１０  シフトユニット
２２０  シフトユニット
２３２  第１のセレクタ
２３４  語レジスタ
２５０  置換ユニット
２５２  第２のセレクタ
２５４  置換回路
２６０  ラウンド鍵生成回路
３００  暗号処理回路
３１０  置換回路
３２０  置換回路
３５０  置換ユニット
ＥＫ  ラウンド鍵
【図１】
0005971324.tif 000002
【図２】
0005971324.tif 000003
【図３】
0005971324.tif 000004
【図４】
0005971324.tif 000005
【図５】
0005971324.tif 000006
【図６】
0005971324.tif 000007
【図７】
0005971324.tif 000008