(57)【要約】【課題】リング型のハッシュサークルを形成し、どれか１つのハッシュ値を知っていれば、すべてのハッシュ値が検証可能なリング型のハッシュサークルを提供する。【解決手段】入力長ｌ、出力長ｍの複数の一方向性関数器が連結して、リング型をなすハッシュサークルであって、一方向性関数器が、出力長ｍの範囲で初期入力を選択し、複数回、一方向性関数を計算した出力値が初期入力と一致するようにする。【選択図】図１
2010060861.tif 000002
【特許請求の範囲】
【請求項１】
入力長ｌ、出力長ｍの複数の一方向性関数器が連結して、リング型をなすハッシュサークルであって、
前記一方向性関数器が、出力長ｍの範囲で初期入力を選択し、複数回、一方向性関数を計算した出力値が初期入力と一致するようにすることを特徴とするハッシュサークル。
【請求項２】
前記一方向性関数器が、連結する他の一方向性関数器の出力値の上位（ｍ−ｎ）ビットを初期入力とすることを特徴とする請求項１に記載のハッシュサークル。
【請求項３】
前記一方向性関数器が、ｍの衝突確率をパラメータにより制御することを特徴とする請求項１または請求項２に記載のハッシュサークル。
【請求項４】
前記一方向性関数器が、鍵ｋを入力とすることを特徴とする請求項１から請求項３に記載のハッシュサークル。
【請求項５】
ユーザ端末と認証サーバとからなる認証システムであって、
前記認証サーバが、
ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、
前記ユーザ端末にハッシュ値を配布する配布手段と、
未配布のハッシュ値を保管する保管手段と、
認証時に、前記ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値が前記ハッシュサークルの一部であるかどうかを検証する検証手段と、
を備えたことを特徴とする認証システム。
【請求項６】
ユーザ端末と鍵配布サーバとからなる鍵配布システムであって、
前記鍵配布サーバが、
ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、
コンテンツを格納するコンテンツ格納手段と、
ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成する鍵生成手段と、
該格納しているコンテンツを前記生成した鍵で暗号化する暗号化手段と、
該暗号化したコンテンツを前記ユーザ端末に送信する送信するコンテンツ提供手段と、
所定時間の経過毎に、異なる前記ハッシュ値を前記ユーザ端末に送信する送信手段と、
を備えたことを特徴とする鍵配布システム。
【請求項７】
複数のユーザ端末からなるメンバー確認システムであって、
各ユーザ端末が、ハッシュサークルを作成可能な前記請求項１に記載の一方向性関数に鍵を設けたものを備え、
任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信し、前記他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに該計算したハッシュ値を送信する処理を最後のメンバーまで行い、該最後のメンバーが計算した出力値と前記初期値が一致するか否かにより、メンバーの確認を行うことを特徴とするメンバー確認システム。
【請求項８】
ユーザ端末と認証サーバとからなる認証システムにおける認証方法であって、
前記認証サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備え、
前記認証サーバが、前記ユーザ端末にハッシュ値を配布する第１のステップと、
前記認証サーバが、未配布のハッシュ値を保管する第２のステップと、
前記認証サーバが、認証時に、前記ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値が前記ハッシュサークルの一部であるかどうかを検証する第３のステップと、
を備えたことを特徴とする認証方法。
【請求項９】
ユーザ端末と鍵配布サーバとからなる鍵配布システムにおける鍵配布方法であって、
前記鍵配布サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備え、
前記鍵配布サーバが、ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成する第１のステップと、
前記鍵配布サーバが、格納しているコンテンツを前記生成した鍵で暗号化する第２のステップと、
前記鍵配布サーバが、該暗号化したコンテンツを前記ユーザ端末に送信する第３のステップと、
前記鍵配布サーバが、所定時間の経過毎に、異なる前記ハッシュ値を前記ユーザ端末に送信する第４のステップと、
を備えたことを特徴とする鍵配布方法。
【請求項１０】
複数のユーザ端末からなるメンバー確認システムにおけるメンバー確認方法であって、
各ユーザ端末が、ハッシュサークルを作成可能な前記請求項１に記載の一方向性関数に鍵を設けたものを備え、
任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信する第１のステップと、
前記他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに該計算したハッシュ値を送信する第２のステップと、
前記第２のステップの処理を最後のメンバーまで行う第３のステップと、
該最後のメンバーが計算した出力値と前記初期値が一致するか否かにより、メンバーの確認を行う第４のステップと、
を備えたことを特徴とするメンバー確認方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リング型のハッシュサークル、これを適用した認証システム、鍵配布システム、メンバー確認システムおよび認証方法、鍵配布方法、メンバー確認方法に関する。
【背景技術】
【０００２】
従来より、コンピュータ等においてデータの格納、検索等のデータ管理を行う一つの手法としてハッシュ法がある。ハッシュ法は、登録するレコードデータ（以下、単に「データ」ともいう）又はその一部の値を直接入力とするハッシュ関数を用いて、その出力（ハッシュ値）をデータの格納場所とすることを原理としている。
【０００３】
このハッシュ関数の入力値を一般に探索キーと称している。例えば、人名とその人の年齢とのデータの組を格納する際に人名をハッシュ関数の入力値としてその格納場所を決定しようとする場合、人名及び年齢がレコードデータであり、レコードデータの一部を構成する人名が探索キーに相当する。ハッシュ法は、登録するデータそのものを用いるためデータの検索処理の高速化を図ることができる。
【０００４】
ハッシュ関数は、出力するハッシュ値が重複しないように作成された演算式などから構成されるが、扱う探索キーの種別やデータ量によっては、同じハッシュ値となる探索キーが存在する場合がある。この場合、後から登録しようとするデータは、ハッシュ関数から返されたハッシュ値をデータの格納場所とすることができない。このいわゆる衝突が発生した場合の代表的な対処方法としてオープンアドレス法とチェーン法とがある。
【０００５】
図９を用いて、オープンアドレス法について説明すると、オープンアドレス法は、クローズドハッシュ法、再ハッシュ法とも呼ばれ、データ格納場所を予め固定的に持つものである。なお、データを格納する場所は、一般に「ハッシュ表」といわれている。また、これ以降、各データの登録場所を「インデックス」と称することにする。各インデックスにはインデックス番号が設定されている。なお、この登録場所を「バケット」という場合もある。
【０００６】
データを登録する際、図９において最初に処理されるデータａのハッシュ値は３なので、データａはインデックス番号が３のインデックスに登録される。このように、ハッシュ法では、返されたハッシュ値と同じインデックス番号の領域にデータを登録することを基本としている。次に処理されるデータｂのハッシュ値は１なので、データｂはインデックス番号が１のインデックスに登録される。次に処理されるデータｃのハッシュ値は１なので、本来的にはインデックス番号が１のインデックスに登録されるべきであるが、そこには既にデータｂが登録されているので、他の空のインデックスを探さなくてはならない。
【０００７】
衝突が発生した場合に他のインデックスを取得する手法としては、複数のハッシュ関数を用意しておく手法がある。衝突が発生した場合には登録されるべきインデックスの後に続く最初の空きインデックスに登録するというルールの場合のハッシュ関数は、「元のハッシュ値＋１」、「元のハッシュ値＋２」・・・という内容になる。従って、このルールに従えば、データｃは、インデックス番号１に続くインデックス番号２のインデックスに登録されることになる。続いて、データｄのハッシュ値は２なので、本来的にはインデックス番号が２のインデックスに登録されるべきであるが、そこには既にデータｃが登録されているので、上述したルールに従うことによりデータｄは、インデックス番号が３のインデックスに登録される。このように、オープンアドレス法では、衝突が発生したときには再ハッシュを行うことで有限のデータ格納領域に各データを登録していく。
【０００８】
また、データ検索処理は、前述したデータ登録処理と同様の手順で処理を実行すれば、所望のデータを検索することができる。
【０００９】
また、データを削除する場合には、多少の工夫が必要となる。なぜなら、データ検索をする際の検索処理の終了条件が空のインデックスに出会ったときなので、登録されたデータを無条件に削除してしまったらその削除したデータのところでデータ検索が中断してしまい、それ以降のインデックスに登録されたデータは検索できなくなってしまうからである。そこで、物理的なデータ削除を行わずに削除データが登録されていたインデックスにフラグやマークを書き込むことで論理的な削除を行い、データ検索の際にはこの論理的に削除したインデックス以降に対する検索を可能にしている。また、検索途中に空のインデックスができないようにデータの移動を行う場合もある。
【００１０】
次に、チェーン法について、図１０を用いて説明すると、チェーン法は、直接チェーン法、オープンハッシュ法とも呼ばれ、ハッシュ表以外にオーバーフロー領域を持っている。
【００１１】
図１０において、最初に処理されるデータａのハッシュ値は１なので、データａはインデックス番号が１のインデックスに登録される。次に処理されるデータｂのハッシュ値は２なので、データｂはインデックス番号が２のインデックスに登録される。次に処理されるデータｃのハッシュ値は２なので、本来的にはインデックス番号が２のインデックスに登録されるべきであるが、そこには既にデータｂが登録されているので、他の格納場所を探さなくてはならない。
【００１２】
そこで、チェーン法では、オーバーフロー領域に新たにインデックスを作成し、本来登録されるべきインデックス番号２のインデックスにあるポインタからそのインデックスを連結する。次に、データｃのハッシュ値は２なので、本来的にはインデックス番号が２のインデックスに登録されるべきであるが、そこには既にデータｂが登録されているので、オーバーフロー領域にインデックスを作成し、インデックス番号２のインデックスから始めるチェーンの最後尾にそのインデックスを連結する。
【００１３】
同様にしてハッシュ値２のデータｅをそのチェーンの最後尾に接続する。この同じハッシュ値を持つデータのチェーンを「クラスタ」又は「リスト」という。クラスタの最後尾のインデックスのポインタには、終端を意味する値が書き込まれる。図１０では、これを「×」で表す。このように、チェーン法では、衝突が発生したときにはオーバーフロー領域にインデックスを作成していくので、図９におけるデータｄのように本来登録されるべきインデックス以外に再ハッシュされることはない。
【００１４】
なお、チェーン法には、図１０に示したダイナミックな領域にインデックスを作成してクラスタを形成する手法以外に、図１１に示したようにスタティックな領域すなわちハッシュ表内にクラスタを形成するというややオープンアドレス法に近い手法もある。この手法では、また、本来登録されるべきインデックスに他のハッシュ値を持つデータが衝突回避により既に格納されていると、登録済みのデータを移動させるようにする場合もある。
【００１５】
また、データ検索処理は、前述したデータ登録処理と同様の手順で処理を実行すれば、所望のデータを検索することができる。
【００１６】
また、データを削除する場合には、オープンアドレス法とほぼ同様でクラスタ内のチェーンを切らさないようにするために空きのインデックスをそのまま残すなど対処する必要がある（例えば、特許文献１参照）。
【特許文献１】特開平１１−６６０９５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
ところで、上記のように、ハッシュ法（関数）の応用例としては、１次元的にハッシュ関数を連結するハッシュチェーン法等があるが、上記のような、一般的なハッシュチェーン法等では、両端を接続してリングを構成することができない。
【００１８】
そのために、特定のハッシュ値を検証する場合には、先頭から順番にハッシュ関数を計算してハッシュ値を順次、算出する必要があり、計算負荷が大きく、検証に大きな手間を要するという問題があった。
【００１９】
そこで、本発明は、上記事情に鑑みてなされたものであり、リング型のハッシュサークルを形成し、どれか１つのハッシュ値を知っていれば、すべてのハッシュ値が検証可能なリング型のハッシュサークル、これを適用した認証システム、鍵配布システム、メンバー確認システムおよび認証方法、鍵配布方法、メンバー確認方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明は、上記した課題を解決するために以下の事項を提案している。
【００２１】
（１）本発明は、入力長ｌ、出力長ｍの複数の一方向性関数器が連結して、リング型をなすハッシュサークルであって、前記一方向性関数器が、出力長ｍの範囲で初期入力を選択し、複数回、一方向性関数を計算した出力値が初期入力と一致するようにすることを特徴とするハッシュサークルを提案している。
【００２２】
この発明によれば、入力長ｌ、出力長ｍの複数の一方向性関数器が連結されてリング型をなすハッシュサークルを構成し、一方向性関数器が、出力長ｍの範囲で初期入力を選択し、複数回、一方向性関数を計算した出力値が初期入力と一致するようにしている。したがって、このハッシュサークルを構成するどれか１つのハッシュ値を知っていれば、すべてのハッシュ値を計算することが出来、また、サークルとして閉じることを確認することで、そのハッシュ値がハッシュサークルの一部であることを確認できる。
【００２３】
（２）本発明は、（１）に記載のハッシュサークルにおいて、前記一方向性関数器が、連結する他の一方向性関数器の出力値の上位（ｍ−ｎ）ビットを初期入力とすることを特徴とするハッシュサークルを提案している。
【００２４】
この発明によれば、一方向性関数器が、連結する他の一方向性関数器の出力値の上位（ｍ−ｎ）ビットを初期入力とする。したがって、ハッシュ値は２＾（ｍ−ｎ）の確率で、初期入力に一致する。ただし、このときサークルの長さｘに対して、ｘ＜＝２＾（ｍ−ｎ）である必要がある。なお、ハッシュサークルがｘにおいても形成できないときは、ハッシュサークルが繋がるまでハッシュ値を計算し、その回数を公開する。
【００２５】
（３）本発明は、（１）または（２）に記載のハッシュサークルにおいて、前記一方向性関数器が、ｍの衝突確率をパラメータにより制御することを特徴とするハッシュサークルを提案している。
【００２６】
この発明によれば、一方向性関数器が、ｍの衝突確率をパラメータにより制御する。したがって、パラメータにより、ｍの衝突確率を制御することによって、ハッシュチェーンの長さを自在に制御することができる。
【００２７】
（４）本発明は、（１）から（３）に記載のハッシュサークルにおいて、前記一方向性関数器が、鍵ｋを入力とすることを特徴とするハッシュサークルを提案している。
【００２８】
この発明によれば、一方向性関数器が、鍵ｋを入力とすることもできる。したがって、メッセージ認証子（ＭＡＣ）を入力とすることもできる。
【００２９】
（５）本発明は、ユーザ端末と認証サーバとからなる認証システムであって、前記認証サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、前記認証サーバが、前記ユーザ端末にハッシュ値を配布する配布手段と、未配布のハッシュ値を保管する保管手段と、認証時に、前記ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値が前記ハッシュサークルの一部であるかどうかを検証する検証手段と、を備えたことを特徴とする認証システムを提案している。
【００３０】
この発明によれば、認証サーバが、ｋ個のハッシュ値とｋ個の（１）の一方向性関数とからなるハッシュサークルを備え、ユーザ端末にハッシュ値を配布するとともに、未配布のハッシュ値を保管する。そして、認証時に、ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値がハッシュサークルの一部であるかどうかを検証する。したがって、ハッシュサークルを構成するハッシュ値を予めユーザ端末に配布しておき、認証時に、この配布したハッシュ値がハッシュサークルの一部であるかどうかを検証することにより、的確にユーザの認証を実行することができる。
【００３１】
（６）本発明は、ユーザ端末と鍵配布サーバとからなる鍵配布システムであって、前記鍵配布サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、前記鍵配布サーバが、コンテンツを格納するコンテンツ格納手段と、ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成する鍵生成手段と、該格納しているコンテンツを前記生成した鍵で暗号化する暗号化手段と、該暗号化したコンテンツを前記ユーザ端末に送信する送信するコンテンツ提供手段と、所定時間の経過毎に、異なる前記ハッシュ値を前記ユーザ端末に送信する送信手段と、を備えたことを特徴とする鍵配布システムを提案している。
【００３２】
この発明によれば、鍵配布サーバが、ｋ個のハッシュ値とｋ個の（１）に記載の一方向性関数とからなるハッシュサークルを備え、ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成し、格納しているコンテンツを生成した鍵で暗号化する。そして、その暗号化したコンテンツをユーザ端末に送信する送信するとともに、所定時間の経過毎に、異なるハッシュ値をユーザ端末に送信する。したがって、ハッシュチェーンがリング状になっているため、どれか１つのハッシュ値を受け取ることが出来れば、残りのハッシュ値は計算できる。そのため、正規ユーザは、その時間に参加したとしてもすべての鍵を入手できる。
【００３３】
（７）本発明は、複数のユーザ端末からなるメンバー確認システムであって、各ユーザ端末が、ハッシュサークルを作成可能な前記請求項１に記載の一方向性関数に鍵を設けたものを備え、任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信し、前記他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに該計算したハッシュ値を送信する処理を最後のメンバーまで行い、該最後のメンバーが計算した出力値と前記初期値が一致するか否かにより、メンバーの確認を行うことを特徴とするメンバー確認システムを提案している。
【００３４】
この発明によれば、各ユーザ端末が、ハッシュサークルを作成可能な（１）に記載の一方向性関数に鍵を設けたものを備え、任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信し、他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに計算したハッシュ値を送信する処理を最後のメンバーまで行い、最後のメンバーが計算した出力値と初期値が一致するか否かにより、メンバーの確認を行う。したがって、メンバーの確認を的確かつ速やかに実行することができる。なお、第三者に対しては、初期値と鍵を埋め込んだハッシュ関数を公開することで、グループのメンバーであることを検証できる。
【００３５】
（８）本発明は、ユーザ端末と認証サーバとからなる認証システムにおける認証方法であって、前記認証サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、前記認証サーバが、前記ユーザ端末にハッシュ値を配布する第１のステップと、前記認証サーバが、未配布のハッシュ値を保管する第２のステップと、前記認証サーバが、認証時に、前記ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値が前記ハッシュサークルの一部であるかどうかを検証する第３のステップと、を備えたことを特徴とする認証方法を提案している。
【００３６】
この発明によれば、認証サーバが、ｋ個のハッシュ値とｋ個の（１）の一方向性関数とからなるハッシュサークルを備え、ユーザ端末にハッシュ値を配布するとともに、未配布のハッシュ値を保管する。そして、認証時に、ユーザ端末からそれぞれに配布されたハッシュ値の提供を要求し、送付されたハッシュ値がハッシュサークルの一部であるかどうかを検証する。したがって、ハッシュサークルを構成するハッシュ値を予めユーザ端末に配布しておき、認証時に、この配布したハッシュ値がハッシュサークルの一部であるかどうかを検証することにより、的確にユーザの認証を実行することができる。
【００３７】
（９）本発明は、ユーザ端末と鍵配布サーバとからなる鍵配布システムにおける鍵配布方法であって、前記鍵配布サーバが、ｋ個のハッシュ値とｋ個の前記請求項１に記載の一方向性関数とからなるハッシュサークルを備えるとともに、前記鍵配布サーバが、ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成する第１のステップと、前記鍵配布サーバが、格納しているコンテンツを前記生成した鍵で暗号化する第２のステップと、前記鍵配布サーバが、該暗号化したコンテンツを前記ユーザ端末に送信する第３のステップと、前記鍵配布サーバが、所定時間の経過毎に、異なる前記ハッシュ値を前記ユーザ端末に送信する第４のステップと、を備えたことを特徴とする鍵配布方法を提案している。
【００３８】
この発明によれば、鍵配布サーバが、ｋ個のハッシュ値とｋ個の（１）に記載の一方向性関数とからなるハッシュサークルを備え、ｋ個のハッシュ値に対して、他のハッシュ関数器で計算した出力値から鍵を生成し、格納しているコンテンツを生成した鍵で暗号化する。そして、その暗号化したコンテンツをユーザ端末に送信する送信するとともに、所定時間の経過毎に、異なるハッシュ値をユーザ端末に送信する。したがって、ハッシュチェーンがリング状になっているため、どれか１つのハッシュ値を受け取ることが出来れば、残りのハッシュ値は計算できる。そのため、正規ユーザは、その時間に参加したとしてもすべての鍵を入手できる。
【００３９】
（１０）本発明は、複数のユーザ端末からなるメンバー確認システムにおけるメンバー確認方法であって、各ユーザ端末が、ハッシュサークルを作成可能な前記請求項１に記載の一方向性関数に鍵を設けたものを備え、任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信する第１のステップと、前記他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに該計算したハッシュ値を送信する第２のステップと、前記第２のステップの処理を最後のメンバーまで行う第３のステップと、該最後のメンバーが計算した出力値と前記初期値が一致するか否かにより、メンバーの確認を行う第４のステップと、を備えたことを特徴とするメンバー確認方法を提案している。
【００４０】
この発明によれば、各ユーザ端末が、ハッシュサークルを作成可能な（１）に記載の一方向性関数に鍵を設けたものを備え、任意のユーザＡが、初期値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算して、他のユーザＢに該計算したハッシュ値を送信し、他のユーザＢが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有する一方向性関数によりハッシュ値を計算し、他のユーザＣに計算したハッシュ値を送信する処理を最後のメンバーまで行い、最後のメンバーが計算した出力値と初期値が一致するか否かにより、メンバーの確認を行う。したがって、メンバーの確認を的確かつ速やかに実行することができる。なお、第三者に対しては、初期値と鍵を埋め込んだハッシュ関数を公開することで、グループのメンバーであることを検証できる。
【発明の効果】
【００４１】
本発明によれば、リング状にハッシュ値を連接したハッシュサークルを構成することができるため、どれか１つのハッシュ値を知っていれば、すべてのハッシュ値が検証可能であり、サークルとして閉じていることを確認することにより、そのハッシュ値がハッシュサークルの一部であることを確認できるという効果がある。
【００４２】
また、本発明によれば、ハッシュ関数のみを用いた新たな暗号プリミティブが構成でき、同プリミティブを用いたアプリケーションが作成できるという効果がある。
【発明を実施するための最良の形態】
【００４３】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００４４】
＜ハッシュサークルの構成＞
本実施形態に係るハッシュサークルの構成を図１に示す。図１によれば、本実施形態に係るハッシュサークルは、ハッシュ関数器１、ハッシュ関数器２、ハッシュ関数器３の３つのハッシュ関数器から構成され、ハッシュ関数器１の出力であるハッシュ値Ｈ１がハッシュ関数器２の入力となり、ハッシュ関数器２の出力であるハッシュ値Ｈ２がハッシュ関数器３の入力となり、ハッシュ関数器３の出力であるハッシュ値Ｈ３がハッシュ関数器１の入力となることで、リング状のハッシュサークルを形成している。
【００４５】
このようなハッシュサークルを形成することにより、このハッシュサークルを構成するどれか１つのハッシュ値を知っていれば、すべてのハッシュ値を計算することが出来、また、サークルとして閉じることを確認することで、そのハッシュ値がハッシュサークルの一部であることを確認できる。
【００４６】
＜ハッシュ関数器の構成＞
本実施形態に係るハッシュ関数器は、図２に示すように、入力部１１と、初期入力生成部１２と、ハッシュ関数演算部１３と、衝突確率設定部１４と、出力部１５とから構成されている。
【００４７】
入力部１１は、入力長ｌのデータ列を入力し、これを初期入力生成部１２に供給する。初期入力生成部１２は、出力長ｍの範囲で初期入力を選択する。具体的には、衝突確率を制御するパラメータをｎとしたときに、前段のハッシュ関数器の出力値の上位（ｍ−ｎ）ビットを初期入力とする。これにより、ハッシュ値は２＾（ｍ−ｎ）の確率で、初期入力に一致する。なお、このときサークルの長さｘに対して、ｘ＜＝２＾（ｍ−ｎ）である必要がある。
【００４８】
ハッシュ関数演算部１３は、初期入力生成部１２から入力した初期入力と、衝突確率設定部１４により設定された衝突確率に応じて、複数回、演算を行って初期入力と一致するようなハッシュ値を演算する。なお、ハッシュ関数演算部１３は、鍵ｋを入力とすることもできる。これにより、メッセージ認証子（ＭＡＣ）を入力とすることもできる。
【００４９】
衝突確率設定部１４は、パラメータｎによりｍの衝突確率を制御する。このように、パラメータにより、ｍの衝突確率を制御することによって、ハッシュチェーンの長さを自在に制御することができる。出力部１５は、ハッシュ関数演算部１３が演算したハッシュ値を次段のハッシュ関数器の入力部に出力する。
【００５０】
＜実施例１＞
本実施例は、上記のハッシュサークルを応用した認証システムであり、図３に示すように、ユーザ端末２０と認証サーバ３０とがネットワーク４０を介して、構成されている。
【００５１】
さらに、ユーザ端末２０は、送受信部２１と、ハッシュ値保管部２２とから構成され、認証サーバ３０は、送受信部３１と、ハッシュサークル格納部３２と、ハッシュ値保管部３３と、検証部３４とから構成されている。
【００５２】
ここで、ユーザ端末２０の送受信部２１は、１つのハッシュ値を認証サーバ３０から受信するとともに、認証サーバ３０からのハッシュ値の提供要求に対して、受信したハッシュ値を送信する。ハッシュ値保管部２２は、認証サーバ３０から受信したハッシュ値を保管する記憶装置である。
【００５３】
また、認証サーバ３０の送受信部３１は、ユーザ端末２０に対して、１つのハッシュ値およびハッシュ値の提供要求を送信するとともに、ユーザ端末２０からハッシュ値を受信する。
【００５４】
ハッシュサークル格納部３２は、上記において説明したハッシュサークルを格納する記憶装置であり、ハッシュ値保管部３３は、ユーザ端末２０に送信した残りのハッシュ値を格納する記憶装置である。
【００５５】
検証部３４は、ユーザ端末２０から送付されたハッシュ値がハッシュサークルの一部であるかどうかを検証する。検証の結果、ユーザ端末２０から送付されたハッシュ値がハッシュサークルの一部である場合には、ハッシュ値を送付したユーザを正規のユーザとみなすことで、ユーザ認証を行う。
【００５６】
次に、図４を用いて、本実施例に係る認証システムの処理について説明する。
まず、認証サーバ３０において、ｋ個のハッシュ値でハッシュサークルを形成する。そして、そのうち、１つのハッシュ値をユーザ端末２０に送信し（ステップＳ１０１）、残りのハッシュ値を認証サーバ３０で保管する（ステップＳ１０２）。
【００５７】
認証サーバ３０が、ユーザを認証する際に、ハッシュ値の提供をユーザ端末２０に対して要求し、ユーザ端末２０は、ハッシュ値を送付する。そして、認証サーバ３０の検証部３４が、ユーザ端末２０から送付されたハッシュ値がハッシュサークルの一部であるかどうかを検証し、正しければ正規にユーザとみなす（ステップＳ１０３）。
【００５８】
したがって、本実施例によれば、ハッシュサークルを構成するハッシュ値を予めユーザ端末に配布しておき、認証時に、この配布したハッシュ値がハッシュサークルの一部であるかどうかを検証することにより、的確にユーザの認証を実行することができる。
【００５９】
＜実施例２＞
本実施例は、上記のハッシュサークルを応用した鍵配布システムであり、図５に示すように、ユーザ端末５０と鍵配布サーバ６０とがネットワーク４０を介して、構成されている。
【００６０】
さらに、ユーザ端末５０は、受信部５１と、コンテンツ保管部５２と、ハッシュ値保管部５３とから構成され、鍵配布サーバ６０は、ハッシュサークル格納部６１と、暗号鍵生成部６２と、暗号化部６３と、コンテンツ格納部６４と、送信部６５とから構成されている。
【００６１】
ここで、ユーザ端末５０の受信部５１は、暗号化されたコンテンツを受信し、このコンテンツをコンテンツ保管部５２に格納する。また、所定時間間隔ごとに、ハッシュ値を受信し、このハッシュ値をハッシュ値保管部５２に格納する。なお、コンテンツ保管部５２は、鍵配布サーバ６０から受信したコンテンツを保管する記憶装置であり、ハッシュ値保管部５３は、鍵配布サーバ６０から受信したハッシュ値を保管する記憶装置である。
【００６２】
また、鍵配布サーバ６０のハッシュサークル格納部６１は、上記において説明したハッシュサークルを格納する記憶装置である。暗号鍵生成部６２は、ハッシュサークルの各ハッシュ値に対して、別の一般的なハッシュ関数器で計算を行い、暗号鍵を生成する。
【００６３】
暗号化部６３は、コンテンツ格納部６４に格納されたコンテンツを暗号鍵生成部６２において生成した個々の暗号鍵で順に暗号化する。コンテンツ格納部６４は、コンテンツを保管する記憶装置である。送信部６５は、ユーザ端末５０に暗号化されたコンテンツを送信するとともに、所定時間間隔ごとに、ハッシュ値を送信する。
【００６４】
次に、図６を用いて、本実施例に係る認証システムの処理について説明する。
まず、鍵配布サーバ６０において、ｋ個のハッシュ値でハッシュサークルを形成する。そして、ハッシュサークルの各ハッシュ値に対し、別の一般的なハッシュ関数で計算した出力値を暗号鍵とする（ステップＳ２０１）。
【００６５】
次に、鍵配布サーバ６０のコンテンツ格納部６４に格納されたコンテンツを暗号鍵生成部６２において生成された個々の暗号鍵で順に暗号化して（ステップＳ２０２）、ユーザ端末５０に提供する（ステップＳ２０３）。さらに、鍵配布サーバ６０が正規のユーザ端末５０に対して、時刻ごとに異なるハッシュ値を送信する（ステップＳ２０４）。
【００６６】
したがって、本実施例によれば、ハッシュチェーンがリング状になっているため、どれか１つのハッシュ値を受け取ることが出来れば、残りのハッシュ値は計算できる。そのため、正規ユーザは、その時間に参加したとしてもすべての鍵を入手できる。
【００６７】
＜実施例３＞
本実施例は、上記のハッシュサークルを応用したグループメンバー確認システムであり、図７に示すように、例えば、複数のユーザ端末、ユーザ端末Ａと、ユーザ端末Ｂと、ユーザ端末Ｃと、ユーザ端末Ｄとから構成されている。
【００６８】
さらに、ユーザ端末Ａは、初期値入力部７１と、ハッシュ値算出部７２と、出力部７３とから構成され、ユーザ端末ＢおよびＣは、ハッシュ値入力部７４と、ハッシュ値算出部７２と、出力部７３とから構成され、ユーザ端末Ｄは、ハッシュ値入力部７４と、初期値格納部７５と、判定部７６とから構成されている。
【００６９】
ここで、ユーザ端末Ａの初期値入力部７１は、初期値を入力し、ハッシュ値算出部７２に出力する。ハッシュ値算出部７２は、入力した初期値と自身の鍵とを用いて、ハッシュ値を算出する。出力部７３は、ハッシュ値算出部７２が算出したハッシュ値をユーザ端末Ｂに出力する。
【００７０】
ユーザ端末Ｂのハッシュ値入力部７４は、ユーザ端末Ａの出力部７３が出力したハッシュ値を入力する。ハッシュ値算出部７２は、入力したハッシュ値と自身の鍵を用いて、ハッシュ値を算出する。出力部７３は、算出したハッシュ値をユーザ端末Ｃに出力する。なお、ユーザ端末Ｃも同様の処理を行う。
【００７１】
ユーザ端末Ｄのハッシュ値入力部７４は、ユーザ端末Ｃの出力部７３が出力したハッシュ値を入力する。判定部７６は、ハッシュ値入力部７４において入力したハッシュ値と初期値格納部７５に格納された初期値が一致するか否かを判定し、一致する場合には、ユーザ端末Ａの所有者がグループのメンバーであると判断する。
【００７２】
次に、図８を用いて、本実施例に係る認証システムの処理について説明する。
まず、グループのメンバーは、それぞれ鍵つきのハッシュ関数（ハッシュサークルが作成可能なハッシュ関数）を用意する。次に、初期値から、ユーザ端末Ａが、自分のハッシュ関数でハッシュ値を計算する。その際には、自分の鍵を使用する。そして、そのハッシュ値をユーザ端末Ｂに送信する（ステップＳ３０１）。
【００７３】
次に、ユーザ端末Ｂが受信したハッシュ値に対して、自身の鍵を用いて、自身が保有するハッシュ関数器によりハッシュ値を計算してユーザ端末Ｃに送信する（ステップＳ３０２）。
【００７４】
上記Ｓ３０１からＳ３０２までの処理を最後のユーザまで実行する（ステップＳ３０３）。そして、最後のユーザが計算した出力値と初期値とが一致するか否かにより、メンバーの確認を実行する（ステップＳ３０４）。
【００７５】
したがって、本実施例によれば、メンバーの確認を的確かつ速やかに実行することができる。なお、第三者に対しては、初期値と鍵を埋め込んだハッシュ関数を公開することで、グループのメンバーであることを検証できる。
【００７６】
なお、上記したハッシュサークルを応用した技術により、新しい認証方式などのサービスを実現することが期待できる。特に、今後、主要なサービスとして考えられているユビキタス事業等に適用することで、新たなサービスの創生を期待できる。
【００７７】
なお、上記で示した処理をコンピュータ読み取り可能な記録媒体にプログラムとして記録し、これをシステムを構成するユーザ端末や認証サーバ、鍵配布サーバに読み込ませ、実行することによって実施例に示した各種システムを実現することができる。ここでいうコンピュータシステムとは、ＯＳや周辺装置等のハードウェアを含む。
【００７８】
また、「コンピュータシステム」は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。
【００７９】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００８０】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施形態に係るハッシュサークルの構成の一例を示す図である。
【図２】本発明の実施形態に係るハッシュ関数器の構成図である。
【図３】本発明の実施例１に係るシステム構成図である。
【図４】本発明の実施例１に係るシステムの処理フローである。
【図５】本発明の実施例２に係るシステム構成図である。
【図６】本発明の実施例２に係るシステムの処理フローである。
【図７】本発明の実施例３に係るシステム構成図である。
【図８】本発明の実施例３に係るシステムの処理フローである。
【図９】従来技術を説明するための図である。
【図１０】従来技術を説明するための図である。
【図１１】従来技術を説明するための図である。
【符号の説明】
【００８２】
１・・・ハッシュ関数器
２・・・ハッシュ関数器
３・・・ハッシュ関数器
１１・・・入力部
１２・・・初期入力生成部
１３・・・ハッシュ関数演算部
１４・・・衝突確率設定部
１５・・・出力部
２０・・・ユーザ端末
２１・・・送受信部
２２・・・ハッシュ値保管部
３０・・・認証サーバ
３１・・・送受信部
３２・・・ハッシュサークル格納部
３３・・・ハッシュ値保管部
３４・・・検証部
４０・・・ネットワーク
５０・・・ユーザ端末
５１・・・受信部
５２・・・コンテンツ保管部
５３・・・ハッシュ値保管部
６０・・・鍵配布サーバ
６１・・・ハッシュサークル格納部
６２・・・暗号鍵生成部
６３・・・暗号化部
６４・・・コンテンツ格納部
６５・・・送信部
７１・・・初期値入力部
７２・・・ハッシュ値算出部
７３・・・出力部
７４・・・ハッシュ値入力部
７５・・・初期値格納部
７６・・・判定部
【図１】
2010060861.tif 000003
【図２】
2010060861.tif 000004
【図３】
2010060861.tif 000005
【図４】
2010060861.tif 000006
【図５】
2010060861.tif 000007
【図６】
2010060861.tif 000008
【図７】
2010060861.tif 000009
【図８】
2010060861.tif 000010
【図９】
2010060861.tif 000011
【図１０】
2010060861.tif 000012
【図１１】
2010060861.tif 000013