(57)【要約】  セキュアハッシュ関数を強化するシステムおよび／または方法を説明する。いくつかの実施形態では、これらのシステムおよび／または方法は、メッセージに基づいて、かつあるプロセスを用いて、無作為に現れる要素を生成し得る。次いで、この要素とメッセージを組み合わせることができる。セキュアハッシュ関数を用いてこのアセンブリをハッシュすることができる。同じプロセスおよびセキュアハッシュ関数を用いて、このメッセージを後で認証することができる。
2008545163.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ可読命令を内部に有する１つまたは複数のコンピュータ可読媒体であって、前記命令がコンピュータによって実行されると、前記コンピュータに、
メッセージに基づいて、かつ、あるプロセスを用いて無作為に現れる要素を生成する動作と、
前記要素と前記メッセージとを組み合わせてアセンブリを提供する動作とを実行させ、前記アセンブリは、ハッシュを提供するためにセキュアハッシュ関数でハッシュすることができ、前記ハッシュは、同じセキュアハッシュ関数によって前記メッセージをハッシュして得られる第２のハッシュの長さと同じ長さを有し、
前記プロセスは、第２のメッセージに基づいて第２の無作為に現れる要素を生成することができ、前記第２の無作為に現れる要素は、前記第２のメッセージが前記第１のメッセージと同じ場合には、前記第１の無作為に現れる要素と同じであることを特徴とする媒体。
【請求項２】
前記無作為に現れる要素を生成する前記動作は、ブロック暗号を用いて前記メッセージの部分を暗号化して、暗号化された部分を提供する動作と、前記暗号化された部分と前記メッセージの部分との排他的論理和（ＸＯＲ）を計算して、前記無作為に現れる要素を提供する動作とを含むことを特徴とする請求項１に記載の媒体。
【請求項３】
組み合わせる前記動作は、前記無作為に現れる要素と前記メッセージとを連結する動作を含むことを特徴とする請求項１に記載の媒体。
【請求項４】
前記プロセスは、ブロック暗号を用いて前記メッセージの部分を暗号化して、暗号化された部分を提供する動作と、前記暗号化された部分と前記メッセージの部分との排他的論理和（ＸＯＲ）を計算して、前記無作為に現れる要素を提供する動作とを含むことを特徴とする請求項１に記載の媒体。
【請求項５】
前記無作為に現れる要素を生成する前記動作は、
前記メッセージに基づいて無作為に現れる中間要素を受け取る動作と、
前記無作為に現れる中間要素から無作為に現れる暗号キーを導出する動作と、
前記無作為に現れる暗号キーを利用する暗号関数で前記メッセージの部分を暗号化して暗号化された部分を提供する動作と、
前記暗号化された部分と前記部分との排他的論理和（ＸＯＲ）を計算して、前記無作為に現れる要素を提供する動作とを含むことを特徴とする請求項１に記載の媒体。
【請求項６】
前記暗号関数は、１２８ビットのＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のブロック暗号による暗号関数を含むことを特徴とする請求項５に記載の媒体。
【請求項７】
前記セキュアハッシュ関数は、セキュアハッシュアルゴリズム−１を含むことを特徴とする請求項１に記載の媒体。
【請求項８】
コンピュータ可読命令を内部に有する１つまたは複数のコンピュータ可読媒体であって、前記命令がコンピュータによって実行されると、前記コンピュータに、
データのブロックの第１のサブブロックおよび第２のサブブロックを暗号化して、暗号化された第１のサブブロックおよび暗号化された第２のサブブロックを提供する動作と、
前記第１のサブブロックと前記暗号化された第１のサブブロックとの排他的論理和（ＸＯＲ）を計算して、第１のＸＯＲサブブロックを提供する動作と、
前記第２のサブブロックと前記暗号化された第２のサブブロックとのＸＯＲを計算して、第２のＸＯＲサブブロックを提供する動作と、
前記第１のＸＯＲサブブロックおよび前記第２のＸＯＲサブブロックと、前記第１のサブブロックおよび前記第２のサブブロックとを組み合わせて、第１の組み合わされたブロックおよび第２の組み合わされたブロックを提供する動作とを実行させることを特徴とする媒体。
【請求項９】
暗号化する前記動作は、前記第１のサブブロックおよび前記第２のサブブロックに対してブロック暗号を実施する動作を含むことを特徴とする請求項８に記載の媒体。
【請求項１０】
暗号化する前記動作は、
前記第２のサブブロックから導出される第１の暗号キーを用いて前記第１のサブブロックを暗号化する動作と、
前記第１のサブブロックから導出される第２の暗号キーを用いて前記第２のサブブロックを暗号化する動作とを含むことを特徴とする請求項８に記載の媒体。
【請求項１１】
暗号化する前記動作は、第３のサブブロックおよび第４のサブブロックを暗号化する動作を含み、前記第１、第２、または第４のサブブロックから導出される第３の暗号キーを用いて前記第３のサブブロックを暗号化する動作と、前記第１、第２、または第３のサブブロックから導出される第４の暗号キーを用いて前記第４のサブブロックを暗号化する動作とをさらに含むことを特徴とする請求項１０に記載の媒体。
【請求項１２】
前記第１の組み合わされたブロックまたは前記第２の組み合わされたブロックは、前記第１のＸＯＲブロック、前記第２のＸＯＲブロック、前記第３のサブブロック、および前記第４のサブブロックの連結体であることを特徴とする請求項１１に記載の媒体。
【請求項１３】
暗号化する前記動作は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）のブロック暗号による暗号関数を実施する動作を含むことを特徴とする請求項８に記載の媒体。
【請求項１４】
前記ブロックはメッセージの一部であり、前記媒体は、前記ブロックを前記第１のサブブロックおよび前記第２のサブブロックに分割する動作をさらに含むことを特徴とする請求項８に記載の媒体。
【請求項１５】
前記メッセージを複数のブロックに分割する動作をさらに含み、前記ブロックは、前記複数のブロックの１つであることを特徴とする請求項１４に記載の媒体。
【請求項１６】
前記ブロックの長さは５１２ビットであり、前記サブブロックの長さは１２８ビットであることを特徴とする請求項８に記載の媒体。
【請求項１７】
前記第１および第２の組み合わされたブロックのハッシュを計算する動作をさらに含むことを特徴とする請求項８に記載の媒体。
【請求項１８】
Ａ、Ｂ、Ｃ、およびＤそれぞれをメッセージのある部分とし、Ｅを暗号関数、ｃｄを前記部分ＣおよびＤから導出される暗号キー、ａｂを前記部分ＡおよびＢから導出される暗号キーとして、
【数１】
2008545163.tif 000012
を計算する動作と、
Ｈをセキュアハッシュ関数として、
【数２】
2008545163.tif 000013
を計算してハッシュｈを提供する動作とを含むことを特徴とする方法。
【請求項１９】
Ｅは、１２８ビットのＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）による暗号関数を含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
Ｈはセキュアハッシュアルゴリズム−１（ＳＨＡ−１）を含むことを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はセキュアハッシュ関数の強化に関するものである。
【背景技術】
【０００２】
セキュアハッシュ関数は、メッセージを認証するのにしばしば用いられる。例えば、デジタル署名は、セキュアハッシュ関数に依存している。ある人は、セキュアハッシュ関数を使用して計算したドキュメントのハッシュに署名することによって、そのドキュメントにデジタル的に署名することができる。その後、このデジタル署名は、その人が署名したということになっているドキュメントのハッシュを同じハッシュ関数を用いて計算することによって認証することができる。これら第１のハッシュと第２のハッシュが同じであれば、これらのドキュメントは同じものとみなされる。これらのドキュメントが同じであれば、このデジタル署名は信頼できる。
【０００３】
これら２つのドキュメントは、同じものとみなされるだけであり、同じものとわかっているわけではない。というのは、２つの異なるドキュメントのハッシュが同じになることがあり得るからである。これを「衝突」と呼ぶ。
【０００４】
衝突の例を数学用語で示すことができる。セキュアハッシュ関数「Ｈ（Ｍ）」は任意長のメッセージ「Ｍ」に対して演算を行うことができ、固定長のハッシュ「ｈ」を戻すことができると仮定する。そのため、「ｈ＝Ｈ（Ｍ）」になる。ここで、「ｈ」の長さは固定されている。しかし、この場合、メッセージ「Ｍ１」が固定長ハッシュ「ｈ」よりも大きければ、２つの異なるメッセージ「Ｍ１」および「Ｍ２」が等価なハッシュ「ｈ」を有し、「Ｈ（Ｍ１）＝Ｈ（Ｍ２）」となる可能性が残る。「Ｈ（Ｍ１）＝Ｈ（Ｍ２）」となる場合、衝突が起こったことになる。
【０００５】
衝突の確率は、任意の特定のメッセージが信頼できる確率を確認するのに重要である。例えば、１６０ビットのハッシュを生成するセキュアハッシュ関数では、２つの無作為なメッセージが同じハッシュを有する確率は２１６０分の１である。しかし、一群の無作為なメッセージがあり、この中の任意の２つのメッセージのハッシュが同じになり得るには、このメッセージの集合の大きさは、思うほど大きくなくてよい。ある集合の任意の２つのメッセージが同じハッシュを有することがあり得るためには、この集合は、１６０ビットのハッシュでは、約２８０個のメッセージを有するだけでよい。
【０００６】
したがって、衝突を起こさせようとする場合、すなわち、２つのドキュメントが同じハッシュをもつようにしようとする場合、１６０ビットのハッシュでは、約２８０回またはそれよりも少ない試みでこのような衝突を１回起こすことができる。例えば、ウィリーがジョージを詐欺にかけたいとする。ウィリーは、２つの契約書を作成することができるはずである。一方はジョージに有利なものであり、他方はウィリーに極めて有利なものである。ウィリーは、これらのドキュメントにそれぞれ小さな変更を加え（例えば、スペースを追加し）、各ドキュメントについてハッシュを計算することができる。ウィリーは、このように変更を加えたウィリーに有利な契約書の１つについてのハッシュ値がジョージに有利な契約書の１つについてのハッシュ値と一致するまで、この操作を継続することができる。こうすることによって、ウィリーは、ジョージに有利な契約書「Ｍｇ」とウィリーに有利な契約書「Ｍｗ」の間で衝突を起こすことができ、その結果「Ｈ（Ｍｇ）＝Ｈ（Ｍｗ）」になる。ウィリーは、そうした後で、ジョージに、ある手順を用いてジョージに有利な契約書に署名させ、ここでジョージはハッシュ値「ｈ」に署名することになる。その後なんらかの時点で、ウィリーは、ジョージが署名したジョージに有利な契約書を、ジョージが署名していないウィリーに有利な契約書にすり替える。これで、ウィリーは、審判者（例えば、司法裁判所の裁判官）に、ウィリーに有利な契約書にジョージが署名したことを納得させることができる。というのは、ウィリーに有利な契約書のハッシュが、ジョージに有利な契約書についてのジョージの署名のハッシュ値「ｈ」と一致するからである。
【０００７】
１６０ビットのハッシュのような大きなハッシュでこのような衝突を起こさせることは、最近まで極めて困難であると考えられていた。２８０個のメッセージについてハッシュを改変し計算するには、何百台ものコンピュータでも、現在の処理スピードでは何百年ないし何千年もかかる。しかし、最近では、制御された小さな変更をメッセージのビットに加えることによって、２６９個のメッセージで衝突は可能であると言う人もいる。これが本当なら、現在の処理スピードでも数ヶ月で、数百台のコンピュータを使用して衝突を起こすことが可能になり得る。今後、５年ないし１０年のうちに、おそらくは、１台のコンピュータで１年もかからずに衝突を起こすことができるようになるかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
このようなことが具体的に可能であり、また、他の種類の攻撃では、潜在的には理想よりも簡単に衝突が起こるので、人々は、ある種のセキュアハッシュ関数の安全性および有用性を疑うようになった。
【課題を解決するための手段】
【０００９】
セキュアハッシュ関数を強化するシステムおよび／または方法（「ツール」）を説明する。いくつかの実施形態では、これらのツールは、メッセージに基づいて無作為に現れる要素を生成し得る。次いで、これらのツールは、要素とメッセージを組み合わせることができる。セキュアハッシュ関数を用いてこの組合せ体（アセンブリ）をハッシュすることができる。ここで、得られたハッシュは、同じセキュアハッシュ関数で、要素を伴わないメッセージから計算されたハッシュと同じ長さのものである。こうすることにより、これらのツールは、衝突を起こそうとするある種の攻撃の有効性を削減することによりセキュアハッシュ関数を強化することができる。
【００１０】
いくつかの他の実施形態では、これらのツールは、メッセージのサブブロックを暗号化し、これらのサブブロックと暗号化されたサブブロックの排他的論理和（ＸＯＲ）を計算し、これらのサブブロックとＸＯＲサブブロックを組み合わせることができる。こうすることによって、メッセージのビット操作では容易に制御可能にならないビットの再現可能なアセンブリをハッシュすることができる。こうして得られたハッシュは、メッセージそのものから計算されたハッシュよりも安全になり得る。
【００１１】
この「発明の開示」は、「発明を実施するための最良の形態」で以下にさらに説明する概念を抜粋し簡略化して紹介するためのものである。この「発明の開示」は、特許請求の範囲に記載された主題の主要な、または不可欠な特徴を特定することを意図するものではなく、また、特許請求の範囲に記載された主題の範囲を決定する助けとして用いることを意図するものでもない。
【００１２】
以下の開示および図を通して、同じ番号を用いて同様の構成要素および特徴を参照する。
【発明を実施するための最良の形態】
【００１３】
概要
以下、セキュアハッシュ関数を強化し得る１つ（または複数）のシステムおよび／または１つ（または複数）の方法（「ツール」）を説明する。これらのツールは、衝突を起こさせようとするある種の攻撃の有効性を削減することによってセキュアハッシュ関数を強化し得る。例えば、これらのツールは、制御された小さな変更をメッセージのビットに加えることに基づく攻撃に対してセキュアハッシュ関数を強化し得る。
【００１４】
いくつかの実施形態では、これらのツールは、メッセージに基づいて、かつ、あるプロセスを用いて、無作為に現れる要素を生成し得る。次いで、これらのツールは、この要素とメッセージを組み合わせることができる。このアセンブリはセキュアハッシュ関数を用いてハッシュすることができ、得られたハッシュは、同じセキュアハッシュ関数で、このメッセージから計算されたハッシュと同じ長さのものである。別のメッセージに基づいて、かつ、同じプロセスを用いて、別の無作為に現れる要素を生成することもでき、得られた別の無作為に現れる要素は、これらのメッセージが同じであれば、最初の無作為に現れる要素と同じある。こうすることによって、将来のある時点で、この別のメッセージから別のアセンブリを生成し得る。ここで、この別のアセンブリから計算されたハッシュは、これらのメッセージが同じ場合には、最初のアセンブリから計算されたハッシュと同じになる。こうすることによってメッセージが認証される。
【００１５】
別の実施形態では、これらのツールは、メッセージのブロックに対してブロック暗号を実施し、その結果、暗号化されたブロックが得られる。次いで、これらのツールは、暗号化されたブロックと上記ブロックの加算、減算、または排他的論理和（「ＸＯＲ」）などの演算を行い、その結果、加算、減算、またはＸＯＲによるブロックが得られる。その後、これらのツールは、加算、減算、またはＸＯＲによるブロックと、上記ブロックとを組み合わせ、その結果、組み合わされたブロックが得られる。次いで、これらの組み合わされたブロックをハッシュすることができる。こうして組み合わされたブロックのビットは、メッセージのビットを改変することによって容易に制御できるようにはならず、メッセージのビットを注意深く改変することによって衝突を起こそうとする試みが潜在的に妨げられる。
【００１６】
別の実施形態では、これらのツールは、メッセージのブロックをサブブロックに分割することもできる。次いで、これらのツールは、これらのサブブロックの１つまたは複数に基づいて暗号キーを計算する。これらのツールは、このキーを含む暗号関数でサブブロックを暗号化し、それによって、暗号化されたサブブロックが提供される。ここで、このキーは、暗号化されるサブブロックとは異なるサブブロックから計算する。この操作は、暗号化されたサブブロックの数が上記サブブロックの数に等しくなるまで繰り返すことができる。次いで、暗号化されたサブブロックと上記サブブロックを連結する。この連結の結果、上記ブロックと同じサイズの２つの連結されたブロックが得られる。これらの連結されたブロックはそれぞれ、サブブロックおよび暗号化されたサブブロックを備える。これらのツールはまた、サブブロックと暗号化されたサブブロックを備えるように、連結された各ブロックを構築することができ、これら暗号化されたサブブロックは、これら２つの連結されたブロックの他方のブロックのサブブロックから計算されたキーを用いて暗号化される。これらの連結されたブロックをセキュアハッシュ関数でハッシュすることができる。
【００１７】
動作環境の例
これらのツールを詳細に説明する前に、以下に動作環境の例を論じて、どこで、かつどうやってこれらのツールを採用し得るかを理解する助けとする。以下の説明は一例を示しているが、これらのツールを１つの特定の動作環境にだけ限定して応用することを意図するものではない。
【００１８】
図１に、１つのこのような動作環境を全体的に１００で示す。動作環境１００は、１つ（または複数）のプロセッサ１０４およびコンピュータ可読媒体１０６を含むコンピュータ１０２を備える。これらのプロセッサは、コンピュータ可読媒体１０６にアクセスし、かつ／またはそれらを実行することができる。コンピュータ可読媒体は、セキュアハッシュを計算し得るハッシュ生成器１０８と、セキュアハッシュ関数を強化し得るハッシュプリプロセッサ１１０と、第１メッセージ１１２および第２メッセージ１１４の２つのメッセージとを備えるか、あるいはこれらにアクセスし得る。
【００１９】
メッセージの前処理
以下の説明では、動作環境１００の要素が、あるメッセージのハッシュを計算する前に、このメッセージを処理することによってセキュアハッシュ関数を強化し得る方法の例を論じる。このプロセスは、敵対者によるハッシュ計算対象ビット制御を削減するのに有効である。
【００２０】
図２を参照すると、第１メッセージ１１２を処理するための流れ図の例２００が示されている。流れ図２００には、環境１００の要素による１組の動作と、これらの動作に付随する要素間の通信とを示す。これらの動作および付随する通信を矢印で示す。この流れ図は、任意の適切なハードウエア、ソフトウエア、ファームウエア、またはこれらの組合せで実施し得る。ソフトウエアおよびファームウエアの場合、この図は、コンピュータが実行可能な命令として実施される演算の組を表す。
【００２１】
矢印１のところで、ハッシュプリプロセッサ１１０は、第１メッセージ１１２に基づいて、再現性があり、無作為に現れる要素２０２を計算する。この要素は、先のツールにより、このメッセージの一部およびこのメッセージの暗号化部分の論理演算、例えば、以下の実施形態で説明する論理演算を行うことによって計算することができる。要素２０２は、実際には無作為ではないが、第１メッセージのビットの変更では容易に制御されない程度に十分に無作為に現れる。この要素は再現可能である。すなわち、同じメッセージと、要素を生成するための同じ手順とに基づいて同じ要素を生成することができる。従って、２つの同じメッセージを同じやり方で処理し、得られるアセンブリを同じハッシュ関数を用いてハッシュすると、これらの同じメッセージのハッシュは同じになる。このようにして、このハッシュを用いてメッセージを認証することができる。
【００２２】
矢印２のところで、ハッシュプリプロセッサ１１０は、第１メッセージ１１２および要素２０２を含むアセンブリ２０４を構築する。このアセンブリは、容易には制御し得ないビットを含む。そのため、このアセンブリは、第１メッセージ１１２のビットと、これらのビットに依存するビット（要素２０２）とを含み、このアセンブリのビットは、第１メッセージを操作することによる悪意のある操作を容易には受けない。この実施形態では、このアセンブリは、第１メッセージに基づいてこのアセンブリが再現し得るように上記要素と第１メッセージを任意に組み合わせたものとし得る。
【００２３】
矢印３のところで、ハッシュ生成器１０８は、このアセンブリのハッシュを計算する。このハッシュは、ハッシュ生成器のハッシュ関数と同じハッシュ関数および同じ要素を用いて第１メッセージを認証するのに有効である。この要素は、ハッシュプリプロセッサによって同じやり方で同じ第１メッセージを処理することによって同じものになる。
【００２４】
この実施形態では、ハッシュ生成器１０８は改変されない。そうではなくて、ハッシュ計算の対象であるビットを改変するのであり、ハッシュ関数自体を改変するのではない。こうすると、標準のセキュアハッシュ関数およびシステム、例えば、セキュアハッシュアルゴリズム−１（「ＳＨＡ−１」）およびセキュアハッシュシステム（ＳＨＳ）を使用し続けることができる。
【００２５】
敵対者は、あるメッセージ自体のビットを完全に制御し得ることがあるが、流れ図２００で説明したようにこのメッセージを前処理することによって、敵対者は、ハッシュ計算の対象であるこれらのビットの多くを制御することができなくなる。というのは、ハッシュは、メッセージそのものからではなく、前処理したメッセージから計算されるからである。現在は、衝突（２つの異なるメッセージで同じハッシュ）を起こしたい敵対者は、メッセージのハッシュ予定ブロックの開始ビットに、制御された小さな変更を加えることによって衝突を起こそうとし得る。しかし、先のツールは、流れ図２００に従って、敵対者のメッセージと別のメッセージの衝突の確率を上げる敵対者の能力を削減することができる。敵対者がメッセージに小さな変更を加えると、前処理されたメッセージは大きく改変されることになり、敵対者の衝突生成能力は潜在的に減る。
【００２６】
ブロック暗号化および排他的論理和演算
以下の節では、先のツールがブロック暗号化および排他的論理和演算を用いてセキュアハッシュ関数を強化する方法の例を説明する。以下の説明は特許請求する主題の適用範囲を限定するものではないことを理解されたい。
【００２７】
図３に、プロセスの例３００を示す。ここで、プロセスの例３００は、個々の演算または動作を表す一連のステップとして示されている。以下で説明する実施形態では、ハッシュプリプロセッサ１１０などの図１の動作環境１００の要素がこのプロセスを実施する。本明細書で開示する上記その他のプロセスは、任意の適切なハードウエア、ソフトウエア、ファームウエア、またはこれらの組合せで実施し得る。ソフトウエアおよびファームウエアの場合、これらのプロセスは、コンピュータが実行可能な命令として実施される１組の演算を表し、これらの命令は、コンピュータ可読媒体１０６に格納され、１つ（または複数）のプロセッサ１０４によって実行可能なものである。
【００２８】
ステップ３０２では、メッセージがブロックに分割される。これらのブロックは、セキュアハッシュ関数が扱い得るサイズのものとし得る。図４に示す実施形態では、ハッシュプリプロセッサ１１０は、第１メッセージ１１２を一連の５１２ビットのブロックに分割する。これらのブロックのうち３つを４０２で示す。
【００２９】
ステップ３０４では、メッセージがサブブロックに分割される。各サブブロックは、ブロック４０２などのより大きなブロックから分割することができる。図に示す実施形態では、各ブロック４０２から４つの１２８ビットのサブブロック４０４に分割される。これらのブロックの１つから分割されたサブブロックを「Ａ」、「Ｂ」、「Ｃ」、および「Ｄ」と名付けて示す。
【００３０】
ステップ３０６では、メッセージのサブブロックが暗号化されて、暗号化されたサブブロックが得られる。一実施形態では、ステップ３０６で、メッセージのサブブロックが暗号化されて、暗号化されたサブブロックが得られるが、サブブロックの数は任意とし得る。
【００３１】
「Ｋ」、「Ｌ」、および「Ｔ」と称する３つの演算を実施し得る。関数Ｋはキーを生成する。関数Ｌは、このキーが公開された場合でも暗号を不可逆性にするパッドを生成する。関数Ｔは、サブブロックの変換が高い確率で１対１のままであることを保証するタグ（「ｔ」）を生成する。上記は、４つのサブブロックＡ、Ｂ、Ｃ、およびＤで数学的に以下のように表し得る。
Ｋ（Ａ，Ｂ，Ｃ，Ｄ）＝α，β，γ，δ
Ｌ（Ａ，Ｂ，Ｃ，Ｄ）＝Ａ’，Ｂ’，Ｃ’，Ｄ’
Ｔｋｅｙ（Ａ，Ｂ，Ｃ，Ｄ）＝ｔ
より一般には、上記は、次のように数学的に表し得る。
Ｅα（Ａ）＝Ｒ、Ｅβ（Ｂ）＝Ｓ、Ｅγ（Ｃ）＝Ｐ、Ｅδ（Ｄ）＝Ｑ
Ｕ＝Ｒ＋Ａ’、Ｖ＝Ｓ＋Ｂ’、Ｗ＝Ｐ＋Ｃ’、Ｘ＝Ｑ＋Ｄ’
ＴＵ，Ｖ，Ｗ，Ｘ（Ａ，Ｂ，Ｃ，Ｄ）＝ｔ
上記出力ｔ、Ｕ、Ｖ、Ｗ、およびＸを用いて、あるケースを示すことができる。ここで、
Ｋ（Ａ，Ｂ，Ｃ，Ｄ）＝ＣＤ，ＣＤ，ＡＢ，ＡＢ
Ｌ（Ａ，Ｂ，Ｃ，Ｄ）＝Ａ，Ｂ，Ｃ，Ｄ
Ｔｋｅｙ（Ａ，Ｂ，Ｃ，Ｄ）＝Ａ，Ｂ，Ｃ，Ｄ
である。
【００３２】
敵対者にキーとしてＡＢを選択させないように、関数Ｋを次のようにし得る。
Ｋ（Ａ，Ｂ，Ｃ，Ｄ）＝ＣＤ，ＣＤ，ＲＳ，ＲＳ
これらのブロックをさらに混ぜ合わせるには、別の全単射関数を用いることもできる。
【００３３】
上記プロセスの例を以下に示す。ここで、ステップ３０６では、元のサブブロックＡ、Ｂ、Ｃ、およびＤがブロック暗号で暗号化される。ステップ３０６では、ハッシュプリプロセッサ１１０を使用してそうすることができ、それによって、暗号キー「ｎ」を含む暗号関数「Ｅｎ」を用いてサブブロックＡが暗号化される。ここで、「Ｒ」は、サブブロックＡを暗号化した結果であり、暗号化されたサブブロックと呼ぶ。暗号キーは、同じブロックから分割された別のサブブロックのビットから導出され、この場合は、サブブロックＢ、Ｃ、Ｄ、またはＢ、Ｃ、および／またはＤの組合せのいずれかである。この実施形態では、このキーは、サブブロックＣおよびＤから導出され、そのため、「ｃｄ」と名付ける。これは数学的に次のように表すことができる。
Ｅｃｄ（Ａ）＝Ｒ
使用する暗号関数は、１２８ビットの新暗号規格（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）（「ＡＥＳ」）による暗号関数とし得る。このキーは、このキーが１つまたは複数の他のサブブロックに基づき、かつ再現可能にもなるように、他のサブブロックから導出し得る。
【００３４】
同様に、ステップ３０６では、他の暗号化されたサブブロックを提供するのに有効な他のサブブロックＢ、Ｃ、およびＤを暗号化し得る。これらは数学的に以下のように表される。
Ｅｃｄ（Ｂ）＝Ｓ
Ｅａｂ（Ｃ）＝Ｐ
Ｅａｂ（Ｄ）＝Ｑ
このように、いくつかの暗号化されたサブブロックが構築される。これらのサブブロックはそれぞれ、再現可能であり、１つまたは複数のサブブロックのビットに基づくものである。
【００３５】
ステップ３０８では、サブブロックと暗号化されたサブブロックの排他的論理和（ＸＯＲ）が計算され、それによって、ＸＯＲサブブロックが得られる。
【００３６】
ここでは、ハッシュプリプロセッサ１１０が、排他的論理和（数学的な表記ではＸＯＲまたは
【００３７】
【数１】
2008545163.tif 000003
【００３８】
）を計算し、以下の結果が得られる。
【００３９】
【数２】
2008545163.tif 000004
【００４０】
これらの結果はそれぞれ無作為に現れ、敵対者の制御下には簡単には入らない。そのため、敵対者が悪意をもってＡ、Ｂ、Ｃ、またはＤのビットを、例えば、制御された小さな変更で改変したとしても、ＸＯＲサブブロックを、Ａ、Ｂ、Ｃ、またはＤのビットを改変する際に許されるような制御レベルで悪意をもって選択することはできない。
【００４１】
ステップ３１０では、サブブロックとＸＯＲサブブロックが組み合わされて、組み合わされたブロックが得られる。組み合わされた各ブロックのビットサイズは、上記ブロックのビットサイズと同じとし得る。ただし、組み合わされたブロックの数は、それらの基になるブロックの数の２倍になり得る。
【００４２】
図に示すように、サブブロックＡ、Ｂ、Ｃ、およびＤは、ＸＯＲブロック
【００４３】
【数３】
2008545163.tif 000005
【００４４】
に連結される。これらは組み合わされて、ここでは、
【００４５】
【数４】
2008545163.tif 000006
【００４６】
および
【００４７】
【数５】
2008545163.tif 000007
【００４８】
の２つの組み合わされたブロックになる。
【００４９】
図４に、これらのブロックを４０６で示す。これらの組み合わされたブロックはそれぞれ、メッセージのビットに加えられる制御された小さな変更では容易に制御可能にならない要素を含む。また、これらの要素により、メッセージのビットに制御された小さな変更を加えて衝突を起こそうとすることがより難しくなる。
【００５０】
これらの組み合わされたブロックはそれぞれ、これらのブロックの基となるメッセージのブロックと同じやり方でハッシュすることができるサイズのものとし得る。セキュアハッシュ関数の多くは、より長い計算時間が必要にはなるものの、同じサイズの追加のブロックを容易に扱うことができる。
【００５１】
ステップ３０４、３０６、３０８、および／または３１０は、メッセージの各ブロック、あるいは１つまたは複数の他のブロックに対して繰り返すことができる。これらの動作を繰り返すことによって、メッセージの大部分または全部を前処理して、図に示す実施形態のＸＯＲブロックなどの再現可能な無作為に現れる要素を備えることができる。
【００５２】
ステップ３１２では、サブブロックとＸＯＲサブブロックのアセンブリに対してセキュアハッシュ関数の計算を行う。メッセージが２つ以上のブロックを含む場合（そうなることが多いが）、セキュアハッシュ関数の計算は、サブブロックとＸＯＲサブブロックの複数のアセンブリに対して行われる。図に示す実施形態では、ハッシュ生成器１０８は、ＳＨＡ−１を利用して、サブブロックとＸＯＲサブブロックのアセンブリの１６０ビットのハッシュを計算する。そうすることによって、メッセージに基づいており、かつこのメッセージから再現可能なハッシュを計算することができる。
【００５３】
例えば、図３に示したやり方で第２メッセージ１１４を処理する場合、第２メッセージについて得られるハッシュは、第２メッセージ１１４と第１メッセージ１１２が同じであれば、第１メッセージ１１２のハッシュと同じになる。これらのハッシュが同じに場合に、第１メッセージまたは第２メッセージを認証することができる。これらが同じでない場合、第１メッセージと第２メッセージは同じでないことがわかる。
【００５４】
暗号キー
以下の説明では、メッセージを前処理する際に用いる暗号キーに対する潜在的な制御性を削減することによって先のツールがセキュアハッシュ関数を強化する方法の例を論じる。図２または図３で説明したように、これらのツールは、１つには、ある要素を生成することによってセキュアハッシュ関数を強化する。この要素は、敵対者が、この要素を導出するメッセージのビットを操作することによっては容易に制御可能にならないものである。
【００５５】
図５に、暗号キーに対する制御を削減するためのプロセスの例５００を示す。プロセス５００は、ハッシュプリプロセッサ１１０などの図１の動作環境１００の要素によって実施される個々の演算または動作を表す一連のステップとして示されている。
【００５６】
ステップ５０２では、メッセージから再現可能な無作為に現れる要素が導出される。図６に示す実施形態では、ステップ３０８から得られたＸＯＲサブブロック６０２が提供される。この実施形態では、これらのＸＯＲサブブロックおよびそれらの構成要素である暗号化されたサブブロックＰ、Ｑ、Ｒ、およびＳは中間物である。というのは、これらの中間物を用いて要素を構築し、これらの要素を組み合わせてハッシュするためのブロックにするが、これら自体はハッシュすることはできないからである。
【００５７】
そのため、以下のものを受け取ることができる。
【００５８】
【数６】
2008545163.tif 000008
【００５９】
ステップ５０４では、メッセージから導出された再現可能な無作為に現れる要素から、無作為に現れる暗号キーが導出される。ここでは、ハッシュプリプロセッサ１１０が、図６に示すＸＯＲサブブロック６０２に基づいて無作為に現れる暗号キー「ＲＡＥ−ｎ」を構築する。ここで、「ｎ」は、キーを導出する１つ（または複数）の要素を表す。これは、次のように表し得る。
【００６０】
【数７】
2008545163.tif 000009
【００６１】
ステップ５０６では、無作為に現れる暗号キー（「ＲＡＥキー」）を用いてメッセージの一部が暗号化される。ここでは、図３のステップ３０４から得られたサブブロック４０４  Ａ、Ｂ、Ｃ、およびＤが、ステップ５０４でＸＯＲサブブロック６０２から導出されたＲＡＥキーを用いて暗号化される。これにより、ＲＡＥキーにより暗号化されたサブブロック６０４が得られ、これらをＶ、Ｗ、Ｔ、およびＵと名付ける。このように、サブブロック４０４は、ＲＡＥキーＲＡＥ−ｎを含む暗号関数Ｅｎを用いて暗号化され、それによって、ＲＡＥキーにより暗号化されたサブブロックが得られる。
【００６２】
これは、数学的に次のように表される。
ＥＲＡＥ−ｃｐｄｑ（Ａ）＝Ｖ
ＥＲＡＥ−ｃｐｄｑ（Ｂ）＝Ｗ
ＥＲＡＥ−ａｒｂｓ（Ｃ）＝Ｔ
ＥＲＡＥ−ａｒｂｓ（Ｄ）＝Ｕ
その結果、これらのＲＡＥキーにより暗号化されたサブブロックは、図３のプロセス３００に従う暗号化ブロックとして扱うことができる。ここで、Ｐ＝Ｔ、Ｑ＝Ｕ、Ｒ＝Ｖ、およびＳ＝Ｗである。例えば、図３のステップ３０８およびステップ３１０に従って、以下の組み合わされたブロック６０６
【００６３】
【数８】
2008545163.tif 000010
【００６４】
および
【００６５】
【数９】
2008545163.tif 000011
【００６６】
が得られる。
【００６７】
結論
以上説明したシステムおよび方法により、セキュアハッシュ関数が強化される。これらのシステムおよび方法により、メッセージ間で衝突を起こさせようとするある種の攻撃の有効性を著しく低減し得る。そうすることによって、セキュアハッシュ関数を用いて、より高度の確かさでメッセージを認証することができる。構造的な特徴および／または方法上の動作に固有の用語でこうしたシステムおよび方法を説明してきたが、添付の特許請求の範囲で定義されるシステムおよび方法は、上記で説明した特定の特徴または動作に必ずしも限定されないことを理解されたい。そうではなくて、これら特定の特徴および動作は、特許請求の範囲に記載されたシステムおよび方法を実施する形態の例として開示されるものである。
【図面の簡単な説明】
【００６８】
【図１】様々な実施形態が動作し得る動作環境の例を示す図である。
【図２】メッセージを処理するための流れ図の例である。
【図３】ブロック暗号化および排他的論理和演算を用いてハッシュ関数を安全なものにするためのプロセスの例を示す図である。
【図４】メッセージのブロック、ブロックのサブブロック、および組み合わされたブロックの例を示す図である。
【図５】暗号キーに対する制御を削減するためのプロセスの例を示す図である。
【図６】メッセージのＸＯＲブロック、暗号化されたサブブロック、および組み合わされたブロックの例を示す図である。
【図１】
2008545163.tif 000014
【図２】
2008545163.tif 000015
【図３】
2008545163.tif 000016
【図４】
2008545163.tif 000017
【図５】
2008545163.tif 000018
【図６】
2008545163.tif 000019
【国際調査報告】
2008545163.tif 000020
2008545163.tif 000021