(57)【要約】  エクスパンダグラフ（expander graph）からのハッシュ関数構築が説明されている。一態様において、エクスパンダグラフはハッシュ関数を計算するために探索される。エクスパンダグラフは入力メッセージのそれぞれのサブセットを使用して探索される。最後に探索された頂点（vertex）のラベルがハッシュ関数の出力となる。
2009514036.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
ハッシュ関数への入力に従ってエクスパンダグラフを探索し、前記エクスパンダグラフは入力メッセージのそれぞれのサブセットを使用して探索されるステップと、
最後に探索された頂点のラベルを判定するステップと、
ハッシュ関数の結果として前記ラベルを出力するステップと
を備えたことを特徴とするコンピュータ実装方法。
【請求項２】
前記エクスパンダグラフはRamanujanグラフであることを特徴とする請求項１に記載の方法。
【請求項３】
前記エクスパンダグラフはLubotzky-Phillips-Sarnakエクスパンダグラフであることを特徴とする請求項１に記載の方法。
【請求項４】
前記エクスパンダグラフは、特性ｐの有限フィールド上での超特異楕円曲線のグラフであることを特徴とする請求項１に記載の方法。
【請求項５】
前記結果は暗号ハッシュであることを特徴とする請求項１に記載の方法。
【請求項６】
前記ハッシュ関数の衝突を見つけることは計算量的に困難であることを特徴とする請求項１に記載の方法。
【請求項７】
前記入力メッセージは一定のエントロピー度を有し、前記ハッシュ関数は衝突に対する耐性を有していることを特徴とする請求項１に記載の方法。
【請求項８】
前記探索するステップは、
前記入力メッセージをセグメントに分割するステップと、
前記セグメントの少なくともサブセットについて、エクスパンダグラフの中の次のそれぞれの頂点への経路を、サブセットの特定セグメントの態様に基づいて判定するステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項９】
前記エクスパンダグラフはｎ個の頂点を含み、前記入力メッセージはエントロピー度を有し、前記方法は、
それぞれのラベルを前記グラフの頂点に割り当てるステップと、
前記エントロピー度を判定するステップと
をさらに備え、
前記探索するステップが、前記エントロピー度を使用して前記ｎ個の頂点を探索して、完全にランダムな頂点出力を特定するステップをさらに備え、
前記出力が前記ｎ個の頂点の最後に探索された頂点のそれぞれの割り当てられたラベルである
ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記エントロピー度を判定するするステップは、エクストラクタ関数を使用して前記入力メッセージに関連するするランダム度を判定するステップをさらに備えたことを特徴とする請求項９に記載の方法。
【請求項１１】
メッセージをセグメントに分割するステップと、
ハッシュ関数への入力に従ってエクスパンダグラフを探索し、前記エクスパンダグラフが前記エクスパンダグラフの中のｎ個の頂点の次の頂点への経路を判定するために前記セグメントのそれぞれを使用して探索されるステップと、
最後に探索された頂点のラベルを判定するステップと、
前記ハッシュ関数の結果として前記ラベルを出力するステップと
について、プロセッサにより実行可能なコンピュータプログラムの命令を備えたコンピュータ可読記憶媒体。
【請求項１２】
前記エクスパンダグラフはRamanujanグラフまたはLubotzky-Phillips-Sarnakエクスパンダグラフであることを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１３】
前記結果は暗号ハッシュであることを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１４】
前記ハッシュ関数の衝突を見つけるステップは計算量的に困難であることを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１５】
前記メッセージは、前記メッセージから抽出されたエントロピー度に基づいて前記セグメントに分割されることを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１６】
前記エクスパンダグラフはｎ個の頂点を備え、前記メッセージはエントロピー度を有し、前記コンピュータ可読命令は、
前記グラフの頂点にそれぞれのラベルを割り当てるステップ、
前記エントロピー度を判定するステップと
についての構造をさらに備え、
探索するステップは、完全にランダムな頂点出力を特定するために前記エントロピー度を使用して前記ｎ個の頂点を探索するステップをさらに備え、
前記出力は前記ｎ個の頂点の最後に探索された頂点のそれぞれの割り当てられたラベルである
ことを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記エントロピー度を判定するためのコンピュータプログラムの命令は、エクストラクタ関数を使用して前記メッセージに関連するランダム度を判定するための命令をさらに備えることを特徴とする請求項１１に記載のコンピュータ可読記憶媒体。
【請求項１８】
プロセッサと
前記プロセッサに結合されたメモリであって、
エクスパンダグラフの中のｎ個の頂点のそれぞれの頂点にそれぞれのラベルを割り当てるステップと、
入力メッセージのランダム度を判定するステップと、
ハッシュ関数への入力として前記エクスパンダグラフを探索し、前記エクスパンダグラフの中の頂点は前記ランダム度に基づいて探索されるステップと、
前記頂点の最後に探索された頂点のラベルを判定するステップと、
前記ハッシュ関数の結果として前記ラベルを出力するステップと
についての前記プロセッサにより実行可能なコンピュータプログラム命令を備えたメモリと
を備えることを特徴とするコンピューティングデバイス。
【請求項１９】
前記エクスパンダグラフはRamanujanグラフまたはLubotzky-Phillips-Sarnakエクスパンダグラフであることを特徴とする請求項１８に記載のコンピューティングデバイス。
【請求項２０】
前記結果は暗号ハッシュであることを特徴とする請求項１８に記載のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
ハッシュ関数構築は、多くのアルゴリズムおよび暗号プロトコルにおいて使用されている。これらは、そのイメージを「均一に」分布する関数ｆ：Ｕ→Ｓ（ただし、｜Ｕ｜≧｜Ｓ｜）である。言い換えれば、多くの場合、ｘ∈Ｕ，｜｛ｙ∈Ｕ｜ｆ（ｘ）＝ｙ｝｜は、｜Ｕ｜／｜Ｓ｜に近似している。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
衝突するペア、すなわちペア（ｘ，ｙ）の数をf（x）=f（y）のように最小限にするハッシュ関数は非常に有用である。ハッシュ関数の暗号アプリケーションでは、一般的に、衝突を巧みに処理する問題を困難にすることが望まれている。このことは、f（x）=f（y）のように離散的エレメント（distinct elements）ｘおよびｙを見つけるタスクが計算量的に困難であることを意味している。次のような弱いプロパティ、すなわち、ｘが与えられているとき、f（x）=f（y）のように別のｙを見つけることを困難にすることが関心事になっていることがよくある。
【課題を解決するための手段】
【０００３】
以下の簡単な説明は、下述する詳細な説明の個所で詳しく説明されている概念のいくつかを簡単に紹介したものである。この簡単な説明は、特許請求の範囲に記載の主題の重要な特徴または基本的特徴を特定するものではなく、また特許請求の範囲に記載の主題の範囲を判定する際の一助として使用されるものでもない。
【０００４】
以上の観点から、本明細書では、エクスパンダグラフ（expander graphs）からのハッシュ関数構築が説明されている。一態様では、エクスパンダグラフはハッシュ関数への入力として探索（walk）される。このエクスパンダグラフは、入力メッセージのそれぞれのサブセットを使用して探索される。ハッシュ関数の出力は最後に探索された頂点のラベルである。
【０００５】
図面において、コンポーネントの参照符号の左端の数字はそのコンポーネントが最初に現れる特定の図面を示している。
【発明を実施するための最良の形態】
【０００６】
概要
以下では、エクスパンダグラフからのハッシュ関数構築のためのシステム（例：システム、装置、コンピュータ可読記憶媒体など）および方法について、図１乃至図４を参照して説明する。ハッシュ関数は、特定のエクスパンダグラフ（expander graph）上で探索（walk）を行なうことにより構築される。エクスパンダグラフ上でのランダムな探索は非常に高速にミックスするので、ハッシュ関数の出力は入力メッセージが均一（uniform）にランダムであるとき均一であるのが一般的である。一実施形態では、システムおよび方法は、エクストラクタ（extractor）をエクスパンダグラフと併用してハッシュ関数を構築している。この実装において、入力メッセージは最小エントロピー（min-entropy）で一定の下限を有している。例えば、メッセージを暗号で署名することは（これはハッシングによって行なわれる）、そのメッセージに「ランダムなパッド（random pad）」を付加したあとで行なわれる（このプロセスにより、エントロピーがその署名に注入される）。入力メッセージはある程度の少量のエントロピーを有しているとの想定の下で、エクストラクタはそのランダム度（randomness）度を抽出し、そのあとでエクストラクタの出力に従って探索を実行するために利用されている。
【０００７】
エクスパンダグラスからのハッシュ関数構築ためのシステムおよび方法の上記およびその他の態様について、ここでより詳細に説明する。
【０００８】
例示的なシステム
必ずしも必要でないが、エクスパンダグラフからのハッシュ関数構築のためのシステムおよび方法は、パーソナルコンピュータなどのコンピューティングデバイスによって実行されるコンピュータ実行可能命令（プログラムモジュール）の一般的コンテキストの中で説明されている。プログラムモジュールには、特定のタスクを実行し、または特定の抽象データ型を実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが一般的に含まれる。システムおよび方法は上記コンテキストの中で説明されているが、以下に説明されている動作および操作は、ハードウェアにおいて実装されることもありうる。
【０００９】
図１は、一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示的なシステム１００を示している。システム１００はコンピューティングデバイス１０２を含み、このコンピューティングデバイス１０２はシステムメモリ１０６に結合された１または２以上の処理ユニット１０４を含む。プロセッサ１０４は、プログラムモジュール１０８からコンピュータプログラム命令を取ってきて実行し、システムメモリ１０６のプログラムデータ１１０の一部分へ／からデータを取ってきて、格納する。プログラムモジュール１０８には、例えば、エクスパンダグラフのハッシュ関数構築モジュール（「ＥＧＨＦ構築モジュール」）１１２および他のプログラムモジュール１１４が含まれている。他のプログラムモジュール１１４は、例えば、オペレーティングシステム、およびモジュール１１２によって生成されたエクスパンダグラフベースのハッシュ関数構築１１６を利用する１または２以上のアプリケーションを含んでいる。このようなハッシュ関数構築１１６を利用すると便利であるアプリケーションは多い。例えば、このような構築は、暗号（cryptography）、ハッシュテーブル、エラー訂正、オーディオ識別、Rabin-Karp文字列探索アルゴリズム（Rabin-Karp string search algorithm）などを実現する１または２以上のアプリケーションにおいて利用されることがある。
【００１０】
ＥＧＨＦ構築モジュール１１２は、入力メッセージ１１８およびｎ個の頂点（vertex）のエクスパンダグラフ１２０からハッシュ関数構築を生成する。エクスパンダグラフ１２０は高い頂点（high vertex）または辺の拡張（edge expansion）をもつ疎グラフ（sparse graph）であり、言い換えれば高度に結合されている。一実装では、エクスパンダグラフ１２０はRamanujanグラフである。一実装では、入力メッセージはあるランダム度（またはエントロピー）を有している。
【００１１】
例えば、一実装では、エクスパンダグラフ１２０は次のように判定される。ｐを素数（prime number）、ｌ（≠ｐ）を別の素数とする。エクスパンダグラフG（p,ｌ）は、その頂点集合Ｖとして有限フィールドＦq，ｑ＝ｐ2上の超特異ｊ不変量（supersingular j-invariants） の集合を有している。そのｊ不変量がｊ1およびｊ2である超楕円曲線間がｌ度のisogenyであれば、頂点ｊ1およびｊ2の間に辺が存在する。グラフG（p,ｌ）は、ｌ+1正規Ramanujanグラフであることが知られている。G（p,ｌ）の頂点の番号は、約p/12である四元数代数（quaternion algebra）Bp,∞のクラス番号である。G（p,ｌ）はエクスパンダグラフ１２０である。
【００１２】
別の実施形態では、エクスパンダグラフ１２０は、以下に「代替的実施形態」という名前の項目で説明されているようにLubotzky-Phillips-Sarnakエクスパンダグラフである。
【００１３】
ハッシュ関数構築１１６を生成するために、エクスパンダグラフのハッシュ関数構築モジュール１１２はメッセージ１１８を特定する。一実装では、メッセージはエントロピー度（degree of entropy）を有している。ＥＧＨＦ構築モジュール１１２は、エクスパンダグラフ１２０を含むｎ個の頂点の各頂点に、それぞれ名前またはラベルを割り当てる。入力メッセージにエントロピー度がそこと関連付けられているとき、ＥＧＨＦ構築モジュール１１２は、エクストラクタ関数（extractor function）でそのランダム度を抽出または判定する。このようなメッセージからランダム度を抽出する抽出関数および手法の例は、下述する「入力からランダム度の抽出」という名前の項目で詳しく説明されている。
【００１４】
構築モジュール１１２は、ランダムに探索（または訪問（visit））するエクスパンダグラフ１２０の頂点を特定する構成可能頂点辺規則（configurable vertex edge convention）の観点で、抽出したエントロピー度（存在するとき）または他の基本基準（下述する）に基づいて、入力メッセージ１１８のｋ長ビットセグメントを特定する。探索する操作の例およびエクスパンダグラフ１２０は、「例示的な手順」という名前の項目において以下でより詳細に説明される。頂点のうち最後に探索された頂点に関連付けられたそれぞれの名前／ラベルはハッシュ関数構築１１４の出力を表わしている。
【００１５】
入力からのランダム度の抽出
最小エントロピー：Ｘを{0, 1}nの中で値を受け入れるランダム変数であるとする。Ｘの最小エントロピーは次の量であると定義される。
【００１６】
【数１】
2009514036.tif 000003
【００１７】
分布の近似性：ＸとＹを{0,1}n上の２つの分布であるとする。これらは、
【００１８】
【数２】
2009514036.tif 000004
【００１９】
の場合に、εだけ近似していると言われる（ただし、εは実数である）。
【００２０】
エクストラクタ：関数Ext:{0,1}n x {0,1}d →{0,1}mは、{0,1}n上の均一分布の少なくともｋとＵdの最小エントロピーの{0,1}n上の任意のランダム変数Ｘについて、分布Ext（X,Ud）がεだけＵmに近似している場合、（k,ε）エクストラクタと呼ばれる。
【００２１】
命題：Ext:{0,1}nx{0,1}d→{0,1}mが（k,ε）エクストラクタである場合、ランダムシード（random seed）σ∈{0,1}dの大部分の選択は、分布Ext（X,σ）はＵmにεだけ近似している。
【００２２】
証明：分布Ext（X,Ud）は、Xd=Ext（X,σ）で定義されたσ∈{0,1}dによってインデックスされた分布のファミリＸdの中からランダムに分布を均一に選択するものと記述することができる。Ｅｘｔがエクストラクタであるということは、これらの分布の多くがＵmにεだけ近似していることを意味している（証明の終わり）。
【００２３】
多項式の時間エクストラクタの構築は、dが少なくともlog2nおよびm=k1-α（ただし、αは任意の実数）の場合、k>nγ（γ<1）およびε>0については知られている。
【００２４】
ハッシュ関数の構築
ランダム変数Ｍ（すなわち、入力メッセージ１１８）は、ハッシュ関数構築１１６への入力を示しており、少なくともlog1+βnの最小エントロピーを有している。ただし、ｎはG（p,ｌ）およびβ>0の頂点の数である。{0,1}Nを入力空間とする。Ｍのエントロピー度１２２を判定するために、構築モジュール１１２はエクストラクタ関数Extを実現し、パラメータをk=log1+βn, εを非常に小さくし、m=Θ（log1+αn）として関数Ext:{0,1}N x {0,1}d→{0,1}mを固定している。例示的に説明するために、このようなパラメータは「他のデータ」１２４のそれぞれの部分として示されている。システム１００はN=k0(1)と想定している。構築モジュール１１２は{0,1}dからランダムにαを均一に選択する。入力x∈{0,1}Nが与えられているとき、構築モジュール１１２はω=Ext（x,a）（すなわチェーントロピー度１２２）を計算する。この構築の結果はサイズｍのストリングである。構築モジュール１１２は、ωによって与えられた指示に従って一定の頂点ｖ0から始まってｍの探索を実行し、ハッシュ関数１１６の出力は最後に探索された頂点のラベルである。
【００２５】
そのノードが超特異楕円曲線モジューロ素数ｐ、および辺が楕円曲線間のｌ度のisogenyであるエクスパンダグラフでは、グラフ周りの探索ステップを次のように行なうことができる。
【００２６】
楕円曲線Ｅに対応するノードから始まって、最初にE[ｌ]のｌトーションのジェネレータＰとＱを見つける。この目的のために、
１．ｎを
【００２７】
【数３】
2009514036.tif 000005
【００２８】
とする。
２．
【００２９】
【数４】
2009514036.tif 000006
【００３０】
とする。
【００３１】
【数５】
2009514036.tif 000007
【００３２】
の数はＥ上の有理点である（オリジナル）
３．s = S/ｌkをセットする。ただし、ｌkはＳを除算するｌの最大倍数である（注：k ≧ 2）。
４．E[ｌ]から２点ＰとＱをランダムに選択する：
（a） 
【００３３】
【数６】
2009514036.tif 000008
【００３４】
から２点Ｕ、Ｖをランダムに選択する。
（b） P'=sUおよびQ'=sVをセットする。Ｐ‘またはＱ’のどちらかが０に等しいときは、ステップ（ｉ）を繰り返す。
（c） 
【００３５】
【数７】
2009514036.tif 000009
【００３６】
および
【００３７】
【数８】
2009514036.tif 000010
【００３８】
であるが、
【００３９】
【数９】
2009514036.tif 000011
【００４０】
および
【００４１】
【数１０】
2009514036.tif 000012
【００４２】
となるような最小i1,i2を見つける。
（d） 
【００４３】
【数１１】
2009514036.tif 000013
【００４４】
および
【００４５】
【数１２】
2009514036.tif 000014
【００４６】
をセットする。
５．周知のShanks Baby-steps-Giant-stepsアルゴリズムを使用して、ＱがＰによって生成されたグループに属しているかどうかを判定する。属していれば、ステップ（d）を繰り返す。
【００４７】
Ｅにisogenyであるｌ+1楕円曲線の
【００４８】
【数１３】
2009514036.tif 000015
【００４９】
におけるｊ不変量はj1,…,jl+1である。これらを見つけるために、
（a） G1=<Q>およびG1+i=<P+（i-1）*Q>とする。ただし、1≦i≦ｌ
（b） 各ｉについて（ただし、1≦i≦ｌ+1）、Veluの公式を使用して楕円曲線Ｅ／Ｇのｊ不変量を計算する。
【００５０】
例えば、２isogenyをもつ超特異楕円曲線のグラフを使用すると、次のような明示的方法でランダムな探索を行なうことができる。各ステップにおいて、Ｅの３非トリビアル２トーション点を見つけたあと、それらを事前に指定したようにそのｘ座標となるように配列する。次に、ハッシュ関数への入力ビットを使用して、次に探索するノードに到達するためにどの点を選択して楕円曲線を割る（quotient）かを判定する。
【００５１】
ハッシュ関数の出力は殆ど均一であるとの証明
命題によって、エクスパンダグラフのハッシュ関数構築モジュール１１２によって実現されたエクストラクタ関数の出力は均一に近似しており、エクスパンダグラフ１２０について行なう探索はランダムな探索であることに非常に近似している（探索がランダムであることは、グラフ上のある頂点ｖにいるとき、次のステップでは等しくその近隣のいずれかにいる可能性があることを意味している）。グラフG（p,ｌ）はｎ個の頂点を有していて、m=Ω（log1+αn）である以上、探索は高速にミックスし、出力頂点は均一に非常に近似している。次に、上記の表現を正確にする。ｎ個の頂点のｄ正規グラフＧについてのO（log n）のランダム探索が高速にミックスすると言う１つの方法は、次のように言うことである。
【００５２】
【数１４】
2009514036.tif 000016
【００５３】
上記において、εは小さく、ＡはＧの隣接マトリックスであり、ｖは標準単位ベクトルのいずかにすることができ、１はベクトル（1,1,…,1）である。次のマトリックス
【００５４】
【数１５】
2009514036.tif 000017
【００５５】
は、グラフ１２０上の均一にランダムなMarkovチェーンの遷移マトリックス（transition matrix）と考えることができる。この実施形態では、システム１００は、グラフ１２０について殆どランダムな探索を実現している。これは、マトリックスＢを次のように遷移マトリックスとして使用するものと考えることができる。すなわち、
【００５６】
【数１６】
2009514036.tif 000018
【００５７】
およびδは小さな実数である（ただし、記号‖‖はマトリックスノルム（matrix norm）を意味している）。言い換えれば、構築モジュール１１２はランダム探索を少量だけ混乱させる。以下の命題は、δを十分に小さくすることができれば、この新しいランダム探索は高速にミックスすることを示している。
【００５８】
命題：ＡとＢを２つのサブ確率論的マトリックス（sub-stochastic matrix）であるとすると、‖Ak-Bk‖≦‖A-B‖
【００５９】
証明：差Ak-Bkは次のように書くことができる。
【００６０】
【数１７】
2009514036.tif 000019
【００６１】
両辺にノルムをとり、‖Ａ‖＝‖Ｂ‖＝１の事実を使用すると（これらはサブ確率論的マトリックスであるので）、結果が得られる（証明の終わり）。
【００６２】
ここで行なうランダム探索の長さはO （log n）であるので、パラメータδを次になるように整理できる場合、
【００６３】
【数１８】
2009514036.tif 000020
【００６４】
結果として得られるおおよそのランダム探索も高速にミックスすることになる。これは、エクストラクタのパラメータεを次に等しくなるようにセットすることによって整えることができる。
【００６５】
【数１９】
2009514036.tif 000021
【００６６】
衝突に対する耐性
このハッシュ関数１１６の下で衝突を明示的に見つけることは、同じｌパワー度のペアの超特異楕円曲線間の２つのisogeny （isogenies）を見つけるのと同じである。グラフG（p,ｌ）に小さな円がなければ、この問題が非常に困難であるのは、曲線間の高度のisogenyを構築することが周知の計算量的に困難な問題であるからである。
【００６７】
代替的実施形態
上述したグラフG（p,ｌ）を使用することの代替的方法として、システム１００は、lubotzky-Phillips-Sarnakエクスパンダグラフ１２０を利用している。ｌとｐを２つの離散的素数とし、ｌが小さな素数で、ｐが相対的に大であるとする。また、ｐとｌは≡1 mod 4、ｌは二次式の残余mod pであると想定する（このケースが該当するのはｌ(p-1)/2≡1 mod pの場合である）。パラメータｌとｐをもつＬＰＳグラフをＸl,pとする。次に、グラフＸを構成する頂点と辺を定義する。Ｘl,pの頂点はPSL（2,Fp）におけるマトリックスである。すなわち、任意のマトリックスＡに対する等価関係式Ａ＝−Ａと共に行列式（determinant）１をもつエントリがＦpにある可逆２ｘ２マトリックスである。行列式１をもつ２ｘ２マトリックスＡが与えられているとき、頂点の名前は、集合{0,...、p-1｝4の通常の配列においてどちらが語彙論的に小さいかに応じてＡのエントリまたは−Ａのエントリの４タプル（4-tuple）となる。次にグラフを構成する辺を記述する。マトリックスＡはマトリックスｇiＡに結合され、ここでｇiは以下で明示的に定義されたマトリックスである。ｉをi2 ≡-1 mod pを満足する整数とする。方程式ｇ02＋ｇ22＋ｇ32＝ｌに対する8（ｌ+1）の解は正確にg=（g0,g1,g2,g3）である。これらの間には、正確にはｇ0＞０および奇数で、ｇj（ただし、j=1,2,2）が偶数であるｌ+1が存在する。その各々のｇにマトリックス
【００６８】
【数２０】
2009514036.tif 000022
【００６９】
を関連付ける。
【００７０】
これにより、PSL（2,Fp）においてｌ＋1マトリックスの集合Ｓが得られる。ｇjはこの集合Ｓにおけるマトリックスである。これは、ｇがＳにあれば、ｇ-1もそうであるという事実である。さらに、ｌは小であるので、マトリックスの集合Ｓは徹底的なサーチ（exhaustive search）によって非常に高速で見つけることができる。
【００７１】
例示的な手順
図２は、一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示的な手順を示している。具体例を示して説明するために、手順２００の操作は図１のシステム１００のコンポーネントと関連付けて説明されている。コンポーネントの参照符号の左端の数字は、そのコンポーネントが最初に現われた特定の図を示している。
【００７２】
ブロック２０２において、ＥＧＨＦ構築モジュール１１２（図１）は入力メッセージ１１８をセグメントに分割する。例えば、入力メッセージは長さがＮになっている。ｋ正規エクスパンダグラフにｎ個の頂点があるとすると（各頂点には名前／ラベルが付けられている）、いずれか１つの頂点から出た各辺の名前はlog kビットになっている。入力メッセージ１１８は長さがlog kのチャンク（chunk）に分割される。ブロック２０４において、ＥＧＨＦ構築モジュール１１２は、ハッシュ関数への入力としてエクスパンダグラフ１２０を探索（walk）する。この探索は次のようにして判定される。すなわち、ある頂点ｖにいるとすると、探索の次の頂点はlog kビットの次のチャンクを入力から読み取って、頂点ｖから通り抜けようとする辺を判定することによって判定され、その辺の他方のエンドポイントが探索上の次の頂点となる。例えば、ＥＧＨＦ構築モジュールは１１２は、入力メッセージ１１８の最初のｋビット（セグメント／チャンク）によって指定された最初の頂点からエクスパンダグラフ１２０内の辺をランダムに探索することを開始する。エクスパンダグラフ１２０内で次に探索される頂点はlog kビットの次のチャンクによって指定される。これらの操作は、辺の名前がエクスパンダグラフ内の頂点にどのように対応付けられるかを規定している規則に鑑みて繰り返し実行される。このような規則の例として、各々の頂点ｖについて、関数fv:{1,..,k}→Ｅが存在することがある。従って、fv（1）はｖからの最初の辺であり、fv（2）はｖからの二番目の辺であり、以下同様である。
【００７３】
ブロック２０６において、ＥＧＨＦ構築モジュール１１２は、最後に探索された頂点のラベルを判定する。ブロック２０８において、ＥＧＨＦ構築モジュール１１２はハッシュ関数の結果としてそのラベルを出力する。
【００７４】
図３は、一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示的な手順を示す図である。具体例を示して説明するために、手順３００の操作は図１のシステム１００のコンポーネントと関連付けて説明されている。ブロック３０２において、エクスパンダグラフのハッシュ関数構築モジュール（ＥＧＨＦ構築モジュール）１１２（図１）はエントロピー度をもつメッセージ１１８を特定する。ブロック３０４において、ＥＧＨＦ構築モジュール１１２は、エクスパンダグラフ１２０の中の各頂点にそれぞれのラベルを割り当てる。ブロック３０６において、ＥＧＨＦ構築モジュール１１２は、エクストラクタ関数を使用して入力メッセージ１１８におけるエントロピー度を判定する。判定されたエントロピー度は、抽出されたエントロピー度として示される。ブロック３０８において、ＥＧＨＦ構築モジュールは、抽出されたエントロピー度に基づいてエクスパンダグラフ１２０を探索する。ブロック３１０において、ＥＧＨＦ構築モジュール１１２は、最後に探索された頂点に県連付けられたラベルとエクスパンダグラフ１２０を、ハッシュ関数構築１１６の結果として出力する。すなわち、ブロック３０２から３１０までの操作は、ハッシュ関数構築１１６の操作に対応している。
【００７５】
例示動作環境
図４は、エクスパンダグラフからのハッシュ関数構築を完全にまたは部分的に実現できる適当なコンピューティング環境の例を示す図である。例示コンピューティング環境４００は、図１の例示システムおよび図２と図３の例示的な操作のための適当なコンピューティング環境の単なる一例であり、本明細書に説明されているシステムおよび方法の使用または機能の範囲に関してなんらかの制限があることを示唆しない。また、コンピューティング環境４００は、コンピューティング環境４００に図示されているコンポーネントのいずれについても、またはその組み合わせについても、任意の依存関係または要求条件があるものと解釈されるべきではない。
【００７６】
本明細書に説明されている方法およびシステムは、他の多数の汎用または特定目的コンピューティングシステム、環境または構成と共に動作可能である。使用するのに適した周知コンピューティングシステム、環境、および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたはデバイスのいずれかを含む分散コンピューティング環境などがあるが、これらに限定されない。ハンドヘルドコンピュータや他のコンピューティングデバイスのように、リソースが限られたクライアントでは、このフレームワークのコンパクトバージョンまたはサブセットバージョンを実現することも可能である。本発明は、通信ネットワークを通してリンクされたリモート処理デバイスによってタスクが実行されるような分散コンピューティング環境で実施される。分散コンピューティング環境では、プログラムモジュールはローカルとリモートの両方のメモリストレージデバイスに位置づけられているかもしれない。
【００７７】
図４を参照して説明すると、エクスパンダグラフからのハッシュ関数構築のための例示システムは、例えば、図１のシステム１００を実現するコンピュータ４１０の形体をした汎用コンピューティングデバイスを含んでいる。コンピュータ４１０の以下に説明する態様は図１のコンピューティングデバイス１０２の実現例である。コンピュータ４１０のコンポーネントには、１または２以上の処理ユニット４２０、システムメモリ４３０、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット４２０に結合するシステムバス４２１が含まれていることがあるが、これらに限定されない。システムバス４２１は、数種タイプのバス構造のいずれかにすることができ、その中には、種々のバスアーキテクチャを使用したメモリバスやメモリコントローラ、周辺バス、およびローカルバスが含まれている。例を挙げると、そのようなアーキテクチャとしては、ＩＳＡ（Industry Standard Architecture）バス、ＭＣＡ（Micro Channel Architecture）バス、ＥＩＳＡ（Enhanced ISA）バス、ＶＥＳＡ（Video Electronics Standards Association）ローカルバス、およびMezzanineバスとも呼ばれるＰＣＩ（Peripheral Component Interconnect）バスがあるが、これらに限定されない。
【００７８】
コンピュータ４１０は、様々なコンピュータ可読記憶媒体を含むのが通常である。コンピュータ可読記憶媒体は利用可能であれば、コンピュータ４１０によってアクセス可能などの媒体にすることもでき、その中には、揮発性および不揮発性媒体で、取り外し可能および取り外し不能媒体の両方が含まれている。例を挙げると、コンピュータ可読記憶媒体には、コンピュータストレージ媒体と通信媒体が含まれるが、これらに限定されない。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を格納するためのいずれかの方法またはテクノロジで実現された揮発性および不揮発性取り外し可能および取り外し不能媒体が含まれている。コンピュータストレージ媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリや他のメモリテクノロジ、ＣＤ−ＲＯＭ、ＤＶＤ（digital versatile disk）や他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージや他の磁気ストレージデバイス、または必要とする情報を格納するために使用可能で、コンピュータ４１０によってアクセス可能である他の媒体が含まれているが、これらに限定されない。
【００７９】
通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを搬送波などの変調データ信号または他のトランスポートメカニズムを組み込んでいるのが一般的であり、その中には任意の情報配信媒体が含まれている。ここで「変調データ信号（modulated data signal）」という用語は、情報を信号の中で符号化するような形でその特性の１つまたは２つ以上がセットまたは変更されている信号を意味している。例を挙げると、通信媒体には有線ネットワークや直接有線接続などの有線媒体、および音響、ＲＦ、赤外線および他の無線媒体などの無線媒体が含まれているが、これらに限定されない。上記に挙げたものを任意に組み合わせたものも、コンピュータ可読記憶媒体の範囲に当然含まれるべきである。
【００８０】
システムメモリ４３０としては、ＲＯＭ（read only memory）４３１およびＲＡＭ（random access memory）４３２などの揮発性および／または不揮発性メモリの形状をしたコンピュータストレージ媒体がある。スタートアップ期間のように、コンピュータ４１０内のエレメント間で情報を転送するのを支援する基本ルーチンで構成された基本入出力システム４３３（ＢＩＯＳ）は、ＲＯＭ４３１に格納されているのが代表的である。ＲＡＭ４３２は、処理ユニット４２０に即時にアクセス可能であり、および／または処理ユニット４２０によって現在操作の対象になっているデータおよび／またはプログラムモジュールを収めているのが代表的である。例を挙げると、図４にはオペレーティングシステム４３４、アプリケーションプログラム４３３、他のプログラムモジュール４３６、およびプログラムデータ４３７が示されているが、これらに限定されない。
【００８１】
コンピュータ４１０は、他の取り外し可能／取り外し不能で揮発性／不揮発性のコンピュータ記憶媒体を含んでいることもある。図４には、取り外し不能で不揮発性の磁気媒体との間で読み書きを行なうハードディスクドライブ４４１、取り外し可能で不揮発性の磁気ディスク４３２との間で読み書きを行なう磁気ディスクドライブ４３１、およびＣＤ−ＲＯＭや他の光媒体などの取り外し可能で不揮発性の光ディスク４３６との間で読み書きを行なう光ディスクドライブ４３３が示されているが、これらは単なる例示である。例示動作環境で使用できる他の取り外し可能／取り外し不能で揮発性／不揮発性のコンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどがあるが、これらに限定されない。ハードディスクドライブ４４１は、インタフェース４４０などの取り外し不能メモリインタフェースを通してシステムバス４２１に接続されているのが代表的であり、磁気ディスクドライブ４３１と光ディスクドライブ４３３は、インタフェース４３０などの取り外し可能メモリインタフェースによってシステムバス４２１に接続されているのが一般的である。
【００８２】
上述し、図４に図示のドライブおよびその関連コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュールおよびその他のデータをコンピュータ４１０のストレージを提供する。図４において、例えば、ハードディスクドライブ４４１は、オペレーティングシステム４４４、アプリケーションプログラム４４３、他のプログラムモジュール４４６およびプログラムデータ４４７を格納するものとして示されている。なお、これらのコンポーネントは、オペレーティングシステム４３４、アプリケーションプログラム４３３、他のプログラムモジュール４３６、およびプログラムデータ４３７と同じのこともあれば、異なっていることもある。アプリケーションプログラム４３３には、例えば、図１のコンピューティングデバイス１０２のプログラムデータ１１０が含まれている。ここでオペレーティングシステム４４４、アプリケーションプログラム４４３、他のプログラムモジュール４４６、およびプログラムデータ４４７に異なる番号が付けられているのは、これらが少なくとも異なるコピーであることを示すためである。
【００８３】
ユーザは、キーボード４６２などの入力デバイスおよび一般にマウス、トラックボールまたはタッチパッドとも呼ばれるポインティングデバイス４６１を通してコマンドおよび情報をコンピュータに入力することができる。他の入力デバイス（図示せず）としては、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。これらおよび他の入力デバイスは、システムバス４２１に結合されたユーザ入力インタフェース４６０を通して処理ユニット４２０に接続されていることがよくあるが、パラレルポート、ゲームポートまたはＵＳＢ（universal serial bus）などの他のインタフェースによって接続されていることもある。
【００８４】
モニタ４９１または他のタイプのディスプレイデバイスも、ビデオインタフェース４９０などのインタフェースを介してシステムバス４２１に接続されている。モニタのほかに、コンピュータは、プリンタ４９６およびオーディオデバイス４９７などの他の周辺出力デバイスを含むこともあり、これらのデバイスは出力周辺インタフェース４９３を通して接続されていることがある。
【００８５】
コンピュータ４１０は、リモートコンピュータ４８０などの１または２以上のリモートコンピュータとの論理的接続を使用したネットワーキング環境で動作することができる。一実施形態では、リモートコンピュータ４８０は図１のコンピューティングデバイス１０２またはネットワーク構築デバイス１０４を表わしている。リモートコンピュータ４８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードであることがあり、図４にはメモリストレージデバイス４８１だけが示されているが、その具体的な実施形態に応じて、コンピュータ４１０に関連して上述したエレメントの多くまたはすべてを含んでいることがある。図４に図示の論理的接続にはＬＡＮ（local area network）４７１およびＷＡＮ（wide area network）４７３が含まれているが、他のネットワークが含まれることもある。このようなネットワーキング環境はオフィス、企業内コンピュータネットワーク、イントラネットおよびインターネットで一般的である。
【００８６】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ４１０はネットワークインタフェースまたはアダプタ４７０を通してＬＡＮ４７１に接続されている。ＷＡＮネットワーキング環境で使用されるときは、コンピュータ４１０は、インターネットなどのＷＡＮ４７３上の通信を確立するためのモデム４７２または他の手段を備えているのが一般的である。モデム４７２は内蔵型と外付け型があり、ユーザ入力インタフェース４６０または他の該当メカニズムを介してシステムバス４２１に接続されていることがある。ネットワーキング環境では、コンピュータ４１０に関連して図示したプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに格納されていることがある。例を挙げると、図４はリモートアプリケーションプログラム４８３がメモリデバイス４８１に置かれているものとして示しているが、これに限定されない。図示のネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が使用されることもある。
【００８７】
結論
以上、エクスパンダグラフからのハッシュ関数構築のためのシステムおよび方法を、構造上の特徴および／または方法に基づく操作または動作に特有の用語で説明してきたが、当然に理解されるように特許請求の範囲に定義された実施形態は、上述した特定の特徴または動作に必ずしも限定されるものではない。むしろ、システム１００の特定の特徴および操作は、特許請求の範囲に記載の主題を実現する形態例として開示されたものである。
【図面の簡単な説明】
【００８８】
【図１】一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示システムを示している図である。
【図２】一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示手順を示している図である。
【図３】一実施形態によるエクスパンダグラフからのハッシュ関数構築のための例示手順を示している図である。
【図４】エクスパンダグラフからのハッシュ関数構築を完全にまたは部分的に実現できる適当なコンピューティング環境の例を示している図である。
【図１】
2009514036.tif 000023
【図２】
2009514036.tif 000024
【図３】
2009514036.tif 000025
【図４】
2009514036.tif 000026
【国際調査報告】
2009514036.tif 000027
2009514036.tif 000028