(57)【要約】 【課題】ハッシュ関数回路をＰＧＶ構成法で構成して安全性を確保しつつ、削減可能な回路を削減する。  【解決手段】中間鍵生成部２０で初期鍵ＫＬ０＝オール０又はオール１として、中間鍵ＫＡを生成し、これを鍵データの初期値としてレジスタ３２に格納する。シフトセレクタ３３が、上記レジスタ３２に格納された鍵データを１５ビット又は１７ビット左循環シフトしたいずれかの状態を選択して取り出し、上記レジスタ３２に再び格納する。論理回路３４０が、上記レジスタ３２内の鍵データ又は上記初期鍵ＫＬ０のいずれかを副鍵ｋ１〜ｋ１８、ｋｗ１〜ｋｗ４、ｋｌ１〜ｋｌ４として選択出力する。上記論理回路３４０に対する選択出力制御と上記シフトセレクタ３３に対する選択制御は、副鍵生成アルゴリズムに従って副鍵制御部３５０が行う。【選択図】図１
2008052130.tif 000002
【特許請求の範囲】
【請求項１】
初期鍵が入力され、中間鍵を生成する中間鍵生成部と、
上記初期鍵と中間鍵が入力され、複数の副鍵を生成する副鍵生成部と、
上記副鍵によりデータを非線形変換する非線形データ変換部が多段接続された暗号処理部と、
を具備するブロック暗号器を用いて、ＰＧＶ構成法により、入力された初期鍵とメッセージに基づき、そのメッセージに対しハッシュ関数演算を行うハッシュ関数回路において、
上記初期鍵は、各ビットが全て同一値であり、
上記中間鍵が初期値として格納されるレジスタと、
上記レジスタに格納された鍵データを、第１所定ビット数又は第２所定ビット数だけ循環シフトしたいずれかの状態を取り出して、上記レジスタに格納するシフトセレクタと、
上記レジスタ内の鍵データ又は上記初期鍵を、上記副鍵として選択出力する論理回路と、
上記副鍵生成部の副鍵生成アルゴリズムに従って、上記シフトセレクタに対する選択制御と上記論理回路に対する選択出力制御を行う副鍵制御部と、
を備えることを特徴とするハッシュ関数回路。
【請求項２】
請求項１に記載の回路において、
上記論理回路は、上記レジスタに格納された鍵データと上記副鍵制御部より与えられる論理値０又は１との論理演算を行う回路で構成されていることを特徴とするハッシュ関数回路。
【請求項３】
請求項１に記載の回路において、
上記論理回路は、
上記レジスタ内の鍵データと上記副鍵制御部より与えられる第１制御信号とが入力され、これらの論理積を出力するＡＮＤ回路と、
上記ＡＮＤ回路の出力と上記副鍵制御部より与えられる第２制御信号とが入力され、これらの論理和を出力するＯＲ回路と、
を備えていることを特徴とするハッシュ関数回路。
【請求項４】
請求項１に記載の回路において、
上記シフトセレクタは、
上記レジスタに格納された鍵データを、第１所定ビット数だけ循環シフトする第１シフトレジスタと、
上記レジスタに格納された鍵データを、第２所定ビット数だけ循環シフトする第２シフトレジスタと、
上記第１シフトレジスタに格納された鍵データと上記第２シフトレジスタに格納された鍵データのいずれかを上記副鍵制御部により選択して上記レジスタに格納する選択回路と、
を備えることを特徴とするハッシュ関数回路。
【請求項５】
中間鍵生成部が、初期鍵から中間鍵を生成し、
副鍵生成部が、上記初期鍵と中間鍵から複数の副鍵を生成し、
暗号処理部が、上記副鍵によりデータの非線形変換を多段縦続的に行ってブロック暗号器を構成し、
上記ブロック暗号器を用いてＰＧＶ構成法により構成されたハッシュ関数回路が、初期鍵によりメッセージに対しハッシュ関数演算を行うハッシュ関数演算方法において、
上記初期鍵は、各ビットが全て同一値であり、
副鍵制御部が、上記中間鍵を初期値としてレジスタに格納する過程と、
シフトセレクタが、上記レジスタに格納された鍵データを、第１所定ビット数又は第２所定ビット数だけ循環シフトしたいずれかの状態を取り出して、上記レジスタに格納する過程と、
論理回路が、上記レジスタ内の鍵データ又は上記初期鍵を、上記副鍵として選択出力する過程と、
上記副鍵制御部が、副鍵生成部の副鍵生成アルゴリズムに従って、上記シフトセレクタに対する選択制御と上記論理回路に対する選択出力制御を行う過程と、
を有することを特徴とするハッシュ関数演算方法。
【請求項６】
請求項５に記載の演算方法において、
上記論理回路が、上記レジスタに格納された鍵データと上記副鍵制御部より与えられる論理値０又は１との論理演算を行うことを特徴とするハッシュ関数演算方法。
【請求項７】
請求項５に記載の演算方法において、
上記論理回路が、上記レジスタ内の鍵データと上記副鍵制御部より与えられる第１制御信号との論理積を演算し、この演算結果と上記副鍵制御部より与えられる第２制御信号との論理和を演算することを特徴とするハッシュ関数演算方法。
【請求項８】
請求項５に記載の演算方法において、
第１シフトレジスタが、上記レジスタに格納された鍵データを第１所定ビット数だけ循環シフトする過程と、
第２シフトレジスタが、上記レジスタに格納された鍵データを第２所定ビット数だけ循環シフトする過程と、
選択回路が、上記第１シフトレジスタに格納された鍵データと上記第２シフトレジスタに格納された鍵データのいずれかを上記副鍵制御部により選択して上記レジスタに格納する過程と、
を有することを特徴とするハッシュ関数演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば無線タグやＩＣカードなど実装回路規模の制約が厳しい分野において、セキュリティの確保やプライバシーの保護に必要となるハッシュ関数回路、特にブロック暗号器を用いてＰＧＶ構成法により構成したハッシュ関数回路及びその関数演算方法に関するものである。
【背景技術】
【０００２】
近年、ＲＦＩＤ(Radio Frequency Identification：電波方式認識)等の無線タグ技術やＩＣカードの導入が進んでいる。これらの技術を利用して安全に通信を行うためには、通信相手の認証を行う必要がある。そのためには、デバイス上に暗号アルゴリズムを搭載する必要があるが、限られたデバイスの計算資源を有効利用するため、認証にはハッシュ関数をベースとした暗号アルゴリズムが利用されることが多い。
ハッシュ関数をベースとした暗号アルゴリズムを用いる例としては、ＲＦＩＤのプライバシー問題保護を目的としたハッシュチェーン方式〔非特許文献１〕等があげられる。
【０００３】
安全なハッシュ関数の構成方法のひとつとしてＰＧＶ構成法がある〔非特許文献２〕。ＰＧＶ構成法はCamellia暗号〔特許文献１（Camelliaは登録商標）〕などのブロック暗号に基づき一方向性関数、つまりハッシュ関数を構成する方法である。
【０００４】
図１１はCamellia暗号に基づきＰＧＶ構成法で回路構成した従来のハッシュ関数回路１の構成例を示す図である。ハッシュ関数回路１は初期鍵ＫＬ０とメッセージｍが入力され、ハッシュ関数ｈを出力する。
【０００５】
成される。
ブロック暗号器１０は、中間鍵生成部２０、副鍵生成部３０、暗号処理部４０から構成される。
中間鍵生成部２０の構成例を図１２に示す。中間鍵生成部２０ではデータを非線形変換する非線形データ変換部２１が４段縦続接続されており、初期鍵ＫＬ０が入力されると２段の非線形変換を受けた後、初期鍵ＫＬ０と排他的論理和がとられ、更に２段の非線形変換を受け、中間鍵ＫＡ０を出力する。
【０００６】
副鍵生成部３０は、セレクタ３１、レジスタ３２、レジスタ３６、セレクタ３７、シフトセレクタ３３、及び副鍵制御部３５から構成される。
セレクタ３１は、中間鍵ＫＡ０又は初期鍵ＫＬＯ又はシフトセレクタ３３から出力された鍵データＫＡ又はＫＬが入力され、副鍵制御部３５から入力される制御信号により、ＫＡ０及びＫＡはレジスタ３２に、ＫＬＯ及びＫＬはレジスタ３６に選択出力する。
レジスタ３２は、ＫＡ０又はＫＡが入力・格納され、副鍵制御部３５から入力される制御信号により、格納データを出力する。
レジスタ３３は、ＫＬＯ及びＫＬが入力・格納され、副鍵制御部３５から入力される制御信号により、格納データを出力する。
【０００７】
セレクタ３７は、レジスタ３２より出力されたＫＡ０又はＫＡ、若しくはレジスタ３３より出力されたＫＬＯ及びＫＬが入力され、副鍵制御部３５から入力される制御信号により、いずれかを選択出力する。
【０００８】
シフトセレクタ３３の構成例を図１３に示す。シフトセレクタ３３は、ＫＡ０又はＫＡ若しくはＫＬＯ又はＫＬが入力され、第１所定ビット数又は第２所定ビット数だけ循環シフトさせて、ＫＡ若しくはＫＬとして出力する。第１所定ビット数及び第２所定ビット数は任意の値でよく、本明細書の各構成例ではそれぞれ左側に１５ビット及び左側に１７ビットとしている。この図１３では、セレクタ３１がシフトセレクタ３３の出力を選択してレジスタ３２に入力し、セレクタ３７がレジスタ３２の出力を選択してシフトレジスタ３３に入力した場合である。シフトレジスタ３３は、１２８ビットの入力データの各ビットについて、その入力を１５ビット左循環シフト出力端子３３ｂと、１７ビット左循環シフト出力端子３３ｃのいずれかに切替えて出力する切替スイッチ３３ａを備えている。図では、各切替スイッチ３３ａが１７ビット左循環シフト出力端子３３ｃに接続されている状態を示している。従って、例えばレジスタ３２の第１８ビット目からの出力はレジスタ３２の第１ビット目に入力される。
【０００９】
副鍵制御部３５は副鍵生成アルゴリズムに従って、セレクタ３１、レジスタ３２、レジスタ３６、セレクタ３７、シフトセレクタ３３における入出力制御や選択制御を行う。副鍵生成アルゴリズムにより図１４に示す複数の副鍵が生成される。
【００１０】
副鍵生成アルゴリズムによる副鍵生成部３０での副鍵生成フローを図１５及び図１６に示す。セレクタ３１を介して、レジスタ３２に中間鍵ＫＡ０が、レジスタ３６に初期鍵ＫＬ０が格納される（Ｓ１）。セレクタ３７にてレジスタ３６が選択され、ＫＬ０が暗号処理部４０に副鍵ｋｗ１、ｋｗ２として出力される（Ｓ２）と共に、ＫＬ０がシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ３）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは１５ビットシフトしている）（Ｓ４）。セレクタ３７にてレジスタ３２が選択され、ＫＡ０が暗号処理部４０に副鍵ｋ１、ｋ２として出力される（Ｓ５）と共に、ＫＡ０がシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ６）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは１５ビットシフトしている）（Ｓ７）。セレクタ３７にてレジスタ３６が選択され、ＫＬが暗号処理部４０に副鍵ｋ３、ｋ４として出力される（Ｓ８）と共に、ＫＬがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ９）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは３０ビットシフトしている）（Ｓ１０）。セレクタ３７にてレジスタ３２が選択され、ＫＡが暗号処理部４０に副鍵ｋ５、ｋ６として出力される（Ｓ１１）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１２）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは３０ビットシフトしている）（Ｓ１３）。セレクタ３７にてレジスタ３６が選択され、ＫＬがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１４）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは４５ビットシフトしている）（Ｓ１５）。セレクタ３７にてレジスタ３２が選択され、ＫＡが暗号処理部４０に副鍵ｋｌ１、ｋｌ２として出力される（Ｓ１６）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１７）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは４５ビットシフトしている）（Ｓ１８）。セレクタ３７にてレジスタ３６が選択され、ＫＬが暗号処理部４０に副鍵ｋ７、ｋ８として出力される（Ｓ１９）と共に、ＫＬがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ２０）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは６０ビットシフトしている）（Ｓ２１）。セレクタ３７にてレジスタ３２が選択され、ＫＡの上位６４ビットが暗号処理部４０に副鍵ｋ９として出力される（Ｓ２２）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ２３）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは６０ビットシフトしている）（Ｓ２４）。セレクタ３７にてレジスタ３６が選択され、ＫＬの下位６４ビットが暗号処理部４０に副鍵ｋ１０として出力される（Ｓ２５）と共に、ＫＬがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２６）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは７７ビットシフトしている）（Ｓ２７）。セレクタ３７にてレジスタ３２が選択され、ＫＡが暗号処理部４０に副鍵ｋ１１、ｋ１２として出力される（Ｓ２８）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２９）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは７７ビットシフトしている）（Ｓ３０）。セレクタ３７にてレジスタ３６が選択され、ＫＬが暗号処理部４０に副鍵ｋｌ３、ｋｌ４として出力される（Ｓ３１）と共に、ＫＬがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ３２）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは９４ビットシフトしている）（Ｓ３３）。セレクタ３７にてレジスタ３２が選択され、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ３４）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは９４ビットシフトしている）（Ｓ３５）。セレクタ３７にてレジスタ３６が選択され、ＫＬが暗号処理部４０に副鍵ｋ１３、ｋ１４として出力される（Ｓ３６）と共に、ＫＬがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ３７）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは１１１ビットシフトしている）（Ｓ３８）。セレクタ３７にてレジスタ３２が選択され、ＫＡが暗号処理部４０に副鍵ｋ１５、ｋ１６として出力される（Ｓ３９）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ４０）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは１１１ビットシフトしている）（Ｓ４１）。セレクタ３７にてレジスタ３６が選択され、ＫＬが暗号処理部４０に副鍵ｋ１７、ｋ１８として出力される（Ｓ４２）と共に、ＫＬがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ４３）、シフト後の鍵データＫＬがセレクタ３１を介してレジスタ３６に上書き格納される（ＫＬは１２８ビットシフトしている）（Ｓ４４）。セレクタ３７にてレジスタ３２が選択され、ＫＡが暗号処理部４０に副鍵ｋｗ３、ｋｗ４として出力され（Ｓ４５）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ４６）、シフト後の鍵データＫＡがセレクタ３１を介してレジスタ３２に上書き格納される（ＫＡは１２８ビットシフトしている）（Ｓ４７）。最後にレジスタ３２及びレジスタ３６が初期化される（Ｓ４８）。
【００１１】
暗号処理部４０の構成例を図１７に示す。暗号処理部４０では、６段の非線形データ変換部４１と６段の非線形データ変換部４２と６段の非線形データ変換部４３が縦続接続されている。６段の非線形データ変換部４１と６段の非線形データ変換部４２の間には、データ正変換部４４とデータ逆変換部４５がそれぞれ直列に設けられており、６段の非線形データ変換部４２と６段の非線形データ変換部４３の間には、データ正変換部４６とデータ逆変換部４７がそれぞれ直列に設けられている。６段の非線形データ変換部４１の中では、非線形データ変換部５１〜５６が６段縦続接続され、また６段の非線形データ変換部４２及び４３についても同様な構成となっており、暗号処理部４０全体では合計で１８段の非線形データ変換が行われる。
【００１２】
暗号処理部４０では、メッセージｍが入力されるとメッセージｍを左半分と右半分に分け、メッセージの左半分と副鍵ｋｗ１との排他的論理和と、メッセージの右半分と副鍵ｋｗ２との排他的論理和を、それぞれ左入力データＬ０と右入力データＲ０とし、これらを第１の非線形データ変換部５１に入力する。非線形データ変換部５１中の非線形関数部Ｆにおいて、上記左入力データＬ０に第１の副鍵ｋ１を用いて第１の非線形変換を行い、この変換後のデータと上記右入力データＲ０との排他的論理和を第１の左中間データＬ１として出力すると共に、上記左入力データＬ０を第１の右中間データＲ１として出力する。非線形データ変換部５２中の非線形関数部Ｆにおいて、上記第１の左中間データＬ１と上記第１の右中間データＲ１を第２の非線形データ変換部５２に入力し、上記第１の左中間データＬ１に第２の副鍵ｋ２を用いて第２の非線形変換を行い、この変換後のデータと上記右入力データＲ１との排他的論理和を第２の左中間データＬ２として出力すると共に、上記左中間データＬ１を第２の右中間データＲ２として出力する。このように、第１の非線形データ変換部５１から第６の非線形データ変換部５６までそれぞれ副鍵ｋ１からｋ６を用いて同様な処理が行われる。
【００１３】
第６の非線形データ変換部５６から出力された左中間データＬ６と右中間データＲ６は、それぞれデータ正変換部４４とデータ逆変換部４５において、それぞれ副鍵ｋｌ１、ｋｌ２を用いて正変換、逆変換され、第７の非線形データ変換部５７に入力される。これら入力された各変換後のデータは、第７の非線形データ変換部５７から第１２の非線形データ変換部６２において、それぞれ副鍵ｋ７からｋ１２を用いて、第１の非線形データ変換部５１から第６の非線形データ変換部５６において行われた処理と同様な処理が行われる。
【００１４】
第１２の非線形データ変換部６２から出力された左中間データＬ１２と右中間データＲ１２は、それぞれデータ正変換部４６とデータ逆変換部４７において、それぞれ副鍵ｋｌ３、ｋｌ４を用いて正変換、逆変換され、第１３の非線形データ変換部６３に入力される。これら入力された各変換後のデータは、第１３の非線形データ変換部６３から第１８の非線形データ変換部６８において、それぞれ副鍵ｋ１３からｋ１８を用いて、第１の非線形データ変換部５１から第６の非線形データ変換部５６において行われた処理と同様な処理が行われ、左中間データＬ１８と右中間データＲ１８が出力される。最後に左中間データＬ１８と副鍵ｋｗ３、右中間データＲ１８と副鍵ｋｗ４との各排他的論理和をそれぞれ演算した後、両者を再度連結し、これを暗号出力ＫＥとして出力する。
【００１５】
図１１中のＸＯＲ（排他的論理和）回路７０は、前記暗号出力ＫＥとメッセージｍが入力されると、両者の排他的論理和を演算し、ハッシュ関数ｈを出力する。
【特許文献１】国際公開第０１／０６７４２５号  「補助変換を用いたブロック暗号装置」
【非特許文献１】Miyako Ohkubo,Koutarou Suzuki and Shingo Kinoshita,”Cryptographic Approach to “Privacy-Friendly”Tags”, RFID Privacy Workshop@MIT, 2003.
【非特許文献２】桶屋勝幸、“鍵付きハッシュ関数に関するサイドチャネル攻撃”、SCIS2006、2006．
【発明の開示】
【発明が解決しようとする課題】
【００１６】
図１１に示す従来回路では、１２８ビットレジスタ２個、セレクタ２個、シフトセレクタ１個といった回路構成となっており、３ＫＧ程度の回路規模に抑えることが求められるＲＦＩＤなどへの適用は難しい。本発明の課題は、ハッシュ関数回路をＰＧＶ構成法で構成して安全性を確保しつつ、ハッシュ関数回路内の削減可能な回路を削減し、安全で低回路規模のハッシュ関数回路及びその演算方法を提供することにある。
【課題を解決するための手段】
【００１７】
この発明によれば、初期鍵が入力される中間鍵生成部と、中間鍵が入力される副鍵生成部と、複数の副鍵によりそれぞれデータを非線形変換する非線形データ変換部が多段接続された暗号処理部とによりブロック暗号器が構成され、そのブロック暗号器を用いてＰＧＶ構成法により上記初期値とメッセージに基づきこのメッセージに対しハッシュ関数演算を行うハッシュ関数回路において、
上記初期鍵は各ビット値が全て同一値であり、中間鍵が初期値としてレジスタに格納され、このレジスタに格納された鍵データを第１所定ビット数又は第２所定ビット数だけ循環シフトしたいずれかの状態をシフトセレクタから取り出して上記レジスタに格納し、このレジスタ内の鍵データ又は上記初期鍵を上記副鍵とした選択して論理回路より出力し、副鍵生成部の副鍵生成アルゴリズムに従って、上記シフトセレクタに対する選択制御と上記論理回路に対する選択／出力制御とを副鍵制御部で行う。
【００１８】
この発明は、ハッシュ関数回路に利用するブロック暗号が、Camellia暗号のように弱鍵を持たないと仮定できる強い暗号である場合には、たとえ初期鍵に各ビットが全て同一値のものを用いても、生成されるハッシュ関数の強度は損なわれないことに着目し、初期鍵として各ビットが全て同一値の鍵を用いるものである。
【発明の効果】
【００１９】
この発明の構成によれば、初期鍵の各ビットが全て同一値であるため、副鍵生成部の１個のレジスタと１個のセレクタとを削減でき、しかもハッシュ関数の強度は損なわれない。
【発明を実施するための最良の形態】
【００２０】
〔第１実施形態〕
図１は、本発明のハッシュ関数回路１００の構成例を示す図である。
ハッシュ関数回路１００は、ブロック暗号器１１０とＸＯＲ（排他的論理和）回路６０から構成される。
ブロック暗号器１１０は、中間鍵生成部２０、副鍵生成部３００、暗号処理部４０から構成される。中間鍵生成部２０及び暗号処理部４０は図１１に示した従来技術と同じ構成である。そこで、図１の中で図１１と対応する部分については同一参照番号を付け、説明は省略する。その他の図面についても同様とする。
ただし、この発明においては中間鍵生成部２０に入力される初期鍵ＫＬ０はオール０又はオール１に固定されている。
以下に図１１と異なる副鍵生成部３００について説明する。
【００２１】
副鍵生成部３００は、セレクタ３１０、レジスタ３２、シフトセレクタ３３、論理回路３４０及び副鍵制御部３５０から構成される。
セレクタ３１０は、中間鍵ＫＡ０又はシフトセレクタ３３から出力された鍵データＫＡが入力され、副鍵制御部３５０から入力される制御信号により、レジスタ３２に出力する。
論理回路３４０は、鍵データＫＡ０又はＫＡが入力され、副鍵制御部３５０から入力される制御信号Ｓの論理値に応じ、ＫＡ０又はＫＡ若しくはオール０又はオール１のいずれかを副鍵として出力する。
論理回路３４０は、初期鍵ＫＬ０をオール０とする場合にはＡＮＤ回路で構成し、このＡＮＤ回路に制御信号Ｓとレジスタ３２の出力とが入力される。従って、この論理回路３４０としてのＡＮＤ回路からは、制御信号Ｓが０の時、オール０の副鍵が出力し、制御信号Ｓが１の時、ＫＡ０又はＫＡが副鍵として出力する。また、初期鍵ＫＬ０をオール１とする場合にはＯＲ回路で構成し、このＯＲ回路に制御信号Ｓとレジスタ３２の出力とが入力される。従って、この論理回路３４０としてのＯＲ回路からは、制御信号Ｓが０の時、ＫＡ０又はＫＡが副鍵として出力し、Ｓが１の時、オール１の副鍵が出力する。
副鍵制御部３５０は副鍵生成アルゴリズムに従って、セレクタ３１０、レジスタ３２、シフトセレクタ３３、論理回路３４０における入出力制御や選択制御を行う。
【００２２】
初期鍵ＫＬ０をオール０とした時の、副鍵生成アルゴリズムによる副鍵生成部３００での副鍵生成フローを図２及び図３に示す。セレクタ３１０を介して、レジスタ３２に初期鍵ＫＬ０をオール０として図１２の演算により求められた中間鍵ＫＡ０が格納される（Ｓ１）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋｗ１、ｋｗ２として出力される（Ｓ２）。論理回路３４０にＳ＝１が入力され、ＫＡ０が暗号処理部４０に副鍵ｋ１、ｋ２として出力される（Ｓ３）と共に、ＫＡ０がシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ４）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１５ビットシフトしている）（Ｓ５）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ３、ｋ４として出力される（Ｓ６）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ５、ｋ６として出力される（Ｓ７）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ８）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは３０ビットシフトしている）（Ｓ９）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋｌ１、ｋｌ２として出力される（Ｓ１０）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１１）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは４５ビットシフトしている）（Ｓ１２）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ７、ｋ８として出力される（Ｓ１３）。論理回路３４０にＳ＝１が入力され、ＫＡの上位６４ビットが暗号処理部４０に副鍵ｋ９として出力される（Ｓ１４）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１５）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは６０ビットシフトしている）（Ｓ１６）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１０として出力される（Ｓ１７）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ１１、ｋ１２として出力される（Ｓ１８）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ１９）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは７７ビットシフトしている）（Ｓ２０）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋｌ３、ｋｌ４として出力される（Ｓ２１）。ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２２）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは９４ビットシフトしている）（Ｓ２３）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１３、ｋ１４として出力される（Ｓ２４）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ１５、ｋ１６として出力される（Ｓ２５）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２６）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１１１ビットシフトしている）（Ｓ２７）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１７、ｋ１８として出力される（Ｓ２８）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋｗ３、ｋｗ４として出力され（Ｓ２９）、と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ３０）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１２８ビットシフトしている）（Ｓ３１）。最後にレジスタ３２が初期化される（Ｓ３２）。
【００２３】
なお、シフトセレクタ３３としては図１３に示したものと同様に、レジスタ３２より入力される各ビットを、例えば１５ビット左循環シフト出力端子３３ｂと１７ビット左循環シフト出力端子３３ｃとに切替えるスイッチ３３ａをそれぞれ設けたが、この各スイッチとしては１個の入力側と２個の出力側をそれぞれＭＯＳトランジスタのような半導体スイッチ素子を用いて容易に半導体集積化することができる。
【００２４】
〔第２実施形態〕
図４は、本発明の第２実施形態によるハッシュ関数回路１０１の構成例を示す図である。
ハッシュ関数回路１０１は、ブロック暗号器１１１とＸＯＲ（排他的論理和）回路６０から構成される。
ブロック暗号器１１１は、中間鍵生成部２０、副鍵生成部３０１、暗号処理部４０から構成される。副鍵生成部３０が副鍵生成部３０１に置き換わった以外は図１１に示した従来技術と同じ構成である。なお、中間鍵生成部２０で使用する初期鍵ＫＬ０はオール０又はオール１の固定値が用いられ、いずれの値を使用するかは副鍵制御部３５１からの制御信号により制御される。
【００２５】
以下に図１１と異なる副鍵生成部３０１について説明する。
副鍵生成部３０１は、セレクタ３１０、レジスタ３２、シフトセレクタ３３、論理回路３４１及び副鍵制御部３５１から構成される。
【００２６】
論理回路３４１は、例えば図５Ａのように構成される。すなわち、鍵データＫＡ０又はＫＡと第１制御信号Ｓ１とが入力されるＡＮＤ回路３４１ａと、ＡＮＤ回路３４１ａの出力と第２制御信号Ｓ２とが入力されて副鍵を出力するＯＲ回路３４１ｂとから構成される。副鍵制御部３５１から入力される制御信号Ｓ１及びＳ２の論理値に応じ、図５Ｂに示す論理値表のようにＫＡ０又はＫＡ若しくはオール０又はオール１のいずれかを副鍵として出力する。
【００２７】
副鍵制御部３５１は副鍵生成アルゴリズムに従って、セレクタ３１０、レジスタ３２、シフトセレクタ３３、論理回路３４１における入出力制御や選択制御を行う。また、中間鍵生成部２０に対し、初期鍵ＫＬ０をオール０とするかオール１とするかを選択する制御信号を出力する。
《初期鍵ＫＬ０＝オール０の場合》
初期鍵ＫＬ０＝オール０としてハッシュ関数回路１０１を使用する場合の、副鍵生成アルゴリズムによる副鍵生成部３０１での副鍵生成フローを図６及び図７に示す。副鍵制御部３５１に初期鍵ＫＬ０＝オール０とする初期鍵選択指示を入力すると、副鍵制御部３５１からの制御信号により中間鍵生成部２０の初期鍵ＫＬ０がオール０に設定される。セレクタ３１０を介して、レジスタ３２に初期鍵ＫＬ０＝オール０として図１２の演算により求められた中間鍵ＫＡ０が格納される（Ｓ１）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋｗ１、ｋｗ２として出力される（Ｓ２）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡ０が暗号処理部４０に副鍵ｋ１、ｋ２として出力される（Ｓ３）と共に、ＫＡ０がシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ４）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１５ビットシフトしている）（Ｓ５）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋ３、ｋ４として出力される（Ｓ６）。論理回路３４１に制御信号第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡが暗号処理部４０に副鍵ｋ５、ｋ６として出力される（Ｓ７）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ８）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは３０ビットシフトしている）（Ｓ９）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡが暗号処理部４０に副鍵ｋｌ１、ｋｌ２として出力される（Ｓ１０）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１１）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは４５ビットシフトしている）（Ｓ１２）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋ７、ｋ８として出力される（Ｓ１３）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡの上位６４ビットが暗号処理部４０に副鍵ｋ９として出力される（Ｓ１４）と共に、ＫＡがシフトセレクタ３３に入力されて１５ビット左循環シフトされ（Ｓ１５）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは６０ビットシフトしている）（Ｓ１６）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１０として出力される（Ｓ１７）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡが暗号処理部４０に副鍵ｋ１１、ｋ１２として出力される（Ｓ１８）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ１９）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは７７ビットシフトしている）（Ｓ２０）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋｌ３、ｋｌ４として出力される（Ｓ２１）。ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２２）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは９４ビットシフトしている）（Ｓ２３）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１３、ｋ１４として出力される（Ｓ２４）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡが暗号処理部４０に副鍵ｋ１５、ｋ１６として出力される（Ｓ２５）と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ２６）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１１１ビットシフトしている）（Ｓ２７）。論理回路３４１に第１制御信号Ｓ１＝０、第２制御信号Ｓ２＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１７、ｋ１８として出力される（Ｓ２８）。論理回路３４１に第１制御信号Ｓ１＝１、第２制御信号Ｓ２＝０が入力され、ＫＡが暗号処理部４０に副鍵ｋｗ３、ｋｗ４として出力され（Ｓ２９）、と共に、ＫＡがシフトセレクタ３３に入力されて１７ビット左循環シフトされ（Ｓ３０）、シフト後の鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１２８ビットシフトしている）（Ｓ３１）。最後にレジスタ３２が初期化される（Ｓ３２）。
《初期鍵ＫＬ０＝オール１の場合》
この場合は、副鍵としてオール１を出力する時には、第１制御信号Ｓ１が０、第２制御信号Ｓ２が１となる以外は、ＫＬ０＝オール０の場合と同様な副鍵生成アルゴリズムにより副鍵が生成される。
【００２８】
〔第３実施形態〕
図８は、本発明の第３実施形態のハッシュ関数回路１０２の構成例を示す図である。
ハッシュ関数回路１０２は、ブロック暗号器１１２とＸＯＲ（排他的論理和）回路６０から構成される。
ブロック暗号器１１２は、中間鍵生成部２０、副鍵生成部３０２、暗号処理部４０から構成される。中間鍵生成部２０及び暗号処理部４０は図１１に示した従来技術と同じ構成である。
以下に図１１と異なる副鍵生成部３０２について説明する。
【００２９】
副鍵生成部３００は、セレクタ３１０、レジスタ３２、シフトセレクタ３３０、論理回路３４０又は３４１、及び副鍵制御部３５０から構成される。
シフトセレクタ３３０は、第１シフトレジスタ３３１、第２シフトレジスタ３３２、選択回路３３３から構成される。
第１シフトレジスタ３３１は、レジスタ３２に格納された鍵データＫＡ０又はＫＡが入力され、そのデータを第１所定ビット数だけ循環シフトして格納する。
第２シフトレジスタ３３２は、レジスタ３２に格納された鍵データＫＡ０又はＫＡが入力され、そのデータを第２所定ビット数だけ循環シフトして格納する。
選択回路３３３は、副鍵制御部３５０から入力される制御信号により、第１シフトレジスタ３３１又は第２シフトレジスタ３３２のいずれかを選択し、選択したシフトレジスタに格納されたデータを出力する。
【００３０】
初期鍵ＫＬ０をオール０とし、論理回路３４０を使用した時の、副鍵生成アルゴリズムによる副鍵生成部３０２での副鍵生成フローを図９及び図１０に示す。セレクタ３１０を介して、レジスタ３２に初期鍵ＫＬ０をオール０として図１２の演算により求められた中間鍵ＫＡ０が格納される（Ｓ１）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋｗ１、ｋｗ２として出力される（Ｓ２）。論理回路３４０にＳ＝１が入力され、ＫＡ０が暗号処理部４０に副鍵ｋ１、ｋ２として出力される（Ｓ３）と共に、ＫＡ０が第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ４）、選択回路３３３で第１シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１５ビットシフトしている）（Ｓ５）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ３、ｋ４として出力される（Ｓ６）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ５、ｋ６として出力される（Ｓ７）と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ８）、選択回路３３３で第１シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは３０ビットシフトしている）（Ｓ９）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋｌ１、ｋｌ２として出力される（Ｓ１０）と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ１１）、選択回路３３３で第１シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは４５ビットシフトしている）（Ｓ１２）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ７、ｋ８として出力される（Ｓ１３）。論理回路３４０にＳ＝１が入力され、ＫＡの上位６４ビットが暗号処理部４０に副鍵ｋ９として出力される（Ｓ１４）と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ１５）、選択回路３３３で第１シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは６０ビットシフトしている）（Ｓ１６）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１０として出力される（Ｓ１７）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ１１、ｋ１２として出力される（Ｓ１８）と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ１９）、選択回路３３３で第２シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは７７ビットシフトしている）（Ｓ２０）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋｌ３、ｋｌ４として出力される（Ｓ２１）。ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ２２）、選択回路３３３で第２シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは９４ビットシフトしている）（Ｓ２３）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１３、ｋ１４として出力される（Ｓ２４）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋ１５、ｋ１６として出力される（Ｓ２５）と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ２６）、選択回路３３３で第２シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１１１ビットシフトしている）（Ｓ２７）。論理回路３４０にＳ＝０が入力され、オール０が暗号処理部４０に副鍵ｋ１７、ｋ１８として出力される（Ｓ２８）。論理回路３４０にＳ＝１が入力され、ＫＡが暗号処理部４０に副鍵ｋｗ３、ｋｗ４として出力され（Ｓ２９）、と共に、ＫＡが第１シフトレジスタ及び第２シフトレジスタに入力され、それぞれ１５ビット、１７ビット左循環シフトし（Ｓ３０）、選択回路３３３で第２シフトレジスタが選択され、格納されている鍵データＫＡがセレクタ３１０を介してレジスタ３２に上書き格納される（ＫＡは１２８ビットシフトしている）（Ｓ３１）。最後にレジスタ３２が初期化される（Ｓ３２）。
【００３１】
ハッシュ関数回路１００〜１０２としては、実施形態に示した構成に限らず、非特許文献２に示されているように、ブロック暗号器を用いてＰＧＶ構成法により回路を構成した各種のハッシュ関数回路にもこの発明を適用することができる。
【００３２】
初期鍵ＫＬ０の各ビットを全て同一値とすることで、図１１に示す従来技術において必要であったＫＬ用のレジスタ３６が不要となり、それに伴いセレクタ３７も不要となる。代わりに論理回路３４０又は３４１が追加されるが、固定値を対象とするものであり簡単な構成で実現できるため、全体として回路規模を大幅に縮小することができる。
【図面の簡単な説明】
【００３３】
【図１】本発明によるハッシュ関数回路の第１実施形態の構成図。
【図２】本発明によるハッシュ関数回路の第１実施形態における副鍵生成フロー図（前半）。
【図３】本発明によるハッシュ関数回路の第１実施形態における副鍵生成フロー図（後半）。
【図４】本発明によるハッシュ関数回路の第２実施形態の構成図。
【図５】本発明によるハッシュ関数回路の第２実施形態における論理回路の例を示す構成図。
【図６】本発明によるハッシュ関数回路の第２実施形態における副鍵生成フロー図（前半）。
【図７】本発明によるハッシュ関数回路の第２実施形態における副鍵生成フロー図（後半）。
【図８】本発明によるハッシュ関数回路の第３実施形態の構成図。
【図９】本発明によるハッシュ関数回路の第３実施形態における副鍵生成フロー図（前半）。
【図１０】本発明によるハッシュ関数回路の第３実施形態における副鍵生成フロー図（後半）。
【図１１】従来技術のハッシュ関数回路例を示す構成図。
【図１２】図１１中の中間鍵生成部２０の例を示す構成図。
【図１３】図１１中の従来技術におけるシフトセレクタ３３の構成図。
【図１４】副鍵生成部３０において生成される副鍵の一覧を示す図。
【図１５】従来技術における副鍵生成フロー図（前半）。
【図１６】従来技術における副鍵生成フロー図（後半）。
【図１７】図１１中の暗号処理部４０の例を示す構成図。
【図１】
2008052130.tif 000003
【図２】
2008052130.tif 000004
【図３】
2008052130.tif 000005
【図４】
2008052130.tif 000006
【図５】
2008052130.tif 000007
【図６】
2008052130.tif 000008
【図７】
2008052130.tif 000009
【図８】
2008052130.tif 000010
【図９】
2008052130.tif 000011
【図１０】
2008052130.tif 000012
【図１１】
2008052130.tif 000013
【図１２】
2008052130.tif 000014
【図１３】
2008052130.tif 000015
【図１４】
2008052130.tif 000016
【図１５】
2008052130.tif 000017
【図１６】
2008052130.tif 000018
【図１７】
2008052130.tif 000019