JP4991283B2 - コンテンツベースのアドレシングにおける追加ハッシュ関数 - Google Patents

コンテンツベースのアドレシングにおける追加ハッシュ関数 Download PDF

Info

Publication number
JP4991283B2
JP4991283B2 JP2006502448A JP2006502448A JP4991283B2 JP 4991283 B2 JP4991283 B2 JP 4991283B2 JP 2006502448 A JP2006502448 A JP 2006502448A JP 2006502448 A JP2006502448 A JP 2006502448A JP 4991283 B2 JP4991283 B2 JP 4991283B2
Authority
JP
Japan
Prior art keywords
file
computer
hash value
database
verification hash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2006502448A
Other languages
English (en)
Other versions
JP2006518508A (ja
Inventor
カーペンティア・ポール・アール.・エム.
フォレット・ピーター
ウィレムス・マールテン・ジェイ.・ピー.・エー.
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Caringo Inc
Original Assignee
Caringo Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Caringo Inc filed Critical Caringo Inc
Publication of JP2006518508A publication Critical patent/JP2006518508A/ja
Application granted granted Critical
Publication of JP4991283B2 publication Critical patent/JP4991283B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99939Privileged access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Description

本発明は、コンピュータを用いた情報の記憶および取り出しに一般に関する。より具体的には本発明は、コンピュータファイルの内容を特定およびハッシュ関数および乱数の使用に関する。
従来技術は、国際公報第WO99/38093に記載されるように、コンテンツアドレス可能なディジタル情報の記憶、その取り出し、およびハッシュ関数、メッセージダイジェスト、および記述子ファイルの使用を含む。国際公報第WO99/38092は、コンテンツアドレス可能な情報の記憶およびアクセスのための具体的な技術を記載し、国際公報第WO01/18633は、コンテンツアドレス可能な情報を暗号化する技術を記載する。これら公報は全て、参照によって援用される。
従来技術において議論されるように、コンテンツアドレス可能な技術は、記憶された内容の完全性を保証するようなかたちで文書を記憶およびアクセスするのに非常に有用でありえることは明らかである。従来技術で議論されるように、ある技術は、特定の文書をユニークに示すために、原文を元に固定長の「ハッシュ値」を発生するメッセージダイジェスト(例えば「MD5」のようなもの)を用いることである。さらに単一のMD5は、多くの文書をユニークに表しえ(例えば記述子ファイルを用いて)、個々の文書は、それぞれが単一の文書または文書群のセットを参照する多くの異なるMD5を含みえる。
注意されるハッシュ関数に関連する2つのリスクが存在する。すなわち、統計的ハッシュ関数の衝突およびハッシュ攻撃である。ハッシュ衝突は、純粋に偶然に悪意なく、コンテンツアドレス可能な記憶を実現するシステムが、異なるコンテンツを持つが同じハッシュ値、つまり同じ「コンテンツアドレス」を有する2つのファイルを含むときに起こる。ほとんど任意の考えられるシナリオの下では、このリスクは非常に長い時間のあいだ無視できる程度に留まるだろうーーマーケティング目的ではこのリスクをなくすか大幅に減らすことに大きな価値があるかもしれないが。
ハッシュ攻撃は、全く異なる前提であり、「第2プリイメージを見つけること」としても知られる。ハッシュ攻撃は、不謹慎な者が悪意を持って、オリジナルファイルのハッシュ値と同一のハッシュ値(または「コンテンツアドレス」)を作るために構成された大幅に変えられたコンピュータファイル(例えば)のバージョンを生成するときである。ハッシュ攻撃は、ランダムなビットパターンをファイル中に単に挿入しえ、またはコントラクト文書の意味が変わりえる。いずれの場合にも、ハッシュ攻撃は、ハッシュ関数を破ることになり、適切に保存されていると考えられたディジタル情報の破壊になる。
いずれのシナリオにおいても、システムそのものの信憑性に関わる問題である。すなわち、いくつかの成功した、広く公にされたハッシュ攻撃の後は(直接に現実の世界での適用性がなく、学問的な条件の下であっても)、システムは一般人の心には疑わしいものとなる。さらに、使用中のハッシュ関数が破られるかもしれないことがいったん単に証明されても、システムは疑わしくなる。コンピューティングリソースが進化し続けるうちに、そのようなハッシュ攻撃は、長い期間にわたっては成功するかもしれない。より大きなハッシュ関数のサイズが選ばれ、続いて破られると、互換性の問題および破られた信頼の鎖が生じる。この結果は、このようなシステムの自然な応用となるべき長期的記憶サービスの魅力的な展望ではない。
非常に大きいサイズを有するハッシュ関数を単に用いることはいつも実用的とは限らない。一方で、ハッシュ関数は、ハッシュ関数衝突(2つの異なる入力についての同一のハッシュ値)が統計的に除外されることを保証するために充分に大きくなければならない。もう一方で、そのターゲットとされたアプリケーションにおけるレファレンスとして実用的であり続けるために充分に小さくなければならず、またハッシュ値を計算するのに必要とされるプロセッサ時間の点でも実用的でなければならない。
残念ながら、特定のサイズのハッシュ関数についてシステムが一般に動作可能であっても、異なるハッシュサイズに変更することは、効率の低下、およびアプリケーション変換コストと共に、下位互換オーバヘッドのような多くの影響を持つ大きな作業である。例えば、コンテンツアドレス可能な記憶システム中のMD5アルゴリズムを異なるハッシュ関数と置き換え、コンピュータファイル毎に新しいメッセージダイジェストを生成することは、問題を生じる。128ビットメッセージダイジェスト(それぞれがあるファイルについてユニークなアドレスを表す)は、他の文書および世界中のコンピュータシステムにわたっておそらくは散りばめられているので、これら128ビットメッセージダイジェストを新しく計算されたメッセージダイジェストと置き換えることはほとんど不可能だと判るかもしれない。さらにもし前のハッシュ関数が「破られる」と一般に受け入れられた後にこの変換が起こると、重要かつ本質的に取り返しのつかない「信頼ギャップ」を生むことになりえるが、これは既存のコンテンツアドレスが変換の時点では疑いを晴らし得ないからである。
よって上記問題を解決するメカニズムおよび技術が必要とされる。
前述を達成するために、本発明の目的にしたがって、悪意のあるハッシュ攻撃を排除し、ハッシュ関数衝突が検出されることの保証を提供する技術が記載される。
一般的な概念は、コンテンツアドレシングをコンテンツ検証から分離することである。換言すれば、コンテンツアドレシングに用いられるハッシュ関数は、コンテンツ検証に用いられるハッシュ関数とは異なる。バリエーションとして、コンテンツアドレシングのためのハッシュ関数の代わりに乱数発生器が用いられる。この技術は、時間と共にコンテンツ検証ハッシュ関数が変化されえ、トランスペアレントに強化され、コンテンツアドレシングハッシュ関数を用いて計算されたコンテンツアドレスを用いた任意のアプリケーションについて完全に下位互換性を維持することを可能にする。よってコンテンツアドレシングハッシュ関数のそれではなく、検証ハッシュ関数の完全な強度により、ハッシュ攻撃が検出されえ、防がれえる。その結果、言及すべきより少ない悪意のある攻撃が予想されるが、これは成功する可能性が少ししかないとそれらには知られるからである。
このアプローチは、ほとんどのアプリケーションにおいて大きな変換を要求し、既存のコンテンツアドレシングされたデータの集積の完全性を危うくし、よって長期的なアーカイブ機能についての技術のアピール度を大きく低減させる、全体のシステムにわたって単に単一のコンテンツアドレシングハッシュ関数をアップグレードするデフォールトのシナリオに対して大きな利点を提供する。
検証のための第2ハッシュ関数の使用は、アドレシングハッシュ関数を伴う衝突、またはそれに対するハッシュ攻撃の検出を可能にする。128ビットを用いれば衝突が2つのファイル間で起こるのは統計的に尤もらしくはないが、それでも大衆はそのような衝突が検出されえるという安心を求めるかもしれないのである。衝突が起こったとしても、2つのファイルについての検証ハッシュ値は異なるので、よってアドレシングハッシュ関数が2つの異なるファイルについて同じ値を生んだという問題にフラグを付けられる。同様に、もし悪意の者が128ビットハッシュ関数を攻撃し、2つのファイルが同じハッシュ値を与えるような方法を考え出すなら、この攻撃は検証ハッシュ値の差のためによっても検出されえる。よってあらゆるそのような攻撃が検出されえることがほぼ確かであるので、そのような攻撃を実行するために時間とリソースを消費する者がでることはずっと起こりにくい。
本発明は、そのさらなる利点と共に、以下の記載を添付の図面と併せて参照することによって最も良く理解されよう。
古く、潜在的に安全ではないハッシュ関数(例えば128ビットのハッシュ関数)を使い続けることについての従来技術の性質、および潜在的な問題(実際の、または大衆の心に受け止められる)が与えられたとき、改善が望まれる。従来技術のハッシュ関数は、2つの目的を果たすと考えられる。ハッシュ関数によって作られるハッシュ値は、任意の与えられたコンピュータファイルについてのほとんどユニークなコンテンツベースのアドレスを提供するだけでなく、ファイルのコンテンツを検証するために用いられえるユニークな値を提供する。ハッシュ関数は、参照のため、およびコンテンツの検証のための両方に用いられる単一のハッシュ値を作る。128ビットハッシュ関数によって利用可能なアドレス空間のサイズは、現実的には問題がないことが判る。128ビットのハッシュ関数(例えば)は2128アドレスのアドレス空間を提供し、これは全ての意図および目的のために予見可能な未来において不足することはなく、衝突に至ることもないユニークなアドレスの量である。
しかし同じハッシュ関数がファイルのコンテンツの検証を提供するためにも用いられる。すなわち、ファイルがそのハッシュ値をアドレスとして用いて取り出されるとき、ハッシュ値は再計算され、オリジナルのものと比較される。用いられるハッシュ関数を強化することが望ましいので、ユニークなアドレスを提供するためにオリジナルの参照ハッシュ関数を保持しつつ、ファイルのコンテンツの検証を提供するために第2検証ハッシュ関数が用いられえる。オリジナルの参照ハッシュ関数を保持することは多くの利点を有し、それにはファイルを参照するのに用いられるユニークな値が続けて用いられえるという利益が含まれる。問題のファイルを参照するために、このユニークな値が多くの場所に分配され、他の文書中に挿入されているかもしれないので、このユニークなアドレスが変わらないことは重要なことである。同様に強力な第2検証ハッシュ関数がファイルのコンテンツを検証するために用いられることを可能にすることによって、このようなシステムがハッシュ攻撃に曝されないというより大きな保証が与えられる。このようなシステムは、与えられたファイルについての安定なユニークなコンテンツアドレスの利益を損なうことなく、この検証ハッシュ関数が時間と共にダイナミックにアップグレードされることを可能にする。
コンテンツアドレス可能な記憶:
以下の議論の理解を助けるために、コンテンツアドレス可能な記憶を簡単に復習することが役に立つだろう。図1は、文書102についてのハッシュベースのユニークな識別子122を作る技術を示す。以下の記載は、表現され管理される簡単な文書の例を用いるが、文書102はディジタル形式で表現される任意のタイプの情報でありえる。例えば本発明は、コンピュータファイル、ファイル群のグループ、ファイル識別子群のグループ、または他のデータの集積またはデータベース情報のような情報の任意の電子的表現に適用可能である。そのような他のデータの集積には、ディジタルオーディオまたはビデオストリームからのフレームまたはクリップ、ディジタル写真、スキャンされた紙の文書、ボイスメッセージ、CAD/CAMデザイン、MRIまたはX線データ、メッセージレコードまたはファイルからのストリーム、システムの監査またはステータスログからのログエントリ、電子メールアーカイブ、小切手イメージなどが含まれる。データベース情報には、リレーショナル、階層、ネットワークまたは他のデータベースが含まれる。一般に、ディジタル情報は、2進(またはn進)ディジットの任意のストリングを含みえる。ある実施形態において、ディジタル情報は、バイナリラージオブジェクト、つまりBLOB群として操作される。以下の記載は、コンピュータファイルを例として用いるが、本発明はそのようには限定されない。「コンピュータファイル」という語は、前述の情報のタイプの任意の電子的表現を包含するようにここでは用いられる。
アルゴリズム104は、その文書についてのユニークな識別子106を作るために文書102を処理するために用いられる。好ましくはアルゴリズム104は、ハッシュ値106を作るハッシュ関数である。この例では、ハッシュ関数は、ハッシュ値またはメッセージダイジェスト(「MD」)106を作るように用いられる。よく知られるハッシュ関数には、MD2、MD5、SHA−1、SHA−256、RIPEMD−160などが含まれる。
この技術で知られるように、文書にわたってのハッシュ関数の使用は、その文書の「ディジタル指紋」であり、それをユニークに特定するユニークなハッシュ値つまりメッセージダイジェストを作る。メッセージダイジェストまたは「MD」という語は、ハッシュ関数によって作られたハッシュ値を指すためにしばしば用いられ、ある文書についてのユニークなコンテンツベースの識別子を作るのに用いられえる任意のタイプのハッシュ関数を包含するよう意図される。この例では、MD5アルゴリズムがMD106を作るために用いられることを想定する。
メッセージダイジェスト106は、本発明の目的のために用いられえ、またはそれは記述子ファイル108内に埋め込まれえる。記述子ファイル108は、メッセージダイジェスト106および文書102の情報または任意の他の情報をさらに記述し、識別し、または説明する任意のさまざまなメタデータ110を含む。記述子ファイルの記述およびメタデータのタイプは、上で参照された国際出願群において記載されている。ある実施形態においてはメタデータ110は、記述的ファイル名、ファイルサイズ、アクセス権限、所有者、保持期間などを含む。主題、タイトル、作者、日付のようなより上位の情報も含まれえる。
記述子ファイルは、もし特定のアプリケーションのために必要であるならこのタイプの情報のためのプレースホルダとして機能するのに、またもしシチュエーションがそのように要求するならファイル群のグループについてのメッセージダイジェストを保持するのに有用である。メッセージダイジェストは、記述子ファイルを参照しえ、または個別の文書を直接に特定しえる。
いったん記述子ファイルが生成されると、ハッシュ関数114は、記述子ファイルに適用されて、他のメッセージダイジェスト116を作る。メッセージダイジェスト116は、従来技術に示される技術を用いて文書102の位置をユニークに特定し、識別するために今度は用いられえる。例えば記述子ファイル108および文書102はコンピュータの通常のファイルシステムに記憶されえ、ここではそれらのファイル名はそれぞれMD116およびMD106によって表現されるビットストリングである。またはそれぞれのファイルはデータベース内に記憶されえ、ここではファイルへのキーはそれぞれのファイルについてのそれぞれのメッセージダイジェストである。一般にファイル108および文書102は任意のコンテンツアドレス可能な記憶システム内に記憶されえ、ここではそれらは、それらのメッセージダイジェストだけを用いて位置特定および取り出しがなされえる。
MD5メッセージダイジェスト(または他のハッシュ値)は、人間によって容易に読まれ、覚えられえる形に変換されえる。MD5ハッシュ関数からの結果として生じるメッセージダイジェストは128ビットの数であるので、この数を人間が用いるのにより扱いやすいかたちにエンコードするのが望ましい。結果として生じる数は、10進、16進、または2進を含む任意のさまざまな形態にエンコードされえる。好ましくはこの数は、ベースASCIIキャラクタセット中の26のアルファベットおよび数字のキャラクタのセットへマッピングされるベース32の数に変換される。このマッピングは、「ASCIIアーマリング(ASCII Armoring)」と呼ばれ、コンテンツがアルファニューメリックコーディングに制限されることを要求するプロトコル上で送信するために2進情報を限られたキャラクタセットに収めるためにふつう用いられる。好ましい実施形態において、フラグキャラクタは、結果として生じるストリング内の所定の位置に含まれ、ストリングの全体長を27キャラクタにする。このフラグキャラクタは、使用するアルゴリズム、ファイルのタイプなどのような情報も提供しえる。
結果は、数字および大文字の27キャラクタのASCIIストリングである。このようなフォーマットは、より簡単に人間に書かれて、および/またはコンピュータによって操作されえ、また容易に多くのソフトウェアプログラムによって受け入れられるコンパクトな形態を提供する。加えて、メッセージダイジェストのこの特定の表現は、より簡単にデータクエリーによって取り出され、ソフトウェアアプリケーションファイルリクエストにコーディングされ、コンテンツまたはアセット管理システムによって参照され、オブジェクトブラウザでリクエストされ、ある文書から他の文書へ電子的にコピーおよびペーストされ、電子メールを介して送られるなどの利点を有する。
この例では、MD116は、27キャラクタストリング120に変換されている。具体的な実施形態において、ストリング120は、インターネット名118と連結され、URL122を作る。名前118は、DNSによって解決され、「trustclip.com」というドメインネームを含む。この具体的な実施形態において、「trustclip.com」は、コンテンツアドレス可能な記憶デバイスに接続されるウェブサーバの位置特定を行うのに用いられる。ドメイン「trustclip.com」を運用するサービスプロバイダは、メッセージダイジェストをユニークな識別子として用いてこのような文書群を記憶し、URL(URL122のような)が与えられるときに、このような文書をユーザに利用可能にする。このようにして、ユーザがURL122を与えられるとき、またはそうでなければそれをリンクとして用いるとき、ウェブサイト「trustclip.com」は、MD120をとり、文書を位置特定し、それをユーザに返す。もしMD120が複数の文書についてのメッセージダイジェストを含む記述子ファイルを特定するなら、これら文書の全てが返される。本発明は、メッセージダイジェスト(形態116、120または他のもの)が多くのやり方で用いられてオリジナルの文書を位置特定することを想定する。前述のように、メッセージダイジェストは、文書のファイル名、データベースのキー、URLまたはURI(またはIPアドレスまたはパス名のような他のファイルロケータ)内に埋め込まれて、または単にそのままで用いられえる。
他の実施形態において、メッセージダイジェストは、そのときメッセージダイジェストを用いてメッセージダイジェストによってユニークに特定される文書を検索し位置特定をするためにサービスプロバイダに与えられる。例えば、サービスプロバイダは、それら自身のコンテンツアドレス可能な記憶をサーチしてもよく、または他のエンティティの記憶内で文書を検索してもよい。またメッセージダイジェストは、企業ネットワークを通して、イントラネット上で、インターネット上で、またはそのメッセージダイジェストによってユニークに特定される文書を探す目的で他のやり方で、ブロードキャストされえる。記述子ファイルの実施形態は、上述の国際出願において記載されている。
検証ハッシュ関数の使用法:
図2は、異なるハッシュ関数を用いて計算された任意の個数のファイルについてのハッシュ値を含むテーブル200を示す。テーブル200は、ある実施形態では「ハッシュオーソリティ(hash authority)」と呼ばれる。データベースに含まれる特定のファイルについて、テーブル200は、異なるハッシュ関数を用いて計算されたそのファイルについての任意の個数の異なるハッシュ値を保持しえる。例えばテーブル200は、第1ハッシュ関数(例えばMD5アルゴリズム)を用いて計算されたアドレスハッシュ値(AH)を保持するカラム204、および異なるハッシュ関数を用いて計算された検証ハッシュ値(VH)を保持するカラム208を含む。それぞれのロウは与えられたファイルに対応する。例えばロウ212はファイルAに対応し、MD5アルゴリズム(例えば)を用いて計算されたファイルAについてのAHを含む。ファイルAについてのVHは256ビットハッシュ関数またはそれより強いものを用いて計算される。特定のファイルAについて、そのAHがそのVHと関連付けられて記憶され、よって特定のファイルについてのAHを参照することによってそのVHが得られ、かつその逆も成り立つことをロウ212は示す。特定のファイルについてのVHは、そのファイルについてAHを計算するのに用いられるハッシュ関数と同じ長さ(またはそれより短い長さ)を有するハッシュ関数の結果でありえる。しかしVHを計算するのに用いられるこのハッシュ関数がより強いことが好ましい。また、カラム208のような多くのカラムが存在しえ、その結果、ある与えられたファイルについて、異なる検証ハッシュ関数を用いて計算された多くのVH値を有してもよい。
テーブル200は、記憶されているファイルの個数に依存して任意の個数のエントリ(またはレコード)を有しえる。テーブル200は、単一のコンピュータ上において、コンピュータ群のネットワーク上において、コンピュータ群の分散化ネットワーク上において、またはファイルまたは他のディジタル情報を記憶するのに適切な任意のデータベース内において記憶されるファイルと関連付けられえる。さらにテーブル200は、当業者には理解されるように、ハッシュ関数、タイムスタンプおよび/またはディジタル署名を用いて保護されたそのエントリを有しえる。さらに特定のファイルについてのAHおよびVHは、必ずしもテーブルではなく、任意の他の適切なデータ構造を用いてそれぞれ互いに関連付けられえる。
図3は、ファイルをデータベースに追加するある実施形態を記載するフローチャートである。この簡単な例において、コンピュータファイルまたは他のタイプのディジタル情報が本発明の技術を用いて、ファイル群のデータベースに追加することが望まれている。
このデータベースは、そのファイルのハッシュ値がそのユニークなアドレスとして用いられるコンテンツベースのアドレシングスキームを好ましくは用いてファイルを記憶する。2つの異なるハッシュ関数は、このデータベースと関連付けられている。アドレシングハッシュ関数は、それぞれのファイルをアドレスするのに用いられるアドレスハッシュ値(AH)を生成し、検証ハッシュ関数は、特定のファイルのコンテンツを検証するのに用いられる検証ハッシュ値(VH)を生成するのに用いられる。好ましくは検証ハッシュ関数は、アドレシングハッシュ関数よりも強く、より強いハッシュ関数の例はSHA−256およびRIPEMD−256である。
ある実施形態において、検証ハッシュ関数は、アドレシングハッシュ関数と同じハッシュ関数であるが、それはフラグ、パラメータ、追加入力、バリエーションまたは他の改変を用いることによって、アドレシングハッシュ関数によって作られるものとは異なるハッシュ値を作る。例えば、このファイルは、ファイル名、サイズ、所有者、作成日、またはそのファイルの最後4kブロックのような反復(repeat)のようなメタデータを含むことによってわずかに改変されえる。
テーブル200のようなデータ構造が存在し、データベース内に存在する全てのファイルについてのエントリおよびそれらの対応するハッシュ値を含むが、そのようなテーブルはもしファイルがまだ追加されていないのなら空であってもよい。
220において、追加されるべきファイルが任意の適切なソースから得られる。224において、アドレシングハッシュ関数がこのファイルに適用されて、ファイルのAHを生成し、そのユニークなアドレスを決定する。228において、検証ハッシュ関数が用いられてファイルのVHを生成する。ステップ232は、追加されるべきファイルが既にデータベース内に存在するかをチェックする。このようなファイルについてチェックすることは、さまざまなやり方で実行されえる。ある実施形態においては、そのファイルについてそのAHを識別子またはインデックスとして用いて、データベース全体が検索される。例えば、ファイルは、そのファイルのAHであるファイル名の下で記憶されえる。このとき、ファイルシステム全体は、このAHが存在するかを調べるようにそれからスキャンされえる。他の実施形態において、このAHは、このファイルが既に存在するかを決定するために、テーブル200へのルックアップとして用いられえる。
もしこのファイルがデータベース内に存在しないと決定されるなら(ファイルのAHに一致するものが何も見つからないことによって)、236において、ファイルはデータベース内にそのアドレスとしてそのAHを用いて記憶される。例えば、このファイルは、そのAHであるファイル名を与えられえる。次に240において、この特定のファイルについてのAH−VHのペアがテーブル200に追加されることによって、新しく追加されたファイルについてのエントリがテーブル200内にここで存在することになる。このAHは、データベース内でのこのファイルについてのユニークなアドレスとしてリクエスタに戻される。プロセスはそれから終了する。
ステップ232に戻り、もしファイルが既にデータベース内に存在すると決定されるなら(ファイルのAHと一致するものが見つけられることによって)、既にデータベース内に存在するファイルが、追加されることが望まれるファイルと実際に同じであるかがそれから決定される。244において、データベース内のアドレスAHにある、このファイルについてVHが計算される。248において、データベース内に存在するこのファイルについてのVHが、追加されるべきファイルについてのVH(ステップ228から)と比較される。たいていの場合、2つのVHは同じであり、これは追加されるべきファイルが既にデータベース内に存在することを表す。もしこうであれば、AHはリクエスタにデータベース内のそのファイルについてのユニークなアドレスとして戻され、プロセスは終了する。一方、もし2つのファイルについてのVHが異なるなら、これは問題があることを表す。
252において、システムは、問題の存在を報告する。この問題は、ハッシュ攻撃の結果でありえ、この場合、2つのファイルのうちの1つが悪意を持って変更され、その結果、アドレシングハッシュ関数がファイルが同じであると示しても、検証ハッシュ関数(より強くより信頼できる)が2つのファイルは実際には異なると示す。他の可能性としては、システムハードウェアまたはソフトウェア内に技術的誤動作があり、VH値が異なるように見えても、ファイルは実際には同じであることがある。3番目の可能性としては、ハッシュ衝突が起こって、2つのファイルが実際には異なっていても、それぞれのファイルについてのアドレスハッシュ値の計算は同じ値を生むことである。いずれの場合も、ステップ252は、この問題をシステムまたはユーザに対して示し、これらが適切な処置を取りえる。いずれの場合も、このようなシナリオは特定の実施形態によっては起こりえるが、好ましくはこのファイルはデータベースにこの時点では追加されるべきではない。
図4は、ファイルがデータベースから取り出されるある実施形態を記載するフローチャートである。このシチュエーションにおいて、ユーザは、本発明の技術を用いて実現されたデータベースからファイルを取り出したい。260において、ユーザまたはソフトウェアは特定のファイルを希望し、そのファイルについての以前に計算されたハッシュ値に基づいてそのファイルを要求する。好ましくはユーザまたはアプリケーションは、そのファイルについてのハッシュ値が、AH値を計算するためにシステムによっても用いられる特定のアドレシングハッシュ関数を用いて計算されていることを知っている。所望のファイルについてのAHは、ユーザまたはアプリケーションによって、そのAHが記憶されている任意の適切なソースから得られる。264において、ユーザまたはアプリケーションは、所望のファイルのこのアドレスハッシュ値(AH)をシステムに提示する。268において、システムはAHを用いて、この所望のファイルがデータベース内に存在するかを、ステップ232において前述された技術を例えば用いて決定する。もし存在するなら、このファイルについてのAHおよびVHを取り出すためにこのステップにおいてハッシュオーソリティテーブルが調べられてもよい。もしファイルがデータベース内に存在しないと決定されるなら、272においてシステムはユーザまたはアプリケーションに所望のファイルが見つからなかったことを報告する。
しかしもしファイルが見つかったとシステムが信じるとシステムが示すなら、276においてシステムはデータベース内で見つかったファイルのAHを計算する。280において、264においてユーザから受け取られたAHは、276において生成されたAHと比較される。この比較は、アドレスAHにおいて記憶されたファイルが実際にAHに等しいアドレスハッシュ値を有することを保証するチェックとして実行される。状況によっては、この比較ステップを実行しないことも可能である。
もしAH値群が異なるなら、284において異常がユーザまたはアプリケーションに報告される。280において計算された異なるAH値群は、ローカルファイルが壊れていることを典型的には示し、ユーザに戻されるべきではない。もしAH値が同じであるなら、これはアドレスAHにおいて見つかったファイルがおそらくユーザによって希望されるファイルであることを示す。したがって288において、データベースにおいて見つかったファイルの検証ハッシュ値(VH)が計算される。292においてこの計算されたVHが、ハッシュオーソリティテーブル中のエントリからのこのファイルについてのVHと比較される。このファイルに対応するハッシュオーソリティテーブル中のこのエントリは、ステップ268のあいだにAHをインデックスとして用いて参照され、またはVHはテーブルにおいてこの時点でやはりファイルのAHをインデックスとして用いて参照されえる。もしVH値が異なるなら、ステップ252において記載されたのと同じ可能性のある問題を示す問題が296においてユーザに報告される。もしVH値が同じなら、これはアドレスAHにおいて見つかったファイルが、そのファイルが最初にデータベースに追加されたときにもともとこの場所において記憶されたのと同じファイルであることを示す。このステップで等しいVH値群は、見つかったファイルがユーザによって希望されるファイルであることを信頼性を持って示す。298においてこのファイルは、それをリクエストするユーザまたはソフトウェアアプリケーションへ届けられる。
図5は、本発明の実施形態を用いて実現されたデータベース中のファイルの完全性をチェックする技術を記載するフローチャートである。このシチュエーションにおいて、もし異常が見つけられたなら警告を発して、もし必要なら修正するためのアクションをとるために、データベース中に記憶されたファイルの完全性を連続的にチェックすることが望ましい。このような連続的な完全性チェックなしでは、悪意を持つ者がデータベースのオリジナルのファイルを置換、変更または消去し、オリジナルのデータがなくなることもあり得る。例えば、もし誰かがファイルのアドレスハッシュ値(AH)を計算するのに用いられるより低い強度のハッシュ関数を破る方法を見つけるなら、その人間にとっては偽のファイルをデータベースに挿入することも可能になる。換言すれば、この偽のファイルは、オリジナルのファイルの変更されたバージョンであるが、しかしそのアドレスハッシュ値はオリジナルのファイルのものと同じである。よってファイルは、不正な目的のために変更されえ、真のファイルになりすましてデータベース中に挿入されえる。両方のファイルについてのアドレスハッシュ値が同じなので、不正に変更されたファイルが正しいファイルではないことを証明することは非常に困難になりえる。検証ハッシュ関数がそのようなファイルのコンテンツを検証して、変更されたファイルが不正なバージョンであることを証明するとしても、真のファイルのオリジナルのコンテンツは失われてしまう。
本発明のこの実施形態において、コンピュータファイルを保持するデータベースは、それぞれのファイルの複製(またはより多くのコピー)を保管し、よってあるコピーにおいてエラーが検出されるときには疑わしいファイルはその複製と置換されえる。先行技術による技法もそのような複製およびファイル置換の使用を含みえるが、以下の記載は、第2検証ハッシュ関数を用いて連続的な完全性チェックを実行する方法を提供する。このシナリオでは、本発明の実施形態によって多くのコンピュータファイルが適切なデータベース中に記憶されている。データベース中に記憶されたそれぞれのファイルについて、アドレスハッシュ値(AH)および検証ハッシュ値(VH)のペアがテーブルまたは他の適切なデータ構造のかたちで記憶されている。図5のフローチャートは、第2検証ハッシュ関数の追加された強度および優位性を用いてこれらファイルの完全性を連続的にチェックする方法を提供する。
304で始まり、システムはデータベース中の全てのファイル(またはもし望まれるなら全てのファイルのうちのサブセット)について反復する。この反復は、データベース中に存在する全てのファイルを通して、それらのファイル名または他の識別子を用いて順次ステップを踏むことによって実行されえ、またはハッシュオーソリティテーブル200のようなテーブルが用いられて、それぞれのファイルをテーブルからのそのAHを用いて参照することによってデータベース中の全てのファイルにわたって反復しえる。さまざまなファイルにわたる反復のための他の技術には、ファイルまたはテーブル中のファイルエントリをランダムにステップすることが含まれる。
308において、チェックされるべきファイルがそのファイルの既存のAHを参照することによって得られ(テーブルから、ファイル名から、または他の手段を介して得られ)、データベース中のそのファイルのアドレスを決定する。312において、システムによって用いられているアドレシングハッシュ関数がファイルに適用され、そのファイルのAHを計算する。316において、この計算されたAHは、ハッシュオーソリティテーブル中で見いだされたファイルについてのファイルについての既存のAHと比較される。
もしAH値群が異なるなら、320においてシステムは問題をユーザまたは完全性チェックを実行するアプリケーションに報告する。もしAH値群が異なるなら、システムは、分析されている現在のファイルがなんらかのかたちで(技術的な誤動作、攻撃、その他によって)壊れていると推定し、システムは324においてエラーリカバリを実行する。システムは現在のファイルのコピーを他の位置に以前に記憶しているので、ハッシュオーソリティテーブル(ファイルの位置特定をまず行うのに用いられる)からのAHがそのファイルの既存の良いコピーを位置特定するために用いられる。いったん位置特定されると、疑わしいファイルは既知の良いコピーと置換される。ファイルの両方のコピーが同時に壊れることは統計的に起こりえないので、ファイルの複製は良いコピーであると推定される。もちろん、複製の完全性をダブルチェックするために、ハッシュオーソリティテーブル中で見つけられたAHと比較されるように、その複製のAHも計算されえる。他のエラーリカバリプロシージャも実行されえる。例えば、実現のアプローチに依存して、システムは疑わしいファイルを置換しないと決定しえ、疑わしいファイルは消去されえ、または疑わしいファイルは改竄の企図の証拠を文書化し保存するためにオリジナルのあるバージョンとして記憶装置に追加されえる。問題の現在のファイルについていったんエラーリカバリが実行されると、ループは344において継続され、その完全性がチェックされるように次のファイルが得られる。
ステップ316に戻り、もしAH値が同じなら、これは、コンテンツアドレスAHにおいて見つかった現在のファイルが、おそらくそのアドレスにもともと記憶されたファイルであることを示す。328において、そのファイルの検証ハッシュ値(VH)が計算され、さらにファイルの完全性をチェックする。好ましくはシステムによって用いられる検証ハッシュ関数は、アドレシングハッシュ関数とは異なり、それよりも強力である。332において、そのファイルについて計算されたVHは、ハッシュオーソリティテーブル中に存在する既存のVH(そのファイルがもともと記憶されるときに計算された)と比較される。もしVH値群が異なるなら、336において、ステップ252において一般に記載されたように問題が報告される。
340においてシステムは、問題に対応するために適切な修正のためのアクションを取りえる。例えば、そのファイルは疑わしいとしてフラグが付けられえ、なぜVH値群が異なったかを決定するために監査が実行されえ、現在のファイルの複製が用いられて疑わしいファイルのコピーを置換しえ、そのファイルの他の既存のコピーが消去されえるなどである。これら取られえる修正アクションは、システムの設計および実現方法およびシステムの操作者が達成したいと思う目標に依存する。いったん適切なアクションが取られると、344において分析されるべき次のファイルが得られる。
ステップ332に今度は戻り、もしVH値群が同じなら、これは、コンテンツアドレスAHに現在存在するファイルが、実際にそのAH−VHペアがハッシュオーソリティテーブルに追加されたときにもともとそこに配置されたファイルであることをほぼ確実に示す。このシチュエーションにおいて、報告または修正アクションは必要とされず、344において分析されるべき次のファイルが得られる。いったん全てのファイルがループ304〜344を介してチェックされると、プロセスは終了するかまたは元に戻る。
マルチレベルでの実施形態:
本発明の実施形態は、デスクトップコンピュータ、サーバ、専用のメインフレームなどの上に常駐するデータベースにおいて実現されえると同時に、分散されたかたちでも実現されえる。図6は、コンピュータファイル(または他のディジタル情報)を保持するデータベースが多くのサーバコンピュータの中で分散されているマルチレベルデータベース400を示す。このデータベースは、任意の個数のコンピュータにわたって分散化されたやり方で実現されえ、これには図6に示される単純マルチレベルデータベースが含まれる。もちろんより少ない、またはより多い個数のレベルが存在しえ、また、異なるタイプの階層中に配置されたより少ない、またはより多い個数のデータベースサーバが存在しえる。この例では、データベースサーバ410、412、および414は、大きな会社の部門に関連付けられたサーバを表す。データベースサーバ420(および示されない他のもの)は、示される3つの部(および示されない他のもの)を有する会社内の事業部レベルを表す。データベースサーバ430は、本社オフィスと関連付けられ、他の会社または子会社に対応する他のサーバともリンクされえ、グローバルハッシュオーソリティが存在しえる次のより高いレベルへのリンクをも有しえる。
それぞれのデータベースサーバと関連付けられているのは、図2に示されるようにおそらくは実現された、または同様に機能するデータ構造を用いるハッシュオーソリティテーブル(例えばテーブル411)である。特定のレベルにおけるそれぞれのテーブルは、そのレベルにおけるサーバに記憶されるファイル(およびそれらに関連付けられたハッシュ値)だけでなく、次のより低いレベルにおける全てのファイルも表す。このようにして、与えられたレベルにおけるハッシュオーソリティテーブルは、より低いレベルにおける全てのコンテンツを知っており、同時にそのサーバにおいて記憶されるコンテンツも知っている。このマルチレベルデータベース実施形態は、効率、スケーラビリティおよびローカル処理のために分散化されたコンピュータを用いる必要に対応すると同時に、与えられたレベルのハッシュオーソリティテーブルが、それより下のコンテンツを追跡するだけでなく、そのコンテンツの完全性も検証することを可能にする。例えば、もし同じファイルがデータベース内の異なるデータベースサーバに追加されるなら、このファイルの複数のコピーが異なるサーバ上に存在し、異なるハッシュオーソリティテーブル中に同一のエントリが存在することになる。もし悪意を持つ者がデータベース内のファイルのうちの一つのコピーを変更することに成功すると、この不正なコピーは、真のコピーの完全性に疑いを抱かせることになるかもしれない。以下の記載はこれらの問題に対処する。
図7は、マルチレベルデータベースにファイルを追加するある技術を記載するフローチャートである。450において、コンピュータファイル(または他のディジタル情報)が得られ、このファイルがデータベースに追加されなければならないという指示がユーザ(または他のソフトウェアアプリケーション)から受け取られる。454において、ファイルのアドレスハッシュ値(AH)および検証ハッシュ値(VH)が計算される。458においてファイルは、ローカルサーバ410(例えば)上のアドレスAHに記憶され、計算されたAH−VHペアはローカルテーブル411(例えば)に追加される。466において計算されたAH−VHペアは、もしまだ存在しないならこのペアをテーブル421に追加する意図で、次のレベル、すなわちデータベースサーバ420へと送られる。説明の簡単のためにこのファイルはまだサーバ410上に存在していないと仮定するが、このファイルが以前に記憶されたかをチェックするためには図3の実施形態が用いられえる。
ファイルがデータベースに追加されるとき(例えば図3および図7におけるように)、システムは、まずそのファイルがすでにデータベース中に存在するかどうかをチェックしえ、またはそれはチェックしないことを選択しえる。システムがチェックするかどうかは、さまざまなファクタの中でもとりわけ、コンピュータファイル中に含まれる情報の種類に依存する、実現する上での詳細事項である。例えばもしそのコンピュータファイルがMRIデータまたはX線データを含むなら、あるファイルのコンテンツが他のファイルのコンテンツと似ていないことはほぼ確実である。よって効率のために、そのファイルが既にデータベース中に存在するかを調べるためにチェックする必要はなく、それは全く同じファイルが既に存在する確からしさが無いからである。一方、もしそのファイルが、多くの従業員が会社のデータベースに記憶しようとする、よくある電子メールの添付を表すなら、そのようなファイルが既にデータベースに追加されているかをまず調べるためにチェックすることが有用だろう。システムがまずチェックするかどうかは、他のファクタにも依存しえる。
470において、サーバ410から受け取られたAH−VHペアは、次のより高いレベルにあるテーブル421中に既存のエントリと比較される。同様のエントリが存在するかどうかに依存して、3つの可能な結果がこの比較にはある。もしテーブル411から渡されたAH値に対応するAH値がテーブル421にないなら、テーブル421にはサーバ410に追加されたファイルに対応するエントリが存在せず、このファイルはサーバ420に追加されていないと同時に、その他のより低いレベルのサーバの任意のもの(この例では412および414)にも追加されていないと決定される。もしこのようなシチュエーションなら、474においてテーブル411から渡されたAH−VHペアはテーブル421にエントリとして追加される。サーバ410上に記憶されたファイルは、サーバ420にもコピーされえるが、これは厳密には必要ではない。もうテーブル421もAH−VHペアを含み、これはより低いレベルのサーバのうちの少なくとも1つが対応するコンピュータファイルを含むことを示す。このペアがテーブルに追加された後で、フローはステップ466へとループバックし、ここで同じAH−VHペアが次のより高いレベル(サーバ430およびテーブル431)へ渡され、次のより高いレベルにおいて一致するものが存在するかをチェックして調べる。この受け渡しおよびチェックは、全てのレベルが尽くされるまで続く。
こんどはステップ470に戻り、もしテーブル411から渡されたAH−VHペアが正確に一致する(すなわちAH値およびVH値が一致する)なら、これは、サーバ410に今追加されたそのコンピュータファイルが、サーバ420の中に、またはおそらくはそのより低いレベルのサーバのうちの1つの中にも存在することを示す。478においては、システムの実現方法がファイルのコピーのうちの1つが消去されることを要求しない限り、アクションは必要とされない。(これは、記憶容量を節約するために、任意の与えられたファイルは分散化された環境では一度しか記憶されないと断定するメカニズムの基礎となりえる。)474および478の両方において、AHが、ファイルについてのユニークなアドレスとしてリクエスタに戻される。478の後、プロセスは終了する。
しかしもしAH値が一致するが、VH値が一致しないなら、これは482で報告される問題を表す。前述のようにこの問題は、衝突、技術的誤動作またはハッシュ攻撃でありえる。ステップ340において記載されたアクションのような修正アクションが486において取られえる。任意の適切なアクションが取られた後で、プロセスは終了する。他の実施形態において、システムは、ステップ486の後にステップ466に制御を移すよう決定しえ、ここでは前述のようにAH−VHペアは次のより高いレベルへと渡される。
他の前述のような実施形態は、図6のマルチレベルデータベースを用いて、または同様の分散化されたデータベースを用いて実現されえる。例えば、図4で記載された取り出し実施形態が、分散化されたデータベース上で実現されえ、この場合は、ステップ268は、単一のサーバではなく、さまざまなデータベースサーバ群にわたって検索する。同様に、図5で記載された完全性チェックの実施形態は、分散化されたデータベース上で実現されえ、そのときはステップ304のループは、さまざまなデータベースサーバ群上にある全てのファイルを考慮することになる。
既存のコンテンツアドレス可能な記憶システムへのハッシュオーソリティ機能の追加:
図8は、既存のコンテンツアドレス可能な記憶システムにハッシュオーソリティ機能を追加するある技術を記載するフローチャートである。先行技術はコンテンツアドレス可能な記憶技術を記載し、これによれば与えられたファイルについてハッシュ関数が用いられてユニークなメッセージダイジェストを生成する。ファイルがコンテンツアドレス可能な記憶(CAS)システムに記憶されるとき、そのメッセージダイジェストは、ユニークにそのファイルをアドレスするためだけではなく、ファイルのコンテンツを検証するためにも用いられえる。以下の実施形態を用いれば、ここで記載されるようなハッシュオーソリティ機能を、そのようなCASシステムに追加する(すなわち、第2検証ハッシュ関数の使用を追加する)ことが可能である。704において、図2のそれと類似のハッシュオーソリティテーブルまたは類似のデータ構造が作られてアドレスハッシュ値(AH)および検証ハッシュ値(VH)を保持する。既存のCASシステムは、コンテンツアドレスまたはアドレスハッシュ値(AH)をそれぞれのファイルについて生成するために、特定のハッシュ関数(以下ではアドレシングハッシュ関数と呼ぶ)を既に利用している。これらAH値は、新しく作られたハッシュオーソリティテーブルの第1カラムに置かれ、一方、第2カラムはそれぞれのファイルについて検証ハッシュ関数によって生成された検証ハッシュ値を保持する。好ましくは検証ハッシュ関数は、アドレシングハッシュ関数よりも強い、異なるハッシュ関数である。
708において、データベース内のそれぞれのファイルまたはコンテンツアドレスにわたって反復するループが始まる。712において、そのアドレスハッシュ値(AH)つまりコンテンツアドレスと共に、次のファイルが得られる。716において、検証ハッシュ関数が用いられてそのファイルについてのVHを計算する。それから720においてこのAH−VHペアがハッシュオーソリティテーブルにエントリとして追加される。724において、ループはデータベース内の次のファイルへと続く。いったんデータベース内の全てのファイルが処理され、それらのAH−VHペアがテーブルにエンターされると、728において、新しいハッシュオーソリティメカニズムがアクティベートされる。このアクティベーションは、任意の将来の追加、取り出しまたは完全性チェックプロセスがハッシュオーソリティテーブルを前述のように利用することを意味する。
検証ハッシュ関数のアップグレード:
図9は、検証ハッシュ関数をアップグレードする技術を記載するフローチャートである。前述のように、検証ハッシュ関数は、ファイルのコンテンツを検証するためにアドレシングハッシュ関数に加えて用いられる。より完全な完全性を提供するために、既存の検証ハッシュ関数を置き換えること、または第2検証ハッシュ関数をシステムに追加することも可能である。例えば、もし256ビット検証ハッシュ関数が現在用いられているなら、512ビット検証ハッシュ関数が追加され、用いられてもよい。以下は、第2検証ハッシュ関数が第1検証ハッシュ関数と共に用いられる技術を記載するが、第1検証ハッシュ関数を第2検証ハッシュ関数で置換することも可能である。
ステップ740は、データベース内の全てのファイルにわたって反復するループを始める。このループはそれぞれのファイルを、それらのファイル名または計算されたハッシュ値を介して順番に参照し、またはハッシュオーソリティテーブルを用いてそれぞれのファイルについて反復する。744において、処理されるべき次のファイルがデータベースから得られる。
748において、新しい検証ハッシュ関数が用いられてVH’、つまりそのファイルについての新しい検証ハッシュ値を計算する。752において、新しい検証ハッシュ関数を用いて計算された検証ハッシュ値の全てを保持するテーブルに第3カラムを例えば追加することによって、VH’がハッシュオーソリティテーブルに追加される。例えば図11に示されるようである。よってテーブル内のファイルについての与えられたエントリは、3つのハッシュ値を有する。すなわち、アドレスハッシュのための第1値、第1検証ハッシュのための第2値、および第2検証ハッシュのための第3値である。もちろん代替の実施形態においては、第2検証ハッシュ値は単に第1検証ハッシュ値を置き換え、テーブルが2つのカラムのままであってもよい。756において次のファイルが処理される。
いったん全てのファイルが処理されると、760において、システムは、新しいアップグレードされた検証ハッシュ関数の使用を、システム内でその存在をフラグを付けることによってアクティベートする。アップグレードされたハッシュ関数の存在は、追加、取り出しおよび完全性チェックプロセスについて影響を有する。例えば、ファイルが追加されるとき、両方の検証ハッシュ関数が用いられて、テーブルに追加される2つの異なる検証ハッシュ値を計算する。同様に、ファイルが取り出されるとき、両方の検証ハッシュ関数が用いられて、そのファイルのコンテンツを検証する。完全性チェックのプロセスも両方の検証ハッシュ関数を用いることになる。
図10は、ハッシュオーソリティテーブルのためにセキュリティを提供するのに用いられえるさらなる技術を記載するフローチャートである。図11は、さらなるセキュリティ手段を有するハッシュオーソリティテーブル800のある実施形態を示す。テーブル800は、アドレスハッシュ値のためのカラム802、第1検証ハッシュ関数値のためのカラム804、第2検証ハッシュ関数値のためのカラム806、タイムスタンプのためのカラム808、およびディジタル署名のためのカラム810を含む。このテーブルは、第2検証ハッシュ関数が用いられる実施形態を実現するが、このさらなるセキュリティ技術がハッシュオーソリティテーブルの実施形態と共に用いられえる。
さらなるセキュリティ技術は好ましくはステップ770において用いられ、ここで任意の処理のあいだに、ハッシュオーソリティテーブル内のレコードが追加または変更される。例えば、新しいファイルがデータベースに追加されるときにはレコードが追加され、新しい検証ハッシュ関数値が追加され、またはマッピングが図15に記載され後述のように追加されるときにはレコードが変更される。テーブル内のエントリへの任意の追加、またはその変更は、これらセキュリティ技術の使用を要求する。これらのシチュエーションにおいては、以下の追加ステップを行うことが適切でありえる。
774において、レコード内の既存のエントリ(例えばカラム802〜806)は、任意の適切なタイムスタンプ方法を用いてタイムスタンプが押される。778において、タイムスタンプがカラム808内のレコードへ追加される。782において、ハッシュオーソリティを認証するために、任意の適切なディジタル署名を用いてそのレコードについてディジタル署名が作られる。このディジタル署名は、AHおよびVH値、タイムスタンプおよび前のレコードのディジタル署名を含む、そのレコード内の任意の適切な情報を含みえる。786において、ディジタル署名がカラム810内のレコードに追加される。
ユニークな識別子としての乱数の使用:
いったんアドレシングおよび検証の異なる機能が2つの別個のハッシュ関数によって扱われえる(前述のように)ことが判れば、ファイルをユニークに識別し、データベース内のそのユニークなアドレスとして機能するために、アドレシングハッシュ関数によって生成されたものとは異なるユニークな数が用いられえることがさらに判る。換言すれば、アドレシングハッシュ関数は検証目的に用いられるのではないので(別個の検証ハッシュ関数の使用のために)、ユニークなアドレスをファイルのために生成するためのユニークな数を生成するアドレシングハッシュ関数を使うことは厳しく必要というわけでもないだろう。これらの目的のために、もしファイルをアドレスするための、充分に大きな乱数がユニークな識別子として生成されるなら、ファイルのコンテンツを検証するために検証ハッシュ関数がやはり用いられえ、同じ効果を得ることになろう。簡単に言えば、アドレシングハッシュ関数は、ファイルについてのユニークなアドレスとして用いられるべき、適切なだけ充分に大きい乱数を発生する乱数発生器によって置き換えられえる。
非常にさまざまな種類の乱数発生器が用いられえる。乱数発生器の知見および使用はこの技術でよく知られている。例として、用いられえる乱数発生技術には、時間、温度またはノイズ測定値などのようなシード値を用いて疑似乱数を発生することが含まれる。発生される乱数のサイズは、それぞれの実現例および発生される乱数の全てのもの中におけるユニークさを確実にするシステムの操作者の要求によって変化する。少なくとも128ビット(その2進形態で)を有する乱数が、公開または半公開の応用例(典型的にはインターネット上の)で衝突のリスクが非常に低いことを適切に保証するために必要とされよう。ある実施形態において、乱数発生器は、衝突を避けるのに適切に充分に長い128ビットの乱数を発生し、これは128ビットのアドレシングハッシュ関数を実現した(または実現する)システムとの互換性を可能にする。もちろんより長い乱数も用いられえる。
図12は、ファイルについての対応する乱数と共に任意の個数のファイルについての検証ハッシュ値を含むテーブル500を示す。ある実施形態においてテーブル500は、「識別子オーソリティ」テーブルと名付けられている。データベースに含まれる特定のファイルについて、テーブル500は、そのファイルについての乱数および検証ハッシュ関数を用いて計算されたそのファイルについてのハッシュ値を保持する。(もちろん1つより多い検証ハッシュ関数が存在する代替の実施形態も用いられえる。)テーブル500は、乱数発生器を用いて計算された乱数(R)を保持するカラム504およびハッシュ関数を用いて計算された検証ハッシュ値(VH)を保持するカラム508を含む。それぞれのロウは、与えられたファイルに対応する。例えば、ロウ514はファイルWに対応し、ファイルAについてのRを含む。ファイルAについてのVHは、256ビットのハッシュ関数を例えば用いて計算される。ロウ514は、特定のファイルWについて、そのRがそのVHと関連付けられて記憶され、よって特定のファイルについてのRを参照してそのVHが得られ、またその逆も得られるようになっている。
テーブル500は、記憶されているファイルの個数に依存して任意の個数のエントリ(またはレコード)を有しえる。テーブル500は、単一のコンピュータ上に、コンピュータ群のネットワーク上に、コンピュータ群の分散化されたネットワーク上に、またはファイルまたは他のディジタル情報を記憶するのに適切な任意のデータベース内に記憶されるファイルと関連付けられえる。さらにテーブル500は、当業者によって理解されるようにハッシュ関数、タイムスタンプおよび/またはディジタル署名を用いてそのエントリが保護されえる。さらに特定のファイルについてのRおよびVHは、必ずしもテーブルでなくても任意の他の適切なデータ構造を用いて互いに関連付けられえる。
テーブル500にまた含まれるのは、ファイルの複製がデータベースに追加されるときに有用な実際のアドレスカラム512である。例えば、ファイルZがデータベースに追加され、そのR−VHペアがロウ520に追加された後で、ファイルZがファイルXの正確な複製であることが発見されえる。この認識は、ファイルZがデータベースに追加されつつあるときか、または最適化プロセスのあいだに後で起こりえる。ファイルZについての乱数が既に発生され、カラム504に追加され、ユーザまたはアプリケーションに分配されているので、ロウ520を消去する(またはそれをエンターしない)のは不自然であるが、これはさまざまな当事者が、それを参照する唯一の手段としてファイルZについて発生された乱数を用いているかもしれないからである。このシチュエーションにおいては、物理的にファイルZをデータベースに追加する必要がない(またはおそらくはファイルZが消去されている)ので、ファイルXについての乱数は、ロウ520のカラム512にエンターされ、それによってファイルZを探す者に、ファイルをアドレスするためにはファイルXの乱数が用いられなければならないことを示す。ファイルXおよびファイルZは、複製であるので、ファイルXのための乱数をアドレスとして用いることは適切である。実現例に依存して、カラム512内のブランクエントリ(または他の適切なフラグ)は、調べるべき他のアドレスが存在しないことをシステムに対して示す。もちろん、同じファイルを全て参照する多くのエントリがテーブル500には存在しえる。この場合、そのファイルの1つのコピーだけが維持される必要があり、消去された(または追加されなかった)そのファイルのコピーについてのテーブル500内のエントリはカラム512を利用して、そのファイルの実際のアドレスを示す。
図13は、それぞれのファイルについてユニークなアドレスを発生する機能としてシステムが乱数発生器を用いるデータベースにファイルを追加する技術を記載するフローチャートである。550において追加されるべきファイルがユニークなまたはソフトウェアアプリケーションから得られる。554において適切な乱数発生器が用いられて乱数Rをそのファイルについて作る。この乱数は好ましくは、データベースに追加されるそれぞれのファイルについてユニークなアドレスを提供するのに適切に充分に長いビットのストリングである。先行技術で説明され図1に示されるように、このビットストリングは、容易にユーザが読める識別子を提供するために、またはファイルについてのファイル名として働かせるために、エンコードされえる。図1にまた示されるように、乱数は、URLまたは他の適切な識別子の一部を形成しえる。代替の実施形態においては、ステップ554は、ファイルを得てすぐに実行される必要はないが、ステップ560と共に、またはステップ572と共に実行されえる。558においてシステムによって用いられる検証ハッシュ関数が用いられてファイルの検証ハッシュ値(VH)を計算する。
ファイルが既にデータベース内に存在するかをチェックすることが望ましくない(すなわち単にファイルを直接に追加することが有利である)実施形態においては、ステップ562は実行されず、560においてファイルはそれからデータベース内のアドレスRに記憶される。568においてR−VHペアがそれからハッシュオーソリティテーブルに追加され、Rがファイルについてのユニークなアドレスとしてリクエスタに戻され、プロセスは終了する。
ファイルが既にデータベース内に存在するかをチェックすることが望ましい実施形態においては、ステップ562は、ファイルについて計算されたVHを、テーブルのカラム508中の全てのVH値と比較する。もし一致するものが見つからなければ、これはそのファイルが存在せず、制御はステップ560に進み、このステップがそのファイルおよびそのR−VHペアを前述のように追加する。しかしもし一致するものが見つかれば、これはファイルのコピーが既にデータベース内に存在することを示し、ハッシュオーソリティテーブル内のエントリが既に存在することを示す。ある実施形態においてはそのファイルについての新しい乱数を発生し、新しいエントリをテーブルに追加する必要はない。したがって584において、VHの一致に対応するテーブル中のエントリからの乱数がユーザ(または他のアプリケーション)にデータベース内のそのファイルについてのユニークなアドレスとして返される。この実施形態において、新しい乱数は発生される必要はなく、新しいエントリがテーブルに追加される必要はなく、このファイルはデータベースに追加される必要はないが、それはそのファイルが既にデータベース内に存在するからである。ステップ558で計算されたVHに一致するVHを有するエントリをテーブル内で単に見つけることによって、見つかったエントリからの乱数を用いることによって、そのファイルを特定するために用いられる乱数が得られる。580の後にプロセスは終了する。
ステップ562の他のバリエーションにおいては、乱数が既にそのファイルについて発生され、既にユーザまたは他のソフトウェアアプリケーションに返されているシチュエーションが存在しえる。このシチュエーションにおいては、もし562においてVHの一致が存在し、ファイルのコピーが既にデータベース内に存在すると決定されるなら、やはり572においてR−VHペアをテーブルに追加することが望ましい。このR−VHペアはテーブルに追加されるが、それは将来そのファイルを参照するのを助けるために乱数Rが既にユーザに返されており、よってテーブル内には乱数Rに対応するエントリが存在しなければならないからである。しかしこのシナリオにおいては、ファイルの他のコピーを追加することは厳しく必要とされないので、576において、新しく追加されるR−VHペアから既存の乱数へのマッピングが追加される。ファイルのコピーを追加する必要はないが、それはファイルが既にデータベース内に存在するからである。
例としてテーブル500のロウ520を考え、ここではファイルZがデータベースに追加されることが望まれるが、562においてはファイルZがファイルXの正確なコピーであることが決定される。(ファイルZのVHがファイルXのVHに一致するので、これらファイル群が同じであることが決定されえる。)ファイルZはデータベースに追加される必要はないが、それはファイルXが既に存在しているからであるが、572においてロウ520がテーブルに追加され、ファイルZについての新しく発生された乱数R(554において作られた)およびファイルZについてのVHを提供する。576において、ファイルZについての乱数Zからファイルの実際のアドレスへのマッピングを提供するために、カラム504からのファイルXについての乱数が、ロウ520においてカラム512に追加される。もちろんもし実際にファイルZ(ファイルXの複製)を追加することが望ましいなら、ステップ576を実行し、カラム512を利用する必要はないだろうが、それはカラム504におけるファイルZについての乱数がそのときファイルZをデータベース内で正確に特定するはずだからである。580の後にプロセスは終了する。
最適化実施形態は、乱数発生器を用いられて実現されるデータベース内でファイルの複数のコピーを扱う。この最適化において、データベース内の与えられたファイルの複数のコピーは、データベース内のファイルの単一のコピーだけを残して消去される。この最適化は、一致するVH値を探して識別子オーソリティテーブル500内の全てのエントリを通してルーピングすることによって実行されえる。一致するカラム508におけるVH値は、同じファイルのコピーを示す。一致を探してテーブル内のエントリ群のリストを通してルーピングするアルゴリズムは、当業者には知られている。特定のファイルについての2個より多い一致がいったん見つかると、カラム504の乱数は、ファイルのコピーのそれぞれをアドレスし、適宜、複数のコピーを消去するのに用いられる。好ましくはファイルの単一のコピーが保持され、テーブル中のそれぞれのR−VHペアエントリも保持される。それぞれのエントリは保持されるが、それはそれぞれのファイルについてのアドレスRが、将来、このファイルを参照するためにこのアドレスに頼るユーザおよびアプリケーションに既に分配されているからである。最後に、ファイルが消去されたエントリを、ファイルの単一の残っているコピーへとマッピングするために、識別子オーソリティテーブルがアップデートされる。例えば前述のように、もしファイルXおよびファイルZがコピーであり、もしファイルZがデータベースから消去されなければならないなら、ロウ520におけるエントリは保持されるが、カラム512におけるマッピングは追加され、それによりファイルZについての乱数をファイルXについての乱数へマッピングし、よってファイルZのためのアドレスRを持った任意のユーザが、ファイルXのためのアドレスRにおいてこのファイルのコピーを見つけられるようにする。もちろんこの技術は、与えられたファイルの複数のコピーについてもうまく働く。
図14は、ファイルを特定するのに乱数が用いられるデータベースからファイルを取り出す技術を記載するフローチャートである。このシチュエーションにおいて、ユーザはファイルをデータベースから取り出したい。610においてユーザまたはソフトウェアアプリケーションは、特定のファイルを希望し、そのファイルについての以前に記憶された乱数(R)に基づいてそのファイルを探す。所望のファイルについてのRは、Rを記憶する任意の適切なソースからユーザまたはアプリケーションによって得られる。このユーザまたはアプリケーションは、所望のファイルのこのRをシステムに示す。614においてシステムはRを用いて、所望のファイルがデータベース内に存在するかをRをファイルのアドレスとして、またはおそらくはそのファイル名として用いることによって決定する。このファイルについてのVHを見つけるために618において識別子オーソリティテーブルが調べられる。
622において、データベースで見つかったファイルの検証ハッシュ値(VH)が計算される。626においてこの計算されたVHが、識別子オーソリティテーブル内のエントリからのこのファイルについてのVHと比較される。もしVH値が異なるなら、634において、ステップ252において前述の同じ可能性がある問題を示すことで問題がユーザに報告され、この場合、ハッシュ衝突はありえないことを除くが、それはファイルについてのアドレスを計算するためにハッシュ関数が用いられていない(乱数が用いられている)からである。もしVH値が同じであるなら、これはアドレスRにおいて見つかったファイルが、ファイルが最初にデータベースに追加されたときにこの位置にもともと記憶されたのと同じファイルであることを示す。このステップにおける同じVH値は、見つかったファイルがユーザによって望まれるファイルであることを信頼性を持って示す。630においてファイルは、それをリクエストしたユーザまたはソフトウェアアプリケーションに届けられる。
図15は、乱数が用いられてファイルをユニークに特定する実施形態に、前述の追加セキュリティ技術も適用可能である識別子オーソリティテーブル840のある実施形態を示す。追加の技術は、レコードが追加されるとき(すなわちファイルまたは新しいR−VHペアが追加されるとき)、またはレコードが変更されるとき(例えば実際のアドレスが追加されるとき)に用いられえる。例えばタイムスタンプ848は、カラム842〜846に適用され、ディジタル署名850は、以前のレコードのディジタル署名に加えて、以前のカラムの全てを含む。もちろん、タイムスタンプおよびディジタル署名にフィールドが含まれるバリエーションも可能である。
コンピュータシステムとしての実施形態:
本発明は、さまざまなコンピュータ上で実現されえる。ある想定された実施形態において、文書を記憶および読み出しするのに用いられるコンピュータハードウェアは、マサチューセッツ州、Hopkinton のEMC Corporationから入手可能なCenteraブランドのコンピュータである。このCentera製品説明ガイドは、このコンピュータおよびそのソフトウェアを記述し、http://www.emc.com/pdf/products/centera/centera_guide.pdfにおいて入手可能であり、ここで参照によって援用される。このシステムソフトウェアはLinuxおよびJAVA(登録商標)を用いて記述されえる。この実施形態において、Centeraコンピュータは、図1
に示されるように、ユーザがメッセージダイジェストをURLを介して供給できるようにするウェブサイトのバックエンドであることが想定される。ウェブサイトサーバ上で動作するシステムソフトウェアは、Centeraおよびユーザ間をインタフェースし、ここで記載したようにファイル挿入および取り出しを可能にする。乱数発生器の使用を伴う実施形態においては、任意の汎用コンピュータ上で実現されえ、マイクロソフト社から入手可能な.NETおよびC#(「Cシャープ」)言語と併せてLinuxも用いられえる。
他の実施形態において、文書記憶、システムソフトウェアおよびユーザインタフェースは、全て単一のコンピュータ上に常駐している。他の実施形態において、サービスプロバイダは、ユーザとインタフェースするフロントエンドユーザインタフェースをインターネットを介して提供するが、それからメッセージダイジェストによって特定された文書をそれ自身に記憶するのではなく、インターネットまたは他のワールドワイドネットワーク上で検索する。または全く分散されたピアツーピアシステムは、そのコンテンツを読み出しおよび保証するためのコンテンツアドレス可能な記憶だけに基づく。
図16Aおよび16Bは、本発明の実施形態を実現するのに適するコンピュータシステム900を示す。図16Aは、コンピュータの一つの可能な物理的形態を示す。もちろんコンピュータシステムは、集積回路、プリント基板、および小型携帯機器から、大型のスーパーコンピュータに至るまで多くの物理的形態をとりえる。コンピュータシステム900は、モニタ902、ディスプレイ904、筐体906、ディスクドライブ908、キーボード910、およびマウス912を含む。ディスク914は、データをコンピュータシステム900に転送し、かつデータをコンピュータシステム900から転送するために用いられるコンピュータで読み取り可能な媒体である。
図16Bは、コンピュータ900のブロック図の例である。システムバス920に接続されているのは、さまざまなサブシステムである。プロセッサ(群)922(中央処理装置群、すなわちCPU群とも呼ばれる)は、メモリ924を含む記憶装置に結合されている。メモリ924は、ランダムアクセスメモリ(RAM)および読み出し専用メモリ(ROM)を含む。この技術ではよく知られるようにROMは、データおよび命令を単一方向にCPUおよびRAMに転送するようにはたらき、RAMは、典型的にはデータおよび命令を双方向に転送するのに用いられる。メモリのこれら両方のタイプは、以下に述べるコンピュータ読み出し可能な適当な媒体を含みえる。固定ディスク926はまた、双方向でCPU922に結合され、追加のデータ記憶容量を提供し、また以下に述べるコンピュータ読み出し可能な適当な媒体を含みえる。固定ディスク926は、プログラム、データなどを記憶するのに用いられえて、典型的には一次記憶よりも低速な二次記憶媒体(ハードディスクのような)である。固定ディスク926内に保持された情報は、適切な場合においては、メモリ924の仮想メモリとして標準的なかたちで統合されえることが理解されよう。取り外し可能なディスク914は、以下に説明するコンピュータ読み出し可能な媒体のいかなる形態をも取りえる。
CPU922はまた、ディスプレイ904、キーボード910、マウス912およびスピーカ930のようなさまざまな入力/出力装置に結合される。一般に入力/出力装置は、ビデオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチパネルディスプレイ、トランスデューサカードリーダ、磁気または紙テープリーダ、タブレット、スタイラス、音声または手書き認識機、生体情報読み取り機、または他のコンピュータのいずれでもよい。CPU922は追加で、ネットワークインタフェース940を用いて他のコンピュータまたは通信ネットワークに結合されてもよい。そのようなネットワークインタフェースによりCPUは、上述の方法ステップを実行する過程で、ネットワークから情報を受け取り、または情報をネットワークに出力してもよい。さらに本発明の方法の実施形態は、CPU922上だけで実行されてもよく、またはインターネットのようなネットワーク上で、処理の一部を担当する遠隔地にあるCPUと協働して実行されてもよい。
さらに本発明の実施形態は、コンピュータによって実現できるさまざまな操作を実行するコンピュータコードを格納した、コンピュータによって読み出し可能な媒体を持つコンピュータ記憶製品に関する。媒体およびコンピュータコードは、本発明の目的のために特別に設計され構築されたものでもよく、またはコンピュータソフトウェア技術の当業者に既知の利用可能なものであってもよい。コンピュータ読み出し可能な媒体の例としては、これらに限定はされないが、ハードディスク、フレキシブルディスク、および磁気テープのような磁気媒体、CD−ROMおよびホログラフィックデバイスのような光媒体、フロプティカルディスクのような光磁気媒体、特定アプリケーション向け集積回路(ASIC)、プログラム可能な論理デバイス(PLD)、およびROMおよびRAMデバイスのように、プログラムコードを記憶し実行するために特別に構成されたハードウェアデバイスが挙げられる。コンピュータコードの例としては、コンパイラによって生成される機械語、およびインタープリタを用いてコンピュータによって実行可能なより高いレベルのコードを含むファイルが挙げられる。
上述の本発明は、明瞭な理解の目的にためにある程度詳細に説明されてきたが、ある種の変更および改変が添付の特許請求の範囲内で実施されえることは明らかだろう。本発明の装置および方法を実現する多くの手法が存在することに注意されたい。よって説明された実施形態は、例示的であって限定的ではないと解釈されなければならず、本発明はここに挙げられた詳細に限定されるべきではなく、特許請求の範囲およびその等価物の全ての範囲によって定義されなければならない。
文書についてのハッシュベースのユニークな識別子を作る技術を示す説明図である。 異なるハッシュ関数を用いた計算された任意の個数のファイルについてのハッシュ値を含むテーブルを示す説明図である。 データベースにファイルを追加するある実施形態を記載するフローチャートである。 データベースからファイルが取り出されるある実施形態を記載するフローチャートである。 本発明の実施形態を用いて実現されたデータベース内のファイルの完全性をチェックする技術を記載するフローチャートである。 コンピュータファイルを保持するデータベースが多くのサーバコンピュータ中に分散化されているマルチレベルデータベースを示す説明図である。 マルチレベルデータベースへファイルを追加するある技術を記載するフローチャートである。 既存のコンテンツアドレス可能な記憶システムにハッシュオーソリティ機能を追加するある技術を記載するフローチャートである。 検証ハッシュ関数をアップグレードする技術を記載するフローチャートである。 ハッシュオーソリティテーブルにセキュリティを提供するのに用いられえるさらなる技術を記載するフローチャートである。 さらなるセキュリティ手段を有するハッシュオーソリティテーブルのある実施形態を示す説明図である。 任意の個数のファイルについての検証ハッシュ値と共に、ファイルについての対応する乱数を含むテーブルを示す説明図である。 それぞれのファイルについてユニークなアドレスを発生するための関数としてシステムが乱数発生器を用いるデータベースにファイルを追加する技術を記載するフローチャートである。 ファイルを特定するのに乱数が用いられるデータベースからファイルを取り出す技術を記載するフローチャートである。 さらなるセキュリティ技術も適用可能な識別子オーソリティテーブルのある実施形態を示す説明図である。 本発明の実施形態を実現するのに適切なコンピュータシステムを示す説明図である。 本発明の実施形態を実現するのに適切なコンピュータシステムの構成を示す説明図である。

Claims (18)

  1. コンピュータを用いてコンピュータファイルをデータベースに追加する方法であって、
    前記データベースに追加すべき前記コンピュータファイルを受け取ること、
    前記コンピュータファイルについてのユニークな識別子であって、前記データベースにおけるユニークな位置を識別するのに用いるユニークな識別子を、前記コンピュータが計算すること、
    前記コンピュータファイルについての、前記ユニークな識別子とは異なる検証ハッシュ値であって、前記コンピュータファイルの内容を検証するのに用いられる検証ハッシュ値を、検証ハッシュ関数を用いて、前記コンピュータが計算すること、
    前記コンピュータファイルを前記データベースにおいて前記ユニークな識別子によって特定される位置に記憶すること、
    前記ユニークな識別子および前記検証ハッシュ値を対応付けたユニークな識別子−検証ハッシュ値のペアを、前記データベースに関連付けられたデータ構造に、前記コンピュータが追加すること、および
    前記コンピュータのメモリに前記データ構造を保存すること
    を含み、
    前記ユニークな識別子−検証ハッシュ値のペアは前記データ構造に関連付けられ、それにより前記ユニークな識別子−検証ハッシュ値のペアの前記データ構造への前記追加は、前記データベース内の前記コンピュータファイルの存在を示しており、
    更に、前記コンピュータが、前記コンピュータファイルを、前記メモリに記憶された前記データ構造へ追加するに際して、
    前記コンピュータファイルのコピーが前記データベースに存在するであるかを、前記ユニークな識別子と一致する値を求めて前記メモリに記憶された前記データ構造を検索することによって前記コンピュータが決定すること、
    前記コンピュータファイルのコピーが前記データベースに存在すると決定されるとき、前記コンピュータファイルの前記コピーについてのコピーハッシュ値を、前記コンピュータが前記検証ハッシュ関数を用いて計算すること、および前記検証ハッシュ値を前記コンピュータが前記コピーハッシュ値と比較すること、
    前記検証ハッシュ値が前記コピーハッシュ値と一致すると決定されるときは、前記コンピュータが所定のアクションを取ること、
    前記検証ハッシュ値が前記コピーハッシュ値と一致しないと決定されたときは、問題を、前記コンピュータが入出力装置を用いてユーザに報知すること、
    を含み、
    前記データ構造はテーブル、リストまたはツリーデータ構造である方法。
  2. 請求項1に記載の方法であって、前記ユニークな識別子は第1のハッシュ関数から演算され、前記検証ハッシュ関数は前記第1のハッシュ関数よりもより強いセキュリティを提供する方法。
  3. コンピュータを用いて所望のコンピュータファイルをデータベースから取り出す方法であって、
    前記所望のコンピュータファイルについてのユニークな識別子であって、前記データベースにおけるユニークな位置を識別するのに用いるユニークな識別子を前記コンピュータが得ること、
    前記ユニークな識別子を参照として用いて、前記コンピュータが、前記データベースから記憶されたコンピュータファイルを取り出すこと、
    前記ユニークな識別子を用いることによって前記データベースに関連付けられたデータ構造からユニークな識別子−検証ハッシュ値のペアを取り出すことであって、前記データ構造はコンピュータのメモリに保存されており、前記取り出された検証ハッシュ値は検証ハッシュ関数を用いて前記記憶されたコンピュータファイルから前もって導かれており、前記導かれた検証ハッシュ値は前記ユニークな識別子とは異なっており、
    前記検証ハッシュ関数を用いて前記記憶されたコンピュータファイルの内容を検証する検証ハッシュ値を、前記コンピュータが計算すること、
    前記計算された検証ハッシュ値を前記導かれた検証ハッシュ値と、前記コンピュータが比較すること、および
    前記計算された検証ハッシュ値が前記導かれた検証ハッシュ値と一致するときに前記記憶されたコンピュータファイルが前記所望のコンピュータファイルであると前記コンピュータが決定し、前記記憶されたコンピュータファイルの内容の検証に前記計算された検証ハッシュ値を用いることによって、前記所望のコンピュータファイルを、前記コンピュータが前記データベースから取り出すこと
    前記計算された検証ハッシュ値が前記導かれた検証ハッシュ値と一致しないときは、問題を、前記コンピュータが入出力装置を用いてユーザに報知すること、
    を含み、
    前記データ構造はテーブル、リストまたはツリーデータ構造である方法。
  4. 請求項3に記載の方法であって、
    前記所望のコンピュータファイルの取り出し要求であって、前記ユニークな識別子を含む取り出し要求をユーザーから受け取ること、
    前記記憶されたコンピュータファイルが前記所望のコンピュータファイルであるとき、前記記憶されたコンピュータファイルを前記ユーザに届けること
    をさらに含む方法。
  5. 請求項3に記載の方法であって、
    前記ユニークな識別子を探して前記データ構造を検索することによって記憶されたコンピュータファイルを取り出す前記ステップを実行すること
    をさらに含む方法。
  6. 請求項3に記載の方法であって、前記ユニークな識別子は、第1のハッシュ関数を用いて計算され、前記検証ハッシュ関数は前記第1ハッシュ関数よりもより強いセキュリティを提供する方法。
  7. コンピュータを用いて、ファイル群のデータベースにハッシュオーソリティ機能を追加する方法であって、
    (A)複数のエントリを含むハッシュオーソリティデータ構造を、テーブル、リストまたはツリーデータ構造として作ること、
    (B)前記データベースのファイルについてのユニークな識別子であって、前記データベースにおけるユニークな位置を識別するのに用いられるユニークな識別子を、前記コンピュータが取り出すこと、
    (C)前記データベースから、前記コンピュータが前記ファイルを取り出すこと、
    (D)前記ファイルについての、前記ユニークな識別子とは異なる検証ハッシュ値であって、前記ファイルの内容を検証するのに用いられる検証ハッシュ値を、検証ハッシュ関数を用いて、前記コンピュータが計算すること、
    (E)前記ユニークな識別子および前記検証ハッシュ値を対応付けたユニークな識別子−検証ハッシュ値のペアを前記ハッシュオーソリティデータ構造の前記エントリのうちの1つに、前記コンピュータが追加すること、および
    (F)前記コンピュータのメモリに前記ハッシュオーソリティデータ構造を保存すること
    を含み、
    前記ユニークな識別子−前記検証ハッシュ値のペアは前記データベース内で関連付けられており、
    前記ファイルを、前記コンピュータが前記ユニークな識別子を用いて前記データベースから取り出す際には、前記ハッシュオーソリティ機能を用いて、
    前記検証ハッシュ関数を用いて前記ファイルの内容を検証する検証ハッシュ値を、前記コンピュータが計算し、
    前記計算された検証ハッシュ値を前記ユニークな識別子−前記検証ハッシュ値のペアとして記憶された検証ハッシュ値と、前記コンピュータが比較し、
    前記計算された検証ハッシュ値が前記記憶された検証ハッシュ値と一致するときには前記ファイルが前記所望のファイルであると、前記コンピュータが決定し、
    前記計算された検証ハッシュ値が前記記憶された検証ハッシュ値と一致しないときは、問題を、前記コンピュータが入出力装置を用いてユーザに報知するようにされた
    方法。
  8. 請求項7に記載の方法であって、前記ユニークな識別子はアドレシングハッシュ関数から演算され、前記検証ハッシュ関数は前記アドレシングハッシュ関数よりもより強いセキュリティを提供する方法。
  9. 請求項7に記載の方法であって、
    前記データベース中の前記複数のファイルのうち、前記取り出されたファイル以外のファイルのそれぞれについて、請求項7のステップ(B)ないし(E)を実行すること
    をさらに含む方法。
  10. コンピュータを用いて、ファイルのデータベース内の検証ハッシュ関数をアップグレードする方法であって、
    前記ファイルのデータベースを表すデータ構造へアクセスすることであって、前記データ構造は、前記データベース内の前記ファイルのそれぞれについてのユニークな識別子−検証ハッシュ値のペアを含み、前記各ファイルについての前記検証ハッシュ値は前記各ファイルのコンテンツにおいて実行される検証ハッシュ関数を用いて前もって計算され、前記検証ハッシュ値は、前記各ファイルについてのユニークな識別子とは異なっており、前記ユニークな識別子は前記データベースにおけるユニークな位置を識別するのに用いられ、
    前記データベース内の前記ファイルのそれぞれについて、
    前記、前記コンピュータがファイルを取り出すこと、
    より強い検証ハッシュ関数を用いて前記ファイルについての新しい検証ハッシュ値であって、前記ファイルの内容を検証するのに用いる検証ハッシュ値を、前記コンピュータが計算すること、
    前記新しい検証ハッシュ値を前記ファイルの前記ユニークな識別子と関連付けて、前記コンピュータが、前記データ構造に追加し、アップグレードされたユニークな識別子−新しい検証ハッシュ値のペアを前記ファイルについて形成すること、および
    前記コンピュータのメモリに前記データ構造を、テーブル、リストまたはツリーデータ構造として、前記コンピュータが保存すること
    を含み、
    当該検証ハッシュ関数は、前記ファイルを前記ユニークな識別子を用いて前記データベースから取り出す際には、
    前記検証ハッシュ関数を用いて前記ファイルの内容を検証する検証ハッシュ値を、前記コンピュータが計算し、
    前記計算された検証ハッシュ値を前記ユニークな識別子−前記検証ハッシュ値のペアとして記憶された検証ハッシュ値と、前記コンピュータが比較し、
    前記計算された検証ハッシュ値が前記記憶された検証ハッシュ値と一致するときには前記ファイルが前記所望のファイルであると、前記コンピュータが決定し、
    前記計算された検証ハッシュ値が前記記憶された検証ハッシュ値と一致しないときは、問題を、前記コンピュータが入出力装置を用いてユーザに報知するのに用いられる
    方法。
  11. 請求項1記載の方法であって、
    前記ユニークな識別子は、識別可能なハッシュ関数を用いて前記コンピュータファイルから計算された識別可能なハッシュ値、乱数発生器を用いて発生された乱数、あるいは擬似乱数発生器を用いて発生された擬似乱数のいずれかである
    方法。
  12. 請求項3記載の方法であって、
    前記ユニークな識別子は、識別可能なハッシュ関数を用いて前記コンピュータファイルから計算された識別可能なハッシュ値、乱数発生器を用いて発生された乱数、あるいは擬似乱数発生器を用いて発生された擬似乱数のいずれかである
    方法。
  13. 請求項7記載の方法であって、
    前記ユニークな識別子は、識別可能なハッシュ関数を用いて前記コンピュータファイルから計算された識別可能なハッシュ値、乱数発生器を用いて発生された乱数、あるいは擬似乱数発生器を用いて発生された擬似乱数のいずれかである
    方法。
  14. 請求項10記載の方法であって、
    前記ユニークな識別子は、識別可能なハッシュ関数を用いて前記コンピュータファイルから計算された識別可能なハッシュ値、乱数発生器を用いて発生された乱数、あるいは擬似乱数発生器を用いて発生された擬似乱数のいずれかである
    方法。
  15. 前記検証ハッシュ値は、ユニークであり、コンテンツベースの識別子である請求項1記載の方法。
  16. 前記検証ハッシュ値は、ユニークであり、コンテンツベースの識別子である請求項3記載の方法。
  17. 前記検証ハッシュ値は、ユニークであり、コンテンツベースの識別子である請求項7記載の方法。
  18. 前記検証ハッシュ値は、ユニークであり、コンテンツベースの識別子である請求項10記載の方法。
JP2006502448A 2003-02-21 2004-02-19 コンテンツベースのアドレシングにおける追加ハッシュ関数 Expired - Lifetime JP4991283B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US44917203P 2003-02-21 2003-02-21
US60/449,172 2003-02-21
PCT/IB2004/000420 WO2004074968A2 (en) 2003-02-21 2004-02-19 Additional hash functions in content-based addressing

Publications (2)

Publication Number Publication Date
JP2006518508A JP2006518508A (ja) 2006-08-10
JP4991283B2 true JP4991283B2 (ja) 2012-08-01

Family

ID=32908691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006502448A Expired - Lifetime JP4991283B2 (ja) 2003-02-21 2004-02-19 コンテンツベースのアドレシングにおける追加ハッシュ関数

Country Status (7)

Country Link
US (1) US7373345B2 (ja)
EP (1) EP1595197A2 (ja)
JP (1) JP4991283B2 (ja)
CN (1) CN100524153C (ja)
AU (1) AU2004214014B2 (ja)
CA (1) CA2516741C (ja)
WO (1) WO2004074968A2 (ja)

Families Citing this family (230)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7904187B2 (en) 1999-02-01 2011-03-08 Hoffberg Steven M Internet appliance system and method
US20100235916A1 (en) * 2001-12-21 2010-09-16 Radatti Peter V Apparatus and method for computer virus detection and remediation and self-repair of damaged files and/or objects
US7337471B2 (en) * 2002-10-07 2008-02-26 Symantec Corporation Selective detection of malicious computer code
US7260847B2 (en) * 2002-10-24 2007-08-21 Symantec Corporation Antivirus scanning in a hard-linked environment
US7263521B2 (en) * 2002-12-10 2007-08-28 Caringo, Inc. Navigation of the content space of a document set
US7373664B2 (en) * 2002-12-16 2008-05-13 Symantec Corporation Proactive protection against e-mail worms and spam
US20040158546A1 (en) * 2003-02-06 2004-08-12 Sobel William E. Integrity checking for software downloaded from untrusted sources
US7293290B2 (en) * 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US7246227B2 (en) * 2003-02-10 2007-07-17 Symantec Corporation Efficient scanning of stream based data
US7546638B2 (en) * 2003-03-18 2009-06-09 Symantec Corporation Automated identification and clean-up of malicious computer code
US9678967B2 (en) * 2003-05-22 2017-06-13 Callahan Cellular L.L.C. Information source agent systems and methods for distributed data storage and management using content signatures
US7412449B2 (en) * 2003-05-23 2008-08-12 Sap Aktiengesellschaft File object storage and retrieval using hashing techniques
US7143251B1 (en) * 2003-06-30 2006-11-28 Data Domain, Inc. Data storage using identifiers
US7739278B1 (en) * 2003-08-22 2010-06-15 Symantec Corporation Source independent file attribute tracking
JP4307982B2 (ja) 2003-12-19 2009-08-05 株式会社日立製作所 データ多重化制御方法
US7707039B2 (en) 2004-02-15 2010-04-27 Exbiblio B.V. Automatic modification of web pages
US8442331B2 (en) 2004-02-15 2013-05-14 Google Inc. Capturing text from rendered documents using supplemental information
US7812860B2 (en) 2004-04-01 2010-10-12 Exbiblio B.V. Handheld device for capturing text from both a document printed on paper and a document displayed on a dynamic display device
US10635723B2 (en) 2004-02-15 2020-04-28 Google Llc Search engines and systems with handheld document data capture devices
US9229646B2 (en) * 2004-02-26 2016-01-05 Emc Corporation Methods and apparatus for increasing data storage capacity
US20060098900A1 (en) 2004-09-27 2006-05-11 King Martin T Secure data gathering from rendered documents
US20060081714A1 (en) 2004-08-23 2006-04-20 King Martin T Portable scanning device
US9116890B2 (en) 2004-04-01 2015-08-25 Google Inc. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US7894670B2 (en) 2004-04-01 2011-02-22 Exbiblio B.V. Triggering actions in response to optically or acoustically capturing keywords from a rendered document
US9008447B2 (en) 2004-04-01 2015-04-14 Google Inc. Method and system for character recognition
US8081849B2 (en) 2004-12-03 2011-12-20 Google Inc. Portable scanning and memory device
US9143638B2 (en) 2004-04-01 2015-09-22 Google Inc. Data capture from rendered documents using handheld device
US7990556B2 (en) 2004-12-03 2011-08-02 Google Inc. Association of a portable scanner with input/output and storage devices
WO2008028674A2 (en) 2006-09-08 2008-03-13 Exbiblio B.V. Optical scanners, such as hand-held optical scanners
US8146156B2 (en) 2004-04-01 2012-03-27 Google Inc. Archive of text captures from rendered documents
US7130981B1 (en) 2004-04-06 2006-10-31 Symantec Corporation Signature driven cache extension for stream based scanning
US8713418B2 (en) 2004-04-12 2014-04-29 Google Inc. Adding value to a rendered document
US8489624B2 (en) 2004-05-17 2013-07-16 Google, Inc. Processing techniques for text capture from a rendered document
US8620083B2 (en) 2004-12-03 2013-12-31 Google Inc. Method and system for character recognition
US8874504B2 (en) 2004-12-03 2014-10-28 Google Inc. Processing techniques for visual capture data from a rendered document
US7240151B1 (en) * 2004-04-30 2007-07-03 Emc Corporation Methods and apparatus for transferring data in a content addressable computer system
US7240150B1 (en) * 2004-04-30 2007-07-03 Emc Corporation Methods and apparatus for processing access requests in a content addressable computer system
US7428611B1 (en) * 2004-04-30 2008-09-23 Emc Corporation Methods and apparatus for forwarding access requests in a content addressable computer system
US7861304B1 (en) 2004-05-07 2010-12-28 Symantec Corporation Pattern matching using embedded functions
US7949666B2 (en) 2004-07-09 2011-05-24 Ricoh, Ltd. Synchronizing distributed work through document logs
US8346620B2 (en) 2004-07-19 2013-01-01 Google Inc. Automatic modification of web pages
US7617297B2 (en) * 2004-07-26 2009-11-10 International Business Machines Corporation Providing archiving of individual mail content while maintaining a single copy mail store
US8069269B2 (en) * 2004-08-04 2011-11-29 Emc Corporation Methods and apparatus for accessing content in a virtual pool on a content addressable storage system
GB2418748B (en) * 2004-09-29 2010-06-09 Codemasters Software Co Directory structures for composite data files
US7457813B2 (en) 2004-10-06 2008-11-25 Burnside Acquisition, Llc Storage system for randomly named blocks of data
US8161013B2 (en) 2004-11-08 2012-04-17 Emc Corporation Implementing application specific management policies on a content addressed storage device
US7444464B2 (en) * 2004-11-08 2008-10-28 Emc Corporation Content addressed storage device configured to maintain content address mapping
EP1825342A1 (en) 2004-11-22 2007-08-29 Nokia Corporation Method and device for verifying the integrity of platform software of an electronic device
US20060129602A1 (en) * 2004-12-15 2006-06-15 Microsoft Corporation Enable web sites to receive and process e-mail
US7613701B2 (en) * 2004-12-22 2009-11-03 International Business Machines Corporation Matching of complex nested objects by multilevel hashing
US7698516B2 (en) * 2005-01-12 2010-04-13 Emc Corporation Methods and apparatus for managing deletion of data
US7693050B2 (en) 2005-04-14 2010-04-06 Microsoft Corporation Stateless, affinity-preserving load balancing
US7392235B2 (en) 2005-04-15 2008-06-24 Emc Corporation Methods and apparatus for retrieval of content units in a time-based directory structure
EP1869593B1 (en) 2005-04-15 2018-08-22 Emc Corporation Methods and apparatus for managing the storage of content
US7765191B2 (en) 2005-04-15 2010-07-27 Emc Corporation Methods and apparatus for managing the replication of content
US7734732B2 (en) * 2005-05-12 2010-06-08 At&T Mobility Ii Llc System, apparatus and methods for storing links to media files in network storage
US7370048B2 (en) * 2005-05-27 2008-05-06 International Business Machines Corporation File storage method and apparatus
US7805470B2 (en) 2005-06-23 2010-09-28 Emc Corporation Methods and apparatus for managing the storage of content in a file system
EP1894127B1 (en) * 2005-06-23 2010-07-07 EMC Corporation Methods and apparatus for managing the storage of content in a file system
US7975303B1 (en) 2005-06-27 2011-07-05 Symantec Corporation Efficient file scanning using input-output hints
US7895654B1 (en) 2005-06-27 2011-02-22 Symantec Corporation Efficient file scanning using secure listing of file modification times
CA2513022A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited System and method for communicating state management between a browser user-agent and a mobile data server
CA2513010A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited A method for detecting state changes between data stored in a first computing device and data retrieved from a second computing device
CA2513018A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited Method for training a proxy server for content delivery based on communication of state information from a mobile device browser
CA2513019A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited A method for communicating state information between a server and a mobile device browser with version handling
CA2513014A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited A method of controlling delivery of multi-part content from an origin server to a mobile device browser via a proxy server
CA2513016A1 (en) * 2005-07-22 2007-01-22 Research In Motion Limited A secure method of synchronizing cache contents of a mobile browser with a proxy server
JP4810915B2 (ja) * 2005-07-28 2011-11-09 日本電気株式会社 データ検索装置及び方法、並びにコンピュータ・プログラム
EP1927060B1 (en) * 2005-08-09 2019-10-09 Nexsan Technologies Canada Inc. Data archiving method and system
GB2429545A (en) * 2005-08-22 2007-02-28 Ericsson Telefon Ab L M Securely storing and access data
US9311398B2 (en) * 2005-11-15 2016-04-12 Ebay Inc. Method and system to process navigation information
US7958101B1 (en) * 2006-01-03 2011-06-07 Emc Corporation Methods and apparatus for mounting a file system
US8095542B1 (en) * 2006-01-03 2012-01-10 Emc Corporation Methods and apparatus for allowing access to content
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US8560503B1 (en) 2006-01-26 2013-10-15 Netapp, Inc. Content addressable storage system
DE102006014327A1 (de) * 2006-03-23 2007-09-27 Siemens Ag Verfahren zum Überwachen der Datenintegrität
WO2007131190A2 (en) 2006-05-05 2007-11-15 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
US20070283158A1 (en) * 2006-06-02 2007-12-06 Microsoft Corporation Microsoft Patent Group System and method for generating a forensic file
US8190915B2 (en) * 2006-06-14 2012-05-29 Oracle International Corporation Method and apparatus for detecting data tampering within a database
US8826023B1 (en) * 2006-06-30 2014-09-02 Symantec Operating Corporation System and method for securing access to hash-based storage systems
US8479004B2 (en) * 2006-08-31 2013-07-02 Ricoh Co., Ltd Paper-based document logging
DE102006055964A1 (de) * 2006-11-24 2008-05-29 Bdt-Solutions Gmbh Verfahren und Vorrichtung zur Datensicherung
US8892532B2 (en) * 2006-12-06 2014-11-18 Lsi Corporation Document management with verifiable time-of-archive capability
US7840537B2 (en) * 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US7689608B2 (en) * 2007-02-20 2010-03-30 At&T Intellectual Property I, L.P. Methods, systems and computer program products for controlling network asset recovery
US8006094B2 (en) * 2007-02-21 2011-08-23 Ricoh Co., Ltd. Trustworthy timestamps and certifiable clocks using logs linked by cryptographic hashes
US20080235163A1 (en) * 2007-03-22 2008-09-25 Srinivasan Balasubramanian System and method for online duplicate detection and elimination in a web crawler
JP5181504B2 (ja) * 2007-03-22 2013-04-10 富士通株式会社 データ処理方法、プログラム及び情報処理装置
US7904557B1 (en) * 2007-03-26 2011-03-08 Emc Corporation Granting access to a content unit stored on an object addressable storage system
US20080243688A1 (en) * 2007-03-28 2008-10-02 Hart Peter E Method and Apparatus for Recording Transactions with a Portable Logging Device
US8996483B2 (en) 2007-03-28 2015-03-31 Ricoh Co., Ltd. Method and apparatus for recording associations with logs
US20080263193A1 (en) * 2007-04-17 2008-10-23 Chalemin Glen E System and Method for Automatically Providing a Web Resource for a Broken Web Link
US20090055906A1 (en) * 2007-08-20 2009-02-26 Infineon Technologies Ag Method and apparatus for embedded memory security
US8234283B2 (en) * 2007-09-20 2012-07-31 International Business Machines Corporation Search reporting apparatus, method and system
US8295486B2 (en) 2007-09-28 2012-10-23 Research In Motion Limited Systems, devices, and methods for outputting alerts to indicate the use of a weak hash function
US9424266B2 (en) * 2007-10-01 2016-08-23 Microsoft Technology Licensing, Llc Efficient file hash identifier computation
US8285718B1 (en) * 2007-12-21 2012-10-09 CastTV Inc. Clustering multimedia search
US8114117B2 (en) * 2008-09-30 2012-02-14 Tyco Healthcare Group Lp Compression device with wear area
US8661428B2 (en) * 2008-04-25 2014-02-25 Vmware, Inc. Updating a file using differences and file format therefor
US8752185B2 (en) * 2008-05-01 2014-06-10 Yahoo! Inc. Method for media fingerprinting
US10262136B1 (en) * 2008-08-04 2019-04-16 Zscaler, Inc. Cloud-based malware detection
US7738454B1 (en) * 2008-09-30 2010-06-15 Juniper Networks, Inc. Methods and apparatus related to packet classification based on range values
US7835357B2 (en) * 2008-09-30 2010-11-16 Juniper Networks, Inc. Methods and apparatus for packet classification based on policy vectors
US7961734B2 (en) * 2008-09-30 2011-06-14 Juniper Networks, Inc. Methods and apparatus related to packet classification associated with a multi-stage switch
US7796541B1 (en) 2008-09-30 2010-09-14 Juniper Networks, Inc. Methods and apparatus for range matching during packet classification based on a linked-node structure
US8675648B1 (en) 2008-09-30 2014-03-18 Juniper Networks, Inc. Methods and apparatus for compression in packet classification
US8804950B1 (en) 2008-09-30 2014-08-12 Juniper Networks, Inc. Methods and apparatus for producing a hash value based on a hash function
US8798057B1 (en) 2008-09-30 2014-08-05 Juniper Networks, Inc. Methods and apparatus to implement except condition during data packet classification
US8447989B2 (en) * 2008-10-02 2013-05-21 Ricoh Co., Ltd. Method and apparatus for tamper proof camera logs
US8185733B2 (en) 2008-10-02 2012-05-22 Ricoh Co., Ltd. Method and apparatus for automatically publishing content based identifiers
JP4962483B2 (ja) * 2008-12-19 2012-06-27 日本電気株式会社 情報処理装置
US7889741B1 (en) 2008-12-31 2011-02-15 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8111697B1 (en) 2008-12-31 2012-02-07 Juniper Networks, Inc. Methods and apparatus for packet classification based on multiple conditions
US8488588B1 (en) 2008-12-31 2013-07-16 Juniper Networks, Inc. Methods and apparatus for indexing set bit values in a long vector associated with a switch fabric
US8806220B2 (en) * 2009-01-07 2014-08-12 Microsoft Corporation Device side host integrity validation
US9268779B2 (en) * 2009-01-28 2016-02-23 Mckesson Financial Holdings Methods, computer program products, and apparatuses for dispersing content items
CN102369724B (zh) 2009-02-18 2016-05-04 谷歌公司 自动捕获信息,例如使用文档感知设备捕获信息
CN101482887B (zh) * 2009-02-18 2013-01-09 北京数码视讯科技股份有限公司 数据库关键数据的防篡改检验方法
US8447066B2 (en) 2009-03-12 2013-05-21 Google Inc. Performing actions based on capturing information from rendered documents, such as documents under copyright
WO2010105245A2 (en) 2009-03-12 2010-09-16 Exbiblio B.V. Automatically providing content associated with captured information, such as information captured in real-time
US8401996B2 (en) 2009-03-30 2013-03-19 Commvault Systems, Inc. Storing a variable number of instances of data objects
US8578120B2 (en) 2009-05-22 2013-11-05 Commvault Systems, Inc. Block-level single instancing
US9122729B2 (en) * 2009-07-31 2015-09-01 Cumulus Data Llc Chain-of-custody for archived data
US8953603B2 (en) 2009-10-28 2015-02-10 Juniper Networks, Inc. Methods and apparatus related to a distributed switch fabric
US8369523B2 (en) * 2009-11-24 2013-02-05 International Business Machines Corporation Surrogate key generation using cryptographic hashing
US9081799B2 (en) 2009-12-04 2015-07-14 Google Inc. Using gestalt information to identify locations in printed information
US9323784B2 (en) 2009-12-09 2016-04-26 Google Inc. Image search using text-based elements within the contents of images
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8428045B2 (en) * 2010-03-16 2013-04-23 Harman International Industries, Incorporated Media clock recovery
US8874607B2 (en) 2010-08-17 2014-10-28 Fujitsu Limited Representing sensor data as binary decision diagrams
US9002781B2 (en) 2010-08-17 2015-04-07 Fujitsu Limited Annotating environmental data represented by characteristic functions
US8645108B2 (en) 2010-08-17 2014-02-04 Fujitsu Limited Annotating binary decision diagrams representing sensor data
US8930394B2 (en) 2010-08-17 2015-01-06 Fujitsu Limited Querying sensor data stored as binary decision diagrams
US9138143B2 (en) 2010-08-17 2015-09-22 Fujitsu Limited Annotating medical data represented by characteristic functions
US8583718B2 (en) 2010-08-17 2013-11-12 Fujitsu Limited Comparing boolean functions representing sensor data
US8572146B2 (en) 2010-08-17 2013-10-29 Fujitsu Limited Comparing data samples represented by characteristic functions
US8495038B2 (en) * 2010-08-17 2013-07-23 Fujitsu Limited Validating sensor data represented by characteristic functions
US8745064B2 (en) * 2010-09-13 2014-06-03 Lumension Security, Inc. Systems and methods for operating a saturated hash table
US8935492B2 (en) 2010-09-30 2015-01-13 Commvault Systems, Inc. Archiving data objects using secondary copies
US9286298B1 (en) 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
US9384198B2 (en) 2010-12-10 2016-07-05 Vertafore, Inc. Agency management system and content management system integration
US9282060B2 (en) 2010-12-15 2016-03-08 Juniper Networks, Inc. Methods and apparatus for dynamic resource management within a distributed control plane of a switch
US20130036103A1 (en) * 2011-08-04 2013-02-07 The Boeing Company Software Part Validation Using Hash Values
US9177247B2 (en) 2011-09-23 2015-11-03 Fujitsu Limited Partitioning medical binary decision diagrams for analysis optimization
US9075908B2 (en) 2011-09-23 2015-07-07 Fujitsu Limited Partitioning medical binary decision diagrams for size optimization
US8781995B2 (en) 2011-09-23 2014-07-15 Fujitsu Limited Range queries in binary decision diagrams
US9176819B2 (en) 2011-09-23 2015-11-03 Fujitsu Limited Detecting sensor malfunctions using compression analysis of binary decision diagrams
US8909592B2 (en) 2011-09-23 2014-12-09 Fujitsu Limited Combining medical binary decision diagrams to determine data correlations
US8719214B2 (en) 2011-09-23 2014-05-06 Fujitsu Limited Combining medical binary decision diagrams for analysis optimization
US8838523B2 (en) 2011-09-23 2014-09-16 Fujitsu Limited Compression threshold analysis of binary decision diagrams
US8620854B2 (en) 2011-09-23 2013-12-31 Fujitsu Limited Annotating medical binary decision diagrams with health state information
US8812943B2 (en) 2011-09-23 2014-08-19 Fujitsu Limited Detecting data corruption in medical binary decision diagrams using hashing techniques
US9069707B1 (en) 2011-11-03 2015-06-30 Permabit Technology Corp. Indexing deduplicated data
US8976647B2 (en) * 2011-11-08 2015-03-10 Futurewei Technologies, Inc. Hardware-based dynamic load balancing that avoids flow packet reordering statistically
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
EP2615773B1 (en) * 2012-01-10 2015-12-16 Thomson Licensing Method and device for timestamping data and method and device for verification of a timestamp
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US9032183B2 (en) 2012-02-24 2015-05-12 Simplivity Corp. Method and apparatus for content derived data placement in memory
US9020890B2 (en) 2012-03-30 2015-04-28 Commvault Systems, Inc. Smart archiving and data previewing for mobile devices
US8762353B2 (en) * 2012-06-13 2014-06-24 Caringo, Inc. Elimination of duplicate objects in storage clusters
US9104560B2 (en) 2012-06-13 2015-08-11 Caringo, Inc. Two level addressing in storage clusters
US8799746B2 (en) 2012-06-13 2014-08-05 Caringo, Inc. Erasure coding and replication in storage clusters
US9736121B2 (en) 2012-07-16 2017-08-15 Owl Cyber Defense Solutions, Llc File manifest filter for unidirectional transfer of files
US9135323B2 (en) * 2012-09-13 2015-09-15 Raytheon Company System and method for classifying data dump data
US9633022B2 (en) 2012-12-28 2017-04-25 Commvault Systems, Inc. Backup and restoration for a deduplicated file system
US10218586B2 (en) 2013-01-23 2019-02-26 Owl Cyber Defense Solutions, Llc System and method for enabling the capture and securing of dynamically selected digital information
US8776254B1 (en) 2013-01-23 2014-07-08 Owl Computing Technologies, Inc. System and method for the secure unidirectional transfer of software and software updates
US9306953B2 (en) 2013-02-19 2016-04-05 Owl Computing Technologies, Inc. System and method for secure unidirectional transfer of commands to control equipment
US9953042B1 (en) 2013-03-01 2018-04-24 Red Hat, Inc. Managing a deduplicated data index
CN109905726B (zh) * 2013-03-15 2021-06-04 构造数据有限责任公司 实时电视广告检测的系统和方法
US20150381734A1 (en) * 2013-10-02 2015-12-31 Hitachi, Ltd. Storage system and storage system control method
US9659023B2 (en) * 2013-11-21 2017-05-23 Upthere, Inc. Maintaining and using a cache of child-to-parent mappings in a content-addressable storage system
US9495373B2 (en) 2013-12-06 2016-11-15 International Business Machines Corporation File versions within content addressable storage
US9483481B2 (en) 2013-12-06 2016-11-01 International Business Machines Corporation Files having unallocated portions within content addressable storage
US9507814B2 (en) * 2013-12-10 2016-11-29 Vertafore, Inc. Bit level comparator systems and methods
US9367435B2 (en) 2013-12-12 2016-06-14 Vertafore, Inc. Integration testing method and system for web services
US9256549B2 (en) 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US10324897B2 (en) 2014-01-27 2019-06-18 Commvault Systems, Inc. Techniques for serving archived electronic mail
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9311329B2 (en) 2014-06-05 2016-04-12 Owl Computing Technologies, Inc. System and method for modular and continuous data assurance
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US20160191449A1 (en) * 2014-07-28 2016-06-30 Chatsee Inc. Random content messaging system and method
US9747556B2 (en) 2014-08-20 2017-08-29 Vertafore, Inc. Automated customized web portal template generation systems and methods
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9152500B1 (en) * 2014-09-22 2015-10-06 Storagecraft Technology Corporation Hash collision recovery in a deduplication vault
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US10324914B2 (en) 2015-05-20 2019-06-18 Commvalut Systems, Inc. Handling user queries against production and archive storage systems, such as for enterprise customers having large and/or numerous files
KR101563494B1 (ko) * 2015-05-28 2015-10-27 소프트포럼 주식회사 파일 변경에 따른 실시간 소스코드 보안 약점 탐지 장치 및 방법
US9811333B2 (en) 2015-06-23 2017-11-07 Microsoft Technology Licensing, Llc Using a version-specific resource catalog for resource management
US9965639B2 (en) * 2015-07-17 2018-05-08 International Business Machines Corporation Source authentication of a software product
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US9825970B2 (en) * 2015-10-05 2017-11-21 Verizon Patent And Licensing Inc. Managing access to content for a sponsored data campaign
US9600400B1 (en) 2015-10-29 2017-03-21 Vertafore, Inc. Performance testing of web application components using image differentiation
US10614038B1 (en) * 2015-12-28 2020-04-07 EMC IP Holding Company LLC Inline deduplication of compressed data
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10713589B1 (en) * 2016-03-03 2020-07-14 Amazon Technologies, Inc. Consistent sort-based record-level shuffling of machine learning data
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10592669B2 (en) 2016-06-23 2020-03-17 Vmware, Inc. Secure booting of computer system
CN106250440B (zh) * 2016-07-26 2019-07-09 金蝶软件(中国)有限公司 文档管理方法和装置
HUP1600467A2 (en) * 2016-07-26 2018-03-28 Intersoft Hungary Kft Method and system for authentically determining the identity of an electronic document and copy or futureversion
US10242196B2 (en) * 2016-07-29 2019-03-26 Vmware, Inc. Secure booting of computer system
US10142109B2 (en) * 2016-08-16 2018-11-27 Hewlett Packard Enterprise Development Lp Instantiating containers
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
DE102016220656A1 (de) * 2016-10-21 2018-04-26 Bundesdruckerei Gmbh Bereitstellung und Prüfung der Gültigkeit eines virtuellen Dokuments
GB2555476A (en) * 2016-10-31 2018-05-02 Philip Hartley Robin Apparatuses and methods for signing a legal document
US11488135B2 (en) 2016-11-23 2022-11-01 Observa, Inc. System and method for using user rating in real-world data observation campaign
GB2561562A (en) * 2017-04-18 2018-10-24 F Secure Corp Method for detecting and preventing an attack
US11010300B2 (en) 2017-05-04 2021-05-18 Hewlett Packard Enterprise Development Lp Optimized record lookups
CN107395574B (zh) * 2017-06-30 2021-05-07 上海策赢网络科技有限公司 信息标识、信息请求及提供方法和装置、存储介质和设备
US10700711B1 (en) 2017-11-03 2020-06-30 Caringo Inc. Multi-part upload and editing of erasure-coded objects
US11055280B2 (en) * 2017-11-27 2021-07-06 Snowflake Inc. Batch data ingestion in database systems
US11243703B2 (en) 2018-04-27 2022-02-08 Hewlett Packard Enterprise Development Lp Expandable index with pages to store object records
US11488182B2 (en) * 2018-06-22 2022-11-01 Observa, Inc. System and method for identifying content in a web-based marketing environment
US10534708B1 (en) 2018-06-25 2020-01-14 Microsoft Technology Licensing, Llc Shallow cache for content replication
CN109658238B (zh) 2018-10-26 2020-06-16 阿里巴巴集团控股有限公司 数据处理方法及装置
JP7020384B2 (ja) * 2018-11-29 2022-02-16 日本電信電話株式会社 アプリケーション動作制御装置、アプリケーション動作制御方法、および、アプリケーション動作制御プログラム
US10997122B2 (en) * 2018-12-05 2021-05-04 Citrix Systems, Inc. File redundancy detection and mitigation
US11288401B2 (en) * 2019-09-11 2022-03-29 AO Kaspersky Lab System and method of reducing a number of false positives in classification of files
CN111030991B (zh) * 2019-11-06 2022-02-11 温州大学 一种用于数据处理器的防御控制流攻击方法
CN113612678B (zh) * 2021-07-15 2023-03-31 中标软件有限公司 一种邮件附件下载使用的安全防护方法
US20230205889A1 (en) * 2021-12-24 2023-06-29 Vast Data Ltd. Securing a storage system
US20230229642A1 (en) * 2022-01-14 2023-07-20 Xetdata Inc. Data indexing and deduplication using content-defined trees

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4807182A (en) * 1986-03-12 1989-02-21 Advanced Software, Inc. Apparatus and method for comparing data groups
US4741028A (en) * 1986-07-30 1988-04-26 International Telesystems Corporation Method of randomizing telephone numbers
US5255270A (en) 1990-11-07 1993-10-19 Emc Corporation Method of assuring data write integrity on a data storage device
JPH06318261A (ja) 1992-09-18 1994-11-15 Sony Corp 電子装置
JP2739826B2 (ja) * 1994-09-28 1998-04-15 日本電気株式会社 データハッシュ化装置
WO1996032685A1 (en) 1995-04-11 1996-10-17 Kinetech, Inc. Identifying data in a data processing system
US5742807A (en) * 1995-05-31 1998-04-21 Xerox Corporation Indexing system using one-way hash for document service
US5690452A (en) 1996-06-27 1997-11-25 Baublits; David G. Spring loaded automatic plug ejector or hole saws
US6862602B2 (en) * 1997-03-07 2005-03-01 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
JP3056704B2 (ja) * 1997-08-25 2000-06-26 三菱電機株式会社 データ管理装置
US6138237A (en) * 1997-09-04 2000-10-24 Bistream Inc. Apparatuses, methods, and media for authoring, distributing, and using software resources with purposely restricted use
US6151659A (en) 1997-12-22 2000-11-21 Emc Corporation Distributed raid storage system
JP2002501255A (ja) 1998-01-23 2002-01-15 ファイルプール・エヌ.ブイ. コンテンツアドレス可能な情報のカプセル化、表現、および転送
US6182197B1 (en) 1998-07-10 2001-01-30 International Business Machines Corporation Real-time shared disk system for computer clusters
US6523130B1 (en) 1999-03-11 2003-02-18 Microsoft Corporation Storage system having error detection and recovery
US6976165B1 (en) * 1999-09-07 2005-12-13 Emc Corporation System and method for secure storage, transfer and retrieval of content addressable information
US6480931B1 (en) 1999-11-05 2002-11-12 International Business Machines Corporation Content addressable storage apparatus and register mapper architecture
US6658589B1 (en) 1999-12-20 2003-12-02 Emc Corporation System and method for backup a parallel server data storage system
US7062648B2 (en) 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
JP2001282619A (ja) * 2000-03-30 2001-10-12 Hitachi Ltd コンテンツ改竄検知方法及びその実施装置並びにその処理プログラムを記録した記録媒体
US7065610B1 (en) 2000-06-27 2006-06-20 Emc Corporation Method and apparatus for maintaining inventory of logical volumes stored on storage elements
US6912548B1 (en) 2000-06-27 2005-06-28 Emc Corporation Logical volume identifier database for logical volumes in a computer storage system
US7082441B1 (en) 2000-08-17 2006-07-25 Emc Corporation Method and storage and manipulation of storage system metrics
US6857067B2 (en) * 2000-09-01 2005-02-15 Martin S. Edelman System and method for preventing unauthorized access to electronic data
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US20030005306A1 (en) * 2001-06-29 2003-01-02 Hunt Preston J. Message digest based data synchronization
US6763446B1 (en) 2001-08-08 2004-07-13 Emc Corporation Systems and methods for handling storage access requests
US6978282B1 (en) 2001-09-04 2005-12-20 Emc Corporation Information replication system having automated replication storage
US6757790B2 (en) 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
US20030188180A1 (en) * 2002-03-28 2003-10-02 Overney Gregor T. Secure file verification station for ensuring data integrity
US6715048B1 (en) 2002-03-28 2004-03-30 Emc Corporation System and method for efficiently performing a restore operation in a data storage environment
US7113945B1 (en) 2002-04-10 2006-09-26 Emc Corporation Virtual storage device that uses volatile memory
US7428751B2 (en) * 2002-12-05 2008-09-23 Microsoft Corporation Secure recovery in a serverless distributed file system
US7047359B1 (en) 2002-12-17 2006-05-16 Storage Technology Corporation Method, system and product for managing a virtual storage system
EP1678645B1 (en) 2003-10-27 2019-10-02 Hitachi Vantara Corporation Policy-based management of a redundant array of independent nodes
JP2005165516A (ja) 2003-12-01 2005-06-23 Hitachi Ltd ストレージ制御装置、ストレージシステム、及びストレージシステムの制御方法
US7114027B2 (en) 2003-12-03 2006-09-26 International Business Machines Corporation Content addressable data storage and compression for computer memory
US7162571B2 (en) 2003-12-09 2007-01-09 Emc Corporation Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US7246130B2 (en) * 2004-02-19 2007-07-17 Microsoft Corporation Journalling non-navigation activity in a navigation-based application
US7100008B2 (en) 2004-03-15 2006-08-29 Hitachi, Ltd. Long term data protection system and method

Also Published As

Publication number Publication date
CA2516741A1 (en) 2004-09-02
JP2006518508A (ja) 2006-08-10
AU2004214014B2 (en) 2009-10-22
CN1777853A (zh) 2006-05-24
EP1595197A2 (en) 2005-11-16
US20040220975A1 (en) 2004-11-04
AU2004214014A1 (en) 2004-09-02
CN100524153C (zh) 2009-08-05
US7373345B2 (en) 2008-05-13
WO2004074968A2 (en) 2004-09-02
WO2004074968A3 (en) 2004-12-29
CA2516741C (en) 2013-10-08

Similar Documents

Publication Publication Date Title
JP4991283B2 (ja) コンテンツベースのアドレシングにおける追加ハッシュ関数
JP4602769B2 (ja) 文書セットのコンテンツ空間のナビゲーション
US6807632B1 (en) Content addressable information encapsulation, representation, and transfer
EP1049988B1 (en) Content addressable information encapsulation, representation, and transfer
US9497062B1 (en) System and method for secure storage, transfer and retrieval of content addressable information
US7895224B2 (en) Navigation of the content space of a document set
Burns et al. Verifiable audit trails for a versioning file system
Winslett et al. Trustworthy Migration and Retrieval of Regulatory Compliant Records

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101005

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110106

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110818

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111220

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120417

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120507

R150 Certificate of patent or registration of utility model

Ref document number: 4991283

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250