説明

ハッシュ値生成装置、ハッシュ値生成方法およびプログラム

【課題】入力メッセージを複数のメッセージブロックに分割するとともに、前のラウンドのハッシュ値をフィードバックする際とメッセージブロックをフィードフォワードする場合に、フィードバックとフィードフォワードを動的に変化させる。
【解決手段】メッセージ分割手段は、入力メッセージを複数のメッセージブロックに分割し、入力手段は、その分割された入力メッセージブロックと前ラウンドで得られたハッシュ値とを入力する。そして、暗号化手段は、その入力したメッセージを暗号化して、ハッシュ値を生成し、出力手段は、そのハッシュ値を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ハッシュ値生成装置、ハッシュ値生成方法およびプログラムに関する。
【背景技術】
【0002】
近年、情報セキュリティの重要性が高まるにつれ、ICカードやRFIDタグ等でも利用可能な安全な暗号学的ハッシュ関数が重要となっている。現在、最もよく使われているハッシュ関数としてMD5(例えば、非特許文献1参照。)やSHA−1(例えば、非特許文献2参照。)がある。
【0003】
しかし、MD5は安全性に問題があることが指摘されている。また、SHA−1はMD5に比べて安全であるものの、演算量が大きく、RFIDタグやICカード等の処理能力の低い機器では処理に時間がかかるという問題がある。
【0004】
一方で、近年、CPUのマルチコアが一般的になってきている。ところが、現在、複数コアを同時に利用することで高速化を可能とするようなハッシュ関数はほとんど提案されていない。
【0005】
ところで、RFIDタグ等でも高速に処理が可能な手法として特許文献1に示されるようにストリーム暗号を基にしたハッシュ関数が知られている。さらに、特許文献1の方法では、メッセージをMNビット、ハッシュ値をMNビットとした時、Nビットのハッシュ値を生成するハッシュ関数をM個並列に接続することで処理回数を約1/Mに削減した手法が提案されている。この手法では前ブロックのハッシュ値をフィードバックする手法と前ブロックのハッシュ値をフィードフォワードする手法が提案されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2007−293147号公報
【非特許文献】
【0007】
【非特許文献1】R.Rivest,“The MD5 Message Digest Algorithm,” RFC1321, 1992.
【非特許文献2】NIST,“Secure Hash Standard,” FIPS180−1,1995.
【発明の概要】
【発明が解決しようとする課題】
【0008】
しかしながら、特許文献1に示される手法では、フィードフォワードとフィードバックする先が予め固定されており、ハッシュ値の計算途中で変更することはできない。つまり、フィードフォワードとフィードバックする先を能動的に変化させる場合に比べて、攪拌効率が低くなるという問題がある。
【0009】
そこで、本発明は、上述の課題に鑑みてなされたものであり、入力メッセージを複数のメッセージブロックに分割するとともに、前のラウンドのハッシュ値をフィードバックする際とメッセージブロックをフィードフォワードする場合に、フィードバックとフィードフォワードを動的に変化させるハッシュ値生成装置、ハッシュ値生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、上記の課題を解決するために、以下の事項を提案している。
【0011】
(1)本発明は、入力メッセージを複数のメッセージブロックに分割するメッセージ分割手段(例えば、図1のメッセージ分割部2に相当)と、該分割された入力メッセージブロックと前ラウンドで得られたハッシュ値とを入力する入力手段(例えば、図1のメッセージ入力部3a、3bに相当)と、該入力したメッセージを暗号化して、ハッシュ値を生成する暗号化手段(例えば、図1の暗号化部6a、6bに相当)と、該ハッシュ値を出力する出力手段と、を備えることを特徴とするハッシュ値生成装を提案している。
【0012】
この発明によれば、メッセージ分割手段は、入力メッセージを複数のメッセージブロックに分割する。入力手段は、その分割された入力メッセージブロックと前ラウンドで得られたハッシュ値とを入力する。暗号化手段は、その入力したメッセージを暗号化して、ハッシュ値を生成する。そして、出力手段は、そのハッシュ値を出力する。したがって、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となる。
【0013】
(2)本発明は、(1)のハッシュ値生成装置について、前記暗号化手段の出力に演算手段を有し、前記入力手段と暗号化手段と演算手段とがn(nは、2以上の整数)段並列になって構成され、前記暗号化手段が出力する前記ハッシュ値を入力し、該ハッシュ値を前記入力手段に戻すフィードバック手段(例えば、図1のフィードバック部5に相当)と、前記入力手段からの出力されるメッセージを入力し、該メッセージを前記演算手段に出力するフィードフォワード手段(例えば、図1のフィードフォワード部4に相当)と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【0014】
この発明によれば、暗号化手段の出力に演算手段を有し、入力手段と暗号化手段と演算手段とがn(nは、2以上の整数)段並列になって構成されている。また、フィードバック手段は、暗号化手段が出力するハッシュ値を入力し、そのハッシュ値を入力手段に戻し、フィードフォワード手段は、入力手段からの出力されるメッセージを入力し、そのメッセージを演算手段に出力する。したがって、n段の並列構成により、並列して処理を行うことができるため、高速に処理が可能となる。
【0015】
(3)本発明は、(1)または(2)のハッシュ値生成装置について、入力メッセージが前記並列段数と前記暗号化手段の出力ビット長の整数倍になるように、パディング処理を行う前処理手段(例えば、図1の前処理部1に相当)を前記メッセージ分割手段の入力側に備えたことを特徴とするハッシュ値生成装置を提案している。
【0016】
この発明によれば、前処理手段は、入力メッセージが前記並列段数と前記暗号化手段の出力ビット長の整数倍になるように、パディング処理を行う。したがって、適正なビット長を持ったメッセージを分割して処理することができる。
【0017】
(4)本発明は、(2)のハッシュ値生成装置について、前記フィードバック手段は、入力したハッシュ値をどの入力手段に戻すかを能動的に決定するとともに、前記フィードフォワード手段は、入力したメッセージをどの演算手段(例えば、図1の演算部7a、7bに相当)に出力するのかを能動的に決定することを特徴とするハッシュ値生成装置を提案している。
【0018】
この発明によれば、フィードバック手段は、入力したハッシュ値をどの入力手段に戻すかを能動的に決定する。また、フィードフォワード手段は、入力したメッセージをどの演算手段に出力するのかを能動的に決定する。したがって、フィードバック先あるいはフィードフォワード先が予め固定されている場合に比べて、さらに、攪拌効率を向上させることができる。
【0019】
(5)本発明は、(1)のハッシュ値生成装置について、前記暗号化手段が、ストリーム暗号によりハッシュ値を生成することを特徴とするハッシュ値生成装置を提案している。
【0020】
この発明によれば、暗号化手段は、ストリーム暗号によりハッシュ値を生成する。したがって、暗号化手段としてストリーム暗号を用いたことから、従来に比べて、処理速度の向上を図ることができる。なお、ここで、ストリーム暗号は、特定のストリーム暗号である必要はない。
【0021】
(6)本発明は、(1)のハッシュ値生成装置について、前記暗号化手段が、ブロック暗号によりハッシュ値を生成することを特徴とするハッシュ値生成装置を提案している。
【0022】
この発明によれば、暗号化手段が、ブロック暗号によりハッシュ値を生成する。したがって、暗号化手段としてブロック暗号を用いたことから、ストリーム暗号に比べて、鍵のサイズを減らすことができる。なお、ここで、ブロック暗号は、特定のブロック暗号である必要はない。
【0023】
(7)本発明は、(2)のハッシュ値生成装置について、前記演算手段が排他的論理和演算器であることを特徴とするハッシュ値生成装置を提案している。
【0024】
この発明によれば、演算手段が排他的論理和演算器である。したがって、簡易な演算でラウンドごとのハッシュ値を結合させることができる。
【0025】
(8)本発明は、入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行う第1のステップ(例えば、図3のステップS101に相当)と、メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する第2のステップ(例えば、図3のステップS102に相当)と、メッセージ入力手段が分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力する第3のステップ(例えば、図3のステップS103に相当)と、該入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する第4のステップ(例えば、図3のステップS104に相当)と、フィードバック手段が、該得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力する第5のステップ(例えば、図3のステップS105に相当)と、フィードフォワード手段が入力メッセージのフィードフォワード先の演算手段を決定して、出力する第6のステップ(例えば、図3のステップS106に相当)と、入力メッセージがまだあるか否かを確認する第7のステップと(例えば、図3のステップS107に相当)、入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記第3のステップから第6のステップまでを繰り返す第8のステップと、すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力する第9のステップ(例えば、図3のステップS108に相当)と、該得られた複数のハッシュ値を演算手段によって結合する第10のステップ(例えば、図3のステップS109に相当)と、を備えたことを特徴とするハッシュ値生成方法を提案している。
【0026】
この発明によれば、入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行い、メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する。メッセージ入力手段は、分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力し、暗号化手段は、その入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する。フィードバック手段は、その得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力し、フィードフォワード手段は、入力メッセージのフィードフォワード先の演算手段を決定して、出力する。次に、入力メッセージがまだあるか否かを確認し、入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記の処理を繰り返す。そして、すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力し、その得られた複数のハッシュ値を演算手段によって結合する。したがって、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となる。また、n段の並列構成により、並列して処理を行うことができるため、高速に処理が可能となる。さらに、フィードバック手段およびフィードフォワード手段が、フィードバック先およびフィードフォワード先を能動的に決定するため、フィードバック先あるいはフィードフォワード先が予め固定されている場合に比べて、さらに、攪拌効率を向上させることができる。
【0027】
(9)本発明は、コンピュータに、入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行う第1のステップ(例えば、図3のステップS101に相当)と、メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する第2のステップ(例えば、図3のステップS102に相当)と、メッセージ入力手段が分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力する第3のステップ(例えば、図3のステップS103に相当)と、該入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する第4のステップ(例えば、図3のステップS104に相当)と、フィードバック手段が、該得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力する第5のステップ(例えば、図3のステップS105に相当)と、フィードフォワード手段が入力メッセージのフィードフォワード先の演算手段を決定して、出力する第6のステップ(例えば、図3のステップS106に相当)と、入力メッセージがまだあるか否かを確認する第7のステップと(例えば、図3のステップS107に相当)、入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記第3のステップから第6のステップまでを繰り返す第8のステップと、すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力する第9のステップ(例えば、図3のステップS108に相当)と、該得られた複数のハッシュ値を演算手段によって結合する第10のステップ(例えば、図3のステップS109に相当)と、を実行させるためのプログラムを提案している。
【0028】
この発明によれば、入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行い、メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する。メッセージ入力手段は、分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力し、暗号化手段は、その入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する。フィードバック手段は、その得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力し、フィードフォワード手段は、入力メッセージのフィードフォワード先の演算手段を決定して、出力する。次に、入力メッセージがまだあるか否かを確認し、入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記の処理を繰り返す。そして、すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力し、その得られた複数のハッシュ値を演算手段によって結合する。したがって、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となる。また、n段の並列構成により、並列して処理を行うことができるため、高速に処理が可能となる。さらに、フィードバック手段およびフィードフォワード手段が、フィードバック先およびフィードフォワード先を能動的に決定するため、フィードバック先あるいはフィードフォワード先が予め固定されている場合に比べて、より攪拌効率を向上させることができる。
【発明の効果】
【0029】
本発明によれば、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となるという効果がある。
【0030】
また、n段の並列構成により、並列して処理を行うことができるため、高速に処理が可能となるという効果がある。
【0031】
さらに、フィードバック手段およびフィードフォワード手段が、フィードバック先およびフィードフォワード先を能動的に決定するため、フィードバック先あるいはフィードフォワード先が予め固定されている場合に比べて、より攪拌効率を向上させることができるという効果がある。
【図面の簡単な説明】
【0032】
【図1】第1の実施形態に係る構成図である。
【図2】第1の実施形態に係る暗号化部の構成を示す図である。
【図3】第1の実施形態に係る処理フローである。
【図4】第2の実施形態に係る暗号化部の構成を示す図である。
【図5】第2の実施形態に係る暗号化部の構成を示す図である。
【図6】応用例に係る構成図である。
【図7】従来例に係る構成図である。
【発明を実施するための形態】
【0033】
以下、図面を用いて、本発明の実施形態について詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組み合わせを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0034】
<第1の実施形態>
図1から図3を用いて、本発明に係る第1の実施形態について説明する。
【0035】
<ハッシュ値生成装置の構成>
図1に示すように、本実施形態に係るハッシュ値生成装置は、前処理部1と、メッセージ分割部2と、メッセージ入力部3a、3bと、フィードフォワード部4と、フィードバック部5と、暗号化部6a、6bと、演算部7a、7bとから構成されている。つまり、図1に示すように、メッセージ入力部、暗号化部、演算部の構成が2段の並列接続となっている。
【0036】
ここで、前処理部1は、入力メッセージが並列段数と暗号化部6a、6bの出力ビット長の整数倍になるように、パディング処理を行う。メッセージ分割部2は、入力メッセージを複数のメッセージブロックに分割する。
【0037】
メッセージ入力部3a、3bは、メッセージ分割部2において分割されたメッセージを入力して、暗号化部6a、6bに出力する。暗号化部6a、6bは、入力したメッセージを暗号化して、ハッシュ値を生成する。なお、暗号化部6a、6bの構成の詳細については、後述する。演算部7a、7bは、暗号化部6a、6bから出力される複数のハッシュ値を結合する。なお、演算部7a、7bは、排他的論理和演算器で構成することが好ましいがこれに限るものではない。なお、排他的論理和演算器で構成した場合には、簡易な演算でラウンドごとのハッシュ値を結合させることができる。
【0038】
フィードフォワード部4は、メッセージ入力部3a、3bからの出力されるメッセージを入力し、そのメッセージを演算部7a、7bにフィードフォワードする。フィードバック部5は、暗号化部6a、6bが出力するハッシュ値を入力し、そのハッシュ値をメッセージ入力部3a、3bにフィードバックする。なお、フィードフォワード部4およびフィードバック部5が、データをフィードフォワードあるいはフィードバックする箇所は、一定である必要はなく、フィードフォワード部4およびフィードバック部5が、ハッシュ値やメッセージのあるビットの値等により動的に決定する。これによって、攪拌効率を向上させることができる。
【0039】
<暗号化部の構成>
本実施形態に係る暗号化部は、ストリーム暗号を用いたものであり、その構成は、例えば、図2に示すようになっている。具体的には、ストリーム暗号部10と、XOR11とからなり、ストリーム暗号部10には、メッセージデータ入力端子と前ラウンドのハッシュ値をメッセージ入力部3a、3bを介して、入力するハッシュ値入力端子を備えている。
【0040】
ストリーム暗号部10は、Nビットのメッセージデータと前ラウンドのハッシュ値とを入力し、ストリーム暗号による暗号化を実施する。なお、最初のラウンドでは、前ラウンドのハッシュ値が存在しないため、任意の初期ベクトルを使用する。
【0041】
XOR11は、ストリーム暗号部10の出力データとメッセージデータ、前ラウンドのハッシュ値の排他的論理和を演算し、出力する。これにより、Nビットのハッシュ値が出力されることになる。
【0042】
暗号化部の詳細な処理については、以下のようになる。なお、説明の前提として、メッセージ長をL、ストリーム暗号部の内部状態の長さをT、ハッシュ出力をNビットとする。
【0043】
ストリーム暗号部10の内部状態へハッシュ値を計算したいメッセージ長LのメッセージをM_iとして先頭から入力する。なお、入力されるメッセージは、前処理部1によりNビット単位とされている。
【0044】
次に、初回のラウンドにおいては、前ラウンドのハッシュ値が存在しないため、例えば、1001・・・等の任意の初期ベクトルをH_i−1として入力する。ストリーム暗号部は、入力したM_iとH_i−1に基づいて、ストリーム暗号による暗号化を実施し、その結果を出力する。
【0045】
次に、ストリーム暗号部10の出力と入力メッセージM_i、任意の初期ベクトルH_i−1がXOR11に入力されると、これらの排他的論理和がとられハッシュ値H_iが出力される。そして、次のメッセージM_iと前ラウンドのハッシュ値H_i−1とが順次、ストリーム暗号部10に入力され、ハッシュ値H_iが出力される。
【0046】
こうした処理を(L−T)/N回実行して、最終的なハッシュ値を得て、その値をメッセージのハッシュ値とする。なお、処理回数が(L−T)/N回に満たない場合には、例えば、101010・・・等の固定メッセージを入力して、空回しを行うことにより、十分な安全性を確保する。
【0047】
<ハッシュ値生成装置の処理>
図3を用いて、本実施形態に係るハッシュ値生成装置の処理について、説明する。
【0048】
まず、前処理として、入力メッセージが並列段数と暗号化部6a、6bの出力ビット長の整数倍となるようにパディングを行う(ステップS101)。メッセージ分割部2は、入力メッセージを複数のメッセージブロックに分割する(ステップS102)。
【0049】
メッセージ入力部3a、3bは、分割されたメッセージブロックと前ラウンドのハッシュ値とをそれぞれ暗号化部6a、6bに出力する(ステップS103)。暗号化部6a、6bは、入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する(ステップS104)。
【0050】
フィードバック部5は、その得られたハッシュ値を入力し、フィードバック先のメッセージ入力部3a、3bを決定して、出力する(ステップS105)。フィードフォワード部4は、入力メッセージのフィードフォワード先の演算部7a、7bを決定して、出力する(ステップS106)。
【0051】
次に、入力メッセージがまだあるか否かを確認し(ステップS107)、入力メッセージがまだある場合に(ステップS107の「Yes」)、入力メッセージがなくなるまで、ステップS103からステップS106までを繰り返す。すべてのメッセージの処理が終了したとき(ステップS107の「No」)は、ハッシュ値を出力し(ステップS108)、その得られた複数のハッシュ値を演算部7a、7bによって結合する(ステップS109)。
【0052】
したがって、本実施形態によれば、ストリーム暗号を用いたハッシュ値生成装置において、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となる。また、2段の並列構成により、並列して処理を行うことができるため、高速に処理が可能となる。さらに、フィードバック手段およびフィードフォワード手段が、フィードバック先およびフィードフォワード先を能動的に決定するため、フィードバック先あるいはフィードフォワード先が予め固定されている場合に比べて、より攪拌効率を向上させることができる。
【0053】
<第2の実施形態>
図4および図5を用いて、第2の実施形態について説明する。なお、第1の実施形態においては、暗号化部において、ストリーム暗号を用いる例について、説明したが、本実施形態においては、暗号化部において、ブロック暗号を用いる例について、説明する。また、暗号化部の以外の構成要素については、第1の実施形態と同様であるため、詳細な説明は、省略する。
【0054】
<暗号化部の構成>
図4および図5は、本実施形態に係る暗号化部の構成を示すブロック図である。図4は、ブロック暗号のデータランダム化部、図5は、鍵生成部の構成であって、所定長のビット列からなる入力ブロックを、あるビット長のビット列からなる所望の鍵に基づいて、ある入力ブロックと同長の出力ブロックに変換するものであって、データランダム化部21と、鍵生成部22とを有する。
【0055】
データランダム化部21は、初期転置部23と、非線形関数部24と、逆初期転置部25とから構成されている。初期転置部23は、入力ブロックを所定の区間に分割し、鍵の各区間に対応するように定める位置の各ビット列の値を、その入力ブロック内の区間位置アドレスとし、各区間のビット列を対応するその区間位置アドレスによって定まる区間と所定の位置関係を有する区間に順次移動して、移動した結果のブロックを非線形関数部24に渡し、その移動の前後のその区間相互間の対応を示す情報を逆初期転置部25に渡すものである。
【0056】
非線形関数部24は、複数段のインボリューション処理部26a〜26cを有し、初期転置部23から受け取るブロックを等しい長さの左ビット列及び右ビット列に2等分し、その左ビット列を左入力Lとし、その左ビット列と右ビット列との排他的論理和を右入力Rとして、第1段のインボリューション処理部26aに入力し、順次各段のインボリューション処理部26a〜26cの左出力を次段の右入力Rとし、右出力を左入力Lとして、最終段の左出力と、その左出力と右出力との排他的論理和とを結合したビット列のブロックを逆初期転置部25に渡すものである。
【0057】
各インボリューション処理部26は、関数部27a〜27cを有し、鍵生成部22が生成する中間鍵の各所定の1つと右入力Rとを入力として関数部27が生成するビット列と、左入力Lとの排他的論理和をその左出力とし、右入力Rをその右出力とするものである。
【0058】
各関数部27は、右入力Rを所定の区間に分割し、その中間鍵の各区間に対応するように定める位置の各ビット列の値を、その右入力内の区間位置アドレスとし、各区間のビット列を対応するその区間位置アドレスによって定まる区間と所定の位置関係を有する区間に順次移動して、移動した結果のビット列について所定の変換を実行するものである。
【0059】
逆初期転置部25は、非線形関数部24から受け取るブロックについて、初期転置部23から受け取るその区間相互間の対応情報に従って、初期転置部23の行ったその区間間の移動と逆の移動を行ったブロックを、その出力ブロックとして出力するものである。
【0060】
鍵生成部22は、非線形関数部24と同じ段数の鍵処理部28a〜28cを有し、その鍵を等しい長さの左ビット列及び右ビット列に2等分し、その左ビット列を左鍵入力KLとし、その左ビット列と右ビット列との排他的論理和を右鍵入力KRとして、第1段の鍵処理部28aに入力し、順次各段の鍵処理部28の左鍵出力を次段の右鍵入力KRとし、右鍵出力を左鍵入力KLとして、各段のその左鍵出力を各中間鍵として非線形関数部24に渡すものである。
【0061】
各鍵処理部28は、鍵関数部29a〜29cを有し、所望の初期ベクトルと右鍵入力KRとを入力として鍵関数部29a〜29cが生成するビット列と、左鍵入力KLとの排他的論理和をその左鍵出力とし、右鍵入力KRをその右鍵出力とするものである。
【0062】
各鍵関数部29は、右鍵入力KRを所定の区間に分割し、その初期ベクトルの各区間に対応するように定める位置の各ビット列の値を、右鍵入力KR内の区間位置アドレスとし、各区間のビット列を対応するその区間位置アドレスによって定まる区間と所定の位置関係を有する区間に順次移動して、移動した結果のビット列について所定の変換を実行するものである。
【0063】
したがって、本実施形態によれば、ブロック暗号を用いたハッシュ値生成装置においても、入力メッセージを複数のメッセージブロックに分割することにより、使用メモリの削減が可能になりRFIDタグ等においても高速に処理が可能となる。
【0064】
<応用例>
図6を用いて、本発明の応用例について説明する。本応用例は、図6に示すように、メッセージ入力部、暗号化部、演算部の構成がn段の並列接続となっている。なお、それ以外の構成については、第1および第2の実施形態と同様であるため、詳細な説明は省略する。
【0065】
このような構成によれば、装置の規模はやや大きくなるものの、上記実施形態の構成に比べて、より攪拌効率を高めることができる。また、ここで、nは、2以上の整数である。
【0066】
なお、上述の一連の処理をプログラムとしてコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをハッシュ値生成装置に読み込ませ、実行することによって本発明のハッシュ値生成装置を実現することができる。
【0067】
また、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0068】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0069】
なお、本発明は、UIMカード等に適用しても、高速なハッシュ演算を可能とすることができる。したがって、ストリーム暗号やブロック暗号を使用するようなブロードバンド事業や携帯電話をはじめとするモバイル通信におけるシステム構築に広く利用することが可能である。
【0070】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0071】
1・・・前処理部
2・・・メッセージ分割部
3a・・・メッセージ入力部
3b・・・メッセージ入力部
4・・・フィードフォワード部
5・・・フィードバック部
6a・・・暗号化部
6b・・・暗号化部
7a・・・演算部
7b・・・演算部
10・・・ストリーム暗号部
11・・・XOR
21・・・データランダム化部
22・・・鍵生成部
23・・・初期転置部
24・・・非線形関数部
25・・・逆初期転置部
26a・・・インボリューション処理部
26b・・・インボリューション処理部
26c・・・インボリューション処理部
27a・・・関数部
27b・・・関数部
27c・・・関数部
28a・・・鍵処理部
28b・・・鍵処理部
28c・・・鍵処理部
29a・・・鍵関数部
29b・・・鍵関数部
29c・・・鍵関数部

【特許請求の範囲】
【請求項1】
入力メッセージを複数のメッセージブロックに分割するメッセージ分割手段と、
該分割された入力メッセージブロックと前ラウンドで得られたハッシュ値とを入力する入力手段と、
該入力したメッセージを暗号化して、ハッシュ値を生成する暗号化手段と、
該ハッシュ値を出力する出力手段と、
を備えることを特徴とするハッシュ値生成装置。
【請求項2】
前記暗号化手段の出力に演算手段を有し、
前記入力手段と暗号化手段と演算手段とがn(nは、2以上の整数)段並列になって構成され、
前記暗号化手段が出力する前記ハッシュ値を入力し、該ハッシュ値を前記入力手段に戻すフィードバック手段と、
前記入力手段からの出力されるメッセージを入力し、該メッセージを前記演算手段に出力するフィードフォワード手段と、
を備えたことを特徴とする請求項1に記載のハッシュ値生成装置。
【請求項3】
入力メッセージが前記並列段数と前記暗号化手段の出力ビット長の整数倍になるように、パディング処理を行う前処理手段を前記メッセージ分割手段の入力側に備えたことを特徴とする請求項1または請求項2に記載のハッシュ値生成装置。
【請求項4】
前記フィードバック手段は、入力したハッシュ値をどの入力手段に戻すかを能動的に決定するとともに、前記フィードフォワード手段は、入力したメッセージをどの演算手段に出力するのかを能動的に決定することを特徴とする請求項2に記載のハッシュ値生成装置。
【請求項5】
前記暗号化手段が、ストリーム暗号によりハッシュ値を生成することを特徴とする請求項1に記載のハッシュ値生成装置。
【請求項6】
前記暗号化手段が、ブロック暗号によりハッシュ値を生成することを特徴とする請求項1に記載のハッシュ値生成装置。
【請求項7】
前記演算手段が排他的論理和演算器であることを特徴とする請求項2に記載のハッシュ値生成装置。
【請求項8】
入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行う第1のステップと、
メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する第2のステップと、
メッセージ入力手段が分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力する第3のステップと、
該入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する第4のステップと、
フィードバック手段が、該得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力する第5のステップと、
フィードフォワード手段が入力メッセージのフィードフォワード先の演算手段を決定して、出力する第6のステップと、
入力メッセージがまだあるか否かを確認する第7のステップと、
入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記第3のステップから第6のステップまでを繰り返す第8のステップと、
すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力する第9のステップと、
該得られた複数のハッシュ値を演算手段によって結合する第10のステップと、
を備えたことを特徴とするハッシュ値生成方法。
【請求項9】
コンピュータに、
入力メッセージが並列段数と暗号化手段の出力ビット長の整数倍となるようにパディングを行う第1のステップと、
メッセージ分割手段が入力メッセージを複数のメッセージブロックに分割する第2のステップと、
メッセージ入力手段が分割されたメッセージブロックと前ラウンドのハッシュ値をそれぞれ暗号化手段に出力する第3のステップと、
該入力されたメッセージブロックと前ブロックのハッシュ値とを暗号化して、ハッシュ値を生成する第4のステップと、
フィードバック手段が、該得られたハッシュ値を入力し、フィードバック先のメッセージ入力手段を決定して、出力する第5のステップと、
フィードフォワード手段が入力メッセージのフィードフォワード先の演算手段を決定して、出力する第6のステップと、
入力メッセージがまだあるか否かを確認する第7のステップと、
入力メッセージがまだある場合に、入力メッセージがなくなるまで、上記第3のステップから第6のステップまでを繰り返す第8のステップと、
すべてのメッセージの処理が終了したときに、出力手段からハッシュ値を出力する第9のステップと、
該得られた複数のハッシュ値を演算手段によって結合する第10のステップと、
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate