説明

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

【課題】ストリーム暗号からハッシュ関数を容易に構成する。
【解決手段】ハッシュ値生成装置は、メッセージ拡大部110、内部状態更新部120、およびハッシュ値取得部130を備える。メッセージ拡大部110は、メッセージを内部状態と同じサイズに拡大する。内部状態更新部120は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得部130は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストリーム暗号からハッシュ関数を容易に構成するハッシュ値生成装置、ハッシュ値生成方法およびプログラムに関する。
【背景技術】
【0002】
近年、情報セキュリティの重要性が高まるにつれ、ICカードやRFIDタグ等でも利用可能な安全な暗号学的ハッシュ関数が重要となっている。現在、最もよく使われているハッシュ関数としてMD5(例えば、非特許文献1参照)やSHA−1(例えば、非特許文献2参照)がある。
【0003】
しかし、MD5、SHA−1は安全性に問題があることが指摘されている。これを受けて、次世代ハッシュ関数SHA−3の公募が行われ、64のアルゴリズムが提案された。その内の7つはストリーム暗号と構造がよく似ている(例えば、非特許文献3および非特許文献4参照)。ストリーム暗号を基に構成されたハッシュ関数は、ハッシュ値の生成に加えて、ストリーム暗号としてデータの暗号化/復号にも使用できる。そのため、RFIDやICカード等のリソースが限られた機器において、ハッシュ関数とストリーム暗号を個別に実装する場合に比べ回路規模を削減することが可能となる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】R.Rivest,“The MD5 Message Digest Algorithm,” RFC1321, 1992.
【非特許文献2】NIST,“Secure Hash Standard,” FIPS180−1, 1995.
【非特許文献3】G. Rose “Design and Primitive Specification for Boole,”submitted to NIST, 2008.
【非特許文献4】M. Maslennikov, “Secure Hash Algorithm MCSSHA−3,” submitted to NIST, 2008.
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、現在、提案されているストリーム暗号を使用したハッシュ関数は、それぞれ専用に設計されており、一般的なストリーム暗号に適用し、ハッシュ関数を構成することはできないという問題がある。
【0006】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ストリーム暗号からハッシュ関数を容易に構成するハッシュ値生成装置、ハッシュ値生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【0008】
(1)本発明は、メッセージを内部状態と同じサイズに拡大するメッセージ拡大手段(例えば、図1のメッセージ拡大部110に相当)と、該拡大したメッセージをストリーム暗号の内部状態全体に入力し、該内部状態全体を更新する内部状態更新手段(例えば、図1の内部状態更新部120に相当)と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段(例えば、図1のハッシュ値取得部130に相当)と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【0009】
この発明によれば、メッセージ拡大手段は、メッセージを内部状態と同じサイズに拡大する。内部状態更新手段は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【0010】
(2)本発明は、メッセージを拡大するメッセージ拡大手段(例えば、図3のメッセージ拡大部110に相当)と、該拡大したメッセージをストリーム暗号の内部状態の一部に入力し、該メッセージが入力された部分の内部状態のみを更新する内部状態更新手段(例えば、図3の内部状態更新部210に相当)と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段(例えば、図3のハッシュ値取得部220に相当)と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【0011】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。内部状態更新手段は、拡大したメッセージをストリーム暗号の内部状態の一部に入力し、メッセージが入力された部分の内部状態のみを更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、メッセージのサイズを自由に選択することができる。これにより、環境に応じて、メッセージを拡大するサイズを決定することが可能となる。
【0012】
(3)本発明は、メッセージを拡大するメッセージ拡大手段(例えば、図5のメッセージ拡大部110に相当)と、状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段(例えば、図5の内部状態更新部310に相当)と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する入力手段(例えば、図5の入力部320に相当)と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段(例えば、図5のハッシュ値取得部330に相当)と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【0013】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。内部状態更新手段は、状態更新によりストリーム暗号の内部状態を更新する。入力手段は、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【0014】
(4)本発明は、メッセージを拡大するメッセージ拡大手段(例えば、図7のメッセージ拡大部110に相当)と、状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力するメッセージ入力手段(例えば、図7のメッセージ入力部410に相当)と、状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段(例えば、図7の内部状態更新部310に相当)と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段(例えば、図7のハッシュ値取得部330に相当)と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【0015】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。メッセージ入力手段は、状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力する。内部状態更新手段は、状態更新によりストリーム暗号の内部状態を更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【0016】
(5)本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図2のステップS101に相当)と、前記入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う第2のステップ(例えば、図2のステップS102に相当)と、拡大されたメッセージブロックをストリーム暗号化部へ入力する第3のステップ(例えば、図2のステップS103に相当)と、該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップ(例えば、図2のステップS104に相当)と、該得られた内部状態が状態更新によって再度更新される第5のステップ(例えば、図2のステップS105に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図2のステップS106に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図2のステップS107に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図2のステップS108に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【0017】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大する。次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【0018】
(6)本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図4のステップS201に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図4のステップS202に相当)と、該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第3のステップ(例えば、図4のステップS203に相当)と、該入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する第4のステップ(例えば、図4のステップS204に相当)と、該得られた内部状態が状態更新によって再度更新される第5のステップ(例えば、図4のステップS205に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図4のステップS206に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図4のステップS207に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図4のステップS208に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【0019】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力し、入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、拡大したメッセージの一部を入力するため、入力メッセージのサイズを自由に選択することができる。これにより、環境に応じて、入力メッセージのサイズを決定することが可能となる。
【0020】
(7)本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図6のステップS301に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図6のステップS302に相当)と、状態更新によりストリーム暗号の内部状態を更新する第3のステップ(例えば、図6のステップS303に相当)と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第4のステップ(例えば、図6のステップS304に相当)と、第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第5のステップ(例えば、図6のステップS305に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第6のステップ(例えば、図6のステップS306に相当)と、前記第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第7のステップ(例えば、図6のステップS307に相当)と、を備え、前記第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【0021】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、状態更新によりストリーム暗号の内部状態を更新し、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。そして、第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返す。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【0022】
(8)本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図8のステップS401に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図8のステップS402に相当)と、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第3のステップ(例えば、図8のステップS403に相当)と、該入力されたメッセージブロックによって外部関数の値を更新する第4のステップ(例えば、図8のステップS404に相当)と、状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第5のステップ(例えば、図8のステップS405に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図8のステップS406に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図8のステップS407に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図8のステップS408に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【0023】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力し、入力されたメッセージブロックによって外部関数の値を更新して、状態更新を行い、外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【0024】
(9)本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図2のステップS101に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図2のステップS102に相当)と、拡大されたメッセージブロックをストリーム暗号化部へ入力する第3のステップ(例えば、図2のステップS103に相当)と、該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップ(例えば、図2のステップS104に相当)と、該得られた内部状態が状態更新によって再度更新される第5のステップ(例えば、図2のステップS105に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図2のステップS106に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図2のステップS107に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図2のステップS108に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【0025】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージを拡大する。次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【0026】
(10)本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図4のステップS201に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図4のステップS202に相当)と、該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第3のステップ(例えば、図4のステップS203に相当)と、該入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する第4のステップ(例えば、図4のステップS204に相当)と、該得られた内部状態が状態更新によって再度更新される第5のステップ(例えば、図4のステップS205に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図4のステップS206に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図4のステップS207に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図4のステップS208に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【0027】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージをメッセージ拡大する。次に、拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力し、入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、拡大したメッセージの一部を入力するため、入力メッセージのサイズを自由に選択することができる。これにより、環境に応じて、入力メッセージのサイズを決定することが可能となる。
【0028】
(11)本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図6のステップS301に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図6のステップS302に相当)と、状態更新によりストリーム暗号の内部状態を更新する第3のステップ(例えば、図6のステップS303に相当)と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第4のステップ(例えば、図6のステップS304に相当)と、第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第5のステップ(例えば、図6のステップS305に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第6のステップ(例えば、図6のステップS306に相当)と、前記第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第7のステップ(例えば、図6のステップS307に相当)と、を備え、前記第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【0029】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、状態更新によりストリーム暗号の内部状態を更新し、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。そして、第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返す。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【0030】
(12)本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップ(例えば、図8のステップS401に相当)と、前記入力メッセージの拡大を行う第2のステップ(例えば、図8のステップS402に相当)と、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第3のステップ(例えば、図8のステップS403に相当)と、該入力されたメッセージブロックによって外部関数の値を更新する第4のステップ(例えば、図8のステップS404に相当)と、状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第5のステップ(例えば、図8のステップS405に相当)と、第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップ(例えば、図8のステップS406に相当)と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップ(例えば、図8のステップS407に相当)と、前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップ(例えば、図8のステップS408に相当)と、を備え、前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【0031】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力し、入力されたメッセージブロックによって外部関数の値を更新して、状態更新を行い、外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する。そして、第3のステップから第5のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【発明の効果】
【0032】
本発明によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。つまり、様々なストリーム暗号からハッシュ関数を構成可能であるため、環境に応じて最適なハッシュ関数を構成することが可能となるという効果がある。
【図面の簡単な説明】
【0033】
【図1】本発明の第1の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図2】本発明の第1の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図3】本発明の第2の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図4】本発明の第2の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図5】本発明の第3の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図6】本発明の第3の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図7】本発明の第4の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図8】本発明の第4の実施形態に係るハッシュ値生成装置の処理を示す図である。
【発明を実施するための形態】
【0034】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【0035】
<第1の実施形態>
図1および図2を用いて、本発明の第1の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の全内部状態へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【0036】
<ハッシュ値生成装置の構成>
図1を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。
【0037】
本実施形態に係るハッシュ値生成装置は、図1に示すように、メッセージ拡大部110と、内部状態更新部120と、ハッシュ値取得部130とから構成されている。また、内部状態更新部120と、ハッシュ値取得部130とにより、ストリーム暗号化部140が構成されている。
【0038】
メッセージ拡大部110は、メッセージを内部状態と同じサイズに拡大する。内部状態更新部120は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得部130は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【0039】
<ハッシュ値生成装置の処理>
図2を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【0040】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い(ステップS101)、入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う(ステップS102)。
【0041】
次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し(ステップS103)、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する(ステップS104)。さらに、得られた内部状態が状態更新によって再度更新され(ステップS105)、ステップS103からステップS105の操作を入力メッセージがすべて処理されるまで繰り返す(ステップS106)。
【0042】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し(ステップS107)、ステップS107で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し(ステップS108)、ステップS101からステップS108を所望のハッシュ値が得られるまで繰り返す。
【0043】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【0044】
<第2の実施形態>
図3および図4を用いて、本発明の第2の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の一部の内部状態へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【0045】
<ハッシュ値生成装置の構成>
図3を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【0046】
本実施形態に係るハッシュ値生成装置は、図3に示すように、メッセージ拡大部110と、内部状態更新部210と、ハッシュ値取得部220とから構成されている。また、内部状態更新部210と、ハッシュ値取得部220とにより、ストリーム暗号化部230が構成されている。
【0047】
内部状態更新部210は、拡大したメッセージをストリーム暗号の内部状態の一部に入力し、メッセージが入力された部分の内部状態のみを更新する。ハッシュ値取得部220は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【0048】
<ハッシュ値生成装置の処理>
図4を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【0049】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い(ステップS201)、入力メッセージの拡大を行う(ステップS202)。
【0050】
次に、拡大されたメッセージブロックをストリーム暗号化部の内部状態の決められた位置へ入力し(ステップS203)、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する(ステップS204)。さらに、得られた内部状態が状態更新によって再度更新され(ステップS205)、ステップS203からステップS205の操作を入力メッセージがすべて処理されるまで繰り返す(ステップS206)。
【0051】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し(ステップS207)、ステップS207で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し(ステップS208)、ステップS201からステップS208を所望のハッシュ値が得られるまで繰り返す。
【0052】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、拡大するメッセージのサイズを自由に選択することができる。これにより、環境に応じて、拡大メッセージのサイズを決定することが可能となる。
【0053】
<第3の実施形態>
図5および図6を用いて、本発明の第3の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部のフィードバックへと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【0054】
<ハッシュ値生成装置の構成>
図5を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第1の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【0055】
本実施形態に係るハッシュ値生成装置は、図5に示すように、メッセージ拡大部110と、内部状態更新部310と、入力部320と、ハッシュ値取得部330とから構成されている。また、内部状態更新部310と、入力部320と、ハッシュ値取得部330とにより、ストリーム暗号化部340が構成されている。
【0056】
内部状態更新部310は、状態更新によりストリーム暗号の内部状態を更新する。入力部320は、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。ハッシュ値取得部330は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【0057】
<ハッシュ値生成装置の処理>
図6を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【0058】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い(ステップS301)、入力メッセージの拡大を行う(ステップS302)。
【0059】
次に、状態更新によりストリーム暗号の内部状態を更新し(ステップS303)、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する(ステップS304)。さらに、ステップS303からステップS304の操作を入力メッセージがすべて処理されるまで繰り返す(ステップS305)。
【0060】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し(ステップS306)、ステップS306で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し(ステップS307)、ステップS301からステップS307を所望のハッシュ値が得られるまで繰り返す。
【0061】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、入力部320が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【0062】
<第4の実施形態>
図7および図8を用いて、本発明の第4の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の外部関数へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【0063】
<ハッシュ値生成装置の構成>
図7を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第1の実施形態および第3の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【0064】
本実施形態に係るハッシュ値生成装置は、図7に示すように、メッセージ拡大部110と、メッセージ入力部410と、内部状態更新部310と、ハッシュ値取得部330とから構成されている。また、メッセージ入力部410と、内部状態更新部310と、ハッシュ値取得部330とにより、ストリーム暗号化部420が構成されている。
【0065】
メッセージ入力部410は、状態更新で使用される非線形関数である外部関数に拡大したメッセージを入力する。
【0066】
<ハッシュ値生成装置の処理>
図8を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【0067】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い(ステップS401)、入力メッセージの拡大を行う(ステップS402)。
【0068】
次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し(ステップS403)、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する(ステップS404)。さらに、得られた内部状態が状態更新によって再度更新され(ステップS405)、ステップS403からステップS405の操作を入力メッセージがすべて処理されるまで繰り返す(ステップS406)。
【0069】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し(ステップS407)、ステップS407で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し(ステップS408)、ステップS401からステップS408を所望のハッシュ値が得られるまで繰り返す。
【0070】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【0071】
なお、ハッシュ値生成装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをハッシュ値生成装置に読み込ませ、実行することによって本発明のハッシュ値生成装置を実現することができる。ここでいうコンピュータシステムとは、OSや周辺装置等のハードウェアを含む。
【0072】
また、「コンピュータシステム」は、WWW(World Wide Web)システムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
【0073】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。
【0074】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【0075】
110;メッセージ拡大部
120;内部状態更新部
130;ハッシュ値取得部
140;ストリーム暗号化部
210;内部状態更新部
220;ハッシュ値取得部
230;ストリーム暗号化部
310;内部状態更新部
320;入力部
330;ハッシュ値取得部
340;ストリーム暗号化部
410;メッセージ入力部
420;ストリーム暗号化部

【特許請求の範囲】
【請求項1】
メッセージを内部状態と同じサイズに拡大するメッセージ拡大手段と、
該拡大したメッセージをストリーム暗号の内部状態全体に入力し、該内部状態全体を更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項2】
メッセージを拡大するメッセージ拡大手段と、
該拡大したメッセージをストリーム暗号の内部状態の一部に入力し、該メッセージが入力された部分の内部状態のみを更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項3】
メッセージを拡大するメッセージ拡大手段と、
状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段と、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する入力手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項4】
メッセージを拡大するメッセージ拡大手段と、
状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力するメッセージ入力手段と、
状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項5】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う第2のステップと、
拡大されたメッセージブロックをストリーム暗号化部へ入力する第3のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップと、
該得られた内部状態が状態更新によって再度更新される第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項6】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
該拡大されたメッセージブロックをストリーム暗号化部の内部状態の決められた位置へ入力する第3のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップと、
該得られた内部状態が状態更新によって再度更新される第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項7】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
状態更新によりストリーム暗号の内部状態を更新する第3のステップと、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第4のステップと、
第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第5のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第6のステップと、
前記第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第7のステップと、
を備え、
前記第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項8】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第3のステップと、
該入力されたメッセージブロックによって外部関数の値を更新する第4のステップと、
状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項9】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
拡大されたメッセージブロックをストリーム暗号化部へ入力する第3のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップと、
該得られた内部状態が状態更新によって再度更新される第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項10】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第3のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第4のステップと、
該得られた内部状態が状態更新によって再度更新される第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項11】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
状態更新によりストリーム暗号の内部状態を更新する第3のステップと、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第4のステップと、
第3のステップから第4のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第5のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第6のステップと、
前記第6のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第7のステップと、
を備え、
前記第1のステップから第7のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項12】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第1のステップと、
前記入力メッセージの拡大を行う第2のステップと、
拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第3のステップと、
該入力されたメッセージブロックによって外部関数の値を更新する第4のステップと、
状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第5のステップと、
第3のステップから第5のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第6のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第7のステップと、
前記第7のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第8のステップと、
を備え、
前記第1のステップから第8のステップを所望のハッシュ値が得られるまで繰り返処理を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−49851(P2012−49851A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−190489(P2010−190489)
【出願日】平成22年8月27日(2010.8.27)
【出願人】(000208891)KDDI株式会社 (2,700)
【Fターム(参考)】