(57)【特許請求の範囲】
【請求項１】
Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置であって、
メッセージデータを入力するメッセージデータ入力部と、
前ラウンドのハッシュ値を入力するハッシュ値入力部と、
該メッセージデータ入力部から入力したメッセージデータと該ハッシュ値入力部から入力した前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成するストリーム暗号化手段と、
該生成されたストリーム暗号と入力したメッセージデータおよび前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する論理回路と、
を備えたことを特徴とするハッシュ関数処理装置。
【請求項２】
メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−Ｔ）／Ｎ回実行することを特徴とする請求項１に記載のハッシュ関数処理装置。
【請求項３】
２Ｎビットのメッセージデータを入力し、２Ｎビットのハッシュ値を出力するハッシュ関数処理装置であって、
前記請求項１に記載のハッシュ関数処理装置の前記ハッシュ値入力部に第１の加算器を備えた第１のハッシュ関数処理装置と、前記請求項１に記載のハッシュ関数処理装置の前記論理回路の出力端に第２の加算器を備えた第２のハッシュ関数処理装置とからなり、
前記第１の加算器が前記第１のハッシュ関数処理装置における前ラウンドのハッシュ値と前記第２のハッシュ関数処理装置における前ラウンドのハッシュ値とを加算するとともに、
前記第２の加算器が前記第１のハッシュ関数処理装置における前ラウンドのハッシュ値と前記第２のハッシュ関数処理装置における前記論理回路から出力されるハッシュ値とを加算することを特徴とするハッシュ関数処理装置。
【請求項４】
メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−２Ｔ）／２Ｎ回実行することを特徴とする請求項３に記載のハッシュ関数処理装置。
【請求項５】
ＭＮビットのメッセージデータを入力し、ＭＮビットのハッシュ値を出力するハッシュ関数処理装置であって、
前記請求項１記載のハッシュ関数処理装置の前記ハッシュ値入力部に第１の加算器を備えるとともに、前記論理回路の出力端に第２の加算器を備えたハッシュ関数処理装置をＭ個並列接続してなり、
各ハッシュ値入力部に備えられた第１の加算器により加算される前ラウンドのハッシュ値が前記各ハッシュ値入力部に入力される前ラウンドのハッシュ値を含む任意の前ラウンドのハッシュ値からなる異なった組み合わせの前ラウンドのハッシュ値であり、各論理回路の出力端に設けられた加算器に入力される前ラウンドのハッシュ値が前記ハッシュ値入力部に設けられた前記第１の加算器に入力される前ラウンドのハッシュ値以外の前ラウンドのハッシュ値であることを特徴とするハッシュ関数処理装置。
【請求項６】
メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−ＴＭ）／ＮＭ回実行することを特徴とする請求項５に記載のハッシュ関数処理装置。
【請求項７】
Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置におけるハッシュ関数の生成方法であって、
メッセージデータ入力部によりメッセージデータを入力する第１のステップと、
ハッシュ値入力部により前ラウンドのハッシュ値を入力する第２のステップと、
ストリーム暗号化手段により入力したメッセージデータと前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する第３のステップと、
論理回路により該生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する第４のステップと、
を備えたことを特徴とするハッシュ関数の生成方法。
【請求項８】
Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置におけるハッシュ関数の生成方法をコンピュータに実行させるプログラムであって、
メッセージデータ入力部によりメッセージデータを入力する第１のステップと、
ハッシュ値入力部により前ラウンドのハッシュ値を入力する第２のステップと、
ストリーム暗号化手段により入力したメッセージデータと前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する第３のステップと、
論理回路により該生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する第４のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号装置に用いられるハッシュ関数処理装置、同装置におけるハッシュ関数生成方法およびプログラムに関する。
【背景技術】
【０００２】
近年、ＩＴ技術の目覚ましい進歩により、パーソナルコンピュータをはじめとする端末が広く普及しており、これに伴って、パーソナルコンピュータをはじめとする端末を利用した様々なサービスが提供されている。こうして提供されるサービスの多くは、任意長のデータのダイジェスト（固定長のデータ）を作成するダイジェストアルゴリズムとして、ハッシュ関数が使用されている。
【０００３】
ハッシュ関数は、１方向性の関数処理であり、変換された結果であるメッセージダイジェストは逆変換が極めて困難であるという特徴を有し、ＭＤ５やＳＨＡ−１をはじめとするいくつかのハッシュ関数が知られている（例えば、特許文献１参照。）。
【特許文献１】特開２００４−５３７１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところが、現在使用されているハッシュ関数の多くは、独自に生成されたものであり、計算時間は短いが安全性に問題があると指摘されている。これに対して、ブロック符号を用いたハッシュ関数も提案されているが、この場合も、安全性は高いものの、計算時間が長いという問題が指摘されている。
【０００５】
そこで、本発明は、上述の課題に鑑みてなされたものであり、計算時間の短く、安全性の高いハッシュ関数処理装置、同装置におけるハッシュ関数生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置であって、メッセージデータを入力するメッセージデータ入力部と、前ラウンドのハッシュ値を入力するハッシュ値入力部と、該メッセージデータ入力部から入力したメッセージデータと該ハッシュ値入力部から入力した前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成するストリーム暗号化手段（例えば、図１のストリーム暗号部１に相当）と、該生成されたストリーム暗号と入力したメッセージデータおよび前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する論理回路（例えば、図１のＸＯＲ２に相当）と、を備えたことを特徴とするハッシュ関数処理装置を提案している。
【０００７】
この発明によれば、ストリーム暗号化手段が、入力したメッセージデータと入力した前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成し、論理回路が生成されたストリーム暗号と入力したメッセージデータおよび前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する。
したがって、本発明によれば、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。なお、ここで、ストリーム暗号は、特定のストリーム暗号である必要はない。
【０００８】
（２）本発明は、（１）に記載のハッシュ関数処理装置において、メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−Ｔ）／Ｎ回実行することを特徴とするハッシュ関数処理装置を提案している。
【０００９】
この発明によれば、ストリーム暗号化手段および論理回路における処理を（Ｌ−Ｔ）／Ｎ回実行する。これにより、安全性をより確保するために必要なサイクル数を確保できる。
【００１０】
（３）本発明は、２Ｎビットのメッセージデータを入力し、２Ｎビットのハッシュ値を出力するハッシュ関数処理装置であって、前記請求項１に記載のハッシュ関数処理装置の前記ハッシュ値入力部に第１の加算器（例えば、図２の加算器１２ａに相当）を備えた第１のハッシュ関数処理装置と、前記請求項１に記載のハッシュ関数処理装置の前記論理回路の出力端に第２の加算器（例えば、図２の加算器１２ｂに相当）を備えた第２のハッシュ関数処理装置とからなり、前記第１の加算器が前記第１のハッシュ関数処理装置における前ラウンドのハッシュ値と前記第２のハッシュ関数処理装置における前ラウンドのハッシュ値とを加算するとともに、前記第２の加算器が前記第１のハッシュ関数処理装置における前ラウンドのハッシュ値と前記第２のハッシュ関数処理装置における前記論理回路から出力されるハッシュ値とを加算することを特徴とするハッシュ関数処理装置を提案している。
【００１１】
この発明によれば、請求項１に記載のハッシュ関数処理装置のハッシュ値入力部に第１の加算器を備えた第１のハッシュ関数処理装置と、請求項１に記載のハッシュ関数処理装置の論理回路の出力端に第２の加算器を備えた第２のハッシュ関数処理装置とからなり、第１の加算器が第１のハッシュ関数処理装置における前ラウンドのハッシュ値と第２のハッシュ関数処理装置における前ラウンドのハッシュ値とを加算するとともに、第２の加算器が第１のハッシュ関数処理装置における前ラウンドのハッシュ値と第２のハッシュ関数処理装置における論理回路から出力されるハッシュ値とを加算する。
したがって、上記の構成により、それぞれのハッシュ関数処理装置から異なった値のハッシュ値を出力できるため、２Ｎビットのメッセージデータについて、２Ｎビットのハッシュ値を出力することができる。また、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。
【００１２】
（４）本発明は、（３）に記載のハッシュ関数処理装置について、メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−２Ｔ）／２Ｎ回実行することを特徴とするハッシュ関数処理装置を提案している。
【００１３】
この発明によれば、ストリーム暗号化手段および論理回路における処理を（Ｌ−２Ｔ）／２Ｎ回実行する。これにより、安全性をより確保するために必要なサイクル数を確保できる。
【００１４】
（５）本発明は、ＭＮビットのメッセージデータを入力し、ＭＮビットのハッシュ値を出力するハッシュ関数処理装置であって、前記請求項１記載のハッシュ関数処理装置の前記ハッシュ値入力部に第１の加算器（例えば、図３の加算器２２ａ、２２ｂ、２２ｃに相当）を備えるとともに、前記論理回路の出力端に第２の加算器（例えば、図３の加算器２２ｄ、２２ｅ、２２ｆに相当）を備えたハッシュ関数処理装置をＭ個並列接続してなり、各ハッシュ値入力部に備えられた第１の加算器により加算される前ラウンドのハッシュ値が前記各ハッシュ値入力部に入力される前ラウンドのハッシュ値を含む任意の前ラウンドのハッシュ値からなる異なった組み合わせの前ラウンドのハッシュ値であり、各論理回路の出力端に設けられた加算器に入力される前ラウンドのハッシュ値が前記ハッシュ値入力部に設けられた前記第１の加算器に入力される前ラウンドのハッシュ値以外の前ラウンドのハッシュ値であることを特徴とするハッシュ関数処理装置を提案している。
【００１５】
この発明によれば、請求項１記載のハッシュ関数処理装置のハッシュ値入力部に第１の加算器を備えるとともに、論理回路の出力端に第２の加算器を備えたハッシュ関数処理装置をＭ個並列接続してなり、各ハッシュ値入力部に備えられた第１の加算器により加算される前ラウンドのハッシュ値が各ハッシュ値入力部に入力される前ラウンドのハッシュ値を含む任意の前ラウンドのハッシュ値からなる異なった組み合わせの前ラウンドのハッシュ値であり、各論理回路の出力端に設けられた加算器に入力される前ラウンドのハッシュ値がハッシュ値入力部に設けられた第１の加算器に入力される前ラウンドのハッシュ値以外の前ラウンドのハッシュ値であることから、それぞれのハッシュ関数処理装置から異なった値のハッシュ値を出力することにより、ＭＮビットのメッセージデータについて、ＭＮビットのハッシュ値を出力することができる。また、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。
【００１６】
（６）本発明は、（５）に記載のハッシュ関数処理装置について、メッセージデータのデータ長をＬ、前記ストリーム暗号化手段内の内部状態の長さをＴ、前記ストリーム暗号化手段の出力ビット数をＮビットとしたときに、前記ストリーム暗号化手段および前記論理回路における処理を（Ｌ−ＴＭ）／ＮＭ回実行することを特徴とするハッシュ関数処理装置を提案している。
【００１７】
この発明によれば、ストリーム暗号化手段および論理回路における処理を（Ｌ−ＴＭ）／ＮＭ回実行する。これにより、安全性をより確保するために必要なサイクル数を確保できる。
【００１８】
（７）本発明は、Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置におけるハッシュ関数の生成方法であって、メッセージデータ入力部によりメッセージデータを入力する第１のステップと、ハッシュ値入力部により前ラウンドのハッシュ値を入力する第２のステップと、ストリーム暗号化手段により入力したメッセージデータと前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する第３のステップと、論理回路により該生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する第４のステップと、を備えたことを特徴とするハッシュ関数の生成方法を提案している。
【００１９】
この発明によれば、メッセージデータを入力し、前ラウンドのハッシュ値を入力し、入力したメッセージデータと前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する。そして、生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する。
したがって、本発明によれば、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。
【００２０】
（８）本発明は、Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するハッシュ関数処理装置におけるハッシュ関数の生成方法をコンピュータに実行させるプログラムであって、メッセージデータ入力部によりメッセージデータを入力する第１のステップと、ハッシュ値入力部により前ラウンドのハッシュ値を入力する第２のステップと、ストリーム暗号化手段により入力したメッセージデータと前記前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する第３のステップと、論理回路により該生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力する第４のステップと、をコンピュータに実行させるためのプログラムを提案している。
【００２１】
この発明によれば、コンピュータがメッセージデータを入力し、前ラウンドのハッシュ値を入力し、入力したメッセージデータと前ラウンドのハッシュ値とに基づいて、ストリーム暗号を生成する。そして、生成されたストリーム暗号と入力したメッセージデータと前ラウンドのハッシュ値との排他的論理和を求めてハッシュ値を出力するプログラムを実行する。
したがって、本発明によれば、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。
【発明の効果】
【００２２】
本発明によれば、暗号化手段としてストリーム暗号を用いたことから、従来よりも処理速度を向上させることができるという効果がある。
また、一連の処理について、安全性を確保するに十分なサイクル数を実施することから、高い安全性が確保できるという効果がある。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態について、図１から図５を用いて詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００２４】
＜第１の実施形態＞
本実施形態に係るハッシュ関数処理装置は、Ｎビットのメッセージデータを入力し、Ｎビットのハッシュ値を出力するものであり、その構成は、図１に示すように、ストリーム暗号部１と、ＸＯＲ２とからなり、ストリーム暗号部１には、メッセージデータ入力部と前ラウンドのハッシュ値を入力するハッシュ値入力部を備えている。
【００２５】
ストリーム暗号部１は、Ｎビットのメッセージデータと前ラウンドのハッシュ値とを入力し、ストリーム暗号による暗号化を実施する。なお、最初のラウンドでは、前ラウンドのハッシュ値が存在しないため、任意の初期ベクトルを使用する。
【００２６】
ＸＯＲ２は、ストリーム暗号部１の出力データとメッセージデータ、前ラウンドのハッシュ値の排他的論理和を演算し、出力する。これにより、Ｎビットのハッシュ値が出力されることになる。
【００２７】
次に、図４を用いて、本実施形態に係るハッシュ関数処理装置の処理について説明する。なお、説明の前提として、メッセージ長をＬ、ストリーム暗号部の内部状態の長さをＴ、ハッシュ出力をＮビットとする。
【００２８】
ストリーム暗号部１の内部状態へハッシュ値を計算したいメッセージ長ＬのメッセージをＭ＿ｉとして先頭から入力する（ステップＳ１０１）。このとき、メッセージがＮビットに満たない場合には、例えば、１０１０１０・・・等を付け加えるパディング処理を行うことにより、入力メッセージデータをＮビットとする。
【００２９】
次に、初回のラウンドにおいては、前ラウンドのハッシュ値が存在しないため、例えば、１００１・・・等の任意の初期ベクトルをＨ＿ｉ−１として入力する（ステップＳ１０２）。ストリーム暗号部は、入力したＭ＿ｉとＨ＿ｉ−１に基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。
【００３０】
次に、ストリーム暗号部１の出力と入力メッセージＭ＿ｉ、任意の初期ベクトルＨ＿ｉ−１がＸＯＲ２に入力されると、これらの排他的論理和がとられハッシュ値Ｈ＿ｉが出力される（ステップＳ１０３）。そして、次のメッセージＭ＿ｉと前ラウンドのハッシュ値Ｈ＿ｉ−１とが順次、ストリーム暗号部１に入力され、ハッシュ値Ｈ＿ｉが出力される（ステップＳ１０４）。
【００３１】
こうした処理を（Ｌ−Ｔ）／Ｎ回実行して、最終的なハッシュ値を得て、その値をメッセージのハッシュ値とする（ステップＳ１０５）。なお、処理回数が（Ｌ−Ｔ）／Ｎ回に満たない場合には、例えば、１０１０１０・・・等の固定メッセージを入力して、空回しを行うことにより、十分な安全性を確保する。
【００３２】
したがって、本実施形態によれば、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。また、上記の処理を規定した（Ｌ−Ｔ）／Ｎ回実行することにより、十分な安全性も確保することができる。
【００３３】
＜第２の実施形態＞
本実施形態に係るハッシュ関数処理装置は、２Ｎビットのメッセージデータを入力し、２Ｎビットのハッシュ値を出力するものであり、その構成は、図２に示すように、２つのストリーム暗号部１１ａ、１１ｂと、２つのＸＯＲ１３ａ、１３ｂと、２つの加算器１２ａ、１２ｂとからなり、ストリーム暗号部１１ａ、１１ｂには、メッセージデータ入力部と前ラウンドのハッシュ値を入力するハッシュ値入力部を備えている。なお、ストリーム暗号部１１ａ、１１ｂおよびＸＯＲ１３ａ、１３ｂの機能は、第１の実施形態と同様であるため、詳細な説明は省略する。
【００３４】
加算器１２ａは、前ラウンドのハッシュ値Ｈ＿ｉ−１とＧ＿ｉ−１とを加算して、ストリーム暗号部１１ａに入力するものであり、加算器１２ｂは、ストリーム暗号部１１ｂの出力と、メッセージデータＭ＿ｉ＿１と前ラウンドのハッシュ値Ｇ＿ｉ−１との排他的論理和に前ラウンドのハッシュ値Ｈ＿ｉ−１を加算してハッシュ値を出力するものである。
【００３５】
本実施形態に係るハッシュ関数処理装置の処理は、まず、ストリーム暗号部１１ａ、１１ｂの内部状態へハッシュ値を計算したいメッセージ長ＬのメッセージをＭ＿ｉ＿１、Ｍ＿ｉ＿２として先頭から入力する。このとき、残りのメッセージがある場合には、例えば、１０１０１０・・・等を付け加えるパディング処理を行うことにより、２Ｎで割り切れるようにしておく。
【００３６】
次に、初回のラウンドにおいては、前ラウンドのハッシュ値が存在しないため、例えば、１００１・・・等の任意の初期ベクトルをＨ＿ｉ−１、Ｇ＿ｉ−１として入力する。ストリーム暗号部１１ａは、加算器１２ａにおいて加算されたＨ＿ｉ−１＋Ｇ＿ｉ−１とＭ＿ｉ＿２に基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。一方、ストリーム暗号部１１ｂは、Ｇ＿ｉ−１とＭ＿ｉ＿１とに基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。
【００３７】
次に、ストリーム暗号部１１ａの出力と入力メッセージＭ＿ｉ＿２および加算器１２ａにおいて加算されたＨ＿ｉ−１＋Ｇ＿ｉ−１がＸＯＲ１３ａに入力されると、これらの排他的論理和がとられハッシュ値Ｈ＿ｉが出力される。一方、ストリーム暗号部１１ｂの出力と入力メッセージＭ＿ｉ＿１、任意の初期ベクトルＧ＿ｉ−１がＸＯＲ１３ｂに入力されると、これらの排他的論理和がとられハッシュ値Ｇ＿ｉが出力される。そして、次のメッセージＭ＿ｉ＿１、Ｍ＿ｉ＿２と前ラウンドのハッシュ値Ｈ＿ｉ−１、Ｇ＿ｉ−１とが順次、入力され、ハッシュ値Ｈ＿ｉ、Ｇ＿ｉが出力される。
【００３８】
こうした処理を（Ｌ−２Ｔ）／２Ｎ回実行して、最終的なハッシュ値を得て、その値をメッセージのハッシュ値とする。なお、処理回数が（Ｌ−２Ｔ）／２Ｎ回に満たない場合には、例えば、１０１０１０・・・等の固定メッセージを入力して、空回しを行うことにより、十分な安全性を確保する。
【００３９】
したがって、本実施形態によれば、第１の実施形態におけるハッシュ関数処理装置を２つ並列接続することにより、２Ｎビットのハッシュ値を得ることができる。また、上述のように、２つの加算器を設けることにより、それぞれ異なったハッシュ値を得ることができる。
【００４０】
＜第３の実施形態＞
本実施形態に係るハッシュ関数処理装置は、３Ｎビットのメッセージデータを入力し、３Ｎビットのハッシュ値を出力するものであり、その構成は、図３に示すように、３つのストリーム暗号部２１ａ、２１ｂ、２１ｃと、３つのＸＯＲ２３ａ、２３ｂ、２３ｃと、６つの加算器２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ、２２ｆとからなり、ストリーム暗号部２１ａ、２１ｂ、２１ｃには、メッセージデータ入力部と前ラウンドのハッシュ値を入力するハッシュ値入力部を備えている。なお、ストリーム暗号部２１ａ、２１ｂ、２１ｃおよびＸＯＲ２３ａ、２３ｂ、２３ｃの機能は、第１の実施形態と同様であるため、詳細な説明は省略する。
【００４１】
加算器２２ａは、前ラウンドのハッシュ値Ｈ＿ｉ−１とＧ＿ｉ−１とを加算して、ストリーム暗号部２１ａに入力するものであり、加算器２２ｂは、前ラウンドのハッシュ値Ｇ＿ｉ−１とＦ＿ｉ−１とを加算して、ストリーム暗号部２１ｂに入力するものであり、加算器２２ｃは、前ラウンドのハッシュ値Ｈ＿ｉ−１とＦ＿ｉ−１とを加算して、ストリーム暗号部２１ｃに入力するものである。
【００４２】
また、加算器２２ｄは、ストリーム暗号部２１ａの出力と、メッセージデータＭ＿ｉ＿３と前ラウンドのハッシュ値Ｈ＿ｉ−１との排他的論理和に前ラウンドのハッシュ値Ｆ＿ｉ−１を加算してハッシュ値を出力するものであり、加算器２２ｅは、ストリーム暗号部２１ｂの出力と、メッセージデータＭ＿ｉ＿２と前ラウンドのハッシュ値Ｇ＿ｉ−１との排他的論理和に前ラウンドのハッシュ値Ｈ＿ｉ−１を加算してハッシュ値を出力するものであり、加算器２２ｆは、ストリーム暗号部２１ｃの出力と、メッセージデータＭ＿ｉ＿１と前ラウンドのハッシュ値Ｆ＿ｉ−１との排他的論理和に前ラウンドのハッシュ値Ｇ＿ｉ−１を加算してハッシュ値を出力するものである。
【００４３】
本実施形態に係るハッシュ関数処理装置の処理は、まず、ストリーム暗号部２１ａ、２１ｂ、２１ｃの内部状態へハッシュ値を計算したいメッセージ長ＬのメッセージをＭ＿ｉ＿１、Ｍ＿ｉ＿２、Ｍ＿ｉ＿３として先頭から入力する。このとき、残りのメッセージがある場合には、例えば、１０１０１０・・・等を付け加えるパディング処理を行うことにより、３Ｎで割り切れるようにしておく。
【００４４】
次に、初回のラウンドにおいては、前ラウンドのハッシュ値が存在しないため、例えば、１００１・・・等の任意の初期ベクトルをＨ＿ｉ−１、Ｇ＿ｉ−１、Ｆ＿ｉ−１として入力する。ストリーム暗号部２１ａは、加算器２２ａにおいて加算されたＨ＿ｉ−１＋Ｇ＿ｉ−１とＭ＿ｉ＿３に基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。また、ストリーム暗号部２１ｂは、加算器２２ｂにおいて加算されたＧ＿ｉ−１＋Ｆ＿ｉ−１とＭ＿ｉ＿２とに基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。また、ストリーム暗号部２１ｃは、加算器２２ｃにおいて加算されたＦ＿ｉ−１＋Ｈ＿ｉ−１とＭ＿ｉ＿１とに基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。
【００４５】
次に、ストリーム暗号部２１ａの出力と入力メッセージＭ＿ｉ＿３および加算器２２ａにおいて加算されたＨ＿ｉ−１＋Ｇ＿ｉ−１がＸＯＲ２３ａに入力されると、これらの排他的論理和がとられハッシュ値Ｈ＿ｉが出力される。また、ストリーム暗号部２１ｂの出力と入力メッセージＭ＿ｉ＿２および加算器２２ｂにおいて加算されたＧ＿ｉ−１＋Ｆ＿ｉ−１がＸＯＲ２３ｂに入力されると、これらの排他的論理和がとられハッシュ値Ｇ＿ｉが出力される。また、ストリーム暗号部２１ｃの出力と入力メッセージＭ＿ｉ＿１および加算器２２ｃにおいて加算されたＦ＿ｉ−１＋Ｈ＿ｉ−１がＸＯＲ２３ｃに入力されると、これらの排他的論理和がとられハッシュ値Ｆ＿ｉが出力される。そして、次のメッセージＭ＿ｉ＿１、Ｍ＿ｉ＿２、Ｍ＿ｉ＿３と前ラウンドのハッシュ値Ｈ＿ｉ−１、Ｇ＿ｉ−１、Ｆ＿ｉ−１とが順次、入力され、ハッシュ値Ｈ＿ｉ、Ｇ＿ｉ、Ｆ＿ｉが出力される。
【００４６】
こうした処理を（Ｌ−３Ｔ）／３Ｎ回実行して、最終的なハッシュ値を得て、その値をメッセージのハッシュ値とする。なお、処理回数が（Ｌ−３Ｔ）／３Ｎ回に満たない場合には、例えば、１０１０１０・・・等の固定メッセージを入力して、空回しを行うことにより、十分な安全性を確保する。
【００４７】
したがって、本実施形態によれば、第１の実施形態におけるハッシュ関数処理装置を３つ並列接続することにより、３Ｎビットのハッシュ値を得ることができる。また、上述のように、６つの加算器を設けることにより、それぞれ異なったハッシュ値を得ることができる。
【００４８】
＜応用例＞
本応用例に係るハッシュ関数処理装置は、ＭＮビットのメッセージデータを入力し、ＭＮビットのハッシュ値を出力するものであり、その構成は、図３と同様に、第１の実施形態に係るハッシュ関数処理装置をＭ個並列接続したものとなる。
【００４９】
本応用例に係るハッシュ関数処理装置の処理動作を図５を用いて説明すると、まず、各ストリーム暗号部の内部状態へハッシュ値を計算したいメッセージを先頭から入力する（ステップＳ２０１）。なお、残ったメッセージについては、１０１０１０・・・等を付け加えるパディング処理を行うことにより、Ｎ×Ｍビットで割り切れるようにしておく。
【００５０】
次に、初回のラウンドにおいては、前ラウンドのハッシュ値が存在しないため、Ｎ×Ｍビットのある初期ベクトルを使用し、これを入力して、Ｎ×Ｍビットの出力ハッシュ値を得る（ステップＳ２０２）。
【００５１】
さらに、第１ラウンドの出力ハッシュ値と次のＮ×Ｍビットのメッセージを入力して、Ｎ×Ｍビットの出力ハッシュ値を得る（ステップＳ２０３）。そして、この処理を（Ｌ−ＴＭ）／ＮＭ回繰り返して、最終的な出力ハッシュ値を得て、その値をメッセージのハッシュ値とする（ステップＳ２０４）。なお、（Ｌ−ＴＭ）／ＮＭ回が規定の回数に満たない場合には、例えば、１０１０１０・・・等の固定メッセージを入力して空回しを行うことにより安全性を確保する。
【００５２】
したがって、本実施形態によれば、第１の実施形態におけるハッシュ関数処理装置をＭ個並列接続することにより、ＭＮビットのハッシュ値を得るハッシュ関数処理装置を構成することができる。また、上述のように、２Ｍ個の加算器を設けることにより、それぞれ異なったハッシュ値を得ることができる。
【００５３】
なお、上記の処理内容を記述したプログラムをコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムを実行することによって本発明のハッシュ関数処理装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００５４】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００５５】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００５６】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００５７】
【図１】第１の実施形態に係るハッシュ関数処理装置の構成を示す図である。
【図２】第２の実施形態に係るハッシュ関数処理装置の構成を示す図である。
【図３】第３の実施形態に係るハッシュ関数処理装置の構成を示す図である。
【図４】第１の実施形態に係るハッシュ関数処理装置の処理フロー図である。
【図５】応用例に係るハッシュ関数処理装置の処理フロー図である。
【符号の説明】
【００５８】
１、１１ａ、１１ｂ、２１ａ、２１ｂ、２１ｃ・・・ストリーム暗号部、２、１３ａ、１３ｂ、２３ａ、２３ｂ、２３ｃ・・・ＸＯＲ、１２ａ、１２ｂ、２２ａ、２２ｂ、２２ｃ、２２ｄ、２２ｅ、２２ｆ・・・加算器
【図１】
0004842694.tif 000002
【図２】
0004842694.tif 000003
【図３】
0004842694.tif 000004
【図４】
0004842694.tif 000005
【図５】
0004842694.tif 000006