(58)【調査した分野】(Int.Cl.,DB名)
前記シフトレジスタはKATAN32、KTANTAN32、KATAN48、KTANTAN48、KATAN64、KTANTAN64の何れかの暗号計算に用いるシフトレジスタである請求項3記載の帰還シフトレジスタ回路。
【発明を実施するための形態】
【0013】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。なお図面において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【0014】
以下の説明では、暗号方式KATAN&KTANTANに用いる帰還シフトレジスタを例に用いて本発明の帰還シフトレジスタについて説明する。具体的には、共通鍵暗号の一種である帰還シフトレジスタ型の暗号ハード(実装回路)対して、論理の等価性を維持しつつも、その組み合わせ回路を分割することで、最大遅延時間を短縮し、処理速度の高速化を実現する。なお後述するように、本発明は、擬似乱数生成器として用いる線形帰還シフトレジスタの回路実装等にも適用可能である。
【0015】
最初に、KATAN&KTANTANのハードウェア構成について説明する。暗号方式KATAN&KTANTANはコンパクトで最小サイズの暗号ハードで実装できるものとして提案されたものであり、ハードウェア実装された共通鍵暗号の中でも特に軽量である。この暗号方式のアルゴリズムにおいて、秘密鍵の長さは80ビットであり、暗号処理の単位であるブロックサイズは32ビット、48ビット、64ビットの何れかである。即ち、32ビット、48ビット、または64ビットの平文を入力とし、同じく入力の80ビット秘密鍵を用いることにより、平文と同じ長さの暗号文を生成する。
【0016】
共通鍵暗号の処理は一般的に、ラウンド処理と鍵拡大処理とを含む。ラウンド処理においては、所定の攪拌処理を1ラウンドとして、当該1ラウンドの処理を複数回実行する。実行するラウンドの総数をラウンド数と呼び、KATAN&KTANTANのラウンド数は254である。各ラウンドでは、ラウンド毎に異なる値である1ビットの秘密鍵を2個用いる。それぞれのラウンドで用いられる1ビットの鍵は、入力の80ビットの鍵を基にして所定の手順で生成される。この処理が鍵拡大処理である。KATANとKTANTANの違いは、鍵拡大処理の構成が異なることのみであり、ラウンド処理は同一の構成となっている。
【0017】
図1は、暗号処理の単位であるブロックサイズを32ビットとしたときのラウンド処理部の構成を示す図である。ブロックサイズ32ビットのときのKATAN及びKTANTANはそれぞれKATAN32及びKTANTAN32と呼ばれる。
【0018】
図1に示すラウンド処理部は帰還シフトレジスタとして実装される。帰還シフトレジスタは、シフトレジスタ10、シフトレジスタ11、組み合わせ論理回路12、及び組み合わせ論理回路13を含む。組み合わせ論理回路12及び13はそれぞれ、第1の状態におけるシフトレジスタ10及び11の複数のビット位置のレジスタ出力を入力として受け取る。
図1においてシフトレジスタの各レジスタを示す矩形枠内の番号で示されるように、シフトレジスタ10はビット"0"からビット"12"の13ビット長であり、シフトレジスタ11はビット"0"からビット"18"の19ビット長である。
【0019】
組み合わせ論理回路12及び13はそれぞれ、第1の状態の次の第2の状態におけるシフトレジスタ11及び10の所定のビット位置(
図1のビット"0"の位置)のレジスタ値となるべき帰還値を生成する帰還関数を実現する。この帰還関数は非線形関数であり、組み合わせ論理回路12においては、2つのAND演算(論理積演算)論理ゲート12−1及び12−2と、4つのXOR演算(排他的論理和演算)論理ゲート12−3乃至12−6とにより実現される。また組み合わせ論理回路13においては、2つのAND演算論理ゲート13−1及び13−2と、4つのXOR演算論理ゲート13−3乃至13−6とにより実現される。組み合わせ論理回路12と組み合わせ論理回路13とは、それぞれの入力は異なるが、論理演算としては同一の演算を実行する。
【0020】
組み合わせ論理回路12の演算する帰還関数には、シフトレジスタ10からの入力以外に、1ビットの鍵Kaと1ビットのイレギュラーアップデート値IRが入力される。また組み合わせ論理回路13の演算する帰還関数には、シフトレジスタ10からの入力以外に、1ビットの鍵Kbが入力される。鍵Ka及びKbは前述の鍵拡大処理によりラウンド毎に生成され供給される。イレギュラーアップデート値IRは所定のルールにより生成されるラウンド毎に異なる1ビットの値である。
【0021】
32ビットの平文はシフトレジスタ10及び11に分割して格納される。平文の最下位ビットはシフトレジスタ11のビット"0"に格納され、平文の最上位ビットはシフトレジスタ10のビット"12"に格納される。シフトレジスタ10及び11は、図中の最上部または最下部に示された矢印の方向に、1ラウンド毎に1ビットずつシフトする。254ラウンド実行した後、即ち254回シフトした後に、32個のレジスタに保持されている32ビットのデータが暗号文(32ビット)となる。
【0022】
図1に示す帰還シフトレジスタにおいて正常に帰還動作を実行するためには、シフトレジスタ10及び11のシフト動作のクロック周期は、組み合わせ論理回路12及び13における論理演算にかかる時間よりも長い必要がある。即ち、動作クロック周期は、組み合わせ論理回路12及び13の入力から出力までの遅延時間よりも長い必要があり、高速な暗号処理を実行することができない。
【0023】
図2は、一般化された帰還シフトレジスタの構成の一例を示す図である。
図2に示す帰還シフトレジスタは、シフトレジスタ20と組み合わせ論理回路21とを含む。シフトレジスタ20は、縦続接続された複数のレジスタを含む。各レジスタがクロックパルスに応答して前段のレジスタのデータを読み込むことにより、クロックに同期した状態遷移に伴いデータがレジスタ内を伝搬していく。
【0024】
組み合わせ論理回路21は、第1の状態におけるシフトレジスタ20の複数のビット位置のレジスタ出力22を入力として受け取る。組み合わせ論理回路21は、第1の状態の次の第2の状態におけるシフトレジスタ20の所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する。組み合わせ論理回路21は、所定のビット位置のレジスタへの帰還入力24として、生成した帰還値をシフトレジスタ20に供給する。シフトレジスタ20は
図1のKATAN32の例のように分割されていてもよく、シフトレジスタ20への帰還入力24は複数個あってもよい。
【0025】
前述の
図1の例の場合と同様に、
図1に示す帰還シフトレジスタにおいて正常に帰還動作を実行するためには、シフトレジスタ20のシフト動作のクロック周期は、組み合わせ論理回路21における論理演算にかかる時間よりも長い必要がある。即ち、動作クロック周期は、組み合わせ論理回路21の入力から出力までの遅延時間よりも長い必要があり、高速な暗号処理を実行することができない。
【0026】
図3は、動作速度を高速化可能な帰還シフトレジスタの一般的な構成の一例を示す図である。なお
図3及び他の同様の図において、各ボックスで示される各回路ブロックと他の回路ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路ブロックは、他のブロックと物理的にある程度分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。
【0027】
図3の帰還シフトレジスタは、シフトレジスタ30、第1の組み合わせ論理回路31−1、第2の組み合わせ論理回路31−2、及び追加レジスタ32を含む。シフトレジスタ30は、第1のシフトレジスタ部分であるレジスタ列30−1と第2のシフトレジスタ部分30−2とを含む。
【0028】
シフトレジスタ30は、縦続接続された複数のレジスタを含む。第2のシフトレジスタ部分30−2は通常のシフトレジスタである。第2のシフトレジスタ部分30−2の各レジスタがクロックパルスに応答して前段のレジスタのデータを読み込むことにより、クロックに同期した状態遷移に伴いデータがレジスタ内を伝搬していく。レジスタ列30−1も縦続接続された複数のレジスタを含むが、レジスタ間に第2の組み合わせ論理回路31−2の論理ゲートが介在している。レジスタ列30−1の各レジスタが、クロックパルスに応答して前段のレジスタのデータに対する論理ゲートによる演算結果を読み込むことにより、クロックに同期した状態遷移に伴いデータが演算されながらレジスタ列を伝搬していく。
【0029】
第1の組み合わせ論理回路31−1及び第2の組み合わせ論理回路31−2は、
図2の組み合わせ論理回路21に相当する論理演算回路を説明の都合上2つに分割して示したものである。ある組み合わせ論理回路において複数の論理ゲートにより2以上の段数の論理演算が実現されている場合、この組み合わせ論理回路を前段側の論理回路部分の論理ゲートと後段側の論理回路部分の論理ゲートとに任意に分割できる。この場合、第1の組み合わせ論理回路31−1は前段側の論理回路部分に相当し、第2の組み合わせ論理回路31−2は後段側の論理回路部分に相当する。
【0030】
第1の組み合わせ論理回路31−1は、第1の状態におけるシフトレジスタ30の複数のビット位置のレジスタ出力33を入力として受け取る。第1の組み合わせ論理回路31−1及び第2の組み合わせ論理回路31−2は、第1の状態の次の第2の状態におけるシフトレジスタ30の所定のビット位置のレジスタ値となるべき帰還値を生成する帰還関数を実現する。シフトレジスタ30は
図1のKATAN32の例のように分割されていてもよく、シフトレジスタ30への帰還入力36は複数個あってもよい。
【0031】
図3に含む帰還シフトレジスタには、シフトレジスタ30の一部として機能するレジスタ列30−1と追加レジスタ32とを含むレジスタ群が設けられている。追加レジスタ32への演算値入力35は、第1の組み合わせ論理回路31−1が生成した1つ又は複数の演算値(帰還関数の演算の中間結果)である。演算値入力35により供給された演算値は、追加レジスタ32の少なくとも1つのレジスタに格納される。レジスタ列30−1には、第1の組み合わせ論理回路31−1が生成した1つの演算値(帰還関数の演算の中間結果)が演算値入力36として供給されてよい。なお演算値入力36は、第1の組み合わせ論理回路31−1から供給されるのではなく、第2の組み合わせ論理回路31−2から供給されるのでもよい。
【0032】
演算値入力36として供給された演算中間結果はレジスタ列30−1の1つのレジスタに格納される。このレジスタのビット位置は、前述の第2の状態用の帰還値が格納される所定のビット位置であってよいし、或いは他のビット位置であってもよい。
【0033】
第2の組み合わせ論理回路31−2は、追加レジスタ32のレジスタ格納値とレジスタ列30−1のレジスタ格納値との間の論理演算を行い、且つ必要に応じて追加レジスタ32レジスタ格納値同士の論理演算を行う。第2の組み合わせ論理回路31−2は、演算結果を追加レジスタ32又はレジスタ列30−1に格納してよい。演算結果の格納処理はクロックに同期した状態遷移に伴い実行される。第2の組み合わせ論理回路31−2と追加レジスタ32との間のレジスタ値及び演算結果のやり取りは、
図3において入出力37として示される。
【0034】
レジスタ列30−1に着目すると、レジスタ列30−1のあるレジスタに格納されるレジスタ値は、追加レジスタ32の1つ又は複数のレジスタに格納される1つ又は複数のレジスタ値と論理演算され、論理演算の結果が1つ後段のレジスタに格納される。
図3において、状態遷移に伴い論理演算されながらレジスタ列30−1のレジスタのデータが隣のレジスタに転送される動作が、データ遷移及びシフト38−1乃至38−Nとして示される。例えばレジスタ列30−1のビット"0"(最下位ビット)の位置のレジスタに格納されているデータは、N回の状態遷移によりN回のデータ遷移及びシフトを受け、ビット"N"(第Nビット)の位置のレジスタに格納される。この際の各状態遷移における一回の論理演算は、1つの論理ゲートによる演算であってもよく、複数の論理ゲートによる演算であってもよく、一段の論理演算であっても複数段の論理演算であってもよい。レジスタ列30−1においてこのようなデータ遷移及びシフト動作を行う回路構成とすることで、レジスタ列30−1はシフトレジスタ30の一部として機能することが可能となる。
【0035】
このようにして、第2の組み合わせ論理回路31−2は、レジスタ列30−1に格納されるデータに対して追加レジスタ32に格納されるデータを状態遷移毎に論理演算する。これにより第2の組み合わせ論理回路31−2は、状態遷移に伴いレジスタ列30−1にデータを伝搬させながら組み合わせ論理回路の論理演算(帰還関数の演算)の一部を順次実行する。この結果、前述の第2の状態からN状態遷移後(N:自然数)の状態の1つ前の状態において帰還値が生成され、前述の所定のビット位置からN個後(N段後)のビット位置のレジスタへ、この生成された帰還値が入力される。
【0036】
以上の動作では、組み合わせ論理回路による帰還関数の論理演算を複数の論理演算部分に分割し、クロックに同期してレジスタ列30−1にデータを伝搬させながら、論理演算部分を実行する。即ち、
図2に示される構成のように1つのクロック周期において帰還関数の論理演算を全て実行するのではなく、レジスタ列30−1にデータを伝搬されていく1つ又は複数のクロック周期に亘り、1つ又は複数の分割された論理演算部分を実行する。この構成により、第1の組み合わせ論理回路31−1の部分の一回の演算と第2の組み合わせ論理回路31−2の部分の一回又は複数回の演算とを複数のクロック周期に亘って実行し、1つのクロック周期内での演算量即ち遅延時間を小さくすることができる。従って、
図2の構成の場合に比較して
図3の構成においてはクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【0037】
なお例えばKATAN及びKTANTAN等の暗号処理において、シフトレジスタに格納された平文は初期のラウンドではそのままシフトレジスタ内をシフトする。これを
図3の構成にあてはめた場合、シフトレジスタ30に格納された平文は、レジスタ列30−1に格納された部分も含め、論理演算により値が変更されることなく、そのままの値で順次シフトしていくことが要求される。例えばシフトレジスタ30の右端のビット"0"の位置に格納された平文の最下位ビットは、そのままの値でシフトレジスタ30の左端のビット位置までシフトされていくことが要求される。
【0038】
図3の構成においては、追加レジスタ32に初期値として適切な値を設定しておくことで、レジスタ列30−1を通常のシフトレジスタとして機能させることが可能である。即ち例えばデータ遷移及びシフト時に実行される演算がXORである場合、追加レジスタ32の対応するレジスタ値を0にしておけば、データシフト動作が実現される。また例えばデータ遷移及びシフト時に実行される演算がANDである場合、追加レジスタ32の対応するレジスタ値を1にしておけば、データシフト動作が実現される。
【0039】
或いは、レジスタ列30−1の各レジスタの入力部分において、前段のレジスタからの出力と第2の組み合わせ論理回路31−2の論理ゲートの出力との何れかを選択可能なセレクタを設けてもよい。初期状態から何回目の状態遷移であるかに応じて各セレクタの選択を制御することにより、データシフトが要求される場合には前段のレジスタ出力を選択し、その後の論理演算を伴うデータ遷移及びシフトが要求される場合には論理ゲートの出力を選択すればよい。
【0040】
以下に、上記の
図3の構成を
図1のKATAN32及びKTANTAN32の帰還シフトレジスタに適用した例について説明する。
【0041】
図4は、KATAN32及びKTANTAN32において用いられる非線形関数を実現する組み合わせ論理回路の構成の一例を示す図である。前述のように、例えば組み合わせ論理回路12は、2つのAND論理ゲート12−1及び12−2と、4つのXOR論理ゲート12−3乃至12−6とを含む。
【0042】
図5は、
図4に示す組み合わせ論理回路の等価論理回路を示す図である。XOR演算は結合法則を満たすので、XOR演算の順番を適宜入れ替えることで、
図4に示す組み合わせ論理回路と等価な回路として
図5に示す組み合わせ論理回路が得られる。
【0043】
図5に示す非線形帰還関数を実現する組み合わせ論理回路は、2つのAND論理ゲート40−1及び40−2と、4つのXOR論理ゲート40−3乃至40−6とを含む。以降の説明の便宜上、この組み合わせ論理回路を3分割する。3分割により得られるXOR論理ゲート40−4及び40−5の論理回路部分を論理回路41、AND論理ゲート40−1及び40−2とXOR論理ゲート40−3との論理回路部分を論理回路42、XOR論理ゲート40−6の論理回路部分を論理回路43とする。
【0044】
このように帰還関数を分割することにより、前段の論理回路41及び42を
図3の第1の組み合わせ論理回路31−1に割り当て、後段の論理回路43を第2の組み合わせ論理回路31−2に割り当てることができる。これにより、KATAN32及びKTANTAN32を
図3の構成を用いて実装することが可能となる。
【0045】
なお、
図3に示す構成を
図1に示すKATAN32及びKTANTAN32の帰還シフトレジスタに適用するために、
図4に示す組み合わせ論理回路から
図5に示す等価回路への変換が必要な訳ではない。
図4に示す組み合わせ論理回路をそのまま前段と後段に分けて、それぞれを第1及び第2の組み合わせ論理回路31−1及び31−2に割り当ててもよい。
【0046】
図6は、レジスタ列に格納されるデータに対して論理演算しながらシフトする動作を模式的に示す図である。
図6において、シフトレジスタ11の最下位ビット"0"の位置のレジスタ及びその次のビット"1"の位置の2つのレジスタが、データ遷移及びシフト動作を実行するレジスタ列51として機能する。クロック信号の第1のパルスに同期して、
図5に示す論理回路42の出力する1ビットの演算結果がビット"0"の位置のレジスタに格納されると共に、論理回路41の出力する1ビットの演算結果が追加レジスタ52に格納される。これらの論理回路41及び42の演算のみが、本来のクロック周期(即ち上記第1のパルスの直前の第1の周期)において並行して実行される。
【0047】
ビット"0"のレジスタに格納される演算結果は中間結果であり、本来の最終的な帰還値ではない。そこで上記第1のパルスの直後の第2の周期において、当該中間結果と追加レジスタ52に格納される中間結果とに対するXOR演算を論理回路43が実行することにより、最終演算結果である帰還値を計算する。計算された当該帰還値は、上記第1のパルスの次の第2のパルスに同期して、ビット"1"のレジスタに格納される。このようにして、レジスタ列51の2つのレジスタ間でデータ遷移及びシフトが行われることにより、中間結果から最終的な帰還値が計算され、レジスタ列51の最終段のレジスタに当該帰還値が格納される。
【0048】
帰還関数の組み合わせ論理回路を分割しない従来の構成の場合、第1のパルスで本来の帰還値がビット"0"のレジスタに格納される。この帰還値は、第1のパルスの次の第2のパルスに同期して、ビット"1"のレジスタに格納される。従って、論理分割しない従来の構成の場合と
図6に示す論理分割する構成の場合とで、同一のクロック周期において着目帰還値が格納される位置は一致している。このようにして、論理分割する場合と論理分割しない場合とで、論理の等価性を確保することができる。
【0049】
図7は、KATAN32及びKTANTAN32に
図3の帰還シフトレジスタを適用した構成の一例を示す図である。
図7に示す帰還シフトレジスタは、シフトレジスタ10、シフトレジスタ11、非線形帰還関数を実現する複数の論理ゲート40−1乃至40−6、及び非線形帰還関数を実現する複数の論理ゲート50−1乃至50−6を含む。複数の論理ゲート40−1乃至40−6は
図1の組み合わせ論理回路12に相当し、複数の論理ゲート50−1乃至50−6は
図1の組み合わせ論理回路13に相当する。
図7において非線形帰還関数を実現する組み合わせ論理回路の各々は、
図5に示される等価回路の構成を有している。
【0050】
図7に示すKATAN32及びKTANTAN32のラウンド処理部の構成及び動作は、組み合わせ論理回路を分割した部分を除き、
図1に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路を分割することにより
図1とは異なることになる構成及び動作について説明する。
【0051】
複数の論理ゲート40−1乃至40−6の纏まりである組み合わせ論理回路は、第1の状態におけるシフトレジスタ10の複数のビット位置のレジスタ出力を入力として受け取る。この組み合わせ論理回路は更に、第1の状態の次の第2の状態におけるシフトレジスタ11の所定のビット位置(ビット"0"の位置)のレジスタ値となるべき帰還値を、本来は第1の状態において生成する帰還関数を実現する。但し
図7の構成では組み合わせ回路が分割されているため、以下に説明するように、帰還値は第1の状態の次の第2の状態において初めて生成される。
【0052】
図7に示すラウンド処理部には、シフトレジスタ11の一部として機能するレジスタ列51と追加レジスタ52とを含むレジスタ群が設けられている。レジスタ列51のビット"0"の位置に格納されるデータは、
図5に示す論理回路42の生成する中間結果である。また追加レジスタ52に格納されるデータは、
図5に示す論理回路41の生成する中間結果である。XOR演算を実行する論理ゲート40−6は、レジスタ列51のビット"0"の位置に格納されるデータに対して追加レジスタ52に格納されるデータを状態遷移毎に論理演算(XOR演算)する。これにより、状態遷移に伴いレジスタ列51にデータを伝搬させながら組み合わせ論理回路の論理演算の一部(論理ゲート40−6によるXOR演算)を実行し、第2の状態から1状態遷移後の状態の1つ前の状態(即ち第2の状態)において帰還値を生成する。この生成された帰還値は、第2の状態から第3の状態に遷移するタイミングで、所定のビット位置(ビット"0"の位置)から1個後のビット位置(ビット"1"の位置)のレジスタへ入力される。
【0053】
上述したレジスタ列51におけるデータ遷移及びシフト動作は、
図6を用いて詳しく説明した動作と同じである。このようにして、レジスタ列51の2つのレジスタ間でデータ遷移及びシフトが行われることにより、中間結果から最終的な帰還値が計算され、レジスタ列51の最終段のレジスタに当該帰還値が格納される。シフトレジスタ10側には、シフトレジスタ10の一部として機能するレジスタ列53と追加レジスタ54とを含むレジスタ群が設けられている。これにより、シフトレジスタ10側においてもシフトレジスタ11側と同様の動作が実行される。このような動作を実行する
図7に示す構成では、1つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、
図1の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【0054】
図8は、KATAN32及びKTANTAN32に
図3の帰還シフトレジスタを適用した構成の別の一例を示す図である。
図8に示す帰還シフトレジスタは、シフトレジスタ10、シフトレジスタ11、複数の論理ゲート40−1乃至40−4、40−5A、及び40−6A、並びに複数の論理ゲート50−1乃至50−4、50−5A、及び50−6Aを含む。複数の論理ゲート40−1乃至40−4、40−5A、及び40−6Aは
図1の組み合わせ論理回路12に相当し、複数の論理ゲート50−1乃至50−4、50−5A、及び50−6Aは
図1の組み合わせ論理回路13に相当する。
【0055】
例えば複数の論理ゲート40−1乃至40−4、40−5A、及び40−6Aのうち、論理ゲート40−1乃至40−4は
図7の同一参照番号の論理ゲートにそれぞれ対応する。XOR演算を行う論理ゲート40−5A及び40−6Aについては、XOR演算の結合法則を利用することにより、
図7のXOR論理ゲート40−5及び40−6とは演算対象(演算入力)が異なっている。但し、複数の論理ゲート40−1乃至40−4、40−5A、及び40−6A全体としては、
図1の組み合わせ論理回路12の帰還関数を演算する論理回路構成となっている。このことは複数の論理ゲート50−1乃至50−4、50−5A、及び50−6Aについても同様である。
【0056】
図8に示すKATAN32及びKTANTAN32のラウンド処理部の構成及び動作は、組み合わせ論理回路の分割の仕方を除き、
図7に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路の分割の仕方の違いにより
図7とは異なることになる構成及び動作について説明する。
【0057】
図8に示すラウンド処理部には、シフトレジスタ11の一部として機能するレジスタ列61と追加レジスタ62−1乃至62−6とを含むレジスタ群が設けられている。レジスタ列61のビット"0"の位置に格納されるデータは、論理ゲート40−2の生成する中間結果である。また追加レジスタ62−1乃至62−3に格納されるデータはそれぞれ、論理ゲート40−1の生成する中間結果、論理ゲート40−4の生成する中間結果、及び1ビットの鍵Kaである。
【0058】
レジスタ列61のビット"0"のレジスタ及び追加レジスタ62−1乃至62−3に格納される4つのビット値に対するXOR演算が、3個の2入力XOR論理ゲート40−3、40−5A、及び40−6Aにより順次実行される。この順次実行される演算において、レジスタ列61のビット"1"の位置のレジスタ及びビット"2"の位置のレジスタと、追加レジスタ62−4乃至62−6のレジスタとが、上記4つのビット値のXORを求める演算のための複数のバッファレジスタとして用いられる。3個の2入力XOR論理ゲート40−3、40−5A、及び40−6Aのうちの最終段のXOR論理ゲート40−6Aの出力が、最終的な帰還値として所定のビット位置(ビット"0"の位置)の3つ後のビット位置(ビット"3"の位置)のレジスタへ入力される。
【0059】
シフトレジスタ10側には、シフトレジスタ10の一部として機能するレジスタ列63と追加レジスタ64−1乃至64−6とを含むレジスタ群が設けられている。これにより、シフトレジスタ10側においてもシフトレジスタ11側と同様の動作が実行される。このような動作を実行する
図8に示す構成では、1つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、
図1の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。また
図7の構成に比較して帰還関数の論理演算をより細かく分割してあるので、
図7の構成に比較しても、クロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【0060】
図9は、KATAN32及びKTANTAN32に
図3の帰還シフトレジスタを適用した構成の更に別の一例を示す図である。
図9に示す帰還シフトレジスタは、シフトレジスタ10、シフトレジスタ11、複数の論理ゲート40−1、40−2、40−8、及び40−9、並びに複数の論理ゲート50−1、50−2、50−8、及び50−9を含む。複数の論理複数の論理ゲート40−1、40−2、40−8、及び40−9は
図1の組み合わせ論理回路12に相当し、複数の論理ゲート50−1、50−2、50−8、及び50−9は
図1の組み合わせ論理回路13に相当する。
【0061】
例えば複数の論理ゲート40−1、40−2、40−8、及び40−9のうち、論理ゲート40−1及び40−2は
図7の同一参照番号の論理ゲートにそれぞれ対応する。
図9の構成では、帰還関数の論理演算を実現するために論理ゲート40−1及び40−2に加え、3入力のXOR論理ゲート40−8及び40−9を用いる。複数の論理ゲート40−1、40−2、40−8、及び40−9全体としては、
図1の組み合わせ論理回路12の帰還関数を演算する論理回路構成となっている。このことは複数の論理ゲート50−1、50−2、50−8、及び50−9についても同様である。
【0062】
図9に示すKATAN32及びKTANTAN32のラウンド処理部の構成及び動作は、組み合わせ論理回路の分割の仕方を除き、
図7に示すラウンド処理部の構成及び動作と同様である。以下においては、組み合わせ論理回路の分割の仕方の違いにより
図7とは異なることになる構成及び動作について説明する。
【0063】
図9に示すラウンド処理部には、シフトレジスタ11の一部として機能するレジスタ列71と追加レジスタ72−1及び72−2とを含むレジスタ群が設けられている。レジスタ列71のビット"0"の位置に格納されるデータは、論理ゲート40−2の生成する中間結果である。また追加レジスタ72−1及び72−2に格納されるデータはそれぞれ、論理ゲート40−1の生成する中間結果及び論理ゲート40−8の生成する中間結果である。なお
図9に示す構成において、3入力のXOR論理ゲートの遅延時間は、他の論理ゲート(2入力のAND論理ゲート)と同等の遅延時間であるか、或いは少なくとも2入力のXOR論理ゲートを2段縦続接続した構成の遅延時間よりも短いことを想定している。
【0064】
3入力のXOR論理ゲート40−9は、シフトレジスタ11の所定のビット位置(ビット"0"の位置)のレジスタの出力と、追加レジスタ72−1の出力と、追加レジスタ72−2の出力との3つの出力のXORを求める。3入力のXOR論理ゲート40−9の出力が帰還値として所定のビット位置(ビット"0"の位置)の次のビット位置(ビット"1"の位置)のレジスタへ入力される。
【0065】
シフトレジスタ10側には、シフトレジスタ10の一部として機能するレジスタ列73と追加レジスタ74−1及び74−2とを含むレジスタ群が設けられている。これにより、シフトレジスタ10側においてもシフトレジスタ11側と同様の動作が実行される。このような動作を実行する
図9に示す構成では、1つのクロック周期内での帰還関数の演算量即ち遅延時間を小さくすることができるので、
図1の構成に比較してクロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。また
図7の構成に比較して帰還関数の論理演算をより細かく分割してあるので、
図7の構成に比較しても、クロック周期を短くして、帰還シフトレジスタの動作速度を向上させることができる。
【0066】
以上、
図3の帰還シフトレジスタの構成、即ち帰還関数を演算する組み合わせ論理回路を分割して動作速度を向上させる構成をKATAN32及びKTANTAN32に適用する例について説明した。この
図3の帰還シフトレジスタの構成は、シフトレジスタ中の本来の帰還値を入力するレジスタが組み合わせ論理回路の入力として用いられていない限り、任意の帰還シフトレジスタの構成に適用可能である。シフトレジスタ中の本来の帰還値を入力するレジスタが組み合わせ論理回路の入力として用いられている場合、1クロックサイクル内で全ての帰還関数の演算を完了させる必要があるため、
図3の構成を用いることは難しい。
【0067】
図3の構成は、KATAN48及びKTANTAN48並びにKATAN64及びKTANTAN64にも適用可能である。なおKATAN48及びKTANTAN48並びにKATAN64及びKTANTAN64の帰還レジスタの構成は、シフトレジスタの長さ及び組み合わせ論理回路への入力ビットの位置がKATAN32及びKTANTAN32と異なるのみである。組み合わせ論理回路の構成は、KATAN48及びKTANTAN48並びにKATAN64及びKTANTAN64と、KATAN32及びKTANTAN32とで同一である。組み合わせ論理回路への入力として用いられる最初のビット(最も下位側のビット)は、KATAN48及びKTANTAN48では6番目であり、KATAN64及びKTANTAN64では9番目である。したがって、
図7乃至
図9に示される組み合わせ論理回路の分割形態の何れもが、KATAN48及びKTANTAN48並びにKATAN64及びKTANTAN64に適用可能である。
【0068】
図10は、別の暗号処理ハードウェアの構成の一例を示す図である。
図10に示す暗号処理ハードウェアは、ストリーム暗号方式Grainを実装したものである。Grainのハードウェアは、非線形帰還シフトレジスタ81と線形帰還シフトレジスタ82とを含む。
【0069】
図10中のg(x)が非線形帰還シフトレジスタ81の非線形帰還関数であり、f(x)が線形帰還シフトレジスタ82の線形帰還関数である。この暗号処理ハードウェアの構成において、非線形帰還シフトレジスタ81の非線形帰還関数g(x)への入力のうちの最下位ビットは第17ビットである。また線形帰還シフトレジスタ82の線形帰還関数f(x)への入力のうちの最下位ビットは第18ビットである。従って、非線形帰還関数g(x)とXORゲート83とを分割対象として分割し、且つ線形帰還関数f(x)を分割対象として分割することにより、
図3の帰還シフトレジスタの構成を
図10に示すGrain暗号ハードウェアに適用することが可能となる。より具体的には、追加レジスタを設け、この追加レジスタを利用しながら、非線形帰還シフトレジスタ81及び線形帰還シフトレジスタ82の先頭部分のレジスタ列においてデータ遷移及びシフト動作を実行すればよい。
【0070】
図11は、更に別の暗号処理ハードウェアの構成の一例を示す図である。
図10に示す暗号処理ハードウェアは、ストリーム暗号方式Triviumを実装したものである。Triviumのハードウェアは、シフトレジスタ91乃至93、論理ゲート101乃至104、論理ゲート111乃至114、及び論理ゲート121乃至124を含む。
【0071】
論理ゲート101乃至104、論理ゲート111乃至114、及び論理ゲート121乃至124は、入力は異なるが論理的には同一の演算を行う構成である。論理ゲート101乃至104を例に取ると、論理ゲート101はs
286とs
287とのANDを計算する。論理ゲート102は、s
243とs
288とのXORを計算する。論理ゲート103は、論理ゲート101の出力とs
69とのXORを計算する。論理ゲート104は、論理ゲート102の出力と論理ゲート103の出力とのXORを計算する。論理ゲート104の出力がs
1に入力される。
図3の構成を
図11の構成に適用するためには、論理ゲート101乃至104による論理演算を分割し且つ追加レジスタを設け、この追加レジスタを利用しながら、シフトレジスタ91の先頭部分のレジスタ列においてデータ遷移及びシフト動作を実行すればよい。論理ゲート111乃至114による論理演算及び論理ゲート121乃至124による論理演算についても同様である。
【0072】
図12は、
図3の帰還シフトレジスタを組み込んだシステムのハードウェア構成の一例を示す図である。
図12に示すシステムは、CPU201、ROM202、RAM203、暗号処理ハードウェア204、及び乱数生成ハードウェア205を含む。
【0073】
ROM202にはCPU201の基本動作に用いられるデータ及びプログラムが格納される。CPU201は、RAM203に格納されるプログラムを実行することにより所望の処理を実行する。RAM203は、CPU201の処理実行時のワークスペースとして機能すると共に、CPU201が実行する処理に用いられるデータや当該処理により生成されるデータが格納される記憶領域として機能する。暗号処理ハードウェア204及び乱数生成ハードウェア205は、暗号処理及び乱数生成処理のために用いる帰還シフトレジスタを内蔵するものであり、当該帰還シフトレジスタにおいては
図3に示す構成が採用される。
【0074】
暗号処理ハードウェア204は、CPU201による制御の下で動作し、暗号化処理や復号処理等を実行してよい。暗号処理ハードウェア204は例えば、共通鍵暗号を用いたチャレンジ・レスポンス方式の認証システムにおいて用いられてよい。この場合、認証者として機能する
図12のシステムが、チャレンジと呼ばれるランダム値を被認証者に送信する。システムは更に、暗号処理ハードウェア204を用い、共通の秘密鍵により当該チャレンジを暗号化する。被認証者側では、受信したチャレンジを共通の秘密鍵により暗号化し、得られた暗号文をレスポンスとしてシステムに送信する。システム側では、自ら生成した暗号文と被認証者から受信したレスポンスの暗号文とが一致するか否かを確認する。暗号文の一致又は不一致に基づいて、システムは被認証者を認証することができる。
【0075】
乱数生成ハードウェア205は、CPU201による制御の下で動作し、疑似乱数シーケンスを生成してよい。乱数生成ハードウェア205において疑似乱数生成のために用いられる帰還シフトレジスタは例えば線形帰還シフトレジスタであってよい。例えば上述のチャレンジ・レスポンス方式の認証システムにおいては、認証者であるシステム側ではランダム値であるチャレンジを生成する必要がある。
図12のシステムは、乱数生成ハードウェア205を用いて、チャレンジとして使用するランダム値を生成してよい。
【0076】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【0077】
例えば、
図3に示す帰還シフトレジスタの例においては、レジスタ列30−1はシフトレジスタ30の一部である構成を示したが、この構成に限定されるものではない。例えばシフトレジスタ30とは別個にレジスタ列を設け、このレジスタ列内において、クロックに同期した状態遷移と共に帰還関数の部分論理演算を行いながら、データ遷移及びシフトをさせるようにしてもよい。このように生成された帰還値を、所定のビット位置(
図2の構成で帰還値を入力するビット位置)からN個後のビット位置のレジスタへ入力するような構成の回路としてよい。この際、当該レジスタの入力部分において、シフトレジスタ前段のレジスタ出力と上記のレジスタ列の出力とを選択できるセレクタを設けてよい。
【0078】
このような構成であっても、当該レジスタ列は、追加レジスタ32の対応するレジスタ値によってはシフトレジスタとして機能することが可能であるという意味において、シフトレジスタ30の一部として機能することが可能なレジスタ列である。即ち、このような構成であっても本願発明の意図する範囲内に含まれる。