(57)【要約】【課題】ストリーム暗号からハッシュ関数を容易に構成する。【解決手段】ハッシュ値生成装置は、メッセージ拡大部１１０、内部状態更新部１２０、およびハッシュ値取得部１３０を備える。メッセージ拡大部１１０は、メッセージを内部状態と同じサイズに拡大する。内部状態更新部１２０は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得部１３０は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。【選択図】図２
2012049851.tif 000002
【特許請求の範囲】
【請求項１】
メッセージを内部状態と同じサイズに拡大するメッセージ拡大手段と、
該拡大したメッセージをストリーム暗号の内部状態全体に入力し、該内部状態全体を更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項２】
メッセージを拡大するメッセージ拡大手段と、
該拡大したメッセージをストリーム暗号の内部状態の一部に入力し、該メッセージが入力された部分の内部状態のみを更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項３】
メッセージを拡大するメッセージ拡大手段と、
状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段と、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する入力手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項４】
メッセージを拡大するメッセージ拡大手段と、
状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力するメッセージ入力手段と、
状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段と、
所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段と、
を備えたことを特徴とするハッシュ値生成装置。
【請求項５】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う第２のステップと、
拡大されたメッセージブロックをストリーム暗号化部へ入力する第３のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップと、
該得られた内部状態が状態更新によって再度更新される第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項６】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
該拡大されたメッセージブロックをストリーム暗号化部の内部状態の決められた位置へ入力する第３のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップと、
該得られた内部状態が状態更新によって再度更新される第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項７】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
状態更新によりストリーム暗号の内部状態を更新する第３のステップと、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第４のステップと、
第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第５のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第６のステップと、
前記第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第７のステップと、
を備え、
前記第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項８】
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第３のステップと、
該入力されたメッセージブロックによって外部関数の値を更新する第４のステップと、
状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法。
【請求項９】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
拡大されたメッセージブロックをストリーム暗号化部へ入力する第３のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップと、
該得られた内部状態が状態更新によって再度更新される第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項１０】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第３のステップと、
該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップと、
該得られた内部状態が状態更新によって再度更新される第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項１１】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
状態更新によりストリーム暗号の内部状態を更新する第３のステップと、
該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第４のステップと、
第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第５のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第６のステップと、
前記第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第７のステップと、
を備え、
前記第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラム。
【請求項１２】
コンピュータに、
前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップと、
前記入力メッセージの拡大を行う第２のステップと、
拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第３のステップと、
該入力されたメッセージブロックによって外部関数の値を更新する第４のステップと、
状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第５のステップと、
第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップと、
すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップと、
前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップと、
を備え、
前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返処理を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリーム暗号からハッシュ関数を容易に構成するハッシュ値生成装置、ハッシュ値生成方法およびプログラムに関する。
【背景技術】
【０００２】
近年、情報セキュリティの重要性が高まるにつれ、ＩＣカードやＲＦＩＤタグ等でも利用可能な安全な暗号学的ハッシュ関数が重要となっている。現在、最もよく使われているハッシュ関数としてＭＤ５（例えば、非特許文献１参照）やＳＨＡ−１（例えば、非特許文献２参照）がある。
【０００３】
しかし、ＭＤ５、ＳＨＡ−１は安全性に問題があることが指摘されている。これを受けて、次世代ハッシュ関数ＳＨＡ−３の公募が行われ、６４のアルゴリズムが提案された。その内の７つはストリーム暗号と構造がよく似ている（例えば、非特許文献３および非特許文献４参照）。ストリーム暗号を基に構成されたハッシュ関数は、ハッシュ値の生成に加えて、ストリーム暗号としてデータの暗号化／復号にも使用できる。そのため、ＲＦＩＤやＩＣカード等のリソースが限られた機器において、ハッシュ関数とストリーム暗号を個別に実装する場合に比べ回路規模を削減することが可能となる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Ｒ．Ｒｉｖｅｓｔ，“Ｔｈｅ  ＭＤ５  Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ，”  ＲＦＣ１３２１，  １９９２．
【非特許文献２】ＮＩＳＴ，“Ｓｅｃｕｒｅ  Ｈａｓｈ  Ｓｔａｎｄａｒｄ，”  ＦＩＰＳ１８０−１，  １９９５．
【非特許文献３】Ｇ．  Ｒｏｓｅ  “Ｄｅｓｉｇｎ  ａｎｄ  Ｐｒｉｍｉｔｉｖｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  Ｂｏｏｌｅ，”ｓｕｂｍｉｔｔｅｄ  ｔｏ  ＮＩＳＴ, ２００８．
【非特許文献４】Ｍ．  Ｍａｓｌｅｎｎｉｋｏｖ，  “Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  ＭＣＳＳＨＡ−３，”  ｓｕｂｍｉｔｔｅｄ  ｔｏ  ＮＩＳＴ，  ２００８．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、現在、提案されているストリーム暗号を使用したハッシュ関数は、それぞれ専用に設計されており、一般的なストリーム暗号に適用し、ハッシュ関数を構成することはできないという問題がある。
【０００６】
そこで、本発明は、上述の課題に鑑みてなされたものであり、ストリーム暗号からハッシュ関数を容易に構成するハッシュ値生成装置、ハッシュ値生成方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の事項を提案している。なお、理解を容易にするために、本発明の実施形態に対応する符号を付して説明するが、これに限定されるものではない。
【０００８】
（１）本発明は、メッセージを内部状態と同じサイズに拡大するメッセージ拡大手段（例えば、図１のメッセージ拡大部１１０に相当）と、該拡大したメッセージをストリーム暗号の内部状態全体に入力し、該内部状態全体を更新する内部状態更新手段（例えば、図１の内部状態更新部１２０に相当）と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段（例えば、図１のハッシュ値取得部１３０に相当）と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【０００９】
この発明によれば、メッセージ拡大手段は、メッセージを内部状態と同じサイズに拡大する。内部状態更新手段は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【００１０】
（２）本発明は、メッセージを拡大するメッセージ拡大手段（例えば、図３のメッセージ拡大部１１０に相当）と、該拡大したメッセージをストリーム暗号の内部状態の一部に入力し、該メッセージが入力された部分の内部状態のみを更新する内部状態更新手段（例えば、図３の内部状態更新部２１０に相当）と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段（例えば、図３のハッシュ値取得部２２０に相当）と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【００１１】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。内部状態更新手段は、拡大したメッセージをストリーム暗号の内部状態の一部に入力し、メッセージが入力された部分の内部状態のみを更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、メッセージのサイズを自由に選択することができる。これにより、環境に応じて、メッセージを拡大するサイズを決定することが可能となる。
【００１２】
（３）本発明は、メッセージを拡大するメッセージ拡大手段（例えば、図５のメッセージ拡大部１１０に相当）と、状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段（例えば、図５の内部状態更新部３１０に相当）と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する入力手段（例えば、図５の入力部３２０に相当）と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段（例えば、図５のハッシュ値取得部３３０に相当）と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【００１３】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。内部状態更新手段は、状態更新によりストリーム暗号の内部状態を更新する。入力手段は、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【００１４】
（４）本発明は、メッセージを拡大するメッセージ拡大手段（例えば、図７のメッセージ拡大部１１０に相当）と、状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力するメッセージ入力手段（例えば、図７のメッセージ入力部４１０に相当）と、状態更新によりストリーム暗号の内部状態を更新する内部状態更新手段（例えば、図７の内部状態更新部３１０に相当）と、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新するハッシュ値取得手段（例えば、図７のハッシュ値取得部３３０に相当）と、を備えたことを特徴とするハッシュ値生成装置を提案している。
【００１５】
この発明によれば、メッセージ拡大手段は、メッセージを拡大する。メッセージ入力手段は、状態更新で使用される非線形関数である外部関数に該拡大したメッセージを入力する。内部状態更新手段は、状態更新によりストリーム暗号の内部状態を更新する。ハッシュ値取得手段は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【００１６】
（５）本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う第２のステップ（例えば、図２のステップＳ１０２に相当）と、拡大されたメッセージブロックをストリーム暗号化部へ入力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップ（例えば、図２のステップＳ１０４に相当）と、該得られた内部状態が状態更新によって再度更新される第５のステップ（例えば、図２のステップＳ１０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図２のステップＳ１０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図２のステップＳ１０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図２のステップＳ１０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【００１７】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大する。次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【００１８】
（６）本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図４のステップＳ２０２に相当）と、該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する第４のステップ（例えば、図４のステップＳ２０４に相当）と、該得られた内部状態が状態更新によって再度更新される第５のステップ（例えば、図４のステップＳ２０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図４のステップＳ２０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図４のステップＳ２０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図４のステップＳ２０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【００１９】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力し、入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、拡大したメッセージの一部を入力するため、入力メッセージのサイズを自由に選択することができる。これにより、環境に応じて、入力メッセージのサイズを決定することが可能となる。
【００２０】
（７）本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図６のステップＳ３０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図６のステップＳ３０２に相当）と、状態更新によりストリーム暗号の内部状態を更新する第３のステップ（例えば、図６のステップＳ３０３に相当）と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第４のステップ（例えば、図６のステップＳ３０４に相当）と、第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第５のステップ（例えば、図６のステップＳ３０５に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第６のステップ（例えば、図６のステップＳ３０６に相当）と、前記第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第７のステップ（例えば、図６のステップＳ３０７に相当）と、を備え、前記第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【００２１】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、状態更新によりストリーム暗号の内部状態を更新し、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。そして、第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返す。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【００２２】
（８）本発明は、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図８のステップＳ４０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図８のステップＳ４０２に相当）と、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第３のステップ（例えば、図８のステップＳ４０３に相当）と、該入力されたメッセージブロックによって外部関数の値を更新する第４のステップ（例えば、図８のステップＳ４０４に相当）と、状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第５のステップ（例えば、図８のステップＳ４０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図８のステップＳ４０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図８のステップＳ４０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図８のステップＳ４０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返すことを特徴とするハッシュ値生成方法を提案している。
【００２３】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力し、入力されたメッセージブロックによって外部関数の値を更新して、状態更新を行い、外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【００２４】
（９）本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図２のステップＳ１０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図２のステップＳ１０２に相当）と、拡大されたメッセージブロックをストリーム暗号化部へ入力する第３のステップ（例えば、図２のステップＳ１０３に相当）と、該入力されたメッセージブロックによってストリーム暗号の内部状態を更新する第４のステップ（例えば、図２のステップＳ１０４に相当）と、該得られた内部状態が状態更新によって再度更新される第５のステップ（例えば、図２のステップＳ１０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図２のステップＳ１０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図２のステップＳ１０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図２のステップＳ１０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【００２５】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージを拡大する。次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【００２６】
（１０）本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図４のステップＳ２０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図４のステップＳ２０２に相当）と、該拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力する第３のステップ（例えば、図４のステップＳ２０３に相当）と、該入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する第４のステップ（例えば、図４のステップＳ２０４に相当）と、該得られた内部状態が状態更新によって再度更新される第５のステップ（例えば、図４のステップＳ２０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図４のステップＳ２０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図４のステップＳ２０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図４のステップＳ２０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【００２７】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージをメッセージ拡大する。次に、拡大されたメッセージブロックをストリーム暗号の内部状態の決められた位置へ入力し、入力されたメッセージブロックによってストリーム暗号化部の内部状態を更新する。さらに、得られた内部状態が状態更新によって再度更新される。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、拡大したメッセージの一部を入力するため、入力メッセージのサイズを自由に選択することができる。これにより、環境に応じて、入力メッセージのサイズを決定することが可能となる。
【００２８】
（１１）本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図６のステップＳ３０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図６のステップＳ３０２に相当）と、状態更新によりストリーム暗号の内部状態を更新する第３のステップ（例えば、図６のステップＳ３０３に相当）と、該状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する第４のステップ（例えば、図６のステップＳ３０４に相当）と、第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第５のステップ（例えば、図６のステップＳ３０５に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第６のステップ（例えば、図６のステップＳ３０６に相当）と、前記第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第７のステップ（例えば、図６のステップＳ３０７に相当）と、を備え、前記第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【００２９】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、状態更新によりストリーム暗号の内部状態を更新し、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。そして、第３のステップから第４のステップの操作を前記入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第６のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第７のステップを所望のハッシュ値が得られるまで繰り返す。したがって、入力手段が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【００３０】
（１２）本発明は、コンピュータに、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行う第１のステップ（例えば、図８のステップＳ４０１に相当）と、前記入力メッセージの拡大を行う第２のステップ（例えば、図８のステップＳ４０２に相当）と、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力する第３のステップ（例えば、図８のステップＳ４０３に相当）と、該入力されたメッセージブロックによって外部関数の値を更新する第４のステップ（例えば、図８のステップＳ４０４に相当）と、状態更新を行い、該外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する第５のステップ（例えば、図８のステップＳ４０５に相当）と、第３のステップから第５のステップの操作を前記入力メッセージがすべて処理されるまで繰り返す第６のステップ（例えば、図８のステップＳ４０６に相当）と、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す第７のステップ（例えば、図８のステップＳ４０７に相当）と、前記第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成する第８のステップ（例えば、図８のステップＳ４０８に相当）と、を備え、前記第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す処理を実行させるためのプログラムを提案している。
【００３１】
この発明によれば、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い、入力メッセージの拡大を行う。次に、拡大されたメッセージブロックをストリーム暗号の非線形関数である外部関数へ入力し、入力されたメッセージブロックによって外部関数の値を更新して、状態更新を行い、外部関数へ入力されたメッセージが攪拌された後に、ストリーム暗号の内部状態へメッセージを入力する。そして、第３のステップから第５のステップの操作を入力メッセージがすべて処理されるまで繰り返し、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返す。さらに、第７のステップで得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し、第１のステップから第８のステップを所望のハッシュ値が得られるまで繰り返す。したがって、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【発明の効果】
【００３２】
本発明によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。つまり、様々なストリーム暗号からハッシュ関数を構成可能であるため、環境に応じて最適なハッシュ関数を構成することが可能となるという効果がある。
【図面の簡単な説明】
【００３３】
【図１】本発明の第１の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図２】本発明の第１の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図３】本発明の第２の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図４】本発明の第２の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図５】本発明の第３の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図６】本発明の第３の実施形態に係るハッシュ値生成装置の処理を示す図である。
【図７】本発明の第４の実施形態に係るハッシュ値生成装置の構成を示す図である。
【図８】本発明の第４の実施形態に係るハッシュ値生成装置の処理を示す図である。
【発明を実施するための形態】
【００３４】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００３５】
＜第１の実施形態＞
図１および図２を用いて、本発明の第１の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の全内部状態へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【００３６】
＜ハッシュ値生成装置の構成＞
図１を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。
【００３７】
本実施形態に係るハッシュ値生成装置は、図１に示すように、メッセージ拡大部１１０と、内部状態更新部１２０と、ハッシュ値取得部１３０とから構成されている。また、内部状態更新部１２０と、ハッシュ値取得部１３０とにより、ストリーム暗号化部１４０が構成されている。
【００３８】
メッセージ拡大部１１０は、メッセージを内部状態と同じサイズに拡大する。内部状態更新部１２０は、拡大したメッセージをストリーム暗号の内部状態全体に入力し、内部状態全体を更新する。ハッシュ値取得部１３０は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【００３９】
＜ハッシュ値生成装置の処理＞
図２を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【００４０】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い（ステップＳ１０１）、入力メッセージをストリーム暗号の内部状態サイズと等しくなるようにメッセージ拡大を行う（ステップＳ１０２）。
【００４１】
次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し（ステップＳ１０３）、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する（ステップＳ１０４）。さらに、得られた内部状態が状態更新によって再度更新され（ステップＳ１０５）、ステップＳ１０３からステップＳ１０５の操作を入力メッセージがすべて処理されるまで繰り返す（ステップＳ１０６）。
【００４２】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し（ステップＳ１０７）、ステップＳ１０７で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し（ステップＳ１０８）、ステップＳ１０１からステップＳ１０８を所望のハッシュ値が得られるまで繰り返す。
【００４３】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、一度にメッセージを処理できるため、攪拌処理を高速化することができる。
【００４４】
＜第２の実施形態＞
図３および図４を用いて、本発明の第２の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の一部の内部状態へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【００４５】
＜ハッシュ値生成装置の構成＞
図３を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【００４６】
本実施形態に係るハッシュ値生成装置は、図３に示すように、メッセージ拡大部１１０と、内部状態更新部２１０と、ハッシュ値取得部２２０とから構成されている。また、内部状態更新部２１０と、ハッシュ値取得部２２０とにより、ストリーム暗号化部２３０が構成されている。
【００４７】
内部状態更新部２１０は、拡大したメッセージをストリーム暗号の内部状態の一部に入力し、メッセージが入力された部分の内部状態のみを更新する。ハッシュ値取得部２２０は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【００４８】
＜ハッシュ値生成装置の処理＞
図４を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【００４９】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い（ステップＳ２０１）、入力メッセージの拡大を行う（ステップＳ２０２）。
【００５０】
次に、拡大されたメッセージブロックをストリーム暗号化部の内部状態の決められた位置へ入力し（ステップＳ２０３）、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する（ステップＳ２０４）。さらに、得られた内部状態が状態更新によって再度更新され（ステップＳ２０５）、ステップＳ２０３からステップＳ２０５の操作を入力メッセージがすべて処理されるまで繰り返す（ステップＳ２０６）。
【００５１】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し（ステップＳ２０７）、ステップＳ２０７で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し（ステップＳ２０８）、ステップＳ２０１からステップＳ２０８を所望のハッシュ値が得られるまで繰り返す。
【００５２】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、拡大するメッセージのサイズを自由に選択することができる。これにより、環境に応じて、拡大メッセージのサイズを決定することが可能となる。
【００５３】
＜第３の実施形態＞
図５および図６を用いて、本発明の第３の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部のフィードバックへと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【００５４】
＜ハッシュ値生成装置の構成＞
図５を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第１の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【００５５】
本実施形態に係るハッシュ値生成装置は、図５に示すように、メッセージ拡大部１１０と、内部状態更新部３１０と、入力部３２０と、ハッシュ値取得部３３０とから構成されている。また、内部状態更新部３１０と、入力部３２０と、ハッシュ値取得部３３０とにより、ストリーム暗号化部３４０が構成されている。
【００５６】
内部状態更新部３１０は、状態更新によりストリーム暗号の内部状態を更新する。入力部３２０は、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する。ハッシュ値取得部３３０は、所望のハッシュ値が得られるまで、状態更新によって内部状態をさらに更新する。
【００５７】
＜ハッシュ値生成装置の処理＞
図６を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【００５８】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い（ステップＳ３０１）、入力メッセージの拡大を行う（ステップＳ３０２）。
【００５９】
次に、状態更新によりストリーム暗号の内部状態を更新し（ステップＳ３０３）、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力する（ステップＳ３０４）。さらに、ステップＳ３０３からステップＳ３０４の操作を入力メッセージがすべて処理されるまで繰り返す（ステップＳ３０５）。
【００６０】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し（ステップＳ３０６）、ステップＳ３０６で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し（ステップＳ３０７）、ステップＳ３０１からステップＳ３０７を所望のハッシュ値が得られるまで繰り返す。
【００６１】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、入力部３２０が、状態更新による制御値と拡大したメッセージとの排他的論理和をとって、これをストリーム暗号の内部状態に入力するため、演算処理が軽量となる。
【００６２】
＜第４の実施形態＞
図７および図８を用いて、本発明の第４の実施形態について説明する。本実施形態に係るハッシュ値生成装置は、メッセージの拡大処理を行い、拡大されたメッセージをストリーム暗号化部の外部関数へと入力してストリーム暗号からハッシュ関数を容易に構成するものである。
【００６３】
＜ハッシュ値生成装置の構成＞
図７を用いて、本実施形態に係るハッシュ値生成装置の構成について説明する。なお、第１の実施形態および第３の実施形態と同一の符号を付す構成要素については、同様の機能を有するものであるからその詳細な説明は省略する。
【００６４】
本実施形態に係るハッシュ値生成装置は、図７に示すように、メッセージ拡大部１１０と、メッセージ入力部４１０と、内部状態更新部３１０と、ハッシュ値取得部３３０とから構成されている。また、メッセージ入力部４１０と、内部状態更新部３１０と、ハッシュ値取得部３３０とにより、ストリーム暗号化部４２０が構成されている。
【００６５】
メッセージ入力部４１０は、状態更新で使用される非線形関数である外部関数に拡大したメッセージを入力する。
【００６６】
＜ハッシュ値生成装置の処理＞
図８を用いて、本実施形態に係るハッシュ値生成装置の処理について説明する。
【００６７】
まず、前処理として入力メッセージがストリーム暗号のワードサイズの整数倍となるようにパディングを行い（ステップＳ４０１）、入力メッセージの拡大を行う（ステップＳ４０２）。
【００６８】
次に、拡大されたメッセージブロックをストリーム暗号化部へ入力し（ステップＳ４０３）、入力されたメッセージブロックによってストリーム暗号の内部状態を更新する（ステップＳ４０４）。さらに、得られた内部状態が状態更新によって再度更新され（ステップＳ４０５）、ステップＳ４０３からステップＳ４０５の操作を入力メッセージがすべて処理されるまで繰り返す（ステップＳ４０６）。
【００６９】
そして、すべてのメッセージの処理が終了した後に、状態更新を一定回数繰り返し（ステップＳ４０７）、ステップＳ４０７で得られた内部状態に対してさらに状態更新を行い、鍵ストリームを生成し（ステップＳ４０８）、ステップＳ４０１からステップＳ４０８を所望のハッシュ値が得られるまで繰り返す。
【００７０】
以上、説明したように、本実施形態によれば、ストリーム暗号からハッシュ関数を容易に構成することができる。さらに、加えて、外部関数が非線形関数であるため、攻撃に対する耐性を向上させることができる。
【００７１】
なお、ハッシュ値生成装置の処理をコンピュータ読み取り可能な記録媒体に記録し、この記録媒体に記録されたプログラムをハッシュ値生成装置に読み込ませ、実行することによって本発明のハッシュ値生成装置を実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７２】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されても良い。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７３】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７４】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００７５】
１１０；メッセージ拡大部
１２０；内部状態更新部
１３０；ハッシュ値取得部
１４０；ストリーム暗号化部
２１０；内部状態更新部
２２０；ハッシュ値取得部
２３０；ストリーム暗号化部
３１０；内部状態更新部
３２０；入力部
３３０；ハッシュ値取得部
３４０；ストリーム暗号化部
４１０；メッセージ入力部
４２０；ストリーム暗号化部
【図１】
2012049851.tif 000003
【図２】
2012049851.tif 000004
【図３】
2012049851.tif 000005
【図４】
2012049851.tif 000006
【図５】
2012049851.tif 000007
【図６】
2012049851.tif 000008
【図７】
2012049851.tif 000009
【図８】
2012049851.tif 000010