(57)【要約】【課題】帰還関数を計算する組み合わせ論理回路の速度により制限されることなく高速に動作可能な帰還シフトレジスタを提供する。【解決手段】  帰還シフトレジスタ回路は、シフトレジスタと、第１の状態におけるシフトレジスタのレジスタ出力を入力として、第１の状態の次の第２の状態におけるシフトレジスタの所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する組み合わせ論理回路と、シフトレジスタの一部として機能するレジスタ列と追加レジスタとを含み、レジスタ列に格納されるデータに対して追加レジスタに格納されるデータを状態遷移毎に論理演算することにより、状態遷移に伴いレジスタ列にデータを伝搬させながら組み合わせ論理回路の論理演算の一部を実行し、第２の状態からＮ−１状態遷移後の状態において帰還値を生成し、所定のビット位置からＮ個後のビット位置のレジスタへ帰還値を入力する。【選択図】図３
2018155922.tif 000002
【特許請求の範囲】
【請求項１】
シフトレジスタと、
第１の状態における前記シフトレジスタの複数のビット位置のレジスタ出力を入力として受け取り、前記第１の状態の次の第２の状態における前記シフトレジスタの所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する組み合わせ論理回路と、
前記シフトレジスタの一部として機能するレジスタ列と追加レジスタとを含むレジスタ群と
を含み、前記レジスタ列に格納されるデータに対して前記追加レジスタに格納されるデータを状態遷移毎に論理演算することにより、状態遷移に伴い前記レジスタ列にデータを伝搬させながら前記組み合わせ論理回路の論理演算の一部を実行し、前記第２の状態からＮ状態遷移後（Ｎ：自然数）の状態の１つ前の状態において前記帰還値を生成し、前記所定のビット位置からＮ個後のビット位置のレジスタへ前記帰還値を入力する帰還シフトレジスタ回路。
【請求項２】
前記レジスタ列のレジスタは前記シフトレジスタの一部のレジスタである請求項１記載の帰還シフトレジスタ回路。
【請求項３】
前記帰還関数はＫＡＴＡＮ暗号の帰還関数である請求項１又は２記載の帰還シフトレジスタ回路。
【請求項４】
前記組み合わせ論理回路は、前記シフトレジスタの前記所定のビット位置のレジスタの出力と前記追加レジスタの出力との排他的論理和を求める論理ゲートを含み、前記論理ゲートの出力が前記帰還値として前記所定のビット位置の次のビット位置のレジスタへ入力される請求項３記載の帰還シフトレジスタ回路。
【請求項５】
前記組み合わせ論理回路は、前記シフトレジスタの前記所定のビット位置のレジスタの出力と、前記追加レジスタの１つである第１のレジスタの出力と、前記追加レジスタの他の１つである第２のレジスタの出力との３つの出力の排他的論理和を求める３入力論理ゲートを含み、前記３入力論理ゲートの出力が前記帰還値として前記所定のビット位置の次のビット位置のレジスタへ入力される請求項３記載の帰還シフトレジスタ回路。
【請求項６】
前記組み合わせ論理回路は、前記シフトレジスタの前記所定のビット位置のレジスタの出力と、前記追加レジスタの１つである第１のレジスタの出力と、前記追加レジスタの１つである第２のレジスタの出力と、前記追加レジスタの１つである第３のレジスタの出力との４つの出力の排他的論理和を求める３つの２入力排他的論理和ゲートを含み、前記シフトレジスタの前記所定のビット位置のレジスタの１つ後のビット位置のレジスタ及び２つ後のビット位置のレジスタと、前記追加レジスタである第４乃至第６のレジスタとが、前記４つの出力の排他的論理和を求める演算のための複数のバッファレジスタとして用いられ、３つの２入力排他的論理和ゲートのうちの最終段の排他的論理和ゲートの出力が前記帰還値として前記所定のビット位置の３つ後のビット位置のレジスタへ入力される請求項３記載の帰還シフトレジスタ回路。
【請求項７】
前記シフトレジスタはＫＡＴＡＮ３２、ＫＴＡＮＴＡＮ３２、ＫＡＴＡＮ４８、ＫＴＡＮＴＡＮ４８、ＫＡＴＡＮ６４、ＫＴＡＮＴＡＮ６４の何れかの暗号計算に用いるシフトレジスタである請求項３記載の帰還シフトレジスタ回路。
【請求項８】
前記帰還関数は線形帰還関数であり、前記シフトレジスタは疑似乱数生成に用いるシフトレジスタである請求項１記載の帰還シフトレジスタ回路。
【請求項９】
第１の状態におけるシフトレジスタの複数のビット位置のレジスタ出力を入力として受け取り、前記第１の状態の次の第２の状態における前記シフトレジスタの所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する組み合わせ論理回路を用いた帰還シフトレジスタにおいて、
シフトレジスタの一部として機能するレジスタ列に格納されるデータに対して追加レジスタに格納されるデータを状態遷移毎に論理演算することにより、状態遷移に伴い前記レジスタ列にデータを伝搬させながら前記組み合わせ論理回路の論理演算の一部を実行し、
前記第２の状態からＮ状態遷移後（Ｎ：自然数）である第３の状態の１つ前の状態において前記帰還値を生成し、
前記所定のビット位置からＮ個後のビット位置のレジスタへ前記帰還値を入力する
各段階を含む帰還シフトレジスタの動作方法。
【請求項１０】
前記レジスタ列のレジスタは前記シフトレジスタの一部のレジスタである請求項９記載の帰還シフトレジスタの動作方法。
【請求項１１】
前記帰還関数はＫＡＴＡＮ暗号の帰還関数である請求項９又は１０記載の帰還シフトレジスタの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、帰還シフトレジスタ回路及び帰還シフトレジスタの動作方法に関する。
【背景技術】
【０００２】
暗号方式は、公開鍵暗号方式と共通鍵暗号方式とに大別される。公開鍵暗号方式とは、暗号化と復号とで異なる鍵を用いる方式であり、暗号化を行うための鍵（公開鍵）を一般に公開する一方で、暗号文を復号するための鍵（秘密鍵）を受信者のみの秘密情報とすることにより安全性を保つ。これに対し、共通鍵暗号方式とは、暗号化と復号で同一の鍵（秘密鍵）を用いる方式であり、この秘密鍵を送信者と受信者以外の第三者にわからない情報とすることにより安全性を保つ。
【０００３】
共通鍵暗号は、チャレンジ・レスポンス方式の認証システムにしばしば用いられる。まず、認証者は、チャレンジと呼ばれるランダム値を被認証者に送る。被認証者は、事前に認証者と共有した秘密鍵を用い、受け取ったチャレンジを平文として共通鍵暗号で暗号化する。得られた暗号文をレスポンスとして認証者に送る。認証者も同様に、事前に共有した秘密鍵を用い、送ったチャレンジを平文として共通鍵暗号で暗号化する。得られた暗号文と受け取ったレスポンス（暗号文）とが一致するかを確認する。これらの２つの暗号文は、被認証者が事前に共有した秘密の情報（秘密鍵）を保持している場合にのみ一致するため、認証者はその被認証者を同定することができる。
【０００４】
一方、ネットワーク接続され、コンピュータ制御されるデバイスは年々に増えていると言われており、上述のような認証システムを用いて認証すべきデバイスも、それに伴い増えることが予想される。すなわち、認証システムへの収容が求められる被認証者の数が増えるため、認証者の単位時間あたりの処理能力の向上が必要不可欠となる。ここで、共通鍵暗号アルゴリズムは、ソフトウェアないしはハードウェアにより実装されるが、一般的に共通鍵暗号処理は、小さなビット単位の演算処理が多いため、ソフトウェアによる実装より、ハードウェアによる実装の方が、回路規模あたりの処理効率が高いことが知られている。認証者側でハードウェア実装された共通鍵暗号を用いることを考えれば、同暗号ハードウェアの効率的な実装は、産業上非常に重要な課題となる。
【０００５】
暗号処理用ハードウェアには線形帰還シフトレジスタ又は非線形帰還シフトレジスタが用いられることが多い。線形帰還シフトレジスタは、例えばストリーム暗号や疑似乱数生成器として使用される。非線形帰還シフトレジスタは、例えばＫＡＴＡＮやTrivium等の暗号方式の実装において用いられる。線形又は非線形帰還シフトレジスタ（以降、帰還シフトレジスタと呼ぶ）では、シフトレジスタの現在の状態（ビットパターン）を入力として計算される線形又は非線形の帰還関数の出力値が、シフトレジスタへの次の状態の１ビットの帰還入力となる。これらの線形又は非線型の帰還関数を計算するためのハードウェアとしては、組み合わせ論理回路が用いられる。
【０００６】
帰還シフトレジスタを高速に動作させるためには動作クロック周波数を高くする必要があるが、一般に、組み合わせ論理回路による論理演算にかかる時間よりもクロック周期を短くすることはできない。即ち、帰還関数を計算する論理演算の速度により、帰還シフトレジスタの動作速度が制限されることになる。組み合わせ論理回路の論理演算の速度は、論理回路を構成する各論理素子の動作速度に依存するため、論理演算速度自体を向上させることは難しい。
【０００７】
なお線形帰還シフトレジスタが生成する疑似ランダムシーケンスは、暗号化用途以外にも、スクランブル、スペクトラム拡散、擬似ノイズ発生、誤り率測定等の様々な用途に用いられる。従って、帰還シフトレジスタの動作速度を向上させることが、暗号化分野のみならず様々な分野においても望まれる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平０６−０７５５２４号公報
【特許文献２】特開２００２−３５２５８２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以上を鑑みると、帰還関数を計算する組み合わせ論理回路の速度により制限されることなく高速に動作可能な帰還シフトレジスタを提供することが望まれる。
【課題を解決するための手段】
【００１０】
帰還シフトレジスタ回路は、シフトレジスタと、第１の状態における前記シフトレジスタの複数のビット位置のレジスタ出力を入力として受け取り、前記第１の状態の次の第２の状態における前記シフトレジスタの所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する組み合わせ論理回路と、前記シフトレジスタの一部として機能するレジスタ列と追加レジスタとを含むレジスタ群とを含み、前記レジスタ列に格納されるデータに対して前記追加レジスタに格納されるデータを状態遷移毎に論理演算することにより、状態遷移に伴い前記レジスタ列にデータを伝搬させながら前記組み合わせ論理回路の論理演算の一部を実行し、前記第２の状態からＮ状態遷移後（Ｎ：自然数）の状態の１つ前の状態において前記帰還値を生成し、前記所定のビット位置からＮ個後のビット位置のレジスタへ前記帰還値を入力する。
【発明の効果】
【００１１】
少なくとも１つの実施例によれば、帰還関数を計算する組み合わせ論理回路の速度により制限されることなく高速に動作可能な帰還シフトレジスタを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】暗号処理の単位であるブロックサイズを３２ビットとしたときのＫＡＴＡＮ＆ＫＴＡＮＴＡＮのラウンド処理部の構成を示す図である。
【図２】一般化された帰還シフトレジスタの構成の一例を示す図である。
【図３】動作速度を高速化可能な帰還シフトレジスタの一般的な構成の一例を示す図である。
【図４】ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２において用いられる非線形関数を実現する組み合わせ論理回路の構成の一例を示す図である。
【図５】図４に示す組み合わせ論理回路の等価論理回路を示す図である。
【図６】レジスタ列に格納されるデータに対して論理演算しながらシフトする動作を模式的に示す図である。
【図７】ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の一例を示す図である。
【図８】ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の別の一例を示す図である。
【図９】ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の更に別の一例を示す図である。
【図１０】別の暗号処理ハードウェアの構成の一例を示す図である。
【図１１】更に別の暗号処理ハードウェアの構成の一例を示す図である。
【図１２】図３の帰還シフトレジスタを組み込んだシステムのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお図面において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００１４】
以下の説明では、暗号方式ＫＡＴＡＮ＆ＫＴＡＮＴＡＮに用いる帰還シフトレジスタを例に用いて本発明の帰還シフトレジスタについて説明する。具体的には、共通鍵暗号の一種である帰還シフトレジスタ型の暗号ハード（実装回路）対して、論理の等価性を維持しつつも、その組み合わせ回路を分割することで、最大遅延時間を短縮し、処理速度の高速化を実現する。なお後述するように、本発明は、擬似乱数生成器として用いる線形帰還シフトレジスタの回路実装等にも適用可能である。
【００１５】
最初に、ＫＡＴＡＮ＆ＫＴＡＮＴＡＮのハードウェア構成について説明する。暗号方式ＫＡＴＡＮ＆ＫＴＡＮＴＡＮはコンパクトで最小サイズの暗号ハードで実装できるものとして提案されたものであり、ハードウェア実装された共通鍵暗号の中でも特に軽量である。この暗号方式のアルゴリズムにおいて、秘密鍵の長さは８０ビットであり、暗号処理の単位であるブロックサイズは３２ビット、４８ビット、６４ビットの何れかである。即ち、３２ビット、４８ビット、または６４ビットの平文を入力とし、同じく入力の８０ビット秘密鍵を用いることにより、平文と同じ長さの暗号文を生成する。
【００１６】
共通鍵暗号の処理は一般的に、ラウンド処理と鍵拡大処理とを含む。ラウンド処理においては、所定の攪拌処理を１ラウンドとして、当該１ラウンドの処理を複数回実行する。実行するラウンドの総数をラウンド数と呼び、ＫＡＴＡＮ＆ＫＴＡＮＴＡＮのラウンド数は２５４である。各ラウンドでは、ラウンド毎に異なる値である１ビットの秘密鍵を２個用いる。それぞれのラウンドで用いられる１ビットの鍵は、入力の８０ビットの鍵を基にして所定の手順で生成される。この処理が鍵拡大処理である。ＫＡＴＡＮとＫＴＡＮＴＡＮの違いは、鍵拡大処理の構成が異なることのみであり、ラウンド処理は同一の構成となっている。
【００１７】
図１は、暗号処理の単位であるブロックサイズを３２ビットとしたときのラウンド処理部の構成を示す図である。ブロックサイズ３２ビットのときのＫＡＴＡＮ及びＫＴＡＮＴＡＮはそれぞれＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２と呼ばれる。
【００１８】
図１に示すラウンド処理部は帰還シフトレジスタとして実装される。帰還シフトレジスタは、シフトレジスタ１０、シフトレジスタ１１、組み合わせ論理回路１２、及び組み合わせ論理回路１３を含む。組み合わせ論理回路１２及び１３はそれぞれ、第１の状態におけるシフトレジスタ１０及び１１の複数のビット位置のレジスタ出力を入力として受け取る。図１においてシフトレジスタの各レジスタを示す矩形枠内の番号で示されるように、シフトレジスタ１０はビット"０"からビット"１２"の１３ビット長であり、シフトレジスタ１１はビット"０"からビット"１８"の１９ビット長である。
【００１９】
組み合わせ論理回路１２及び１３はそれぞれ、第１の状態の次の第２の状態におけるシフトレジスタ１１及び１０の所定のビット位置（図１のビット"０"の位置）のレジスタ値となるべき帰還値を生成する帰還関数を実現する。この帰還関数は非線形関数であり、組み合わせ論理回路１２においては、２つのＡＮＤ演算（論理積演算）論理ゲート１２−１及び１２−２と、４つのＸＯＲ演算（排他的論理和演算）論理ゲート１２−３乃至１２−６とにより実現される。また組み合わせ論理回路１３においては、２つのＡＮＤ演算論理ゲート１３−１及び１３−２と、４つのＸＯＲ演算論理ゲート１３−３乃至１３−６とにより実現される。組み合わせ論理回路１２と組み合わせ論理回路１３とは、それぞれの入力は異なるが、論理演算としては同一の演算を実行する。
【００２０】
組み合わせ論理回路１２の演算する帰還関数には、シフトレジスタ１０からの入力以外に、１ビットの鍵Ｋａと１ビットのイレギュラーアップデート値ＩＲが入力される。また組み合わせ論理回路１３の演算する帰還関数には、シフトレジスタ１０からの入力以外に、１ビットの鍵Ｋｂが入力される。鍵Ｋａ及びＫｂは前述の鍵拡大処理によりラウンド毎に生成され供給される。イレギュラーアップデート値ＩＲは所定のルールにより生成されるラウンド毎に異なる1ビットの値である。
【００２１】
３２ビットの平文はシフトレジスタ１０及び１１に分割して格納される。平文の最下位ビットはシフトレジスタ１１のビット"０"に格納され、平文の最上位ビットはシフトレジスタ１０のビット"１２"に格納される。シフトレジスタ１０及び１１は、図中の最上部または最下部に示された矢印の方向に、1ラウンド毎に1ビットずつシフトする。２５４ラウンド実行した後、即ち２５４回シフトした後に、３２個のレジスタに保持されている３２ビットのデータが暗号文（３２ビット）となる。
【００２２】
図１に示す帰還シフトレジスタにおいて正常に帰還動作を実行するためには、シフトレジスタ１０及び１１のシフト動作のクロック周期は、組み合わせ論理回路１２及び１３における論理演算にかかる時間よりも長い必要がある。即ち、動作クロック周期は、組み合わせ論理回路１２及び１３の入力から出力までの遅延時間よりも長い必要があり、高速な暗号処理を実行することができない。
【００２３】
図２は、一般化された帰還シフトレジスタの構成の一例を示す図である。図２に示す帰還シフトレジスタは、シフトレジスタ２０と組み合わせ論理回路２１とを含む。シフトレジスタ２０は、縦続接続された複数のレジスタを含む。各レジスタがクロックパルスに応答して前段のレジスタのデータを読み込むことにより、クロックに同期した状態遷移に伴いデータがレジスタ内を伝搬していく。
【００２４】
組み合わせ論理回路２１は、第１の状態におけるシフトレジスタ２０の複数のビット位置のレジスタ出力２２を入力として受け取る。組み合わせ論理回路２１は、第１の状態の次の第２の状態におけるシフトレジスタ２０の所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する。組み合わせ論理回路２１は、所定のビット位置のレジスタへの帰還入力２４として、生成した帰還値をシフトレジスタ２０に供給する。シフトレジスタ２０は図１のＫＡＴＡＮ３２の例のように分割されていてもよく、シフトレジスタ２０への帰還入力２４は複数個あってもよい。
【００２５】
前述の図１の例の場合と同様に、図１に示す帰還シフトレジスタにおいて正常に帰還動作を実行するためには、シフトレジスタ２０のシフト動作のクロック周期は、組み合わせ論理回路２１における論理演算にかかる時間よりも長い必要がある。即ち、動作クロック周期は、組み合わせ論理回路２１の入力から出力までの遅延時間よりも長い必要があり、高速な暗号処理を実行することができない。
【００２６】
図３は、動作速度を高速化可能な帰還シフトレジスタの一般的な構成の一例を示す図である。なお図３及び他の同様の図において、各ボックスで示される各回路ブロックと他の回路ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。
【００２７】
図３の帰還シフトレジスタは、シフトレジスタ３０、第１の組み合わせ論理回路３１−１、第２の組み合わせ論理回路３１−２、及び追加レジスタ３２を含む。シフトレジスタ３０は、第１のシフトレジスタ部分であるレジスタ列３０−１と第２のシフトレジスタ部分３０−２とを含む。
【００２８】
シフトレジスタ３０は、縦続接続された複数のレジスタを含む。第２のシフトレジスタ部分３０−２は通常のシフトレジスタである。第２のシフトレジスタ部分３０−２の各レジスタがクロックパルスに応答して前段のレジスタのデータを読み込むことにより、クロックに同期した状態遷移に伴いデータがレジスタ内を伝搬していく。レジスタ列３０−１も縦続接続された複数のレジスタを含むが、レジスタ間に第２の組み合わせ論理回路３１−２の論理ゲートが介在している。レジスタ列３０−１の各レジスタが、クロックパルスに応答して前段のレジスタのデータに対する論理ゲートによる演算結果を読み込むことにより、クロックに同期した状態遷移に伴いデータが演算されながらレジスタ列を伝搬していく。
【００２９】
第１の組み合わせ論理回路３１−１及び第２の組み合わせ論理回路３１−２は、図２の組み合わせ論理回路２１に相当する論理演算回路を説明の都合上２つに分割して示したものである。ある組み合わせ論理回路において複数の論理ゲートにより２以上の段数の論理演算が実現されている場合、この組み合わせ論理回路を前段側の論理回路部分の論理ゲートと後段側の論理回路部分の論理ゲートとに任意に分割できる。この場合、第１の組み合わせ論理回路３１−１は前段側の論理回路部分に相当し、第２の組み合わせ論理回路３１−２は後段側の論理回路部分に相当する。
【００３０】
第１の組み合わせ論理回路３１−１は、第１の状態におけるシフトレジスタ３０の複数のビット位置のレジスタ出力３３を入力として受け取る。第１の組み合わせ論理回路３１−１及び第２の組み合わせ論理回路３１−２は、第１の状態の次の第２の状態におけるシフトレジスタ３０の所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する。シフトレジスタ３０は図１のＫＡＴＡＮ３２の例のように分割されていてもよく、シフトレジスタ３０への帰還入力３６は複数個あってもよい。
【００３１】
図３に含む帰還シフトレジスタには、シフトレジスタ３０の一部として機能するレジスタ列３０−１と追加レジスタ３２とを含むレジスタ群が設けられている。追加レジスタ３２への演算値入力３５は、第１の組み合わせ論理回路３１−１が生成した１つ又は複数の演算値（帰還関数の演算の中間結果）である。演算値入力３５により供給された演算値は、追加レジスタ３２の少なくとも１つのレジスタに格納される。レジスタ列３０−１には、第１の組み合わせ論理回路３１−１が生成した１つの演算値（帰還関数の演算の中間結果）が演算値入力３６として供給されてよい。なお演算値入力３６は、第１の組み合わせ論理回路３１−１から供給されるのではなく、第２の組み合わせ論理回路３１−２から供給されるのでもよい。
【００３２】
演算値入力３６として供給された演算中間結果はレジスタ列３０−１の１つのレジスタに格納される。このレジスタのビット位置は、前述の第２の状態用の帰還値が格納される所定のビット位置であってよいし、或いは他のビット位置であってもよい。
【００３３】
第２の組み合わせ論理回路３１−２は、追加レジスタ３２のレジスタ格納値とレジスタ列３０−１のレジスタ格納値との間の論理演算を行い、且つ必要に応じて追加レジスタ３２レジスタ格納値同士の論理演算を行う。第２の組み合わせ論理回路３１−２は、演算結果を追加レジスタ３２又はレジスタ列３０−１に格納してよい。演算結果の格納処理はクロックに同期した状態遷移に伴い実行される。第２の組み合わせ論理回路３１−２と追加レジスタ３２との間のレジスタ値及び演算結果のやり取りは、図３において入出力３７として示される。
【００３４】
レジスタ列３０−１に着目すると、レジスタ列３０−１のあるレジスタに格納されるレジスタ値は、追加レジスタ３２の１つ又は複数のレジスタに格納される１つ又は複数のレジスタ値と論理演算され、論理演算の結果が１つ後段のレジスタに格納される。図３において、状態遷移に伴い論理演算されながらレジスタ列３０−１のレジスタのデータが隣のレジスタに転送される動作が、データ遷移及びシフト３８−１乃至３８−Ｎとして示される。例えばレジスタ列３０−１のビット"０"（最下位ビット）の位置のレジスタに格納されているデータは、Ｎ回の状態遷移によりＮ回のデータ遷移及びシフトを受け、ビット"Ｎ"（第Ｎビット）の位置のレジスタに格納される。この際の各状態遷移における一回の論理演算は、１つの論理ゲートによる演算であってもよく、複数の論理ゲートによる演算であってもよく、一段の論理演算であっても複数段の論理演算であってもよい。レジスタ列３０−１においてこのようなデータ遷移及びシフト動作を行う回路構成とすることで、レジスタ列３０−１はシフトレジスタ３０の一部として機能することが可能となる。
【００３５】
このようにして、第２の組み合わせ論理回路３１−２は、レジスタ列３０−１に格納されるデータに対して追加レジスタ３２に格納されるデータを状態遷移毎に論理演算する。これにより第２の組み合わせ論理回路３１−２は、状態遷移に伴いレジスタ列３０−１にデータを伝搬させながら組み合わせ論理回路の論理演算（帰還関数の演算）の一部を順次実行する。この結果、前述の第２の状態からＮ状態遷移後（Ｎ：自然数）の状態の１つ前の状態において帰還値が生成され、前述の所定のビット位置からＮ個後（Ｎ段後）のビット位置のレジスタへ、この生成された帰還値が入力される。
【００３６】
以上の動作では、組み合わせ論理回路による帰還関数の論理演算を複数の論理演算部分に分割し、クロックに同期してレジスタ列３０−１にデータを伝搬させながら、論理演算部分を実行する。即ち、図２に示される構成のように１つのクロック周期において帰還関数の論理演算を全て実行するのではなく、レジスタ列３０−１にデータを伝搬されていく１つ又は複数のクロック周期に亘り、１つ又は複数の分割された論理演算部分を実行する。この構成により、第１の組み合わせ論理回路３１−１の部分の一回の演算と第２の組み合わせ論理回路３１−２の部分の一回又は複数回の演算とを複数のクロック周期に亘って実行し、１つのクロック周期内での演算量即ち遅延時間を小さくすることができる。従って、図２の構成の場合に比較して図３の構成においてはクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【００３７】
なお例えばＫＡＴＡＮ及びＫＴＡＮＴＡＮ等の暗号処理において、シフトレジスタに格納された平文は初期のラウンドではそのままシフトレジスタ内をシフトする。これを図３の構成にあてはめた場合、シフトレジスタ３０に格納された平文は、レジスタ列３０−１に格納された部分も含め、論理演算により値が変更されることなく、そのままの値で順次シフトしていくことが要求される。例えばシフトレジスタ３０の右端のビット"０"の位置に格納された平文の最下位ビットは、そのままの値でシフトレジスタ３０の左端のビット位置までシフトされていくことが要求される。
【００３８】
図３の構成においては、追加レジスタ３２に初期値として適切な値を設定しておくことで、レジスタ列３０−１を通常のシフトレジスタとして機能させることが可能である。即ち例えばデータ遷移及びシフト時に実行される演算がＸＯＲである場合、追加レジスタ３２の対応するレジスタ値を０にしておけば、データシフト動作が実現される。また例えばデータ遷移及びシフト時に実行される演算がＡＮＤである場合、追加レジスタ３２の対応するレジスタ値を１にしておけば、データシフト動作が実現される。
【００３９】
或いは、レジスタ列３０−１の各レジスタの入力部分において、前段のレジスタからの出力と第２の組み合わせ論理回路３１−２の論理ゲートの出力との何れかを選択可能なセレクタを設けてもよい。初期状態から何回目の状態遷移であるかに応じて各セレクタの選択を制御することにより、データシフトが要求される場合には前段のレジスタ出力を選択し、その後の論理演算を伴うデータ遷移及びシフトが要求される場合には論理ゲートの出力を選択すればよい。
【００４０】
以下に、上記の図３の構成を図１のＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２の帰還シフトレジスタに適用した例について説明する。
【００４１】
図４は、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２において用いられる非線形関数を実現する組み合わせ論理回路の構成の一例を示す図である。前述のように、例えば組み合わせ論理回路１２は、２つのＡＮＤ論理ゲート１２−１及び１２−２と、４つのＸＯＲ論理ゲート１２−３乃至１２−６とを含む。
【００４２】
図５は、図４に示す組み合わせ論理回路の等価論理回路を示す図である。ＸＯＲ演算は結合法則を満たすので、ＸＯＲ演算の順番を適宜入れ替えることで、図４に示す組み合わせ論理回路と等価な回路として図５に示す組み合わせ論理回路が得られる。
【００４３】
図５に示す非線形帰還関数を実現する組み合わせ論理回路は、２つのＡＮＤ論理ゲート４０−１及び４０−２と、４つのＸＯＲ論理ゲート４０−３乃至４０−６とを含む。以降の説明の便宜上、この組み合わせ論理回路を３分割する。３分割により得られるＸＯＲ論理ゲート４０−４及び４０−５の論理回路部分を論理回路４１、ＡＮＤ論理ゲート４０−１及び４０−２とＸＯＲ論理ゲート４０−３との論理回路部分を論理回路４２、ＸＯＲ論理ゲート４０−６の論理回路部分を論理回路４３とする。
【００４４】
このように帰還関数を分割することにより、前段の論理回路４１及び４２を図３の第１の組み合わせ論理回路３１−１に割り当て、後段の論理回路４３を第２の組み合わせ論理回路３１−２に割り当てることができる。これにより、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２を図３の構成を用いて実装することが可能となる。
【００４５】
なお、図３に示す構成を図１に示すＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２の帰還シフトレジスタに適用するために、図４に示す組み合わせ論理回路から図５に示す等価回路への変換が必要な訳ではない。図４に示す組み合わせ論理回路をそのまま前段と後段に分けて、それぞれを第１及び第２の組み合わせ論理回路３１−１及び３１−２に割り当ててもよい。
【００４６】
図６は、レジスタ列に格納されるデータに対して論理演算しながらシフトする動作を模式的に示す図である。図６において、シフトレジスタ１１の最下位ビット"０"の位置のレジスタ及びその次のビット"１"の位置の２つのレジスタが、データ遷移及びシフト動作を実行するレジスタ列５１として機能する。クロック信号の第１のパルスに同期して、図５に示す論理回路４２の出力する１ビットの演算結果がビット"０"の位置のレジスタに格納されると共に、論理回路４１の出力する１ビットの演算結果が追加レジスタ５２に格納される。これらの論理回路４１及び４２の演算のみが、本来のクロック周期（即ち上記第１のパルスの直前の第１の周期）において並行して実行される。
【００４７】
ビット"０"のレジスタに格納される演算結果は中間結果であり、本来の最終的な帰還値ではない。そこで上記第１のパルスの直後の第２の周期において、当該中間結果と追加レジスタ５２に格納される中間結果とに対するＸＯＲ演算を論理回路４３が実行することにより、最終演算結果である帰還値を計算する。計算された当該帰還値は、上記第１のパルスの次の第２のパルスに同期して、ビット"１"のレジスタに格納される。このようにして、レジスタ列５１の２つのレジスタ間でデータ遷移及びシフトが行われることにより、中間結果から最終的な帰還値が計算され、レジスタ列５１の最終段のレジスタに当該帰還値が格納される。
【００４８】
帰還関数の組み合わせ論理回路を分割しない従来の構成の場合、第１のパルスで本来の帰還値がビット"０"のレジスタに格納される。この帰還値は、第１のパルスの次の第２のパルスに同期して、ビット"１"のレジスタに格納される。従って、論理分割しない従来の構成の場合と図６に示す論理分割する構成の場合とで、同一のクロック周期において着目帰還値が格納される位置は一致している。このようにして、論理分割する場合と論理分割しない場合とで、論理の等価性を確保することができる。
【００４９】
図７は、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の一例を示す図である。図７に示す帰還シフトレジスタは、シフトレジスタ１０、シフトレジスタ１１、非線形帰還関数を実現する複数の論理ゲート４０−１乃至４０−６、及び非線形帰還関数を実現する複数の論理ゲート５０−１乃至５０−６を含む。複数の論理ゲート４０−１乃至４０−６は図１の組み合わせ論理回路１２に相当し、複数の論理ゲート５０−１乃至５０−６は図１の組み合わせ論理回路１３に相当する。図７において非線形帰還関数を実現する組み合わせ論理回路の各々は、図５に示される等価回路の構成を有している。
【００５０】
図７に示すＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２のラウンド処理部の構成及び動作は、組み合わせ論理回路を分割した部分を除き、図１に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路を分割することにより図１とは異なることになる構成及び動作について説明する。
【００５１】
複数の論理ゲート４０−１乃至４０−６の纏まりである組み合わせ論理回路は、第１の状態におけるシフトレジスタ１０の複数のビット位置のレジスタ出力を入力として受け取る。この組み合わせ論理回路は更に、第１の状態の次の第２の状態におけるシフトレジスタ１１の所定のビット位置（ビット"０"の位置）のレジスタ値となるべき帰還値を、本来は第１の状態において生成する帰還関数を実現する。但し図７の構成では組み合わせ回路が分割されているため、以下に説明するように、帰還値は第１の状態の次の第２の状態において初めて生成される。
【００５２】
図７に示すラウンド処理部には、シフトレジスタ１１の一部として機能するレジスタ列５１と追加レジスタ５２とを含むレジスタ群が設けられている。レジスタ列５１のビット"０"の位置に格納されるデータは、図５に示す論理回路４２の生成する中間結果である。また追加レジスタ５２に格納されるデータは、図５に示す論理回路４１の生成する中間結果である。ＸＯＲ演算を実行する論理ゲート４０−６は、レジスタ列５１のビット"０"の位置に格納されるデータに対して追加レジスタ５２に格納されるデータを状態遷移毎に論理演算（ＸＯＲ演算）する。これにより、状態遷移に伴いレジスタ列５１にデータを伝搬させながら組み合わせ論理回路の論理演算の一部（論理ゲート４０−６によるＸＯＲ演算）を実行し、第２の状態から１状態遷移後の状態の１つ前の状態（即ち第２の状態）において帰還値を生成する。この生成された帰還値は、第２の状態から第３の状態に遷移するタイミングで、所定のビット位置（ビット"０"の位置）から１個後のビット位置（ビット"１"の位置）のレジスタへ入力される。
【００５３】
上述したレジスタ列５１におけるデータ遷移及びシフト動作は、図６を用いて詳しく説明した動作と同じである。このようにして、レジスタ列５１の２つのレジスタ間でデータ遷移及びシフトが行われることにより、中間結果から最終的な帰還値が計算され、レジスタ列５１の最終段のレジスタに当該帰還値が格納される。シフトレジスタ１０側には、シフトレジスタ１０の一部として機能するレジスタ列５３と追加レジスタ５４とを含むレジスタ群が設けられている。これにより、シフトレジスタ１０側においてもシフトレジスタ１１側と同様の動作が実行される。このような動作を実行する図７に示す構成では、１つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、図１の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【００５４】
図８は、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の別の一例を示す図である。図８に示す帰還シフトレジスタは、シフトレジスタ１０、シフトレジスタ１１、複数の論理ゲート４０−１乃至４０−４、４０−５Ａ、及び４０−６Ａ、並びに複数の論理ゲート５０−１乃至５０−４、５０−５Ａ、及び５０−６Ａを含む。複数の論理ゲート４０−１乃至４０−４、４０−５Ａ、及び４０−６Ａは図１の組み合わせ論理回路１２に相当し、複数の論理ゲート５０−１乃至５０−４、５０−５Ａ、及び５０−６Ａは図１の組み合わせ論理回路１３に相当する。
【００５５】
例えば複数の論理ゲート４０−１乃至４０−４、４０−５Ａ、及び４０−６Ａのうち、論理ゲート４０−１乃至４０−４は図７の同一参照番号の論理ゲートにそれぞれ対応する。ＸＯＲ演算を行う論理ゲート４０−５Ａ及び４０−６Ａについては、ＸＯＲ演算の結合法則を利用することにより、図７のＸＯＲ論理ゲート４０−５及び４０−６とは演算対象（演算入力）が異なっている。但し、複数の論理ゲート４０−１乃至４０−４、４０−５Ａ、及び４０−６Ａ全体としては、図１の組み合わせ論理回路１２の帰還関数を演算する論理回路構成となっている。このことは複数の論理ゲート５０−１乃至５０−４、５０−５Ａ、及び５０−６Ａについても同様である。
【００５６】
図８に示すＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２のラウンド処理部の構成及び動作は、組み合わせ論理回路の分割の仕方を除き、図７に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路の分割の仕方の違いにより図７とは異なることになる構成及び動作について説明する。
【００５７】
図８に示すラウンド処理部には、シフトレジスタ１１の一部として機能するレジスタ列６１と追加レジスタ６２−１乃至６２−６とを含むレジスタ群が設けられている。レジスタ列６１のビット"０"の位置に格納されるデータは、論理ゲート４０−２の生成する中間結果である。また追加レジスタ６２−１乃至６２−３に格納されるデータはそれぞれ、論理ゲート４０−１の生成する中間結果、論理ゲート４０−４の生成する中間結果、及び１ビットの鍵Ｋａである。
【００５８】
レジスタ列６１のビット"０"のレジスタ及び追加レジスタ６２−１乃至６２−３に格納される４つのビット値に対するＸＯＲ演算が、３個の２入力ＸＯＲ論理ゲート４０−３、４０−５Ａ、及び４０−６Ａにより順次実行される。この順次実行される演算において、レジスタ列６１のビット"１"の位置のレジスタ及びビット"２"の位置のレジスタと、追加レジスタ６２−４乃至６２−６のレジスタとが、上記４つのビット値のＸＯＲを求める演算のための複数のバッファレジスタとして用いられる。３個の２入力ＸＯＲ論理ゲート４０−３、４０−５Ａ、及び４０−６Ａのうちの最終段のＸＯＲ論理ゲート４０−６Ａの出力が、最終的な帰還値として所定のビット位置（ビット"０"の位置）の３つ後のビット位置（ビット"３"の位置）のレジスタへ入力される。
【００５９】
シフトレジスタ１０側には、シフトレジスタ１０の一部として機能するレジスタ列６３と追加レジスタ６４−１乃至６４−６とを含むレジスタ群が設けられている。これにより、シフトレジスタ１０側においてもシフトレジスタ１１側と同様の動作が実行される。このような動作を実行する図８に示す構成では、１つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、図１の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。また図７の構成に比較して帰還関数の論理演算をより細かく分割してあるので、図７の構成に比較しても、クロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【００６０】
図９は、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に図３の帰還シフトレジスタを適用した構成の更に別の一例を示す図である。図９に示す帰還シフトレジスタは、シフトレジスタ１０、シフトレジスタ１１、複数の論理ゲート４０−１、４０−２、４０−８、及び４０−９、並びに複数の論理ゲート５０−１、５０−２、５０−８、及び５０−９を含む。複数の論理複数の論理ゲート４０−１、４０−２、４０−８、及び４０−９は図１の組み合わせ論理回路１２に相当し、複数の論理ゲート５０−１、５０−２、５０−８、及び５０−９は図１の組み合わせ論理回路１３に相当する。
【００６１】
例えば複数の論理ゲート４０−１、４０−２、４０−８、及び４０−９のうち、論理ゲート４０−１及び４０−２は図７の同一参照番号の論理ゲートにそれぞれ対応する。図９の構成では、帰還関数の論理演算を実現するために論理ゲート４０−１及び４０−２に加え、３入力のＸＯＲ論理ゲート４０−８及び４０−９を用いる。複数の論理ゲート４０−１、４０−２、４０−８、及び４０−９全体としては、図１の組み合わせ論理回路１２の帰還関数を演算する論理回路構成となっている。このことは複数の論理ゲート５０−１、５０−２、５０−８、及び５０−９についても同様である。
【００６２】
図９に示すＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２のラウンド処理部の構成及び動作は、組み合わせ論理回路の分割の仕方を除き、図７に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路の分割の仕方の違いにより図７とは異なることになる構成及び動作について説明する。
【００６３】
図９に示すラウンド処理部には、シフトレジスタ１１の一部として機能するレジスタ列７１と追加レジスタ７２−１及び７２−２とを含むレジスタ群が設けられている。レジスタ列７１のビット"０"の位置に格納されるデータは、論理ゲート４０−２の生成する中間結果である。また追加レジスタ７２−１及び７２−２に格納されるデータはそれぞれ、論理ゲート４０−１の生成する中間結果及び論理ゲート４０−８の生成する中間結果である。なお図９に示す構成において、３入力のＸＯＲ論理ゲートの遅延時間は、他の論理ゲート（２入力のＡＮＤ論理ゲート）と同等の遅延時間であるか、或いは少なくとも２入力のＸＯＲ論理ゲートを２段縦続接続した構成の遅延時間よりも短いことを想定している。
【００６４】
３入力のＸＯＲ論理ゲート４０−９は、シフトレジスタ１１の所定のビット位置（ビット"０"の位置）のレジスタの出力と、追加レジスタ７２−１の出力と、追加レジスタ７２−２の出力との３つの出力のＸＯＲを求める。３入力のＸＯＲ論理ゲート４０−９の出力が帰還値として所定のビット位置（ビット"０"の位置）の次のビット位置（ビット"１"の位置）のレジスタへ入力される。
【００６５】
シフトレジスタ１０側には、シフトレジスタ１０の一部として機能するレジスタ列７３と追加レジスタ７４−１及び７４−２とを含むレジスタ群が設けられている。これにより、シフトレジスタ１０側においてもシフトレジスタ１１側と同様の動作が実行される。このような動作を実行する図９に示す構成では、１つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、図１の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。また図７の構成に比較して帰還関数の論理演算をより細かく分割してあるので、図７の構成に比較しても、クロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【００６６】
以上、図３の帰還シフトレジスタの構成、即ち帰還関数を演算する組み合わせ論理回路を分割して動作速度を向上させる構成をＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２に適用する例について説明した。この図３の帰還シフトレジスタの構成は、シフトレジスタ中の本来の帰還値を入力するレジスタが組み合わせ論理回路の入力として用いられていない限り、任意の帰還シフトレジスタの構成に適用可能である。シフトレジスタ中の本来の帰還値を入力するレジスタが組み合わせ論理回路の入力として用いられている場合、１クロックサイクル内で全ての帰還関数の演算を完了させる必要があるため、図３の構成を用いることは難しい。
【００６７】
図３の構成は、ＫＡＴＡＮ４８及びＫＴＡＮＴＡＮ４８並びにＫＡＴＡＮ６４及びＫＴＡＮＴＡＮ６４にも適用可能である。なおＫＡＴＡＮ４８及びＫＴＡＮＴＡＮ４８並びにＫＡＴＡＮ６４及びＫＴＡＮＴＡＮ６４の帰還レジスタの構成は、シフトレジスタの長さ及び組み合わせ論理回路への入力ビットの位置がＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２と異なるのみである。組み合わせ論理回路の構成は、ＫＡＴＡＮ４８及びＫＴＡＮＴＡＮ４８並びにＫＡＴＡＮ６４及びＫＴＡＮＴＡＮ６４と、ＫＡＴＡＮ３２及びＫＴＡＮＴＡＮ３２とで同一である。組み合わせ論理回路への入力として用いられる最初のビット（最も下位側のビット）は、ＫＡＴＡＮ４８及びＫＴＡＮＴＡＮ４８では６番目であり、ＫＡＴＡＮ６４及びＫＴＡＮＴＡＮ６４では９番目である。したがって、図７乃至図９に示される組み合わせ論理回路の分割形態の何れもが、ＫＡＴＡＮ４８及びＫＴＡＮＴＡＮ４８並びにＫＡＴＡＮ６４及びＫＴＡＮＴＡＮ６４に適用可能である。
【００６８】
図１０は、別の暗号処理ハードウェアの構成の一例を示す図である。図１０に示す暗号処理ハードウェアは、ストリーム暗号方式Ｇｒａｉｎを実装したものである。Ｇｒａｉｎのハードウェアは、非線形帰還シフトレジスタ８１と線形帰還シフトレジスタ８２とを含む。
【００６９】
図１０中のｇ（ｘ）が非線形帰還シフトレジスタ８１の非線形帰還関数であり、ｆ（ｘ）が線形帰還シフトレジスタ８２の線形帰還関数である。この暗号処理ハードウェアの構成において、非線形帰還シフトレジスタ８１の非線形帰還関数ｇ（ｘ）への入力のうちの最下位ビットは第１７ビットである。また線形帰還シフトレジスタ８２の線形帰還関数ｆ（ｘ）への入力のうちの最下位ビットは第１８ビットである。従って、非線形帰還関数ｇ（ｘ）とＸＯＲゲート８３とを分割対象として分割し、且つ線形帰還関数ｆ（ｘ）を分割対象として分割することにより、図３の帰還シフトレジスタの構成を図１０に示すＧｒａｉｎ暗号ハードウェアに適用することが可能となる。より具体的には、追加レジスタを設け、この追加レジスタを利用しながら、非線形帰還シフトレジスタ８１及び線形帰還シフトレジスタ８２の先頭部分のレジスタ列においてデータ遷移及びシフト動作を実行すればよい。
【００７０】
図１１は、更に別の暗号処理ハードウェアの構成の一例を示す図である。図１０に示す暗号処理ハードウェアは、ストリーム暗号方式Ｔｒｉｖｉｕｍを実装したものである。Ｔｒｉｖｉｕｍのハードウェアは、シフトレジスタ９１乃至９３、論理ゲート１０１乃至１０４、論理ゲート１１１乃至１１４、及び論理ゲート１２１乃至１２４を含む。
【００７１】
論理ゲート１０１乃至１０４、論理ゲート１１１乃至１１４、及び論理ゲート１２１乃至１２４は、入力は異なるが論理的には同一の演算を行う構成である。論理ゲート１０１乃至１０４を例に取ると、論理ゲート１０１はｓ２８６とｓ２８７とのＡＮＤを計算する。論理ゲート１０２は、ｓ２４３とｓ２８８とのＸＯＲを計算する。論理ゲート１０３は、論理ゲート１０１の出力とｓ６９とのＸＯＲを計算する。論理ゲート１０４は、論理ゲート１０２の出力と論理ゲート１０３の出力とのＸＯＲを計算する。論理ゲート１０４の出力がｓ１に入力される。図３の構成を図１１の構成に適用するためには、論理ゲート１０１乃至１０４による論理演算を分割し且つ追加レジスタを設け、この追加レジスタを利用しながら、シフトレジスタ９１の先頭部分のレジスタ列においてデータ遷移及びシフト動作を実行すればよい。論理ゲート１１１乃至１１４による論理演算及び論理ゲート１２１乃至１２４による論理演算についても同様である。
【００７２】
図１２は、図３の帰還シフトレジスタを組み込んだシステムのハードウェア構成の一例を示す図である。図１２に示すシステムは、ＣＰＵ２０１、ＲＯＭ２０２、ＲＡＭ２０３、暗号処理ハードウェア２０４、及び乱数生成ハードウェア２０５を含む。
【００７３】
ＲＯＭ２０２にはＣＰＵ２０１の基本動作に用いられるデータ及びプログラムが格納される。ＣＰＵ２０１は、ＲＡＭ２０３に格納されるプログラムを実行することにより所望の処理を実行する。ＲＡＭ２０３は、ＣＰＵ２０１の処理実行時のワークスペースとして機能すると共に、ＣＰＵ２０１が実行する処理に用いられるデータや当該処理により生成されるデータが格納される記憶領域として機能する。暗号処理ハードウェア２０４及び乱数生成ハードウェア２０５は、暗号処理及び乱数生成処理のために用いる帰還シフトレジスタを内蔵するものであり、当該帰還シフトレジスタにおいては図３に示す構成が採用される。
【００７４】
暗号処理ハードウェア２０４は、ＣＰＵ２０１による制御の下で動作し、暗号化処理や復号処理等を実行してよい。暗号処理ハードウェア２０４は例えば、共通鍵暗号を用いたチャレンジ・レスポンス方式の認証システムにおいて用いられてよい。この場合、認証者として機能する図１２のシステムが、チャレンジと呼ばれるランダム値を被認証者に送信する。システムは更に、暗号処理ハードウェア２０４を用い、共通の秘密鍵により当該チャレンジを暗号化する。被認証者側では、受信したチャレンジを共通の秘密鍵により暗号化し、得られた暗号文をレスポンスとしてシステムに送信する。システム側では、自ら生成した暗号文と被認証者から受信したレスポンスの暗号文とが一致するか否かを確認する。暗号文の一致又は不一致に基づいて、システムは被認証者を認証することができる。
【００７５】
乱数生成ハードウェア２０５は、ＣＰＵ２０１による制御の下で動作し、疑似乱数シーケンスを生成してよい。乱数生成ハードウェア２０５において疑似乱数生成のために用いられる帰還シフトレジスタは例えば線形帰還シフトレジスタであってよい。例えば上述のチャレンジ・レスポンス方式の認証システムにおいては、認証者であるシステム側ではランダム値であるチャレンジを生成する必要がある。図１２のシステムは、乱数生成ハードウェア２０５を用いて、チャレンジとして使用するランダム値を生成してよい。
【００７６】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００７７】
例えば、図３に示す帰還シフトレジスタの例においては、レジスタ列３０−１はシフトレジスタ３０の一部である構成を示したが、この構成に限定されるものではない。例えばシフトレジスタ３０とは別個にレジスタ列を設け、このレジスタ列内において、クロックに同期した状態遷移と共に帰還関数の部分論理演算を行いながら、データ遷移及びシフトをさせるようにしてもよい。このように生成された帰還値を、所定のビット位置（図２の構成で帰還値を入力するビット位置）からＮ個後のビット位置のレジスタへ入力するような構成の回路としてよい。この際、当該レジスタの入力部分において、シフトレジスタ前段のレジスタ出力と上記のレジスタ列の出力とを選択できるセレクタを設けてよい。
【００７８】
このような構成であっても、当該レジスタ列は、追加レジスタ３２の対応するレジスタ値によってはシフトレジスタとして機能することが可能であるという意味において、シフトレジスタ３０の一部として機能することが可能なレジスタ列である。即ち、このような構成であっても本願発明の意図する範囲内に含まれる。
【符号の説明】
【００７９】
１０  シフトレジスタ
１１  シフトレジスタ
１２  組み合わせ論理回路
１３  組み合わせ論理回路
２０  シフトレジスタ
２１  組み合わせ論理回路
３０  シフトレジスタ
３１−１  第１の組み合わせ論理回路
３１−２  第２の組み合わせ論理回路３１−２
３２  追加レジスタ
【図１】
2018155922.tif 000003
【図２】
2018155922.tif 000004
【図３】
2018155922.tif 000005
【図４】
2018155922.tif 000006
【図５】
2018155922.tif 000007
【図６】
2018155922.tif 000008
【図７】
2018155922.tif 000009
【図８】
2018155922.tif 000010
【図９】
2018155922.tif 000011
【図１０】
2018155922.tif 000012
【図１１】
2018155922.tif 000013
【図１２】
2018155922.tif 000014